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
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
7 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp target parallel for simd'}}
8 #pragma omp target parallel for simd
10 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp target parallel for simd'}}
11 #pragma omp target parallel for simd foo
13 void test_no_clause(void) {
15 #pragma omp target parallel for simd
16 for (i
= 0; i
< 16; ++i
)
19 // expected-error@+2 {{statement after '#pragma omp target parallel for simd' must be a for loop}}
20 #pragma omp target parallel for simd
24 void test_branch_protected_scope(void) {
31 #pragma omp target parallel for simd
32 for (i
= 0; i
< 16; ++i
) {
34 goto L1
; // expected-error {{use of undeclared label 'L1'}}
36 return; // expected-error {{cannot return from OpenMP region}}
46 goto L2
; // expected-error {{use of undeclared label 'L2'}}
51 void test_invalid_clause(void) {
53 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
54 #pragma omp target parallel for simd foo bar
55 for (i
= 0; i
< 16; ++i
)
59 void test_non_identifiers(void) {
62 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
63 #pragma omp target parallel for simd;
64 for (i
= 0; i
< 16; ++i
)
67 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
68 #pragma omp target parallel for simd private(x);
69 for (i
= 0; i
< 16; ++i
)
72 // expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
73 #pragma omp target parallel for simd, private(x);
74 for (i
= 0; i
< 16; ++i
)
80 void test_collapse(void) {
82 // expected-error@+1 {{expected '('}}
83 #pragma omp target parallel for simd collapse
84 for (i
= 0; i
< 16; ++i
)
86 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
87 #pragma omp target parallel for simd collapse(
88 for (i
= 0; i
< 16; ++i
)
90 // expected-error@+1 {{expected expression}}
91 #pragma omp target parallel for simd collapse()
92 for (i
= 0; i
< 16; ++i
)
94 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
95 #pragma omp target parallel for simd collapse(,
96 for (i
= 0; i
< 16; ++i
)
98 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
99 #pragma omp target parallel for simd collapse(, )
100 for (i
= 0; i
< 16; ++i
)
102 // expected-warning@+2 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
103 // expected-error@+1 {{expected '('}}
104 #pragma omp target parallel for simd collapse 4)
105 for (i
= 0; i
< 16; ++i
)
107 // expected-error@+2 {{expected ')'}}
108 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
109 #pragma omp target parallel for simd collapse(4
110 for (i
= 0; i
< 16; ++i
)
111 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for 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 parallel for simd collapse(4,
115 for (i
= 0; i
< 16; ++i
)
116 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for 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 parallel for simd collapse(4, )
120 for (i
= 0; i
< 16; ++i
)
121 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}
122 // expected-note@+1 {{as specified in 'collapse' clause}}
123 #pragma omp target parallel for simd collapse(4)
124 for (i
= 0; i
< 16; ++i
)
125 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for 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 parallel for simd collapse(4 4)
129 for (i
= 0; i
< 16; ++i
)
130 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for 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 parallel for simd collapse(4, , 4)
134 for (i
= 0; i
< 16; ++i
)
135 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}
136 #pragma omp target parallel for 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
)
142 // expected-error@+2 {{expected ')'}}
143 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
144 #pragma omp target parallel for simd collapse(4, 8)
145 for (i
= 0; i
< 16; ++i
)
146 ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}
147 // expected-error@+1 {{integer constant expression}}
148 #pragma omp target parallel for simd collapse(2.5)
149 for (i
= 0; i
< 16; ++i
)
151 // expected-error@+1 {{integer constant expression}}
152 #pragma omp target parallel for simd collapse(foo())
153 for (i
= 0; i
< 16; ++i
)
155 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
156 #pragma omp target parallel for simd collapse(-5)
157 for (i
= 0; i
< 16; ++i
)
159 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
160 #pragma omp target parallel for simd collapse(0)
161 for (i
= 0; i
< 16; ++i
)
163 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
164 #pragma omp target parallel for simd collapse(5 - 5)
165 for (i
= 0; i
< 16; ++i
)
167 // expected-note@+1 {{defined as firstprivate}}
168 #pragma omp target parallel for simd collapse(2) firstprivate(i) // expected-note {{defined as firstprivate}}
169 for (i
= 0; i
< 16; ++i
) // expected-error {{loop iteration variable in the associated loop of 'omp target parallel for simd' directive may not be firstprivate, predetermined as lastprivate}}
170 // expected-note@+1 {{variable with automatic storage duration is predetermined as private; perhaps you forget to enclose 'omp for' directive into a parallel or another task region?}}
171 for (int j
= 0; j
< 16; ++j
)
172 // expected-error@+2 2 {{reduction variable must be shared}}
173 // expected-error@+1 {{OpenMP constructs may not be nested inside a simd region}}
174 #pragma omp for reduction(+ : i, j)
175 for (int k
= 0; k
< 16; ++k
)
179 void test_private(void) {
181 // expected-error@+2 {{expected expression}}
182 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
183 #pragma omp target parallel for simd private(
184 for (i
= 0; i
< 16; ++i
)
186 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
187 // expected-error@+1 2 {{expected expression}}
188 #pragma omp target parallel for simd private(,
189 for (i
= 0; i
< 16; ++i
)
191 // expected-error@+1 2 {{expected expression}}
192 #pragma omp target parallel for simd private(, )
193 for (i
= 0; i
< 16; ++i
)
195 // expected-error@+1 {{expected expression}}
196 #pragma omp target parallel for simd private()
197 for (i
= 0; i
< 16; ++i
)
199 // expected-error@+1 {{expected expression}}
200 #pragma omp target parallel for simd private(int)
201 for (i
= 0; i
< 16; ++i
)
203 // expected-error@+1 {{expected variable name}}
204 #pragma omp target parallel for simd private(0)
205 for (i
= 0; i
< 16; ++i
)
209 #pragma omp target parallel for simd private(x)
210 for (i
= 0; i
< 16; ++i
)
212 #pragma omp target parallel for simd private(x, y)
213 for (i
= 0; i
< 16; ++i
)
215 #pragma omp target parallel for simd private(x, y, z)
216 for (i
= 0; i
< 16; ++i
) {
221 void test_lastprivate(void) {
223 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
224 // expected-error@+1 {{expected expression}}
225 #pragma omp target parallel for simd lastprivate(
226 for (i
= 0; i
< 16; ++i
)
229 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
230 // expected-error@+1 2 {{expected expression}}
231 #pragma omp target parallel for simd lastprivate(,
232 for (i
= 0; i
< 16; ++i
)
234 // expected-error@+1 2 {{expected expression}}
235 #pragma omp target parallel for simd lastprivate(, )
236 for (i
= 0; i
< 16; ++i
)
238 // expected-error@+1 {{expected expression}}
239 #pragma omp target parallel for simd lastprivate()
240 for (i
= 0; i
< 16; ++i
)
242 // expected-error@+1 {{expected expression}}
243 #pragma omp target parallel for simd lastprivate(int)
244 for (i
= 0; i
< 16; ++i
)
246 // expected-error@+1 {{expected variable name}}
247 #pragma omp target parallel for simd lastprivate(0)
248 for (i
= 0; i
< 16; ++i
)
252 #pragma omp target parallel for simd lastprivate(x)
253 for (i
= 0; i
< 16; ++i
)
255 #pragma omp target parallel for simd lastprivate(x, y)
256 for (i
= 0; i
< 16; ++i
)
258 #pragma omp target parallel for simd lastprivate(x, y, z)
259 for (i
= 0; i
< 16; ++i
)
263 void test_firstprivate(void) {
265 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
266 // expected-error@+1 {{expected expression}}
267 #pragma omp target parallel for simd firstprivate(
268 for (i
= 0; i
< 16; ++i
)
271 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
272 // expected-error@+1 2 {{expected expression}}
273 #pragma omp target parallel for simd firstprivate(,
274 for (i
= 0; i
< 16; ++i
)
276 // expected-error@+1 2 {{expected expression}}
277 #pragma omp target parallel for simd firstprivate(, )
278 for (i
= 0; i
< 16; ++i
)
280 // expected-error@+1 {{expected expression}}
281 #pragma omp target parallel for simd firstprivate()
282 for (i
= 0; i
< 16; ++i
)
284 // expected-error@+1 {{expected expression}}
285 #pragma omp target parallel for simd firstprivate(int)
286 for (i
= 0; i
< 16; ++i
)
288 // expected-error@+1 {{expected variable name}}
289 #pragma omp target parallel for simd firstprivate(0)
290 for (i
= 0; i
< 16; ++i
)
294 #pragma omp target parallel for simd lastprivate(x) firstprivate(x)
295 for (i
= 0; i
< 16; ++i
)
297 #pragma omp target parallel for simd lastprivate(x, y) firstprivate(x, y)
298 for (i
= 0; i
< 16; ++i
)
300 #pragma omp target parallel for simd lastprivate(x, y, z) firstprivate(x, y, z)
301 for (i
= 0; i
< 16; ++i
)
305 void test_loop_messages(void) {
306 float a
[100], b
[100], c
[100];
307 // expected-error@+2 {{variable must be of integer or pointer type}}
308 #pragma omp target parallel for simd
309 for (float fi
= 0; fi
< 10.0; fi
++) {
310 c
[(int)fi
] = a
[(int)fi
] + b
[(int)fi
];
312 // expected-error@+2 {{variable must be of integer or pointer type}}
313 #pragma omp target parallel for simd
314 for (double fi
= 0; fi
< 10.0; fi
++) {
315 c
[(int)fi
] = a
[(int)fi
] + b
[(int)fi
];
319 void test_safelen(void) {
321 // expected-error@+1 {{expected '('}}
322 #pragma omp target parallel for simd safelen
323 for (i
= 0; i
< 16; ++i
)
325 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
326 #pragma omp target parallel for simd safelen(
327 for (i
= 0; i
< 16; ++i
)
329 // expected-error@+1 {{expected expression}}
330 #pragma omp target parallel for simd safelen()
331 for (i
= 0; i
< 16; ++i
)
333 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
334 #pragma omp target parallel for simd safelen(,
335 for (i
= 0; i
< 16; ++i
)
337 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
338 #pragma omp target parallel for simd safelen(, )
339 for (i
= 0; i
< 16; ++i
)
341 // expected-warning@+2 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
342 // expected-error@+1 {{expected '('}}
343 #pragma omp target parallel for simd safelen 4)
344 for (i
= 0; i
< 16; ++i
)
346 // expected-error@+2 {{expected ')'}}
347 // expected-note@+1 {{to match this '('}}
348 #pragma omp target parallel for simd safelen(4
349 for (i
= 0; i
< 16; ++i
)
351 // expected-error@+2 {{expected ')'}}
352 // expected-note@+1 {{to match this '('}}
353 #pragma omp target parallel for simd safelen(4,
354 for (i
= 0; i
< 16; ++i
)
356 // expected-error@+2 {{expected ')'}}
357 // expected-note@+1 {{to match this '('}}
358 #pragma omp target parallel for simd safelen(4, )
359 for (i
= 0; i
< 16; ++i
)
361 #pragma omp target parallel for simd safelen(4)
362 for (i
= 0; i
< 16; ++i
)
364 // expected-error@+2 {{expected ')'}}
365 // expected-note@+1 {{to match this '('}}
366 #pragma omp target parallel for simd safelen(4 4)
367 for (i
= 0; i
< 16; ++i
)
369 // expected-error@+2 {{expected ')'}}
370 // expected-note@+1 {{to match this '('}}
371 #pragma omp target parallel for simd safelen(4, , 4)
372 for (i
= 0; i
< 16; ++i
)
374 #pragma omp target parallel for simd safelen(4)
375 for (i
= 0; i
< 16; ++i
)
377 // expected-error@+2 {{expected ')'}}
378 // expected-note@+1 {{to match this '('}}
379 #pragma omp target parallel for simd safelen(4, 8)
380 for (i
= 0; i
< 16; ++i
)
382 // expected-error@+1 {{integer constant expression}}
383 #pragma omp target parallel for simd safelen(2.5)
384 for (i
= 0; i
< 16; ++i
)
386 // expected-error@+1 {{integer constant expression}}
387 #pragma omp target parallel for simd safelen(foo())
388 for (i
= 0; i
< 16; ++i
)
390 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
391 #pragma omp target parallel for simd safelen(-5)
392 for (i
= 0; i
< 16; ++i
)
394 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
395 #pragma omp target parallel for simd safelen(0)
396 for (i
= 0; i
< 16; ++i
)
398 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
399 #pragma omp target parallel for simd safelen(5 - 5)
400 for (i
= 0; i
< 16; ++i
)
404 void test_simdlen(void) {
406 // expected-error@+1 {{expected '('}}
407 #pragma omp target parallel for simd simdlen
408 for (i
= 0; i
< 16; ++i
)
410 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
411 #pragma omp target parallel for simd simdlen(
412 for (i
= 0; i
< 16; ++i
)
414 // expected-error@+1 {{expected expression}}
415 #pragma omp target parallel for simd simdlen()
416 for (i
= 0; i
< 16; ++i
)
418 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
419 #pragma omp target parallel for simd simdlen(,
420 for (i
= 0; i
< 16; ++i
)
422 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
423 #pragma omp target parallel for simd simdlen(, )
424 for (i
= 0; i
< 16; ++i
)
426 // expected-warning@+2 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
427 // expected-error@+1 {{expected '('}}
428 #pragma omp target parallel for simd simdlen 4)
429 for (i
= 0; i
< 16; ++i
)
431 // expected-error@+2 {{expected ')'}}
432 // expected-note@+1 {{to match this '('}}
433 #pragma omp target parallel for simd simdlen(4
434 for (i
= 0; i
< 16; ++i
)
436 // expected-error@+2 {{expected ')'}}
437 // expected-note@+1 {{to match this '('}}
438 #pragma omp target parallel for simd simdlen(4,
439 for (i
= 0; i
< 16; ++i
)
441 // expected-error@+2 {{expected ')'}}
442 // expected-note@+1 {{to match this '('}}
443 #pragma omp target parallel for simd simdlen(4, )
444 for (i
= 0; i
< 16; ++i
)
446 #pragma omp target parallel for simd simdlen(4)
447 for (i
= 0; i
< 16; ++i
)
449 // expected-error@+2 {{expected ')'}}
450 // expected-note@+1 {{to match this '('}}
451 #pragma omp target parallel for simd simdlen(4 4)
452 for (i
= 0; i
< 16; ++i
)
454 // expected-error@+2 {{expected ')'}}
455 // expected-note@+1 {{to match this '('}}
456 #pragma omp target parallel for simd simdlen(4, , 4)
457 for (i
= 0; i
< 16; ++i
)
459 #pragma omp target parallel for simd simdlen(4)
460 for (i
= 0; i
< 16; ++i
)
462 // expected-error@+2 {{expected ')'}}
463 // expected-note@+1 {{to match this '('}}
464 #pragma omp target parallel for simd simdlen(4, 8)
465 for (i
= 0; i
< 16; ++i
)
467 // expected-error@+1 {{integer constant expression}}
468 #pragma omp target parallel for simd simdlen(2.5)
469 for (i
= 0; i
< 16; ++i
)
471 // expected-error@+1 {{integer constant expression}}
472 #pragma omp target parallel for simd simdlen(foo())
473 for (i
= 0; i
< 16; ++i
)
475 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
476 #pragma omp target parallel for simd simdlen(-5)
477 for (i
= 0; i
< 16; ++i
)
479 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
480 #pragma omp target parallel for simd simdlen(0)
481 for (i
= 0; i
< 16; ++i
)
483 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
484 #pragma omp target parallel for simd simdlen(5 - 5)
485 for (i
= 0; i
< 16; ++i
)
489 void test_safelen_simdlen(void) {
491 // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
492 #pragma omp target parallel for simd simdlen(6) safelen(5)
493 for (i
= 0; i
< 16; ++i
)
495 // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
496 #pragma omp target parallel for simd safelen(5) simdlen(6)
497 for (i
= 0; i
< 16; ++i
)
501 void test_nontemporal(void) {
503 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
504 #pragma omp target parallel for simd nontemporal(
505 for (i
= 0; i
< 16; ++i
)
507 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
508 #pragma omp target parallel for simd nontemporal(,
509 for (i
= 0; i
< 16; ++i
)
511 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 2 {{expected expression}}
512 #pragma omp target parallel for simd nontemporal(, )
513 for (i
= 0; i
< 16; ++i
)
515 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected expression}}
516 #pragma omp target parallel for simd nontemporal()
517 for (i
= 0; i
< 16; ++i
)
519 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected expression}}
520 #pragma omp target parallel for simd nontemporal(int)
521 for (i
= 0; i
< 16; ++i
)
523 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} omp51-error@+1 {{expected variable name}}
524 #pragma omp target parallel for simd nontemporal(0)
525 for (i
= 0; i
< 16; ++i
)
527 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}
528 #pragma omp target parallel for simd nontemporal(x)
529 for (i
= 0; i
< 16; ++i
)
531 // expected-error@+2 {{use of undeclared identifier 'x'}}
532 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}
533 #pragma omp target parallel for simd nontemporal(x, y)
534 for (i
= 0; i
< 16; ++i
)
536 // expected-error@+3 {{use of undeclared identifier 'x'}}
537 // expected-error@+2 {{use of undeclared identifier 'y'}}
538 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}
539 #pragma omp target parallel for simd nontemporal(x, y, z)
540 for (i
= 0; i
< 16; ++i
)
544 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
545 #pragma omp target parallel for simd nontemporal(x :)
546 for (i
= 0; i
< 16; ++i
)
548 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}
549 #pragma omp target parallel for simd nontemporal(x :, )
550 for (i
= 0; i
< 16; ++i
)
553 // omp51-note@+2 {{defined as nontemporal}}
554 // omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} omp51-error@+1 {{a variable cannot appear in more than one nontemporal clause}}
555 #pragma omp target parallel for simd nontemporal(x) nontemporal(x)
556 for (i
= 0; i
< 16; ++i
)
559 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}
560 #pragma omp target parallel for simd private(x) nontemporal(x)
561 for (i
= 0; i
< 16; ++i
)
564 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}
565 #pragma omp target parallel for simd nontemporal(x) private(x)
566 for (i
= 0; i
< 16; ++i
)
569 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}
570 #pragma omp target parallel for simd nontemporal(x, y : 0)
571 for (i
= 0; i
< 16; ++i
)
574 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}
575 #pragma omp target parallel for simd nontemporal(x) lastprivate(x)
576 for (i
= 0; i
< 16; ++i
)
579 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}
580 #pragma omp target parallel for simd lastprivate(x) nontemporal(x)
581 for (i
= 0; i
< 16; ++i
)