1 // RUN: %libomp-compile-and-run | FileCheck %s 2 // REQUIRES: ompt 3 #include "callback.h" 4 #include <omp.h> 5 int main() { 6 int x = 0; 7 int ret = 0; 8 #pragma omp parallel 9 #pragma omp single 10 x++; 11 // Expected to fail; omp_pause_stop_tool must not be specified 12 ret = omp_pause_resource(omp_pause_stop_tool, omp_get_initial_device()); 13 printf("omp_pause_resource %s\n", ret ? "failed" : "succeeded"); 14 #pragma omp parallel 15 #pragma omp single 16 x++; 17 // Expected to succeed 18 ret = omp_pause_resource_all(omp_pause_stop_tool); 19 printf("omp_pause_resource_all %s\n", ret ? "failed" : "succeeded"); 20 #pragma omp parallel 21 #pragma omp single 22 x++; 23 printf("x = %d\n", x); 24 return 0; 25 26 // Check if 27 // -- omp_pause_resource/resource_all returns expected code 28 // -- OMPT interface is shut down as expected 29 30 // CHECK-NOT: {{^}}0: Could not register callback 31 // CHECK: 0: NULL_POINTER=[[NULL:.*$]] 32 33 // CHECK: ompt_event_parallel_begin 34 // CHECK: ompt_event_parallel_end 35 36 // CHECK: omp_pause_resource failed 37 38 // CHECK: ompt_event_parallel_begin 39 // CHECK: ompt_event_parallel_end 40 41 // CHECK: omp_pause_resource_all succeeded 42 43 // CHECK-NOT: ompt_event 44 } 45