(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
cancel-parallel-1.c
       1  /* { dg-do run } */
       2  /* { dg-set-target-env-var OMP_CANCELLATION "true" } */
       3  
       4  #include <stdlib.h>
       5  #include <omp.h>
       6  
       7  int
       8  main ()
       9  {
      10    int a[64];
      11    #pragma omp parallel
      12    {
      13      #pragma omp barrier
      14      if (omp_get_thread_num () == 0)
      15        {
      16  	#pragma omp cancel parallel
      17        }
      18      #pragma omp for
      19      for (int i = 0; i < 64; i++)
      20        a[i] = i;
      21      if (omp_get_cancellation ())
      22        abort ();
      23    }
      24    #pragma omp parallel
      25    {
      26      #pragma omp barrier
      27      if (omp_get_thread_num () == 0)
      28        {
      29  	#pragma omp cancel parallel
      30        }
      31      #pragma omp taskgroup
      32      {
      33        #pragma omp for
      34        for (int i = 0; i < 64; i++)
      35  	#pragma omp task
      36  	a[i] += i;
      37        if (omp_get_cancellation ())
      38  	abort ();
      39      }
      40    }
      41    return 0;
      42  }