| // clang-format off |
| // RUN: %libomp-cxx-compile-and-run | FileCheck %s |
| |
| // disabled until fixed, see: https://github.com/llvm/llvm-project/pull/145625#issuecomment-3007625680 |
| // remove "needs-fix", after fixing the issue in the runtime |
| // REQUIRES: ompt, needs-fix |
| // clang-format on |
| #include "callback.h" |
| #include "omp_testsuite.h" |
| |
| // tests that the destructor doesn't segv even though |
| // ompt_finalize_tool() destroys the lock |
| struct myLock { |
| omp_lock_t lock; |
| myLock() { omp_init_lock(&lock); } |
| ~myLock() { omp_destroy_lock(&lock); } |
| }; |
| |
| myLock lock; |
| |
| int main() { |
| go_parallel_nthreads(2); |
| |
| printf("Before ompt_finalize_tool\n"); |
| ompt_finalize_tool(); |
| printf("After ompt_finalize_tool\n"); |
| |
| return get_exit_value(); |
| } |
| |
| // clang-format off |
| // CHECK: 0: NULL_POINTER=[[NULL:.*$]] |
| // CHECK: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin: |
| // CHECK-SAME: thread_type=ompt_thread_initial=1 |
| |
| // CHECK: {{^}}[[THREAD_ID]]: ompt_event_init_lock |
| |
| // CHECK: {{^}}[[THREAD_ID]]: ompt_event_parallel_begin |
| // CHECK: {{^}}[[THREAD_ID]]: ompt_event_parallel_end |
| |
| // CHECK: {{^}}Before ompt_finalize_tool |
| |
| // CHECK: {{^}}[[THREAD_ID]]: ompt_event_thread_end: thread_id=[[THREAD_ID]] |
| // CHECK: 0: ompt_event_runtime_shutdown |
| |
| // CHECK: {{^}}After ompt_finalize_tool |
| // clang-format on |