1 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
2 // REQUIRES: ompt
3 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
4 // XFAIL: powerpc64le, ppc64le
5 #include "callback.h"
6 #include <omp.h>
7 
8 int main()
9 {
10   int x = 0;
11   #pragma omp parallel num_threads(2)
12   {
13     #pragma omp master
14     {
15       #pragma omp task
16       {
17         x++;
18       }
19       #pragma omp taskwait
20       print_current_address(1);
21     }
22   }
23 
24   // Check if libomp supports the callbacks for this test.
25   // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_sync_region'
26   // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_sync_region_wait'
27 
28   // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
29 
30   // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_taskwait_begin: parallel_id={{[0-9]+}}, task_id={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]
31   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_taskwait_begin: parallel_id={{[0-9]+}}, task_id={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS]]
32   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_taskwait_end: parallel_id={{[0-9]+}}, task_id={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS]]
33   // CHECK-NEXT: {{^}}[[MASTER_ID]]: ompt_event_taskwait_end: parallel_id={{[0-9]+}}, task_id={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS]]
34   // CHECK-NEXT: {{^}}[[MASTER_ID]]: current_address={{.*}}[[RETURN_ADDRESS]]
35 
36   return 0;
37 }
38