1  void f0 (void);
       2  
       3  void
       4  f1 (int *p)
       5  {
       6    int i;
       7    #pragma omp parallel proc_bind (master) proc_bind (master)	/* { dg-error "too many 'proc_bind' clauses" } */
       8    f0 ();
       9    #pragma omp parallel proc_bind (close) proc_bind (spread)	/* { dg-error "too many 'proc_bind' clauses" } */
      10    f0 ();
      11    #pragma omp for schedule(static) schedule(static)		/* { dg-error "too many 'schedule' clauses" } */
      12    for (i = 0; i < 8; ++i)
      13      f0 ();
      14    #pragma omp for schedule(dynamic,5) schedule(runtime)		/* { dg-error "too many 'schedule' clauses" } */
      15    for (i = 0; i < 8; ++i)
      16      f0 ();
      17    #pragma omp for collapse(1) collapse(1)			/* { dg-error "too many 'collapse' clauses" } */
      18    for (i = 0; i < 8; ++i)
      19      f0 ();
      20    #pragma omp for collapse(1) collapse(2)			/* { dg-error "too many 'collapse' clauses" } */
      21    for (i = 0; i < 8; ++i)
      22      f0 ();
      23    #pragma omp for ordered ordered				/* { dg-error "too many 'ordered' clauses" } */
      24    for (i = 0; i < 8; ++i)
      25      f0 ();
      26    #pragma omp for ordered(1) ordered(1)				/* { dg-error "too many 'ordered' clauses" } */
      27    for (i = 0; i < 8; ++i)
      28      f0 ();
      29    #pragma omp for nowait nowait					/* { dg-error "too many 'nowait' clauses" } */
      30    for (i = 0; i < 8; ++i)
      31      f0 ();
      32    #pragma omp for schedule(static) order(concurrent) order(concurrent)	/* { dg-error "too many 'order' clauses" } */
      33    for (i = 0; i < 8; ++i)
      34      f0 ();
      35    #pragma omp for schedule(static) order(reproducible:concurrent) order(unconstrained:concurrent)	/* { dg-error "too many 'order' clauses" } */
      36    for (i = 0; i < 8; ++i)
      37      f0 ();
      38    #pragma omp simd collapse(1) collapse(1)			/* { dg-error "too many 'collapse' clauses" } */
      39    for (i = 0; i < 8; ++i)
      40      f0 ();
      41    #pragma omp simd collapse(1) collapse(2)			/* { dg-error "too many 'collapse' clauses" } */
      42    for (i = 0; i < 8; ++i)
      43      f0 ();
      44    #pragma omp simd simdlen(1) simdlen(1)			/* { dg-error "too many 'simdlen' clauses" } */
      45    for (i = 0; i < 8; ++i)
      46      f0 ();
      47    #pragma omp simd simdlen(1) simdlen(2)			/* { dg-error "too many 'simdlen' clauses" } */
      48    for (i = 0; i < 8; ++i)
      49      f0 ();
      50    #pragma omp simd safelen(1) safelen(1)			/* { dg-error "too many 'safelen' clauses" } */
      51    for (i = 0; i < 8; ++i)
      52      f0 ();
      53    #pragma omp simd safelen(1) safelen(2)			/* { dg-error "too many 'safelen' clauses" } */
      54    for (i = 0; i < 8; ++i)
      55      f0 ();
      56    #pragma omp teams
      57    {
      58      #pragma omp distribute collapse(1) collapse(1)			/* { dg-error "too many 'collapse' clauses" } */
      59      for (i = 0; i < 8; ++i)
      60        f0 ();
      61      #pragma omp distribute collapse(1) collapse(2)			/* { dg-error "too many 'collapse' clauses" } */
      62      for (i = 0; i < 8; ++i)
      63        f0 ();
      64    }
      65    #pragma omp teams thread_limit (3) thread_limit (3)		/* { dg-error "too many 'thread_limit' clauses" } */
      66    f0 ();
      67    #pragma omp teams thread_limit (3) thread_limit (5)		/* { dg-error "too many 'thread_limit' clauses" } */
      68    f0 ();
      69    #pragma omp teams num_teams (3) num_teams (3)			/* { dg-error "too many 'num_teams' clauses" } */
      70    f0 ();
      71    #pragma omp teams num_teams (3) num_teams (5)			/* { dg-error "too many 'num_teams' clauses" } */
      72    f0 ();
      73    #pragma omp single nowait nowait				/* { dg-error "too many 'nowait' clauses" } */
      74    f0 ();
      75    #pragma omp loop bind (thread) collapse(1) collapse(3)	/* { dg-error "too many 'collapse' clauses" } */
      76    for (i = 0; i < 8; ++i)
      77      f0 ();
      78    #pragma omp task final (0) final (0)				/* { dg-error "too many 'final' clauses" } */
      79    f0 ();
      80    #pragma omp task final (0) final (1)				/* { dg-error "too many 'final' clauses" } */
      81    f0 ();
      82    #pragma omp task priority (1) priority (1)			/* { dg-error "too many 'priority' clauses" } */
      83    f0 ();
      84    #pragma omp task priority (0) priority (1)			/* { dg-error "too many 'priority' clauses" } */
      85    f0 ();
      86    #pragma omp taskloop final (0) final (0)			/* { dg-error "too many 'final' clauses" } */
      87    for (i = 0; i < 8; ++i)
      88      f0 ();
      89    #pragma omp taskloop final (0) final (1)			/* { dg-error "too many 'final' clauses" } */
      90    for (i = 0; i < 8; ++i)
      91      f0 ();
      92    #pragma omp taskloop priority (1) priority (1)		/* { dg-error "too many 'priority' clauses" } */
      93    for (i = 0; i < 8; ++i)
      94      f0 ();
      95    #pragma omp taskloop priority (0) priority (1)		/* { dg-error "too many 'priority' clauses" } */
      96    for (i = 0; i < 8; ++i)
      97      f0 ();
      98    #pragma omp taskloop grainsize (1) grainsize (2)		/* { dg-error "too many 'grainsize' clauses" } */
      99    for (i = 0; i < 8; ++i)
     100      f0 ();
     101    #pragma omp taskloop grainsize (2) grainsize (2)		/* { dg-error "too many 'grainsize' clauses" } */
     102    for (i = 0; i < 8; ++i)
     103      f0 ();
     104    #pragma omp taskloop num_tasks (1) num_tasks (2)		/* { dg-error "too many 'num_tasks' clauses" } */
     105    for (i = 0; i < 8; ++i)
     106      f0 ();
     107    #pragma omp taskloop num_tasks (2) num_tasks (2)		/* { dg-error "too many 'num_tasks' clauses" } */
     108    for (i = 0; i < 8; ++i)
     109      f0 ();
     110    #pragma omp taskloop num_tasks (1) grainsize (2)
     111    for (i = 0; i < 8; ++i)
     112      f0 ();
     113    #pragma omp taskloop grainsize (2) num_tasks (2)
     114    for (i = 0; i < 8; ++i)
     115      f0 ();
     116    #pragma omp taskloop collapse (1) collapse (1)		/* { dg-error "too many 'collapse' clauses" } */
     117    for (i = 0; i < 8; ++i)
     118      f0 ();
     119    #pragma omp taskloop collapse (1) collapse (2)		/* { dg-error "too many 'collapse' clauses" } */
     120    for (i = 0; i < 8; ++i)
     121      f0 ();
     122    #pragma omp target data device (1) device (1) map (alloc: i)		/* { dg-error "too many 'device' clauses" } */
     123    f0 ();
     124    #pragma omp target enter data device (1) device (1) map (to: i)	/* { dg-error "too many 'device' clauses" } */
     125    #pragma omp target enter data nowait nowait map (to: i)		/* { dg-error "too many 'nowait' clauses" } */
     126    #pragma omp target exit data device (1) device (1) map (from: i)	/* { dg-error "too many 'device' clauses" } */
     127    #pragma omp target exit data nowait nowait map (from: i)		/* { dg-error "too many 'nowait' clauses" } */
     128    #pragma omp target device (1) device (1)			/* { dg-error "too many 'device' clauses" } */
     129    f0 ();
     130    #pragma omp target nowait nowait				/* { dg-error "too many 'nowait' clauses" } */
     131    f0 ();
     132    #pragma omp target update device (1) device (1) to (i)	/* { dg-error "too many 'device' clauses" } */
     133    #pragma omp target update nowait nowait to (i)		/* { dg-error "too many 'nowait' clauses" } */
     134    #pragma omp atomic seq_cst seq_cst				/* { dg-error "too many memory order clauses" } */
     135    p[0]++;
     136    #pragma omp atomic release release				/* { dg-error "too many memory order clauses" } */
     137    p[0]++;
     138    #pragma omp atomic relaxed relaxed				/* { dg-error "too many memory order clauses" } */
     139    p[0]++;
     140    #pragma omp atomic seq_cst release				/* { dg-error "too many memory order clauses" } */
     141    p[0]++;
     142    #pragma omp atomic release relaxed				/* { dg-error "too many memory order clauses" } */
     143    p[0]++;
     144    #pragma omp atomic relaxed seq_cst				/* { dg-error "too many memory order clauses" } */
     145    p[0]++;
     146    #pragma omp atomic hint(0) hint(0)				/* { dg-error "too many 'hint' clauses" } */
     147    p[0]++;
     148    #pragma omp atomic update seq_cst seq_cst			/* { dg-error "too many memory order clauses" } */
     149    p[0]++;
     150    #pragma omp atomic update release release			/* { dg-error "too many memory order clauses" } */
     151    p[0]++;
     152    #pragma omp atomic update relaxed relaxed			/* { dg-error "too many memory order clauses" } */
     153    p[0]++;
     154    #pragma omp atomic update seq_cst release			/* { dg-error "too many memory order clauses" } */
     155    p[0]++;
     156    #pragma omp atomic update release relaxed			/* { dg-error "too many memory order clauses" } */
     157    p[0]++;
     158    #pragma omp atomic update relaxed seq_cst			/* { dg-error "too many memory order clauses" } */
     159    p[0]++;
     160    #pragma omp atomic update hint (0) hint(0)			/* { dg-error "too many 'hint' clauses" } */
     161    p[0]++;
     162    #pragma omp atomic write seq_cst seq_cst			/* { dg-error "too many memory order clauses" } */
     163    p[0] = 0;
     164    #pragma omp atomic write release release			/* { dg-error "too many memory order clauses" } */
     165    p[0] = 0;
     166    #pragma omp atomic write relaxed relaxed			/* { dg-error "too many memory order clauses" } */
     167    p[0] = 0;
     168    #pragma omp atomic write seq_cst release			/* { dg-error "too many memory order clauses" } */
     169    p[0] = 0;
     170    #pragma omp atomic write release relaxed			/* { dg-error "too many memory order clauses" } */
     171    p[0] = 0;
     172    #pragma omp atomic write relaxed seq_cst			/* { dg-error "too many memory order clauses" } */
     173    p[0] = 0;
     174    #pragma omp atomic write hint(0)hint(0)			/* { dg-error "too many 'hint' clauses" } */
     175    p[0] = 0;
     176    #pragma omp atomic read seq_cst seq_cst			/* { dg-error "too many memory order clauses" } */
     177    i = p[0];
     178    #pragma omp atomic read acquire acquire			/* { dg-error "too many memory order clauses" } */
     179    i = p[0];
     180    #pragma omp atomic read relaxed relaxed			/* { dg-error "too many memory order clauses" } */
     181    i = p[0];
     182    #pragma omp atomic read seq_cst acquire			/* { dg-error "too many memory order clauses" } */
     183    i = p[0];
     184    #pragma omp atomic read acquire relaxed			/* { dg-error "too many memory order clauses" } */
     185    i = p[0];
     186    #pragma omp atomic read relaxed seq_cst			/* { dg-error "too many memory order clauses" } */
     187    i = p[0];
     188    #pragma omp atomic read hint (0) hint(0)			/* { dg-error "too many 'hint' clauses" } */
     189    i = p[0];
     190    #pragma omp atomic capture seq_cst seq_cst			/* { dg-error "too many memory order clauses" } */
     191    i = p[0]++;
     192    #pragma omp atomic capture acq_rel acq_rel			/* { dg-error "too many memory order clauses" } */
     193    i = p[0]++;
     194    #pragma omp atomic capture acquire acquire			/* { dg-error "too many memory order clauses" } */
     195    i = p[0]++;
     196    #pragma omp atomic capture release release			/* { dg-error "too many memory order clauses" } */
     197    i = p[0]++;
     198    #pragma omp atomic capture relaxed relaxed			/* { dg-error "too many memory order clauses" } */
     199    i = p[0]++;
     200    #pragma omp atomic capture seq_cst acq_rel			/* { dg-error "too many memory order clauses" } */
     201    i = p[0]++;
     202    #pragma omp atomic capture acq_rel acquire			/* { dg-error "too many memory order clauses" } */
     203    i = p[0]++;
     204    #pragma omp atomic capture acquire release			/* { dg-error "too many memory order clauses" } */
     205    i = p[0]++;
     206    #pragma omp atomic capture release relaxed			/* { dg-error "too many memory order clauses" } */
     207    i = p[0]++;
     208    #pragma omp atomic capture relaxed seq_cst			/* { dg-error "too many memory order clauses" } */
     209    i = p[0]++;
     210    #pragma omp atomic capture hint(0) hint (0)			/* { dg-error "too many 'hint' clauses" } */
     211    i = p[0]++;
     212    #pragma omp masked filter (0) filter (0)			/* { dg-error "too many 'filter' clauses" } */
     213    f0 ();
     214    #pragma omp scope nowait nowait				/* { dg-error "too many 'nowait' clauses" } */
     215    ;
     216    #pragma omp loop bind(thread) order(concurrent) order(concurrent)	/* { dg-error "too many 'order' clauses" } */
     217    for (i = 0; i < 8; ++i)
     218      f0 ();
     219    #pragma omp loop bind(thread) order(reproducible:concurrent) order(unconstrained:concurrent)	/* { dg-error "too many 'order' clauses" } */
     220    for (i = 0; i < 8; ++i)
     221      f0 ();
     222    #pragma omp simd order(concurrent) order(concurrent)	/* { dg-error "too many 'order' clauses" } */
     223    for (i = 0; i < 8; ++i)
     224      f0 ();
     225    #pragma omp simd order(reproducible:concurrent) order(unconstrained:concurrent)	/* { dg-error "too many 'order' clauses" } */
     226    for (i = 0; i < 8; ++i)
     227      f0 ();
     228  }
     229  
     230  #pragma omp declare simd simdlen (4) simdlen (4)		/* { dg-error "too many 'simdlen' clauses" } */
     231  void f2 (int a, int b);
     232  #pragma omp declare simd simdlen (4) simdlen (8)		/* { dg-error "too many 'simdlen' clauses" } */
     233  void f3 (int a, int b);
     234  #pragma omp declare simd uniform (a) uniform (a)		/* { dg-error "'a' appears more than once in data clauses" } */
     235  void f4 (int a, int b);
     236  #pragma omp declare simd linear (a) linear (a)			/* { dg-error "'a' appears more than once in data clauses" } */
     237  void f5 (int a, int b);
     238  #pragma omp declare simd linear (a) linear (a:3)		/* { dg-error "'a' appears more than once in data clauses" } */
     239  void f6 (int a, int b);
     240  #pragma omp declare simd uniform (a) linear (a)			/* { dg-error "'a' appears more than once in data clauses" } */
     241  void f7 (int a, int b);
     242  #pragma omp declare simd linear (a) uniform (a)			/* { dg-error "'a' appears more than once in data clauses" } */
     243  void f8 (int a, int b);
     244  
     245  #pragma omp declare target
     246  void
     247  f9 (void)
     248  {
     249    int i;
     250    #pragma omp distribute dist_schedule(static) order(concurrent) order(concurrent)	/* { dg-error "too many 'order' clauses" } */
     251    for (i = 0; i < 8; ++i)
     252      f0 ();
     253    #pragma omp loop bind(thread) order(reproducible:concurrent) order(unconstrained:concurrent)	/* { dg-error "too many 'order' clauses" } */
     254    for (i = 0; i < 8; ++i)
     255      f0 ();
     256  }
     257  #pragma omp end declare target