(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
taskwait-depend-nowait-2.c
       1  #include <stdlib.h>
       2  #include <unistd.h>
       3  
       4  int
       5  main ()
       6  {
       7    int a[48], b = 1;
       8    #pragma omp parallel num_threads (4)
       9    {
      10      #pragma omp barrier
      11      #pragma omp single
      12      {
      13        int i;
      14        for (i = 0; i < 48; ++i)
      15  	#pragma omp task depend(in: a) shared(a)
      16  	  a[i] = i;
      17        for (i = 0; i < 32; ++i)
      18  	{
      19  	  #pragma omp taskwait depend(inout: a) nowait
      20  	}
      21        #pragma omp taskwait
      22        for (i = 0; i < 48; ++i)
      23  	if (a[i] != i)
      24  	  abort ();
      25        for (i = 0; i < 48; ++i)
      26  	#pragma omp task depend(in: a) shared(a)
      27  	  a[i] = 2 * i + 1;
      28        #pragma omp taskgroup
      29        {
      30  	#pragma omp taskwait depend(inoutset: a) nowait
      31  	#pragma omp taskgroup
      32  	{
      33  	  #pragma omp taskwait depend(inoutset: a) nowait
      34  	}
      35        }
      36        for (i = 0; i < 48; ++i)
      37  	if (a[i] != 2 * i + 1)
      38  	  abort ();
      39        #pragma omp task depend(in: a) shared(a)
      40        usleep (5000);
      41        #pragma omp taskgroup
      42        {
      43  	#pragma omp taskwait depend(inout: a) nowait
      44        }
      45      }
      46    }
      47    return 0;
      48  }