(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
taskgroup-1.c
       1  extern
       2  #ifdef __cplusplus
       3  "C"
       4  #endif
       5  void abort (void);
       6  int v[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
       7  
       8  int
       9  main ()
      10  {
      11    #pragma omp parallel num_threads (4)
      12    #pragma omp single
      13      {
      14        int i;
      15        #pragma omp taskgroup
      16        {
      17  	for (i = 0; i < 16; i += 2)
      18  	  #pragma omp task
      19  	    {
      20  	      #pragma omp task
      21  		v[i]++;
      22  	      #pragma omp task
      23  		v[i + 1]++;
      24  	    }
      25        }
      26        for (i = 0; i < 16; i++)
      27  	if (v[i] != i + 2)
      28  	  abort ();
      29        #pragma omp taskgroup
      30        {
      31  	for (i = 0; i < 16; i += 2)
      32  	  #pragma omp task
      33  	    {
      34  	      #pragma omp task
      35  		v[i]++;
      36  	      #pragma omp task
      37  		v[i + 1]++;
      38  	      #pragma omp taskwait
      39  	    }
      40        }
      41        for (i = 0; i < 16; i++)
      42  	if (v[i] != i + 3)
      43  	  abort ();
      44        #pragma omp taskgroup
      45        {
      46  	for (i = 0; i < 16; i += 2)
      47  	  #pragma omp task
      48  	    {
      49  	      #pragma omp task
      50  		v[i]++;
      51  	      v[i + 1]++;
      52  	    }
      53  	#pragma omp taskwait
      54  	for (i = 0; i < 16; i += 2)
      55  	  #pragma omp task
      56  	    v[i + 1]++;
      57        }
      58        for (i = 0; i < 16; i++)
      59  	if (v[i] != i + 4 + (i & 1))
      60  	  abort ();
      61        #pragma omp taskgroup
      62        {
      63  	for (i = 0; i < 16; i += 2)
      64  	  {
      65  	    #pragma omp taskgroup
      66  	      {
      67  		#pragma omp task
      68  		  v[i]++;
      69  		#pragma omp task
      70  		  v[i + 1]++;
      71  	      }
      72  	    if (v[i] != i + 5 || v[i + 1] != i + 7)
      73  	      abort ();
      74  	    #pragma omp task
      75  	    v[i]++;
      76  	  }
      77        }
      78        for (i = 0; i < 16; i++)
      79  	if (v[i] != i + 6)
      80  	  abort ();
      81      }
      82    return 0;
      83  }