(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
clauses-4.c
       1  int t;
       2  #pragma omp threadprivate (t)
       3  
       4  void
       5  foo (int y, short z)
       6  {
       7    int x;
       8    #pragma omp target teams map (from: x)
       9    #pragma omp distribute simd linear (x : 2)
      10    for (x = 0; x < 64; x += 2)
      11      ;
      12    #pragma omp target teams map (from: x)
      13    #pragma omp distribute parallel for simd linear (x)
      14    for (x = 0; x < 64; x++)
      15      ;
      16    #pragma omp target teams map (tofrom: y)
      17    #pragma omp distribute simd linear (y : 2)	/* { dg-error ".linear. clause for variable other than loop iterator specified on construct combined with .distribute." } */
      18    for (x = 0; x < 64; x += 2)
      19      y += 2;
      20    #pragma omp target teams map (tofrom: z)
      21    #pragma omp distribute parallel for simd linear (z)	/* { dg-error ".linear. clause for variable other than loop iterator specified on construct combined with .distribute." } */
      22    for (x = 0; x < 64; x++)
      23      z++;
      24    #pragma omp target teams map (tofrom: z)
      25    #pragma omp distribute parallel for linear (z: 4)	/* { dg-error ".linear. is not valid for .#pragma omp distribute parallel for." } */
      26    for (x = 0; x < 64; x++)
      27      z += 4;
      28    #pragma omp target map (from: x)
      29    #pragma omp teams distribute simd linear (x : 2)
      30    for (x = 0; x < 64; x += 2)
      31      ;
      32    #pragma omp target map (from: x)
      33    #pragma omp teams distribute parallel for simd linear (x)
      34    for (x = 0; x < 64; x++)
      35      ;
      36    #pragma omp target map (tofrom: y)
      37    #pragma omp teams distribute simd linear (y : 2)	/* { dg-error ".linear. clause for variable other than loop iterator specified on construct combined with .distribute." } */
      38    for (x = 0; x < 64; x += 2)
      39      y += 2;
      40    #pragma omp target map (tofrom: z)
      41    #pragma omp teams distribute parallel for simd linear (z)	/* { dg-error ".linear. clause for variable other than loop iterator specified on construct combined with .distribute." } */
      42    for (x = 0; x < 64; x++)
      43      z++;
      44    #pragma omp target map (tofrom: z)
      45    #pragma omp teams distribute parallel for linear (z: 4)	/* { dg-error ".linear. is not valid for .#pragma omp teams distribute parallel for." } */
      46    for (x = 0; x < 64; x++)
      47      z += 4;
      48    #pragma omp target parallel copyin (t)	/* { dg-error ".copyin. is not valid for .#pragma omp target parallel." } */
      49      ;
      50    #pragma omp target parallel for copyin (t)	/* { dg-error ".copyin. is not valid for .#pragma omp target parallel for." } */
      51    for (x = 0; x < 64; x++)
      52      ;
      53    #pragma omp target parallel for simd copyin (t)	/* { dg-error ".copyin. is not valid for .#pragma omp target parallel for simd." } */
      54    for (x = 0; x < 64; x++)
      55      ;
      56    #pragma omp target teams
      57    #pragma omp distribute parallel for ordered		/* { dg-error ".ordered. is not valid for .#pragma omp distribute parallel for." } */
      58    for (x = 0; x < 64; x++)
      59      {
      60        #pragma omp ordered	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      61        ;
      62      }
      63    #pragma omp target teams
      64    #pragma omp distribute parallel for simd ordered	/* { dg-error ".ordered. is not valid for .#pragma omp distribute parallel for simd." } */
      65    for (x = 0; x < 64; x++)
      66      {
      67        #pragma omp ordered simd, threads
      68        ;
      69      }
      70    #pragma omp target
      71    #pragma omp teams distribute parallel for ordered		/* { dg-error ".ordered. is not valid for .#pragma omp teams distribute parallel for." } */
      72    for (x = 0; x < 64; x++)
      73      {
      74        #pragma omp ordered	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      75        ;
      76      }
      77    #pragma omp target
      78    #pragma omp teams distribute parallel for simd ordered	/* { dg-error ".ordered. is not valid for .#pragma omp teams distribute parallel for simd." } */
      79    for (x = 0; x < 64; x++)
      80      {
      81        #pragma omp ordered simd, threads
      82        ;
      83      }
      84    #pragma omp target teams distribute parallel for ordered		/* { dg-error ".ordered. is not valid for .#pragma omp target teams distribute parallel for." } */
      85    for (x = 0; x < 64; x++)
      86      {
      87        #pragma omp ordered	/* { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" } */
      88        ;
      89      }
      90    #pragma omp target teams distribute parallel for simd ordered	/* { dg-error ".ordered. is not valid for .#pragma omp target teams distribute parallel for simd." } */
      91    for (x = 0; x < 64; x++)
      92      {
      93        #pragma omp ordered simd, threads
      94        ;
      95      }
      96    #pragma omp simd
      97    for (x = 0; x < 64; x++)
      98      {
      99        #pragma omp ordered threads simd		/* { dg-error ".ordered simd threads. must be closely nested inside of .for simd. region" } */
     100        ;
     101      }
     102    #pragma omp for
     103    for (x = 0; x < 64; x++)
     104      {
     105        #pragma omp simd
     106        for (y = 0; y < 16; y++)
     107  	{
     108  	  #pragma omp ordered simd threads	/* { dg-error ".ordered simd threads. must be closely nested inside of .for simd. region" } */
     109  	  ;
     110  	}
     111      }
     112    #pragma omp for simd
     113    for (x = 0; x < 64; x++)
     114      {
     115        #pragma omp ordered threads simd
     116        ;
     117      }
     118  }