(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
goacc/
reduction-6.c
       1  /* Check if different occurences of the reduction clause on
       2     OpenACC loop nests will compile.  */
       3  
       4  int foo (int N)
       5  {
       6    int a = 0, b = 0, c = 0, d = 0, e = 0;
       7  
       8    #pragma acc parallel
       9    {
      10      #pragma acc loop
      11      for (int i = 0; i < N; i++)
      12        {
      13          #pragma acc loop reduction(+:a)
      14  	for (int j = 0; j < N; j++)
      15  	  a += 1;
      16        }
      17    }
      18  
      19    #pragma acc parallel
      20    {
      21      #pragma acc loop reduction(+:b)
      22      for (int i = 0; i < N; i++)
      23        {
      24          #pragma acc loop
      25  	for (int j = 0; j < N; j++)
      26  	  b += 1;
      27        }
      28    }
      29  
      30    #pragma acc parallel
      31    {
      32      #pragma acc loop reduction(+:c)
      33      for (int i = 0; i < N; i++)
      34        {
      35          #pragma acc loop reduction(+:c)
      36  	for (int j = 0; j < N; j++)
      37  	  c += 1;
      38        }
      39    }
      40  
      41    #pragma acc parallel loop
      42    for (int i = 0; i < N; i++)
      43      {
      44        #pragma acc loop reduction(+:d)
      45        for (int j = 0; j < N; j++)
      46  	d += 1;
      47      }
      48  
      49    #pragma acc parallel loop reduction(+:e)
      50    for (int i = 0; i < N; i++)
      51      {
      52        #pragma acc loop reduction(+:e)
      53        for (int j = 0; j < N; j++)
      54  	e += 1;
      55      }
      56  
      57    return a + b + c + d + e;
      58  }