1 void
f(int N,float * a,float * b)2 f (int N, float *a, float *b)
3 {
4     int ii;
5 
6 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1 2) /* { dg-error "expected '\\)' before numeric constant" } */
7     {
8         for (ii = 0; ii < N; ii++)
9             b[ii] = a[ii];
10     }
11 
12 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1,) /* { dg-error "expected '\\)' before ',' token" } */
13     {
14         for (ii = 0; ii < N; ii++)
15             b[ii] = a[ii];
16     }
17 
18 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (,1) /* { dg-error "expected (primary-|)expression before" } */
19     {
20         for (ii = 0; ii < N; ii++)
21             b[ii] = a[ii];
22     }
23 
24 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1,2,) /* { dg-error "expected '\\)' before ',' token" } */
25     {
26         for (ii = 0; ii < N; ii++)
27             b[ii] = a[ii];
28     }
29 
30 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1,2 3) /* { dg-error "expected '\\)' before ',' token" } */
31     {
32         for (ii = 0; ii < N; ii++)
33             b[ii] = a[ii];
34     }
35 
36 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1,2,,) /* { dg-error "expected '\\)' before ',' token" } */
37     {
38         for (ii = 0; ii < N; ii++)
39             b[ii] = a[ii];
40     }
41 
42 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1 /* { dg-error "expected '\\)' before end of line" } */
43     {
44         for (ii = 0; ii < N; ii++)
45             b[ii] = a[ii];
46     }
47 
48 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (*) /* { dg-error "expected (primary-|)expression before" } */
49     {
50         for (ii = 0; ii < N; ii++)
51             b[ii] = a[ii];
52     }
53 
54 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (a)
55 	/* { dg-error "expected integer expression before" "" { target c } .-1 } */
56 	/* { dg-error "'async' expression must be integral" "" { target c++ } .-2 } */
57     {
58         for (ii = 0; ii < N; ii++)
59             b[ii] = a[ii];
60     }
61 
62 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async (1.0)
63 	/* { dg-error "expected integer expression before" "" { target c } .-1 } */
64 	/* { dg-error "'async' expression must be integral" "" { target c++ } .-2 } */
65     {
66         for (ii = 0; ii < N; ii++)
67             b[ii] = a[ii];
68     }
69 
70 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async () /* { dg-error "expected (primary-|)expression before" } */
71     {
72         for (ii = 0; ii < N; ii++)
73             b[ii] = a[ii];
74     }
75 
76 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) async
77     {
78         for (ii = 0; ii < N; ii++)
79             b[ii] = a[ii];
80     }
81 
82 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1 2) /* { dg-error "expected '\\)' before numeric constant" } */
83     {
84         for (ii = 0; ii < N; ii++)
85             b[ii] = a[ii];
86     }
87 
88 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1,) /* { dg-error "expected (primary-|)expression before" } */
89     {
90         for (ii = 0; ii < N; ii++)
91             b[ii] = a[ii];
92     }
93 
94 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (,1) /* { dg-error "expected (primary-|)expression before" } */
95     {
96         for (ii = 0; ii < N; ii++)
97             b[ii] = a[ii];
98     }
99 
100 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1,2,) /* { dg-error "expected (primary-|)expression before" } */
101     {
102         for (ii = 0; ii < N; ii++)
103             b[ii] = a[ii];
104     }
105 
106 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1,2 3) /* { dg-error "expected '\\)' before numeric constant" } */
107     {
108         for (ii = 0; ii < N; ii++)
109             b[ii] = a[ii];
110     }
111 
112 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1,2,,) /* { dg-error "expected (primary-|)expression before" } */
113     {
114         for (ii = 0; ii < N; ii++)
115             b[ii] = a[ii];
116     }
117 
118 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1 /* { dg-error "expected '\\\)' before end of line" } */
119     {
120         for (ii = 0; ii < N; ii++)
121             b[ii] = a[ii];
122     }
123 
124 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1,*) /* { dg-error "expected (primary-|)expression before" } */
125     {
126         for (ii = 0; ii < N; ii++)
127             b[ii] = a[ii];
128     }
129 
130 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1,a) /*{ dg-error "must be integral" } */
131     {
132         for (ii = 0; ii < N; ii++)
133             b[ii] = a[ii];
134     }
135 
136 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (a) /* { dg-error "must be integral" } */
137     {
138         for (ii = 0; ii < N; ii++)
139             b[ii] = a[ii];
140     }
141 
142 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait (1.0) /* { dg-error "must be integral" } */
143     {
144         for (ii = 0; ii < N; ii++)
145             b[ii] = a[ii];
146     }
147 
148 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait () /* { dg-error "expected (integer |)expression (list |)before" } */
149     {
150         for (ii = 0; ii < N; ii++)
151             b[ii] = a[ii];
152     }
153 
154 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait ( /* { dg-error "expected (primary-|)expression before" } */
155     {
156         for (ii = 0; ii < N; ii++)
157             b[ii] = a[ii];
158     }
159 
160 #pragma acc parallel copyin (a[0:N]) copy (b[0:N]) wait
161     {
162         for (ii = 0; ii < N; ii++)
163             b[ii] = a[ii];
164     }
165 
166 #pragma acc wait (1 2) /* { dg-error "expected '\\)' before numeric constant" } */
167 
168 #pragma acc wait (1,) /* { dg-error "expected (primary-|)expression before" } */
169 
170 #pragma acc wait (,1) /* { dg-error "expected (primary-|)expression before" } */
171 
172 #pragma acc wait (1,2,) /* { dg-error "expected (primary-|)expression before" } */
173 
174 #pragma acc wait (1,2 3) /* { dg-error "expected '\\)' before numeric constant" } */
175 
176 #pragma acc wait (1,2,,) /* { dg-error "expected (primary-|)expression before" } */
177 
178 #pragma acc wait (1 /* { dg-error "expected '\\\)' before end of line" } */
179 
180 #pragma acc wait (1,*) /* { dg-error "expected (primary-|)expression before" } */
181 
182 #pragma acc wait (1,a) /* { dg-error "expression must be integral" } */
183 
184 #pragma acc wait (a) /* { dg-error "expression must be integral" } */
185 
186 #pragma acc wait (1.0) /* { dg-error "expression must be integral" } */
187 
188 #pragma acc wait 1 /* { dg-error "expected '#pragma acc' clause before numeric constant" } */
189 
190 #pragma acc wait N /* { dg-error "expected '#pragma acc' clause before 'N'" } */
191 
192 #pragma acc wait async (1 2) /* { dg-error "expected '\\)' before numeric constant" } */
193 
194 #pragma acc wait async (1 2) /* { dg-error "expected '\\)' before numeric constant" } */
195 
196 #pragma acc wait async (1,) /* { dg-error "expected '\\)' before ',' token" } */
197 
198 #pragma acc wait async (,1) /* { dg-error "expected (primary-|)expression before" } */
199 
200 #pragma acc wait async (1,2,) /* { dg-error "expected '\\)' before ',' token" } */
201 
202 #pragma acc wait async (1,2 3) /* { dg-error "expected '\\)' before ',' token" } */
203 
204 #pragma acc wait async (1,2,,) /* { dg-error "expected '\\)' before ',' token" } */
205 
206 #pragma acc wait async (1 /* { dg-error "expected '\\)' before end of line" } */
207 
208 #pragma acc wait async (*) /* { dg-error "expected (primary-|)expression before " } */
209 
210 #pragma acc wait async (a)
211     /* { dg-error "expected integer expression before" "" { target c } .-1 } */
212     /* { dg-error "expression must be integral" "" { target c++ } .-2 } */
213 
214 #pragma acc wait async (1.0)
215    /* { dg-error "expected integer expression before" "" { target c } .-1 } */
216    /* { dg-error "expression must be integral" "" { target c++ } .-2 } */
217 }
218 
219 /* PR c/99137 */
f2()220 void f2 ()
221 {
222   #pragma acc parallel async(1,2)  /* { dg-error "expected '\\)' before ',' token" } */
223   ;
224 }
225