(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
doacross-5.c
       1  void
       2  foo (int n)
       3  {
       4    int i;
       5    #pragma omp for ordered
       6    for (i = 0; i < 8; i += n)
       7      {
       8        #pragma omp ordered doacross(source:)
       9        #pragma omp ordered doacross(sink: i - 2)
      10      }
      11  }
      12  
      13  void
      14  bar (int n)
      15  {
      16    int i, j;
      17    #pragma omp for collapse(2) ordered(2)
      18    for (i = 0; i < 8; i += n)
      19      for (j = 0; j < 8; j += n)
      20        {
      21  	#pragma omp ordered doacross(source:omp_cur_iteration)
      22  	#pragma omp ordered doacross(sink: i - 2, j + 2)
      23        }
      24  }
      25  
      26  void
      27  baz (void)
      28  {
      29    int i, j;
      30    #pragma omp for ordered(1)
      31    for (i = 0; i < 64; i++)
      32      {
      33        #pragma omp ordered			/* { dg-error "'ordered' construct without 'doacross' or 'depend' clauses must not have the same binding region as 'ordered' construct with those clauses" } */
      34        ;
      35        #pragma omp ordered doacross(source:)
      36        #pragma omp ordered doacross(sink: i - 1)
      37      }
      38    #pragma omp for ordered
      39    for (i = 0; i < 64; i++)
      40      {
      41        #pragma omp ordered doacross(source: omp_cur_iteration )
      42        #pragma omp ordered doacross(sink: i - 1)
      43        #pragma omp ordered threads		/* { dg-error "'ordered' construct without 'doacross' or 'depend' clauses must not have the same binding region as 'ordered' construct with those clauses" } */
      44        ;
      45      }
      46    #pragma omp for ordered(2)
      47    for (i = 0; i < 8; i++)
      48      for (j = 0; j < 8; j++)
      49        {
      50  	#pragma omp ordered			/* { dg-error "'ordered' construct without 'doacross' or 'depend' clauses binds to loop where 'collapse' argument 1 is different from 'ordered' argument 2" } */
      51  	;
      52        }
      53    #pragma omp for ordered(2) collapse(1)
      54    for (i = 0; i < 8; i++)
      55      for (j = 0; j < 8; j++)
      56        {
      57  	#pragma omp ordered threads		/* { dg-error "'ordered' construct without 'doacross' or 'depend' clauses binds to loop where 'collapse' argument 1 is different from 'ordered' argument 2" } */
      58  	;
      59        }
      60  }
      61  
      62  void
      63  qux (void)
      64  {
      65    int i, j = 0;
      66    #pragma omp for ordered linear(j)
      67    for (i = 0; i < 64; i++)
      68      {
      69        ++j;
      70        #pragma omp ordered
      71        ;
      72      }
      73    #pragma omp for ordered linear(j)		/* { dg-error "'linear' clause may not be specified together with 'ordered' clause if stand-alone 'ordered' construct is nested in it" } */
      74    for (i = 0; i < 64; i++)
      75      {
      76        ++j;
      77        #pragma omp ordered doacross(source:)
      78        #pragma omp ordered doacross(sink:i-1)
      79      }
      80    #pragma omp for ordered(1) linear(j)
      81    for (i = 0; i < 64; i++)
      82      {
      83        ++j;
      84        #pragma omp ordered
      85        ;
      86      }
      87    #pragma omp for ordered(1) linear(j)		/* { dg-error "'linear' clause may not be specified together with 'ordered' clause if stand-alone 'ordered' construct is nested in it" } */
      88    for (i = 0; i < 64; i++)
      89      {
      90        ++j;
      91        #pragma omp ordered doacross(source:)
      92        #pragma omp ordered doacross(sink:i-1)
      93      }
      94  }