1/* { dg-do run } */ 2/* { dg-set-target-env-var OMP_CANCELLATION "true" } */ 3 4#include <stdlib.h> 5#include <unistd.h> 6#include <omp.h> 7 8int 9main () 10{ 11 #pragma omp parallel 12 #pragma omp taskgroup 13 #pragma omp task 14 { 15 #pragma omp cancel taskgroup 16 if (omp_get_cancellation ()) 17 abort (); 18 } 19 #pragma omp parallel 20 { 21 #pragma omp barrier 22 #pragma omp single 23 #pragma omp taskgroup 24 { 25 int i; 26 for (i = 0; i < 50; i++) 27 #pragma omp task 28 { 29 #pragma omp cancellation point taskgroup 30 usleep (30); 31 #pragma omp cancel taskgroup if (i > 5) 32 } 33 } 34 usleep (10); 35 } 36 return 0; 37} 38