(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
loop-3.c
       1  #ifdef __cplusplus
       2  extern "C" {
       3  #endif
       4  int omp_get_thread_num (void);
       5  #ifdef __cplusplus
       6  }
       7  #endif
       8  
       9  void
      10  f1 (int *a)
      11  {
      12    int i;
      13    #pragma omp loop		/* { dg-error "'bind' clause not specified on a 'loop' construct not nested inside another OpenMP construct" } */
      14    for (i = 0; i < 64; i++)
      15      a[i] = i;
      16  }
      17  
      18  void
      19  f2 (int *a)
      20  {
      21    int i, j;
      22    #pragma omp parallel num_threads (4)
      23    {
      24      int j = omp_get_thread_num ();
      25      #pragma omp loop private (i) bind(teams)	/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      26      for (i = 0; i < 64; i++)
      27        a[j * 64 + i] = i;
      28    }
      29    #pragma omp critical
      30    {
      31      #pragma omp loop lastprivate (i) bind(teams)/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      32      for (i = 0; i < 64; i++)
      33        a[i] = i;
      34    }
      35    #pragma omp master
      36    {
      37      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      38      for (i = 0; i < 64; i++)
      39        a[i] = i;
      40    }
      41    #pragma omp sections
      42    {
      43      #pragma omp loop bind(teams) lastprivate(i)	/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      44      for (i = 0; i < 64; i++)
      45        a[i] = i;
      46    }
      47    #pragma omp single
      48    {
      49      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      50      for (i = 0; i < 64; i++)
      51        a[i] = i;
      52    }
      53    #pragma omp task
      54    {
      55      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      56      for (i = 0; i < 64; i++)
      57        a[i] = i;
      58    }
      59    #pragma omp taskgroup
      60    {
      61      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      62      for (i = 0; i < 64; i++)
      63        a[i] = i;
      64    }
      65    #pragma omp teams
      66    {
      67      #pragma omp distribute
      68      for (j = 0; j < 64; ++j)
      69        {
      70  	#pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      71  	for (i = 0; i < 64; i++)
      72  	  a[64 * j + i] = i;
      73        }
      74    }
      75    #pragma omp for
      76    for (j = 0; j < 64; ++j)
      77      {
      78        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      79        for (i = 0; i < 64; i++)
      80  	a[64 * j + i] = i;
      81      }
      82    #pragma omp parallel
      83    #pragma omp loop
      84    for (j = 0; j < 64; ++j)
      85      {
      86        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      87        for (i = 0; i < 64; i++)
      88  	a[64 * j + i] = i;
      89      }
      90    #pragma omp loop bind(thread)
      91    for (j = 0; j < 64; ++j)
      92      {
      93        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
      94        for (i = 0; i < 64; i++)
      95  	a[64 * j + i] = i;
      96      }
      97    #pragma omp loop bind(parallel)
      98    for (j = 0; j < 64; ++j)
      99      {
     100        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
     101        for (i = 0; i < 64; i++)
     102  	a[64 * j + i] = i;
     103      }
     104    #pragma omp for ordered
     105    for (j = 0; j < 64; ++j)
     106      {
     107        #pragma omp ordered threads
     108        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
     109        for (i = 0; i < 64; i++)
     110  	a[64 * j + i] = i;
     111      }
     112    #pragma omp simd
     113    for (j = 0; j < 64; ++j)
     114      {
     115        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
     116        for (i = 0; i < 64; i++)
     117  	a[64 * j + i] = i;
     118      }
     119    #pragma omp taskloop
     120    for (j = 0; j < 64; ++j)
     121      {
     122        #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
     123        for (i = 0; i < 64; i++)
     124  	a[64 * j + i] = i;
     125      }
     126    #pragma omp target
     127    {
     128      #pragma omp loop bind(teams)		/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
     129      for (i = 0; i < 64; i++)
     130        a[i] = i;
     131    }
     132  }
     133  
     134  void
     135  f3 (int *a)
     136  {
     137    int i, j;
     138    #pragma omp simd
     139    for (j = 0; j < 64; j++)
     140      {
     141        #pragma omp loop bind(parallel)		/* { dg-error "'bind\\(parallel\\)' on a 'loop' construct nested inside 'simd' construct" } */
     142        for (i = 0; i < 64; i++)
     143  	a[64 * j + i] = i;
     144      }
     145  }