xref: /llvm-project/clang/test/OpenMP/target_simd_misc_messages.c (revision 0c6f2f629cc0017361310fa4c132090413a874db)
1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized
2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp51 %s -Wuninitialized
3 
4 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized
5 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp51 %s -Wuninitialized
6 
7 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp target simd'}}
8 #pragma omp target simd
9 
10 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp target simd'}}
11 #pragma omp target simd foo
12 
test_no_clause(void)13 void test_no_clause(void) {
14   int i;
15 #pragma omp target simd
16   for (i = 0; i < 16; ++i)
17     ;
18 
19 // expected-error@+2 {{statement after '#pragma omp target simd' must be a for loop}}
20 #pragma omp target simd
21   ++i;
22 }
23 
test_branch_protected_scope(void)24 void test_branch_protected_scope(void) {
25   int i = 0;
26 L1:
27   ++i;
28 
29   int x[24];
30 
31 #pragma omp target simd
32   for (i = 0; i < 16; ++i) {
33     if (i == 5)
34       goto L1; // expected-error {{use of undeclared label 'L1'}}
35     else if (i == 6)
36       return; // expected-error {{cannot return from OpenMP region}}
37     else if (i == 7)
38       goto L2;
39     else if (i == 8) {
40     L2:
41       x[i]++;
42     }
43   }
44 
45   if (x[0] == 0)
46     goto L2; // expected-error {{use of undeclared label 'L2'}}
47   else if (x[1] == 1)
48     goto L1;
49 }
50 
test_invalid_clause(void)51 void test_invalid_clause(void) {
52   int i;
53 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
54 #pragma omp target simd foo bar
55   for (i = 0; i < 16; ++i)
56     ;
57 }
58 
test_non_identifiers(void)59 void test_non_identifiers(void) {
60   int i, x;
61 
62 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
63 #pragma omp target simd;
64   for (i = 0; i < 16; ++i)
65     ;
66 
67 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
68 #pragma omp target simd private(x);
69   for (i = 0; i < 16; ++i)
70     ;
71 
72 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
73 #pragma omp target simd, private(x);
74   for (i = 0; i < 16; ++i)
75     ;
76 }
77 
78 extern int foo(void);
79 
test_collapse(void)80 void test_collapse(void) {
81   int i;
82 // expected-error@+1 {{expected '('}}
83 #pragma omp target simd collapse
84   for (i = 0; i < 16; ++i)
85     ;
86 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
87 #pragma omp target simd collapse(
88   for (i = 0; i < 16; ++i)
89     ;
90 // expected-error@+1 {{expected expression}}
91 #pragma omp target simd collapse()
92   for (i = 0; i < 16; ++i)
93     ;
94 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
95 #pragma omp target simd collapse(,
96   for (i = 0; i < 16; ++i)
97     ;
98 // expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
99 #pragma omp target simd collapse(, )
100   for (i = 0; i < 16; ++i)
101     ;
102 // expected-warning@+2 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
103 // expected-error@+1 {{expected '('}}
104 #pragma omp target simd collapse 4)
105   for (i = 0; i < 16; ++i)
106     ;
107 // expected-error@+2 {{expected ')'}}
108 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
109 #pragma omp target simd collapse(4
110   for (i = 0; i < 16; ++i)
111     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
112 // expected-error@+2 {{expected ')'}}
113 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
114 #pragma omp target simd collapse(4,
115   for (i = 0; i < 16; ++i)
116     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
117 // expected-error@+2 {{expected ')'}}
118 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
119 #pragma omp target simd collapse(4, )
120   for (i = 0; i < 16; ++i)
121     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
122 // expected-note@+1 {{as specified in 'collapse' clause}}
123 #pragma omp target simd collapse(4)
124   for (i = 0; i < 16; ++i)
125     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
126 // expected-error@+2 {{expected ')'}}
127 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
128 #pragma omp target simd collapse(4 4)
129   for (i = 0; i < 16; ++i)
130     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
131 // expected-error@+2 {{expected ')'}}
132 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
133 #pragma omp target simd collapse(4, , 4)
134   for (i = 0; i < 16; ++i)
135     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
136 #pragma omp target simd collapse(4)
137   for (int i1 = 0; i1 < 16; ++i1)
138     for (int i2 = 0; i2 < 16; ++i2)
139       for (int i3 = 0; i3 < 16; ++i3)
140         for (int i4 = 0; i4 < 16; ++i4)
141           foo();
142 // expected-error@+2 {{expected ')'}}
143 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
144 #pragma omp target simd collapse(4, 8)
145   for (i = 0; i < 16; ++i)
146     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
147 // expected-error@+1 {{integer constant expression}}
148 #pragma omp target simd collapse(2.5)
149   for (i = 0; i < 16; ++i)
150     ;
151 // expected-error@+1 {{integer constant expression}}
152 #pragma omp target simd collapse(foo())
153   for (i = 0; i < 16; ++i)
154     ;
155 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
156 #pragma omp target simd collapse(-5)
157   for (i = 0; i < 16; ++i)
158     ;
159 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
160 #pragma omp target simd collapse(0)
161   for (i = 0; i < 16; ++i)
162     ;
163 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
164 #pragma omp target simd collapse(5 - 5)
165   for (i = 0; i < 16; ++i)
166     ;
167 }
168 
test_private(void)169 void test_private(void) {
170   int i;
171 // expected-error@+2 {{expected expression}}
172 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
173 #pragma omp target simd private(
174   for (i = 0; i < 16; ++i)
175     ;
176 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
177 // expected-error@+1 2 {{expected expression}}
178 #pragma omp target simd private(,
179   for (i = 0; i < 16; ++i)
180     ;
181 // expected-error@+1 2 {{expected expression}}
182 #pragma omp target simd private(, )
183   for (i = 0; i < 16; ++i)
184     ;
185 // expected-error@+1 {{expected expression}}
186 #pragma omp target simd private()
187   for (i = 0; i < 16; ++i)
188     ;
189 // expected-error@+1 {{expected expression}}
190 #pragma omp target simd private(int)
191   for (i = 0; i < 16; ++i)
192     ;
193 // expected-error@+1 {{expected variable name}}
194 #pragma omp target simd private(0)
195   for (i = 0; i < 16; ++i)
196     ;
197 
198   int x, y, z;
199 #pragma omp target simd private(x)
200   for (i = 0; i < 16; ++i)
201     ;
202 #pragma omp target simd private(x, y)
203   for (i = 0; i < 16; ++i)
204     ;
205 #pragma omp target simd private(x, y, z)
206   for (i = 0; i < 16; ++i) {
207     x = y * i + z;
208   }
209 }
210 
test_lastprivate(void)211 void test_lastprivate(void) {
212   int i;
213 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
214 // expected-error@+1 {{expected expression}}
215 #pragma omp target simd lastprivate(
216   for (i = 0; i < 16; ++i)
217     ;
218 
219 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
220 // expected-error@+1 2 {{expected expression}}
221 #pragma omp target simd lastprivate(,
222   for (i = 0; i < 16; ++i)
223     ;
224 // expected-error@+1 2 {{expected expression}}
225 #pragma omp target simd lastprivate(, )
226   for (i = 0; i < 16; ++i)
227     ;
228 // expected-error@+1 {{expected expression}}
229 #pragma omp target simd lastprivate()
230   for (i = 0; i < 16; ++i)
231     ;
232 // expected-error@+1 {{expected expression}}
233 #pragma omp target simd lastprivate(int)
234   for (i = 0; i < 16; ++i)
235     ;
236 // expected-error@+1 {{expected variable name}}
237 #pragma omp target simd lastprivate(0)
238   for (i = 0; i < 16; ++i)
239     ;
240 
241   int x, y, z;
242 #pragma omp target simd lastprivate(x)
243   for (i = 0; i < 16; ++i)
244     ;
245 #pragma omp target simd lastprivate(x, y)
246   for (i = 0; i < 16; ++i)
247     ;
248 #pragma omp target simd lastprivate(x, y, z)
249   for (i = 0; i < 16; ++i)
250     ;
251 }
252 
test_firstprivate(void)253 void test_firstprivate(void) {
254   int i;
255 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
256 // expected-error@+1 {{expected expression}}
257 #pragma omp target simd firstprivate(
258   for (i = 0; i < 16; ++i)
259     ;
260 
261 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
262 // expected-error@+1 2 {{expected expression}}
263 #pragma omp target simd firstprivate(,
264   for (i = 0; i < 16; ++i)
265     ;
266 // expected-error@+1 2 {{expected expression}}
267 #pragma omp target simd firstprivate(, )
268   for (i = 0; i < 16; ++i)
269     ;
270 // expected-error@+1 {{expected expression}}
271 #pragma omp target simd firstprivate()
272   for (i = 0; i < 16; ++i)
273     ;
274 // expected-error@+1 {{expected expression}}
275 #pragma omp target simd firstprivate(int)
276   for (i = 0; i < 16; ++i)
277     ;
278 // expected-error@+1 {{expected variable name}}
279 #pragma omp target simd firstprivate(0)
280   for (i = 0; i < 16; ++i)
281     ;
282 
283   int x, y, z;
284 #pragma omp target simd lastprivate(x) firstprivate(x)
285   for (i = 0; i < 16; ++i)
286     ;
287 #pragma omp target simd lastprivate(x, y) firstprivate(x, y)
288   for (i = 0; i < 16; ++i)
289     ;
290 #pragma omp target simd lastprivate(x, y, z) firstprivate(x, y, z)
291   for (i = 0; i < 16; ++i)
292     ;
293 }
294 
test_loop_messages(void)295 void test_loop_messages(void) {
296   float a[100], b[100], c[100];
297 // expected-error@+2 {{variable must be of integer or pointer type}}
298 #pragma omp target simd
299   for (float fi = 0; fi < 10.0; fi++) {
300     c[(int)fi] = a[(int)fi] + b[(int)fi];
301   }
302 // expected-error@+2 {{variable must be of integer or pointer type}}
303 #pragma omp target simd
304   for (double fi = 0; fi < 10.0; fi++) {
305     c[(int)fi] = a[(int)fi] + b[(int)fi];
306   }
307 }
308 
test_safelen(void)309 void test_safelen(void) {
310   int i;
311 // expected-error@+1 {{expected '('}}
312 #pragma omp target simd safelen
313   for (i = 0; i < 16; ++i)
314     ;
315 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
316 #pragma omp target simd safelen(
317   for (i = 0; i < 16; ++i)
318     ;
319 // expected-error@+1 {{expected expression}}
320 #pragma omp target simd safelen()
321   for (i = 0; i < 16; ++i)
322     ;
323 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
324 #pragma omp target simd safelen(,
325   for (i = 0; i < 16; ++i)
326     ;
327 // expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
328 #pragma omp target simd safelen(, )
329   for (i = 0; i < 16; ++i)
330     ;
331 // expected-warning@+2 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
332 // expected-error@+1 {{expected '('}}
333 #pragma omp target simd safelen 4)
334   for (i = 0; i < 16; ++i)
335     ;
336 // expected-error@+2 {{expected ')'}}
337 // expected-note@+1 {{to match this '('}}
338 #pragma omp target simd safelen(4
339   for (i = 0; i < 16; ++i)
340     ;
341 // expected-error@+2 {{expected ')'}}
342 // expected-note@+1 {{to match this '('}}
343 #pragma omp target simd safelen(4,
344   for (i = 0; i < 16; ++i)
345     ;
346 // expected-error@+2 {{expected ')'}}
347 // expected-note@+1 {{to match this '('}}
348 #pragma omp target simd safelen(4, )
349   for (i = 0; i < 16; ++i)
350     ;
351 #pragma omp target simd safelen(4)
352   for (i = 0; i < 16; ++i)
353     ;
354 // expected-error@+2 {{expected ')'}}
355 // expected-note@+1 {{to match this '('}}
356 #pragma omp target simd safelen(4 4)
357   for (i = 0; i < 16; ++i)
358     ;
359 // expected-error@+2 {{expected ')'}}
360 // expected-note@+1 {{to match this '('}}
361 #pragma omp target simd safelen(4, , 4)
362   for (i = 0; i < 16; ++i)
363     ;
364 #pragma omp target simd safelen(4)
365   for (i = 0; i < 16; ++i)
366     ;
367 // expected-error@+2 {{expected ')'}}
368 // expected-note@+1 {{to match this '('}}
369 #pragma omp target simd safelen(4, 8)
370   for (i = 0; i < 16; ++i)
371     ;
372 // expected-error@+1 {{integer constant expression}}
373 #pragma omp target simd safelen(2.5)
374   for (i = 0; i < 16; ++i)
375     ;
376 // expected-error@+1 {{integer constant expression}}
377 #pragma omp target simd safelen(foo())
378   for (i = 0; i < 16; ++i)
379     ;
380 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
381 #pragma omp target simd safelen(-5)
382   for (i = 0; i < 16; ++i)
383     ;
384 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
385 #pragma omp target simd safelen(0)
386   for (i = 0; i < 16; ++i)
387     ;
388 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
389 #pragma omp target simd safelen(5 - 5)
390   for (i = 0; i < 16; ++i)
391     ;
392 }
393 
test_simdlen(void)394 void test_simdlen(void) {
395   int i;
396 // expected-error@+1 {{expected '('}}
397 #pragma omp target simd simdlen
398   for (i = 0; i < 16; ++i)
399     ;
400 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
401 #pragma omp target simd simdlen(
402   for (i = 0; i < 16; ++i)
403     ;
404 // expected-error@+1 {{expected expression}}
405 #pragma omp target simd simdlen()
406   for (i = 0; i < 16; ++i)
407     ;
408 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
409 #pragma omp target simd simdlen(,
410   for (i = 0; i < 16; ++i)
411     ;
412 // expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
413 #pragma omp target simd simdlen(, )
414   for (i = 0; i < 16; ++i)
415     ;
416 // expected-warning@+2 {{extra tokens at the end of '#pragma omp target simd' are ignored}}
417 // expected-error@+1 {{expected '('}}
418 #pragma omp target simd simdlen 4)
419   for (i = 0; i < 16; ++i)
420     ;
421 // expected-error@+2 {{expected ')'}}
422 // expected-note@+1 {{to match this '('}}
423 #pragma omp target simd simdlen(4
424   for (i = 0; i < 16; ++i)
425     ;
426 // expected-error@+2 {{expected ')'}}
427 // expected-note@+1 {{to match this '('}}
428 #pragma omp target simd simdlen(4,
429   for (i = 0; i < 16; ++i)
430     ;
431 // expected-error@+2 {{expected ')'}}
432 // expected-note@+1 {{to match this '('}}
433 #pragma omp target simd simdlen(4, )
434   for (i = 0; i < 16; ++i)
435     ;
436 #pragma omp target simd simdlen(4)
437   for (i = 0; i < 16; ++i)
438     ;
439 // expected-error@+2 {{expected ')'}}
440 // expected-note@+1 {{to match this '('}}
441 #pragma omp target simd simdlen(4 4)
442   for (i = 0; i < 16; ++i)
443     ;
444 // expected-error@+2 {{expected ')'}}
445 // expected-note@+1 {{to match this '('}}
446 #pragma omp target simd simdlen(4, , 4)
447   for (i = 0; i < 16; ++i)
448     ;
449 #pragma omp target simd simdlen(4)
450   for (i = 0; i < 16; ++i)
451     ;
452 // expected-error@+2 {{expected ')'}}
453 // expected-note@+1 {{to match this '('}}
454 #pragma omp target simd simdlen(4, 8)
455   for (i = 0; i < 16; ++i)
456     ;
457 // expected-error@+1 {{integer constant expression}}
458 #pragma omp target simd simdlen(2.5)
459   for (i = 0; i < 16; ++i)
460     ;
461 // expected-error@+1 {{integer constant expression}}
462 #pragma omp target simd simdlen(foo())
463   for (i = 0; i < 16; ++i)
464     ;
465 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
466 #pragma omp target simd simdlen(-5)
467   for (i = 0; i < 16; ++i)
468     ;
469 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
470 #pragma omp target simd simdlen(0)
471   for (i = 0; i < 16; ++i)
472     ;
473 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
474 #pragma omp target simd simdlen(5 - 5)
475   for (i = 0; i < 16; ++i)
476     ;
477 }
478 
test_safelen_simdlen(void)479 void test_safelen_simdlen(void) {
480   int i;
481 // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
482 #pragma omp target simd simdlen(6) safelen(5)
483   for (i = 0; i < 16; ++i)
484     ;
485 // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
486 #pragma omp target simd safelen(5) simdlen(6)
487   for (i = 0; i < 16; ++i)
488     ;
489 }
490 
test_nontemporal(void)491 void test_nontemporal(void) {
492   int i;
493 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
494 #pragma omp target simd nontemporal(
495   for (i = 0; i < 16; ++i)
496     ;
497 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
498 #pragma omp target simd nontemporal(,
499   for (i = 0; i < 16; ++i)
500     ;
501 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 2 {{expected expression}}
502 #pragma omp target simd nontemporal(, )
503   for (i = 0; i < 16; ++i)
504     ;
505 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}}
506 #pragma omp target simd nontemporal()
507   for (i = 0; i < 16; ++i)
508     ;
509 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}}
510 #pragma omp target simd nontemporal(int)
511   for (i = 0; i < 16; ++i)
512     ;
513 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} omp51-error@+1 {{expected variable name}}
514 #pragma omp target simd nontemporal(0)
515   for (i = 0; i < 16; ++i)
516     ;
517 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}
518 #pragma omp target simd nontemporal(x)
519   for (i = 0; i < 16; ++i)
520     ;
521 // expected-error@+2 {{use of undeclared identifier 'x'}}
522 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}
523 #pragma omp target simd nontemporal(x, y)
524   for (i = 0; i < 16; ++i)
525     ;
526 // expected-error@+3 {{use of undeclared identifier 'x'}}
527 // expected-error@+2 {{use of undeclared identifier 'y'}}
528 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}
529 #pragma omp target simd nontemporal(x, y, z)
530   for (i = 0; i < 16; ++i)
531     ;
532 
533   int x, y;
534 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
535 #pragma omp target simd nontemporal(x :)
536   for (i = 0; i < 16; ++i)
537     ;
538 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}
539 #pragma omp target simd nontemporal(x :, )
540   for (i = 0; i < 16; ++i)
541     ;
542 
543 // omp51-note@+2 {{defined as nontemporal}}
544 // omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} omp51-error@+1 {{a variable cannot appear in more than one nontemporal clause}}
545 #pragma omp target simd nontemporal(x) nontemporal(x)
546   for (i = 0; i < 16; ++i)
547     ;
548 
549 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}
550 #pragma omp target simd private(x) nontemporal(x)
551   for (i = 0; i < 16; ++i)
552     ;
553 
554 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}
555 #pragma omp target simd nontemporal(x) private(x)
556   for (i = 0; i < 16; ++i)
557     ;
558 
559 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}
560 #pragma omp target simd nontemporal(x, y : 0)
561   for (i = 0; i < 16; ++i)
562     ;
563 
564 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}
565 #pragma omp target simd nontemporal(x) lastprivate(x)
566   for (i = 0; i < 16; ++i)
567     ;
568 
569 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}
570 #pragma omp target simd lastprivate(x) nontemporal(x)
571   for (i = 0; i < 16; ++i)
572     ;
573 }
574 
575