blob: 1a26f981964595606e270ccd7d43edc7e88c92f2 [file] [log] [blame]
// 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