[Github] Label lldb-dap PRs (#125139)
[llvm-project.git] / clang / test / OpenMP / distribute_simd_misc_messages.c
blob8cbf96cd7a014b95e5d803b34ed41e0e7261965f
1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized
2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=50 -verify=expected,omp50,omp-50-and-later,omp-50-and-later-temporal,omp50-temporal,omp50-and-later-var %s -Wuninitialized
3 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=60 -verify=expected,omp60,omp-clause,omp-50-and-later,omp-50-and-later-temporal,omp50-temporal,omp50-and-later-var %s -Wuninitialized
4 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp51,omp-clause,omp-50-and-later,omp-50-and-later-temporal,omp50-temporal,omp50-and-later-var %s -Wuninitialized
6 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized
7 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50,omp-50-and-later,omp-50-and-later-temporal,omp50-temporal,omp50-and-later-var %s -Wuninitialized
8 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=60 -verify=expected,omp60,omp-clause,omp-50-and-later,omp-50-and-later-temporal,omp50-temporal,omp50-and-later-var %s -Wuninitialized
9 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp51,omp-clause,omp-50-and-later,omp-50-and-later-temporal,omp50-temporal,omp50-and-later-var %s -Wuninitialized
11 void xxx(int argc) {
12 // expected-note@+1 {{initialize the variable 'x' to silence this warning}}
13 int x;
14 #pragma omp distribute simd
15 for (int i = 0; i < 10; ++i)
16 // expected-warning@+1 {{variable 'x' is uninitialized when used here}}
17 argc = x;
20 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp distribute simd'}}
21 #pragma omp distribute simd
23 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp distribute simd'}}
24 #pragma omp distribute simd foo
26 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp distribute simd'}}
27 #pragma omp distribute simd safelen(4)
29 void test_no_clause(void) {
30 int i;
31 #pragma omp target
32 #pragma omp teams
33 #pragma omp distribute simd
34 for (i = 0; i < 16; ++i)
37 #pragma omp target
38 #pragma omp teams
39 // expected-error@+2 {{statement after '#pragma omp distribute simd' must be a for loop}}
40 #pragma omp distribute simd
41 ++i;
44 void test_branch_protected_scope(void) {
45 int i = 0;
46 L1:
47 ++i;
49 int x[24];
51 #pragma omp target
52 #pragma omp teams
53 #pragma omp distribute simd
54 for (i = 0; i < 16; ++i) {
55 if (i == 5)
56 // expected-error@+1 {{use of undeclared label 'L1'}}
57 goto L1;
58 else if (i == 6)
59 // expected-error@+1 {{cannot return from OpenMP region}}
60 return;
61 else if (i == 7)
62 goto L2;
63 else if (i == 8) {
64 L2:
65 x[i]++;
69 if (x[0] == 0)
70 // expected-error@+1 {{use of undeclared label 'L2'}}
71 goto L2;
72 else if (x[1] == 1)
73 goto L1;
76 void test_invalid_clause(void) {
77 int i;
78 #pragma omp target
79 #pragma omp teams
80 // expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
81 #pragma omp distribute simd foo bar
82 for (i = 0; i < 16; ++i)
86 void test_non_identifiers(void) {
87 int i, x;
89 #pragma omp target
90 #pragma omp teams
91 // expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
92 #pragma omp distribute simd;
93 for (i = 0; i < 16; ++i)
96 #pragma omp target
97 #pragma omp teams
98 // expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
99 #pragma omp distribute simd private(x);
100 for (i = 0; i < 16; ++i)
103 #pragma omp target
104 #pragma omp teams
105 // expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
106 #pragma omp distribute simd, private(x);
107 for (i = 0; i < 16; ++i)
111 extern int foo(void);
112 void test_safelen(void) {
113 int i;
114 #pragma omp target
115 #pragma omp teams
116 // expected-error@+1 {{expected '('}}
117 #pragma omp distribute simd safelen
118 for (i = 0; i < 16; ++i)
120 #pragma omp target
121 #pragma omp teams
122 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
123 #pragma omp distribute simd safelen(
124 for (i = 0; i < 16; ++i)
126 #pragma omp target
127 #pragma omp teams
128 // expected-error@+1 {{expected expression}}
129 #pragma omp distribute simd safelen()
130 for (i = 0; i < 16; ++i)
132 #pragma omp target
133 #pragma omp teams
134 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
135 #pragma omp distribute simd safelen(,
136 for (i = 0; i < 16; ++i)
138 #pragma omp target
139 #pragma omp teams
140 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
141 #pragma omp distribute simd safelen(, )
142 for (i = 0; i < 16; ++i)
144 #pragma omp target
145 #pragma omp teams
146 // expected-warning@+2 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
147 // expected-error@+1 {{expected '('}}
148 #pragma omp distribute simd safelen 4)
149 for (i = 0; i < 16; ++i)
151 #pragma omp target
152 #pragma omp teams
153 // expected-error@+2 {{expected ')'}}
154 // expected-note@+1 {{to match this '('}}
155 #pragma omp distribute simd safelen(4
156 for (i = 0; i < 16; ++i)
158 #pragma omp target
159 #pragma omp teams
160 // expected-error@+2 {{expected ')'}}
161 // expected-note@+1 {{to match this '('}}
162 #pragma omp distribute simd safelen(4,
163 for (i = 0; i < 16; ++i)
165 #pragma omp target
166 #pragma omp teams
167 // expected-error@+2 {{expected ')'}}
168 // expected-note@+1 {{to match this '('}}
169 #pragma omp distribute simd safelen(4, )
170 for (i = 0; i < 16; ++i)
172 #pragma omp target
173 #pragma omp teams
174 // xxpected-error@+1 {{expected expression}}
175 #pragma omp distribute simd safelen(4)
176 for (i = 0; i < 16; ++i)
178 #pragma omp target
179 #pragma omp teams
180 // expected-error@+2 {{expected ')'}}
181 // expected-note@+1 {{to match this '('}}
182 #pragma omp distribute simd safelen(4 4)
183 for (i = 0; i < 16; ++i)
185 #pragma omp target
186 #pragma omp teams
187 // expected-error@+2 {{expected ')'}}
188 // expected-note@+1 {{to match this '('}}
189 #pragma omp distribute simd safelen(4, , 4)
190 for (i = 0; i < 16; ++i)
192 #pragma omp target
193 #pragma omp teams
194 #pragma omp distribute simd safelen(4)
195 for (i = 0; i < 16; ++i)
197 #pragma omp target
198 #pragma omp teams
199 // expected-error@+2 {{expected ')'}}
200 // expected-note@+1 {{to match this '('}}
201 #pragma omp distribute simd safelen(4, 8)
202 for (i = 0; i < 16; ++i)
204 #pragma omp target
205 #pragma omp teams
206 // expected-error@+1 {{integer constant expression}}
207 #pragma omp distribute simd safelen(2.5)
208 for (i = 0; i < 16; ++i)
210 #pragma omp target
211 #pragma omp teams
212 // expected-error@+1 {{integer constant expression}}
213 #pragma omp distribute simd safelen(foo())
214 for (i = 0; i < 16; ++i)
216 #pragma omp target
217 #pragma omp teams
218 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
219 #pragma omp distribute simd safelen(-5)
220 for (i = 0; i < 16; ++i)
222 #pragma omp target
223 #pragma omp teams
224 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
225 #pragma omp distribute simd safelen(0)
226 for (i = 0; i < 16; ++i)
228 #pragma omp target
229 #pragma omp teams
230 // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}
231 #pragma omp distribute simd safelen(5 - 5)
232 for (i = 0; i < 16; ++i)
236 void test_simdlen(void) {
237 int i;
238 #pragma omp target
239 #pragma omp teams
240 // expected-error@+1 {{expected '('}}
241 #pragma omp distribute simd simdlen
242 for (i = 0; i < 16; ++i)
244 #pragma omp target
245 #pragma omp teams
246 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
247 #pragma omp distribute simd simdlen(
248 for (i = 0; i < 16; ++i)
250 #pragma omp target
251 #pragma omp teams
252 // expected-error@+1 {{expected expression}}
253 #pragma omp distribute simd simdlen()
254 for (i = 0; i < 16; ++i)
256 #pragma omp target
257 #pragma omp teams
258 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
259 #pragma omp distribute simd simdlen(,
260 for (i = 0; i < 16; ++i)
262 #pragma omp target
263 #pragma omp teams
264 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
265 #pragma omp distribute simd simdlen(, )
266 for (i = 0; i < 16; ++i)
268 #pragma omp target
269 #pragma omp teams
270 // expected-warning@+2 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
271 // expected-error@+1 {{expected '('}}
272 #pragma omp distribute simd simdlen 4)
273 for (i = 0; i < 16; ++i)
275 #pragma omp target
276 #pragma omp teams
277 // expected-error@+2 {{expected ')'}}
278 // expected-note@+1 {{to match this '('}}
279 #pragma omp distribute simd simdlen(4
280 for (i = 0; i < 16; ++i)
282 #pragma omp target
283 #pragma omp teams
284 // expected-error@+2 {{expected ')'}}
285 // expected-note@+1 {{to match this '('}}
286 #pragma omp distribute simd simdlen(4,
287 for (i = 0; i < 16; ++i)
289 #pragma omp target
290 #pragma omp teams
291 // expected-error@+2 {{expected ')'}}
292 // expected-note@+1 {{to match this '('}}
293 #pragma omp distribute simd simdlen(4, )
294 for (i = 0; i < 16; ++i)
296 #pragma omp target
297 #pragma omp teams
298 #pragma omp distribute simd simdlen(4)
299 for (i = 0; i < 16; ++i)
301 #pragma omp target
302 #pragma omp teams
303 // expected-error@+2 {{expected ')'}}
304 // expected-note@+1 {{to match this '('}}
305 #pragma omp distribute simd simdlen(4 4)
306 for (i = 0; i < 16; ++i)
308 #pragma omp target
309 #pragma omp teams
310 // expected-error@+2 {{expected ')'}}
311 // expected-note@+1 {{to match this '('}}
312 #pragma omp distribute simd simdlen(4, , 4)
313 for (i = 0; i < 16; ++i)
315 #pragma omp target
316 #pragma omp teams
317 #pragma omp distribute simd simdlen(4)
318 for (i = 0; i < 16; ++i)
320 #pragma omp target
321 #pragma omp teams
322 // expected-error@+2 {{expected ')'}}
323 // expected-note@+1 {{to match this '('}}
324 #pragma omp distribute simd simdlen(4, 8)
325 for (i = 0; i < 16; ++i)
327 #pragma omp target
328 #pragma omp teams
329 // expected-error@+1 {{integer constant expression}}
330 #pragma omp distribute simd simdlen(2.5)
331 for (i = 0; i < 16; ++i)
333 #pragma omp target
334 #pragma omp teams
335 // expected-error@+1 {{integer constant expression}}
336 #pragma omp distribute simd simdlen(foo())
337 for (i = 0; i < 16; ++i)
339 #pragma omp target
340 #pragma omp teams
341 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
342 #pragma omp distribute simd simdlen(-5)
343 for (i = 0; i < 16; ++i)
345 #pragma omp target
346 #pragma omp teams
347 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
348 #pragma omp distribute simd simdlen(0)
349 for (i = 0; i < 16; ++i)
351 #pragma omp target
352 #pragma omp teams
353 // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
354 #pragma omp distribute simd simdlen(5 - 5)
355 for (i = 0; i < 16; ++i)
359 void test_safelen_simdlen(void) {
360 int i;
361 #pragma omp target
362 #pragma omp teams
363 // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
364 #pragma omp distribute simd simdlen(6) safelen(5)
365 for (i = 0; i < 16; ++i)
368 #pragma omp target
369 #pragma omp teams
370 // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
371 #pragma omp distribute simd safelen(5) simdlen(6)
372 for (i = 0; i < 16; ++i)
376 void test_collapse(void) {
377 int i;
378 #pragma omp target
379 #pragma omp teams
380 // expected-error@+1 {{expected '('}}
381 #pragma omp distribute simd collapse
382 for (i = 0; i < 16; ++i)
384 #pragma omp target
385 #pragma omp teams
386 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
387 #pragma omp distribute simd collapse(
388 for (i = 0; i < 16; ++i)
390 #pragma omp target
391 #pragma omp teams
392 // expected-error@+1 {{expected expression}}
393 #pragma omp distribute simd collapse()
394 for (i = 0; i < 16; ++i)
396 #pragma omp target
397 #pragma omp teams
398 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
399 #pragma omp distribute simd collapse(,
400 for (i = 0; i < 16; ++i)
402 #pragma omp target
403 #pragma omp teams
404 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
405 #pragma omp distribute simd collapse(, )
406 for (i = 0; i < 16; ++i)
408 #pragma omp target
409 #pragma omp teams
410 // expected-warning@+2 {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}
411 // expected-error@+1 {{expected '('}}
412 #pragma omp distribute simd collapse 4)
413 for (i = 0; i < 16; ++i)
415 #pragma omp target
416 #pragma omp teams
417 // expected-error@+2 {{expected ')'}}
418 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
419 #pragma omp distribute simd collapse(4
420 for (i = 0; i < 16; ++i)
421 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
423 #pragma omp target
424 #pragma omp teams
425 // expected-error@+2 {{expected ')'}}
426 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
427 #pragma omp distribute simd collapse(4,
428 for (i = 0; i < 16; ++i)
429 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
431 #pragma omp target
432 #pragma omp teams
433 // expected-error@+2 {{expected ')'}}
434 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
435 #pragma omp distribute simd collapse(4, )
436 for (i = 0; i < 16; ++i)
437 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
439 #pragma omp target
440 #pragma omp teams
441 // expected-note@+1 {{as specified in 'collapse' clause}}
442 #pragma omp distribute simd collapse(4)
443 for (i = 0; i < 16; ++i)
444 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
446 #pragma omp target
447 #pragma omp teams
448 // expected-error@+3 {{expected ')'}}
449 // expected-note@+2 {{to match this '('}}
450 // expected-note@+1 {{as specified in 'collapse' clause}}
451 #pragma omp distribute simd collapse(4 4)
452 for (i = 0; i < 16; ++i)
453 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
455 #pragma omp target
456 #pragma omp teams
457 // expected-error@+3 {{expected ')'}}
458 // expected-note@+2 {{to match this '('}}
459 // expected-note@+1 {{as specified in 'collapse' clause}}
460 #pragma omp distribute simd collapse(4, , 4)
461 for (i = 0; i < 16; ++i)
462 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
464 #pragma omp target
465 #pragma omp teams
466 #pragma omp distribute simd collapse(4)
467 for (int i1 = 0; i1 < 16; ++i1)
468 for (int i2 = 0; i2 < 16; ++i2)
469 for (int i3 = 0; i3 < 16; ++i3)
470 for (int i4 = 0; i4 < 16; ++i4)
471 foo();
472 #pragma omp target
473 #pragma omp teams
474 // expected-error@+3 {{expected ')'}}
475 // expected-note@+2 {{to match this '('}}
476 // expected-note@+1 {{as specified in 'collapse' clause}}
477 #pragma omp distribute simd collapse(4, 8)
478 for (i = 0; i < 16; ++i)
479 // expected-error@+1 {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
481 #pragma omp target
482 #pragma omp teams
483 // expected-error@+1 {{integer constant expression}}
484 #pragma omp distribute simd collapse(2.5)
485 for (i = 0; i < 16; ++i)
487 #pragma omp target
488 #pragma omp teams
489 // expected-error@+1 {{integer constant expression}}
490 #pragma omp distribute simd collapse(foo())
491 for (i = 0; i < 16; ++i)
493 #pragma omp target
494 #pragma omp teams
495 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
496 #pragma omp distribute simd collapse(-5)
497 for (i = 0; i < 16; ++i)
499 #pragma omp target
500 #pragma omp teams
501 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
502 #pragma omp distribute simd collapse(0)
503 for (i = 0; i < 16; ++i)
505 #pragma omp target
506 #pragma omp teams
507 // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
508 #pragma omp distribute simd collapse(5 - 5)
509 for (i = 0; i < 16; ++i)
511 // expected-note@+3 2 {{defined as reduction}}
512 #pragma omp target
513 #pragma omp teams
514 #pragma omp distribute simd collapse(2) reduction(+ : i)
515 for (i = 0; i < 16; ++i) // expected-error {{loop iteration variable in the associated loop of 'omp distribute simd' directive may not be reduction, predetermined as lastprivate}}
516 // 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?}}
517 for (int j = 0; j < 16; ++j)
518 // expected-error@+2 2 {{reduction variable must be shared}}
519 // expected-error@+1 {{OpenMP constructs may not be nested inside a simd region}}
520 #pragma omp for reduction(+ : i, j)
521 for (int k = 0; k < 16; ++k)
522 i += j;
524 #pragma omp target
525 #pragma omp teams
526 for (i = 0; i < 16; ++i)
527 for (int j = 0; j < 16; ++j)
528 #pragma omp distribute simd reduction(+ : i, j)
529 for (int k = 0; k < 16; ++k)
530 i += j;
533 void test_linear(void) {
534 int i;
535 #pragma omp target
536 #pragma omp teams
537 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
538 #pragma omp distribute simd linear(
539 for (i = 0; i < 16; ++i)
541 #pragma omp target
542 #pragma omp teams
543 // expected-error@+2 {{expected expression}}
544 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
545 #pragma omp distribute simd linear(,
546 for (i = 0; i < 16; ++i)
548 #pragma omp target
549 #pragma omp teams
550 // expected-error@+2 {{expected expression}}
551 // expected-error@+1 {{expected expression}}
552 #pragma omp distribute simd linear(, )
553 for (i = 0; i < 16; ++i)
555 #pragma omp target
556 #pragma omp teams
557 // expected-error@+1 {{expected expression}}
558 #pragma omp distribute simd linear()
559 for (i = 0; i < 16; ++i)
561 #pragma omp target
562 #pragma omp teams
563 // expected-error@+1 {{expected expression}}
564 #pragma omp distribute simd linear(int)
565 for (i = 0; i < 16; ++i)
567 #pragma omp target
568 #pragma omp teams
569 // expected-error@+1 {{expected variable name}}
570 #pragma omp distribute simd linear(0)
571 for (i = 0; i < 16; ++i)
573 #pragma omp target
574 #pragma omp teams
575 // expected-error@+1 {{use of undeclared identifier 'x'}}
576 #pragma omp distribute simd linear(x)
577 for (i = 0; i < 16; ++i)
579 #pragma omp target
580 #pragma omp teams
581 // expected-error@+2 {{use of undeclared identifier 'x'}}
582 // expected-error@+1 {{use of undeclared identifier 'y'}}
583 #pragma omp distribute simd linear(x, y)
584 for (i = 0; i < 16; ++i)
586 #pragma omp target
587 #pragma omp teams
588 // expected-error@+3 {{use of undeclared identifier 'x'}}
589 // expected-error@+2 {{use of undeclared identifier 'y'}}
590 // expected-error@+1 {{use of undeclared identifier 'z'}}
591 #pragma omp distribute simd linear(x, y, z)
592 for (i = 0; i < 16; ++i)
596 void test_aligned(void) {
597 int i;
598 #pragma omp target
599 #pragma omp teams
600 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
601 #pragma omp distribute simd aligned(
602 for (i = 0; i < 16; ++i)
604 #pragma omp target
605 #pragma omp teams
606 // expected-error@+2 {{expected expression}}
607 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
608 #pragma omp distribute simd aligned(,
609 for (i = 0; i < 16; ++i)
611 #pragma omp target
612 #pragma omp teams
613 // expected-error@+2 {{expected expression}}
614 // expected-error@+1 {{expected expression}}
615 #pragma omp distribute simd aligned(, )
616 for (i = 0; i < 16; ++i)
618 #pragma omp target
619 #pragma omp teams
620 // expected-error@+1 {{expected expression}}
621 #pragma omp distribute simd aligned()
622 for (i = 0; i < 16; ++i)
624 #pragma omp target
625 #pragma omp teams
626 // expected-error@+1 {{expected expression}}
627 #pragma omp distribute simd aligned(int)
628 for (i = 0; i < 16; ++i)
630 #pragma omp target
631 #pragma omp teams
632 // expected-error@+1 {{expected variable name}}
633 #pragma omp distribute simd aligned(0)
634 for (i = 0; i < 16; ++i)
636 #pragma omp target
637 #pragma omp teams
638 // expected-error@+1 {{use of undeclared identifier 'x'}}
639 #pragma omp distribute simd aligned(x)
640 for (i = 0; i < 16; ++i)
642 #pragma omp target
643 #pragma omp teams
644 // expected-error@+2 {{use of undeclared identifier 'x'}}
645 // expected-error@+1 {{use of undeclared identifier 'y'}}
646 #pragma omp distribute simd aligned(x, y)
647 for (i = 0; i < 16; ++i)
649 #pragma omp target
650 #pragma omp teams
651 // expected-error@+3 {{use of undeclared identifier 'x'}}
652 // expected-error@+2 {{use of undeclared identifier 'y'}}
653 // expected-error@+1 {{use of undeclared identifier 'z'}}
654 #pragma omp distribute simd aligned(x, y, z)
655 for (i = 0; i < 16; ++i)
658 int *x, y, z[25]; // expected-note 4 {{'y' defined here}}
659 #pragma omp target
660 #pragma omp teams
661 #pragma omp distribute simd aligned(x)
662 for (i = 0; i < 16; ++i)
664 #pragma omp target
665 #pragma omp teams
666 #pragma omp distribute simd aligned(z)
667 for (i = 0; i < 16; ++i)
669 #pragma omp target
670 #pragma omp teams
671 // expected-error@+1 {{expected expression}}
672 #pragma omp distribute simd aligned(x :)
673 for (i = 0; i < 16; ++i)
675 #pragma omp target
676 #pragma omp teams
677 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
678 #pragma omp distribute simd aligned(x :, )
679 for (i = 0; i < 16; ++i)
681 #pragma omp target
682 #pragma omp teams
683 #pragma omp distribute simd aligned(x : 1)
684 for (i = 0; i < 16; ++i)
686 #pragma omp target
687 #pragma omp teams
688 #pragma omp distribute simd aligned(x : 2 * 2)
689 for (i = 0; i < 16; ++i)
691 #pragma omp target
692 #pragma omp teams
693 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
694 #pragma omp distribute simd aligned(x : 1, y)
695 for (i = 0; i < 16; ++i)
697 #pragma omp target
698 #pragma omp teams
699 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
700 #pragma omp distribute simd aligned(x : 1, y, z : 1)
701 for (i = 0; i < 16; ++i)
704 #pragma omp target
705 #pragma omp teams
706 // expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}
707 #pragma omp distribute simd aligned(x, y)
708 for (i = 0; i < 16; ++i)
710 #pragma omp target
711 #pragma omp teams
712 // expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}
713 #pragma omp distribute simd aligned(x, y, z)
714 for (i = 0; i < 16; ++i)
717 #pragma omp target
718 #pragma omp teams
719 // expected-note@+2 {{defined as aligned}}
720 // expected-error@+1 {{a variable cannot appear in more than one aligned clause}}
721 #pragma omp distribute simd aligned(x) aligned(z, x)
722 for (i = 0; i < 16; ++i)
725 #pragma omp target
726 #pragma omp teams
727 // expected-note@+3 {{defined as aligned}}
728 // expected-error@+2 {{a variable cannot appear in more than one aligned clause}}
729 // expected-error@+1 2 {{argument of aligned clause should be array or pointer, not 'int'}}
730 #pragma omp distribute simd aligned(x, y, z) aligned(y, z)
731 for (i = 0; i < 16; ++i)
735 void test_private(void) {
736 int i;
737 #pragma omp target
738 #pragma omp teams
739 // expected-error@+3 {{expected expression}}
740 // expected-error@+2 {{expected ')'}}
741 // expected-note@+1 {{to match this '('}}
742 #pragma omp distribute simd private(
743 for (i = 0; i < 16; ++i)
745 #pragma omp target
746 #pragma omp teams
747 // expected-error@+3 {{expected ')'}}
748 // expected-note@+2 {{to match this '('}}
749 // expected-error@+1 2 {{expected expression}}
750 #pragma omp distribute simd private(,
751 for (i = 0; i < 16; ++i)
753 #pragma omp target
754 #pragma omp teams
755 // expected-error@+1 2 {{expected expression}}
756 #pragma omp distribute simd private(, )
757 for (i = 0; i < 16; ++i)
759 #pragma omp target
760 #pragma omp teams
761 // expected-error@+1 {{expected expression}}
762 #pragma omp distribute simd private()
763 for (i = 0; i < 16; ++i)
765 #pragma omp target
766 #pragma omp teams
767 // expected-error@+1 {{expected expression}}
768 #pragma omp distribute simd private(int)
769 for (i = 0; i < 16; ++i)
771 #pragma omp target
772 #pragma omp teams
773 // expected-error@+1 {{expected variable name}}
774 #pragma omp distribute simd private(0)
775 for (i = 0; i < 16; ++i)
778 int x, y, z;
779 #pragma omp target
780 #pragma omp teams
781 #pragma omp distribute simd private(x)
782 for (i = 0; i < 16; ++i)
784 #pragma omp target
785 #pragma omp teams
786 #pragma omp distribute simd private(x, y)
787 for (i = 0; i < 16; ++i)
789 #pragma omp target
790 #pragma omp teams
791 #pragma omp distribute simd private(x, y, z)
792 for (i = 0; i < 16; ++i) {
793 x = y * i + z;
797 void test_firstprivate(void) {
798 int i;
799 #pragma omp target
800 #pragma omp teams
801 // expected-error@+3 {{expected ')'}}
802 // expected-note@+2 {{to match this '('}}
803 // expected-error@+1 {{expected expression}}
804 #pragma omp distribute simd firstprivate(
805 for (i = 0; i < 16; ++i)
809 void test_lastprivate(void) {
810 int i;
811 #pragma omp target
812 #pragma omp teams
813 // expected-error@+3 {{expected ')'}}
814 // expected-note@+2 {{to match this '('}}
815 // expected-error@+1 {{expected expression}}
816 #pragma omp distribute simd lastprivate(
817 for (i = 0; i < 16; ++i)
820 #pragma omp target
821 #pragma omp teams
822 // expected-error@+3 {{expected ')'}}
823 // expected-note@+2 {{to match this '('}}
824 // expected-error@+1 2 {{expected expression}}
825 #pragma omp distribute simd lastprivate(,
826 for (i = 0; i < 16; ++i)
828 #pragma omp target
829 #pragma omp teams
830 // expected-error@+1 2 {{expected expression}}
831 #pragma omp distribute simd lastprivate(, )
832 for (i = 0; i < 16; ++i)
834 #pragma omp target
835 #pragma omp teams
836 // expected-error@+1 {{expected expression}}
837 #pragma omp distribute simd lastprivate()
838 for (i = 0; i < 16; ++i)
840 #pragma omp target
841 #pragma omp teams
842 // expected-error@+1 {{expected expression}}
843 #pragma omp distribute simd lastprivate(int)
844 for (i = 0; i < 16; ++i)
846 #pragma omp target
847 #pragma omp teams
848 // expected-error@+1 {{expected variable name}}
849 #pragma omp distribute simd lastprivate(0)
850 for (i = 0; i < 16; ++i)
853 int x, y, z;
854 #pragma omp target
855 #pragma omp teams
856 #pragma omp distribute simd lastprivate(x)
857 for (i = 0; i < 16; ++i)
859 #pragma omp target
860 #pragma omp teams
861 #pragma omp distribute simd lastprivate(x, y)
862 for (i = 0; i < 16; ++i)
864 #pragma omp target
865 #pragma omp teams
866 #pragma omp distribute simd lastprivate(x, y, z)
867 for (i = 0; i < 16; ++i)
871 void test_reduction(void) {
872 int i, x, y;
873 #pragma omp target
874 #pragma omp teams
875 // expected-error@+4 {{expected ')'}}
876 // expected-note@+3 {{to match this '('}}
877 // expected-error@+2 {{expected identifier}}
878 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
879 #pragma omp distribute simd reduction(
880 for (i = 0; i < 16; ++i)
882 #pragma omp target
883 #pragma omp teams
884 // expected-error@+2 {{expected identifier}}
885 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
886 #pragma omp distribute simd reduction()
887 for (i = 0; i < 16; ++i)
889 #pragma omp target
890 #pragma omp teams
891 // expected-error@+2 {{expected expression}}
892 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
893 #pragma omp distribute simd reduction(x)
894 for (i = 0; i < 16; ++i)
896 #pragma omp target
897 #pragma omp teams
898 // expected-error@+1 {{expected identifier}}
899 #pragma omp distribute simd reduction( : x)
900 for (i = 0; i < 16; ++i)
902 #pragma omp target
903 #pragma omp teams
904 // expected-error@+4 {{expected ')'}}
905 // expected-note@+3 {{to match this '('}}
906 // expected-error@+2 {{expected identifier}}
907 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
908 #pragma omp distribute simd reduction(,
909 for (i = 0; i < 16; ++i)
911 #pragma omp target
912 #pragma omp teams
913 // expected-error@+4 {{expected ')'}}
914 // expected-note@+3 {{to match this '('}}
915 // expected-error@+2 {{expected expression}}
916 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
917 #pragma omp distribute simd reduction(+
918 for (i = 0; i < 16; ++i)
921 #pragma omp target
922 #pragma omp teams
923 // expected-error@+3 {{expected ')'}}
924 // expected-note@+2 {{to match this '('}}
925 // expected-error@+1 {{expected expression}}
926 #pragma omp distribute simd reduction(+:
927 for (i = 0; i < 16; ++i)
929 #pragma omp target
930 #pragma omp teams
931 // expected-error@+1 {{expected expression}}
932 #pragma omp distribute simd reduction(+ :)
933 for (i = 0; i < 16; ++i)
935 #pragma omp target
936 #pragma omp teams
937 // expected-error@+1 {{expected expression}}
938 #pragma omp distribute simd reduction(+ :, y)
939 for (i = 0; i < 16; ++i)
941 #pragma omp target
942 #pragma omp teams
943 // expected-error@+1 {{expected expression}}
944 #pragma omp distribute simd reduction(+ : x, + : y)
945 for (i = 0; i < 16; ++i)
947 #pragma omp target
948 #pragma omp teams
949 // expected-error@+1 {{expected identifier}}
950 #pragma omp distribute simd reduction(% : x)
951 for (i = 0; i < 16; ++i)
954 #pragma omp target
955 #pragma omp teams
956 #pragma omp distribute simd reduction(+ : x)
957 for (i = 0; i < 16; ++i)
959 #pragma omp target
960 #pragma omp teams
961 #pragma omp distribute simd reduction(* : x)
962 for (i = 0; i < 16; ++i)
964 #pragma omp target
965 #pragma omp teams
966 // omp60-error@+1 {{incorrect reduction identifier, expected one of '+', '*', '&', '|', '^', '&&', '||', 'min' or 'max' or declare reduction for type 'int'}}
967 #pragma omp distribute simd reduction(- : x)
968 for (i = 0; i < 16; ++i)
970 #pragma omp target
971 #pragma omp teams
972 #pragma omp distribute simd reduction(& : x)
973 for (i = 0; i < 16; ++i)
975 #pragma omp target
976 #pragma omp teams
977 #pragma omp distribute simd reduction(| : x)
978 for (i = 0; i < 16; ++i)
980 #pragma omp target
981 #pragma omp teams
982 #pragma omp distribute simd reduction(^ : x)
983 for (i = 0; i < 16; ++i)
985 #pragma omp target
986 #pragma omp teams
987 #pragma omp distribute simd reduction(&& : x)
988 for (i = 0; i < 16; ++i)
990 #pragma omp target
991 #pragma omp teams
992 #pragma omp distribute simd reduction(|| : x)
993 for (i = 0; i < 16; ++i)
995 #pragma omp target
996 #pragma omp teams
997 #pragma omp distribute simd reduction(max : x)
998 for (i = 0; i < 16; ++i)
1000 #pragma omp target
1001 #pragma omp teams
1002 #pragma omp distribute simd reduction(min : x)
1003 for (i = 0; i < 16; ++i)
1005 struct X {
1006 int x;
1008 struct X X;
1009 #pragma omp target
1010 #pragma omp teams
1011 // expected-error@+1 {{expected variable name}}
1012 #pragma omp distribute simd reduction(+ : X.x)
1013 for (i = 0; i < 16; ++i)
1015 #pragma omp target
1016 #pragma omp teams
1017 // expected-error@+1 {{expected variable name}}
1018 #pragma omp distribute simd reduction(+ : x + x)
1019 for (i = 0; i < 16; ++i)
1023 void test_loop_messages(void) {
1024 float a[100], b[100], c[100];
1025 #pragma omp target
1026 #pragma omp teams
1027 // expected-error@+2 {{variable must be of integer or pointer type}}
1028 #pragma omp distribute simd
1029 for (float fi = 0; fi < 10.0; fi++) {
1030 c[(int)fi] = a[(int)fi] + b[(int)fi];
1032 #pragma omp target
1033 #pragma omp teams
1034 // expected-error@+2 {{variable must be of integer or pointer type}}
1035 #pragma omp distribute simd
1036 for (double fi = 0; fi < 10.0; fi++) {
1037 c[(int)fi] = a[(int)fi] + b[(int)fi];
1041 void linear_modifiers(int argc) {
1042 int k;
1043 #pragma omp target
1044 #pragma omp teams
1045 #pragma omp distribute simd linear(k)
1046 for (k = 0; k < argc; ++k) ++k;
1047 #pragma omp target
1048 #pragma omp teams
1049 // omp60-error@+1 {{old syntax 'linear-modifier(list)' on 'linear' clause was deprecated, use new syntax 'linear(list: [linear-modifier,] step(step-size))'}}
1050 #pragma omp distribute simd linear(val(k))
1051 for (k = 0; k < argc; ++k) ++k;
1052 #pragma omp target
1053 #pragma omp teams
1054 // omp60-error@+2 {{old syntax 'linear-modifier(list)' on 'linear' clause was deprecated, use new syntax 'linear(list: [linear-modifier,] step(step-size))'}}
1055 // expected-error@+1 {{expected 'val' modifier}}
1056 #pragma omp distribute simd linear(uval(k))
1057 for (k = 0; k < argc; ++k) ++k;
1058 #pragma omp target
1059 #pragma omp teams
1060 // omp60-error@+2 {{old syntax 'linear-modifier(list)' on 'linear' clause was deprecated, use new syntax 'linear(list: [linear-modifier,] step(step-size))'}}
1061 // expected-error@+1 {{expected 'val' modifier}}
1062 #pragma omp distribute simd linear(ref(k))
1063 for (k = 0; k < argc; ++k) ++k;
1064 #pragma omp target
1065 #pragma omp teams
1066 // omp60-error@+2 {{old syntax 'linear-modifier(list)' on 'linear' clause was deprecated, use new syntax 'linear(list: [linear-modifier,] step(step-size))'}}
1067 // expected-error@+1 {{expected 'val' modifier}}
1068 #pragma omp distribute simd linear(foo(k))
1069 for (k = 0; k < argc; ++k) ++k;
1072 void test_nontemporal(void) {
1073 int i;
1074 // omp45-error@+4 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1075 // expected-error@+3 {{expected expression}}
1076 // expected-error@+2 {{expected ')'}}
1077 // expected-note@+1 {{to match this '('}}
1078 #pragma omp distribute simd nontemporal(
1079 for (i = 0; i < 16; ++i)
1081 // omp45-error@+4 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1082 // expected-error@+3 2 {{expected expression}}
1083 // expected-error@+2 {{expected ')'}}
1084 // expected-note@+1 {{to match this '('}}
1085 #pragma omp distribute simd nontemporal(,
1086 for (i = 0; i < 16; ++i)
1088 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1089 // expected-error@+1 2 {{expected expression}}
1090 #pragma omp distribute simd nontemporal(, )
1091 for (i = 0; i < 16; ++i)
1093 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1094 // expected-error@+1 {{expected expression}}
1095 #pragma omp distribute simd nontemporal()
1096 for (i = 0; i < 16; ++i)
1098 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1099 // expected-error@+1 {{expected expression}}
1100 #pragma omp distribute simd nontemporal(int)
1101 for (i = 0; i < 16; ++i)
1103 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1104 // omp50-and-later-var-error@+1 {{expected variable name}}
1105 #pragma omp distribute simd nontemporal(0)
1106 for (i = 0; i < 16; ++i)
1108 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1109 // expected-error@+1 {{use of undeclared identifier 'x'}}
1110 #pragma omp distribute simd nontemporal(x)
1111 for (i = 0; i < 16; ++i)
1113 // expected-error@+3 {{use of undeclared identifier 'x'}}
1114 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1115 // expected-error@+1 {{use of undeclared identifier 'y'}}
1116 #pragma omp distribute simd nontemporal(x, y)
1117 for (i = 0; i < 16; ++i)
1119 // expected-error@+4 {{use of undeclared identifier 'x'}}
1120 // expected-error@+3 {{use of undeclared identifier 'y'}}
1121 // omp45-error@+2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1122 // expected-error@+1 {{use of undeclared identifier 'z'}}
1123 #pragma omp distribute simd nontemporal(x, y, z)
1124 for (i = 0; i < 16; ++i)
1127 int x, y;
1128 // omp45-error@+4 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1129 // expected-error@+3 {{expected ',' or ')' in 'nontemporal' clause}}
1130 // expected-error@+2 {{expected ')'}}
1131 // expected-note@+1 {{to match this '('}}
1132 #pragma omp distribute simd nontemporal(x :)
1133 for (i = 0; i < 16; ++i)
1135 // omp45-error@+4 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1136 // expected-error@+3 {{expected ')'}}
1137 // expected-note@+2 {{to match this '('}}
1138 // expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}
1139 #pragma omp distribute simd nontemporal(x :, )
1140 for (i = 0; i < 16; ++i)
1143 // omp50-temporal-note@+3 {{defined as nontemporal}}
1144 // omp-50-and-later-temporal-error@+2 {{a variable cannot appear in more than one nontemporal clause}}
1145 // omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1146 #pragma omp distribute simd nontemporal(x) nontemporal(x)
1147 for (i = 0; i < 16; ++i)
1150 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1151 #pragma omp distribute simd private(x) nontemporal(x)
1152 for (i = 0; i < 16; ++i)
1155 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1156 #pragma omp distribute simd nontemporal(x) private(x)
1157 for (i = 0; i < 16; ++i)
1160 // omp45-error@+3 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1161 // expected-note@+2 {{to match this '('}}
1162 // expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}
1163 #pragma omp distribute simd nontemporal(x, y : 0)
1164 for (i = 0; i < 16; ++i)
1167 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1168 #pragma omp distribute simd nontemporal(x) lastprivate(x)
1169 for (i = 0; i < 16; ++i)
1172 // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute simd'}}
1173 #pragma omp distribute simd lastprivate(x) nontemporal(x)
1174 for (i = 0; i < 16; ++i)
1176 // omp45-error@+2 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1177 // expected-error@+1 {{expected '(' after 'order'}}
1178 #pragma omp distribute simd order
1179 for (int i = 0; i < 10; ++i)
1181 // omp-50-and-later-error@+4 {{expected 'concurrent' in OpenMP clause 'order'}}
1182 // expected-note@+3 {{to match this '('}}
1183 // expected-error@+2 {{expected ')'}}
1184 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1185 #pragma omp distribute simd order(
1186 for (int i = 0; i < 10; ++i)
1188 // omp-50-and-later-error@+4 {{expected 'concurrent' in OpenMP clause 'order'}}
1189 // expected-note@+3 {{to match this '('}}
1190 // expected-error@+2 {{expected ')'}}
1191 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1192 #pragma omp distribute simd order(none
1193 for (int i = 0; i < 10; ++i)
1195 // expected-note@+3 {{to match this '('}}
1196 // expected-error@+2 {{expected ')'}}
1197 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1198 #pragma omp distribute simd order(concurrent
1199 for (int i = 0; i < 10; ++i)
1201 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1202 #pragma omp distribute simd order(concurrent)
1203 for (int i = 0; i < 10; ++i)
1205 // omp-50-and-later-error@+2 {{expected 'concurrent' in OpenMP clause 'order'}}
1206 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1207 #pragma omp distribute simd order(unconstrained:)
1208 for (int i = 0; i < 10; ++i)
1210 // omp50-error@+4 {{expected 'concurrent' in OpenMP clause 'order'}}
1211 // expected-note@+3 {{to match this '('}}
1212 // expected-error@+2 {{expected ')'}}
1213 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1214 #pragma omp distribute simd order(reproducible:concurrent
1215 for (int i = 0; i < 10; ++i)
1217 // omp50-error@+2 {{expected 'concurrent' in OpenMP clause 'order'}}
1218 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1219 #pragma omp distribute simd order(reproducible:concurrent)
1220 for (int i = 0; i < 10; ++i)
1222 // omp50-error@+2 {{expected 'concurrent' in OpenMP clause 'order'}}
1223 // omp45-error@+1 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1224 #pragma omp distribute simd order(unconstrained:concurrent)
1225 for (int i = 0; i < 10; ++i)
1227 // omp-clause-error@+2 {{directive '#pragma omp distribute simd' cannot contain more than one 'order' clause}}
1228 // omp45-error@+1 2 {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute simd'}}
1229 #pragma omp distribute simd order(concurrent) order(concurrent)
1230 for (int i = 0; i < 10; ++i)