xref: /llvm-project/clang/test/SemaOpenACC/combined-construct-auto_seq_independent-clauses.c (revision be32621ce8cbffe674c62e87c0c51c9fc4a21e5f)
1 // RUN: %clang_cc1 %s -fopenacc -verify
2 
3 void uses() {
4 #pragma acc parallel loop auto
5   for(unsigned i = 0; i < 5; ++i);
6 #pragma acc parallel loop seq
7   for(unsigned i = 0; i < 5; ++i);
8 #pragma acc parallel loop independent
9   for(unsigned i = 0; i < 5; ++i);
10 
11   // expected-error@+2{{OpenACC clause 'seq' on 'parallel loop' construct conflicts with previous data dependence clause}}
12   // expected-note@+1{{previous clause is here}}
13 #pragma acc parallel loop auto seq
14   for(unsigned i = 0; i < 5; ++i);
15   // expected-error@+2{{OpenACC clause 'independent' on 'parallel loop' construct conflicts with previous data dependence clause}}
16   // expected-note@+1{{previous clause is here}}
17 #pragma acc parallel loop auto independent
18   for(unsigned i = 0; i < 5; ++i);
19   // expected-error@+2{{OpenACC clause 'auto' on 'parallel loop' construct conflicts with previous data dependence clause}}
20   // expected-note@+1{{previous clause is here}}
21 #pragma acc parallel loop seq auto
22   for(unsigned i = 0; i < 5; ++i);
23   // expected-error@+2{{OpenACC clause 'independent' on 'parallel loop' construct conflicts with previous data dependence clause}}
24   // expected-note@+1{{previous clause is here}}
25 #pragma acc parallel loop seq independent
26   for(unsigned i = 0; i < 5; ++i);
27   // expected-error@+2{{OpenACC clause 'auto' on 'parallel loop' construct conflicts with previous data dependence clause}}
28   // expected-note@+1{{previous clause is here}}
29 #pragma acc parallel loop independent auto
30   for(unsigned i = 0; i < 5; ++i);
31   // expected-error@+2{{OpenACC clause 'seq' on 'parallel loop' construct conflicts with previous data dependence clause}}
32   // expected-note@+1{{previous clause is here}}
33 #pragma acc parallel loop independent seq
34   for(unsigned i = 0; i < 5; ++i);
35 
36   int Var;
37   int *VarPtr;
38 
39   // 'auto' can combine with any other clause.
40   // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}
41 #pragma acc parallel loop auto finalize
42   for(unsigned i = 0; i < 5; ++i);
43   // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}}
44 #pragma acc parallel loop auto if_present
45   for(unsigned i = 0; i < 5; ++i);
46 #pragma acc parallel loop auto worker
47   for(unsigned i = 0; i < 5; ++i);
48 #pragma acc parallel loop auto vector
49   for(unsigned i = 0; i < 5; ++i);
50   // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}}
51 #pragma acc parallel loop auto nohost
52   for(unsigned i = 0; i < 5; ++i);
53 #pragma acc parallel loop auto default(none)
54   for(unsigned i = 0; i < 5; ++i);
55 #pragma acc parallel loop auto if(1)
56   for(unsigned i = 0; i < 5; ++i);
57 #pragma acc parallel loop auto self
58   for(unsigned i = 0; i < 5; ++i);
59 #pragma acc parallel loop auto copy(Var)
60   for(unsigned i = 0; i < 5; ++i);
61   // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}
62 #pragma acc parallel loop auto pcopy(Var)
63   for(unsigned i = 0; i < 5; ++i);
64   // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}
65 #pragma acc parallel loop auto present_or_copy(Var)
66   for(unsigned i = 0; i < 5; ++i);
67   // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}}
68 #pragma acc parallel loop auto use_device(Var)
69   for(unsigned i = 0; i < 5; ++i);
70 #pragma acc parallel loop auto attach(VarPtr)
71   for(unsigned i = 0; i < 5; ++i);
72   // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}}
73 #pragma acc parallel loop auto delete(Var)
74   for(unsigned i = 0; i < 5; ++i);
75   // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}}
76 #pragma acc parallel loop auto detach(Var)
77   for(unsigned i = 0; i < 5; ++i);
78   // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}}
79 #pragma acc parallel loop auto device(VarPtr)
80   for(unsigned i = 0; i < 5; ++i);
81 #pragma acc parallel loop auto deviceptr(VarPtr)
82   for(unsigned i = 0; i < 5; ++i);
83   // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}}
84 #pragma acc parallel loop auto device_resident(VarPtr)
85   for(unsigned i = 0; i < 5; ++i);
86 #pragma acc parallel loop auto firstprivate(Var)
87   for(unsigned i = 0; i < 5; ++i);
88   // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}}
89 #pragma acc parallel loop auto host(Var)
90   for(unsigned i = 0; i < 5; ++i);
91   // expected-warning@+1{{OpenACC clause 'link' not yet implemented}}
92 #pragma acc parallel loop auto link(Var)
93   for(unsigned i = 0; i < 5; ++i);
94 #pragma acc parallel loop auto no_create(Var)
95   for(unsigned i = 0; i < 5; ++i);
96 #pragma acc parallel loop auto present(Var)
97   for(unsigned i = 0; i < 5; ++i);
98 #pragma acc parallel loop auto private(Var)
99   for(unsigned i = 0; i < 5; ++i);
100 #pragma acc parallel loop auto copyout(Var)
101   for(unsigned i = 0; i < 5; ++i);
102   // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}
103 #pragma acc parallel loop auto pcopyout(Var)
104   for(unsigned i = 0; i < 5; ++i);
105   // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}}
106 #pragma acc parallel loop auto present_or_copyout(Var)
107   for(unsigned i = 0; i < 5; ++i);
108 #pragma acc parallel loop auto copyin(Var)
109   for(unsigned i = 0; i < 5; ++i);
110   // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}
111 #pragma acc parallel loop auto pcopyin(Var)
112   for(unsigned i = 0; i < 5; ++i);
113   // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}
114 #pragma acc parallel loop auto present_or_copyin(Var)
115   for(unsigned i = 0; i < 5; ++i);
116 #pragma acc parallel loop auto create(Var)
117   for(unsigned i = 0; i < 5; ++i);
118   // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}
119 #pragma acc parallel loop auto pcreate(Var)
120   for(unsigned i = 0; i < 5; ++i);
121   // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}
122 #pragma acc parallel loop auto present_or_create(Var)
123   for(unsigned i = 0; i < 5; ++i);
124 #pragma acc parallel loop auto reduction(+:Var)
125   for(unsigned i = 0; i < 5; ++i);
126 #pragma acc parallel loop auto collapse(1)
127   for(unsigned i = 0; i < 5; ++i);
128   // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}}
129 #pragma acc parallel loop auto bind(Var)
130   for(unsigned i = 0; i < 5; ++i);
131 #pragma acc parallel loop auto vector_length(1)
132   for(unsigned i = 0; i < 5; ++i);
133 #pragma acc parallel loop auto num_gangs(1)
134   for(unsigned i = 0; i < 5; ++i);
135 #pragma acc parallel loop auto num_workers(1)
136   for(unsigned i = 0; i < 5; ++i);
137   // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}}
138 #pragma acc parallel loop auto device_num(1)
139   for(unsigned i = 0; i < 5; ++i);
140   // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}}
141 #pragma acc parallel loop auto default_async(1)
142   for(unsigned i = 0; i < 5; ++i);
143 #pragma acc parallel loop auto device_type(*)
144   for(unsigned i = 0; i < 5; ++i);
145 #pragma acc parallel loop auto dtype(*)
146   for(unsigned i = 0; i < 5; ++i);
147 #pragma acc parallel loop auto async
148   for(unsigned i = 0; i < 5; ++i);
149 #pragma acc parallel loop auto tile(1+2, 1)
150   for(unsigned j = 0; j < 5; ++j)
151     for(unsigned i = 0; i < 5; ++i);
152 #pragma acc parallel loop auto gang
153   for(unsigned i = 0; i < 5; ++i);
154 #pragma acc parallel loop auto wait
155   for(unsigned i = 0; i < 5; ++i);
156 
157   // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}
158 #pragma acc parallel loop finalize auto
159   for(unsigned i = 0; i < 5; ++i);
160   // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}}
161 #pragma acc parallel loop if_present auto
162   for(unsigned i = 0; i < 5; ++i);
163 #pragma acc parallel loop worker auto
164   for(unsigned i = 0; i < 5; ++i);
165 #pragma acc parallel loop vector auto
166   for(unsigned i = 0; i < 5; ++i);
167   // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}}
168 #pragma acc parallel loop nohost auto
169   for(unsigned i = 0; i < 5; ++i);
170 #pragma acc parallel loop default(none) auto
171   for(unsigned i = 0; i < 5; ++i);
172 #pragma acc parallel loop if(1) auto
173   for(unsigned i = 0; i < 5; ++i);
174 #pragma acc parallel loop self auto
175   for(unsigned i = 0; i < 5; ++i);
176 #pragma acc parallel loop copy(Var) auto
177   for(unsigned i = 0; i < 5; ++i);
178   // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}
179 #pragma acc parallel loop pcopy(Var) auto
180   for(unsigned i = 0; i < 5; ++i);
181   // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}
182 #pragma acc parallel loop present_or_copy(Var) auto
183   for(unsigned i = 0; i < 5; ++i);
184   // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}}
185 #pragma acc parallel loop use_device(Var) auto
186   for(unsigned i = 0; i < 5; ++i);
187 #pragma acc parallel loop attach(VarPtr) auto
188   for(unsigned i = 0; i < 5; ++i);
189   // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}}
190 #pragma acc parallel loop delete(Var) auto
191   for(unsigned i = 0; i < 5; ++i);
192   // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}}
193 #pragma acc parallel loop detach(Var) auto
194   for(unsigned i = 0; i < 5; ++i);
195   // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}}
196 #pragma acc parallel loop device(VarPtr) auto
197   for(unsigned i = 0; i < 5; ++i);
198 #pragma acc parallel loop deviceptr(VarPtr) auto
199   for(unsigned i = 0; i < 5; ++i);
200   // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}}
201 #pragma acc parallel loop device_resident(VarPtr) auto
202   for(unsigned i = 0; i < 5; ++i);
203 #pragma acc parallel loop firstprivate(Var) auto
204   for(unsigned i = 0; i < 5; ++i);
205   // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}}
206 #pragma acc parallel loop host(Var) auto
207   for(unsigned i = 0; i < 5; ++i);
208   // expected-warning@+1{{OpenACC clause 'link' not yet implemented}}
209 #pragma acc parallel loop link(Var) auto
210   for(unsigned i = 0; i < 5; ++i);
211 #pragma acc parallel loop no_create(Var) auto
212   for(unsigned i = 0; i < 5; ++i);
213 #pragma acc parallel loop present(Var) auto
214   for(unsigned i = 0; i < 5; ++i);
215 #pragma acc parallel loop private(Var) auto
216   for(unsigned i = 0; i < 5; ++i);
217 #pragma acc parallel loop copyout(Var) auto
218   for(unsigned i = 0; i < 5; ++i);
219   // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}
220 #pragma acc parallel loop pcopyout(Var) auto
221   for(unsigned i = 0; i < 5; ++i);
222   // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}}
223 #pragma acc parallel loop present_or_copyout(Var) auto
224   for(unsigned i = 0; i < 5; ++i);
225 #pragma acc parallel loop copyin(Var) auto
226   for(unsigned i = 0; i < 5; ++i);
227   // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}
228 #pragma acc parallel loop pcopyin(Var) auto
229   for(unsigned i = 0; i < 5; ++i);
230   // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}
231 #pragma acc parallel loop present_or_copyin(Var) auto
232   for(unsigned i = 0; i < 5; ++i);
233 #pragma acc parallel loop create(Var) auto
234   for(unsigned i = 0; i < 5; ++i);
235   // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}
236 #pragma acc parallel loop pcreate(Var) auto
237   for(unsigned i = 0; i < 5; ++i);
238   // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}
239 #pragma acc parallel loop present_or_create(Var) auto
240   for(unsigned i = 0; i < 5; ++i);
241 #pragma acc parallel loop reduction(+:Var) auto
242   for(unsigned i = 0; i < 5; ++i);
243 #pragma acc parallel loop collapse(1) auto
244   for(unsigned i = 0; i < 5; ++i);
245   // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}}
246 #pragma acc parallel loop bind(Var) auto
247   for(unsigned i = 0; i < 5; ++i);
248 #pragma acc parallel loop vector_length(1) auto
249   for(unsigned i = 0; i < 5; ++i);
250 #pragma acc parallel loop num_gangs(1) auto
251   for(unsigned i = 0; i < 5; ++i);
252 #pragma acc parallel loop num_workers(1) auto
253   for(unsigned i = 0; i < 5; ++i);
254   // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}}
255 #pragma acc parallel loop device_num(1) auto
256   for(unsigned i = 0; i < 5; ++i);
257   // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}}
258 #pragma acc parallel loop default_async(1) auto
259   for(unsigned i = 0; i < 5; ++i);
260 #pragma acc parallel loop device_type(*) auto
261   for(unsigned i = 0; i < 5; ++i);
262 #pragma acc parallel loop dtype(*) auto
263   for(unsigned i = 0; i < 5; ++i);
264 #pragma acc parallel loop async auto
265   for(unsigned i = 0; i < 5; ++i);
266 #pragma acc parallel loop tile(1+2, 1) auto
267   for(unsigned j = 0; j < 5; ++j)
268     for(unsigned i = 0; i < 5; ++i);
269 #pragma acc parallel loop gang auto
270   for(unsigned i = 0; i < 5; ++i);
271 #pragma acc parallel loop wait auto
272   for(unsigned i = 0; i < 5; ++i);
273 
274   // 'independent' can also be combined with any clauses
275   // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}
276 #pragma acc parallel loop independent finalize
277   for(unsigned i = 0; i < 5; ++i);
278   // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}}
279 #pragma acc parallel loop independent if_present
280   for(unsigned i = 0; i < 5; ++i);
281 #pragma acc parallel loop independent worker
282   for(unsigned i = 0; i < 5; ++i);
283 #pragma acc parallel loop independent vector
284   for(unsigned i = 0; i < 5; ++i);
285   // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}}
286 #pragma acc parallel loop independent nohost
287   for(unsigned i = 0; i < 5; ++i);
288 #pragma acc parallel loop independent default(none)
289   for(unsigned i = 0; i < 5; ++i);
290 #pragma acc parallel loop independent if(1)
291   for(unsigned i = 0; i < 5; ++i);
292 #pragma acc parallel loop independent self
293   for(unsigned i = 0; i < 5; ++i);
294 #pragma acc parallel loop independent copy(Var)
295   for(unsigned i = 0; i < 5; ++i);
296   // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}
297 #pragma acc parallel loop independent pcopy(Var)
298   for(unsigned i = 0; i < 5; ++i);
299   // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}
300 #pragma acc parallel loop independent present_or_copy(Var)
301   for(unsigned i = 0; i < 5; ++i);
302   // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}}
303 #pragma acc parallel loop independent use_device(Var)
304   for(unsigned i = 0; i < 5; ++i);
305 #pragma acc parallel loop independent attach(VarPtr)
306   for(unsigned i = 0; i < 5; ++i);
307   // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}}
308 #pragma acc parallel loop independent delete(Var)
309   for(unsigned i = 0; i < 5; ++i);
310   // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}}
311 #pragma acc parallel loop independent detach(Var)
312   for(unsigned i = 0; i < 5; ++i);
313   // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}}
314 #pragma acc parallel loop independent device(VarPtr)
315   for(unsigned i = 0; i < 5; ++i);
316 #pragma acc parallel loop independent deviceptr(VarPtr)
317   for(unsigned i = 0; i < 5; ++i);
318   // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}}
319 #pragma acc parallel loop independent device_resident(VarPtr)
320   for(unsigned i = 0; i < 5; ++i);
321 #pragma acc parallel loop independent firstprivate(Var)
322   for(unsigned i = 0; i < 5; ++i);
323   // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}}
324 #pragma acc parallel loop independent host(Var)
325   for(unsigned i = 0; i < 5; ++i);
326   // expected-warning@+1{{OpenACC clause 'link' not yet implemented}}
327 #pragma acc parallel loop independent link(Var)
328   for(unsigned i = 0; i < 5; ++i);
329 #pragma acc parallel loop independent no_create(Var)
330   for(unsigned i = 0; i < 5; ++i);
331 #pragma acc parallel loop independent present(Var)
332   for(unsigned i = 0; i < 5; ++i);
333 #pragma acc parallel loop independent private(Var)
334   for(unsigned i = 0; i < 5; ++i);
335 #pragma acc parallel loop independent copyout(Var)
336   for(unsigned i = 0; i < 5; ++i);
337   // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}
338 #pragma acc parallel loop independent pcopyout(Var)
339   for(unsigned i = 0; i < 5; ++i);
340   // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}}
341 #pragma acc parallel loop independent present_or_copyout(Var)
342   for(unsigned i = 0; i < 5; ++i);
343 #pragma acc parallel loop independent copyin(Var)
344   for(unsigned i = 0; i < 5; ++i);
345   // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}
346 #pragma acc parallel loop independent pcopyin(Var)
347   for(unsigned i = 0; i < 5; ++i);
348   // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}
349 #pragma acc parallel loop independent present_or_copyin(Var)
350   for(unsigned i = 0; i < 5; ++i);
351 #pragma acc parallel loop independent create(Var)
352   for(unsigned i = 0; i < 5; ++i);
353   // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}
354 #pragma acc parallel loop independent pcreate(Var)
355   for(unsigned i = 0; i < 5; ++i);
356   // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}
357 #pragma acc parallel loop independent present_or_create(Var)
358   for(unsigned i = 0; i < 5; ++i);
359 #pragma acc parallel loop independent reduction(+:Var)
360   for(unsigned i = 0; i < 5; ++i);
361 #pragma acc parallel loop independent collapse(1)
362   for(unsigned i = 0; i < 5; ++i);
363   // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}}
364 #pragma acc parallel loop independent bind(Var)
365   for(unsigned i = 0; i < 5; ++i);
366 #pragma acc parallel loop independent vector_length(1)
367   for(unsigned i = 0; i < 5; ++i);
368 #pragma acc parallel loop independent num_gangs(1)
369   for(unsigned i = 0; i < 5; ++i);
370 #pragma acc parallel loop independent num_workers(1)
371   for(unsigned i = 0; i < 5; ++i);
372   // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}}
373 #pragma acc parallel loop independent device_num(1)
374   for(unsigned i = 0; i < 5; ++i);
375   // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}}
376 #pragma acc parallel loop independent default_async(1)
377   for(unsigned i = 0; i < 5; ++i);
378 #pragma acc parallel loop independent device_type(*)
379   for(unsigned i = 0; i < 5; ++i);
380 #pragma acc parallel loop independent dtype(*)
381   for(unsigned i = 0; i < 5; ++i);
382 #pragma acc parallel loop independent async
383   for(unsigned i = 0; i < 5; ++i);
384 #pragma acc parallel loop independent tile(1+2, 1)
385   for(unsigned j = 0; j < 5; ++j)
386     for(unsigned i = 0; i < 5; ++i);
387 #pragma acc parallel loop independent gang
388   for(unsigned i = 0; i < 5; ++i);
389 #pragma acc parallel loop independent wait
390   for(unsigned i = 0; i < 5; ++i);
391 
392   // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}
393 #pragma acc parallel loop finalize independent
394   for(unsigned i = 0; i < 5; ++i);
395   // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}}
396 #pragma acc parallel loop if_present independent
397   for(unsigned i = 0; i < 5; ++i);
398 #pragma acc parallel loop worker independent
399   for(unsigned i = 0; i < 5; ++i);
400 #pragma acc parallel loop vector independent
401   for(unsigned i = 0; i < 5; ++i);
402   // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}}
403 #pragma acc parallel loop nohost independent
404   for(unsigned i = 0; i < 5; ++i);
405 #pragma acc parallel loop default(none) independent
406   for(unsigned i = 0; i < 5; ++i);
407 #pragma acc parallel loop if(1) independent
408   for(unsigned i = 0; i < 5; ++i);
409 #pragma acc parallel loop self independent
410   for(unsigned i = 0; i < 5; ++i);
411 #pragma acc parallel loop copy(Var) independent
412   for(unsigned i = 0; i < 5; ++i);
413   // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}
414 #pragma acc parallel loop pcopy(Var) independent
415   for(unsigned i = 0; i < 5; ++i);
416   // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}
417 #pragma acc parallel loop present_or_copy(Var) independent
418   for(unsigned i = 0; i < 5; ++i);
419   // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}}
420 #pragma acc parallel loop use_device(Var) independent
421   for(unsigned i = 0; i < 5; ++i);
422 #pragma acc parallel loop attach(VarPtr) independent
423   for(unsigned i = 0; i < 5; ++i);
424   // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}}
425 #pragma acc parallel loop delete(Var) independent
426   for(unsigned i = 0; i < 5; ++i);
427   // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}}
428 #pragma acc parallel loop detach(Var) independent
429   for(unsigned i = 0; i < 5; ++i);
430   // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}}
431 #pragma acc parallel loop device(VarPtr) independent
432   for(unsigned i = 0; i < 5; ++i);
433 #pragma acc parallel loop deviceptr(VarPtr) independent
434   for(unsigned i = 0; i < 5; ++i);
435   // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}}
436 #pragma acc parallel loop device_resident(VarPtr) independent
437   for(unsigned i = 0; i < 5; ++i);
438 #pragma acc parallel loop firstprivate(Var) independent
439   for(unsigned i = 0; i < 5; ++i);
440   // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}}
441 #pragma acc parallel loop host(Var) independent
442   for(unsigned i = 0; i < 5; ++i);
443   // expected-warning@+1{{OpenACC clause 'link' not yet implemented}}
444 #pragma acc parallel loop link(Var) independent
445   for(unsigned i = 0; i < 5; ++i);
446 #pragma acc parallel loop no_create(Var) independent
447   for(unsigned i = 0; i < 5; ++i);
448 #pragma acc parallel loop present(Var) independent
449   for(unsigned i = 0; i < 5; ++i);
450 #pragma acc parallel loop private(Var) independent
451   for(unsigned i = 0; i < 5; ++i);
452 #pragma acc parallel loop copyout(Var) independent
453   for(unsigned i = 0; i < 5; ++i);
454   // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}
455 #pragma acc parallel loop pcopyout(Var) independent
456   for(unsigned i = 0; i < 5; ++i);
457   // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}}
458 #pragma acc parallel loop present_or_copyout(Var) independent
459   for(unsigned i = 0; i < 5; ++i);
460 #pragma acc parallel loop copyin(Var) independent
461   for(unsigned i = 0; i < 5; ++i);
462   // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}
463 #pragma acc parallel loop pcopyin(Var) independent
464   for(unsigned i = 0; i < 5; ++i);
465   // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}
466 #pragma acc parallel loop present_or_copyin(Var) independent
467   for(unsigned i = 0; i < 5; ++i);
468 #pragma acc parallel loop create(Var) independent
469   for(unsigned i = 0; i < 5; ++i);
470   // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}
471 #pragma acc parallel loop pcreate(Var) independent
472   for(unsigned i = 0; i < 5; ++i);
473   // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}
474 #pragma acc parallel loop present_or_create(Var) independent
475   for(unsigned i = 0; i < 5; ++i);
476 #pragma acc parallel loop reduction(+:Var) independent
477   for(unsigned i = 0; i < 5; ++i);
478 #pragma acc parallel loop collapse(1) independent
479   for(unsigned i = 0; i < 5; ++i);
480   // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}}
481 #pragma acc parallel loop bind(Var) independent
482   for(unsigned i = 0; i < 5; ++i);
483 #pragma acc parallel loop vector_length(1) independent
484   for(unsigned i = 0; i < 5; ++i);
485 #pragma acc parallel loop num_gangs(1) independent
486   for(unsigned i = 0; i < 5; ++i);
487 #pragma acc parallel loop num_workers(1) independent
488   for(unsigned i = 0; i < 5; ++i);
489   // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}}
490 #pragma acc parallel loop device_num(1) independent
491   for(unsigned i = 0; i < 5; ++i);
492   // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}}
493 #pragma acc parallel loop default_async(1) independent
494   for(unsigned i = 0; i < 5; ++i);
495 #pragma acc parallel loop device_type(*) independent
496   for(unsigned i = 0; i < 5; ++i);
497 #pragma acc parallel loop dtype(*) independent
498   for(unsigned i = 0; i < 5; ++i);
499 #pragma acc parallel loop async independent
500   for(unsigned i = 0; i < 5; ++i);
501 #pragma acc parallel loop tile(1+2, 1) independent
502   for(unsigned j = 0; j < 5; ++j)
503     for(unsigned i = 0; i < 5; ++i);
504 #pragma acc parallel loop gang independent
505   for(unsigned i = 0; i < 5; ++i);
506 #pragma acc parallel loop wait independent
507   for(unsigned i = 0; i < 5; ++i);
508 
509   // 'seq' cannot be combined with 'gang', 'worker' or 'vector'
510   // expected-error@+2{{OpenACC clause 'gang' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}
511   // expected-note@+1{{previous clause is here}}
512 #pragma acc parallel loop seq gang
513   for(unsigned i = 0; i < 5; ++i);
514   // expected-error@+2{{OpenACC clause 'worker' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}
515   // expected-note@+1{{previous clause is here}}
516 #pragma acc parallel loop seq worker
517   for(unsigned i = 0; i < 5; ++i);
518   // expected-error@+2{{OpenACC clause 'vector' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}
519   // expected-note@+1{{previous clause is here}}
520 #pragma acc parallel loop seq vector
521   for(unsigned i = 0; i < 5; ++i);
522   // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}
523 #pragma acc parallel loop seq finalize
524   for(unsigned i = 0; i < 5; ++i);
525   // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}}
526 #pragma acc parallel loop seq if_present
527   for(unsigned i = 0; i < 5; ++i);
528   // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}}
529 #pragma acc parallel loop seq nohost
530   for(unsigned i = 0; i < 5; ++i);
531 #pragma acc parallel loop seq default(none)
532   for(unsigned i = 0; i < 5; ++i);
533 #pragma acc parallel loop seq if(1)
534   for(unsigned i = 0; i < 5; ++i);
535 #pragma acc parallel loop seq self
536   for(unsigned i = 0; i < 5; ++i);
537 #pragma acc parallel loop seq copy(Var)
538   for(unsigned i = 0; i < 5; ++i);
539   // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}
540 #pragma acc parallel loop seq pcopy(Var)
541   for(unsigned i = 0; i < 5; ++i);
542   // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}
543 #pragma acc parallel loop seq present_or_copy(Var)
544   for(unsigned i = 0; i < 5; ++i);
545   // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}}
546 #pragma acc parallel loop seq use_device(Var)
547   for(unsigned i = 0; i < 5; ++i);
548 #pragma acc parallel loop seq attach(VarPtr)
549   for(unsigned i = 0; i < 5; ++i);
550   // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}}
551 #pragma acc parallel loop seq delete(Var)
552   for(unsigned i = 0; i < 5; ++i);
553   // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}}
554 #pragma acc parallel loop seq detach(Var)
555   for(unsigned i = 0; i < 5; ++i);
556   // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}}
557 #pragma acc parallel loop seq device(VarPtr)
558   for(unsigned i = 0; i < 5; ++i);
559 #pragma acc parallel loop seq deviceptr(VarPtr)
560   for(unsigned i = 0; i < 5; ++i);
561   // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}}
562 #pragma acc parallel loop seq device_resident(VarPtr)
563   for(unsigned i = 0; i < 5; ++i);
564 #pragma acc parallel loop seq firstprivate(Var)
565   for(unsigned i = 0; i < 5; ++i);
566   // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}}
567 #pragma acc parallel loop seq host(Var)
568   for(unsigned i = 0; i < 5; ++i);
569   // expected-warning@+1{{OpenACC clause 'link' not yet implemented}}
570 #pragma acc parallel loop seq link(Var)
571   for(unsigned i = 0; i < 5; ++i);
572 #pragma acc parallel loop seq no_create(Var)
573   for(unsigned i = 0; i < 5; ++i);
574 #pragma acc parallel loop seq present(Var)
575   for(unsigned i = 0; i < 5; ++i);
576 #pragma acc parallel loop seq private(Var)
577   for(unsigned i = 0; i < 5; ++i);
578 #pragma acc parallel loop seq copyout(Var)
579   for(unsigned i = 0; i < 5; ++i);
580   // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}
581 #pragma acc parallel loop seq pcopyout(Var)
582   for(unsigned i = 0; i < 5; ++i);
583   // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}}
584 #pragma acc parallel loop seq present_or_copyout(Var)
585   for(unsigned i = 0; i < 5; ++i);
586 #pragma acc parallel loop seq copyin(Var)
587   for(unsigned i = 0; i < 5; ++i);
588   // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}
589 #pragma acc parallel loop seq pcopyin(Var)
590   for(unsigned i = 0; i < 5; ++i);
591   // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}
592 #pragma acc parallel loop seq present_or_copyin(Var)
593   for(unsigned i = 0; i < 5; ++i);
594 #pragma acc parallel loop seq create(Var)
595   for(unsigned i = 0; i < 5; ++i);
596   // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}
597 #pragma acc parallel loop seq pcreate(Var)
598   for(unsigned i = 0; i < 5; ++i);
599   // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}
600 #pragma acc parallel loop seq present_or_create(Var)
601   for(unsigned i = 0; i < 5; ++i);
602 #pragma acc parallel loop seq reduction(+:Var)
603   for(unsigned i = 0; i < 5; ++i);
604 #pragma acc parallel loop seq collapse(1)
605   for(unsigned i = 0; i < 5; ++i);
606   // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}}
607 #pragma acc parallel loop seq bind(Var)
608   for(unsigned i = 0; i < 5; ++i);
609 #pragma acc parallel loop seq vector_length(1)
610   for(unsigned i = 0; i < 5; ++i);
611 #pragma acc parallel loop seq num_gangs(1)
612   for(unsigned i = 0; i < 5; ++i);
613 #pragma acc parallel loop seq num_workers(1)
614   for(unsigned i = 0; i < 5; ++i);
615   // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}}
616 #pragma acc parallel loop seq device_num(1)
617   for(unsigned i = 0; i < 5; ++i);
618   // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}}
619 #pragma acc parallel loop seq default_async(1)
620   for(unsigned i = 0; i < 5; ++i);
621 #pragma acc parallel loop seq device_type(*)
622   for(unsigned i = 0; i < 5; ++i);
623 #pragma acc parallel loop seq dtype(*)
624   for(unsigned i = 0; i < 5; ++i);
625 #pragma acc parallel loop seq async
626   for(unsigned i = 0; i < 5; ++i);
627 #pragma acc parallel loop seq tile(1+2, 1)
628   for(;;)
629     for(unsigned i = 0; i < 5; ++i);
630 #pragma acc parallel loop seq wait
631   for(unsigned i = 0; i < 5; ++i);
632 
633   // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'gang' clause on a 'parallel loop' construct}}
634   // expected-note@+1{{previous clause is here}}
635 #pragma acc parallel loop gang seq
636   for(unsigned i = 0; i < 5; ++i);
637   // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'worker' clause on a 'parallel loop' construct}}
638   // expected-note@+1{{previous clause is here}}
639 #pragma acc parallel loop worker seq
640   for(unsigned i = 0; i < 5; ++i);
641   // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'vector' clause on a 'parallel loop' construct}}
642   // expected-note@+1{{previous clause is here}}
643 #pragma acc parallel loop vector seq
644   for(unsigned i = 0; i < 5; ++i);
645   // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}
646 #pragma acc parallel loop finalize seq
647   for(unsigned i = 0; i < 5; ++i);
648   // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}}
649 #pragma acc parallel loop if_present seq
650   for(unsigned i = 0; i < 5; ++i);
651   // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}}
652 #pragma acc parallel loop nohost seq
653   for(unsigned i = 0; i < 5; ++i);
654 #pragma acc parallel loop default(none) seq
655   for(unsigned i = 0; i < 5; ++i);
656 #pragma acc parallel loop if(1) seq
657   for(unsigned i = 0; i < 5; ++i);
658 #pragma acc parallel loop self seq
659   for(unsigned i = 0; i < 5; ++i);
660 #pragma acc parallel loop copy(Var) seq
661   for(unsigned i = 0; i < 5; ++i);
662   // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}
663 #pragma acc parallel loop pcopy(Var) seq
664   for(unsigned i = 0; i < 5; ++i);
665   // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}
666 #pragma acc parallel loop present_or_copy(Var) seq
667   for(unsigned i = 0; i < 5; ++i);
668   // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}}
669 #pragma acc parallel loop use_device(Var) seq
670   for(unsigned i = 0; i < 5; ++i);
671 #pragma acc parallel loop attach(VarPtr) seq
672   for(unsigned i = 0; i < 5; ++i);
673   // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}}
674 #pragma acc parallel loop delete(Var) seq
675   for(unsigned i = 0; i < 5; ++i);
676   // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}}
677 #pragma acc parallel loop detach(Var) seq
678   for(unsigned i = 0; i < 5; ++i);
679   // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}}
680 #pragma acc parallel loop device(VarPtr) seq
681   for(unsigned i = 0; i < 5; ++i);
682 #pragma acc parallel loop deviceptr(VarPtr) seq
683   for(unsigned i = 0; i < 5; ++i);
684   // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}}
685 #pragma acc parallel loop device_resident(VarPtr) seq
686   for(unsigned i = 0; i < 5; ++i);
687 #pragma acc parallel loop firstprivate(Var) seq
688   for(unsigned i = 0; i < 5; ++i);
689   // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}}
690 #pragma acc parallel loop host(Var) seq
691   for(unsigned i = 0; i < 5; ++i);
692   // expected-warning@+1{{OpenACC clause 'link' not yet implemented}}
693 #pragma acc parallel loop link(Var) seq
694   for(unsigned i = 0; i < 5; ++i);
695 #pragma acc parallel loop no_create(Var) seq
696   for(unsigned i = 0; i < 5; ++i);
697 #pragma acc parallel loop present(Var) seq
698   for(unsigned i = 0; i < 5; ++i);
699 #pragma acc parallel loop private(Var) seq
700   for(unsigned i = 0; i < 5; ++i);
701 #pragma acc parallel loop copyout(Var) seq
702   for(unsigned i = 0; i < 5; ++i);
703   // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}
704 #pragma acc parallel loop pcopyout(Var) seq
705   for(unsigned i = 0; i < 5; ++i);
706   // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}}
707 #pragma acc parallel loop present_or_copyout(Var) seq
708   for(unsigned i = 0; i < 5; ++i);
709 #pragma acc parallel loop copyin(Var) seq
710   for(unsigned i = 0; i < 5; ++i);
711   // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}
712 #pragma acc parallel loop pcopyin(Var) seq
713   for(unsigned i = 0; i < 5; ++i);
714   // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}
715 #pragma acc parallel loop present_or_copyin(Var) seq
716   for(unsigned i = 0; i < 5; ++i);
717 #pragma acc parallel loop create(Var) seq
718   for(unsigned i = 0; i < 5; ++i);
719   // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}
720 #pragma acc parallel loop pcreate(Var) seq
721   for(unsigned i = 0; i < 5; ++i);
722   // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}
723 #pragma acc parallel loop present_or_create(Var) seq
724   for(unsigned i = 0; i < 5; ++i);
725 #pragma acc parallel loop reduction(+:Var) seq
726   for(unsigned i = 0; i < 5; ++i);
727 #pragma acc parallel loop collapse(1) seq
728   for(unsigned i = 0; i < 5; ++i);
729   // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}}
730 #pragma acc parallel loop bind(Var) seq
731   for(unsigned i = 0; i < 5; ++i);
732 #pragma acc parallel loop vector_length(1) seq
733   for(unsigned i = 0; i < 5; ++i);
734 #pragma acc parallel loop num_gangs(1) seq
735   for(unsigned i = 0; i < 5; ++i);
736 #pragma acc parallel loop num_workers(1) seq
737   for(unsigned i = 0; i < 5; ++i);
738   // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}}
739 #pragma acc parallel loop device_num(1) seq
740   for(unsigned i = 0; i < 5; ++i);
741   // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}}
742 #pragma acc parallel loop default_async(1) seq
743   for(unsigned i = 0; i < 5; ++i);
744 #pragma acc parallel loop device_type(*) seq
745   for(unsigned i = 0; i < 5; ++i);
746 #pragma acc parallel loop dtype(*) seq
747   for(unsigned i = 0; i < 5; ++i);
748 #pragma acc parallel loop async seq
749   for(unsigned i = 0; i < 5; ++i);
750 #pragma acc parallel loop tile(1+2, 1) seq
751   for(;;)
752     for(unsigned i = 0; i < 5; ++i);
753 #pragma acc parallel loop wait seq
754   for(unsigned i = 0; i < 5; ++i);
755 }
756