(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
nesting-2.c
       1  void
       2  foo (void)
       3  {
       4    int i;
       5    #pragma omp taskloop
       6    for (i = 0; i < 64; i++)
       7      {
       8        int j;
       9        #pragma omp for			/* { dg-error "region may not be closely nested inside of" } */
      10        for (j = 0; j < 10; j++)
      11  	;
      12        #pragma omp single		/* { dg-error "region may not be closely nested inside of" } */
      13        ;
      14        #pragma omp sections		/* { dg-error "region may not be closely nested inside of" } */
      15        {
      16  	#pragma omp section
      17  	;
      18        }
      19        #pragma omp barrier		/* { dg-error "region may not be closely nested inside of" } */
      20        #pragma omp master		/* { dg-error "region may not be closely nested inside of" } */
      21        ;
      22        #pragma omp masked		/* { dg-error "region may not be closely nested inside of" } */
      23        ;
      24        #pragma omp scope			/* { dg-error "region may not be closely nested inside of" } */
      25        ;
      26        #pragma omp ordered		/* { dg-error "region may not be closely nested inside of" } */
      27        ;
      28        #pragma omp ordered threads	/* { dg-error "region may not be closely nested inside of" } */
      29        ;
      30        #pragma omp ordered simd threads	/* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
      31        ;
      32        #pragma omp simd
      33        for (j = 0; j < 10; j++)
      34  	#pragma omp ordered simd
      35  	  ;
      36        #pragma omp critical
      37        {
      38  	#pragma omp simd
      39  	for (j = 0; j < 10; j++)
      40  	  #pragma omp ordered simd
      41  	    ;
      42        }
      43      }
      44    #pragma omp taskloop
      45    for (i = 0; i < 64; i++)
      46      #pragma omp parallel
      47      {
      48        int j;
      49        #pragma omp for
      50        for (j = 0; j < 10; j++)
      51  	;
      52        #pragma omp single
      53        ;
      54        #pragma omp sections
      55        {
      56  	#pragma omp section
      57  	;
      58        }
      59        #pragma omp barrier
      60        #pragma omp master
      61        ;
      62        #pragma omp masked
      63        ;
      64        #pragma omp scope
      65        ;
      66        #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      67        ;
      68        #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      69        ;
      70        #pragma omp simd
      71        for (j = 0; j < 10; j++)
      72  	#pragma omp ordered simd
      73  	  ;
      74        #pragma omp critical
      75        {
      76  	#pragma omp simd
      77  	for (j = 0; j < 10; j++)
      78  	  #pragma omp ordered simd
      79  	    ;
      80        }
      81      }
      82    #pragma omp taskloop
      83    for (i = 0; i < 64; i++)
      84      #pragma omp target
      85      {
      86        int j;
      87        #pragma omp for
      88        for (j = 0; j < 10; j++)
      89  	;
      90        #pragma omp single
      91        ;
      92        #pragma omp sections
      93        {
      94  	#pragma omp section
      95  	;
      96        }
      97        #pragma omp barrier
      98        #pragma omp master
      99        ;
     100        #pragma omp masked
     101        ;
     102        #pragma omp scope
     103        ;
     104        #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
     105        ;
     106        #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
     107        ;
     108        #pragma omp simd
     109        for (j = 0; j < 10; j++)
     110  	#pragma omp ordered simd
     111  	  ;
     112        #pragma omp critical
     113        {
     114  	#pragma omp simd
     115  	for (j = 0; j < 10; j++)
     116  	  #pragma omp ordered simd
     117  	    ;
     118        }
     119      }
     120    #pragma omp ordered
     121    {
     122      #pragma omp ordered			/* { dg-error "region may not be closely nested inside of" } */
     123      ;
     124    }
     125    #pragma omp ordered threads
     126    {
     127      #pragma omp ordered			/* { dg-error "region may not be closely nested inside of" } */
     128      ;
     129    }
     130    #pragma omp ordered
     131    {
     132      #pragma omp ordered threads		/* { dg-error "region may not be closely nested inside of" } */
     133      ;
     134    }
     135    #pragma omp ordered threads
     136    {
     137      #pragma omp ordered threads		/* { dg-error "region may not be closely nested inside of" } */
     138      ;
     139    }
     140    #pragma omp critical
     141    {
     142      #pragma omp ordered simd		/* { dg-error ".ordered. .simd. must be closely nested inside .simd. region" } */
     143      ;
     144    }
     145    #pragma omp for ordered
     146    for (i = 0; i < 64; i++)
     147      #pragma omp parallel
     148      {
     149        #pragma omp ordered threads	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
     150        ;
     151      }
     152    #pragma omp for ordered
     153    for (i = 0; i < 64; i++)
     154      #pragma omp parallel
     155      {
     156        #pragma omp ordered		/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
     157        ;
     158      }
     159    #pragma omp for ordered(1)
     160    for (i = 0; i < 64; i++)
     161      #pragma omp parallel
     162      {
     163        #pragma omp ordered depend(source)	/* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause" } */
     164        #pragma omp ordered depend(sink: i - 1)	/* { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause" } */
     165      }
     166    #pragma omp for ordered(1)
     167    for (i = 0; i < 64; i++)
     168      #pragma omp parallel
     169      {
     170        #pragma omp ordered doacross(source:)	/* { dg-error ".ordered. construct with .doacross. clause must be closely nested inside a loop with .ordered. clause" } */
     171        #pragma omp ordered doacross(sink: i - 1)	/* { dg-error ".ordered. construct with .doacross. clause must be closely nested inside a loop with .ordered. clause" } */
     172      }
     173  }