1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45,omp45warn %s
2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=50 -verify=expected,omp50 %s
3 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -Wno-openmp %s
4 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -Wno-source-uses-openmp %s
5
6 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45,omp45warn %s
7 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50 %s
8 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
9
10 void bar();
11
12 template <class T>
foo()13 void foo() {
14 T a = T();
15 // PARALLEL DIRECTIVE
16 #pragma omp parallel
17 #pragma omp for
18 for (int i = 0; i < 10; ++i)
19 ;
20 #pragma omp parallel
21 #pragma omp simd
22 for (int i = 0; i < 10; ++i)
23 ;
24 #pragma omp parallel
25 #pragma omp for simd
26 for (int i = 0; i < 10; ++i)
27 ;
28 #pragma omp parallel
29 #pragma omp sections
30 {
31 bar();
32 }
33 #pragma omp parallel
34 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}
35 {
36 bar();
37 }
38 #pragma omp parallel
39 #pragma omp single
40 bar();
41
42 #pragma omp parallel
43 #pragma omp master
44 {
45 bar();
46 }
47 #pragma omp parallel
48 #pragma omp critical
49 {
50 bar();
51 }
52 #pragma omp parallel
53 #pragma omp parallel for
54 for (int i = 0; i < 10; ++i)
55 ;
56 #pragma omp parallel
57 #pragma omp parallel for simd
58 for (int i = 0; i < 10; ++i)
59 ;
60 #pragma omp parallel
61 #pragma omp parallel sections
62 {
63 bar();
64 }
65 #pragma omp parallel
66 #pragma omp parallel master
67 {
68 bar();
69 }
70 #pragma omp parallel
71 #pragma omp task
72 {
73 bar();
74 }
75 #pragma omp parallel
76 {
77 #pragma omp taskyield
78 bar();
79 }
80 #pragma omp parallel
81 {
82 #pragma omp barrier
83 bar();
84 }
85 #pragma omp parallel
86 {
87 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
88 bar();
89 }
90 #pragma omp parallel
91 {
92 #pragma omp taskwait
93 bar();
94 }
95 #pragma omp parallel
96 {
97 #pragma omp flush
98 bar();
99 }
100 #pragma omp parallel
101 {
102 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
103 bar();
104 }
105 #pragma omp parallel
106 {
107 #pragma omp atomic
108 ++a;
109 }
110 #pragma omp parallel
111 {
112 #pragma omp target
113 ++a;
114 }
115 #pragma omp parallel
116 {
117 #pragma omp target parallel
118 ++a;
119 }
120 #pragma omp parallel
121 {
122 #pragma omp target parallel for
123 for (int i = 0; i < 10; ++i)
124 ;
125 }
126 #pragma omp parallel
127 {
128 #pragma omp target enter data map(to: a)
129 ++a;
130 }
131 #pragma omp parallel
132 {
133 #pragma omp target exit data map(from: a)
134 ++a;
135 }
136 #pragma omp parallel
137 {
138 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
139 ++a;
140 }
141 #pragma omp parallel
142 {
143 #pragma omp taskloop
144 for (int i = 0; i < 10; ++i)
145 ++a;
146 }
147 #pragma omp parallel
148 {
149 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
150 for (int i = 0; i < 10; ++i)
151 ;
152 }
153 #pragma omp parallel
154 {
155 #pragma omp target update to(a)
156 }
157 #pragma omp parallel
158 {
159 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
160 for (int i = 0; i < 10; ++i)
161 ;
162 }
163 #pragma omp parallel
164 {
165 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
166 for (int i = 0; i < 10; ++i)
167 ;
168 }
169 #pragma omp parallel
170 {
171 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
172 for (int i = 0; i < 10; ++i)
173 ;
174 }
175 #pragma omp parallel
176 {
177 #pragma omp target simd // OK
178 for (int i = 0; i < 10; ++i)
179 ;
180 }
181 #pragma omp parallel
182 {
183 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
184 for (int i = 0; i < 10; ++i)
185 ;
186 }
187 #pragma omp parallel
188 {
189 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
190 for (int i = 0; i < 10; ++i)
191 ;
192 }
193 #pragma omp parallel
194 {
195 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
196 for (int i = 0; i < 10; ++i)
197 ;
198 }
199 #pragma omp parallel
200 {
201 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
202 for (int i = 0; i < 10; ++i)
203 ;
204 }
205 #pragma omp parallel
206 {
207 #pragma omp target teams // OK
208 ++a;
209 }
210 #pragma omp parallel
211 {
212 #pragma omp target teams distribute // OK
213 for (int i = 0; i < 10; ++i)
214 ;
215 }
216 #pragma omp parallel
217 {
218 #pragma omp target teams distribute parallel for // OK
219 for (int i = 0; i < 10; ++i)
220 ;
221 }
222 #pragma omp parallel
223 {
224 #pragma omp target teams distribute parallel for simd // OK
225 for (int i = 0; i < 10; ++i)
226 ;
227 }
228 #pragma omp parallel
229 {
230 #pragma omp target teams distribute simd // OK
231 for (int i = 0; i < 10; ++i)
232 ;
233 }
234
235 // SIMD DIRECTIVE
236 #pragma omp simd
237 for (int i = 0; i < 10; ++i) {
238 #pragma omp for // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{OpenMP constructs may not be nested inside a simd region except for ordered simd, simd, scan, or atomic directive}}
239 for (int i = 0; i < 10; ++i)
240 ;
241 }
242 #pragma omp simd
243 for (int i = 0; i < 10; ++i) {
244 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
245 for (int i = 0; i < 10; ++i)
246 ;
247 }
248 #pragma omp simd
249 for (int i = 0; i < 10; ++i) {
250 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
251 for (int i = 0; i < 10; ++i)
252 ;
253 }
254 #pragma omp simd
255 for (int i = 0; i < 10; ++i) {
256 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
257 for (int i = 0; i < 10; ++i)
258 ;
259 }
260 #pragma omp simd
261 for (int i = 0; i < 10; ++i) {
262 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
263 {
264 bar();
265 }
266 }
267 #pragma omp simd
268 for (int i = 0; i < 10; ++i) {
269 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
270 {
271 bar();
272 }
273 }
274 #pragma omp simd
275 for (int i = 0; i < 10; ++i) {
276 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
277 {
278 bar();
279 }
280 }
281 #pragma omp simd
282 for (int i = 0; i < 10; ++i) {
283 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
284 {
285 bar();
286 }
287 }
288 #pragma omp simd
289 for (int i = 0; i < 10; ++i) {
290 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
291 {
292 bar();
293 }
294 }
295 #pragma omp simd
296 for (int i = 0; i < 10; ++i) {
297 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
298 for (int i = 0; i < 10; ++i)
299 ;
300 }
301 #pragma omp simd
302 for (int i = 0; i < 10; ++i) {
303 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
304 for (int i = 0; i < 10; ++i)
305 ;
306 }
307 #pragma omp simd
308 for (int i = 0; i < 10; ++i) {
309 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
310 {
311 bar();
312 }
313 }
314 #pragma omp simd
315 for (int i = 0; i < 10; ++i) {
316 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
317 {
318 bar();
319 }
320 }
321 #pragma omp simd
322 for (int i = 0; i < 10; ++i) {
323 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
324 {
325 bar();
326 }
327 }
328 #pragma omp simd
329 for (int i = 0; i < 10; ++i) {
330 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
331 bar();
332 }
333 #pragma omp simd
334 for (int i = 0; i < 10; ++i) {
335 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
336 bar();
337 }
338 #pragma omp simd
339 for (int i = 0; i < 10; ++i) {
340 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
341 bar();
342 }
343 #pragma omp simd
344 for (int i = 0; i < 10; ++i) {
345 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
346 bar();
347 }
348 #pragma omp simd
349 for (int i = 0; i < 10; ++i) {
350 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
351 bar();
352 }
353 #pragma omp simd
354 for (int i = 0; i < 10; ++i) {
355 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
356 bar();
357 }
358 #pragma omp simd
359 for (int i = 0; i < 10; ++i) {
360 #pragma omp ordered simd // OK
361 bar();
362 }
363 #pragma omp simd
364 for (int i = 0; i < 10; ++i) {
365 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}}
366 bar();
367 }
368 #pragma omp simd
369 for (int i = 0; i < 10; ++i) {
370 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
371 ++a;
372 }
373 #pragma omp simd
374 for (int i = 0; i < 10; ++i) {
375 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
376 ++a;
377 }
378 #pragma omp simd
379 for (int i = 0; i < 10; ++i) {
380 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
381 ++a;
382 }
383 #pragma omp simd
384 for (int i = 0; i < 10; ++i) {
385 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
386 for (int i = 0; i < 10; ++i)
387 ;
388 }
389 #pragma omp simd
390 for (int i = 0; i < 10; ++i) {
391 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
392 ++a;
393 }
394 #pragma omp simd
395 for (int i = 0; i < 10; ++i) {
396 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
397 ++a;
398 }
399 #pragma omp simd
400 for (int i = 0; i < 10; ++i) {
401 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
402 ++a;
403 }
404 #pragma omp simd
405 for (int i = 0; i < 10; ++i) {
406 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
407 for (int i = 0; i < 10; ++i)
408 ++a;
409 }
410 #pragma omp simd
411 for (int i = 0; i < 10; ++i) {
412 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
413 for (int j = 0; j < 10; ++j)
414 ;
415 }
416 #pragma omp simd
417 for (int i = 0; i < 10; ++i) {
418 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
419 }
420 #pragma omp simd
421 for (int i = 0; i < 10; ++i) {
422 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}}
423 for (int j = 0; j < 10; ++j)
424 ;
425 }
426 #pragma omp simd
427 for (int i = 0; i < 10; ++i) {
428 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
429 for (int j = 0; j < 10; ++j)
430 ;
431 }
432 #pragma omp simd
433 for (int i = 0; i < 10; ++i) {
434 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
435 for (int j = 0; j < 10; ++j)
436 ;
437 }
438 #pragma omp simd
439 for (int i = 0; i < 10; ++i) {
440 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
441 for (int j = 0; j < 10; ++j)
442 ;
443 }
444 #pragma omp simd
445 for (int i = 0; i < 10; ++i) {
446 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
447 for (int j = 0; j < 10; ++j)
448 ;
449 }
450 #pragma omp simd
451 for (int i = 0; i < 10; ++i) {
452 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
453 for (int j = 0; j < 10; ++j)
454 ;
455 }
456 #pragma omp simd
457 for (int i = 0; i < 10; ++i) {
458 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
459 for (int j = 0; j < 10; ++j)
460 ;
461 }
462 #pragma omp simd
463 for (int i = 0; i < 10; ++i) {
464 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
465 for (int j = 0; j < 10; ++j)
466 ;
467 }
468 #pragma omp simd
469 for (int i = 0; i < 10; ++i) {
470 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
471 ++a;
472 }
473 #pragma omp simd
474 for (int i = 0; i < 10; ++i) {
475 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
476 for (int j = 0; j < 10; ++j)
477 ;
478 }
479 #pragma omp simd
480 for (int i = 0; i < 10; ++i) {
481 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
482 for (int j = 0; j < 10; ++j)
483 ;
484 }
485 #pragma omp simd
486 for (int i = 0; i < 10; ++i) {
487 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
488 for (int j = 0; j < 10; ++j)
489 ;
490 }
491 #pragma omp simd
492 for (int i = 0; i < 10; ++i) {
493 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
494 for (int j = 0; j < 10; ++j)
495 ;
496 }
497
498 // FOR DIRECTIVE
499 #pragma omp for
500 for (int i = 0; i < 10; ++i) {
501 #pragma omp for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
502 for (int i = 0; i < 10; ++i)
503 ;
504 }
505 #pragma omp for
506 for (int i = 0; i < 10; ++i) {
507 #pragma omp simd
508 for (int i = 0; i < 10; ++i)
509 ;
510 }
511 #pragma omp for
512 for (int i = 0; i < 10; ++i) {
513 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
514 for (int i = 0; i < 10; ++i)
515 ;
516 }
517 #pragma omp for
518 for (int i = 0; i < 10; ++i) {
519 #pragma omp parallel
520 for (int i = 0; i < 10; ++i)
521 ;
522 }
523 #pragma omp for
524 for (int i = 0; i < 10; ++i) {
525 #pragma omp sections // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
526 {
527 bar();
528 }
529 }
530 #pragma omp for
531 for (int i = 0; i < 10; ++i) {
532 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}
533 {
534 bar();
535 }
536 }
537 #pragma omp for
538 for (int i = 0; i < 10; ++i) {
539 #pragma omp single // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
540 {
541 bar();
542 }
543 }
544
545 #pragma omp for
546 for (int i = 0; i < 10; ++i) {
547 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
548 {
549 bar();
550 }
551 }
552 #pragma omp for
553 for (int i = 0; i < 10; ++i) {
554 #pragma omp critical
555 {
556 bar();
557 }
558 }
559 #pragma omp for
560 for (int i = 0; i < 10; ++i) {
561 #pragma omp parallel
562 {
563 #pragma omp single // OK
564 {
565 bar();
566 }
567 #pragma omp for // OK
568 for (int i = 0; i < 10; ++i)
569 ;
570 #pragma omp sections // OK
571 {
572 bar();
573 }
574 }
575 }
576 #pragma omp for
577 for (int i = 0; i < 10; ++i) {
578 #pragma omp parallel for
579 for (int i = 0; i < 10; ++i)
580 ;
581 }
582 #pragma omp for
583 for (int i = 0; i < 10; ++i) {
584 #pragma omp parallel for simd
585 for (int i = 0; i < 10; ++i)
586 ;
587 }
588 #pragma omp for
589 for (int i = 0; i < 10; ++i) {
590 #pragma omp parallel master
591 {
592 bar();
593 }
594 }
595 #pragma omp for
596 for (int i = 0; i < 10; ++i) {
597 #pragma omp parallel sections
598 {
599 bar();
600 }
601 }
602 #pragma omp for
603 for (int i = 0; i < 10; ++i) {
604 #pragma omp task
605 {
606 bar();
607 }
608 }
609 #pragma omp for
610 for (int i = 0; i < 10; ++i) {
611 #pragma omp taskyield
612 bar();
613 }
614 #pragma omp for
615 for (int i = 0; i < 10; ++i) {
616 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}
617 bar();
618 }
619 #pragma omp for
620 for (int i = 0; i < 10; ++i) {
621 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
622 bar();
623 }
624 #pragma omp for
625 for (int i = 0; i < 10; ++i) {
626 #pragma omp taskwait
627 bar();
628 }
629 #pragma omp for
630 for (int i = 0; i < 10; ++i) {
631 #pragma omp flush
632 bar();
633 }
634 #pragma omp for
635 for (int i = 0; i < 10; ++i) {
636 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
637 bar();
638 }
639 #pragma omp for ordered
640 for (int i = 0; i < 10; ++i) {
641 #pragma omp ordered // OK
642 bar();
643 }
644 #pragma omp for
645 for (int i = 0; i < 10; ++i) {
646 #pragma omp atomic
647 ++a;
648 }
649 #pragma omp for
650 for (int i = 0; i < 10; ++i) {
651 #pragma omp target
652 ++a;
653 }
654 #pragma omp for
655 for (int i = 0; i < 10; ++i) {
656 #pragma omp target parallel
657 ++a;
658 }
659 #pragma omp for
660 for (int i = 0; i < 10; ++i) {
661 #pragma omp target parallel for
662 for (int i = 0; i < 10; ++i)
663 ;
664 }
665 #pragma omp for
666 for (int i = 0; i < 10; ++i) {
667 #pragma omp target enter data map(to: a)
668 ++a;
669 }
670 #pragma omp for
671 for (int i = 0; i < 10; ++i) {
672 #pragma omp target exit data map(from: a)
673 ++a;
674 }
675 #pragma omp for
676 for (int i = 0; i < 10; ++i) {
677 #pragma omp teams // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
678 ++a;
679 }
680 #pragma omp for
681 for (int i = 0; i < 10; ++i) {
682 #pragma omp taskloop
683 for (int i = 0; i < 10; ++i)
684 ++a;
685 }
686 #pragma omp for
687 for (int i = 0; i < 10; ++i) {
688 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
689 for (int j = 0; j < 10; ++j)
690 ;
691 }
692 #pragma omp for
693 for (int i = 0; i < 10; ++i) {
694 #pragma omp target update to(a)
695 }
696 #pragma omp for
697 for (int i = 0; i < 10; ++i) {
698 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
699 for (int j = 0; j < 10; ++j)
700 ;
701 }
702 #pragma omp for
703 for (int i = 0; i < 10; ++i) {
704 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
705 for (int j = 0; j < 10; ++j)
706 ;
707 }
708 #pragma omp for
709 for (int i = 0; i < 10; ++i) {
710 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
711 for (int j = 0; j < 10; ++j)
712 ;
713 }
714 #pragma omp for
715 for (int i = 0; i < 10; ++i) {
716 #pragma omp target simd // OK
717 for (int j = 0; j < 10; ++j)
718 ;
719 }
720 #pragma omp for
721 for (int i = 0; i < 10; ++i) {
722 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
723 for (int j = 0; j < 10; ++j)
724 ;
725 }
726 #pragma omp for
727 for (int i = 0; i < 10; ++i) {
728 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
729 for (int j = 0; j < 10; ++j)
730 ;
731 }
732 #pragma omp for
733 for (int i = 0; i < 10; ++i) {
734 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
735 for (int j = 0; j < 10; ++j)
736 ;
737 }
738 #pragma omp for
739 for (int i = 0; i < 10; ++i) {
740 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
741 for (int j = 0; j < 10; ++j)
742 ;
743 }
744 #pragma omp for
745 for (int i = 0; i < 10; ++i) {
746 #pragma omp target teams // OK
747 ++a;
748 }
749 #pragma omp for
750 for (int i = 0; i < 10; ++i) {
751 #pragma omp target teams distribute // OK
752 for (int j = 0; j < 10; ++j)
753 ;
754 }
755 #pragma omp for
756 for (int i = 0; i < 10; ++i) {
757 #pragma omp target teams distribute parallel for // OK
758 for (int j = 0; j < 10; ++j)
759 ;
760 }
761 #pragma omp for
762 for (int i = 0; i < 10; ++i) {
763 #pragma omp target teams distribute parallel for simd // OK
764 for (int j = 0; j < 10; ++j)
765 ;
766 }
767 #pragma omp for
768 for (int i = 0; i < 10; ++i) {
769 #pragma omp target teams distribute simd // OK
770 for (int j = 0; j < 10; ++j)
771 ;
772 }
773
774 // FOR SIMD DIRECTIVE
775 #pragma omp for simd
776 for (int i = 0; i < 10; ++i) {
777 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
778 for (int i = 0; i < 10; ++i)
779 ;
780 }
781 #pragma omp for simd
782 for (int i = 0; i < 10; ++i) {
783 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
784 for (int i = 0; i < 10; ++i)
785 ;
786 }
787 #pragma omp for simd
788 for (int i = 0; i < 10; ++i) {
789 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
790 for (int i = 0; i < 10; ++i)
791 ;
792 }
793 #pragma omp for simd
794 for (int i = 0; i < 10; ++i) {
795 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
796 for (int i = 0; i < 10; ++i)
797 ;
798 }
799 #pragma omp for simd
800 for (int i = 0; i < 10; ++i) {
801 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
802 {
803 bar();
804 }
805 }
806 #pragma omp for simd
807 for (int i = 0; i < 10; ++i) {
808 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
809 {
810 bar();
811 }
812 }
813 #pragma omp for simd
814 for (int i = 0; i < 10; ++i) {
815 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
816 {
817 bar();
818 }
819 }
820 #pragma omp for simd
821 for (int i = 0; i < 10; ++i) {
822 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
823 {
824 bar();
825 }
826 }
827 #pragma omp for simd
828 for (int i = 0; i < 10; ++i) {
829 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
830 {
831 bar();
832 }
833 }
834 #pragma omp for simd
835 for (int i = 0; i < 10; ++i) {
836 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
837 for (int i = 0; i < 10; ++i)
838 ;
839 }
840 #pragma omp for simd
841 for (int i = 0; i < 10; ++i) {
842 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
843 for (int i = 0; i < 10; ++i)
844 ;
845 }
846 #pragma omp for simd
847 for (int i = 0; i < 10; ++i) {
848 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
849 {
850 bar();
851 }
852 }
853 #pragma omp for simd
854 for (int i = 0; i < 10; ++i) {
855 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
856 {
857 bar();
858 }
859 }
860 #pragma omp for simd
861 for (int i = 0; i < 10; ++i) {
862 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
863 {
864 bar();
865 }
866 }
867 #pragma omp for simd
868 for (int i = 0; i < 10; ++i) {
869 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
870 bar();
871 }
872 #pragma omp for simd
873 for (int i = 0; i < 10; ++i) {
874 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
875 bar();
876 }
877 #pragma omp for simd
878 for (int i = 0; i < 10; ++i) {
879 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
880 bar();
881 }
882 #pragma omp for simd
883 for (int i = 0; i < 10; ++i) {
884 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
885 bar();
886 }
887 #pragma omp for simd
888 for (int i = 0; i < 10; ++i) {
889 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
890 bar();
891 }
892 #pragma omp for simd
893 for (int i = 0; i < 10; ++i) {
894 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
895 bar();
896 }
897 #pragma omp for simd
898 for (int i = 0; i < 10; ++i) {
899 #pragma omp ordered simd // OK
900 bar();
901 }
902 #pragma omp for simd
903 for (int i = 0; i < 10; ++i) {
904 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}}
905 bar();
906 }
907 #pragma omp for simd
908 for (int i = 0; i < 10; ++i) {
909 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
910 ++a;
911 }
912 #pragma omp for simd
913 for (int i = 0; i < 10; ++i) {
914 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
915 ++a;
916 }
917 #pragma omp for simd
918 for (int i = 0; i < 10; ++i) {
919 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
920 ++a;
921 }
922 #pragma omp for simd
923 for (int i = 0; i < 10; ++i) {
924 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
925 for (int i = 0; i < 10; ++i)
926 ;
927 }
928 #pragma omp for simd
929 for (int i = 0; i < 10; ++i) {
930 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
931 ++a;
932 }
933 #pragma omp for simd
934 for (int i = 0; i < 10; ++i) {
935 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
936 ++a;
937 }
938 #pragma omp for simd
939 for (int i = 0; i < 10; ++i) {
940 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
941 ++a;
942 }
943 #pragma omp for simd
944 for (int i = 0; i < 10; ++i) {
945 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
946 for (int i = 0; i < 10; ++i)
947 ++a;
948 }
949 #pragma omp for simd
950 for (int i = 0; i < 10; ++i) {
951 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
952 for (int j = 0; j < 10; ++j)
953 ;
954 }
955 #pragma omp for simd
956 for (int i = 0; i < 10; ++i) {
957 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
958 bar();
959 }
960 #pragma omp for simd
961 for (int i = 0; i < 10; ++i) {
962 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
963 for (int j = 0; j < 10; ++j)
964 ;
965 }
966 #pragma omp for simd
967 for (int i = 0; i < 10; ++i) {
968 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
969 for (int j = 0; j < 10; ++j)
970 ;
971 }
972 #pragma omp for simd
973 for (int i = 0; i < 10; ++i) {
974 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
975 for (int j = 0; j < 10; ++j)
976 ;
977 }
978 #pragma omp for simd
979 for (int i = 0; i < 10; ++i) {
980 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
981 for (int j = 0; j < 10; ++j)
982 ;
983 }
984 #pragma omp for simd
985 for (int i = 0; i < 10; ++i) {
986 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
987 for (int j = 0; j < 10; ++j)
988 ;
989 }
990 #pragma omp for simd
991 for (int i = 0; i < 10; ++i) {
992 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
993 for (int j = 0; j < 10; ++j)
994 ;
995 }
996 #pragma omp for simd
997 for (int i = 0; i < 10; ++i) {
998 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
999 for (int j = 0; j < 10; ++j)
1000 ;
1001 }
1002 #pragma omp for simd
1003 for (int i = 0; i < 10; ++i) {
1004 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
1005 for (int j = 0; j < 10; ++j)
1006 ;
1007 }
1008 #pragma omp for simd
1009 for (int i = 0; i < 10; ++i) {
1010 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
1011 a++;
1012 }
1013 #pragma omp for simd
1014 for (int i = 0; i < 10; ++i) {
1015 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
1016 for (int j = 0; j < 10; ++j)
1017 ;
1018 }
1019 #pragma omp for simd
1020 for (int i = 0; i < 10; ++i) {
1021 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
1022 for (int j = 0; j < 10; ++j)
1023 ;
1024 }
1025 #pragma omp for simd
1026 for (int i = 0; i < 10; ++i) {
1027 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
1028 for (int j = 0; j < 10; ++j)
1029 ;
1030 }
1031 #pragma omp for simd
1032 for (int i = 0; i < 10; ++i) {
1033 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
1034 for (int j = 0; j < 10; ++j)
1035 ;
1036 }
1037
1038 // SECTIONS DIRECTIVE
1039 #pragma omp sections
1040 {
1041 #pragma omp for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
1042 for (int i = 0; i < 10; ++i)
1043 ;
1044 }
1045 #pragma omp sections
1046 {
1047 #pragma omp simd
1048 for (int i = 0; i < 10; ++i)
1049 ;
1050 }
1051 #pragma omp sections
1052 {
1053 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
1054 for (int i = 0; i < 10; ++i)
1055 ;
1056 }
1057 #pragma omp sections
1058 {
1059 #pragma omp parallel
1060 for (int i = 0; i < 10; ++i)
1061 ;
1062 }
1063 #pragma omp sections
1064 {
1065 #pragma omp sections // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
1066 {
1067 bar();
1068 }
1069 }
1070 #pragma omp sections
1071 {
1072 #pragma omp section
1073 {
1074 bar();
1075 }
1076 }
1077 #pragma omp sections
1078 {
1079 #pragma omp parallel
1080 {
1081 #pragma omp single // OK
1082 {
1083 bar();
1084 }
1085 #pragma omp for // OK
1086 for (int i = 0; i < 10; ++i)
1087 ;
1088 #pragma omp sections // OK
1089 {
1090 bar();
1091 }
1092 }
1093 }
1094 #pragma omp sections
1095 {
1096 #pragma omp parallel master
1097 {
1098 bar();
1099 }
1100 }
1101 #pragma omp sections
1102 {
1103 #pragma omp parallel
1104 {
1105 #pragma omp master // OK
1106 {
1107 bar();
1108 }
1109 #pragma omp for // OK
1110 for (int i = 0; i < 10; ++i)
1111 ;
1112 #pragma omp master // OK
1113 {
1114 bar();
1115 }
1116 }
1117 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}
1118 bar();
1119 }
1120 #pragma omp sections
1121 {
1122 #pragma omp parallel
1123 {
1124 #pragma omp critical(A) // OK
1125 {
1126 bar();
1127 }
1128 #pragma omp for // OK
1129 for (int i = 0; i < 10; ++i)
1130 ;
1131 #pragma omp critical // OK
1132 {
1133 bar();
1134 }
1135 }
1136 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}}
1137 bar();
1138 }
1139 #pragma omp sections
1140 {
1141 #pragma omp parallel for
1142 for (int i = 0; i < 10; ++i)
1143 ;
1144 }
1145 #pragma omp sections
1146 {
1147 #pragma omp parallel for simd
1148 for (int i = 0; i < 10; ++i)
1149 ;
1150 }
1151 #pragma omp sections
1152 {
1153 #pragma omp parallel sections
1154 {
1155 bar();
1156 }
1157 }
1158 #pragma omp sections
1159 {
1160 #pragma omp task
1161 {
1162 bar();
1163 }
1164 }
1165 #pragma omp sections
1166 {
1167 #pragma omp taskyield
1168 }
1169 #pragma omp sections
1170 {
1171 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}
1172 }
1173 #pragma omp sections
1174 {
1175 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}}
1176 }
1177 #pragma omp sections
1178 {
1179 #pragma omp taskwait
1180 }
1181 #pragma omp sections
1182 {
1183 #pragma omp flush
1184 }
1185 #pragma omp sections
1186 {
1187 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
1188 bar();
1189 }
1190 #pragma omp sections
1191 {
1192 #pragma omp atomic
1193 ++a;
1194 }
1195 #pragma omp sections
1196 {
1197 #pragma omp target
1198 ++a;
1199 }
1200 #pragma omp sections
1201 {
1202 #pragma omp target parallel
1203 ++a;
1204 }
1205 #pragma omp sections
1206 {
1207 #pragma omp target parallel for
1208 for (int i = 0; i < 10; ++i)
1209 ;
1210 }
1211 #pragma omp sections
1212 {
1213 #pragma omp target enter data map(to: a)
1214 }
1215 #pragma omp sections
1216 {
1217 #pragma omp target exit data map(from: a)
1218 }
1219 #pragma omp sections
1220 {
1221 #pragma omp teams // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
1222 ++a;
1223 }
1224 #pragma omp sections
1225 {
1226 #pragma omp taskloop
1227 for (int i = 0; i < 10; ++i)
1228 ++a;
1229 }
1230 #pragma omp sections
1231 {
1232 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
1233 for (int i = 0; i < 10; ++i)
1234 ;
1235 }
1236 #pragma omp sections
1237 {
1238 #pragma omp target update to(a)
1239 }
1240 #pragma omp sections
1241 {
1242 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
1243 for (int i = 0; i < 10; ++i)
1244 ;
1245 }
1246 #pragma omp sections
1247 {
1248 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
1249 for (int i = 0; i < 10; ++i)
1250 ;
1251 }
1252 #pragma omp sections
1253 {
1254 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
1255 for (int i = 0; i < 10; ++i)
1256 ;
1257 }
1258 #pragma omp sections
1259 {
1260 #pragma omp target simd // OK
1261 for (int i = 0; i < 10; ++i)
1262 ;
1263 }
1264 #pragma omp sections
1265 {
1266 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
1267 for (int i = 0; i < 10; ++i)
1268 ;
1269 }
1270 #pragma omp sections
1271 {
1272 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
1273 for (int i = 0; i < 10; ++i)
1274 ;
1275 }
1276 #pragma omp sections
1277 {
1278 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
1279 for (int i = 0; i < 10; ++i)
1280 ;
1281 }
1282 #pragma omp sections
1283 {
1284 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
1285 for (int i = 0; i < 10; ++i)
1286 ;
1287 }
1288 #pragma omp sections
1289 {
1290 #pragma omp target teams // OK
1291 ++a;
1292 }
1293 #pragma omp sections
1294 {
1295 #pragma omp target teams distribute // OK
1296 for (int i = 0; i < 10; ++i)
1297 ;
1298 }
1299 #pragma omp sections
1300 {
1301 #pragma omp target teams distribute parallel for // OK
1302 for (int i = 0; i < 10; ++i)
1303 ;
1304 }
1305 #pragma omp sections
1306 {
1307 #pragma omp target teams distribute parallel for simd // OK
1308 for (int i = 0; i < 10; ++i)
1309 ;
1310 }
1311 #pragma omp sections
1312 {
1313 #pragma omp target teams distribute simd // OK
1314 for (int i = 0; i < 10; ++i)
1315 ;
1316 }
1317
1318 // SECTION DIRECTIVE
1319 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}
1320 {
1321 bar();
1322 }
1323 #pragma omp sections
1324 {
1325 #pragma omp section
1326 {
1327 #pragma omp for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
1328 for (int i = 0; i < 10; ++i)
1329 ;
1330 }
1331 }
1332 #pragma omp sections
1333 {
1334 #pragma omp section
1335 {
1336 #pragma omp simd
1337 for (int i = 0; i < 10; ++i)
1338 ;
1339 }
1340 }
1341 #pragma omp sections
1342 {
1343 #pragma omp section
1344 {
1345 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
1346 for (int i = 0; i < 10; ++i)
1347 ;
1348 }
1349 }
1350 #pragma omp sections
1351 {
1352 #pragma omp section
1353 {
1354 #pragma omp parallel
1355 for (int i = 0; i < 10; ++i)
1356 ;
1357 }
1358 }
1359 #pragma omp sections
1360 {
1361 #pragma omp section
1362 {
1363 #pragma omp sections // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
1364 {
1365 bar();
1366 }
1367 }
1368 }
1369 #pragma omp sections
1370 {
1371 #pragma omp section
1372 {
1373 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}
1374 {
1375 bar();
1376 }
1377 }
1378 }
1379 #pragma omp sections
1380 {
1381 #pragma omp section
1382 {
1383 #pragma omp parallel master
1384 bar();
1385 #pragma omp critical
1386 bar();
1387 }
1388 }
1389 #pragma omp sections
1390 {
1391 #pragma omp section
1392 {
1393 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
1394 bar();
1395 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
1396 bar();
1397 #pragma omp critical
1398 bar();
1399 }
1400 }
1401 #pragma omp sections
1402 {
1403 #pragma omp section
1404 {
1405 #pragma omp parallel
1406 {
1407 #pragma omp single // OK
1408 {
1409 bar();
1410 }
1411 #pragma omp for // OK
1412 for (int i = 0; i < 10; ++i)
1413 ;
1414 #pragma omp for simd // OK
1415 for (int i = 0; i < 10; ++i)
1416 ;
1417 #pragma omp sections // OK
1418 {
1419 bar();
1420 }
1421 }
1422 }
1423 }
1424 #pragma omp sections
1425 {
1426 #pragma omp section
1427 {
1428 #pragma omp parallel for
1429 for (int i = 0; i < 10; ++i)
1430 ;
1431 }
1432 }
1433 #pragma omp sections
1434 {
1435 #pragma omp section
1436 {
1437 #pragma omp parallel for simd
1438 for (int i = 0; i < 10; ++i)
1439 ;
1440 }
1441 }
1442 #pragma omp sections
1443 {
1444 #pragma omp section
1445 {
1446 #pragma omp parallel sections
1447 {
1448 bar();
1449 }
1450 }
1451 }
1452 #pragma omp sections
1453 {
1454 #pragma omp section
1455 {
1456 #pragma omp task
1457 {
1458 bar();
1459 }
1460 }
1461 }
1462 #pragma omp sections
1463 {
1464 #pragma omp section
1465 {
1466 #pragma omp taskyield
1467 bar();
1468 }
1469 }
1470 #pragma omp sections
1471 {
1472 #pragma omp section
1473 {
1474 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}
1475 bar();
1476 }
1477 }
1478 #pragma omp sections
1479 {
1480 #pragma omp section
1481 {
1482 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}}
1483 bar();
1484 }
1485 }
1486 #pragma omp sections
1487 {
1488 #pragma omp section
1489 {
1490 #pragma omp taskwait
1491 bar();
1492 }
1493 }
1494 #pragma omp sections
1495 {
1496 #pragma omp section
1497 {
1498 #pragma omp flush
1499 bar();
1500 }
1501 }
1502 #pragma omp sections
1503 {
1504 #pragma omp section
1505 {
1506 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
1507 bar();
1508 }
1509 }
1510 #pragma omp sections
1511 {
1512 #pragma omp section
1513 #pragma omp atomic
1514 ++a;
1515 }
1516 #pragma omp sections
1517 {
1518 #pragma omp section
1519 #pragma omp target
1520 ++a;
1521 }
1522 #pragma omp sections
1523 {
1524 #pragma omp section
1525 #pragma omp target parallel
1526 ++a;
1527 }
1528 #pragma omp sections
1529 {
1530 #pragma omp section
1531 {
1532 #pragma omp target parallel for
1533 for (int i = 0; i < 10; ++i)
1534 ;
1535 }
1536 }
1537 #pragma omp sections
1538 {
1539 #pragma omp section
1540 {
1541 #pragma omp target enter data map(to: a)
1542 ++a;
1543 }
1544 }
1545 #pragma omp sections
1546 {
1547 #pragma omp section
1548 {
1549 #pragma omp target exit data map(from: a)
1550 ++a;
1551 }
1552 }
1553 #pragma omp sections
1554 {
1555 #pragma omp section
1556 #pragma omp teams // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
1557 ++a;
1558 }
1559 #pragma omp sections
1560 {
1561 #pragma omp section
1562 #pragma omp taskloop
1563 for (int i = 0; i < 10; ++i)
1564 ++a;
1565 }
1566 #pragma omp sections
1567 {
1568 #pragma omp section
1569 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
1570 for (int i = 0; i < 10; ++i)
1571 ;
1572 }
1573 #pragma omp sections
1574 {
1575 #pragma omp section
1576 {
1577 bar();
1578 #pragma omp target update to(a)
1579 }
1580 }
1581 #pragma omp sections
1582 {
1583 #pragma omp section
1584 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
1585 for (int i = 0; i < 10; ++i)
1586 ;
1587 }
1588 #pragma omp sections
1589 {
1590 #pragma omp section
1591 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
1592 for (int i = 0; i < 10; ++i)
1593 ;
1594 }
1595 #pragma omp sections
1596 {
1597 #pragma omp section
1598 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
1599 for (int i = 0; i < 10; ++i)
1600 ;
1601 }
1602 #pragma omp sections
1603 {
1604 #pragma omp section
1605 #pragma omp target simd // OK
1606 for (int i = 0; i < 10; ++i)
1607 ;
1608 }
1609 #pragma omp sections
1610 {
1611 #pragma omp section
1612 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
1613 for (int i = 0; i < 10; ++i)
1614 ;
1615 }
1616 #pragma omp sections
1617 {
1618 #pragma omp section
1619 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
1620 for (int i = 0; i < 10; ++i)
1621 ;
1622 }
1623 #pragma omp sections
1624 {
1625 #pragma omp section
1626 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
1627 for (int i = 0; i < 10; ++i)
1628 ;
1629 }
1630 #pragma omp sections
1631 {
1632 #pragma omp section
1633 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
1634 for (int i = 0; i < 10; ++i)
1635 ;
1636 }
1637 #pragma omp sections
1638 {
1639 #pragma omp section
1640 #pragma omp target teams // OK
1641 ++a;
1642 }
1643 #pragma omp sections
1644 {
1645 #pragma omp section
1646 #pragma omp target teams distribute // OK
1647 for (int i = 0; i < 10; ++i)
1648 ;
1649 }
1650 #pragma omp sections
1651 {
1652 #pragma omp section
1653 #pragma omp target teams distribute parallel for // OK
1654 for (int i = 0; i < 10; ++i)
1655 ;
1656 }
1657 #pragma omp sections
1658 {
1659 #pragma omp section
1660 #pragma omp target teams distribute parallel for simd // OK
1661 for (int i = 0; i < 10; ++i)
1662 ;
1663 }
1664 #pragma omp sections
1665 {
1666 #pragma omp section
1667 #pragma omp target teams distribute simd // OK
1668 for (int i = 0; i < 10; ++i)
1669 ;
1670 }
1671
1672 // SINGLE DIRECTIVE
1673 #pragma omp single
1674 {
1675 #pragma omp for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
1676 for (int i = 0; i < 10; ++i)
1677 ;
1678 }
1679 #pragma omp single
1680 {
1681 #pragma omp simd
1682 for (int i = 0; i < 10; ++i)
1683 ;
1684 }
1685 #pragma omp single
1686 {
1687 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
1688 for (int i = 0; i < 10; ++i)
1689 ;
1690 }
1691 #pragma omp single
1692 {
1693 #pragma omp parallel
1694 for (int i = 0; i < 10; ++i)
1695 ;
1696 }
1697 #pragma omp single
1698 {
1699 #pragma omp single // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
1700 {
1701 bar();
1702 }
1703 }
1704 #pragma omp single
1705 {
1706 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}
1707 {
1708 bar();
1709 }
1710 }
1711 #pragma omp single
1712 {
1713 #pragma omp parallel master
1714 {
1715 bar();
1716 }
1717 }
1718 #pragma omp single
1719 {
1720 #pragma omp critical
1721 {
1722 bar();
1723 }
1724 }
1725 #pragma omp single
1726 {
1727 #pragma omp sections // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
1728 {
1729 bar();
1730 }
1731 }
1732 #pragma omp single
1733 {
1734 #pragma omp parallel
1735 {
1736 #pragma omp single // OK
1737 {
1738 bar();
1739 }
1740 #pragma omp for // OK
1741 for (int i = 0; i < 10; ++i)
1742 ;
1743 #pragma omp for simd // OK
1744 for (int i = 0; i < 10; ++i)
1745 ;
1746 #pragma omp sections // OK
1747 {
1748 bar();
1749 }
1750 }
1751 }
1752 #pragma omp single
1753 {
1754 #pragma omp parallel for
1755 for (int i = 0; i < 10; ++i)
1756 ;
1757 }
1758 #pragma omp single
1759 {
1760 #pragma omp parallel for simd
1761 for (int i = 0; i < 10; ++i)
1762 ;
1763 }
1764 #pragma omp single
1765 {
1766 #pragma omp parallel sections
1767 {
1768 bar();
1769 }
1770 }
1771 #pragma omp single
1772 {
1773 #pragma omp task
1774 {
1775 bar();
1776 }
1777 }
1778 #pragma omp single
1779 {
1780 #pragma omp taskyield
1781 bar();
1782 }
1783 #pragma omp single
1784 {
1785 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}
1786 bar();
1787 }
1788 #pragma omp single
1789 {
1790 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}}
1791 bar();
1792 }
1793 #pragma omp single
1794 {
1795 #pragma omp taskwait
1796 bar();
1797 }
1798 #pragma omp single
1799 {
1800 #pragma omp flush
1801 bar();
1802 }
1803 #pragma omp single
1804 {
1805 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
1806 bar();
1807 }
1808 #pragma omp single
1809 {
1810 #pragma omp atomic
1811 ++a;
1812 }
1813 #pragma omp single
1814 {
1815 #pragma omp target
1816 ++a;
1817 }
1818 #pragma omp single
1819 {
1820 #pragma omp target parallel
1821 ++a;
1822 }
1823 #pragma omp single
1824 {
1825 #pragma omp target parallel for
1826 for (int i = 0; i < 10; ++i)
1827 ;
1828 }
1829 #pragma omp single
1830 {
1831 #pragma omp target enter data map(to: a)
1832 ++a;
1833 }
1834 #pragma omp single
1835 {
1836 #pragma omp target exit data map(from: a)
1837 ++a;
1838 }
1839 #pragma omp single
1840 {
1841 #pragma omp teams // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
1842 ++a;
1843 }
1844 #pragma omp single
1845 {
1846 #pragma omp taskloop
1847 for (int i = 0; i < 10; ++i)
1848 ++a;
1849 }
1850 #pragma omp single
1851 {
1852 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
1853 for (int i = 0; i < 10; ++i)
1854 ;
1855 }
1856 #pragma omp single
1857 {
1858 #pragma omp target update to(a)
1859 bar();
1860 }
1861 #pragma omp single
1862 {
1863 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
1864 for (int i = 0; i < 10; ++i)
1865 ;
1866 }
1867 #pragma omp single
1868 {
1869 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
1870 for (int i = 0; i < 10; ++i)
1871 ;
1872 }
1873 #pragma omp single
1874 {
1875 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
1876 for (int i = 0; i < 10; ++i)
1877 ;
1878 }
1879 #pragma omp single
1880 {
1881 #pragma omp target simd // OK
1882 for (int i = 0; i < 10; ++i)
1883 ;
1884 }
1885 #pragma omp single
1886 {
1887 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
1888 for (int i = 0; i < 10; ++i)
1889 ;
1890 }
1891 #pragma omp single
1892 {
1893 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
1894 for (int i = 0; i < 10; ++i)
1895 ;
1896 }
1897 #pragma omp single
1898 {
1899 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
1900 for (int i = 0; i < 10; ++i)
1901 ;
1902 }
1903 #pragma omp single
1904 {
1905 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
1906 for (int i = 0; i < 10; ++i)
1907 ;
1908 }
1909 #pragma omp single
1910 {
1911 #pragma omp target teams // OK
1912 ++a;
1913 }
1914 #pragma omp single
1915 {
1916 #pragma omp target teams distribute // OK
1917 for (int i = 0; i < 10; ++i)
1918 ;
1919 }
1920 #pragma omp single
1921 {
1922 #pragma omp target teams distribute parallel for // OK
1923 for (int i = 0; i < 10; ++i)
1924 ;
1925 }
1926 #pragma omp single
1927 {
1928 #pragma omp target teams distribute parallel for simd // OK
1929 for (int i = 0; i < 10; ++i)
1930 ;
1931 }
1932 #pragma omp single
1933 {
1934 #pragma omp target teams distribute simd // OK
1935 for (int i = 0; i < 10; ++i)
1936 ;
1937 }
1938
1939 // MASTER DIRECTIVE
1940 #pragma omp master
1941 {
1942 #pragma omp for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
1943 for (int i = 0; i < 10; ++i)
1944 ;
1945 }
1946 #pragma omp master
1947 {
1948 #pragma omp simd
1949 for (int i = 0; i < 10; ++i)
1950 ;
1951 }
1952 #pragma omp master
1953 {
1954 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
1955 for (int i = 0; i < 10; ++i)
1956 ;
1957 }
1958 #pragma omp master
1959 {
1960 #pragma omp parallel
1961 for (int i = 0; i < 10; ++i)
1962 ;
1963 }
1964 #pragma omp master
1965 {
1966 #pragma omp single // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
1967 {
1968 bar();
1969 }
1970 }
1971 #pragma omp master
1972 {
1973 #pragma omp master // OK, though second 'master' is redundant
1974 {
1975 bar();
1976 }
1977 }
1978 #pragma omp master
1979 {
1980 #pragma omp critical
1981 {
1982 bar();
1983 }
1984 }
1985 #pragma omp master
1986 {
1987 #pragma omp sections // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
1988 {
1989 bar();
1990 }
1991 }
1992 #pragma omp master
1993 {
1994 #pragma omp parallel
1995 {
1996 #pragma omp master // OK
1997 {
1998 bar();
1999 }
2000 #pragma omp for // OK
2001 for (int i = 0; i < 10; ++i)
2002 ;
2003 #pragma omp for simd // OK
2004 for (int i = 0; i < 10; ++i)
2005 ;
2006 #pragma omp sections // OK
2007 {
2008 bar();
2009 }
2010 }
2011 }
2012 #pragma omp master
2013 {
2014 #pragma omp parallel master // OK
2015 {
2016 bar();
2017 }
2018 #pragma omp parallel
2019 {
2020 #pragma omp for // OK
2021 for (int i = 0; i < 10; ++i)
2022 ;
2023 #pragma omp for simd // OK
2024 for (int i = 0; i < 10; ++i)
2025 ;
2026 #pragma omp sections // OK
2027 {
2028 bar();
2029 }
2030 }
2031 }
2032 #pragma omp master
2033 {
2034 #pragma omp parallel for
2035 for (int i = 0; i < 10; ++i)
2036 ;
2037 }
2038 #pragma omp master
2039 {
2040 #pragma omp parallel for simd
2041 for (int i = 0; i < 10; ++i)
2042 ;
2043 }
2044 #pragma omp master
2045 {
2046 #pragma omp parallel sections
2047 {
2048 bar();
2049 }
2050 }
2051 #pragma omp master
2052 {
2053 #pragma omp task
2054 {
2055 bar();
2056 }
2057 }
2058 #pragma omp master
2059 {
2060 #pragma omp taskyield
2061 bar();
2062 }
2063 #pragma omp master
2064 {
2065 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}
2066 bar();
2067 }
2068 #pragma omp master
2069 {
2070 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}}
2071 bar();
2072 }
2073 #pragma omp master
2074 {
2075 #pragma omp taskwait
2076 bar();
2077 }
2078 #pragma omp master
2079 {
2080 #pragma omp flush
2081 bar();
2082 }
2083 #pragma omp master
2084 {
2085 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
2086 bar();
2087 }
2088 #pragma omp master
2089 {
2090 #pragma omp atomic
2091 ++a;
2092 }
2093 #pragma omp master
2094 {
2095 #pragma omp target
2096 ++a;
2097 }
2098 #pragma omp master
2099 {
2100 #pragma omp target parallel
2101 ++a;
2102 }
2103 #pragma omp master
2104 {
2105 #pragma omp target parallel for
2106 for (int i = 0; i < 10; ++i)
2107 ;
2108 }
2109 #pragma omp master
2110 {
2111 #pragma omp target enter data map(to: a)
2112 ++a;
2113 }
2114 #pragma omp master
2115 {
2116 #pragma omp target exit data map(from: a)
2117 ++a;
2118 }
2119 #pragma omp master
2120 {
2121 #pragma omp teams // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
2122 ++a;
2123 }
2124 #pragma omp master
2125 {
2126 #pragma omp taskloop
2127 for (int i = 0; i < 10; ++i)
2128 ++a;
2129 }
2130 #pragma omp master
2131 {
2132 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
2133 for (int i = 0; i < 10; ++i)
2134 ;
2135 }
2136 #pragma omp master
2137 {
2138 #pragma omp target update to(a)
2139 bar();
2140 }
2141 #pragma omp master
2142 {
2143 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
2144 for (int i = 0; i < 10; ++i)
2145 ;
2146 }
2147 #pragma omp master
2148 {
2149 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
2150 for (int i = 0; i < 10; ++i)
2151 ;
2152 }
2153 #pragma omp master
2154 {
2155 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
2156 for (int i = 0; i < 10; ++i)
2157 ;
2158 }
2159 #pragma omp master
2160 {
2161 #pragma omp target simd // OK
2162 for (int i = 0; i < 10; ++i)
2163 ;
2164 }
2165 #pragma omp master
2166 {
2167 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
2168 for (int i = 0; i < 10; ++i)
2169 ;
2170 }
2171 #pragma omp master
2172 {
2173 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
2174 for (int i = 0; i < 10; ++i)
2175 ;
2176 }
2177 #pragma omp master
2178 {
2179 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
2180 for (int i = 0; i < 10; ++i)
2181 ;
2182 }
2183 #pragma omp master
2184 {
2185 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
2186 for (int i = 0; i < 10; ++i)
2187 ;
2188 }
2189 #pragma omp master
2190 {
2191 #pragma omp target teams // OK
2192 a++;
2193 }
2194 #pragma omp master
2195 {
2196 #pragma omp target teams distribute // OK
2197 for (int i = 0; i < 10; ++i)
2198 ;
2199 }
2200 #pragma omp master
2201 {
2202 #pragma omp target teams distribute parallel for // OK
2203 for (int i = 0; i < 10; ++i)
2204 ;
2205 }
2206 #pragma omp master
2207 {
2208 #pragma omp target teams distribute parallel for simd // OK
2209 for (int i = 0; i < 10; ++i)
2210 ;
2211 }
2212 #pragma omp master
2213 {
2214 #pragma omp target teams distribute simd // OK
2215 for (int i = 0; i < 10; ++i)
2216 ;
2217 }
2218
2219 // CRITICAL DIRECTIVE
2220 #pragma omp critical
2221 {
2222 #pragma omp for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
2223 for (int i = 0; i < 10; ++i)
2224 ;
2225 }
2226 #pragma omp critical
2227 {
2228 #pragma omp simd
2229 for (int i = 0; i < 10; ++i)
2230 ;
2231 }
2232 #pragma omp critical
2233 {
2234 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
2235 for (int i = 0; i < 10; ++i)
2236 ;
2237 }
2238 #pragma omp critical
2239 {
2240 #pragma omp parallel
2241 for (int i = 0; i < 10; ++i)
2242 ;
2243 }
2244 #pragma omp critical
2245 {
2246 #pragma omp single // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
2247 {
2248 bar();
2249 }
2250 }
2251 #pragma omp critical
2252 {
2253 #pragma omp master // OK, though second 'master' is redundant
2254 {
2255 bar();
2256 }
2257 }
2258 #pragma omp critical
2259 {
2260 #pragma omp critical
2261 {
2262 bar();
2263 }
2264 }
2265 #pragma omp critical
2266 {
2267 #pragma omp sections // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
2268 {
2269 bar();
2270 }
2271 }
2272 #pragma omp critical
2273 {
2274 #pragma omp parallel
2275 {
2276 #pragma omp master // OK
2277 {
2278 bar();
2279 }
2280 #pragma omp for // OK
2281 for (int i = 0; i < 10; ++i)
2282 ;
2283 #pragma omp for simd // OK
2284 for (int i = 0; i < 10; ++i)
2285 ;
2286 #pragma omp sections // OK
2287 {
2288 bar();
2289 }
2290 }
2291 }
2292 #pragma omp critical
2293 {
2294 #pragma omp parallel master
2295 {
2296 bar();
2297 }
2298 }
2299 #pragma omp critical
2300 {
2301 #pragma omp parallel for
2302 for (int i = 0; i < 10; ++i)
2303 ;
2304 }
2305 #pragma omp critical
2306 {
2307 #pragma omp parallel for simd
2308 for (int i = 0; i < 10; ++i)
2309 ;
2310 }
2311 #pragma omp critical
2312 {
2313 #pragma omp parallel sections
2314 {
2315 bar();
2316 }
2317 }
2318 #pragma omp critical
2319 {
2320 #pragma omp task
2321 {
2322 bar();
2323 }
2324 }
2325 #pragma omp critical
2326 {
2327 #pragma omp taskyield
2328 bar();
2329 }
2330 #pragma omp critical
2331 {
2332 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}
2333 bar();
2334 }
2335 #pragma omp critical
2336 {
2337 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}}
2338 bar();
2339 }
2340 #pragma omp critical
2341 {
2342 #pragma omp taskwait
2343 bar();
2344 }
2345 #pragma omp critical(Tuzik)
2346 {
2347 #pragma omp critical(grelka)
2348 bar();
2349 }
2350 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}}
2351 {
2352 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}}
2353 {
2354 #pragma omp critical(Tuzik)
2355 {
2356 #pragma omp parallel
2357 #pragma omp critical(grelka)
2358 {
2359 bar();
2360 }
2361 }
2362 }
2363 }
2364 #pragma omp critical
2365 {
2366 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
2367 bar();
2368 }
2369 #pragma omp critical
2370 {
2371 #pragma omp atomic
2372 ++a;
2373 }
2374 #pragma omp critical
2375 {
2376 #pragma omp target
2377 ++a;
2378 }
2379 #pragma omp critical
2380 {
2381 #pragma omp target parallel
2382 ++a;
2383 }
2384 #pragma omp critical
2385 {
2386 #pragma omp target parallel for
2387 for (int i = 0; i < 10; ++i)
2388 ;
2389 }
2390 #pragma omp critical
2391 {
2392 #pragma omp target enter data map(to: a)
2393 ++a;
2394 }
2395 #pragma omp critical
2396 {
2397 #pragma omp target exit data map(from: a)
2398 ++a;
2399 }
2400 #pragma omp critical
2401 {
2402 #pragma omp teams // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
2403 ++a;
2404 }
2405 #pragma omp critical
2406 {
2407 #pragma omp taskloop
2408 for (int i = 0; i < 10; ++i)
2409 ++a;
2410 }
2411 #pragma omp critical
2412 {
2413 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
2414 for (int i = 0; i < 10; ++i)
2415 ;
2416 }
2417 #pragma omp critical
2418 {
2419 #pragma omp target update to(a)
2420 bar();
2421 }
2422 #pragma omp critical
2423 {
2424 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
2425 for (int i = 0; i < 10; ++i)
2426 ;
2427 }
2428 #pragma omp critical
2429 {
2430 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
2431 for (int i = 0; i < 10; ++i)
2432 ;
2433 }
2434 #pragma omp critical
2435 {
2436 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
2437 for (int i = 0; i < 10; ++i)
2438 ;
2439 }
2440 #pragma omp critical
2441 {
2442 #pragma omp target simd // OK
2443 for (int i = 0; i < 10; ++i)
2444 ;
2445 }
2446 #pragma omp critical
2447 {
2448 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
2449 for (int i = 0; i < 10; ++i)
2450 ;
2451 }
2452 #pragma omp critical
2453 {
2454 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
2455 for (int i = 0; i < 10; ++i)
2456 ;
2457 }
2458 #pragma omp critical
2459 {
2460 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
2461 for (int i = 0; i < 10; ++i)
2462 ;
2463 }
2464 #pragma omp critical
2465 {
2466 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
2467 for (int i = 0; i < 10; ++i)
2468 ;
2469 }
2470 #pragma omp critical
2471 {
2472 #pragma omp target teams // OK
2473 a++;
2474 }
2475 #pragma omp critical
2476 {
2477 #pragma omp target teams distribute // OK
2478 for (int i = 0; i < 10; ++i)
2479 ;
2480 }
2481 #pragma omp critical
2482 {
2483 #pragma omp target teams distribute parallel for // OK
2484 for (int i = 0; i < 10; ++i)
2485 ;
2486 }
2487 #pragma omp critical
2488 {
2489 #pragma omp target teams distribute parallel for simd // OK
2490 for (int i = 0; i < 10; ++i)
2491 ;
2492 }
2493 #pragma omp critical
2494 {
2495 #pragma omp target teams distribute simd // OK
2496 for (int i = 0; i < 10; ++i)
2497 ;
2498 }
2499
2500 // PARALLEL FOR DIRECTIVE
2501 #pragma omp parallel for
2502 for (int i = 0; i < 10; ++i) {
2503 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
2504 for (int i = 0; i < 10; ++i)
2505 ;
2506 }
2507 #pragma omp parallel for
2508 for (int i = 0; i < 10; ++i) {
2509 #pragma omp simd
2510 for (int i = 0; i < 10; ++i)
2511 ;
2512 }
2513 #pragma omp parallel for
2514 for (int i = 0; i < 10; ++i) {
2515 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
2516 for (int i = 0; i < 10; ++i)
2517 ;
2518 }
2519 #pragma omp parallel for
2520 for (int i = 0; i < 10; ++i) {
2521 #pragma omp parallel
2522 for (int i = 0; i < 10; ++i)
2523 ;
2524 }
2525 #pragma omp parallel for
2526 for (int i = 0; i < 10; ++i) {
2527 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
2528 {
2529 bar();
2530 }
2531 }
2532 #pragma omp parallel for
2533 for (int i = 0; i < 10; ++i) {
2534 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}
2535 {
2536 bar();
2537 }
2538 }
2539 #pragma omp parallel for
2540 for (int i = 0; i < 10; ++i) {
2541 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
2542 {
2543 bar();
2544 }
2545 }
2546
2547 #pragma omp parallel for
2548 for (int i = 0; i < 10; ++i) {
2549 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}
2550 {
2551 bar();
2552 }
2553 }
2554
2555 #pragma omp parallel for
2556 for (int i = 0; i < 10; ++i) {
2557 #pragma omp critical
2558 {
2559 bar();
2560 }
2561 }
2562
2563 #pragma omp parallel for
2564 for (int i = 0; i < 10; ++i) {
2565 #pragma omp parallel
2566 {
2567 #pragma omp single // OK
2568 {
2569 bar();
2570 }
2571 #pragma omp for // OK
2572 for (int i = 0; i < 10; ++i)
2573 ;
2574 #pragma omp for simd // OK
2575 for (int i = 0; i < 10; ++i)
2576 ;
2577 #pragma omp sections // OK
2578 {
2579 bar();
2580 }
2581 }
2582 }
2583 #pragma omp parallel for
2584 for (int i = 0; i < 10; ++i) {
2585 #pragma omp parallel for
2586 for (int i = 0; i < 10; ++i)
2587 ;
2588 }
2589 #pragma omp parallel for
2590 for (int i = 0; i < 10; ++i) {
2591 #pragma omp parallel for simd
2592 for (int i = 0; i < 10; ++i)
2593 ;
2594 }
2595 #pragma omp parallel for
2596 for (int i = 0; i < 10; ++i) {
2597 #pragma omp parallel sections
2598 {
2599 bar();
2600 }
2601 }
2602 #pragma omp parallel for
2603 for (int i = 0; i < 10; ++i) {
2604 #pragma omp task
2605 {
2606 bar();
2607 }
2608 }
2609 #pragma omp parallel for
2610 for (int i = 0; i < 10; ++i) {
2611 #pragma omp taskyield
2612 bar();
2613 }
2614 #pragma omp parallel for
2615 for (int i = 0; i < 10; ++i) {
2616 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}
2617 bar();
2618 }
2619 #pragma omp parallel for
2620 for (int i = 0; i < 10; ++i) {
2621 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
2622 bar();
2623 }
2624 #pragma omp parallel for
2625 for (int i = 0; i < 10; ++i) {
2626 #pragma omp taskwait
2627 bar();
2628 }
2629 #pragma omp parallel for
2630 for (int i = 0; i < 10; ++i) {
2631 #pragma omp flush
2632 bar();
2633 }
2634 #pragma omp parallel for
2635 for (int i = 0; i < 10; ++i) {
2636 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
2637 bar();
2638 }
2639 #pragma omp parallel for ordered
2640 for (int i = 0; i < 10; ++i) {
2641 #pragma omp ordered // OK
2642 bar();
2643 }
2644 #pragma omp parallel for
2645 for (int i = 0; i < 10; ++i) {
2646 #pragma omp atomic
2647 ++a;
2648 }
2649 #pragma omp parallel for
2650 for (int i = 0; i < 10; ++i) {
2651 #pragma omp target
2652 ++a;
2653 }
2654 #pragma omp parallel for
2655 for (int i = 0; i < 10; ++i) {
2656 #pragma omp target parallel
2657 ++a;
2658 }
2659 #pragma omp parallel for
2660 for (int i = 0; i < 10; ++i) {
2661 #pragma omp target parallel for
2662 for (int i = 0; i < 10; ++i)
2663 ;
2664 }
2665 #pragma omp parallel for
2666 for (int i = 0; i < 10; ++i) {
2667 #pragma omp target enter data map(to: a)
2668 ++a;
2669 }
2670 #pragma omp parallel for
2671 for (int i = 0; i < 10; ++i) {
2672 #pragma omp target exit data map(from: a)
2673 ++a;
2674 }
2675 #pragma omp parallel for
2676 for (int i = 0; i < 10; ++i) {
2677 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
2678 ++a;
2679 }
2680 #pragma omp parallel for
2681 for (int i = 0; i < 10; ++i) {
2682 #pragma omp taskloop
2683 for (int i = 0; i < 10; ++i)
2684 ++a;
2685 }
2686 #pragma omp parallel for
2687 for (int i = 0; i < 10; ++i) {
2688 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
2689 for (int j = 0; j < 10; ++j)
2690 ;
2691 }
2692 #pragma omp parallel for
2693 for (int i = 0; i < 10; ++i) {
2694 #pragma omp target update to(a)
2695 }
2696 #pragma omp parallel for
2697 for (int i = 0; i < 10; ++i) {
2698 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
2699 for (int j = 0; j < 10; ++j)
2700 ;
2701 }
2702 #pragma omp parallel for
2703 for (int i = 0; i < 10; ++i) {
2704 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
2705 for (int j = 0; j < 10; ++j)
2706 ;
2707 }
2708 #pragma omp parallel for
2709 for (int i = 0; i < 10; ++i) {
2710 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
2711 for (int j = 0; j < 10; ++j)
2712 ;
2713 }
2714 #pragma omp parallel for
2715 for (int i = 0; i < 10; ++i) {
2716 #pragma omp target simd // OK
2717 for (int j = 0; j < 10; ++j)
2718 ;
2719 }
2720 #pragma omp parallel for
2721 for (int i = 0; i < 10; ++i) {
2722 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
2723 for (int j = 0; j < 10; ++j)
2724 ;
2725 }
2726 #pragma omp parallel for
2727 for (int i = 0; i < 10; ++i) {
2728 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
2729 for (int j = 0; j < 10; ++j)
2730 ;
2731 }
2732 #pragma omp parallel for
2733 for (int i = 0; i < 10; ++i) {
2734 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
2735 for (int j = 0; j < 10; ++j)
2736 ;
2737 }
2738 #pragma omp parallel for
2739 for (int i = 0; i < 10; ++i) {
2740 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
2741 for (int j = 0; j < 10; ++j)
2742 ;
2743 }
2744 #pragma omp parallel for
2745 for (int i = 0; i < 10; ++i) {
2746 #pragma omp target teams // OK
2747 a++;
2748 }
2749 #pragma omp parallel for
2750 for (int i = 0; i < 10; ++i) {
2751 #pragma omp target teams distribute // OK
2752 for (int j = 0; j < 10; ++j)
2753 ;
2754 }
2755 #pragma omp parallel for
2756 for (int i = 0; i < 10; ++i) {
2757 #pragma omp target teams distribute parallel for // OK
2758 for (int j = 0; j < 10; ++j)
2759 ;
2760 }
2761 #pragma omp parallel for
2762 for (int i = 0; i < 10; ++i) {
2763 #pragma omp target teams distribute parallel for simd // OK
2764 for (int j = 0; j < 10; ++j)
2765 ;
2766 }
2767 #pragma omp parallel for
2768 for (int i = 0; i < 10; ++i) {
2769 #pragma omp target teams distribute simd // OK
2770 for (int j = 0; j < 10; ++j)
2771 ;
2772 }
2773
2774 // PARALLEL FOR SIMD DIRECTIVE
2775 #pragma omp parallel for simd
2776 for (int i = 0; i < 10; ++i) {
2777 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2778 for (int i = 0; i < 10; ++i)
2779 ;
2780 }
2781 #pragma omp parallel for simd
2782 for (int i = 0; i < 10; ++i) {
2783 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
2784 for (int i = 0; i < 10; ++i)
2785 ;
2786 }
2787 #pragma omp parallel for simd
2788 for (int i = 0; i < 10; ++i) {
2789 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2790 for (int i = 0; i < 10; ++i)
2791 ;
2792 }
2793 #pragma omp parallel for simd
2794 for (int i = 0; i < 10; ++i) {
2795 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2796 for (int i = 0; i < 10; ++i)
2797 ;
2798 }
2799 #pragma omp parallel for simd
2800 for (int i = 0; i < 10; ++i) {
2801 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2802 {
2803 bar();
2804 }
2805 }
2806 #pragma omp parallel for simd
2807 for (int i = 0; i < 10; ++i) {
2808 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2809 {
2810 bar();
2811 }
2812 }
2813 #pragma omp parallel for simd
2814 for (int i = 0; i < 10; ++i) {
2815 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2816 {
2817 bar();
2818 }
2819 }
2820
2821 #pragma omp parallel for simd
2822 for (int i = 0; i < 10; ++i) {
2823 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2824 {
2825 bar();
2826 }
2827 }
2828
2829 #pragma omp parallel for simd
2830 for (int i = 0; i < 10; ++i) {
2831 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2832 {
2833 bar();
2834 }
2835 }
2836
2837 #pragma omp parallel for simd
2838 for (int i = 0; i < 10; ++i) {
2839 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2840 {
2841 #pragma omp single
2842 {
2843 bar();
2844 }
2845 #pragma omp for
2846 for (int i = 0; i < 10; ++i)
2847 ;
2848 #pragma omp for simd
2849 for (int i = 0; i < 10; ++i)
2850 ;
2851 #pragma omp sections
2852 {
2853 bar();
2854 }
2855 }
2856 }
2857 #pragma omp parallel for simd
2858 for (int i = 0; i < 10; ++i) {
2859 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2860 for (int i = 0; i < 10; ++i)
2861 ;
2862 }
2863 #pragma omp parallel for simd
2864 for (int i = 0; i < 10; ++i) {
2865 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}
2866 for (int i = 0; i < 10; ++i)
2867 ;
2868 }
2869 #pragma omp parallel for simd
2870 for (int i = 0; i < 10; ++i) {
2871 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2872 {
2873 bar();
2874 }
2875 }
2876 #pragma omp parallel for simd
2877 for (int i = 0; i < 10; ++i) {
2878 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2879 {
2880 bar();
2881 }
2882 }
2883 #pragma omp parallel for simd
2884 for (int i = 0; i < 10; ++i) {
2885 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2886 bar();
2887 }
2888 #pragma omp parallel for simd
2889 for (int i = 0; i < 10; ++i) {
2890 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2891 bar();
2892 }
2893 #pragma omp parallel for simd
2894 for (int i = 0; i < 10; ++i) {
2895 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
2896 bar();
2897 }
2898 #pragma omp parallel for simd
2899 for (int i = 0; i < 10; ++i) {
2900 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2901 bar();
2902 }
2903 #pragma omp parallel for simd
2904 for (int i = 0; i < 10; ++i) {
2905 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2906 bar();
2907 }
2908 #pragma omp parallel for simd
2909 for (int i = 0; i < 10; ++i) {
2910 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2911 bar();
2912 }
2913 #pragma omp parallel for simd
2914 for (int i = 0; i < 10; ++i) {
2915 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2916 bar();
2917 }
2918 #pragma omp parallel for simd
2919 for (int i = 0; i < 10; ++i) {
2920 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
2921 ++a;
2922 }
2923 #pragma omp parallel for simd
2924 for (int i = 0; i < 10; ++i) {
2925 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2926 ++a;
2927 }
2928 #pragma omp parallel for simd
2929 for (int i = 0; i < 10; ++i) {
2930 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2931 ++a;
2932 }
2933 #pragma omp parallel for simd
2934 for (int i = 0; i < 10; ++i) {
2935 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2936 for (int i = 0; i < 10; ++i)
2937 ;
2938 }
2939 #pragma omp parallel for simd
2940 for (int i = 0; i < 10; ++i) {
2941 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2942 ++a;
2943 }
2944 #pragma omp parallel for simd
2945 for (int i = 0; i < 10; ++i) {
2946 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2947 ++a;
2948 }
2949 #pragma omp parallel for simd
2950 for (int i = 0; i < 10; ++i) {
2951 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2952 ++a;
2953 }
2954 #pragma omp parallel for simd
2955 for (int i = 0; i < 10; ++i) {
2956 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2957 for (int i = 0; i < 10; ++i)
2958 ++a;
2959 }
2960 #pragma omp parallel for simd
2961 for (int i = 0; i < 10; ++i) {
2962 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2963 for (int j = 0; j < 10; ++j)
2964 ;
2965 }
2966 #pragma omp parallel for simd
2967 for (int i = 0; i < 10; ++i) {
2968 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2969 bar();
2970 }
2971 #pragma omp parallel for simd
2972 for (int i = 0; i < 10; ++i) {
2973 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2974 for (int j = 0; j < 10; ++j)
2975 ;
2976 }
2977 #pragma omp parallel for simd
2978 for (int i = 0; i < 10; ++i) {
2979 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2980 for (int j = 0; j < 10; ++j)
2981 ;
2982 }
2983 #pragma omp parallel for simd
2984 for (int i = 0; i < 10; ++i) {
2985 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2986 for (int j = 0; j < 10; ++j)
2987 ;
2988 }
2989 #pragma omp parallel for simd
2990 for (int i = 0; i < 10; ++i) {
2991 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2992 for (int j = 0; j < 10; ++j)
2993 ;
2994 }
2995 #pragma omp parallel for simd
2996 for (int i = 0; i < 10; ++i) {
2997 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2998 for (int j = 0; j < 10; ++j)
2999 ;
3000 }
3001 #pragma omp parallel for simd
3002 for (int i = 0; i < 10; ++i) {
3003 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3004 for (int j = 0; j < 10; ++j)
3005 ;
3006 }
3007 #pragma omp parallel for simd
3008 for (int i = 0; i < 10; ++i) {
3009 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3010 for (int j = 0; j < 10; ++j)
3011 ;
3012 }
3013 #pragma omp parallel for simd
3014 for (int i = 0; i < 10; ++i) {
3015 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3016 for (int j = 0; j < 10; ++j)
3017 ;
3018 }
3019 #pragma omp parallel for simd
3020 for (int i = 0; i < 10; ++i) {
3021 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3022 a++;
3023 }
3024 #pragma omp parallel for simd
3025 for (int i = 0; i < 10; ++i) {
3026 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3027 for (int j = 0; j < 10; ++j)
3028 ;
3029 }
3030 #pragma omp parallel for simd
3031 for (int i = 0; i < 10; ++i) {
3032 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3033 for (int j = 0; j < 10; ++j)
3034 ;
3035 }
3036 #pragma omp parallel for simd
3037 for (int i = 0; i < 10; ++i) {
3038 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3039 for (int j = 0; j < 10; ++j)
3040 ;
3041 }
3042 #pragma omp parallel for simd
3043 for (int i = 0; i < 10; ++i) {
3044 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3045 for (int j = 0; j < 10; ++j)
3046 ;
3047 }
3048
3049 // PARALLEL MASTER DIRECTIVE
3050 #pragma omp parallel master
3051 {
3052 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
3053 for (int i = 0; i < 10; ++i)
3054 ;
3055 }
3056 #pragma omp parallel master
3057 {
3058 #pragma omp simd
3059 for (int i = 0; i < 10; ++i)
3060 ;
3061 }
3062 #pragma omp parallel master
3063 {
3064 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
3065 for (int i = 0; i < 10; ++i)
3066 ;
3067 }
3068 #pragma omp parallel master
3069 {
3070 #pragma omp parallel
3071 for (int i = 0; i < 10; ++i)
3072 ;
3073 }
3074 #pragma omp parallel master
3075 {
3076 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
3077 {
3078 bar();
3079 }
3080 }
3081 #pragma omp parallel master
3082 {
3083 #pragma omp master // OK, though second 'master' is redundant
3084 {
3085 bar();
3086 }
3087 }
3088 #pragma omp parallel master
3089 {
3090 #pragma omp critical
3091 {
3092 bar();
3093 }
3094 }
3095 #pragma omp parallel master
3096 {
3097 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
3098 {
3099 bar();
3100 }
3101 }
3102 #pragma omp parallel master
3103 {
3104 #pragma omp parallel
3105 {
3106 #pragma omp parallel master // OK
3107 {
3108 bar();
3109 }
3110 #pragma omp for // OK
3111 for (int i = 0; i < 10; ++i)
3112 ;
3113 #pragma omp for simd // OK
3114 for (int i = 0; i < 10; ++i)
3115 ;
3116 #pragma omp sections // OK
3117 {
3118 bar();
3119 }
3120 }
3121 }
3122 #pragma omp parallel master
3123 {
3124 #pragma omp parallel master // OK
3125 {
3126 bar();
3127 }
3128 #pragma omp parallel
3129 {
3130 #pragma omp for // OK
3131 for (int i = 0; i < 10; ++i)
3132 ;
3133 #pragma omp for simd // OK
3134 for (int i = 0; i < 10; ++i)
3135 ;
3136 #pragma omp sections // OK
3137 {
3138 bar();
3139 }
3140 }
3141 }
3142 #pragma omp parallel master
3143 {
3144 #pragma omp parallel for
3145 for (int i = 0; i < 10; ++i)
3146 ;
3147 }
3148 #pragma omp parallel master
3149 {
3150 #pragma omp parallel for simd
3151 for (int i = 0; i < 10; ++i)
3152 ;
3153 }
3154 #pragma omp parallel master
3155 {
3156 #pragma omp parallel sections
3157 {
3158 bar();
3159 }
3160 }
3161 #pragma omp parallel master
3162 {
3163 #pragma omp task
3164 {
3165 bar();
3166 }
3167 }
3168 #pragma omp parallel master
3169 {
3170 #pragma omp taskyield
3171 bar();
3172 }
3173 #pragma omp parallel master
3174 {
3175 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}}
3176 bar();
3177 }
3178 #pragma omp parallel master
3179 {
3180 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}}
3181 bar();
3182 }
3183 #pragma omp parallel master
3184 {
3185 #pragma omp taskwait
3186 bar();
3187 }
3188 #pragma omp parallel master
3189 {
3190 #pragma omp flush
3191 bar();
3192 }
3193 #pragma omp parallel master
3194 {
3195 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
3196 bar();
3197 }
3198 #pragma omp parallel master
3199 {
3200 #pragma omp atomic
3201 ++a;
3202 }
3203 #pragma omp parallel master
3204 {
3205 #pragma omp target
3206 ++a;
3207 }
3208 #pragma omp parallel master
3209 {
3210 #pragma omp target parallel
3211 ++a;
3212 }
3213 #pragma omp parallel master
3214 {
3215 #pragma omp target parallel for
3216 for (int i = 0; i < 10; ++i)
3217 ;
3218 }
3219 #pragma omp parallel master
3220 {
3221 #pragma omp target enter data map(to: a)
3222 ++a;
3223 }
3224 #pragma omp parallel master
3225 {
3226 #pragma omp target exit data map(from: a)
3227 ++a;
3228 }
3229 #pragma omp parallel master
3230 {
3231 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
3232 ++a;
3233 }
3234 #pragma omp parallel master
3235 {
3236 #pragma omp taskloop
3237 for (int i = 0; i < 10; ++i)
3238 ++a;
3239 }
3240 #pragma omp parallel master
3241 {
3242 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
3243 for (int i = 0; i < 10; ++i)
3244 ;
3245 }
3246 #pragma omp parallel master
3247 {
3248 #pragma omp target update to(a)
3249 bar();
3250 }
3251 #pragma omp parallel master
3252 {
3253 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
3254 for (int i = 0; i < 10; ++i)
3255 ;
3256 }
3257 #pragma omp parallel master
3258 {
3259 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
3260 for (int i = 0; i < 10; ++i)
3261 ;
3262 }
3263 #pragma omp parallel master
3264 {
3265 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
3266 for (int i = 0; i < 10; ++i)
3267 ;
3268 }
3269 #pragma omp parallel master
3270 {
3271 #pragma omp target simd // OK
3272 for (int i = 0; i < 10; ++i)
3273 ;
3274 }
3275 #pragma omp parallel master
3276 {
3277 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
3278 for (int i = 0; i < 10; ++i)
3279 ;
3280 }
3281 #pragma omp parallel master
3282 {
3283 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
3284 for (int i = 0; i < 10; ++i)
3285 ;
3286 }
3287 #pragma omp parallel master
3288 {
3289 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
3290 for (int i = 0; i < 10; ++i)
3291 ;
3292 }
3293 #pragma omp parallel master
3294 {
3295 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
3296 for (int i = 0; i < 10; ++i)
3297 ;
3298 }
3299 #pragma omp parallel master
3300 {
3301 #pragma omp target teams // OK
3302 a++;
3303 }
3304 #pragma omp parallel master
3305 {
3306 #pragma omp target teams distribute // OK
3307 for (int i = 0; i < 10; ++i)
3308 ;
3309 }
3310 #pragma omp parallel master
3311 {
3312 #pragma omp target teams distribute parallel for // OK
3313 for (int i = 0; i < 10; ++i)
3314 ;
3315 }
3316 #pragma omp parallel master
3317 {
3318 #pragma omp target teams distribute parallel for simd // OK
3319 for (int i = 0; i < 10; ++i)
3320 ;
3321 }
3322 #pragma omp parallel master
3323 {
3324 #pragma omp target teams distribute simd // OK
3325 for (int i = 0; i < 10; ++i)
3326 ;
3327 }
3328
3329 // PARALLEL SECTIONS DIRECTIVE
3330 #pragma omp parallel sections
3331 {
3332 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
3333 for (int i = 0; i < 10; ++i)
3334 ;
3335 }
3336 #pragma omp parallel sections
3337 {
3338 #pragma omp simd
3339 for (int i = 0; i < 10; ++i)
3340 ;
3341 }
3342 #pragma omp parallel sections
3343 {
3344 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
3345 for (int i = 0; i < 10; ++i)
3346 ;
3347 }
3348 #pragma omp parallel sections
3349 {
3350 #pragma omp parallel
3351 for (int i = 0; i < 10; ++i)
3352 ;
3353 }
3354 #pragma omp parallel sections
3355 {
3356 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
3357 {
3358 bar();
3359 }
3360 }
3361 #pragma omp parallel sections
3362 {
3363 #pragma omp section
3364 {
3365 bar();
3366 }
3367 }
3368 #pragma omp parallel sections
3369 {
3370 #pragma omp section
3371 {
3372 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
3373 bar();
3374 }
3375 }
3376 #pragma omp parallel sections
3377 {
3378 #pragma omp section
3379 {
3380 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
3381 bar();
3382 }
3383 }
3384 #pragma omp parallel sections
3385 {
3386 #pragma omp section
3387 {
3388 #pragma omp critical
3389 bar();
3390 }
3391 }
3392 #pragma omp parallel sections
3393 {
3394 #pragma omp parallel
3395 {
3396 #pragma omp single // OK
3397 {
3398 bar();
3399 }
3400 #pragma omp for // OK
3401 for (int i = 0; i < 10; ++i)
3402 ;
3403 #pragma omp for simd // OK
3404 for (int i = 0; i < 10; ++i)
3405 ;
3406 #pragma omp sections // OK
3407 {
3408 bar();
3409 }
3410 }
3411 }
3412 #pragma omp parallel sections
3413 {
3414 #pragma omp parallel for
3415 for (int i = 0; i < 10; ++i)
3416 ;
3417 }
3418 #pragma omp parallel sections
3419 {
3420 #pragma omp parallel for simd
3421 for (int i = 0; i < 10; ++i)
3422 ;
3423 }
3424 #pragma omp parallel sections
3425 {
3426 #pragma omp parallel sections
3427 {
3428 bar();
3429 }
3430 }
3431 #pragma omp parallel sections
3432 {
3433 #pragma omp task
3434 {
3435 bar();
3436 }
3437 }
3438 #pragma omp parallel sections
3439 {
3440 #pragma omp taskyield
3441 }
3442 #pragma omp parallel sections
3443 {
3444 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
3445 }
3446 #pragma omp parallel sections
3447 {
3448 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
3449 }
3450 #pragma omp parallel sections
3451 {
3452 #pragma omp taskwait
3453 }
3454 #pragma omp parallel sections
3455 {
3456 #pragma omp flush
3457 }
3458 #pragma omp parallel sections
3459 {
3460 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
3461 bar();
3462 }
3463 #pragma omp parallel sections
3464 {
3465 #pragma omp atomic
3466 ++a;
3467 }
3468 #pragma omp parallel sections
3469 {
3470 #pragma omp target
3471 ++a;
3472 }
3473 #pragma omp parallel sections
3474 {
3475 #pragma omp target parallel
3476 ++a;
3477 }
3478 #pragma omp parallel sections
3479 {
3480 #pragma omp target parallel for
3481 for (int i = 0; i < 10; ++i)
3482 ;
3483 }
3484 #pragma omp parallel sections
3485 {
3486 #pragma omp target enter data map(to: a)
3487 }
3488 #pragma omp parallel sections
3489 {
3490 #pragma omp target exit data map(from: a)
3491 }
3492 #pragma omp parallel sections
3493 {
3494 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
3495 ++a;
3496 }
3497 #pragma omp parallel sections
3498 {
3499 #pragma omp taskloop
3500 for (int i = 0; i < 10; ++i)
3501 ++a;
3502 }
3503 #pragma omp parallel sections
3504 {
3505 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
3506 for (int i = 0; i < 10; ++i)
3507 ;
3508 }
3509 #pragma omp parallel sections
3510 {
3511 #pragma omp target update to(a)
3512 }
3513 #pragma omp parallel sections
3514 {
3515 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
3516 for (int i = 0; i < 10; ++i)
3517 ;
3518 }
3519 #pragma omp parallel sections
3520 {
3521 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
3522 for (int i = 0; i < 10; ++i)
3523 ;
3524 }
3525 #pragma omp parallel sections
3526 {
3527 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
3528 for (int i = 0; i < 10; ++i)
3529 ;
3530 }
3531 #pragma omp parallel sections
3532 {
3533 #pragma omp target simd // OK
3534 for (int i = 0; i < 10; ++i)
3535 ;
3536 }
3537 #pragma omp parallel sections
3538 {
3539 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
3540 for (int i = 0; i < 10; ++i)
3541 ;
3542 }
3543 #pragma omp parallel sections
3544 {
3545 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
3546 for (int i = 0; i < 10; ++i)
3547 ;
3548 }
3549 #pragma omp parallel sections
3550 {
3551 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
3552 for (int i = 0; i < 10; ++i)
3553 ;
3554 }
3555 #pragma omp parallel sections
3556 {
3557 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
3558 for (int i = 0; i < 10; ++i)
3559 ;
3560 }
3561 #pragma omp parallel sections
3562 {
3563 #pragma omp target teams // OK
3564 a++;
3565 }
3566 #pragma omp parallel sections
3567 {
3568 #pragma omp target teams distribute // OK
3569 for (int i = 0; i < 10; ++i)
3570 ;
3571 }
3572 #pragma omp parallel sections
3573 {
3574 #pragma omp target teams distribute parallel for // OK
3575 for (int i = 0; i < 10; ++i)
3576 ;
3577 }
3578 #pragma omp parallel sections
3579 {
3580 #pragma omp target teams distribute parallel for simd // OK
3581 for (int i = 0; i < 10; ++i)
3582 ;
3583 }
3584 #pragma omp parallel sections
3585 {
3586 #pragma omp target teams distribute simd // OK
3587 for (int i = 0; i < 10; ++i)
3588 ;
3589 }
3590
3591 // TASK DIRECTIVE
3592 #pragma omp task
3593 #pragma omp for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
3594 for (int i = 0; i < 10; ++i)
3595 ;
3596 #pragma omp task
3597 #pragma omp simd
3598 for (int i = 0; i < 10; ++i)
3599 ;
3600 #pragma omp task
3601 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
3602 for (int i = 0; i < 10; ++i)
3603 ;
3604 #pragma omp task
3605 #pragma omp sections // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
3606 {
3607 bar();
3608 }
3609 #pragma omp task
3610 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}
3611 {
3612 bar();
3613 }
3614 #pragma omp task
3615 #pragma omp single // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
3616 bar();
3617 #pragma omp task
3618 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}
3619 bar();
3620 #pragma omp task
3621 #pragma omp critical
3622 bar();
3623
3624 #pragma omp task
3625 #pragma omp parallel for
3626 for (int i = 0; i < 10; ++i)
3627 ;
3628 #pragma omp task
3629 #pragma omp parallel for simd
3630 for (int i = 0; i < 10; ++i)
3631 ;
3632 #pragma omp task
3633 #pragma omp parallel sections
3634 {
3635 bar();
3636 }
3637 #pragma omp task
3638 #pragma omp task
3639 {
3640 bar();
3641 }
3642 #pragma omp task
3643 {
3644 #pragma omp taskyield
3645 bar();
3646 }
3647 #pragma omp task
3648 {
3649 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}
3650 bar();
3651 }
3652 #pragma omp task
3653 {
3654 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}}
3655 bar();
3656 }
3657 #pragma omp task
3658 {
3659 #pragma omp taskwait
3660 bar();
3661 }
3662 #pragma omp task
3663 {
3664 #pragma omp flush
3665 bar();
3666 }
3667 #pragma omp task
3668 {
3669 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
3670 bar();
3671 }
3672 #pragma omp task
3673 {
3674 #pragma omp atomic
3675 ++a;
3676 }
3677 #pragma omp task
3678 {
3679 #pragma omp target
3680 ++a;
3681 }
3682 #pragma omp task
3683 {
3684 #pragma omp target parallel
3685 ++a;
3686 }
3687 #pragma omp task
3688 #pragma omp target parallel for
3689 for (int i = 0; i < 10; ++i)
3690 ;
3691 #pragma omp task
3692 {
3693 #pragma omp target enter data map(to: a)
3694 ++a;
3695 }
3696 #pragma omp task
3697 {
3698 #pragma omp target exit data map(from: a)
3699 ++a;
3700 }
3701 #pragma omp task
3702 {
3703 #pragma omp teams // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
3704 ++a;
3705 }
3706 #pragma omp task
3707 {
3708 #pragma omp taskloop
3709 for (int i = 0; i < 10; ++i)
3710 ++a;
3711 }
3712 #pragma omp task
3713 {
3714 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
3715 for (int i = 0; i < 10; ++i)
3716 ;
3717 }
3718 #pragma omp task
3719 {
3720 #pragma omp target update to(a)
3721 bar();
3722 }
3723 #pragma omp task
3724 {
3725 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
3726 for (int i = 0; i < 10; ++i)
3727 ;
3728 }
3729 #pragma omp task
3730 {
3731 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
3732 for (int i = 0; i < 10; ++i)
3733 ;
3734 }
3735 #pragma omp task
3736 {
3737 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
3738 for (int i = 0; i < 10; ++i)
3739 ;
3740 }
3741 #pragma omp task
3742 {
3743 #pragma omp target simd // OK
3744 for (int i = 0; i < 10; ++i)
3745 ;
3746 }
3747 #pragma omp task
3748 {
3749 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
3750 for (int i = 0; i < 10; ++i)
3751 ;
3752 }
3753 #pragma omp task
3754 {
3755 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
3756 for (int i = 0; i < 10; ++i)
3757 ;
3758 }
3759 #pragma omp task
3760 {
3761 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
3762 for (int i = 0; i < 10; ++i)
3763 ;
3764 }
3765 #pragma omp task
3766 {
3767 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
3768 for (int i = 0; i < 10; ++i)
3769 ;
3770 }
3771 #pragma omp task
3772 {
3773 #pragma omp target teams // OK
3774 a++;
3775 }
3776 #pragma omp task
3777 {
3778 #pragma omp target teams distribute // OK
3779 for (int i = 0; i < 10; ++i)
3780 ;
3781 }
3782 #pragma omp task
3783 {
3784 #pragma omp target teams distribute parallel for // OK
3785 for (int i = 0; i < 10; ++i)
3786 ;
3787 }
3788 #pragma omp task
3789 {
3790 #pragma omp target teams distribute parallel for simd // OK
3791 for (int i = 0; i < 10; ++i)
3792 ;
3793 }
3794 #pragma omp task
3795 {
3796 #pragma omp target teams distribute simd // OK
3797 for (int i = 0; i < 10; ++i)
3798 ;
3799 }
3800
3801 // ORDERED DIRECTIVE
3802 #pragma omp ordered
3803 {
3804 #pragma omp for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
3805 for (int i = 0; i < 10; ++i)
3806 ;
3807 }
3808 #pragma omp ordered
3809 {
3810 #pragma omp simd
3811 for (int i = 0; i < 10; ++i)
3812 ;
3813 }
3814 #pragma omp ordered
3815 {
3816 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
3817 for (int i = 0; i < 10; ++i)
3818 ;
3819 }
3820 #pragma omp ordered
3821 {
3822 #pragma omp parallel
3823 for (int i = 0; i < 10; ++i)
3824 ;
3825 }
3826 #pragma omp ordered
3827 {
3828 #pragma omp single // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
3829 {
3830 bar();
3831 }
3832 }
3833 #pragma omp ordered
3834 {
3835 #pragma omp master // OK, though second 'ordered' is redundant
3836 {
3837 bar();
3838 }
3839 }
3840 #pragma omp ordered
3841 {
3842 #pragma omp critical
3843 {
3844 bar();
3845 }
3846 }
3847 #pragma omp ordered
3848 {
3849 #pragma omp sections // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
3850 {
3851 bar();
3852 }
3853 }
3854 #pragma omp ordered
3855 {
3856 #pragma omp parallel for ordered
3857 for (int j = 0; j < 10; ++j) {
3858 #pragma omp ordered // OK
3859 {
3860 bar();
3861 }
3862 }
3863 }
3864 #pragma omp ordered
3865 {
3866 #pragma omp parallel for simd ordered
3867 for (int j = 0; j < 10; ++j) {
3868 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3869 {
3870 bar();
3871 }
3872 }
3873 }
3874 #pragma omp ordered
3875 {
3876 #pragma omp parallel for simd ordered
3877 for (int j = 0; j < 10; ++j) {
3878 #pragma omp ordered simd
3879 {
3880 bar();
3881 }
3882 }
3883 }
3884 #pragma omp ordered
3885 {
3886 #pragma omp parallel for
3887 for (int i = 0; i < 10; ++i)
3888 ;
3889 }
3890 #pragma omp ordered
3891 {
3892 #pragma omp parallel for simd
3893 for (int i = 0; i < 10; ++i)
3894 ;
3895 }
3896 #pragma omp ordered
3897 {
3898 #pragma omp parallel sections
3899 {
3900 bar();
3901 }
3902 }
3903 #pragma omp ordered
3904 {
3905 #pragma omp task
3906 {
3907 bar();
3908 }
3909 }
3910 #pragma omp ordered
3911 {
3912 #pragma omp taskyield
3913 bar();
3914 }
3915 #pragma omp ordered
3916 {
3917 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}}
3918 bar();
3919 }
3920 #pragma omp ordered
3921 {
3922 #pragma omp scan // expected-error {{region cannot be closely nested inside 'ordered' region}}
3923 bar();
3924 }
3925 #pragma omp ordered
3926 {
3927 #pragma omp taskwait
3928 bar();
3929 }
3930 #pragma omp ordered
3931 {
3932 #pragma omp flush
3933 bar();
3934 }
3935 #pragma omp ordered
3936 {
3937 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
3938 bar();
3939 }
3940 #pragma omp ordered
3941 {
3942 #pragma omp atomic
3943 ++a;
3944 }
3945 #pragma omp ordered
3946 {
3947 #pragma omp target
3948 ++a;
3949 }
3950 #pragma omp ordered
3951 {
3952 #pragma omp target parallel
3953 ++a;
3954 }
3955 #pragma omp ordered
3956 {
3957 #pragma omp target parallel for ordered
3958 for (int j = 0; j < 10; ++j) {
3959 #pragma omp ordered // OK
3960 {
3961 bar();
3962 }
3963 }
3964 }
3965 #pragma omp ordered
3966 {
3967 #pragma omp target parallel for
3968 for (int i = 0; i < 10; ++i)
3969 ;
3970 }
3971 #pragma omp ordered
3972 {
3973 #pragma omp target enter data map(to: a)
3974 ++a;
3975 }
3976 #pragma omp ordered
3977 {
3978 #pragma omp target exit data map(from: a)
3979 ++a;
3980 }
3981 #pragma omp ordered
3982 {
3983 #pragma omp teams // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
3984 ++a;
3985 }
3986 #pragma omp ordered
3987 {
3988 #pragma omp taskloop
3989 for (int i = 0; i < 10; ++i)
3990 ++a;
3991 }
3992 #pragma omp ordered
3993 {
3994 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
3995 for (int i = 0; i < 10; ++i)
3996 ;
3997 }
3998 #pragma omp ordered
3999 {
4000 bar();
4001 #pragma omp target update to(a)
4002 bar();
4003 }
4004 #pragma omp ordered
4005 {
4006 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
4007 for (int i = 0; i < 10; ++i)
4008 ;
4009 }
4010 #pragma omp ordered
4011 {
4012 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
4013 for (int i = 0; i < 10; ++i)
4014 ;
4015 }
4016 #pragma omp ordered
4017 {
4018 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
4019 for (int i = 0; i < 10; ++i)
4020 ;
4021 }
4022 #pragma omp ordered
4023 {
4024 #pragma omp target simd // OK
4025 for (int i = 0; i < 10; ++i)
4026 ;
4027 }
4028 #pragma omp ordered
4029 {
4030 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
4031 for (int i = 0; i < 10; ++i)
4032 ;
4033 }
4034 #pragma omp ordered
4035 {
4036 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
4037 for (int i = 0; i < 10; ++i)
4038 ;
4039 }
4040 #pragma omp ordered
4041 {
4042 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
4043 for (int i = 0; i < 10; ++i)
4044 ;
4045 }
4046 #pragma omp ordered
4047 {
4048 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
4049 for (int i = 0; i < 10; ++i)
4050 ;
4051 }
4052 #pragma omp ordered
4053 {
4054 #pragma omp target teams // OK
4055 a++;
4056 }
4057 #pragma omp ordered
4058 {
4059 #pragma omp target teams distribute // OK
4060 for (int i = 0; i < 10; ++i)
4061 ;
4062 }
4063 #pragma omp ordered
4064 {
4065 #pragma omp target teams distribute parallel for // OK
4066 for (int i = 0; i < 10; ++i)
4067 ;
4068 }
4069 #pragma omp ordered
4070 {
4071 #pragma omp target teams distribute parallel for simd // OK
4072 for (int i = 0; i < 10; ++i)
4073 ;
4074 }
4075 #pragma omp ordered
4076 {
4077 #pragma omp target teams distribute simd // OK
4078 for (int i = 0; i < 10; ++i)
4079 ;
4080 }
4081
4082 // ATOMIC DIRECTIVE
4083 #pragma omp atomic
4084 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4085 // expected-note@+1 {{expected an expression statement}}
4086 {
4087 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4088 for (int i = 0; i < 10; ++i)
4089 ;
4090 }
4091 #pragma omp atomic
4092 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4093 // expected-note@+1 {{expected an expression statement}}
4094 {
4095 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4096 for (int i = 0; i < 10; ++i)
4097 ;
4098 }
4099 #pragma omp atomic
4100 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4101 // expected-note@+1 {{expected an expression statement}}
4102 {
4103 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4104 for (int i = 0; i < 10; ++i)
4105 ;
4106 }
4107 #pragma omp atomic
4108 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4109 // expected-note@+1 {{expected an expression statement}}
4110 {
4111 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4112 for (int i = 0; i < 10; ++i)
4113 ;
4114 }
4115 #pragma omp atomic
4116 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4117 // expected-note@+1 {{expected an expression statement}}
4118 {
4119 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4120 {
4121 bar();
4122 }
4123 }
4124 #pragma omp atomic
4125 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4126 // expected-note@+1 {{expected an expression statement}}
4127 {
4128 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4129 {
4130 bar();
4131 }
4132 }
4133 #pragma omp atomic
4134 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4135 // expected-note@+1 {{expected an expression statement}}
4136 {
4137 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4138 {
4139 bar();
4140 }
4141 }
4142 #pragma omp atomic
4143 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4144 // expected-note@+1 {{expected an expression statement}}
4145 {
4146 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4147 {
4148 bar();
4149 }
4150 }
4151 #pragma omp atomic
4152 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4153 // expected-note@+1 {{expected an expression statement}}
4154 {
4155 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4156 {
4157 bar();
4158 }
4159 }
4160 #pragma omp atomic
4161 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4162 // expected-note@+1 {{expected an expression statement}}
4163 {
4164 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4165 {
4166 bar();
4167 }
4168 }
4169 #pragma omp atomic
4170 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4171 // expected-note@+1 {{expected an expression statement}}
4172 {
4173 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4174 for (int i = 0; i < 10; ++i)
4175 ;
4176 }
4177 #pragma omp atomic
4178 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4179 // expected-note@+1 {{expected an expression statement}}
4180 {
4181 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4182 for (int i = 0; i < 10; ++i)
4183 ;
4184 }
4185 #pragma omp atomic
4186 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4187 // expected-note@+1 {{expected an expression statement}}
4188 {
4189 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4190 {
4191 bar();
4192 }
4193 }
4194 #pragma omp atomic
4195 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4196 // expected-note@+1 {{expected an expression statement}}
4197 {
4198 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4199 {
4200 bar();
4201 }
4202 }
4203 #pragma omp atomic
4204 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4205 // expected-note@+1 {{expected an expression statement}}
4206 {
4207 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4208 bar();
4209 }
4210 #pragma omp atomic
4211 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4212 // expected-note@+1 {{expected an expression statement}}
4213 {
4214 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4215 bar();
4216 }
4217 #pragma omp atomic
4218 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4219 // expected-note@+1 {{expected an expression statement}}
4220 {
4221 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4222 bar();
4223 }
4224 #pragma omp atomic
4225 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4226 // expected-note@+1 {{expected an expression statement}}
4227 {
4228 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4229 bar();
4230 }
4231 #pragma omp atomic
4232 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4233 // expected-note@+1 {{expected an expression statement}}
4234 {
4235 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4236 bar();
4237 }
4238 #pragma omp atomic
4239 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4240 // expected-note@+1 {{expected an expression statement}}
4241 {
4242 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4243 bar();
4244 }
4245 #pragma omp atomic
4246 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4247 // expected-note@+1 {{expected an expression statement}}
4248 {
4249 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4250 ++a;
4251 }
4252 #pragma omp atomic
4253 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4254 // expected-note@+1 {{expected an expression statement}}
4255 {
4256 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4257 ++a;
4258 }
4259 #pragma omp atomic
4260 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4261 // expected-note@+1 {{expected an expression statement}}
4262 {
4263 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4264 ++a;
4265 }
4266 #pragma omp atomic
4267 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4268 // expected-note@+1 {{expected an expression statement}}
4269 {
4270 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4271 for (int i = 0; i < 10; ++i)
4272 ;
4273 }
4274 #pragma omp atomic
4275 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4276 // expected-note@+1 {{expected an expression statement}}
4277 {
4278 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4279 ++a;
4280 }
4281 #pragma omp atomic
4282 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4283 // expected-note@+1 {{expected an expression statement}}
4284 {
4285 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4286 ++a;
4287 }
4288 #pragma omp atomic
4289 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4290 // expected-note@+1 {{expected an expression statement}}
4291 {
4292 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4293 ++a;
4294 }
4295 #pragma omp atomic
4296 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4297 // expected-note@+1 {{expected an expression statement}}
4298 {
4299 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4300 for (int i = 0; i < 10; ++i)
4301 ++a;
4302 }
4303 #pragma omp atomic
4304 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4305 // expected-note@+1 {{expected an expression statement}}
4306 {
4307 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4308 for (int i = 0; i < 10; ++i)
4309 ;
4310 }
4311 #pragma omp atomic
4312 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4313 // expected-note@+1 {{expected an expression statement}}
4314 {
4315 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4316 bar();
4317 }
4318 #pragma omp atomic
4319 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4320 // expected-note@+1 {{expected an expression statement}}
4321 {
4322 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4323 for (int i = 0; i < 10; ++i)
4324 ;
4325 }
4326 #pragma omp atomic
4327 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4328 // expected-note@+1 {{expected an expression statement}}
4329 {
4330 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4331 for (int i = 0; i < 10; ++i)
4332 ;
4333 }
4334 #pragma omp atomic
4335 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4336 // expected-note@+1 {{expected an expression statement}}
4337 {
4338 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4339 for (int i = 0; i < 10; ++i)
4340 ;
4341 }
4342 #pragma omp atomic
4343 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4344 // expected-note@+1 {{expected an expression statement}}
4345 {
4346 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4347 for (int i = 0; i < 10; ++i)
4348 ;
4349 }
4350 #pragma omp atomic
4351 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4352 // expected-note@+1 {{expected an expression statement}}
4353 {
4354 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4355 for (int i = 0; i < 10; ++i)
4356 ;
4357 }
4358 #pragma omp atomic
4359 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4360 // expected-note@+1 {{expected an expression statement}}
4361 {
4362 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4363 for (int i = 0; i < 10; ++i)
4364 ;
4365 }
4366 #pragma omp atomic
4367 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4368 // expected-note@+1 {{expected an expression statement}}
4369 {
4370 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4371 for (int i = 0; i < 10; ++i)
4372 ;
4373 }
4374 #pragma omp atomic
4375 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4376 // expected-note@+1 {{expected an expression statement}}
4377 {
4378 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4379 for (int i = 0; i < 10; ++i)
4380 ;
4381 }
4382 #pragma omp atomic
4383 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4384 // expected-note@+1 {{expected an expression statement}}
4385 {
4386 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4387 a++;
4388 }
4389 #pragma omp atomic
4390 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4391 // expected-note@+1 {{expected an expression statement}}
4392 {
4393 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4394 for (int i = 0; i < 10; ++i)
4395 ;
4396 }
4397 #pragma omp atomic
4398 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4399 // expected-note@+1 {{expected an expression statement}}
4400 {
4401 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4402 for (int i = 0; i < 10; ++i)
4403 ;
4404 }
4405 #pragma omp atomic
4406 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4407 // expected-note@+1 {{expected an expression statement}}
4408 {
4409 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4410 for (int i = 0; i < 10; ++i)
4411 ;
4412 }
4413 #pragma omp atomic
4414 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
4415 // expected-note@+1 {{expected an expression statement}}
4416 {
4417 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
4418 for (int i = 0; i < 10; ++i)
4419 ;
4420 }
4421
4422 // TARGET DIRECTIVE
4423 #pragma omp target
4424 #pragma omp parallel
4425 bar();
4426 #pragma omp target
4427 #pragma omp for
4428 for (int i = 0; i < 10; ++i)
4429 ;
4430 #pragma omp target
4431 #pragma omp simd
4432 for (int i = 0; i < 10; ++i)
4433 ;
4434 #pragma omp target
4435 #pragma omp for simd
4436 for (int i = 0; i < 10; ++i)
4437 ;
4438 #pragma omp target
4439 #pragma omp sections
4440 {
4441 bar();
4442 }
4443 #pragma omp target
4444 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}
4445 {
4446 bar();
4447 }
4448 #pragma omp target
4449 #pragma omp single
4450 bar();
4451
4452 #pragma omp target
4453 #pragma omp master
4454 {
4455 bar();
4456 }
4457 #pragma omp target
4458 #pragma omp critical
4459 {
4460 bar();
4461 }
4462 #pragma omp target
4463 #pragma omp parallel for
4464 for (int i = 0; i < 10; ++i)
4465 ;
4466 #pragma omp target
4467 #pragma omp parallel for simd
4468 for (int i = 0; i < 10; ++i)
4469 ;
4470 #pragma omp target
4471 #pragma omp parallel sections
4472 {
4473 bar();
4474 }
4475 #pragma omp target
4476 #pragma omp task
4477 {
4478 bar();
4479 }
4480 #pragma omp target
4481 {
4482 #pragma omp taskyield
4483 bar();
4484 }
4485 #pragma omp target
4486 {
4487 #pragma omp barrier
4488 bar();
4489 }
4490 #pragma omp target
4491 {
4492 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
4493 bar();
4494 }
4495 #pragma omp target
4496 {
4497 #pragma omp taskwait
4498 bar();
4499 }
4500 #pragma omp target
4501 {
4502 #pragma omp flush
4503 bar();
4504 }
4505 #pragma omp target
4506 {
4507 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
4508 bar();
4509 }
4510 #pragma omp target
4511 {
4512 #pragma omp atomic
4513 ++a;
4514 }
4515 #pragma omp target
4516 {
4517 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
4518 ++a;
4519 }
4520 #pragma omp target
4521 {
4522 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
4523 ++a;
4524 }
4525 #pragma omp target
4526 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
4527 for (int i = 0; i < 10; ++i)
4528 ;
4529 #pragma omp target
4530 {
4531 #pragma omp teams
4532 ++a;
4533 }
4534 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4535 {
4536 #pragma omp teams // expected-note {{directive outside teams construct here}}
4537 ++a;
4538 #pragma omp teams // expected-note {{nested teams construct here}}
4539 ++a;
4540 }
4541 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4542 {
4543 ++a; // expected-note {{statement outside teams construct here}}
4544 #pragma omp teams // expected-note {{nested teams construct here}}
4545 ++a;
4546 }
4547 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4548 {
4549 while (0) // expected-note {{statement outside teams construct here}}
4550 #pragma omp teams // expected-note {{nested teams construct here}}
4551 ++a;
4552 }
4553 #pragma omp target
4554 {
4555 #pragma omp taskloop
4556 for (int i = 0; i < 10; ++i)
4557 ++a;
4558 }
4559 #pragma omp target
4560 {
4561 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
4562 for (int i = 0; i < 10; ++i)
4563 ;
4564 }
4565 #pragma omp target
4566 {
4567 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
4568 }
4569 #pragma omp target
4570 {
4571 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
4572 }
4573 #pragma omp target
4574 {
4575 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
4576 }
4577 #pragma omp target
4578 {
4579 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
4580 for (int i = 0; i < 10; ++i)
4581 ;
4582 }
4583 #pragma omp target
4584 {
4585 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
4586 for (int i = 0; i < 10; ++i)
4587 ;
4588 }
4589 #pragma omp target
4590 {
4591 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
4592 for (int i = 0; i < 10; ++i)
4593 ;
4594 }
4595 #pragma omp target
4596 {
4597 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
4598 for (int i = 0; i < 10; ++i)
4599 ;
4600 }
4601 #pragma omp target
4602 {
4603 #pragma omp teams distribute // OK
4604 for (int i = 0; i < 10; ++i)
4605 ;
4606 }
4607 #pragma omp target
4608 {
4609 #pragma omp teams distribute simd // OK
4610 for (int i = 0; i < 10; ++i)
4611 ;
4612 }
4613 #pragma omp target
4614 {
4615 #pragma omp teams distribute parallel for simd // OK
4616 for (int i = 0; i < 10; ++i)
4617 ;
4618 }
4619 #pragma omp target
4620 {
4621 #pragma omp teams distribute parallel for // OK
4622 for (int i = 0; i < 10; ++i)
4623 ;
4624 }
4625 #pragma omp target
4626 {
4627 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
4628 for (int i = 0; i < 10; ++i)
4629 ;
4630 }
4631 #pragma omp target
4632 {
4633 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
4634 for (int i = 0; i < 10; ++i)
4635 ;
4636 }
4637 #pragma omp target
4638 {
4639 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
4640 for (int i = 0; i < 10; ++i)
4641 ;
4642 }
4643 #pragma omp target
4644 {
4645 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
4646 for (int i = 0; i < 10; ++i)
4647 ;
4648 }
4649 #pragma omp target
4650 {
4651 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
4652 for (int i = 0; i < 10; ++i)
4653 ;
4654 }
4655
4656 // TARGET PARALLEL DIRECTIVE
4657 #pragma omp target parallel
4658 #pragma omp parallel
4659 bar();
4660 #pragma omp target parallel
4661 #pragma omp for
4662 for (int i = 0; i < 10; ++i)
4663 ;
4664 #pragma omp target parallel
4665 #pragma omp simd
4666 for (int i = 0; i < 10; ++i)
4667 ;
4668 #pragma omp target parallel
4669 #pragma omp for simd
4670 for (int i = 0; i < 10; ++i)
4671 ;
4672 #pragma omp target parallel
4673 #pragma omp sections
4674 {
4675 bar();
4676 }
4677 #pragma omp target parallel
4678 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
4679 {
4680 bar();
4681 }
4682 #pragma omp target parallel
4683 #pragma omp single
4684 bar();
4685
4686 #pragma omp target parallel
4687 #pragma omp master
4688 {
4689 bar();
4690 }
4691 #pragma omp target
4692 #pragma omp parallel master
4693 {
4694 bar();
4695 }
4696 #pragma omp target parallel
4697 #pragma omp critical
4698 {
4699 bar();
4700 }
4701 #pragma omp target parallel
4702 #pragma omp parallel for
4703 for (int i = 0; i < 10; ++i)
4704 ;
4705 #pragma omp target parallel
4706 #pragma omp parallel for simd
4707 for (int i = 0; i < 10; ++i)
4708 ;
4709 #pragma omp target parallel
4710 #pragma omp parallel sections
4711 {
4712 bar();
4713 }
4714 #pragma omp target parallel
4715 #pragma omp task
4716 {
4717 bar();
4718 }
4719 #pragma omp target parallel
4720 {
4721 #pragma omp taskyield
4722 bar();
4723 }
4724 #pragma omp target parallel
4725 {
4726 #pragma omp barrier
4727 bar();
4728 }
4729 #pragma omp target parallel
4730 {
4731 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
4732 bar();
4733 }
4734 #pragma omp target parallel
4735 {
4736 #pragma omp taskwait
4737 bar();
4738 }
4739 #pragma omp target parallel
4740 {
4741 #pragma omp flush
4742 bar();
4743 }
4744 #pragma omp target parallel
4745 {
4746 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
4747 bar();
4748 }
4749 #pragma omp target parallel
4750 {
4751 #pragma omp atomic
4752 ++a;
4753 }
4754 #pragma omp target parallel
4755 {
4756 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}
4757 ++a;
4758 }
4759 #pragma omp target parallel
4760 {
4761 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}
4762 ++a;
4763 }
4764 #pragma omp target parallel
4765 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
4766 for (int i = 0; i < 10; ++i)
4767 ;
4768 #pragma omp target parallel
4769 {
4770 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
4771 ++a;
4772 }
4773 #pragma omp target parallel
4774 {
4775 ++a;
4776 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
4777 ++a;
4778 }
4779 #pragma omp target parallel
4780 {
4781 #pragma omp taskloop
4782 for (int i = 0; i < 10; ++i)
4783 ++a;
4784 }
4785 #pragma omp target parallel
4786 {
4787 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
4788 for (int i = 0; i < 10; ++i)
4789 ;
4790 }
4791 #pragma omp target parallel
4792 {
4793 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4794 }
4795 #pragma omp target parallel
4796 {
4797 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4798 }
4799 #pragma omp target parallel
4800 {
4801 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4802 }
4803 #pragma omp target parallel
4804 {
4805 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
4806 for (int i = 0; i < 10; ++i)
4807 ;
4808 }
4809 #pragma omp target parallel
4810 {
4811 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
4812 for (int i = 0; i < 10; ++i)
4813 ;
4814 }
4815 #pragma omp target parallel
4816 {
4817 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
4818 for (int i = 0; i < 10; ++i)
4819 ;
4820 }
4821 #pragma omp target parallel
4822 {
4823 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4824 for (int i = 0; i < 10; ++i)
4825 ;
4826 }
4827 #pragma omp target parallel
4828 {
4829 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
4830 for (int i = 0; i < 10; ++i)
4831 ;
4832 }
4833 #pragma omp target parallel
4834 {
4835 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
4836 for (int i = 0; i < 10; ++i)
4837 ;
4838 }
4839 #pragma omp target parallel
4840 {
4841 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
4842 for (int i = 0; i < 10; ++i)
4843 ;
4844 }
4845 #pragma omp target parallel
4846 {
4847 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
4848 for (int i = 0; i < 10; ++i)
4849 ;
4850 }
4851 #pragma omp target parallel
4852 {
4853 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}
4854 a++;
4855 }
4856 #pragma omp target parallel
4857 {
4858 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}
4859 for (int i = 0; i < 10; ++i)
4860 ;
4861 }
4862 #pragma omp target parallel
4863 {
4864 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
4865 for (int i = 0; i < 10; ++i)
4866 ;
4867 }
4868 #pragma omp target parallel
4869 {
4870 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4871 for (int i = 0; i < 10; ++i)
4872 ;
4873 }
4874 #pragma omp target parallel
4875 {
4876 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4877 for (int i = 0; i < 10; ++i)
4878 ;
4879 }
4880
4881 // TARGET PARALLEL FOR DIRECTIVE
4882 #pragma omp target parallel for
4883 for (int i = 0; i < 10; ++i) {
4884 #pragma omp for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
4885 for (int i = 0; i < 10; ++i)
4886 ;
4887 }
4888 #pragma omp target parallel for
4889 for (int i = 0; i < 10; ++i) {
4890 #pragma omp simd
4891 for (int i = 0; i < 10; ++i)
4892 ;
4893 }
4894 #pragma omp target parallel for
4895 for (int i = 0; i < 10; ++i) {
4896 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
4897 for (int i = 0; i < 10; ++i)
4898 ;
4899 }
4900 #pragma omp target parallel for
4901 for (int i = 0; i < 10; ++i) {
4902 #pragma omp parallel
4903 for (int i = 0; i < 10; ++i)
4904 ;
4905 }
4906 #pragma omp target parallel for
4907 for (int i = 0; i < 10; ++i) {
4908 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
4909 {
4910 bar();
4911 }
4912 }
4913 #pragma omp target parallel for
4914 for (int i = 0; i < 10; ++i) {
4915 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}
4916 {
4917 bar();
4918 }
4919 }
4920 #pragma omp target parallel for
4921 for (int i = 0; i < 10; ++i) {
4922 #pragma omp single // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
4923 {
4924 bar();
4925 }
4926 }
4927
4928 #pragma omp target parallel for
4929 for (int i = 0; i < 10; ++i) {
4930 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
4931 {
4932 bar();
4933 }
4934 }
4935
4936 #pragma omp target parallel for
4937 for (int i = 0; i < 10; ++i) {
4938 #pragma omp critical
4939 {
4940 bar();
4941 }
4942 }
4943
4944 #pragma omp target parallel for
4945 for (int i = 0; i < 10; ++i) {
4946 #pragma omp parallel
4947 {
4948 #pragma omp single // OK
4949 {
4950 bar();
4951 }
4952 #pragma omp for // OK
4953 for (int i = 0; i < 10; ++i)
4954 ;
4955 #pragma omp for simd // OK
4956 for (int i = 0; i < 10; ++i)
4957 ;
4958 #pragma omp sections // OK
4959 {
4960 bar();
4961 }
4962 }
4963 }
4964 #pragma omp target parallel for
4965 for (int i = 0; i < 10; ++i) {
4966 #pragma omp parallel for
4967 for (int i = 0; i < 10; ++i)
4968 ;
4969 }
4970 #pragma omp target parallel for
4971 for (int i = 0; i < 10; ++i) {
4972 #pragma omp parallel for simd
4973 for (int i = 0; i < 10; ++i)
4974 ;
4975 }
4976 #pragma omp target parallel for
4977 for (int i = 0; i < 10; ++i) {
4978 #pragma omp parallel sections
4979 {
4980 bar();
4981 }
4982 }
4983 #pragma omp target parallel for
4984 for (int i = 0; i < 10; ++i) {
4985 #pragma omp task
4986 {
4987 bar();
4988 }
4989 }
4990 #pragma omp target parallel for
4991 for (int i = 0; i < 10; ++i) {
4992 #pragma omp taskyield
4993 bar();
4994 }
4995 #pragma omp target parallel for
4996 for (int i = 0; i < 10; ++i) {
4997 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
4998 bar();
4999 }
5000 #pragma omp target parallel for
5001 for (int i = 0; i < 10; ++i) {
5002 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
5003 bar();
5004 }
5005 #pragma omp target parallel for
5006 for (int i = 0; i < 10; ++i) {
5007 #pragma omp taskwait
5008 bar();
5009 }
5010 #pragma omp target parallel for
5011 for (int i = 0; i < 10; ++i) {
5012 #pragma omp flush
5013 bar();
5014 }
5015 #pragma omp target parallel for
5016 for (int i = 0; i < 10; ++i) {
5017 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
5018 bar();
5019 }
5020 #pragma omp target parallel for ordered
5021 for (int i = 0; i < 10; ++i) {
5022 #pragma omp ordered // OK
5023 bar();
5024 }
5025 #pragma omp target parallel for
5026 for (int i = 0; i < 10; ++i) {
5027 #pragma omp atomic
5028 ++a;
5029 }
5030 #pragma omp target parallel for
5031 for (int i = 0; i < 10; ++i) {
5032 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}
5033 ++a;
5034 }
5035 #pragma omp target parallel for
5036 for (int i = 0; i < 10; ++i) {
5037 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}
5038 ++a;
5039 }
5040 #pragma omp target parallel for
5041 for (int i = 0; i < 10; ++i) {
5042 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
5043 for (int i = 0; i < 10; ++i)
5044 ;
5045 }
5046 #pragma omp target parallel for
5047 for (int i = 0; i < 10; ++i) {
5048 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
5049 ++a;
5050 }
5051 #pragma omp target parallel for
5052 for (int i = 0; i < 10; ++i) {
5053 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
5054 ++a;
5055 }
5056 #pragma omp target parallel for
5057 for (int i = 0; i < 10; ++i) {
5058 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
5059 ++a;
5060 }
5061 #pragma omp target parallel for
5062 for (int i = 0; i < 10; ++i) {
5063 #pragma omp taskloop
5064 for (int i = 0; i < 10; ++i)
5065 ++a;
5066 }
5067 #pragma omp target parallel for
5068 for (int i = 0; i < 10; ++i) {
5069 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
5070 for (int j = 0; j < 10; ++j)
5071 ;
5072 }
5073 #pragma omp target parallel for
5074 for (int i = 0; i < 10; ++i) {
5075 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
5076 }
5077 #pragma omp target parallel for
5078 for (int i = 0; i < 10; ++i) {
5079 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
5080 for (int j = 0; j < 10; ++j)
5081 ;
5082 }
5083 #pragma omp target parallel for
5084 for (int i = 0; i < 10; ++i) {
5085 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
5086 for (int j = 0; j < 10; ++j)
5087 ;
5088 }
5089 #pragma omp target parallel for
5090 for (int i = 0; i < 10; ++i) {
5091 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
5092 for (int j = 0; j < 10; ++j)
5093 ;
5094 }
5095 #pragma omp target parallel for
5096 for (int i = 0; i < 10; ++i) {
5097 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
5098 for (int j = 0; j < 10; ++j)
5099 ;
5100 }
5101 #pragma omp target parallel for
5102 for (int i = 0; i < 10; ++i) {
5103 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
5104 for (int j = 0; j < 10; ++j)
5105 ;
5106 }
5107 #pragma omp target parallel for
5108 for (int i = 0; i < 10; ++i) {
5109 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
5110 for (int j = 0; j < 10; ++j)
5111 ;
5112 }
5113 #pragma omp target parallel for
5114 for (int i = 0; i < 10; ++i) {
5115 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
5116 for (int j = 0; j < 10; ++j)
5117 ;
5118 }
5119 #pragma omp target parallel for
5120 for (int i = 0; i < 10; ++i) {
5121 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
5122 for (int j = 0; j < 10; ++j)
5123 ;
5124 }
5125 #pragma omp target parallel for
5126 for (int i = 0; i < 10; ++i) {
5127 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}
5128 a++;
5129 }
5130 #pragma omp target parallel for
5131 for (int i = 0; i < 10; ++i) {
5132 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}
5133 for (int j = 0; j < 10; ++j)
5134 ;
5135 }
5136 #pragma omp target parallel for
5137 for (int i = 0; i < 10; ++i) {
5138 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
5139 for (int j = 0; j < 10; ++j)
5140 ;
5141 }
5142 #pragma omp target parallel for
5143 for (int i = 0; i < 10; ++i) {
5144 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
5145 for (int j = 0; j < 10; ++j)
5146 ;
5147 }
5148 #pragma omp target parallel for
5149 for (int i = 0; i < 10; ++i) {
5150 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
5151 for (int j = 0; j < 10; ++j)
5152 ;
5153 }
5154
5155 // TEAMS DIRECTIVE
5156 #pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
5157 bar();
5158 #pragma omp target
5159 #pragma omp teams
5160 #pragma omp parallel
5161 bar();
5162 #pragma omp target
5163 #pragma omp teams
5164 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
5165 for (int i = 0; i < 10; ++i)
5166 ;
5167 #pragma omp target
5168 #pragma omp teams
5169 #pragma omp simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}}
5170 for (int i = 0; i < 10; ++i)
5171 ;
5172 #pragma omp target
5173 #pragma omp teams
5174 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
5175 for (int i = 0; i < 10; ++i)
5176 ;
5177 #pragma omp target
5178 #pragma omp teams
5179 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
5180 {
5181 bar();
5182 }
5183 #pragma omp target
5184 #pragma omp teams
5185 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}
5186 {
5187 bar();
5188 }
5189 #pragma omp target
5190 #pragma omp teams
5191 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
5192 bar();
5193
5194 #pragma omp target
5195 #pragma omp teams
5196 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}}
5197 {
5198 bar();
5199 }
5200 #pragma omp target
5201 #pragma omp teams
5202 #pragma omp critical // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}}
5203 {
5204 bar();
5205 }
5206 #pragma omp target
5207 #pragma omp teams
5208 #pragma omp parallel for
5209 for (int i = 0; i < 10; ++i)
5210 ;
5211 #pragma omp target
5212 #pragma omp teams
5213 #pragma omp parallel for simd
5214 for (int i = 0; i < 10; ++i)
5215 ;
5216 #pragma omp target
5217 #pragma omp teams
5218 #pragma omp parallel sections
5219 {
5220 bar();
5221 }
5222 #pragma omp target
5223 #pragma omp teams
5224 #pragma omp task // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}}
5225 {
5226 bar();
5227 }
5228 #pragma omp target
5229 #pragma omp teams
5230 {
5231 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}}
5232 bar();
5233 }
5234 #pragma omp target
5235 #pragma omp teams
5236 {
5237 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}}
5238 bar();
5239 }
5240 #pragma omp target
5241 #pragma omp teams
5242 {
5243 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
5244 bar();
5245 }
5246 #pragma omp target
5247 #pragma omp teams
5248 {
5249 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}}
5250 bar();
5251 }
5252 #pragma omp target
5253 #pragma omp teams
5254 {
5255 #pragma omp flush // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}}
5256 bar();
5257 }
5258 #pragma omp target
5259 #pragma omp teams
5260 {
5261 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
5262 bar();
5263 }
5264 #pragma omp target
5265 #pragma omp teams
5266 {
5267 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}
5268 ++a;
5269 }
5270 #pragma omp target
5271 #pragma omp teams
5272 {
5273 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
5274 ++a;
5275 }
5276 #pragma omp target
5277 #pragma omp teams
5278 {
5279 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
5280 ++a;
5281 }
5282 #pragma omp target
5283 #pragma omp teams
5284 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
5285 for (int i = 0; i < 10; ++i)
5286 ;
5287 #pragma omp target
5288 #pragma omp teams
5289 {
5290 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
5291 ++a;
5292 }
5293 #pragma omp target
5294 #pragma omp teams
5295 {
5296 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
5297 ++a;
5298 }
5299 #pragma omp target
5300 #pragma omp teams
5301 {
5302 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
5303 ++a;
5304 }
5305 #pragma omp target
5306 #pragma omp teams
5307 {
5308 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}}
5309 for (int i = 0; i < 10; ++i)
5310 ++a;
5311 }
5312 #pragma omp target
5313 #pragma omp teams
5314 #pragma omp distribute
5315 for (int i = 0; i < 10; ++i)
5316 ;
5317 #pragma omp target
5318 #pragma omp teams
5319 #pragma omp distribute
5320 for (int i = 0; i < 10; ++i)
5321 ;
5322 #pragma omp distribute
5323 for (int j = 0; j < 10; ++j)
5324 ;
5325 #pragma omp target
5326 #pragma omp teams
5327 {
5328 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
5329 }
5330 #pragma omp target
5331 #pragma omp teams
5332 {
5333 #pragma omp distribute parallel for
5334 for (int i = 0; i < 10; ++i)
5335 ;
5336 #pragma omp distribute parallel for
5337 for (int j = 0; j < 10; ++j)
5338 ;
5339 }
5340 #pragma omp target
5341 #pragma omp teams
5342 {
5343 #pragma omp distribute parallel for simd
5344 for (int i = 0; i < 10; ++i)
5345 ;
5346 #pragma omp distribute parallel for simd
5347 for (int j = 0; j < 10; ++j)
5348 ;
5349 }
5350 #pragma omp target
5351 #pragma omp teams
5352 {
5353 #pragma omp distribute simd
5354 for (int i = 0; i < 10; ++i)
5355 ;
5356 #pragma omp distribute simd
5357 for (int j = 0; j < 10; ++j)
5358 ;
5359 }
5360 #pragma omp target
5361 #pragma omp teams
5362 {
5363 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
5364 for (int i = 0; i < 10; ++i)
5365 ;
5366 }
5367 #pragma omp target
5368 #pragma omp teams
5369 {
5370 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
5371 for (int i = 0; i < 10; ++i)
5372 ;
5373 }
5374 #pragma omp target
5375 #pragma omp teams
5376 {
5377 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
5378 for (int i = 0; i < 10; ++i)
5379 ;
5380 }
5381 #pragma omp target
5382 #pragma omp teams
5383 {
5384 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
5385 for (int i = 0; i < 10; ++i)
5386 ;
5387 }
5388 #pragma omp target
5389 #pragma omp teams
5390 {
5391 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
5392 for (int i = 0; i < 10; ++i)
5393 ;
5394 }
5395 #pragma omp target
5396 #pragma omp teams
5397 {
5398 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
5399 a++;
5400 }
5401 #pragma omp target
5402 #pragma omp teams
5403 {
5404 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
5405 for (int i = 0; i < 10; ++i)
5406 ;
5407 }
5408 #pragma omp target
5409 #pragma omp teams
5410 {
5411 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
5412 for (int i = 0; i < 10; ++i)
5413 ;
5414 }
5415 #pragma omp target
5416 #pragma omp teams
5417 {
5418 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
5419 for (int i = 0; i < 10; ++i)
5420 ;
5421 }
5422 #pragma omp target
5423 #pragma omp teams
5424 {
5425 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
5426 for (int i = 0; i < 10; ++i)
5427 ;
5428 }
5429
5430 // TASKLOOP DIRECTIVE
5431 #pragma omp taskloop
5432 for (int i = 0; i < 10; ++i) {
5433 #pragma omp for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
5434 for (int i = 0; i < 10; ++i)
5435 ;
5436 }
5437 #pragma omp taskloop
5438 for (int i = 0; i < 10; ++i) {
5439 #pragma omp simd
5440 for (int i = 0; i < 10; ++i)
5441 ;
5442 }
5443 #pragma omp taskloop
5444 for (int i = 0; i < 10; ++i) {
5445 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
5446 for (int i = 0; i < 10; ++i)
5447 ;
5448 }
5449 #pragma omp taskloop
5450 for (int i = 0; i < 10; ++i) {
5451 #pragma omp parallel
5452 for (int i = 0; i < 10; ++i)
5453 ;
5454 }
5455 #pragma omp taskloop
5456 for (int i = 0; i < 10; ++i) {
5457 #pragma omp sections // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
5458 {
5459 bar();
5460 }
5461 }
5462 #pragma omp taskloop
5463 for (int i = 0; i < 10; ++i) {
5464 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}
5465 {
5466 bar();
5467 }
5468 }
5469 #pragma omp taskloop
5470 for (int i = 0; i < 10; ++i) {
5471 #pragma omp single // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
5472 {
5473 bar();
5474 }
5475 }
5476
5477 #pragma omp taskloop
5478 for (int i = 0; i < 10; ++i) {
5479 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5480 {
5481 bar();
5482 }
5483 }
5484 #pragma omp taskloop
5485 for (int i = 0; i < 10; ++i) {
5486 #pragma omp critical
5487 {
5488 bar();
5489 }
5490 }
5491 #pragma omp taskloop
5492 for (int i = 0; i < 10; ++i) {
5493 #pragma omp parallel
5494 {
5495 #pragma omp single // OK
5496 {
5497 bar();
5498 }
5499 #pragma omp for // OK
5500 for (int i = 0; i < 10; ++i)
5501 ;
5502 #pragma omp sections // OK
5503 {
5504 bar();
5505 }
5506 }
5507 }
5508 #pragma omp taskloop
5509 for (int i = 0; i < 10; ++i) {
5510 #pragma omp parallel for
5511 for (int i = 0; i < 10; ++i)
5512 ;
5513 }
5514 #pragma omp taskloop
5515 for (int i = 0; i < 10; ++i) {
5516 #pragma omp parallel for simd
5517 for (int i = 0; i < 10; ++i)
5518 ;
5519 }
5520 #pragma omp taskloop
5521 for (int i = 0; i < 10; ++i) {
5522 #pragma omp parallel sections
5523 {
5524 bar();
5525 }
5526 }
5527 #pragma omp taskloop
5528 for (int i = 0; i < 10; ++i) {
5529 #pragma omp task
5530 {
5531 bar();
5532 }
5533 }
5534 #pragma omp taskloop
5535 for (int i = 0; i < 10; ++i) {
5536 #pragma omp taskyield
5537 bar();
5538 }
5539 #pragma omp taskloop
5540 for (int i = 0; i < 10; ++i) {
5541 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5542 bar();
5543 }
5544 #pragma omp taskloop
5545 for (int i = 0; i < 10; ++i) {
5546 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5547 bar();
5548 }
5549 #pragma omp taskloop
5550 for (int i = 0; i < 10; ++i) {
5551 #pragma omp taskwait
5552 bar();
5553 }
5554 #pragma omp taskloop
5555 for (int i = 0; i < 10; ++i) {
5556 #pragma omp flush
5557 bar();
5558 }
5559 #pragma omp taskloop
5560 for (int i = 0; i < 10; ++i) {
5561 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
5562 bar();
5563 }
5564 #pragma omp taskloop
5565 for (int i = 0; i < 10; ++i) {
5566 #pragma omp atomic
5567 ++a;
5568 }
5569 #pragma omp taskloop
5570 for (int i = 0; i < 10; ++i) {
5571 #pragma omp target
5572 ++a;
5573 }
5574 #pragma omp taskloop
5575 for (int i = 0; i < 10; ++i) {
5576 #pragma omp target parallel
5577 ++a;
5578 }
5579 #pragma omp taskloop
5580 for (int i = 0; i < 10; ++i) {
5581 #pragma omp target parallel for
5582 for (int i = 0; i < 10; ++i)
5583 ;
5584 }
5585 #pragma omp taskloop
5586 for (int i = 0; i < 10; ++i) {
5587 #pragma omp target enter data map(to: a)
5588 ++a;
5589 }
5590 #pragma omp taskloop
5591 for (int i = 0; i < 10; ++i) {
5592 #pragma omp target exit data map(from: a)
5593 ++a;
5594 }
5595 #pragma omp taskloop
5596 for (int i = 0; i < 10; ++i) {
5597 #pragma omp teams // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
5598 ++a;
5599 }
5600 #pragma omp taskloop
5601 for (int i = 0; i < 10; ++i) {
5602 #pragma omp taskloop
5603 for (int i = 0; i < 10; ++i)
5604 ++a;
5605 }
5606 #pragma omp taskloop
5607 for (int i = 0; i < 10; ++i) {
5608 #pragma omp target update to(a)
5609 bar();
5610 }
5611 #pragma omp taskloop
5612 for (int i = 0; i < 10; ++i) {
5613 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
5614 for (int j = 0; j < 10; ++j)
5615 ++a;
5616 }
5617 #pragma omp taskloop
5618 for (int i = 0; i < 10; ++i) {
5619 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
5620 for (int j = 0; j < 10; ++j)
5621 ++a;
5622 }
5623 #pragma omp taskloop
5624 for (int i = 0; i < 10; ++i) {
5625 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
5626 for (int j = 0; j < 10; ++j)
5627 ++a;
5628 }
5629 #pragma omp taskloop
5630 for (int i = 0; i < 10; ++i) {
5631 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
5632 for (int j = 0; j < 10; ++j)
5633 ++a;
5634 }
5635 #pragma omp taskloop
5636 for (int i = 0; i < 10; ++i) {
5637 #pragma omp target simd // OK
5638 for (int j = 0; j < 10; ++j)
5639 ++a;
5640 }
5641 #pragma omp taskloop
5642 for (int i = 0; i < 10; ++i) {
5643 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
5644 for (int j = 0; j < 10; ++j)
5645 ++a;
5646 }
5647 #pragma omp taskloop
5648 for (int i = 0; i < 10; ++i) {
5649 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
5650 for (int j = 0; j < 10; ++j)
5651 ++a;
5652 }
5653 #pragma omp taskloop
5654 for (int i = 0; i < 10; ++i) {
5655 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
5656 for (int j = 0; j < 10; ++j)
5657 ++a;
5658 }
5659 #pragma omp taskloop
5660 for (int i = 0; i < 10; ++i) {
5661 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
5662 for (int j = 0; j < 10; ++j)
5663 ++a;
5664 }
5665 #pragma omp taskloop
5666 for (int i = 0; i < 10; ++i) {
5667 #pragma omp target teams // OK
5668 ++a;
5669 }
5670 #pragma omp taskloop
5671 for (int i = 0; i < 10; ++i) {
5672 #pragma omp target teams distribute // OK
5673 for (int j = 0; j < 10; ++j)
5674 ++a;
5675 }
5676 #pragma omp taskloop
5677 for (int i = 0; i < 10; ++i) {
5678 #pragma omp target teams distribute parallel for // OK
5679 for (int j = 0; j < 10; ++j)
5680 ++a;
5681 }
5682 #pragma omp taskloop
5683 for (int i = 0; i < 10; ++i) {
5684 #pragma omp target teams distribute parallel for simd // OK
5685 for (int j = 0; j < 10; ++j)
5686 ++a;
5687 }
5688 #pragma omp taskloop
5689 for (int i = 0; i < 10; ++i) {
5690 #pragma omp target teams distribute simd // OK
5691 for (int j = 0; j < 10; ++j)
5692 ++a;
5693 }
5694 #pragma omp taskloop
5695 for (int i = 0; i < 10; ++i) {
5696 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}}
5697 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}}
5698 }
5699 #pragma omp taskloop
5700 for (int i = 0; i < 10; ++i) {
5701 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5702 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5703 }
5704 #pragma omp master taskloop
5705 for (int i = 0; i < 10; ++i) {
5706 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}}
5707 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}}
5708 }
5709 #pragma omp master taskloop
5710 for (int i = 0; i < 10; ++i) {
5711 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}}
5712 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}}
5713 }
5714 #pragma omp parallel master taskloop
5715 for (int i = 0; i < 10; ++i) {
5716 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}}
5717 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}}
5718 }
5719 #pragma omp parallel master taskloop
5720 for (int i = 0; i < 10; ++i) {
5721 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}}
5722 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}}
5723 }
5724
5725 // DISTRIBUTE DIRECTIVE
5726 #pragma omp target
5727 #pragma omp teams
5728 #pragma omp distribute
5729 for (int i = 0; i < 10; ++i) {
5730 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
5731 for (int i = 0; i < 10; ++i)
5732 ;
5733 }
5734 #pragma omp target
5735 #pragma omp teams
5736 #pragma omp distribute
5737 for (int i = 0; i < 10; ++i) {
5738 #pragma omp for
5739 for (int i = 0; i < 10; ++i)
5740 ;
5741 }
5742 #pragma omp target
5743 #pragma omp teams
5744 #pragma omp distribute
5745 for (int i = 0; i < 10; ++i) {
5746 #pragma omp simd
5747 for (int i = 0; i < 10; ++i)
5748 ;
5749 }
5750 #pragma omp target
5751 #pragma omp teams
5752 #pragma omp distribute
5753 for (int i = 0; i < 10; ++i) {
5754 #pragma omp for simd
5755 for (int i = 0; i < 10; ++i)
5756 ;
5757 }
5758 #pragma omp target
5759 #pragma omp teams
5760 #pragma omp distribute
5761 for (int i = 0; i < 10; ++i) {
5762 #pragma omp parallel
5763 for (int i = 0; i < 10; ++i)
5764 ;
5765 }
5766 #pragma omp target
5767 #pragma omp teams
5768 #pragma omp distribute
5769 for (int i = 0; i < 10; ++i) {
5770 #pragma omp sections
5771 {
5772 bar();
5773 }
5774 }
5775 #pragma omp target
5776 #pragma omp teams
5777 #pragma omp distribute
5778 for (int i = 0; i < 10; ++i) {
5779 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}
5780 {
5781 bar();
5782 }
5783 }
5784 #pragma omp target
5785 #pragma omp teams
5786 #pragma omp distribute
5787 for (int i = 0; i < 10; ++i) {
5788 #pragma omp single
5789 {
5790 bar();
5791 }
5792 }
5793 #pragma omp target
5794 #pragma omp teams
5795 #pragma omp distribute
5796 for (int i = 0; i < 10; ++i) {
5797 #pragma omp master
5798 {
5799 bar();
5800 }
5801 }
5802 #pragma omp target
5803 #pragma omp teams
5804 #pragma omp distribute
5805 for (int i = 0; i < 10; ++i) {
5806 #pragma omp critical
5807 {
5808 bar();
5809 }
5810 }
5811 #pragma omp target
5812 #pragma omp teams
5813 #pragma omp distribute
5814 for (int i = 0; i < 10; ++i) {
5815 #pragma omp parallel
5816 {
5817 #pragma omp single
5818 {
5819 bar();
5820 }
5821 }
5822 }
5823 #pragma omp target
5824 #pragma omp teams
5825 #pragma omp distribute
5826 for (int i = 0; i < 10; ++i) {
5827 #pragma omp parallel for
5828 for (int i = 0; i < 10; ++i)
5829 ;
5830 }
5831 #pragma omp target
5832 #pragma omp teams
5833 #pragma omp distribute
5834 for (int i = 0; i < 10; ++i) {
5835 #pragma omp parallel for simd
5836 for (int i = 0; i < 10; ++i)
5837 ;
5838 }
5839 #pragma omp target
5840 #pragma omp teams
5841 #pragma omp distribute
5842 for (int i = 0; i < 10; ++i) {
5843 #pragma omp parallel sections
5844 {
5845 bar();
5846 }
5847 }
5848 #pragma omp target
5849 #pragma omp teams
5850 #pragma omp distribute
5851 for (int i = 0; i < 10; ++i) {
5852 #pragma omp task
5853 {
5854 bar();
5855 }
5856 }
5857 #pragma omp target
5858 #pragma omp teams
5859 #pragma omp distribute
5860 for (int i = 0; i < 10; ++i) {
5861 #pragma omp taskyield
5862 bar();
5863 }
5864 #pragma omp target
5865 #pragma omp teams
5866 #pragma omp distribute
5867 for (int i = 0; i < 10; ++i) {
5868 #pragma omp barrier
5869 bar();
5870 }
5871 #pragma omp target
5872 #pragma omp teams
5873 #pragma omp distribute
5874 for (int i = 0; i < 10; ++i) {
5875 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
5876 bar();
5877 }
5878 #pragma omp target
5879 #pragma omp teams
5880 #pragma omp distribute
5881 for (int i = 0; i < 10; ++i) {
5882 #pragma omp taskwait
5883 bar();
5884 }
5885 #pragma omp target
5886 #pragma omp teams
5887 #pragma omp distribute
5888 for (int i = 0; i < 10; ++i) {
5889 #pragma omp flush
5890 bar();
5891 }
5892 #pragma omp target
5893 #pragma omp teams
5894 #pragma omp distribute
5895 for (int i = 0; i < 10; ++i) {
5896 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
5897 bar();
5898 }
5899 #pragma omp target
5900 #pragma omp teams
5901 #pragma omp distribute
5902 for (int i = 0; i < 10; ++i) {
5903 #pragma omp atomic
5904 ++a;
5905 }
5906 #pragma omp target
5907 #pragma omp teams
5908 #pragma omp distribute
5909 for (int i = 0; i < 10; ++i) {
5910 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
5911 ++a;
5912 }
5913 #pragma omp target
5914 #pragma omp teams
5915 #pragma omp distribute
5916 for (int i = 0; i < 10; ++i) {
5917 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
5918 ++a;
5919 }
5920 #pragma omp target
5921 #pragma omp teams
5922 #pragma omp distribute
5923 for (int i = 0; i < 10; ++i) {
5924 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
5925 for (int i = 0; i < 10; ++i)
5926 ;
5927 }
5928 #pragma omp target
5929 #pragma omp teams
5930 #pragma omp distribute
5931 for (int i = 0; i < 10; ++i) {
5932 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
5933 ++a;
5934 }
5935 #pragma omp target
5936 #pragma omp teams
5937 #pragma omp distribute
5938 for (int i = 0; i < 10; ++i) {
5939 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
5940 ++a;
5941 }
5942 #pragma omp target
5943 #pragma omp teams
5944 #pragma omp distribute
5945 for (int i = 0; i < 10; ++i) {
5946 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
5947 ++a;
5948 }
5949 #pragma omp target
5950 #pragma omp teams
5951 #pragma omp distribute
5952 for (int i = 0; i < 10; ++i) {
5953 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
5954 ++a;
5955 }
5956 #pragma omp target
5957 #pragma omp teams
5958 #pragma omp distribute
5959 for (int i = 0; i < 10; ++i) {
5960 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
5961 for (int j = 0; j < 10; ++j)
5962 ;
5963 }
5964 #pragma omp target
5965 #pragma omp teams
5966 #pragma omp distribute
5967 for (int i = 0; i < 10; ++i) {
5968 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
5969 for (int j = 0; j < 10; ++j)
5970 ;
5971 }
5972 #pragma omp target
5973 #pragma omp teams
5974 #pragma omp distribute
5975 for (int i = 0; i < 10; ++i) {
5976 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
5977 for (int j = 0; j < 10; ++j)
5978 ;
5979 }
5980 #pragma omp target
5981 #pragma omp teams
5982 #pragma omp distribute
5983 for (int i = 0; i < 10; ++i) {
5984 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
5985 for (int j = 0; j < 10; ++j)
5986 ;
5987 }
5988 #pragma omp target
5989 #pragma omp teams
5990 #pragma omp distribute
5991 for (int i = 0; i < 10; ++i) {
5992 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
5993 for (int j = 0; j < 10; ++j)
5994 ;
5995 }
5996 #pragma omp target
5997 #pragma omp teams
5998 #pragma omp distribute
5999 for (int i = 0; i < 10; ++i) {
6000 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
6001 a++;
6002 }
6003 #pragma omp target
6004 #pragma omp teams
6005 #pragma omp distribute
6006 for (int i = 0; i < 10; ++i) {
6007 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
6008 for (int j = 0; j < 10; ++j)
6009 ;
6010 }
6011 #pragma omp target
6012 #pragma omp teams
6013 #pragma omp distribute
6014 for (int i = 0; i < 10; ++i) {
6015 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
6016 for (int j = 0; j < 10; ++j)
6017 ;
6018 }
6019 #pragma omp target
6020 #pragma omp teams
6021 #pragma omp distribute
6022 for (int i = 0; i < 10; ++i) {
6023 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
6024 for (int j = 0; j < 10; ++j)
6025 ;
6026 }
6027 #pragma omp target
6028 #pragma omp teams
6029 #pragma omp distribute
6030 for (int i = 0; i < 10; ++i) {
6031 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
6032 for (int j = 0; j < 10; ++j)
6033 ;
6034 }
6035
6036 // DISTRIBUTE PARALLEL FOR DIRECTIVE
6037 #pragma omp target
6038 #pragma omp teams
6039 #pragma omp distribute parallel for
6040 for (int i = 0; i < 10; ++i) {
6041 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
6042 for (int i = 0; i < 10; ++i)
6043 ;
6044 }
6045 #pragma omp target
6046 #pragma omp teams
6047 #pragma omp distribute parallel for
6048 for (int i = 0; i < 10; ++i) {
6049 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
6050 for (int i = 0; i < 10; ++i)
6051 ;
6052 }
6053 #pragma omp target
6054 #pragma omp teams
6055 #pragma omp distribute parallel for
6056 for (int i = 0; i < 10; ++i) {
6057 #pragma omp for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
6058 for (int i = 0; i < 10; ++i)
6059 ;
6060 }
6061 #pragma omp target
6062 #pragma omp teams
6063 #pragma omp distribute parallel for
6064 for (int i = 0; i < 10; ++i) {
6065 #pragma omp simd
6066 for (int i = 0; i < 10; ++i)
6067 ;
6068 }
6069 #pragma omp target
6070 #pragma omp teams
6071 #pragma omp distribute parallel for
6072 for (int i = 0; i < 10; ++i) {
6073 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
6074 for (int i = 0; i < 10; ++i)
6075 ;
6076 }
6077 #pragma omp target
6078 #pragma omp teams
6079 #pragma omp distribute parallel for
6080 for (int i = 0; i < 10; ++i) {
6081 #pragma omp parallel
6082 for (int i = 0; i < 10; ++i)
6083 ;
6084 }
6085 #pragma omp target
6086 #pragma omp teams
6087 #pragma omp distribute parallel for
6088 for (int i = 0; i < 10; ++i) {
6089 #pragma omp sections // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
6090 {
6091 bar();
6092 }
6093 }
6094 #pragma omp target
6095 #pragma omp teams
6096 #pragma omp distribute parallel for
6097 for (int i = 0; i < 10; ++i) {
6098 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}
6099 {
6100 bar();
6101 }
6102 }
6103 #pragma omp target
6104 #pragma omp teams
6105 #pragma omp distribute parallel for
6106 for (int i = 0; i < 10; ++i) {
6107 #pragma omp single // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
6108 {
6109 bar();
6110 }
6111 }
6112 #pragma omp target
6113 #pragma omp teams
6114 #pragma omp distribute parallel for
6115 for (int i = 0; i < 10; ++i) {
6116 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
6117 {
6118 bar();
6119 }
6120 }
6121 #pragma omp target
6122 #pragma omp teams
6123 #pragma omp distribute parallel for
6124 for (int i = 0; i < 10; ++i) {
6125 #pragma omp critical
6126 {
6127 bar();
6128 }
6129 }
6130 #pragma omp target
6131 #pragma omp teams
6132 #pragma omp distribute parallel for
6133 for (int i = 0; i < 10; ++i) {
6134 #pragma omp parallel
6135 {
6136 #pragma omp single
6137 {
6138 bar();
6139 }
6140 }
6141 }
6142 #pragma omp target
6143 #pragma omp teams
6144 #pragma omp distribute parallel for
6145 for (int i = 0; i < 10; ++i) {
6146 #pragma omp parallel for
6147 for (int i = 0; i < 10; ++i)
6148 ;
6149 }
6150 #pragma omp target
6151 #pragma omp teams
6152 #pragma omp distribute parallel for
6153 for (int i = 0; i < 10; ++i) {
6154 #pragma omp parallel for simd
6155 for (int i = 0; i < 10; ++i)
6156 ;
6157 }
6158 #pragma omp target
6159 #pragma omp teams
6160 #pragma omp distribute parallel for
6161 for (int i = 0; i < 10; ++i) {
6162 #pragma omp parallel sections
6163 {
6164 bar();
6165 }
6166 }
6167 #pragma omp target
6168 #pragma omp teams
6169 #pragma omp distribute parallel for
6170 for (int i = 0; i < 10; ++i) {
6171 #pragma omp task
6172 {
6173 bar();
6174 }
6175 }
6176 #pragma omp target
6177 #pragma omp teams
6178 #pragma omp distribute parallel for
6179 for (int i = 0; i < 10; ++i) {
6180 #pragma omp taskyield
6181 bar();
6182 }
6183 #pragma omp target
6184 #pragma omp teams
6185 #pragma omp distribute parallel for
6186 for (int i = 0; i < 10; ++i) {
6187 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
6188 bar();
6189 }
6190 #pragma omp target
6191 #pragma omp teams
6192 #pragma omp distribute parallel for
6193 for (int i = 0; i < 10; ++i) {
6194 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
6195 bar();
6196 }
6197 #pragma omp target
6198 #pragma omp teams
6199 #pragma omp distribute parallel for
6200 for (int i = 0; i < 10; ++i) {
6201 #pragma omp taskwait
6202 bar();
6203 }
6204 #pragma omp target
6205 #pragma omp teams
6206 #pragma omp distribute parallel for
6207 for (int i = 0; i < 10; ++i) {
6208 #pragma omp flush
6209 bar();
6210 }
6211 #pragma omp target
6212 #pragma omp teams
6213 #pragma omp distribute parallel for
6214 for (int i = 0; i < 10; ++i) {
6215 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
6216 bar();
6217 }
6218 #pragma omp target
6219 #pragma omp teams
6220 #pragma omp distribute parallel for
6221 for (int i = 0; i < 10; ++i) {
6222 #pragma omp atomic
6223 ++a;
6224 }
6225 #pragma omp target
6226 #pragma omp teams
6227 #pragma omp distribute parallel for
6228 for (int i = 0; i < 10; ++i) {
6229 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
6230 ++a;
6231 }
6232 #pragma omp target
6233 #pragma omp teams
6234 #pragma omp distribute parallel for
6235 for (int i = 0; i < 10; ++i) {
6236 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
6237 ++a;
6238 }
6239 #pragma omp target
6240 #pragma omp teams
6241 #pragma omp distribute parallel for
6242 for (int i = 0; i < 10; ++i) {
6243 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
6244 for (int i = 0; i < 10; ++i)
6245 ;
6246 }
6247 #pragma omp target
6248 #pragma omp teams
6249 #pragma omp distribute parallel for
6250 for (int i = 0; i < 10; ++i) {
6251 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
6252 ++a;
6253 }
6254 #pragma omp target
6255 #pragma omp teams
6256 #pragma omp distribute parallel for
6257 for (int i = 0; i < 10; ++i) {
6258 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
6259 ++a;
6260 }
6261 #pragma omp target
6262 #pragma omp teams
6263 #pragma omp distribute parallel for
6264 for (int i = 0; i < 10; ++i) {
6265 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
6266 ++a;
6267 }
6268 #pragma omp target
6269 #pragma omp teams
6270 #pragma omp distribute parallel for
6271 for (int i = 0; i < 10; ++i) {
6272 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
6273 ++a;
6274 }
6275 #pragma omp target
6276 #pragma omp teams
6277 #pragma omp distribute parallel for
6278 for (int i = 0; i < 10; ++i) {
6279 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
6280 for (int i = 0; i < 10; ++i)
6281 ;
6282 }
6283 #pragma omp target
6284 #pragma omp teams
6285 #pragma omp distribute parallel for
6286 for (int i = 0; i < 10; ++i) {
6287 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
6288 for (int i = 0; i < 10; ++i)
6289 ;
6290 }
6291 #pragma omp target
6292 #pragma omp teams
6293 #pragma omp distribute parallel for
6294 for (int i = 0; i < 10; ++i) {
6295 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
6296 for (int i = 0; i < 10; ++i)
6297 ;
6298 }
6299 #pragma omp target
6300 #pragma omp teams
6301 #pragma omp distribute parallel for
6302 for (int i = 0; i < 10; ++i) {
6303 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
6304 for (int i = 0; i < 10; ++i)
6305 ;
6306 }
6307 #pragma omp target
6308 #pragma omp teams
6309 #pragma omp distribute parallel for
6310 for (int i = 0; i < 10; ++i) {
6311 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
6312 for (int i = 0; i < 10; ++i)
6313 ;
6314 }
6315 #pragma omp target
6316 #pragma omp teams
6317 #pragma omp distribute parallel for
6318 for (int i = 0; i < 10; ++i) {
6319 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
6320 a++;
6321 }
6322 #pragma omp target
6323 #pragma omp teams
6324 #pragma omp distribute parallel for
6325 for (int i = 0; i < 10; ++i) {
6326 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
6327 for (int i = 0; i < 10; ++i)
6328 ;
6329 }
6330 #pragma omp target
6331 #pragma omp teams
6332 #pragma omp distribute parallel for
6333 for (int i = 0; i < 10; ++i) {
6334 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
6335 for (int i = 0; i < 10; ++i)
6336 ;
6337 }
6338 #pragma omp target
6339 #pragma omp teams
6340 #pragma omp distribute parallel for
6341 for (int i = 0; i < 10; ++i) {
6342 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
6343 for (int i = 0; i < 10; ++i)
6344 ;
6345 }
6346 #pragma omp target
6347 #pragma omp teams
6348 #pragma omp distribute parallel for
6349 for (int i = 0; i < 10; ++i) {
6350 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
6351 for (int i = 0; i < 10; ++i)
6352 ;
6353 }
6354
6355 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
6356 #pragma omp target
6357 #pragma omp teams
6358 #pragma omp distribute parallel for simd
6359 for (int i = 0; i < 10; ++i) {
6360 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6361 for (int i = 0; i < 10; ++i)
6362 ;
6363 }
6364 #pragma omp target
6365 #pragma omp teams
6366 #pragma omp distribute parallel for simd
6367 for (int i = 0; i < 10; ++i) {
6368 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6369 for (int i = 0; i < 10; ++i)
6370 ;
6371 }
6372 #pragma omp target
6373 #pragma omp teams
6374 #pragma omp distribute parallel for simd
6375 for (int i = 0; i < 10; ++i) {
6376 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6377 for (int i = 0; i < 10; ++i)
6378 ;
6379 }
6380 #pragma omp target
6381 #pragma omp teams
6382 #pragma omp distribute parallel for simd
6383 for (int i = 0; i < 10; ++i) {
6384 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
6385 for (int i = 0; i < 10; ++i)
6386 ;
6387 }
6388 #pragma omp target
6389 #pragma omp teams
6390 #pragma omp distribute parallel for simd
6391 for (int i = 0; i < 10; ++i) {
6392 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6393 for (int i = 0; i < 10; ++i)
6394 ;
6395 }
6396 #pragma omp target
6397 #pragma omp teams
6398 #pragma omp distribute parallel for simd
6399 for (int i = 0; i < 10; ++i) {
6400 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6401 for (int i = 0; i < 10; ++i)
6402 ;
6403 }
6404 #pragma omp target
6405 #pragma omp teams
6406 #pragma omp distribute parallel for simd
6407 for (int i = 0; i < 10; ++i) {
6408 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6409 {
6410 bar();
6411 }
6412 }
6413 #pragma omp target
6414 #pragma omp teams
6415 #pragma omp distribute parallel for simd
6416 for (int i = 0; i < 10; ++i) {
6417 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6418 {
6419 bar();
6420 }
6421 }
6422 #pragma omp target
6423 #pragma omp teams
6424 #pragma omp distribute parallel for simd
6425 for (int i = 0; i < 10; ++i) {
6426 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6427 {
6428 bar();
6429 }
6430 }
6431 #pragma omp target
6432 #pragma omp teams
6433 #pragma omp distribute parallel for simd
6434 for (int i = 0; i < 10; ++i) {
6435 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6436 {
6437 bar();
6438 }
6439 }
6440 #pragma omp target
6441 #pragma omp teams
6442 #pragma omp distribute parallel for simd
6443 for (int i = 0; i < 10; ++i) {
6444 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6445 {
6446 bar();
6447 }
6448 }
6449 #pragma omp target
6450 #pragma omp teams
6451 #pragma omp distribute parallel for simd
6452 for (int i = 0; i < 10; ++i) {
6453 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6454 {
6455 #pragma omp single
6456 {
6457 bar();
6458 }
6459 }
6460 }
6461 #pragma omp target
6462 #pragma omp teams
6463 #pragma omp distribute parallel for simd
6464 for (int i = 0; i < 10; ++i) {
6465 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6466 for (int i = 0; i < 10; ++i)
6467 ;
6468 }
6469 #pragma omp target
6470 #pragma omp teams
6471 #pragma omp distribute parallel for simd
6472 for (int i = 0; i < 10; ++i) {
6473 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6474 for (int i = 0; i < 10; ++i)
6475 ;
6476 }
6477 #pragma omp target
6478 #pragma omp teams
6479 #pragma omp distribute parallel for simd
6480 for (int i = 0; i < 10; ++i) {
6481 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6482 {
6483 bar();
6484 }
6485 }
6486 #pragma omp target
6487 #pragma omp teams
6488 #pragma omp distribute parallel for simd
6489 for (int i = 0; i < 10; ++i) {
6490 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6491 {
6492 bar();
6493 }
6494 }
6495 #pragma omp target
6496 #pragma omp teams
6497 #pragma omp distribute parallel for simd
6498 for (int i = 0; i < 10; ++i) {
6499 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6500 bar();
6501 }
6502 #pragma omp target
6503 #pragma omp teams
6504 #pragma omp distribute parallel for simd
6505 for (int i = 0; i < 10; ++i) {
6506 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6507 bar();
6508 }
6509 #pragma omp target
6510 #pragma omp teams
6511 #pragma omp distribute parallel for simd
6512 for (int i = 0; i < 10; ++i) {
6513 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
6514 bar();
6515 }
6516 #pragma omp target
6517 #pragma omp teams
6518 #pragma omp distribute parallel for simd
6519 for (int i = 0; i < 10; ++i) {
6520 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6521 bar();
6522 }
6523 #pragma omp target
6524 #pragma omp teams
6525 #pragma omp distribute parallel for simd
6526 for (int i = 0; i < 10; ++i) {
6527 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6528 bar();
6529 }
6530 #pragma omp target
6531 #pragma omp teams
6532 #pragma omp distribute parallel for simd
6533 for (int i = 0; i < 10; ++i) {
6534 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6535 bar();
6536 }
6537 #pragma omp target
6538 #pragma omp teams
6539 #pragma omp distribute parallel for simd
6540 for (int i = 0; i < 10; ++i) {
6541 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
6542 ++a;
6543 }
6544 #pragma omp target
6545 #pragma omp teams
6546 #pragma omp distribute parallel for simd
6547 for (int i = 0; i < 10; ++i) {
6548 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6549 ++a;
6550 }
6551 #pragma omp target
6552 #pragma omp teams
6553 #pragma omp distribute parallel for simd
6554 for (int i = 0; i < 10; ++i) {
6555 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6556 ++a;
6557 }
6558 #pragma omp target
6559 #pragma omp teams
6560 #pragma omp distribute parallel for simd
6561 for (int i = 0; i < 10; ++i) {
6562 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6563 for (int i = 0; i < 10; ++i)
6564 ;
6565 }
6566 #pragma omp target
6567 #pragma omp teams
6568 #pragma omp distribute parallel for simd
6569 for (int i = 0; i < 10; ++i) {
6570 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6571 ++a;
6572 }
6573 #pragma omp target
6574 #pragma omp teams
6575 #pragma omp distribute parallel for simd
6576 for (int i = 0; i < 10; ++i) {
6577 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6578 ++a;
6579 }
6580 #pragma omp target
6581 #pragma omp teams
6582 #pragma omp distribute parallel for simd
6583 for (int i = 0; i < 10; ++i) {
6584 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6585 ++a;
6586 }
6587 #pragma omp target
6588 #pragma omp teams
6589 #pragma omp distribute parallel for simd
6590 for (int i = 0; i < 10; ++i) {
6591 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6592 ++a;
6593 }
6594 #pragma omp target
6595 #pragma omp teams
6596 #pragma omp distribute parallel for simd
6597 for (int i = 0; i < 10; ++i) {
6598 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6599 for (int i = 0; i < 10; ++i)
6600 ++a;
6601 }
6602 #pragma omp target
6603 #pragma omp teams
6604 #pragma omp distribute parallel for simd
6605 for (int i = 0; i < 10; ++i) {
6606 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6607 for (int i = 0; i < 10; ++i)
6608 ++a;
6609 }
6610 #pragma omp target
6611 #pragma omp teams
6612 #pragma omp distribute parallel for simd
6613 for (int i = 0; i < 10; ++i) {
6614 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6615 for (int i = 0; i < 10; ++i)
6616 ++a;
6617 }
6618 #pragma omp target
6619 #pragma omp teams
6620 #pragma omp distribute parallel for simd
6621 for (int i = 0; i < 10; ++i) {
6622 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6623 for (int i = 0; i < 10; ++i)
6624 ++a;
6625 }
6626 #pragma omp target
6627 #pragma omp teams
6628 #pragma omp distribute parallel for simd
6629 for (int i = 0; i < 10; ++i) {
6630 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6631 for (int i = 0; i < 10; ++i)
6632 ++a;
6633 }
6634 #pragma omp target
6635 #pragma omp teams
6636 #pragma omp distribute parallel for simd
6637 for (int i = 0; i < 10; ++i) {
6638 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6639 for (int i = 0; i < 10; ++i)
6640 ++a;
6641 }
6642 #pragma omp target
6643 #pragma omp teams
6644 #pragma omp distribute parallel for simd
6645 for (int i = 0; i < 10; ++i) {
6646 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6647 ++a;
6648 }
6649 #pragma omp target
6650 #pragma omp teams
6651 #pragma omp distribute parallel for simd
6652 for (int i = 0; i < 10; ++i) {
6653 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6654 for (int i = 0; i < 10; ++i)
6655 ++a;
6656 }
6657 #pragma omp target
6658 #pragma omp teams
6659 #pragma omp distribute parallel for simd
6660 for (int i = 0; i < 10; ++i) {
6661 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6662 for (int i = 0; i < 10; ++i)
6663 ++a;
6664 }
6665 #pragma omp target
6666 #pragma omp teams
6667 #pragma omp distribute parallel for simd
6668 for (int i = 0; i < 10; ++i) {
6669 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6670 for (int i = 0; i < 10; ++i)
6671 ++a;
6672 }
6673 #pragma omp target
6674 #pragma omp teams
6675 #pragma omp distribute parallel for simd
6676 for (int i = 0; i < 10; ++i) {
6677 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6678 for (int i = 0; i < 10; ++i)
6679 ++a;
6680 }
6681
6682 // TARGET SIMD DIRECTIVE
6683 #pragma omp target simd
6684 for (int i = 0; i < 10; ++i) {
6685 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6686 for (int i = 0; i < 10; ++i)
6687 ;
6688 }
6689 #pragma omp target simd
6690 for (int i = 0; i < 10; ++i) {
6691 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6692 for (int i = 0; i < 10; ++i)
6693 ;
6694 }
6695 #pragma omp target simd
6696 for (int i = 0; i < 10; ++i) {
6697 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6698 for (int i = 0; i < 10; ++i)
6699 ;
6700 }
6701 #pragma omp target simd
6702 for (int i = 0; i < 10; ++i) {
6703 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
6704 for (int i = 0; i < 10; ++i)
6705 ;
6706 }
6707 #pragma omp target simd
6708 for (int i = 0; i < 10; ++i) {
6709 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6710 for (int i = 0; i < 10; ++i)
6711 ;
6712 }
6713 #pragma omp target simd
6714 for (int i = 0; i < 10; ++i) {
6715 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6716 for (int i = 0; i < 10; ++i)
6717 ;
6718 }
6719 #pragma omp target simd
6720 for (int i = 0; i < 10; ++i) {
6721 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6722 {
6723 bar();
6724 }
6725 }
6726 #pragma omp target simd
6727 for (int i = 0; i < 10; ++i) {
6728 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6729 {
6730 bar();
6731 }
6732 }
6733 #pragma omp target simd
6734 for (int i = 0; i < 10; ++i) {
6735 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6736 {
6737 bar();
6738 }
6739 }
6740 #pragma omp target simd
6741 for (int i = 0; i < 10; ++i) {
6742 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6743 {
6744 bar();
6745 }
6746 }
6747 #pragma omp target simd
6748 for (int i = 0; i < 10; ++i) {
6749 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6750 {
6751 bar();
6752 }
6753 }
6754 #pragma omp target simd
6755 for (int i = 0; i < 10; ++i) {
6756 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6757 {
6758 #pragma omp single
6759 {
6760 bar();
6761 }
6762 }
6763 }
6764 #pragma omp target simd
6765 for (int i = 0; i < 10; ++i) {
6766 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6767 for (int i = 0; i < 10; ++i)
6768 ;
6769 }
6770 #pragma omp target simd
6771 for (int i = 0; i < 10; ++i) {
6772 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6773 for (int i = 0; i < 10; ++i)
6774 ;
6775 }
6776 #pragma omp target simd
6777 for (int i = 0; i < 10; ++i) {
6778 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6779 {
6780 bar();
6781 }
6782 }
6783 #pragma omp target simd
6784 for (int i = 0; i < 10; ++i) {
6785 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6786 {
6787 bar();
6788 }
6789 }
6790 #pragma omp target simd
6791 for (int i = 0; i < 10; ++i) {
6792 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6793 bar();
6794 }
6795 #pragma omp target simd
6796 for (int i = 0; i < 10; ++i) {
6797 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6798 bar();
6799 }
6800 #pragma omp target simd
6801 for (int i = 0; i < 10; ++i) {
6802 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
6803 bar();
6804 }
6805 #pragma omp target simd
6806 for (int i = 0; i < 10; ++i) {
6807 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6808 bar();
6809 }
6810 #pragma omp target simd
6811 for (int i = 0; i < 10; ++i) {
6812 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6813 bar();
6814 }
6815 #pragma omp target simd
6816 for (int i = 0; i < 10; ++i) {
6817 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6818 bar();
6819 }
6820 #pragma omp target simd
6821 for (int i = 0; i < 10; ++i) {
6822 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
6823 ++a;
6824 }
6825 #pragma omp target simd
6826 for (int i = 0; i < 10; ++i) {
6827 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6828 ++a;
6829 }
6830 #pragma omp target simd
6831 for (int i = 0; i < 10; ++i) {
6832 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6833 ++a;
6834 }
6835 #pragma omp target simd
6836 for (int i = 0; i < 10; ++i) {
6837 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6838 for (int i = 0; i < 10; ++i)
6839 ;
6840 }
6841 #pragma omp target simd
6842 for (int i = 0; i < 10; ++i) {
6843 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6844 ++a;
6845 }
6846 #pragma omp target simd
6847 for (int i = 0; i < 10; ++i) {
6848 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6849 ++a;
6850 }
6851 #pragma omp target simd
6852 for (int i = 0; i < 10; ++i) {
6853 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6854 ++a;
6855 }
6856 #pragma omp target simd
6857 for (int i = 0; i < 10; ++i) {
6858 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6859 ++a;
6860 }
6861 #pragma omp target simd
6862 for (int i = 0; i < 10; ++i) {
6863 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6864 for (int i = 0; i < 10; ++i)
6865 ++a;
6866 }
6867 #pragma omp target simd
6868 for (int i = 0; i < 10; ++i) {
6869 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6870 for (int i = 0; i < 10; ++i)
6871 ++a;
6872 }
6873 #pragma omp target simd
6874 for (int i = 0; i < 10; ++i) {
6875 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6876 for (int i = 0; i < 10; ++i)
6877 ++a;
6878 }
6879 #pragma omp target simd
6880 for (int i = 0; i < 10; ++i) {
6881 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6882 for (int i = 0; i < 10; ++i)
6883 ++a;
6884 }
6885 #pragma omp target simd
6886 for (int i = 0; i < 10; ++i) {
6887 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6888 for (int i = 0; i < 10; ++i)
6889 ++a;
6890 }
6891 #pragma omp target simd
6892 for (int i = 0; i < 10; ++i) {
6893 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6894 for (int i = 0; i < 10; ++i)
6895 ++a;
6896 }
6897 #pragma omp target simd
6898 for (int i = 0; i < 10; ++i) {
6899 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6900 for (int i = 0; i < 10; ++i)
6901 ++a;
6902 }
6903 #pragma omp target simd
6904 for (int i = 0; i < 10; ++i) {
6905 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6906 for (int i = 0; i < 10; ++i)
6907 ++a;
6908 }
6909
6910 // TEAMS DISTRIBUTE DIRECTIVE
6911 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
6912 for (int i = 0; i < 10; ++i)
6913 ;
6914 #pragma omp target
6915 #pragma omp teams distribute
6916 for (int i = 0; i < 10; ++i) {
6917 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
6918 for (int i = 0; i < 10; ++i)
6919 ;
6920 }
6921 #pragma omp target
6922 #pragma omp teams distribute
6923 for (int i = 0; i < 10; ++i) {
6924 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
6925 for (int i = 0; i < 10; ++i)
6926 ;
6927 }
6928 #pragma omp target
6929 #pragma omp teams distribute
6930 for (int i = 0; i < 10; ++i) {
6931 #pragma omp for // OK
6932 for (int i = 0; i < 10; ++i)
6933 ;
6934 }
6935 #pragma omp target
6936 #pragma omp teams distribute
6937 for (int i = 0; i < 10; ++i) {
6938 #pragma omp simd // OK
6939 for (int i = 0; i < 10; ++i)
6940 ;
6941 }
6942 #pragma omp target
6943 #pragma omp teams distribute
6944 for (int i = 0; i < 10; ++i) {
6945 #pragma omp for simd // OK
6946 for (int i = 0; i < 10; ++i)
6947 ;
6948 }
6949 #pragma omp target
6950 #pragma omp teams distribute
6951 for (int i = 0; i < 10; ++i) {
6952 #pragma omp parallel // OK
6953 for (int i = 0; i < 10; ++i)
6954 ;
6955 }
6956 #pragma omp target
6957 #pragma omp teams distribute
6958 for (int i = 0; i < 10; ++i) {
6959 #pragma omp sections // OK
6960 {
6961 bar();
6962 }
6963 }
6964 #pragma omp target
6965 #pragma omp teams distribute
6966 for (int i = 0; i < 10; ++i) {
6967 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
6968 {
6969 bar();
6970 }
6971 }
6972 #pragma omp target
6973 #pragma omp teams distribute
6974 for (int i = 0; i < 10; ++i) {
6975 #pragma omp single // OK
6976 {
6977 bar();
6978 }
6979 }
6980 #pragma omp target
6981 #pragma omp teams distribute
6982 for (int i = 0; i < 10; ++i) {
6983 #pragma omp master // OK
6984 {
6985 bar();
6986 }
6987 }
6988 #pragma omp target
6989 #pragma omp teams distribute
6990 for (int i = 0; i < 10; ++i) {
6991 #pragma omp critical // OK
6992 {
6993 bar();
6994 }
6995 }
6996 #pragma omp target
6997 #pragma omp teams distribute
6998 for (int i = 0; i < 10; ++i) {
6999 #pragma omp parallel // OK
7000 {
7001 #pragma omp single
7002 {
7003 bar();
7004 }
7005 }
7006 }
7007 #pragma omp target
7008 #pragma omp teams distribute
7009 for (int i = 0; i < 10; ++i) {
7010 #pragma omp parallel for // OK
7011 for (int i = 0; i < 10; ++i)
7012 ;
7013 }
7014 #pragma omp target
7015 #pragma omp teams distribute
7016 for (int i = 0; i < 10; ++i) {
7017 #pragma omp parallel for simd // OK
7018 for (int i = 0; i < 10; ++i)
7019 ;
7020 }
7021 #pragma omp target
7022 #pragma omp teams distribute
7023 for (int i = 0; i < 10; ++i) {
7024 #pragma omp parallel sections // OK
7025 {
7026 bar();
7027 }
7028 }
7029 #pragma omp target
7030 #pragma omp teams distribute
7031 for (int i = 0; i < 10; ++i) {
7032 #pragma omp task // OK
7033 {
7034 bar();
7035 }
7036 }
7037 #pragma omp target
7038 #pragma omp teams distribute
7039 for (int i = 0; i < 10; ++i) {
7040 #pragma omp taskyield // OK
7041 bar();
7042 }
7043 #pragma omp target
7044 #pragma omp teams distribute
7045 for (int i = 0; i < 10; ++i) {
7046 #pragma omp barrier // OK
7047 bar();
7048 }
7049 #pragma omp target
7050 #pragma omp teams distribute
7051 for (int i = 0; i < 10; ++i) {
7052 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
7053 bar();
7054 }
7055 #pragma omp target
7056 #pragma omp teams distribute
7057 for (int i = 0; i < 10; ++i) {
7058 #pragma omp taskwait // OK
7059 bar();
7060 }
7061 #pragma omp target
7062 #pragma omp teams distribute
7063 for (int i = 0; i < 10; ++i) {
7064 #pragma omp flush // OK
7065 bar();
7066 }
7067 #pragma omp target
7068 #pragma omp teams distribute
7069 for (int i = 0; i < 10; ++i) {
7070 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
7071 bar();
7072 }
7073 #pragma omp target
7074 #pragma omp teams distribute
7075 for (int i = 0; i < 10; ++i) {
7076 #pragma omp atomic // OK
7077 ++a;
7078 }
7079 #pragma omp target
7080 #pragma omp teams distribute
7081 for (int i = 0; i < 10; ++i) {
7082 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
7083 ++a;
7084 }
7085 #pragma omp target
7086 #pragma omp teams distribute
7087 for (int i = 0; i < 10; ++i) {
7088 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
7089 ++a;
7090 }
7091 #pragma omp target
7092 #pragma omp teams distribute
7093 for (int i = 0; i < 10; ++i) {
7094 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
7095 for (int i = 0; i < 10; ++i)
7096 ;
7097 }
7098 #pragma omp target
7099 #pragma omp teams distribute
7100 for (int i = 0; i < 10; ++i) {
7101 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
7102 ++a;
7103 }
7104 #pragma omp target
7105 #pragma omp teams distribute
7106 for (int i = 0; i < 10; ++i) {
7107 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
7108 ++a;
7109 }
7110 #pragma omp target
7111 #pragma omp teams distribute
7112 for (int i = 0; i < 10; ++i) {
7113 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
7114 ++a;
7115 }
7116 #pragma omp target
7117 #pragma omp teams distribute
7118 for (int i = 0; i < 10; ++i) {
7119 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
7120 ++a;
7121 }
7122 #pragma omp target
7123 #pragma omp teams distribute
7124 for (int i = 0; i < 10; ++i) {
7125 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
7126 for (int i = 0; i < 10; ++i)
7127 ++a;
7128 }
7129 #pragma omp target
7130 #pragma omp teams distribute
7131 for (int i = 0; i < 10; ++i) {
7132 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
7133 for (int i = 0; i < 10; ++i)
7134 ++a;
7135 }
7136 #pragma omp target
7137 #pragma omp teams distribute
7138 for (int i = 0; i < 10; ++i) {
7139 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
7140 for (int i = 0; i < 10; ++i)
7141 ++a;
7142 }
7143 #pragma omp target
7144 #pragma omp teams distribute
7145 for (int i = 0; i < 10; ++i) {
7146 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
7147 for (int i = 0; i < 10; ++i)
7148 ++a;
7149 }
7150 #pragma omp target
7151 #pragma omp teams distribute
7152 for (int i = 0; i < 10; ++i) {
7153 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
7154 for (int i = 0; i < 10; ++i)
7155 ++a;
7156 }
7157 #pragma omp target
7158 #pragma omp teams distribute
7159 for (int i = 0; i < 10; ++i) {
7160 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
7161 for (int i = 0; i < 10; ++i)
7162 ++a;
7163 }
7164 #pragma omp target
7165 #pragma omp teams distribute
7166 for (int i = 0; i < 10; ++i) {
7167 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
7168 for (int i = 0; i < 10; ++i)
7169 ++a;
7170 }
7171 #pragma omp target
7172 #pragma omp teams distribute
7173 for (int i = 0; i < 10; ++i) {
7174 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
7175 for (int i = 0; i < 10; ++i)
7176 ++a;
7177 }
7178
7179 // TEAMS DISTRIBUTE DIRECTIVE
7180 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
7181 for (int i = 0; i < 10; ++i)
7182 ;
7183 #pragma omp target
7184 #pragma omp teams distribute
7185 for (int i = 0; i < 10; ++i) {
7186 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
7187 for (int i = 0; i < 10; ++i)
7188 ;
7189 }
7190 #pragma omp target
7191 #pragma omp teams distribute
7192 for (int i = 0; i < 10; ++i) {
7193 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
7194 for (int i = 0; i < 10; ++i)
7195 ;
7196 }
7197 #pragma omp target
7198 #pragma omp teams distribute
7199 for (int i = 0; i < 10; ++i) {
7200 #pragma omp for // OK
7201 for (int i = 0; i < 10; ++i)
7202 ;
7203 }
7204 #pragma omp target
7205 #pragma omp teams distribute
7206 for (int i = 0; i < 10; ++i) {
7207 #pragma omp simd // OK
7208 for (int i = 0; i < 10; ++i)
7209 ;
7210 }
7211 #pragma omp target
7212 #pragma omp teams distribute
7213 for (int i = 0; i < 10; ++i) {
7214 #pragma omp for simd // OK
7215 for (int i = 0; i < 10; ++i)
7216 ;
7217 }
7218 #pragma omp target
7219 #pragma omp teams distribute
7220 for (int i = 0; i < 10; ++i) {
7221 #pragma omp parallel // OK
7222 for (int i = 0; i < 10; ++i)
7223 ;
7224 }
7225 #pragma omp target
7226 #pragma omp teams distribute
7227 for (int i = 0; i < 10; ++i) {
7228 #pragma omp sections // OK
7229 {
7230 bar();
7231 }
7232 }
7233 #pragma omp target
7234 #pragma omp teams distribute
7235 for (int i = 0; i < 10; ++i) {
7236 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
7237 {
7238 bar();
7239 }
7240 }
7241 #pragma omp target
7242 #pragma omp teams distribute
7243 for (int i = 0; i < 10; ++i) {
7244 #pragma omp single // OK
7245 {
7246 bar();
7247 }
7248 }
7249 #pragma omp target
7250 #pragma omp teams distribute
7251 for (int i = 0; i < 10; ++i) {
7252 #pragma omp master // OK
7253 {
7254 bar();
7255 }
7256 }
7257 #pragma omp target
7258 #pragma omp teams distribute
7259 for (int i = 0; i < 10; ++i) {
7260 #pragma omp critical // OK
7261 {
7262 bar();
7263 }
7264 }
7265 #pragma omp target
7266 #pragma omp teams distribute
7267 for (int i = 0; i < 10; ++i) {
7268 #pragma omp parallel // OK
7269 {
7270 #pragma omp single
7271 {
7272 bar();
7273 }
7274 }
7275 }
7276 #pragma omp target
7277 #pragma omp teams distribute
7278 for (int i = 0; i < 10; ++i) {
7279 #pragma omp parallel for // OK
7280 for (int i = 0; i < 10; ++i)
7281 ;
7282 }
7283 #pragma omp target
7284 #pragma omp teams distribute
7285 for (int i = 0; i < 10; ++i) {
7286 #pragma omp parallel for simd // OK
7287 for (int i = 0; i < 10; ++i)
7288 ;
7289 }
7290 #pragma omp target
7291 #pragma omp teams distribute
7292 for (int i = 0; i < 10; ++i) {
7293 #pragma omp parallel sections // OK
7294 {
7295 bar();
7296 }
7297 }
7298 #pragma omp target
7299 #pragma omp teams distribute
7300 for (int i = 0; i < 10; ++i) {
7301 #pragma omp task // OK
7302 {
7303 bar();
7304 }
7305 }
7306 #pragma omp target
7307 #pragma omp teams distribute
7308 for (int i = 0; i < 10; ++i) {
7309 #pragma omp taskyield // OK
7310 bar();
7311 }
7312 #pragma omp target
7313 #pragma omp teams distribute
7314 for (int i = 0; i < 10; ++i) {
7315 #pragma omp barrier // OK
7316 bar();
7317 }
7318 #pragma omp target
7319 #pragma omp teams distribute
7320 for (int i = 0; i < 10; ++i) {
7321 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
7322 bar();
7323 }
7324 #pragma omp target
7325 #pragma omp teams distribute
7326 for (int i = 0; i < 10; ++i) {
7327 #pragma omp taskwait // OK
7328 bar();
7329 }
7330 #pragma omp target
7331 #pragma omp teams distribute
7332 for (int i = 0; i < 10; ++i) {
7333 #pragma omp flush // OK
7334 bar();
7335 }
7336 #pragma omp target
7337 #pragma omp teams distribute
7338 for (int i = 0; i < 10; ++i) {
7339 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
7340 bar();
7341 }
7342 #pragma omp target
7343 #pragma omp teams distribute
7344 for (int i = 0; i < 10; ++i) {
7345 #pragma omp atomic // OK
7346 ++a;
7347 }
7348 #pragma omp target
7349 #pragma omp teams distribute
7350 for (int i = 0; i < 10; ++i) {
7351 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
7352 ++a;
7353 }
7354 #pragma omp target
7355 #pragma omp teams distribute
7356 for (int i = 0; i < 10; ++i) {
7357 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
7358 ++a;
7359 }
7360 #pragma omp target
7361 #pragma omp teams distribute
7362 for (int i = 0; i < 10; ++i) {
7363 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
7364 for (int i = 0; i < 10; ++i)
7365 ;
7366 }
7367 #pragma omp target
7368 #pragma omp teams distribute
7369 for (int i = 0; i < 10; ++i) {
7370 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
7371 ++a;
7372 }
7373 #pragma omp target
7374 #pragma omp teams distribute
7375 for (int i = 0; i < 10; ++i) {
7376 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
7377 ++a;
7378 }
7379 #pragma omp target
7380 #pragma omp teams distribute
7381 for (int i = 0; i < 10; ++i) {
7382 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
7383 ++a;
7384 }
7385 #pragma omp target
7386 #pragma omp teams distribute
7387 for (int i = 0; i < 10; ++i) {
7388 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
7389 ++a;
7390 }
7391 #pragma omp target
7392 #pragma omp teams distribute
7393 for (int i = 0; i < 10; ++i) {
7394 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
7395 for (int i = 0; i < 10; ++i)
7396 ++a;
7397 }
7398 #pragma omp target
7399 #pragma omp teams distribute
7400 for (int i = 0; i < 10; ++i) {
7401 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
7402 for (int i = 0; i < 10; ++i)
7403 ++a;
7404 }
7405 #pragma omp target
7406 #pragma omp teams distribute
7407 for (int i = 0; i < 10; ++i) {
7408 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
7409 for (int i = 0; i < 10; ++i)
7410 ++a;
7411 }
7412 #pragma omp target
7413 #pragma omp teams distribute
7414 for (int i = 0; i < 10; ++i) {
7415 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
7416 for (int i = 0; i < 10; ++i)
7417 ++a;
7418 }
7419 #pragma omp target
7420 #pragma omp teams distribute
7421 for (int i = 0; i < 10; ++i) {
7422 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
7423 for (int i = 0; i < 10; ++i)
7424 ++a;
7425 }
7426 #pragma omp target
7427 #pragma omp teams distribute
7428 for (int i = 0; i < 10; ++i) {
7429 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
7430 for (int i = 0; i < 10; ++i)
7431 ++a;
7432 }
7433 #pragma omp target
7434 #pragma omp teams distribute
7435 for (int i = 0; i < 10; ++i) {
7436 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
7437 ++a;
7438 }
7439 #pragma omp target
7440 #pragma omp teams distribute
7441 for (int i = 0; i < 10; ++i) {
7442 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
7443 for (int i = 0; i < 10; ++i)
7444 ++a;
7445 }
7446 #pragma omp target
7447 #pragma omp teams distribute
7448 for (int i = 0; i < 10; ++i) {
7449 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
7450 for (int i = 0; i < 10; ++i)
7451 ++a;
7452 }
7453 #pragma omp target
7454 #pragma omp teams distribute
7455 for (int i = 0; i < 10; ++i) {
7456 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
7457 for (int i = 0; i < 10; ++i)
7458 ++a;
7459 }
7460 #pragma omp target
7461 #pragma omp teams distribute
7462 for (int i = 0; i < 10; ++i) {
7463 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
7464 for (int i = 0; i < 10; ++i)
7465 ++a;
7466 }
7467
7468 // TEAMS DISTRIBUTE SIMD DIRECTIVE
7469 #pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
7470 for (int i = 0; i < 10; ++i)
7471 ;
7472 #pragma omp target
7473 #pragma omp teams distribute simd
7474 for (int i = 0; i < 10; ++i) {
7475 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7476 for (int i = 0; i < 10; ++i)
7477 ;
7478 }
7479 #pragma omp target
7480 #pragma omp teams distribute simd
7481 for (int i = 0; i < 10; ++i) {
7482 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7483 for (int i = 0; i < 10; ++i)
7484 ;
7485 }
7486 #pragma omp target
7487 #pragma omp teams distribute simd
7488 for (int i = 0; i < 10; ++i) {
7489 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7490 for (int i = 0; i < 10; ++i)
7491 ;
7492 }
7493 #pragma omp target
7494 #pragma omp teams distribute simd
7495 for (int i = 0; i < 10; ++i) {
7496 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
7497 for (int i = 0; i < 10; ++i)
7498 ;
7499 }
7500 #pragma omp target
7501 #pragma omp teams distribute simd
7502 for (int i = 0; i < 10; ++i) {
7503 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7504 for (int i = 0; i < 10; ++i)
7505 ;
7506 }
7507 #pragma omp target
7508 #pragma omp teams distribute simd
7509 for (int i = 0; i < 10; ++i) {
7510 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7511 for (int i = 0; i < 10; ++i)
7512 ;
7513 }
7514 #pragma omp target
7515 #pragma omp teams distribute simd
7516 for (int i = 0; i < 10; ++i) {
7517 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7518 {
7519 bar();
7520 }
7521 }
7522 #pragma omp target
7523 #pragma omp teams distribute simd
7524 for (int i = 0; i < 10; ++i) {
7525 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7526 {
7527 bar();
7528 }
7529 }
7530 #pragma omp target
7531 #pragma omp teams distribute simd
7532 for (int i = 0; i < 10; ++i) {
7533 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7534 {
7535 bar();
7536 }
7537 }
7538 #pragma omp target
7539 #pragma omp teams distribute simd
7540 for (int i = 0; i < 10; ++i) {
7541 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7542 {
7543 bar();
7544 }
7545 }
7546 #pragma omp target
7547 #pragma omp teams distribute simd
7548 for (int i = 0; i < 10; ++i) {
7549 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7550 {
7551 bar();
7552 }
7553 }
7554 #pragma omp target
7555 #pragma omp teams distribute simd
7556 for (int i = 0; i < 10; ++i) {
7557 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7558 {
7559 #pragma omp single
7560 {
7561 bar();
7562 }
7563 }
7564 }
7565 #pragma omp target
7566 #pragma omp teams distribute simd
7567 for (int i = 0; i < 10; ++i) {
7568 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7569 for (int i = 0; i < 10; ++i)
7570 ;
7571 }
7572 #pragma omp target
7573 #pragma omp teams distribute simd
7574 for (int i = 0; i < 10; ++i) {
7575 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7576 for (int i = 0; i < 10; ++i)
7577 ;
7578 }
7579 #pragma omp target
7580 #pragma omp teams distribute simd
7581 for (int i = 0; i < 10; ++i) {
7582 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7583 {
7584 bar();
7585 }
7586 }
7587 #pragma omp target
7588 #pragma omp teams distribute simd
7589 for (int i = 0; i < 10; ++i) {
7590 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7591 {
7592 bar();
7593 }
7594 }
7595 #pragma omp target
7596 #pragma omp teams distribute simd
7597 for (int i = 0; i < 10; ++i) {
7598 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7599 bar();
7600 }
7601 #pragma omp target
7602 #pragma omp teams distribute simd
7603 for (int i = 0; i < 10; ++i) {
7604 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7605 bar();
7606 }
7607 #pragma omp target
7608 #pragma omp teams distribute simd
7609 for (int i = 0; i < 10; ++i) {
7610 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
7611 bar();
7612 }
7613 #pragma omp target
7614 #pragma omp teams distribute simd
7615 for (int i = 0; i < 10; ++i) {
7616 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7617 bar();
7618 }
7619 #pragma omp target
7620 #pragma omp teams distribute simd
7621 for (int i = 0; i < 10; ++i) {
7622 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7623 bar();
7624 }
7625 #pragma omp target
7626 #pragma omp teams distribute simd
7627 for (int i = 0; i < 10; ++i) {
7628 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7629 bar();
7630 }
7631 #pragma omp target
7632 #pragma omp teams distribute simd
7633 for (int i = 0; i < 10; ++i) {
7634 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
7635 ++a;
7636 }
7637 #pragma omp target
7638 #pragma omp teams distribute simd
7639 for (int i = 0; i < 10; ++i) {
7640 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7641 ++a;
7642 }
7643 #pragma omp target
7644 #pragma omp teams distribute simd
7645 for (int i = 0; i < 10; ++i) {
7646 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7647 ++a;
7648 }
7649 #pragma omp target
7650 #pragma omp teams distribute simd
7651 for (int i = 0; i < 10; ++i) {
7652 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7653 for (int i = 0; i < 10; ++i)
7654 ;
7655 }
7656 #pragma omp target
7657 #pragma omp teams distribute simd
7658 for (int i = 0; i < 10; ++i) {
7659 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7660 ++a;
7661 }
7662 #pragma omp target
7663 #pragma omp teams distribute simd
7664 for (int i = 0; i < 10; ++i) {
7665 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7666 ++a;
7667 }
7668 #pragma omp target
7669 #pragma omp teams distribute simd
7670 for (int i = 0; i < 10; ++i) {
7671 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7672 ++a;
7673 }
7674 #pragma omp target
7675 #pragma omp teams distribute simd
7676 for (int i = 0; i < 10; ++i) {
7677 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7678 ++a;
7679 }
7680 #pragma omp target
7681 #pragma omp teams distribute simd
7682 for (int i = 0; i < 10; ++i) {
7683 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7684 for (int i = 0; i < 10; ++i)
7685 ++a;
7686 }
7687 #pragma omp target
7688 #pragma omp teams distribute simd
7689 for (int i = 0; i < 10; ++i) {
7690 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7691 for (int i = 0; i < 10; ++i)
7692 ++a;
7693 }
7694 #pragma omp target
7695 #pragma omp teams distribute simd
7696 for (int i = 0; i < 10; ++i) {
7697 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7698 for (int i = 0; i < 10; ++i)
7699 ++a;
7700 }
7701 #pragma omp target
7702 #pragma omp teams distribute simd
7703 for (int i = 0; i < 10; ++i) {
7704 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7705 for (int i = 0; i < 10; ++i)
7706 ++a;
7707 }
7708 #pragma omp target
7709 #pragma omp teams distribute simd
7710 for (int i = 0; i < 10; ++i) {
7711 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7712 for (int i = 0; i < 10; ++i)
7713 ++a;
7714 }
7715 #pragma omp target
7716 #pragma omp teams distribute simd
7717 for (int i = 0; i < 10; ++i) {
7718 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7719 for (int i = 0; i < 10; ++i)
7720 ++a;
7721 }
7722 #pragma omp target
7723 #pragma omp teams distribute simd
7724 for (int i = 0; i < 10; ++i) {
7725 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7726 ++a;
7727 }
7728 #pragma omp target
7729 #pragma omp teams distribute simd
7730 for (int i = 0; i < 10; ++i) {
7731 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7732 for (int i = 0; i < 10; ++i)
7733 ++a;
7734 }
7735 #pragma omp target
7736 #pragma omp teams distribute simd
7737 for (int i = 0; i < 10; ++i) {
7738 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7739 for (int i = 0; i < 10; ++i)
7740 ++a;
7741 }
7742 #pragma omp target
7743 #pragma omp teams distribute simd
7744 for (int i = 0; i < 10; ++i) {
7745 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7746 for (int i = 0; i < 10; ++i)
7747 ++a;
7748 }
7749 #pragma omp target
7750 #pragma omp teams distribute simd
7751 for (int i = 0; i < 10; ++i) {
7752 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7753 for (int i = 0; i < 10; ++i)
7754 ++a;
7755 }
7756
7757 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
7758 #pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
7759 for (int i = 0; i < 10; ++i)
7760 ;
7761 #pragma omp target
7762 #pragma omp teams distribute parallel for simd
7763 for (int i = 0; i < 10; ++i) {
7764 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7765 for (int i = 0; i < 10; ++i)
7766 ;
7767 }
7768 #pragma omp target
7769 #pragma omp teams distribute parallel for simd
7770 for (int i = 0; i < 10; ++i) {
7771 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7772 for (int i = 0; i < 10; ++i)
7773 ;
7774 }
7775 #pragma omp target
7776 #pragma omp teams distribute parallel for simd
7777 for (int i = 0; i < 10; ++i) {
7778 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7779 for (int i = 0; i < 10; ++i)
7780 ;
7781 }
7782 #pragma omp target
7783 #pragma omp teams distribute parallel for simd
7784 for (int i = 0; i < 10; ++i) {
7785 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
7786 for (int i = 0; i < 10; ++i)
7787 ;
7788 }
7789 #pragma omp target
7790 #pragma omp teams distribute parallel for simd
7791 for (int i = 0; i < 10; ++i) {
7792 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7793 for (int i = 0; i < 10; ++i)
7794 ;
7795 }
7796 #pragma omp target
7797 #pragma omp teams distribute parallel for simd
7798 for (int i = 0; i < 10; ++i) {
7799 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7800 for (int i = 0; i < 10; ++i)
7801 ;
7802 }
7803 #pragma omp target
7804 #pragma omp teams distribute parallel for simd
7805 for (int i = 0; i < 10; ++i) {
7806 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7807 {
7808 bar();
7809 }
7810 }
7811 #pragma omp target
7812 #pragma omp teams distribute parallel for simd
7813 for (int i = 0; i < 10; ++i) {
7814 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7815 {
7816 bar();
7817 }
7818 }
7819 #pragma omp target
7820 #pragma omp teams distribute parallel for simd
7821 for (int i = 0; i < 10; ++i) {
7822 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7823 {
7824 bar();
7825 }
7826 }
7827 #pragma omp target
7828 #pragma omp teams distribute parallel for simd
7829 for (int i = 0; i < 10; ++i) {
7830 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7831 {
7832 bar();
7833 }
7834 }
7835 #pragma omp target
7836 #pragma omp teams distribute parallel for simd
7837 for (int i = 0; i < 10; ++i) {
7838 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7839 {
7840 bar();
7841 }
7842 }
7843 #pragma omp target
7844 #pragma omp teams distribute parallel for simd
7845 for (int i = 0; i < 10; ++i) {
7846 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7847 {
7848 #pragma omp single
7849 {
7850 bar();
7851 }
7852 }
7853 }
7854 #pragma omp target
7855 #pragma omp teams distribute parallel for simd
7856 for (int i = 0; i < 10; ++i) {
7857 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7858 for (int i = 0; i < 10; ++i)
7859 ;
7860 }
7861 #pragma omp target
7862 #pragma omp teams distribute parallel for simd
7863 for (int i = 0; i < 10; ++i) {
7864 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7865 for (int i = 0; i < 10; ++i)
7866 ;
7867 }
7868 #pragma omp target
7869 #pragma omp teams distribute parallel for simd
7870 for (int i = 0; i < 10; ++i) {
7871 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7872 {
7873 bar();
7874 }
7875 }
7876 #pragma omp target
7877 #pragma omp teams distribute parallel for simd
7878 for (int i = 0; i < 10; ++i) {
7879 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7880 {
7881 bar();
7882 }
7883 }
7884 #pragma omp target
7885 #pragma omp teams distribute parallel for simd
7886 for (int i = 0; i < 10; ++i) {
7887 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7888 bar();
7889 }
7890 #pragma omp target
7891 #pragma omp teams distribute parallel for simd
7892 for (int i = 0; i < 10; ++i) {
7893 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7894 bar();
7895 }
7896 #pragma omp target
7897 #pragma omp teams distribute parallel for simd
7898 for (int i = 0; i < 10; ++i) {
7899 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
7900 bar();
7901 }
7902 #pragma omp target
7903 #pragma omp teams distribute parallel for simd
7904 for (int i = 0; i < 10; ++i) {
7905 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7906 bar();
7907 }
7908 #pragma omp target
7909 #pragma omp teams distribute parallel for simd
7910 for (int i = 0; i < 10; ++i) {
7911 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7912 bar();
7913 }
7914 #pragma omp target
7915 #pragma omp teams distribute parallel for simd
7916 for (int i = 0; i < 10; ++i) {
7917 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7918 bar();
7919 }
7920 #pragma omp target
7921 #pragma omp teams distribute parallel for simd
7922 for (int i = 0; i < 10; ++i) {
7923 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
7924 ++a;
7925 }
7926 #pragma omp target
7927 #pragma omp teams distribute parallel for simd
7928 for (int i = 0; i < 10; ++i) {
7929 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7930 ++a;
7931 }
7932 #pragma omp target
7933 #pragma omp teams distribute parallel for simd
7934 for (int i = 0; i < 10; ++i) {
7935 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7936 ++a;
7937 }
7938 #pragma omp target
7939 #pragma omp teams distribute parallel for simd
7940 for (int i = 0; i < 10; ++i) {
7941 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7942 for (int i = 0; i < 10; ++i)
7943 ;
7944 }
7945 #pragma omp target
7946 #pragma omp teams distribute parallel for simd
7947 for (int i = 0; i < 10; ++i) {
7948 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7949 ++a;
7950 }
7951 #pragma omp target
7952 #pragma omp teams distribute parallel for simd
7953 for (int i = 0; i < 10; ++i) {
7954 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7955 ++a;
7956 }
7957 #pragma omp target
7958 #pragma omp teams distribute parallel for simd
7959 for (int i = 0; i < 10; ++i) {
7960 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7961 ++a;
7962 }
7963 #pragma omp target
7964 #pragma omp teams distribute parallel for simd
7965 for (int i = 0; i < 10; ++i) {
7966 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7967 ++a;
7968 }
7969 #pragma omp target
7970 #pragma omp teams distribute parallel for simd
7971 for (int i = 0; i < 10; ++i) {
7972 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7973 for (int i = 0; i < 10; ++i)
7974 ++a;
7975 }
7976 #pragma omp target
7977 #pragma omp teams distribute parallel for simd
7978 for (int i = 0; i < 10; ++i) {
7979 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7980 for (int i = 0; i < 10; ++i)
7981 ++a;
7982 }
7983 #pragma omp target
7984 #pragma omp teams distribute parallel for simd
7985 for (int i = 0; i < 10; ++i) {
7986 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7987 for (int i = 0; i < 10; ++i)
7988 ++a;
7989 }
7990 #pragma omp target
7991 #pragma omp teams distribute parallel for simd
7992 for (int i = 0; i < 10; ++i) {
7993 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7994 for (int i = 0; i < 10; ++i)
7995 ++a;
7996 }
7997 #pragma omp target
7998 #pragma omp teams distribute parallel for simd
7999 for (int i = 0; i < 10; ++i) {
8000 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8001 for (int i = 0; i < 10; ++i)
8002 ++a;
8003 }
8004 #pragma omp target
8005 #pragma omp teams distribute parallel for simd
8006 for (int i = 0; i < 10; ++i) {
8007 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8008 for (int i = 0; i < 10; ++i)
8009 ++a;
8010 }
8011 #pragma omp target
8012 #pragma omp teams distribute parallel for simd
8013 for (int i = 0; i < 10; ++i) {
8014 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8015 ++a;
8016 }
8017 #pragma omp target
8018 #pragma omp teams distribute parallel for simd
8019 for (int i = 0; i < 10; ++i) {
8020 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8021 for (int i = 0; i < 10; ++i)
8022 ++a;
8023 }
8024 #pragma omp target
8025 #pragma omp teams distribute parallel for simd
8026 for (int i = 0; i < 10; ++i) {
8027 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8028 for (int i = 0; i < 10; ++i)
8029 ++a;
8030 }
8031 #pragma omp target
8032 #pragma omp teams distribute parallel for simd
8033 for (int i = 0; i < 10; ++i) {
8034 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8035 for (int i = 0; i < 10; ++i)
8036 ++a;
8037 }
8038 #pragma omp target
8039 #pragma omp teams distribute parallel for simd
8040 for (int i = 0; i < 10; ++i) {
8041 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8042 for (int i = 0; i < 10; ++i)
8043 ++a;
8044 }
8045
8046 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
8047 #pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
8048 for (int i = 0; i < 10; ++i)
8049 ;
8050 #pragma omp target
8051 #pragma omp teams distribute parallel for
8052 for (int i = 0; i < 10; ++i) {
8053 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
8054 for (int i = 0; i < 10; ++i)
8055 ;
8056 }
8057 #pragma omp target
8058 #pragma omp teams distribute parallel for
8059 for (int i = 0; i < 10; ++i) {
8060 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
8061 for (int i = 0; i < 10; ++i)
8062 ;
8063 }
8064 #pragma omp target
8065 #pragma omp teams distribute parallel for
8066 for (int i = 0; i < 10; ++i) {
8067 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
8068 for (int i = 0; i < 10; ++i)
8069 ;
8070 }
8071 #pragma omp target
8072 #pragma omp teams distribute parallel for
8073 for (int i = 0; i < 10; ++i) {
8074 #pragma omp simd // OK
8075 for (int i = 0; i < 10; ++i)
8076 ;
8077 }
8078 #pragma omp target
8079 #pragma omp teams distribute parallel for
8080 for (int i = 0; i < 10; ++i) {
8081 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
8082 for (int i = 0; i < 10; ++i)
8083 ;
8084 }
8085 #pragma omp target
8086 #pragma omp teams distribute parallel for
8087 for (int i = 0; i < 10; ++i) {
8088 #pragma omp parallel // OK
8089 for (int i = 0; i < 10; ++i)
8090 ;
8091 }
8092 #pragma omp target
8093 #pragma omp teams distribute parallel for
8094 for (int i = 0; i < 10; ++i) {
8095 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
8096 {
8097 bar();
8098 }
8099 }
8100 #pragma omp target
8101 #pragma omp teams distribute parallel for
8102 for (int i = 0; i < 10; ++i) {
8103 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}
8104 {
8105 bar();
8106 }
8107 }
8108 #pragma omp target
8109 #pragma omp teams distribute parallel for
8110 for (int i = 0; i < 10; ++i) {
8111 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
8112 {
8113 bar();
8114 }
8115 }
8116 #pragma omp target
8117 #pragma omp teams distribute parallel for
8118 for (int i = 0; i < 10; ++i) {
8119 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
8120 {
8121 bar();
8122 }
8123 }
8124 #pragma omp target
8125 #pragma omp teams distribute parallel for
8126 for (int i = 0; i < 10; ++i) {
8127 #pragma omp critical // OK
8128 {
8129 bar();
8130 }
8131 }
8132 #pragma omp target
8133 #pragma omp teams distribute parallel for
8134 for (int i = 0; i < 10; ++i) {
8135 #pragma omp parallel // OK
8136 {
8137 #pragma omp single
8138 {
8139 bar();
8140 }
8141 }
8142 }
8143 #pragma omp target
8144 #pragma omp teams distribute parallel for
8145 for (int i = 0; i < 10; ++i) {
8146 #pragma omp parallel for // OK
8147 for (int i = 0; i < 10; ++i)
8148 ;
8149 }
8150 #pragma omp target
8151 #pragma omp teams distribute parallel for
8152 for (int i = 0; i < 10; ++i) {
8153 #pragma omp parallel for simd // OK
8154 for (int i = 0; i < 10; ++i)
8155 ;
8156 }
8157 #pragma omp target
8158 #pragma omp teams distribute parallel for
8159 for (int i = 0; i < 10; ++i) {
8160 #pragma omp parallel sections // OK
8161 {
8162 bar();
8163 }
8164 }
8165 #pragma omp target
8166 #pragma omp teams distribute parallel for
8167 for (int i = 0; i < 10; ++i) {
8168 #pragma omp task // OK
8169 {
8170 bar();
8171 }
8172 }
8173 #pragma omp target
8174 #pragma omp teams distribute parallel for
8175 for (int i = 0; i < 10; ++i) {
8176 #pragma omp taskyield // OK
8177 bar();
8178 }
8179 #pragma omp target
8180 #pragma omp teams distribute parallel for
8181 for (int i = 0; i < 10; ++i) {
8182 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
8183 bar();
8184 }
8185 #pragma omp target
8186 #pragma omp teams distribute parallel for
8187 for (int i = 0; i < 10; ++i) {
8188 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
8189 bar();
8190 }
8191 #pragma omp target
8192 #pragma omp teams distribute parallel for
8193 for (int i = 0; i < 10; ++i) {
8194 #pragma omp taskwait // OK
8195 bar();
8196 }
8197 #pragma omp target
8198 #pragma omp teams distribute parallel for
8199 for (int i = 0; i < 10; ++i) {
8200 #pragma omp flush // OK
8201 bar();
8202 }
8203 #pragma omp target
8204 #pragma omp teams distribute parallel for
8205 for (int i = 0; i < 10; ++i) {
8206 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
8207 bar();
8208 }
8209 #pragma omp target
8210 #pragma omp teams distribute parallel for
8211 for (int i = 0; i < 10; ++i) {
8212 #pragma omp atomic // OK
8213 ++a;
8214 }
8215 #pragma omp target
8216 #pragma omp teams distribute parallel for
8217 for (int i = 0; i < 10; ++i) {
8218 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
8219 ++a;
8220 }
8221 #pragma omp target
8222 #pragma omp teams distribute parallel for
8223 for (int i = 0; i < 10; ++i) {
8224 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
8225 ++a;
8226 }
8227 #pragma omp target
8228 #pragma omp teams distribute parallel for
8229 for (int i = 0; i < 10; ++i) {
8230 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
8231 for (int i = 0; i < 10; ++i)
8232 ;
8233 }
8234 #pragma omp target
8235 #pragma omp teams distribute parallel for
8236 for (int i = 0; i < 10; ++i) {
8237 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
8238 ++a;
8239 }
8240 #pragma omp target
8241 #pragma omp teams distribute parallel for
8242 for (int i = 0; i < 10; ++i) {
8243 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
8244 ++a;
8245 }
8246 #pragma omp target
8247 #pragma omp teams distribute parallel for
8248 for (int i = 0; i < 10; ++i) {
8249 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
8250 ++a;
8251 }
8252 #pragma omp target
8253 #pragma omp teams distribute parallel for
8254 for (int i = 0; i < 10; ++i) {
8255 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
8256 ++a;
8257 }
8258 #pragma omp target
8259 #pragma omp teams distribute parallel for
8260 for (int i = 0; i < 10; ++i) {
8261 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
8262 for (int i = 0; i < 10; ++i)
8263 ++a;
8264 }
8265 #pragma omp target
8266 #pragma omp teams distribute parallel for
8267 for (int i = 0; i < 10; ++i) {
8268 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
8269 for (int i = 0; i < 10; ++i)
8270 ++a;
8271 }
8272 #pragma omp target
8273 #pragma omp teams distribute parallel for
8274 for (int i = 0; i < 10; ++i) {
8275 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
8276 for (int i = 0; i < 10; ++i)
8277 ++a;
8278 }
8279 #pragma omp target
8280 #pragma omp teams distribute parallel for
8281 for (int i = 0; i < 10; ++i) {
8282 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
8283 for (int i = 0; i < 10; ++i)
8284 ++a;
8285 }
8286 #pragma omp target
8287 #pragma omp teams distribute parallel for
8288 for (int i = 0; i < 10; ++i) {
8289 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
8290 for (int i = 0; i < 10; ++i)
8291 ++a;
8292 }
8293 #pragma omp target
8294 #pragma omp teams distribute parallel for
8295 for (int i = 0; i < 10; ++i) {
8296 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
8297 for (int i = 0; i < 10; ++i)
8298 ++a;
8299 }
8300 #pragma omp target
8301 #pragma omp teams distribute parallel for
8302 for (int i = 0; i < 10; ++i) {
8303 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
8304 ++a;
8305 }
8306 #pragma omp target
8307 #pragma omp teams distribute parallel for
8308 for (int i = 0; i < 10; ++i) {
8309 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
8310 for (int i = 0; i < 10; ++i)
8311 ++a;
8312 }
8313 #pragma omp target
8314 #pragma omp teams distribute parallel for
8315 for (int i = 0; i < 10; ++i) {
8316 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
8317 for (int i = 0; i < 10; ++i)
8318 ++a;
8319 }
8320 #pragma omp target
8321 #pragma omp teams distribute parallel for
8322 for (int i = 0; i < 10; ++i) {
8323 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
8324 for (int i = 0; i < 10; ++i)
8325 ++a;
8326 }
8327 #pragma omp target
8328 #pragma omp teams distribute parallel for
8329 for (int i = 0; i < 10; ++i) {
8330 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
8331 for (int i = 0; i < 10; ++i)
8332 ++a;
8333 }
8334
8335 // TARGET TEAMS DIRECTIVE
8336 #pragma omp target teams
8337 #pragma omp parallel
8338 bar();
8339 #pragma omp target teams
8340 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
8341 for (int i = 0; i < 10; ++i)
8342 ;
8343 #pragma omp target teams
8344 #pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}}
8345 for (int i = 0; i < 10; ++i)
8346 ;
8347 #pragma omp target teams
8348 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
8349 for (int i = 0; i < 10; ++i)
8350 ;
8351 #pragma omp target teams
8352 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
8353 {
8354 bar();
8355 }
8356 #pragma omp target teams
8357 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}
8358 {
8359 bar();
8360 }
8361 #pragma omp target teams
8362 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
8363 bar();
8364
8365 #pragma omp target teams
8366 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}}
8367 {
8368 bar();
8369 }
8370 #pragma omp target teams
8371 #pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}}
8372 {
8373 bar();
8374 }
8375 #pragma omp target teams
8376 #pragma omp parallel for
8377 for (int i = 0; i < 10; ++i)
8378 ;
8379 #pragma omp target teams
8380 #pragma omp parallel for simd
8381 for (int i = 0; i < 10; ++i)
8382 ;
8383 #pragma omp target teams
8384 #pragma omp parallel sections
8385 {
8386 bar();
8387 }
8388 #pragma omp target teams
8389 #pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}}
8390 {
8391 bar();
8392 }
8393 #pragma omp target teams
8394 {
8395 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}}
8396 bar();
8397 }
8398 #pragma omp target teams
8399 {
8400 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}}
8401 bar();
8402 }
8403 #pragma omp target teams
8404 {
8405 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
8406 bar();
8407 }
8408 #pragma omp target teams
8409 {
8410 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}}
8411 bar();
8412 }
8413 #pragma omp target teams
8414 {
8415 #pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}}
8416 bar();
8417 }
8418 #pragma omp target teams
8419 {
8420 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
8421 bar();
8422 }
8423 #pragma omp target teams
8424 {
8425 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}
8426 ++a;
8427 }
8428 #pragma omp target teams
8429 {
8430 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}
8431 ++a;
8432 }
8433 #pragma omp target teams
8434 {
8435 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}
8436 ++a;
8437 }
8438 #pragma omp target teams
8439 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
8440 for (int i = 0; i < 10; ++i)
8441 ;
8442 #pragma omp target teams
8443 {
8444 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}
8445 }
8446 #pragma omp target teams
8447 {
8448 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}
8449 }
8450 #pragma omp target teams
8451 {
8452 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
8453 ++a;
8454 }
8455 #pragma omp target teams
8456 {
8457 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}}
8458 for (int i = 0; i < 10; ++i)
8459 ++a;
8460 }
8461 #pragma omp target teams
8462 #pragma omp distribute
8463 for (int i = 0; i < 10; ++i)
8464 ;
8465 #pragma omp target teams
8466 {
8467 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}
8468 ++a;
8469 }
8470 #pragma omp target teams
8471 #pragma omp distribute parallel for
8472 for (int i = 0; i < 10; ++i)
8473 ;
8474 #pragma omp target teams
8475 {
8476 #pragma omp distribute parallel for
8477 for (int i = 0; i < 10; ++i)
8478 ;
8479 #pragma omp distribute parallel for
8480 for (int j = 0; j < 10; ++j)
8481 ;
8482 }
8483 #pragma omp target teams
8484 {
8485 #pragma omp distribute parallel for simd
8486 for (int i = 0; i < 10; ++i)
8487 ;
8488 #pragma omp distribute parallel for simd
8489 for (int j = 0; j < 10; ++j)
8490 ;
8491 }
8492 #pragma omp target teams
8493 {
8494 #pragma omp distribute simd
8495 for (int i = 0; i < 10; ++i)
8496 ;
8497 #pragma omp distribute simd
8498 for (int j = 0; j < 10; ++j)
8499 ;
8500 }
8501 #pragma omp target teams
8502 {
8503 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}
8504 for (int i = 0; i < 10; ++i)
8505 ;
8506 }
8507 #pragma omp target teams
8508 {
8509 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
8510 for (int i = 0; i < 10; ++i)
8511 ;
8512 }
8513 #pragma omp target teams
8514 {
8515 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
8516 for (int i = 0; i < 10; ++i)
8517 ;
8518 }
8519 #pragma omp target teams
8520 {
8521 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
8522 for (int i = 0; i < 10; ++i)
8523 ;
8524 }
8525 #pragma omp target teams
8526 {
8527 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
8528 for (int i = 0; i < 10; ++i)
8529 ;
8530 }
8531 #pragma omp target teams
8532 {
8533 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}
8534 a++;
8535 }
8536 #pragma omp target teams
8537 {
8538 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}
8539 for (int i = 0; i < 10; ++i)
8540 ;
8541 }
8542 #pragma omp target teams
8543 {
8544 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
8545 for (int i = 0; i < 10; ++i)
8546 ;
8547 }
8548 #pragma omp target teams
8549 {
8550 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}
8551 for (int i = 0; i < 10; ++i)
8552 ;
8553 }
8554 #pragma omp target teams
8555 {
8556 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}
8557 for (int i = 0; i < 10; ++i)
8558 ;
8559 }
8560
8561 // TARGET TEAMS DISTRIBUTE DIRECTIVE
8562 #pragma omp target teams distribute // OK
8563 for (int i = 0; i < 10; ++i)
8564 ;
8565 #pragma omp target teams distribute
8566 for (int i = 0; i < 10; ++i) {
8567 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
8568 for (int i = 0; i < 10; ++i)
8569 ;
8570 }
8571 #pragma omp target teams distribute
8572 for (int i = 0; i < 10; ++i) {
8573 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
8574 for (int i = 0; i < 10; ++i)
8575 ;
8576 }
8577 #pragma omp target teams distribute
8578 for (int i = 0; i < 10; ++i) {
8579 #pragma omp for // OK
8580 for (int i = 0; i < 10; ++i)
8581 ;
8582 }
8583 #pragma omp target teams distribute
8584 for (int i = 0; i < 10; ++i) {
8585 #pragma omp simd // OK
8586 for (int i = 0; i < 10; ++i)
8587 ;
8588 }
8589 #pragma omp target teams distribute
8590 for (int i = 0; i < 10; ++i) {
8591 #pragma omp for simd // OK
8592 for (int i = 0; i < 10; ++i)
8593 ;
8594 }
8595 #pragma omp target teams distribute
8596 for (int i = 0; i < 10; ++i) {
8597 #pragma omp parallel // OK
8598 for (int i = 0; i < 10; ++i)
8599 ;
8600 }
8601 #pragma omp target teams distribute
8602 for (int i = 0; i < 10; ++i) {
8603 #pragma omp sections // OK
8604 {
8605 bar();
8606 }
8607 }
8608 #pragma omp target teams distribute
8609 for (int i = 0; i < 10; ++i) {
8610 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}
8611 {
8612 bar();
8613 }
8614 }
8615 #pragma omp target teams distribute
8616 for (int i = 0; i < 10; ++i) {
8617 #pragma omp single // OK
8618 {
8619 bar();
8620 }
8621 }
8622 #pragma omp target teams distribute
8623 for (int i = 0; i < 10; ++i) {
8624 #pragma omp master // OK
8625 {
8626 bar();
8627 }
8628 }
8629 #pragma omp target teams distribute
8630 for (int i = 0; i < 10; ++i) {
8631 #pragma omp critical // OK
8632 {
8633 bar();
8634 }
8635 }
8636 #pragma omp target teams distribute
8637 for (int i = 0; i < 10; ++i) {
8638 #pragma omp parallel // OK
8639 {
8640 #pragma omp single
8641 {
8642 bar();
8643 }
8644 }
8645 }
8646 #pragma omp target teams distribute
8647 for (int i = 0; i < 10; ++i) {
8648 #pragma omp parallel for // OK
8649 for (int i = 0; i < 10; ++i)
8650 ;
8651 }
8652 #pragma omp target teams distribute
8653 for (int i = 0; i < 10; ++i) {
8654 #pragma omp parallel for simd // OK
8655 for (int i = 0; i < 10; ++i)
8656 ;
8657 }
8658 #pragma omp target teams distribute
8659 for (int i = 0; i < 10; ++i) {
8660 #pragma omp parallel sections // OK
8661 {
8662 bar();
8663 }
8664 }
8665 #pragma omp target teams distribute
8666 for (int i = 0; i < 10; ++i) {
8667 #pragma omp task // OK
8668 {
8669 bar();
8670 }
8671 }
8672 #pragma omp target teams distribute
8673 for (int i = 0; i < 10; ++i) {
8674 #pragma omp taskyield // OK
8675 bar();
8676 }
8677 #pragma omp target teams distribute
8678 for (int i = 0; i < 10; ++i) {
8679 #pragma omp barrier // OK
8680 bar();
8681 }
8682 #pragma omp target teams distribute
8683 for (int i = 0; i < 10; ++i) {
8684 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
8685 bar();
8686 }
8687 #pragma omp target teams distribute
8688 for (int i = 0; i < 10; ++i) {
8689 #pragma omp taskwait // OK
8690 bar();
8691 }
8692 #pragma omp target teams distribute
8693 for (int i = 0; i < 10; ++i) {
8694 #pragma omp flush // OK
8695 bar();
8696 }
8697 #pragma omp target teams distribute
8698 for (int i = 0; i < 10; ++i) {
8699 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
8700 bar();
8701 }
8702 #pragma omp target teams distribute
8703 for (int i = 0; i < 10; ++i) {
8704 #pragma omp atomic // OK
8705 ++a;
8706 }
8707 #pragma omp target teams distribute
8708 for (int i = 0; i < 10; ++i) {
8709 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8710 ++a;
8711 }
8712 #pragma omp target teams distribute
8713 for (int i = 0; i < 10; ++i) {
8714 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8715 ++a;
8716 }
8717 #pragma omp target teams distribute
8718 for (int i = 0; i < 10; ++i) {
8719 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8720 for (int i = 0; i < 10; ++i)
8721 ;
8722 }
8723 #pragma omp target teams distribute
8724 for (int i = 0; i < 10; ++i) {
8725 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8726 ++a;
8727 }
8728 #pragma omp target teams distribute
8729 for (int i = 0; i < 10; ++i) {
8730 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8731 ++a;
8732 }
8733 #pragma omp target teams distribute
8734 for (int i = 0; i < 10; ++i) {
8735 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
8736 ++a;
8737 }
8738 #pragma omp target teams distribute
8739 for (int i = 0; i < 10; ++i) {
8740 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8741 ++a;
8742 }
8743 #pragma omp target teams distribute
8744 for (int i = 0; i < 10; ++i) {
8745 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
8746 for (int i = 0; i < 10; ++i)
8747 ++a;
8748 }
8749 #pragma omp target teams distribute
8750 for (int i = 0; i < 10; ++i) {
8751 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8752 for (int i = 0; i < 10; ++i)
8753 ++a;
8754 }
8755 #pragma omp target teams distribute
8756 for (int i = 0; i < 10; ++i) {
8757 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
8758 for (int i = 0; i < 10; ++i)
8759 ++a;
8760 }
8761 #pragma omp target teams distribute
8762 for (int i = 0; i < 10; ++i) {
8763 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
8764 for (int i = 0; i < 10; ++i)
8765 ++a;
8766 }
8767 #pragma omp target teams distribute
8768 for (int i = 0; i < 10; ++i) {
8769 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
8770 for (int i = 0; i < 10; ++i)
8771 ++a;
8772 }
8773 #pragma omp target teams distribute
8774 for (int i = 0; i < 10; ++i) {
8775 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
8776 for (int i = 0; i < 10; ++i)
8777 ;
8778 }
8779 #pragma omp target teams distribute
8780 for (int i = 0; i < 10; ++i) {
8781 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8782 a++;
8783 }
8784 #pragma omp target teams distribute
8785 for (int i = 0; i < 10; ++i) {
8786 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8787 for (int i = 0; i < 10; ++i)
8788 ;
8789 }
8790 #pragma omp target teams distribute
8791 for (int i = 0; i < 10; ++i) {
8792 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8793 for (int i = 0; i < 10; ++i)
8794 ;
8795 }
8796 #pragma omp target teams distribute
8797 for (int i = 0; i < 10; ++i) {
8798 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8799 for (int i = 0; i < 10; ++i)
8800 ;
8801 }
8802 #pragma omp target teams distribute
8803 for (int i = 0; i < 10; ++i) {
8804 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8805 for (int i = 0; i < 10; ++i)
8806 ;
8807 }
8808
8809 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
8810 #pragma omp target teams distribute parallel for // OK
8811 for (int i = 0; i < 10; ++i)
8812 ;
8813 #pragma omp target teams distribute parallel for
8814 for (int i = 0; i < 10; ++i) {
8815 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
8816 for (int i = 0; i < 10; ++i)
8817 ;
8818 }
8819 #pragma omp target teams distribute parallel for
8820 for (int i = 0; i < 10; ++i) {
8821 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
8822 for (int i = 0; i < 10; ++i)
8823 ;
8824 }
8825 #pragma omp target teams distribute parallel for
8826 for (int i = 0; i < 10; ++i) {
8827 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
8828 for (int i = 0; i < 10; ++i)
8829 ;
8830 }
8831 #pragma omp target teams distribute parallel for
8832 for (int i = 0; i < 10; ++i) {
8833 #pragma omp simd // OK
8834 for (int i = 0; i < 10; ++i)
8835 ;
8836 }
8837 #pragma omp target teams distribute parallel for
8838 for (int i = 0; i < 10; ++i) {
8839 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
8840 for (int i = 0; i < 10; ++i)
8841 ;
8842 }
8843 #pragma omp target teams distribute parallel for
8844 for (int i = 0; i < 10; ++i) {
8845 #pragma omp parallel // OK
8846 for (int i = 0; i < 10; ++i)
8847 ;
8848 }
8849 #pragma omp target teams distribute parallel for
8850 for (int i = 0; i < 10; ++i) {
8851 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
8852 {
8853 bar();
8854 }
8855 }
8856 #pragma omp target teams distribute parallel for
8857 for (int i = 0; i < 10; ++i) {
8858 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}}
8859 {
8860 bar();
8861 }
8862 }
8863 #pragma omp target teams distribute parallel for
8864 for (int i = 0; i < 10; ++i) {
8865 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
8866 {
8867 bar();
8868 }
8869 }
8870 #pragma omp target teams distribute parallel for
8871 for (int i = 0; i < 10; ++i) {
8872 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8873 {
8874 bar();
8875 }
8876 }
8877 #pragma omp target teams distribute parallel for
8878 for (int i = 0; i < 10; ++i) {
8879 #pragma omp critical // OK
8880 {
8881 bar();
8882 }
8883 }
8884 #pragma omp target teams distribute parallel for
8885 for (int i = 0; i < 10; ++i) {
8886 #pragma omp parallel // OK
8887 {
8888 #pragma omp single
8889 {
8890 bar();
8891 }
8892 }
8893 }
8894 #pragma omp target teams distribute parallel for
8895 for (int i = 0; i < 10; ++i) {
8896 #pragma omp parallel for // OK
8897 for (int i = 0; i < 10; ++i)
8898 ;
8899 }
8900 #pragma omp target teams distribute parallel for
8901 for (int i = 0; i < 10; ++i) {
8902 #pragma omp parallel for simd // OK
8903 for (int i = 0; i < 10; ++i)
8904 ;
8905 }
8906 #pragma omp target teams distribute parallel for
8907 for (int i = 0; i < 10; ++i) {
8908 #pragma omp parallel sections // OK
8909 {
8910 bar();
8911 }
8912 }
8913 #pragma omp target teams distribute parallel for
8914 for (int i = 0; i < 10; ++i) {
8915 #pragma omp task // OK
8916 {
8917 bar();
8918 }
8919 }
8920 #pragma omp target teams distribute parallel for
8921 for (int i = 0; i < 10; ++i) {
8922 #pragma omp taskyield // OK
8923 bar();
8924 }
8925 #pragma omp target teams distribute parallel for
8926 for (int i = 0; i < 10; ++i) {
8927 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8928 bar();
8929 }
8930 #pragma omp target teams distribute parallel for
8931 for (int i = 0; i < 10; ++i) {
8932 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8933 bar();
8934 }
8935 #pragma omp target teams distribute parallel for
8936 for (int i = 0; i < 10; ++i) {
8937 #pragma omp taskwait // OK
8938 bar();
8939 }
8940 #pragma omp target teams distribute parallel for
8941 for (int i = 0; i < 10; ++i) {
8942 #pragma omp flush // OK
8943 bar();
8944 }
8945 #pragma omp target teams distribute parallel for
8946 for (int i = 0; i < 10; ++i) {
8947 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
8948 bar();
8949 }
8950 #pragma omp target teams distribute parallel for
8951 for (int i = 0; i < 10; ++i) {
8952 #pragma omp atomic // OK
8953 ++a;
8954 }
8955 #pragma omp target teams distribute parallel for
8956 for (int i = 0; i < 10; ++i) {
8957 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8958 ++a;
8959 }
8960 #pragma omp target teams distribute parallel for
8961 for (int i = 0; i < 10; ++i) {
8962 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8963 ++a;
8964 }
8965 #pragma omp target teams distribute parallel for
8966 for (int i = 0; i < 10; ++i) {
8967 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8968 for (int i = 0; i < 10; ++i)
8969 ;
8970 }
8971 #pragma omp target teams distribute parallel for
8972 for (int i = 0; i < 10; ++i) {
8973 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8974 ++a;
8975 }
8976 #pragma omp target teams distribute parallel for
8977 for (int i = 0; i < 10; ++i) {
8978 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8979 ++a;
8980 }
8981 #pragma omp target teams distribute parallel for
8982 for (int i = 0; i < 10; ++i) {
8983 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
8984 ++a;
8985 }
8986 #pragma omp target teams distribute parallel for
8987 for (int i = 0; i < 10; ++i) {
8988 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8989 ++a;
8990 }
8991 #pragma omp target teams distribute parallel for
8992 for (int i = 0; i < 10; ++i) {
8993 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
8994 for (int i = 0; i < 10; ++i)
8995 ++a;
8996 }
8997 #pragma omp target teams distribute parallel for
8998 for (int i = 0; i < 10; ++i) {
8999 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
9000 for (int i = 0; i < 10; ++i)
9001 ++a;
9002 }
9003 #pragma omp target teams distribute parallel for
9004 for (int i = 0; i < 10; ++i) {
9005 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
9006 for (int i = 0; i < 10; ++i)
9007 ++a;
9008 }
9009 #pragma omp target teams distribute parallel for
9010 for (int i = 0; i < 10; ++i) {
9011 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
9012 for (int i = 0; i < 10; ++i)
9013 ++a;
9014 }
9015 #pragma omp target teams distribute parallel for
9016 for (int i = 0; i < 10; ++i) {
9017 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
9018 for (int i = 0; i < 10; ++i)
9019 ++a;
9020 }
9021 #pragma omp target teams distribute parallel for
9022 for (int i = 0; i < 10; ++i) {
9023 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
9024 for (int i = 0; i < 10; ++i)
9025 ;
9026 }
9027 #pragma omp target teams distribute parallel for
9028 for (int i = 0; i < 10; ++i) {
9029 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
9030 a++;
9031 }
9032 #pragma omp target teams distribute parallel for
9033 for (int i = 0; i < 10; ++i) {
9034 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
9035 for (int i = 0; i < 10; ++i)
9036 ;
9037 }
9038 #pragma omp target teams distribute parallel for
9039 for (int i = 0; i < 10; ++i) {
9040 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
9041 for (int i = 0; i < 10; ++i)
9042 ;
9043 }
9044 #pragma omp target teams distribute parallel for
9045 for (int i = 0; i < 10; ++i) {
9046 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
9047 for (int i = 0; i < 10; ++i)
9048 ;
9049 }
9050 #pragma omp target teams distribute parallel for
9051 for (int i = 0; i < 10; ++i) {
9052 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
9053 for (int i = 0; i < 10; ++i)
9054 ;
9055 }
9056
9057 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
9058 #pragma omp target teams distribute parallel for simd // OK
9059 for (int i = 0; i < 10; ++i)
9060 ;
9061 #pragma omp target teams distribute parallel for simd
9062 for (int i = 0; i < 10; ++i) {
9063 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9064 for (int i = 0; i < 10; ++i)
9065 ;
9066 }
9067 #pragma omp target teams distribute parallel for simd
9068 for (int i = 0; i < 10; ++i) {
9069 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9070 for (int i = 0; i < 10; ++i)
9071 ;
9072 }
9073 #pragma omp target teams distribute parallel for simd
9074 for (int i = 0; i < 10; ++i) {
9075 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9076 for (int i = 0; i < 10; ++i)
9077 ;
9078 }
9079 #pragma omp target teams distribute parallel for simd
9080 for (int i = 0; i < 10; ++i) {
9081 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9082 for (int i = 0; i < 10; ++i)
9083 ;
9084 }
9085 #pragma omp target teams distribute parallel for simd
9086 for (int i = 0; i < 10; ++i) {
9087 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9088 for (int i = 0; i < 10; ++i)
9089 ;
9090 }
9091 #pragma omp target teams distribute parallel for simd
9092 for (int i = 0; i < 10; ++i) {
9093 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9094 for (int i = 0; i < 10; ++i)
9095 ;
9096 }
9097 #pragma omp target teams distribute parallel for simd
9098 for (int i = 0; i < 10; ++i) {
9099 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9100 {
9101 bar();
9102 }
9103 }
9104 #pragma omp target teams distribute parallel for simd
9105 for (int i = 0; i < 10; ++i) {
9106 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9107 {
9108 bar();
9109 }
9110 }
9111 #pragma omp target teams distribute parallel for simd
9112 for (int i = 0; i < 10; ++i) {
9113 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9114 {
9115 bar();
9116 }
9117 }
9118 #pragma omp target teams distribute parallel for simd
9119 for (int i = 0; i < 10; ++i) {
9120 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9121 {
9122 bar();
9123 }
9124 }
9125 #pragma omp target teams distribute parallel for simd
9126 for (int i = 0; i < 10; ++i) {
9127 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9128 {
9129 bar();
9130 }
9131 }
9132 #pragma omp target teams distribute parallel for simd
9133 for (int i = 0; i < 10; ++i) {
9134 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9135 {
9136 #pragma omp single
9137 {
9138 bar();
9139 }
9140 }
9141 }
9142 #pragma omp target teams distribute parallel for simd
9143 for (int i = 0; i < 10; ++i) {
9144 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9145 for (int i = 0; i < 10; ++i)
9146 ;
9147 }
9148 #pragma omp target teams distribute parallel for simd
9149 for (int i = 0; i < 10; ++i) {
9150 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9151 for (int i = 0; i < 10; ++i)
9152 ;
9153 }
9154 #pragma omp target teams distribute parallel for simd
9155 for (int i = 0; i < 10; ++i) {
9156 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9157 {
9158 bar();
9159 }
9160 }
9161 #pragma omp target teams distribute parallel for simd
9162 for (int i = 0; i < 10; ++i) {
9163 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9164 {
9165 bar();
9166 }
9167 }
9168 #pragma omp target teams distribute parallel for simd
9169 for (int i = 0; i < 10; ++i) {
9170 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9171 bar();
9172 }
9173 #pragma omp target teams distribute parallel for simd
9174 for (int i = 0; i < 10; ++i) {
9175 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9176 bar();
9177 }
9178 #pragma omp target teams distribute parallel for simd
9179 for (int i = 0; i < 10; ++i) {
9180 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
9181 bar();
9182 }
9183 #pragma omp target teams distribute parallel for simd
9184 for (int i = 0; i < 10; ++i) {
9185 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9186 bar();
9187 }
9188 #pragma omp target teams distribute parallel for simd
9189 for (int i = 0; i < 10; ++i) {
9190 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9191 bar();
9192 }
9193 #pragma omp target teams distribute parallel for simd
9194 for (int i = 0; i < 10; ++i) {
9195 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9196 bar();
9197 }
9198 #pragma omp target teams distribute parallel for simd
9199 for (int i = 0; i < 10; ++i) {
9200 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
9201 ++a;
9202 }
9203 #pragma omp target teams distribute parallel for simd
9204 for (int i = 0; i < 10; ++i) {
9205 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9206 ++a;
9207 }
9208 #pragma omp target teams distribute parallel for simd
9209 for (int i = 0; i < 10; ++i) {
9210 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9211 ++a;
9212 }
9213 #pragma omp target teams distribute parallel for simd
9214 for (int i = 0; i < 10; ++i) {
9215 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9216 for (int i = 0; i < 10; ++i)
9217 ;
9218 }
9219 #pragma omp target teams distribute parallel for simd
9220 for (int i = 0; i < 10; ++i) {
9221 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9222 ++a;
9223 }
9224 #pragma omp target teams distribute parallel for simd
9225 for (int i = 0; i < 10; ++i) {
9226 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9227 ++a;
9228 }
9229 #pragma omp target teams distribute parallel for simd
9230 for (int i = 0; i < 10; ++i) {
9231 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9232 ++a;
9233 }
9234 #pragma omp target teams distribute parallel for simd
9235 for (int i = 0; i < 10; ++i) {
9236 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9237 ++a;
9238 }
9239 #pragma omp target teams distribute parallel for simd
9240 for (int i = 0; i < 10; ++i) {
9241 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9242 for (int i = 0; i < 10; ++i)
9243 ++a;
9244 }
9245 #pragma omp target teams distribute parallel for simd
9246 for (int i = 0; i < 10; ++i) {
9247 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9248 for (int i = 0; i < 10; ++i)
9249 ++a;
9250 }
9251 #pragma omp target teams distribute parallel for simd
9252 for (int i = 0; i < 10; ++i) {
9253 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9254 for (int i = 0; i < 10; ++i)
9255 ++a;
9256 }
9257 #pragma omp target teams distribute parallel for simd
9258 for (int i = 0; i < 10; ++i) {
9259 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9260 for (int i = 0; i < 10; ++i)
9261 ++a;
9262 }
9263 #pragma omp target teams distribute parallel for simd
9264 for (int i = 0; i < 10; ++i) {
9265 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9266 for (int i = 0; i < 10; ++i)
9267 ++a;
9268 }
9269 #pragma omp target teams distribute parallel for simd
9270 for (int i = 0; i < 10; ++i) {
9271 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9272 for (int i = 0; i < 10; ++i)
9273 ;
9274 }
9275 #pragma omp target teams distribute parallel for simd
9276 for (int i = 0; i < 10; ++i) {
9277 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9278 a++;
9279 }
9280 #pragma omp target teams distribute parallel for simd
9281 for (int i = 0; i < 10; ++i) {
9282 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9283 for (int i = 0; i < 10; ++i)
9284 ;
9285 }
9286 #pragma omp target teams distribute parallel for simd
9287 for (int i = 0; i < 10; ++i) {
9288 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9289 for (int i = 0; i < 10; ++i)
9290 ;
9291 }
9292 #pragma omp target teams distribute parallel for simd
9293 for (int i = 0; i < 10; ++i) {
9294 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9295 for (int i = 0; i < 10; ++i)
9296 ;
9297 }
9298 #pragma omp target teams distribute parallel for simd
9299 for (int i = 0; i < 10; ++i) {
9300 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9301 for (int i = 0; i < 10; ++i)
9302 ;
9303 }
9304
9305 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE
9306 #pragma omp target teams distribute simd // OK
9307 for (int i = 0; i < 10; ++i)
9308 ;
9309 #pragma omp target teams distribute simd
9310 for (int i = 0; i < 10; ++i) {
9311 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9312 for (int i = 0; i < 10; ++i)
9313 ;
9314 }
9315 #pragma omp target teams distribute simd
9316 for (int i = 0; i < 10; ++i) {
9317 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9318 for (int i = 0; i < 10; ++i)
9319 ;
9320 }
9321 #pragma omp target teams distribute simd
9322 for (int i = 0; i < 10; ++i) {
9323 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9324 for (int i = 0; i < 10; ++i)
9325 ;
9326 }
9327 #pragma omp target teams distribute simd
9328 for (int i = 0; i < 10; ++i) {
9329 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9330 for (int i = 0; i < 10; ++i)
9331 ;
9332 }
9333 #pragma omp target teams distribute simd
9334 for (int i = 0; i < 10; ++i) {
9335 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9336 for (int i = 0; i < 10; ++i)
9337 ;
9338 }
9339 #pragma omp target teams distribute simd
9340 for (int i = 0; i < 10; ++i) {
9341 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9342 for (int i = 0; i < 10; ++i)
9343 ;
9344 }
9345 #pragma omp target teams distribute simd
9346 for (int i = 0; i < 10; ++i) {
9347 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9348 {
9349 bar();
9350 }
9351 }
9352 #pragma omp target teams distribute simd
9353 for (int i = 0; i < 10; ++i) {
9354 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9355 {
9356 bar();
9357 }
9358 }
9359 #pragma omp target teams distribute simd
9360 for (int i = 0; i < 10; ++i) {
9361 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9362 {
9363 bar();
9364 }
9365 }
9366 #pragma omp target teams distribute simd
9367 for (int i = 0; i < 10; ++i) {
9368 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9369 {
9370 bar();
9371 }
9372 }
9373 #pragma omp target teams distribute simd
9374 for (int i = 0; i < 10; ++i) {
9375 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9376 {
9377 bar();
9378 }
9379 }
9380 #pragma omp target teams distribute simd
9381 for (int i = 0; i < 10; ++i) {
9382 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9383 {
9384 #pragma omp single
9385 {
9386 bar();
9387 }
9388 }
9389 }
9390 #pragma omp target teams distribute simd
9391 for (int i = 0; i < 10; ++i) {
9392 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9393 for (int i = 0; i < 10; ++i)
9394 ;
9395 }
9396 #pragma omp target teams distribute simd
9397 for (int i = 0; i < 10; ++i) {
9398 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9399 for (int i = 0; i < 10; ++i)
9400 ;
9401 }
9402 #pragma omp target teams distribute simd
9403 for (int i = 0; i < 10; ++i) {
9404 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9405 {
9406 bar();
9407 }
9408 }
9409 #pragma omp target teams distribute simd
9410 for (int i = 0; i < 10; ++i) {
9411 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9412 {
9413 bar();
9414 }
9415 }
9416 #pragma omp target teams distribute simd
9417 for (int i = 0; i < 10; ++i) {
9418 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9419 bar();
9420 }
9421 #pragma omp target teams distribute simd
9422 for (int i = 0; i < 10; ++i) {
9423 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9424 bar();
9425 }
9426 #pragma omp target teams distribute simd
9427 for (int i = 0; i < 10; ++i) {
9428 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
9429 bar();
9430 }
9431 #pragma omp target teams distribute simd
9432 for (int i = 0; i < 10; ++i) {
9433 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9434 bar();
9435 }
9436 #pragma omp target teams distribute simd
9437 for (int i = 0; i < 10; ++i) {
9438 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9439 bar();
9440 }
9441 #pragma omp target teams distribute simd
9442 for (int i = 0; i < 10; ++i) {
9443 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9444 bar();
9445 }
9446 #pragma omp target teams distribute simd
9447 for (int i = 0; i < 10; ++i) {
9448 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
9449 ++a;
9450 }
9451 #pragma omp target teams distribute simd
9452 for (int i = 0; i < 10; ++i) {
9453 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9454 ++a;
9455 }
9456 #pragma omp target teams distribute simd
9457 for (int i = 0; i < 10; ++i) {
9458 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9459 ++a;
9460 }
9461 #pragma omp target teams distribute simd
9462 for (int i = 0; i < 10; ++i) {
9463 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9464 for (int i = 0; i < 10; ++i)
9465 ;
9466 }
9467 #pragma omp target teams distribute simd
9468 for (int i = 0; i < 10; ++i) {
9469 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9470 ++a;
9471 }
9472 #pragma omp target teams distribute simd
9473 for (int i = 0; i < 10; ++i) {
9474 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9475 ++a;
9476 }
9477 #pragma omp target teams distribute simd
9478 for (int i = 0; i < 10; ++i) {
9479 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9480 ++a;
9481 }
9482 #pragma omp target teams distribute simd
9483 for (int i = 0; i < 10; ++i) {
9484 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9485 ++a;
9486 }
9487 #pragma omp target teams distribute simd
9488 for (int i = 0; i < 10; ++i) {
9489 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9490 for (int i = 0; i < 10; ++i)
9491 ++a;
9492 }
9493 #pragma omp target teams distribute simd
9494 for (int i = 0; i < 10; ++i) {
9495 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9496 for (int i = 0; i < 10; ++i)
9497 ++a;
9498 }
9499 #pragma omp target teams distribute simd
9500 for (int i = 0; i < 10; ++i) {
9501 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9502 for (int i = 0; i < 10; ++i)
9503 ++a;
9504 }
9505 #pragma omp target teams distribute simd
9506 for (int i = 0; i < 10; ++i) {
9507 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9508 for (int i = 0; i < 10; ++i)
9509 ++a;
9510 }
9511 #pragma omp target teams distribute simd
9512 for (int i = 0; i < 10; ++i) {
9513 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9514 for (int i = 0; i < 10; ++i)
9515 ++a;
9516 }
9517 #pragma omp target teams distribute simd
9518 for (int i = 0; i < 10; ++i) {
9519 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9520 for (int i = 0; i < 10; ++i)
9521 ;
9522 }
9523 #pragma omp target teams distribute simd
9524 for (int i = 0; i < 10; ++i) {
9525 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9526 a++;
9527 }
9528 #pragma omp target teams distribute simd
9529 for (int i = 0; i < 10; ++i) {
9530 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9531 for (int i = 0; i < 10; ++i)
9532 ;
9533 }
9534 #pragma omp target teams distribute simd
9535 for (int i = 0; i < 10; ++i) {
9536 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9537 for (int i = 0; i < 10; ++i)
9538 ;
9539 }
9540 #pragma omp target teams distribute simd
9541 for (int i = 0; i < 10; ++i) {
9542 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9543 for (int i = 0; i < 10; ++i)
9544 ;
9545 }
9546 #pragma omp target teams distribute simd
9547 for (int i = 0; i < 10; ++i) {
9548 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9549 for (int i = 0; i < 10; ++i)
9550 ;
9551 }
9552
9553 }
9554
foo()9555 void foo() {
9556 int a = 0;
9557 // PARALLEL DIRECTIVE
9558 #pragma omp parallel
9559 #pragma omp for
9560 for (int i = 0; i < 10; ++i)
9561 ;
9562 #pragma omp parallel
9563 #pragma omp simd
9564 for (int i = 0; i < 10; ++i)
9565 ;
9566 #pragma omp parallel
9567 #pragma omp for simd
9568 for (int i = 0; i < 10; ++i)
9569 ;
9570 #pragma omp parallel
9571 #pragma omp sections
9572 {
9573 bar();
9574 }
9575 #pragma omp parallel
9576 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}
9577 {
9578 bar();
9579 }
9580 #pragma omp parallel
9581 #pragma omp sections
9582 {
9583 bar();
9584 }
9585 #pragma omp parallel
9586 #pragma omp single
9587 bar();
9588 #pragma omp parallel
9589 #pragma omp master
9590 bar();
9591 #pragma omp parallel master
9592 bar();
9593 #pragma omp parallel
9594 #pragma omp critical
9595 bar();
9596 #pragma omp parallel
9597 #pragma omp parallel for
9598 for (int i = 0; i < 10; ++i)
9599 ;
9600 #pragma omp parallel
9601 #pragma omp parallel for simd
9602 for (int i = 0; i < 10; ++i)
9603 ;
9604 #pragma omp parallel
9605 #pragma omp parallel sections
9606 {
9607 bar();
9608 }
9609 #pragma omp parallel
9610 #pragma omp task
9611 {
9612 bar();
9613 }
9614 #pragma omp parallel
9615 {
9616 #pragma omp taskyield
9617 bar();
9618 }
9619 #pragma omp parallel
9620 {
9621 #pragma omp barrier
9622 bar();
9623 }
9624 #pragma omp parallel
9625 {
9626 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
9627 bar();
9628 }
9629 #pragma omp parallel
9630 {
9631 #pragma omp taskwait
9632 bar();
9633 }
9634 #pragma omp parallel
9635 {
9636 #pragma omp flush
9637 bar();
9638 }
9639 #pragma omp parallel
9640 {
9641 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
9642 bar();
9643 }
9644 #pragma omp parallel
9645 {
9646 #pragma omp atomic
9647 ++a;
9648 }
9649 #pragma omp parallel
9650 {
9651 #pragma omp target
9652 ++a;
9653 }
9654 #pragma omp parallel
9655 {
9656 #pragma omp target parallel
9657 ++a;
9658 }
9659 #pragma omp parallel
9660 #pragma omp target parallel for
9661 for (int i = 0; i < 10; ++i)
9662 ;
9663 #pragma omp parallel
9664 {
9665 #pragma omp target enter data map(to: a)
9666 ++a;
9667 }
9668 #pragma omp parallel
9669 {
9670 #pragma omp target exit data map(from: a)
9671 ++a;
9672 }
9673 #pragma omp parallel
9674 {
9675 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
9676 ++a;
9677 }
9678 #pragma omp parallel
9679 {
9680 #pragma omp taskloop
9681 for (int i = 0; i < 10; ++i)
9682 ++a;
9683 }
9684 #pragma omp parallel
9685 {
9686 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
9687 for (int i = 0; i < 10; ++i)
9688 ;
9689 }
9690 #pragma omp parallel
9691 {
9692 #pragma omp target update to(a)
9693 a++;
9694 }
9695 #pragma omp parallel
9696 {
9697 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
9698 for (int i = 0; i < 10; ++i)
9699 ;
9700 }
9701 #pragma omp parallel
9702 {
9703 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
9704 for (int i = 0; i < 10; ++i)
9705 ;
9706 }
9707 #pragma omp parallel
9708 {
9709 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
9710 for (int i = 0; i < 10; ++i)
9711 ;
9712 }
9713 #pragma omp parallel
9714 {
9715 #pragma omp target simd // OK
9716 for (int i = 0; i < 10; ++i)
9717 ;
9718 }
9719 #pragma omp parallel
9720 {
9721 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
9722 for (int i = 0; i < 10; ++i)
9723 ;
9724 }
9725 #pragma omp parallel
9726 {
9727 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
9728 for (int i = 0; i < 10; ++i)
9729 ;
9730 }
9731 #pragma omp parallel
9732 {
9733 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
9734 for (int i = 0; i < 10; ++i)
9735 ;
9736 }
9737 #pragma omp parallel
9738 {
9739 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
9740 for (int i = 0; i < 10; ++i)
9741 ;
9742 }
9743 #pragma omp parallel
9744 {
9745 #pragma omp target teams // OK
9746 a++;
9747 }
9748 #pragma omp parallel
9749 {
9750 #pragma omp target teams distribute // OK
9751 for (int i = 0; i < 10; ++i)
9752 ;
9753 }
9754 #pragma omp parallel
9755 {
9756 #pragma omp target teams distribute parallel for // OK
9757 for (int i = 0; i < 10; ++i)
9758 ;
9759 }
9760 #pragma omp parallel
9761 {
9762 #pragma omp target teams distribute parallel for simd // OK
9763 for (int i = 0; i < 10; ++i)
9764 ;
9765 }
9766 #pragma omp parallel
9767 {
9768 #pragma omp target teams distribute simd // OK
9769 for (int i = 0; i < 10; ++i)
9770 ;
9771 }
9772
9773 // SIMD DIRECTIVE
9774 #pragma omp simd
9775 for (int i = 0; i < 10; ++i) {
9776 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9777 for (int i = 0; i < 10; ++i)
9778 ;
9779 }
9780 #pragma omp simd
9781 for (int i = 0; i < 10; ++i) {
9782 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9783 for (int i = 0; i < 10; ++i)
9784 ;
9785 }
9786 #pragma omp simd
9787 for (int i = 0; i < 10; ++i) {
9788 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9789 for (int i = 0; i < 10; ++i)
9790 ;
9791 }
9792 #pragma omp simd
9793 for (int i = 0; i < 10; ++i) {
9794 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9795 for (int i = 0; i < 10; ++i)
9796 ;
9797 }
9798 #pragma omp simd
9799 for (int i = 0; i < 10; ++i) {
9800 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9801 {
9802 bar();
9803 }
9804 }
9805 #pragma omp simd
9806 for (int i = 0; i < 10; ++i) {
9807 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9808 {
9809 bar();
9810 }
9811 }
9812 #pragma omp simd
9813 for (int i = 0; i < 10; ++i) {
9814 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9815 bar();
9816 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9817 bar();
9818 }
9819 #pragma omp simd
9820 for (int i = 0; i < 10; ++i) {
9821 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9822 bar();
9823 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9824 bar();
9825 }
9826 #pragma omp simd
9827 for (int i = 0; i < 10; ++i) {
9828 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9829 for (int i = 0; i < 10; ++i)
9830 ;
9831 }
9832 #pragma omp simd
9833 for (int i = 0; i < 10; ++i) {
9834 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9835 for (int i = 0; i < 10; ++i)
9836 ;
9837 }
9838 #pragma omp simd
9839 for (int i = 0; i < 10; ++i) {
9840 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9841 {
9842 bar();
9843 }
9844 }
9845 #pragma omp simd
9846 for (int i = 0; i < 10; ++i) {
9847 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9848 {
9849 bar();
9850 }
9851 }
9852 #pragma omp simd
9853 for (int i = 0; i < 10; ++i) {
9854 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9855 bar();
9856 }
9857 #pragma omp simd
9858 for (int i = 0; i < 10; ++i) {
9859 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9860 bar();
9861 }
9862 #pragma omp simd
9863 for (int i = 0; i < 10; ++i) {
9864 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
9865 bar();
9866 }
9867 #pragma omp simd
9868 for (int i = 0; i < 10; ++i) {
9869 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9870 bar();
9871 }
9872 #pragma omp simd
9873 for (int i = 0; i < 10; ++i) {
9874 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9875 bar();
9876 }
9877 #pragma omp simd
9878 for (int i = 0; i < 10; ++i) {
9879 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9880 bar();
9881 }
9882 #pragma omp simd
9883 for (int i = 0; i < 10; ++i) {
9884 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
9885 ++a;
9886 }
9887 #pragma omp simd
9888 for (int i = 0; i < 10; ++i) {
9889 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9890 ++a;
9891 }
9892 #pragma omp simd
9893 for (int i = 0; i < 10; ++i) {
9894 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9895 ++a;
9896 }
9897 #pragma omp simd
9898 for (int i = 0; i < 10; ++i) {
9899 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9900 for (int i = 0; i < 10; ++i)
9901 ;
9902 }
9903 #pragma omp simd
9904 for (int i = 0; i < 10; ++i) {
9905 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9906 ++a;
9907 }
9908 #pragma omp simd
9909 for (int i = 0; i < 10; ++i) {
9910 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9911 ++a;
9912 }
9913 #pragma omp simd
9914 for (int i = 0; i < 10; ++i) {
9915 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9916 ++a;
9917 }
9918 #pragma omp simd
9919 for (int i = 0; i < 10; ++i) {
9920 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9921 for (int i = 0; i < 10; ++i)
9922 ++a;
9923 }
9924 #pragma omp simd
9925 for (int i = 0; i < 10; ++i) {
9926 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9927 for (int j = 0; j < 10; ++j)
9928 ;
9929 }
9930 #pragma omp simd
9931 for (int i = 0; i < 10; ++i) {
9932 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9933 a++;
9934 }
9935 #pragma omp simd
9936 for (int i = 0; i < 10; ++i) {
9937 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9938 for (int j = 0; j < 10; ++j)
9939 ;
9940 }
9941 #pragma omp simd
9942 for (int i = 0; i < 10; ++i) {
9943 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9944 for (int j = 0; j < 10; ++j)
9945 ;
9946 }
9947 #pragma omp simd
9948 for (int i = 0; i < 10; ++i) {
9949 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9950 for (int j = 0; j < 10; ++j)
9951 ;
9952 }
9953 #pragma omp simd
9954 for (int i = 0; i < 10; ++i) {
9955 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9956 for (int j = 0; j < 10; ++j)
9957 ;
9958 }
9959 #pragma omp simd
9960 for (int i = 0; i < 10; ++i) {
9961 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9962 for (int j = 0; j < 10; ++j)
9963 ;
9964 }
9965 #pragma omp simd
9966 for (int i = 0; i < 10; ++i) {
9967 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9968 for (int j = 0; j < 10; ++j)
9969 ;
9970 }
9971 #pragma omp simd
9972 for (int i = 0; i < 10; ++i) {
9973 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9974 for (int j = 0; j < 10; ++j)
9975 ;
9976 }
9977 #pragma omp simd
9978 for (int i = 0; i < 10; ++i) {
9979 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9980 for (int j = 0; j < 10; ++j)
9981 ;
9982 }
9983 #pragma omp simd
9984 for (int i = 0; i < 10; ++i) {
9985 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9986 a++;
9987 }
9988 #pragma omp simd
9989 for (int i = 0; i < 10; ++i) {
9990 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9991 for (int j = 0; j < 10; ++j)
9992 ;
9993 }
9994 #pragma omp simd
9995 for (int i = 0; i < 10; ++i) {
9996 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9997 for (int j = 0; j < 10; ++j)
9998 ;
9999 }
10000 #pragma omp simd
10001 for (int i = 0; i < 10; ++i) {
10002 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10003 for (int j = 0; j < 10; ++j)
10004 ;
10005 }
10006 #pragma omp simd
10007 for (int i = 0; i < 10; ++i) {
10008 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10009 for (int j = 0; j < 10; ++j)
10010 ;
10011 }
10012
10013 // FOR DIRECTIVE
10014 #pragma omp for
10015 for (int i = 0; i < 10; ++i) {
10016 #pragma omp for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
10017 for (int i = 0; i < 10; ++i)
10018 ;
10019 }
10020 #pragma omp for
10021 for (int i = 0; i < 10; ++i) {
10022 #pragma omp simd
10023 for (int i = 0; i < 10; ++i)
10024 ;
10025 }
10026 #pragma omp for
10027 for (int i = 0; i < 10; ++i) {
10028 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
10029 for (int i = 0; i < 10; ++i)
10030 ;
10031 }
10032 #pragma omp for
10033 for (int i = 0; i < 10; ++i) {
10034 #pragma omp parallel
10035 for (int i = 0; i < 10; ++i)
10036 ;
10037 }
10038 #pragma omp for
10039 for (int i = 0; i < 10; ++i) {
10040 #pragma omp sections // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
10041 {
10042 bar();
10043 }
10044 }
10045 #pragma omp for
10046 for (int i = 0; i < 10; ++i) {
10047 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}
10048 {
10049 bar();
10050 }
10051 }
10052 #pragma omp for
10053 for (int i = 0; i < 10; ++i) {
10054 #pragma omp single // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
10055 bar();
10056 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
10057 bar();
10058 #pragma omp critical
10059 bar();
10060 }
10061 #pragma omp for
10062 for (int i = 0; i < 10; ++i) {
10063 #pragma omp parallel
10064 {
10065 #pragma omp single // OK
10066 {
10067 bar();
10068 }
10069 #pragma omp for // OK
10070 for (int i = 0; i < 10; ++i)
10071 ;
10072 #pragma omp for simd // OK
10073 for (int i = 0; i < 10; ++i)
10074 ;
10075 #pragma omp sections // OK
10076 {
10077 bar();
10078 }
10079 }
10080 }
10081 #pragma omp for
10082 for (int i = 0; i < 10; ++i) {
10083 #pragma omp parallel for
10084 for (int i = 0; i < 10; ++i)
10085 ;
10086 }
10087 #pragma omp for
10088 for (int i = 0; i < 10; ++i) {
10089 #pragma omp parallel for simd
10090 for (int i = 0; i < 10; ++i)
10091 ;
10092 }
10093 #pragma omp for
10094 for (int i = 0; i < 10; ++i) {
10095 #pragma omp parallel sections
10096 {
10097 bar();
10098 }
10099 }
10100 #pragma omp for
10101 for (int i = 0; i < 10; ++i) {
10102 #pragma omp task
10103 {
10104 bar();
10105 }
10106 }
10107 #pragma omp for
10108 for (int i = 0; i < 10; ++i) {
10109 #pragma omp taskyield
10110 bar();
10111 }
10112 #pragma omp for
10113 for (int i = 0; i < 10; ++i) {
10114 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}
10115 bar();
10116 }
10117 #pragma omp for
10118 for (int i = 0; i < 10; ++i) {
10119 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
10120 bar();
10121 }
10122 #pragma omp for
10123 for (int i = 0; i < 10; ++i) {
10124 #pragma omp taskwait
10125 bar();
10126 }
10127 #pragma omp for
10128 for (int i = 0; i < 10; ++i) {
10129 #pragma omp flush
10130 bar();
10131 }
10132 #pragma omp for
10133 for (int i = 0; i < 10; ++i) {
10134 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
10135 bar();
10136 }
10137 #pragma omp for ordered
10138 for (int i = 0; i < 10; ++i) {
10139 #pragma omp ordered // OK
10140 bar();
10141 }
10142 #pragma omp for
10143 for (int i = 0; i < 10; ++i) {
10144 #pragma omp atomic
10145 ++a;
10146 }
10147 #pragma omp for
10148 for (int i = 0; i < 10; ++i) {
10149 #pragma omp target
10150 ++a;
10151 }
10152 #pragma omp for
10153 for (int i = 0; i < 10; ++i) {
10154 #pragma omp target parallel
10155 ++a;
10156 }
10157 #pragma omp for
10158 for (int i = 0; i < 10; ++i) {
10159 #pragma omp target parallel for
10160 for (int i = 0; i < 10; ++i)
10161 ;
10162 }
10163 #pragma omp for
10164 for (int i = 0; i < 10; ++i) {
10165 #pragma omp target enter data map(to: a)
10166 ++a;
10167 }
10168 #pragma omp for
10169 for (int i = 0; i < 10; ++i) {
10170 #pragma omp target exit data map(from: a)
10171 ++a;
10172 }
10173 #pragma omp for
10174 for (int i = 0; i < 10; ++i) {
10175 #pragma omp teams // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
10176 ++a;
10177 }
10178 #pragma omp for
10179 for (int i = 0; i < 10; ++i) {
10180 #pragma omp taskloop
10181 for (int i = 0; i < 10; ++i)
10182 ++a;
10183 }
10184 #pragma omp for
10185 for (int i = 0; i < 10; ++i) {
10186 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
10187 for (int j = 0; j < 10; ++j)
10188 ;
10189 }
10190 #pragma omp for
10191 for (int i = 0; i < 10; ++i) {
10192 #pragma omp target update to(a)
10193 ++a;
10194 }
10195 #pragma omp for
10196 for (int i = 0; i < 10; ++i) {
10197 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
10198 for (int j = 0; j < 10; ++j)
10199 ;
10200 }
10201 #pragma omp for
10202 for (int i = 0; i < 10; ++i) {
10203 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
10204 for (int j = 0; j < 10; ++j)
10205 ;
10206 }
10207 #pragma omp for
10208 for (int i = 0; i < 10; ++i) {
10209 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
10210 for (int j = 0; j < 10; ++j)
10211 ;
10212 }
10213 #pragma omp for
10214 for (int i = 0; i < 10; ++i) {
10215 #pragma omp target simd // OK
10216 for (int j = 0; j < 10; ++j)
10217 ;
10218 }
10219 #pragma omp for
10220 for (int i = 0; i < 10; ++i) {
10221 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
10222 for (int j = 0; j < 10; ++j)
10223 ;
10224 }
10225 #pragma omp for
10226 for (int i = 0; i < 10; ++i) {
10227 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
10228 for (int j = 0; j < 10; ++j)
10229 ;
10230 }
10231 #pragma omp for
10232 for (int i = 0; i < 10; ++i) {
10233 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
10234 for (int j = 0; j < 10; ++j)
10235 ;
10236 }
10237 #pragma omp for
10238 for (int i = 0; i < 10; ++i) {
10239 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
10240 for (int j = 0; j < 10; ++j)
10241 ;
10242 }
10243 #pragma omp for
10244 for (int i = 0; i < 10; ++i) {
10245 #pragma omp target teams // OK
10246 a++;
10247 }
10248 #pragma omp for
10249 for (int i = 0; i < 10; ++i) {
10250 #pragma omp target teams distribute // OK
10251 for (int j = 0; j < 10; ++j)
10252 ;
10253 }
10254 #pragma omp for
10255 for (int i = 0; i < 10; ++i) {
10256 #pragma omp target teams distribute parallel for // OK
10257 for (int j = 0; j < 10; ++j)
10258 ;
10259 }
10260 #pragma omp for
10261 for (int i = 0; i < 10; ++i) {
10262 #pragma omp target teams distribute parallel for simd // OK
10263 for (int j = 0; j < 10; ++j)
10264 ;
10265 }
10266 #pragma omp for
10267 for (int i = 0; i < 10; ++i) {
10268 #pragma omp target teams distribute simd // OK
10269 for (int j = 0; j < 10; ++j)
10270 ;
10271 }
10272
10273 // FOR SIMD DIRECTIVE
10274 #pragma omp for simd
10275 for (int i = 0; i < 10; ++i) {
10276 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10277 for (int i = 0; i < 10; ++i)
10278 ;
10279 }
10280 #pragma omp for simd
10281 for (int i = 0; i < 10; ++i) {
10282 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
10283 for (int i = 0; i < 10; ++i)
10284 ;
10285 }
10286 #pragma omp for simd
10287 for (int i = 0; i < 10; ++i) {
10288 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10289 for (int i = 0; i < 10; ++i)
10290 ;
10291 }
10292 #pragma omp for simd
10293 for (int i = 0; i < 10; ++i) {
10294 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10295 for (int i = 0; i < 10; ++i)
10296 ;
10297 }
10298 #pragma omp for simd
10299 for (int i = 0; i < 10; ++i) {
10300 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10301 {
10302 bar();
10303 }
10304 }
10305 #pragma omp for simd
10306 for (int i = 0; i < 10; ++i) {
10307 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10308 {
10309 bar();
10310 }
10311 }
10312 #pragma omp for simd
10313 for (int i = 0; i < 10; ++i) {
10314 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10315 bar();
10316 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10317 bar();
10318 }
10319 #pragma omp for simd
10320 for (int i = 0; i < 10; ++i) {
10321 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10322 bar();
10323 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10324 bar();
10325 }
10326 #pragma omp for simd
10327 for (int i = 0; i < 10; ++i) {
10328 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10329 for (int i = 0; i < 10; ++i)
10330 ;
10331 }
10332 #pragma omp for simd
10333 for (int i = 0; i < 10; ++i) {
10334 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10335 for (int i = 0; i < 10; ++i)
10336 ;
10337 }
10338 #pragma omp for simd
10339 for (int i = 0; i < 10; ++i) {
10340 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10341 {
10342 bar();
10343 }
10344 }
10345 #pragma omp for simd
10346 for (int i = 0; i < 10; ++i) {
10347 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10348 {
10349 bar();
10350 }
10351 }
10352 #pragma omp for simd
10353 for (int i = 0; i < 10; ++i) {
10354 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10355 bar();
10356 }
10357 #pragma omp for simd
10358 for (int i = 0; i < 10; ++i) {
10359 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10360 bar();
10361 }
10362 #pragma omp for simd
10363 for (int i = 0; i < 10; ++i) {
10364 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
10365 bar();
10366 }
10367 #pragma omp for simd
10368 for (int i = 0; i < 10; ++i) {
10369 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10370 bar();
10371 }
10372 #pragma omp for simd
10373 for (int i = 0; i < 10; ++i) {
10374 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10375 bar();
10376 }
10377 #pragma omp for simd
10378 for (int i = 0; i < 10; ++i) {
10379 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10380 bar();
10381 }
10382 #pragma omp for simd
10383 for (int i = 0; i < 10; ++i) {
10384 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
10385 ++a;
10386 }
10387 #pragma omp for simd
10388 for (int i = 0; i < 10; ++i) {
10389 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10390 ++a;
10391 }
10392 #pragma omp for simd
10393 for (int i = 0; i < 10; ++i) {
10394 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10395 ++a;
10396 }
10397 #pragma omp for simd
10398 for (int i = 0; i < 10; ++i) {
10399 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10400 for (int i = 0; i < 10; ++i)
10401 ;
10402 }
10403 #pragma omp for simd
10404 for (int i = 0; i < 10; ++i) {
10405 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10406 ++a;
10407 }
10408 #pragma omp for simd
10409 for (int i = 0; i < 10; ++i) {
10410 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10411 ++a;
10412 }
10413 #pragma omp for simd
10414 for (int i = 0; i < 10; ++i) {
10415 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10416 ++a;
10417 }
10418 #pragma omp for simd
10419 for (int i = 0; i < 10; ++i) {
10420 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10421 for (int i = 0; i < 10; ++i)
10422 ++a;
10423 }
10424 #pragma omp for simd
10425 for (int i = 0; i < 10; ++i) {
10426 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10427 for (int j = 0; j < 10; ++j)
10428 ;
10429 }
10430 #pragma omp for simd
10431 for (int i = 0; i < 10; ++i) {
10432 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10433 ++a;
10434 }
10435 #pragma omp for simd
10436 for (int i = 0; i < 10; ++i) {
10437 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10438 for (int j = 0; j < 10; ++j)
10439 ;
10440 }
10441 #pragma omp for simd
10442 for (int i = 0; i < 10; ++i) {
10443 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10444 for (int j = 0; j < 10; ++j)
10445 ;
10446 }
10447 #pragma omp for simd
10448 for (int i = 0; i < 10; ++i) {
10449 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10450 for (int j = 0; j < 10; ++j)
10451 ;
10452 }
10453 #pragma omp for simd
10454 for (int i = 0; i < 10; ++i) {
10455 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10456 for (int j = 0; j < 10; ++j)
10457 ;
10458 }
10459 #pragma omp for simd
10460 for (int i = 0; i < 10; ++i) {
10461 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10462 for (int j = 0; j < 10; ++j)
10463 ;
10464 }
10465 #pragma omp for simd
10466 for (int i = 0; i < 10; ++i) {
10467 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10468 for (int j = 0; j < 10; ++j)
10469 ;
10470 }
10471 #pragma omp for simd
10472 for (int i = 0; i < 10; ++i) {
10473 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10474 for (int j = 0; j < 10; ++j)
10475 ;
10476 }
10477 #pragma omp for simd
10478 for (int i = 0; i < 10; ++i) {
10479 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10480 for (int j = 0; j < 10; ++j)
10481 ;
10482 }
10483 #pragma omp for simd
10484 for (int i = 0; i < 10; ++i) {
10485 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10486 a++;
10487 }
10488 #pragma omp for simd
10489 for (int i = 0; i < 10; ++i) {
10490 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10491 for (int j = 0; j < 10; ++j)
10492 ;
10493 }
10494 #pragma omp for simd
10495 for (int i = 0; i < 10; ++i) {
10496 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10497 for (int j = 0; j < 10; ++j)
10498 ;
10499 }
10500 #pragma omp for simd
10501 for (int i = 0; i < 10; ++i) {
10502 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10503 for (int j = 0; j < 10; ++j)
10504 ;
10505 }
10506 #pragma omp for simd
10507 for (int i = 0; i < 10; ++i) {
10508 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
10509 for (int j = 0; j < 10; ++j)
10510 ;
10511 }
10512
10513 // SECTIONS DIRECTIVE
10514 #pragma omp sections
10515 {
10516 #pragma omp for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
10517 for (int i = 0; i < 10; ++i)
10518 ;
10519 }
10520 #pragma omp sections
10521 {
10522 #pragma omp simd
10523 for (int i = 0; i < 10; ++i)
10524 ;
10525 }
10526 #pragma omp sections
10527 {
10528 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
10529 for (int i = 0; i < 10; ++i)
10530 ;
10531 }
10532 #pragma omp sections
10533 {
10534 #pragma omp parallel
10535 for (int i = 0; i < 10; ++i)
10536 ;
10537 }
10538 #pragma omp sections
10539 {
10540 #pragma omp sections // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
10541 {
10542 bar();
10543 }
10544 }
10545 #pragma omp sections
10546 {
10547 #pragma omp section
10548 {
10549 bar();
10550 }
10551 }
10552 #pragma omp sections
10553 {
10554 #pragma omp critical
10555 bar();
10556 #pragma omp single // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
10557 bar();
10558 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}
10559 bar();
10560 }
10561 #pragma omp sections
10562 {
10563 #pragma omp parallel
10564 {
10565 #pragma omp single // OK
10566 {
10567 bar();
10568 }
10569 #pragma omp for // OK
10570 for (int i = 0; i < 10; ++i)
10571 ;
10572 #pragma omp for simd // OK
10573 for (int i = 0; i < 10; ++i)
10574 ;
10575 #pragma omp sections // OK
10576 {
10577 bar();
10578 }
10579 }
10580 }
10581 #pragma omp sections
10582 {
10583 #pragma omp parallel for
10584 for (int i = 0; i < 10; ++i)
10585 ;
10586 }
10587 #pragma omp sections
10588 {
10589 #pragma omp parallel for simd
10590 for (int i = 0; i < 10; ++i)
10591 ;
10592 }
10593 #pragma omp sections
10594 {
10595 #pragma omp parallel sections
10596 {
10597 bar();
10598 }
10599 }
10600 #pragma omp sections
10601 {
10602 #pragma omp task
10603 {
10604 bar();
10605 }
10606 }
10607 #pragma omp sections
10608 {
10609 #pragma omp taskyield
10610 }
10611 #pragma omp sections
10612 {
10613 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}
10614 bar();
10615 }
10616 #pragma omp sections
10617 {
10618 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}}
10619 bar();
10620 }
10621 #pragma omp sections
10622 {
10623 #pragma omp taskwait
10624 }
10625 #pragma omp sections
10626 {
10627 #pragma omp flush
10628 }
10629 #pragma omp sections
10630 {
10631 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
10632 bar();
10633 }
10634 #pragma omp sections
10635 {
10636 #pragma omp atomic
10637 ++a;
10638 }
10639 #pragma omp sections
10640 {
10641 #pragma omp target
10642 ++a;
10643 }
10644 #pragma omp sections
10645 {
10646 #pragma omp target parallel
10647 ++a;
10648 }
10649 #pragma omp sections
10650 {
10651 #pragma omp target parallel for
10652 for (int i = 0; i < 10; ++i)
10653 ;
10654 }
10655 #pragma omp sections
10656 {
10657 #pragma omp target enter data map(to: a)
10658 }
10659 #pragma omp sections
10660 {
10661 #pragma omp target exit data map(from: a)
10662 }
10663 #pragma omp sections
10664 {
10665 #pragma omp teams // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
10666 ++a;
10667 }
10668 #pragma omp sections
10669 {
10670 #pragma omp taskloop
10671 for (int i = 0; i < 10; ++i)
10672 ++a;
10673 }
10674 #pragma omp sections
10675 {
10676 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
10677 for (int i = 0; i < 10; ++i)
10678 ;
10679 }
10680 #pragma omp sections
10681 {
10682 #pragma omp target update to(a)
10683 }
10684 #pragma omp sections
10685 {
10686 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
10687 for (int i = 0; i < 10; ++i)
10688 ;
10689 }
10690 #pragma omp sections
10691 {
10692 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
10693 for (int i = 0; i < 10; ++i)
10694 ;
10695 }
10696 #pragma omp sections
10697 {
10698 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
10699 for (int i = 0; i < 10; ++i)
10700 ;
10701 }
10702 #pragma omp sections
10703 {
10704 #pragma omp target simd // OK
10705 for (int i = 0; i < 10; ++i)
10706 ;
10707 }
10708 #pragma omp sections
10709 {
10710 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
10711 for (int i = 0; i < 10; ++i)
10712 ;
10713 }
10714 #pragma omp sections
10715 {
10716 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
10717 for (int i = 0; i < 10; ++i)
10718 ;
10719 }
10720 #pragma omp sections
10721 {
10722 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
10723 for (int i = 0; i < 10; ++i)
10724 ;
10725 }
10726 #pragma omp sections
10727 {
10728 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
10729 for (int i = 0; i < 10; ++i)
10730 ;
10731 }
10732 #pragma omp sections
10733 {
10734 #pragma omp target teams // OK
10735 a++;
10736 }
10737 #pragma omp sections
10738 {
10739 #pragma omp target teams distribute // OK
10740 for (int i = 0; i < 10; ++i)
10741 ;
10742 }
10743 #pragma omp sections
10744 {
10745 #pragma omp target teams distribute parallel for // OK
10746 for (int i = 0; i < 10; ++i)
10747 ;
10748 }
10749 #pragma omp sections
10750 {
10751 #pragma omp target teams distribute parallel for simd // OK
10752 for (int i = 0; i < 10; ++i)
10753 ;
10754 }
10755 #pragma omp sections
10756 {
10757 #pragma omp target teams distribute simd // OK
10758 for (int i = 0; i < 10; ++i)
10759 ;
10760 }
10761
10762 // SECTION DIRECTIVE
10763 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}
10764 {
10765 bar();
10766 }
10767 #pragma omp sections
10768 {
10769 #pragma omp section
10770 {
10771 #pragma omp for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
10772 for (int i = 0; i < 10; ++i)
10773 ;
10774 }
10775 }
10776 #pragma omp sections
10777 {
10778 #pragma omp section
10779 {
10780 #pragma omp simd
10781 for (int i = 0; i < 10; ++i)
10782 ;
10783 }
10784 }
10785 #pragma omp sections
10786 {
10787 #pragma omp section
10788 {
10789 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
10790 for (int i = 0; i < 10; ++i)
10791 ;
10792 }
10793 }
10794 #pragma omp sections
10795 {
10796 #pragma omp section
10797 {
10798 #pragma omp parallel
10799 for (int i = 0; i < 10; ++i)
10800 ;
10801 }
10802 }
10803 #pragma omp sections
10804 {
10805 #pragma omp section
10806 {
10807 #pragma omp sections // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
10808 {
10809 bar();
10810 }
10811 }
10812 }
10813 #pragma omp sections
10814 {
10815 #pragma omp section
10816 {
10817 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}
10818 {
10819 bar();
10820 }
10821 }
10822 }
10823 #pragma omp sections
10824 {
10825 #pragma omp section
10826 {
10827 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
10828 bar();
10829 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
10830 bar();
10831 #pragma omp critical
10832 bar();
10833 }
10834 }
10835 #pragma omp sections
10836 {
10837 #pragma omp section
10838 {
10839 #pragma omp parallel
10840 {
10841 #pragma omp single // OK
10842 {
10843 bar();
10844 }
10845 #pragma omp for // OK
10846 for (int i = 0; i < 10; ++i)
10847 ;
10848 #pragma omp for simd // OK
10849 for (int i = 0; i < 10; ++i)
10850 ;
10851 #pragma omp sections // OK
10852 {
10853 bar();
10854 }
10855 }
10856 }
10857 }
10858 #pragma omp sections
10859 {
10860 #pragma omp section
10861 {
10862 #pragma omp parallel for
10863 for (int i = 0; i < 10; ++i)
10864 ;
10865 }
10866 }
10867 #pragma omp sections
10868 {
10869 #pragma omp section
10870 {
10871 #pragma omp parallel for simd
10872 for (int i = 0; i < 10; ++i)
10873 ;
10874 }
10875 }
10876 #pragma omp sections
10877 {
10878 #pragma omp section
10879 {
10880 #pragma omp parallel sections
10881 {
10882 bar();
10883 }
10884 }
10885 }
10886 #pragma omp sections
10887 {
10888 #pragma omp section
10889 {
10890 #pragma omp task
10891 {
10892 bar();
10893 }
10894 }
10895 }
10896 #pragma omp sections
10897 {
10898 #pragma omp section
10899 {
10900 #pragma omp taskyield
10901 bar();
10902 }
10903 }
10904 #pragma omp sections
10905 {
10906 #pragma omp section
10907 {
10908 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}
10909 bar();
10910 }
10911 }
10912 #pragma omp sections
10913 {
10914 #pragma omp section
10915 {
10916 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}}
10917 bar();
10918 }
10919 }
10920 #pragma omp sections
10921 {
10922 #pragma omp section
10923 {
10924 #pragma omp taskwait
10925 bar();
10926 }
10927 }
10928 #pragma omp sections
10929 {
10930 #pragma omp section
10931 {
10932 #pragma omp flush
10933 bar();
10934 }
10935 }
10936 #pragma omp sections
10937 {
10938 #pragma omp section
10939 {
10940 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
10941 bar();
10942 }
10943 }
10944 #pragma omp sections
10945 {
10946 #pragma omp section
10947 {
10948 #pragma omp atomic
10949 ++a;
10950 }
10951 }
10952 #pragma omp sections
10953 {
10954 #pragma omp section
10955 {
10956 #pragma omp target
10957 ++a;
10958 }
10959 }
10960 #pragma omp sections
10961 {
10962 #pragma omp section
10963 {
10964 #pragma omp target parallel
10965 ++a;
10966 }
10967 }
10968 #pragma omp sections
10969 {
10970 #pragma omp section
10971 {
10972 #pragma omp target parallel for
10973 for (int i = 0; i < 10; ++i)
10974 ;
10975 }
10976 }
10977 #pragma omp sections
10978 {
10979 #pragma omp section
10980 {
10981 #pragma omp target enter data map(to: a)
10982 ++a;
10983 }
10984 }
10985 #pragma omp sections
10986 {
10987 #pragma omp section
10988 {
10989 #pragma omp target exit data map(from: a)
10990 ++a;
10991 }
10992 }
10993 #pragma omp sections
10994 {
10995 #pragma omp section
10996 {
10997 #pragma omp teams // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
10998 ++a;
10999 }
11000 }
11001 #pragma omp sections
11002 {
11003 #pragma omp section
11004 {
11005 #pragma omp taskloop
11006 for (int i = 0; i < 10; ++i)
11007 ++a;
11008 }
11009 }
11010 #pragma omp sections
11011 {
11012 #pragma omp section
11013 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
11014 for (int i = 0; i < 10; ++i)
11015 ;
11016 }
11017 #pragma omp sections
11018 {
11019 #pragma omp section
11020 {
11021 #pragma omp target update to(a)
11022 a++;
11023 }
11024 }
11025 #pragma omp sections
11026 {
11027 #pragma omp section
11028 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
11029 for (int i = 0; i < 10; ++i)
11030 ;
11031 }
11032 #pragma omp sections
11033 {
11034 #pragma omp section
11035 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
11036 for (int i = 0; i < 10; ++i)
11037 ;
11038 }
11039 #pragma omp sections
11040 {
11041 #pragma omp section
11042 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
11043 for (int i = 0; i < 10; ++i)
11044 ;
11045 }
11046 #pragma omp sections
11047 {
11048 #pragma omp section
11049 #pragma omp target simd // OK
11050 for (int i = 0; i < 10; ++i)
11051 ;
11052 }
11053 #pragma omp sections
11054 {
11055 #pragma omp section
11056 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
11057 for (int i = 0; i < 10; ++i)
11058 ;
11059 }
11060 #pragma omp sections
11061 {
11062 #pragma omp section
11063 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
11064 for (int i = 0; i < 10; ++i)
11065 ;
11066 }
11067 #pragma omp sections
11068 {
11069 #pragma omp section
11070 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
11071 for (int i = 0; i < 10; ++i)
11072 ;
11073 }
11074 #pragma omp sections
11075 {
11076 #pragma omp section
11077 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
11078 for (int i = 0; i < 10; ++i)
11079 ;
11080 }
11081 #pragma omp sections
11082 {
11083 #pragma omp section
11084 #pragma omp target teams // OK
11085 a++;
11086 }
11087 #pragma omp sections
11088 {
11089 #pragma omp section
11090 #pragma omp target teams distribute // OK
11091 for (int i = 0; i < 10; ++i)
11092 ;
11093 }
11094 #pragma omp sections
11095 {
11096 #pragma omp section
11097 #pragma omp target teams distribute parallel for // OK
11098 for (int i = 0; i < 10; ++i)
11099 ;
11100 }
11101 #pragma omp sections
11102 {
11103 #pragma omp section
11104 #pragma omp target teams distribute parallel for simd // OK
11105 for (int i = 0; i < 10; ++i)
11106 ;
11107 }
11108 #pragma omp sections
11109 {
11110 #pragma omp section
11111 #pragma omp target teams distribute simd // OK
11112 for (int i = 0; i < 10; ++i)
11113 ;
11114 }
11115
11116 // SINGLE DIRECTIVE
11117 #pragma omp single
11118 {
11119 #pragma omp for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
11120 for (int i = 0; i < 10; ++i)
11121 ;
11122 }
11123 #pragma omp single
11124 {
11125 #pragma omp simd
11126 for (int i = 0; i < 10; ++i)
11127 ;
11128 }
11129 #pragma omp single
11130 {
11131 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
11132 for (int i = 0; i < 10; ++i)
11133 ;
11134 }
11135 #pragma omp single
11136 {
11137 #pragma omp parallel
11138 for (int i = 0; i < 10; ++i)
11139 ;
11140 }
11141 #pragma omp single
11142 {
11143 #pragma omp single // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
11144 {
11145 bar();
11146 }
11147 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}
11148 bar();
11149 #pragma omp critical
11150 bar();
11151 }
11152 #pragma omp single
11153 {
11154 #pragma omp sections // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
11155 {
11156 bar();
11157 }
11158 }
11159 #pragma omp single
11160 {
11161 #pragma omp parallel
11162 {
11163 #pragma omp single // OK
11164 {
11165 bar();
11166 }
11167 #pragma omp for // OK
11168 for (int i = 0; i < 10; ++i)
11169 ;
11170 #pragma omp for simd // OK
11171 for (int i = 0; i < 10; ++i)
11172 ;
11173 #pragma omp sections // OK
11174 {
11175 bar();
11176 }
11177 }
11178 }
11179 #pragma omp single
11180 {
11181 #pragma omp parallel for
11182 for (int i = 0; i < 10; ++i)
11183 ;
11184 }
11185 #pragma omp single
11186 {
11187 #pragma omp parallel for simd
11188 for (int i = 0; i < 10; ++i)
11189 ;
11190 }
11191 #pragma omp single
11192 {
11193 #pragma omp parallel sections
11194 {
11195 bar();
11196 }
11197 }
11198 #pragma omp single
11199 {
11200 #pragma omp task
11201 {
11202 bar();
11203 }
11204 }
11205 #pragma omp single
11206 {
11207 #pragma omp taskyield
11208 bar();
11209 }
11210 #pragma omp single
11211 {
11212 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}
11213 bar();
11214 }
11215 #pragma omp single
11216 {
11217 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}}
11218 bar();
11219 }
11220 #pragma omp single
11221 {
11222 #pragma omp taskwait
11223 bar();
11224 }
11225 #pragma omp single
11226 {
11227 #pragma omp flush
11228 bar();
11229 }
11230 #pragma omp single
11231 {
11232 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
11233 bar();
11234 }
11235 #pragma omp single
11236 {
11237 #pragma omp atomic
11238 ++a;
11239 }
11240 #pragma omp single
11241 {
11242 #pragma omp target
11243 ++a;
11244 }
11245 #pragma omp single
11246 {
11247 #pragma omp target parallel
11248 ++a;
11249 }
11250 #pragma omp single
11251 {
11252 #pragma omp target parallel for
11253 for (int i = 0; i < 10; ++i)
11254 ;
11255 }
11256 #pragma omp single
11257 {
11258 #pragma omp target enter data map(to: a)
11259 ++a;
11260 }
11261 #pragma omp single
11262 {
11263 #pragma omp target exit data map(from: a)
11264 ++a;
11265 }
11266 #pragma omp single
11267 {
11268 #pragma omp teams // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
11269 ++a;
11270 }
11271 #pragma omp single
11272 {
11273 #pragma omp taskloop
11274 for (int i = 0; i < 10; ++i)
11275 ++a;
11276 }
11277 #pragma omp single
11278 {
11279 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
11280 for (int i = 0; i < 10; ++i)
11281 ;
11282 }
11283 #pragma omp single
11284 {
11285 #pragma omp target update to(a)
11286 a++;
11287 }
11288 #pragma omp single
11289 {
11290 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
11291 for (int i = 0; i < 10; ++i)
11292 ;
11293 }
11294 #pragma omp single
11295 {
11296 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
11297 for (int i = 0; i < 10; ++i)
11298 ;
11299 }
11300 #pragma omp single
11301 {
11302 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
11303 for (int i = 0; i < 10; ++i)
11304 ;
11305 }
11306 #pragma omp single
11307 {
11308 #pragma omp target simd // OK
11309 for (int i = 0; i < 10; ++i)
11310 ;
11311 }
11312 #pragma omp single
11313 {
11314 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
11315 for (int i = 0; i < 10; ++i)
11316 ;
11317 }
11318 #pragma omp single
11319 {
11320 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
11321 for (int i = 0; i < 10; ++i)
11322 ;
11323 }
11324 #pragma omp single
11325 {
11326 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
11327 for (int i = 0; i < 10; ++i)
11328 ;
11329 }
11330 #pragma omp single
11331 {
11332 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
11333 for (int i = 0; i < 10; ++i)
11334 ;
11335 }
11336 #pragma omp single
11337 {
11338 #pragma omp target teams // oK
11339 a++;
11340 }
11341 #pragma omp single
11342 {
11343 #pragma omp target teams distribute // OK
11344 for (int i = 0; i < 10; ++i)
11345 ;
11346 }
11347 #pragma omp single
11348 {
11349 #pragma omp target teams distribute parallel for // OK
11350 for (int i = 0; i < 10; ++i)
11351 ;
11352 }
11353 #pragma omp single
11354 {
11355 #pragma omp target teams distribute parallel for simd // OK
11356 for (int i = 0; i < 10; ++i)
11357 ;
11358 }
11359 #pragma omp single
11360 {
11361 #pragma omp target teams distribute simd // OK
11362 for (int i = 0; i < 10; ++i)
11363 ;
11364 }
11365
11366 // MASTER DIRECTIVE
11367 #pragma omp master
11368 {
11369 #pragma omp for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
11370 for (int i = 0; i < 10; ++i)
11371 ;
11372 }
11373 #pragma omp master
11374 {
11375 #pragma omp simd
11376 for (int i = 0; i < 10; ++i)
11377 ;
11378 }
11379 #pragma omp master
11380 {
11381 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
11382 for (int i = 0; i < 10; ++i)
11383 ;
11384 }
11385 #pragma omp master
11386 {
11387 #pragma omp parallel
11388 for (int i = 0; i < 10; ++i)
11389 ;
11390 }
11391 #pragma omp parallel master
11392 {
11393 for (int i = 0; i < 10; ++i)
11394 ;
11395 }
11396 #pragma omp master
11397 {
11398 #pragma omp single // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
11399 {
11400 bar();
11401 }
11402 }
11403 #pragma omp master
11404 {
11405 #pragma omp master // OK, though second 'master' is redundant
11406 {
11407 bar();
11408 }
11409 }
11410 #pragma omp master
11411 {
11412 #pragma omp critical
11413 {
11414 bar();
11415 }
11416 }
11417 #pragma omp master
11418 {
11419 #pragma omp sections // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
11420 {
11421 bar();
11422 }
11423 }
11424 #pragma omp master
11425 {
11426 #pragma omp parallel
11427 {
11428 #pragma omp master // OK
11429 {
11430 bar();
11431 }
11432 #pragma omp for // OK
11433 for (int i = 0; i < 10; ++i)
11434 ;
11435 #pragma omp for simd // OK
11436 for (int i = 0; i < 10; ++i)
11437 ;
11438 #pragma omp sections // OK
11439 {
11440 bar();
11441 }
11442 }
11443 }
11444 #pragma omp master
11445 {
11446 #pragma omp parallel master
11447 {
11448 bar();
11449 }
11450 }
11451 #pragma omp master
11452 {
11453 #pragma omp parallel for
11454 for (int i = 0; i < 10; ++i)
11455 ;
11456 }
11457 #pragma omp master
11458 {
11459 #pragma omp parallel for simd
11460 for (int i = 0; i < 10; ++i)
11461 ;
11462 }
11463 #pragma omp master
11464 {
11465 #pragma omp parallel sections
11466 {
11467 bar();
11468 }
11469 }
11470 #pragma omp master
11471 {
11472 #pragma omp task
11473 {
11474 bar();
11475 }
11476 }
11477 #pragma omp master
11478 {
11479 #pragma omp taskyield
11480 bar();
11481 }
11482 #pragma omp master
11483 {
11484 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}
11485 bar();
11486 }
11487 #pragma omp master
11488 {
11489 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}}
11490 bar();
11491 }
11492 #pragma omp master
11493 {
11494 #pragma omp taskwait
11495 bar();
11496 }
11497 #pragma omp master
11498 {
11499 #pragma omp flush
11500 bar();
11501 }
11502 #pragma omp master
11503 {
11504 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
11505 bar();
11506 }
11507 #pragma omp master
11508 {
11509 #pragma omp atomic
11510 ++a;
11511 }
11512 #pragma omp master
11513 {
11514 #pragma omp target
11515 ++a;
11516 }
11517 #pragma omp master
11518 {
11519 #pragma omp target parallel
11520 ++a;
11521 }
11522 #pragma omp master
11523 {
11524 #pragma omp target parallel for
11525 for (int i = 0; i < 10; ++i)
11526 ;
11527 }
11528 #pragma omp master
11529 {
11530 #pragma omp target enter data map(to: a)
11531 ++a;
11532 }
11533 #pragma omp master
11534 {
11535 #pragma omp target exit data map(from: a)
11536 ++a;
11537 }
11538 #pragma omp master
11539 {
11540 #pragma omp teams // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
11541 ++a;
11542 }
11543 #pragma omp master
11544 {
11545 #pragma omp taskloop
11546 for (int i = 0; i < 10; ++i)
11547 ++a;
11548 }
11549 #pragma omp master
11550 {
11551 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
11552 for (int i = 0; i < 10; ++i)
11553 ;
11554 }
11555 #pragma omp master
11556 {
11557 #pragma omp target update to(a)
11558 ++a;
11559 }
11560 #pragma omp master
11561 {
11562 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
11563 for (int i = 0; i < 10; ++i)
11564 ;
11565 }
11566 #pragma omp master
11567 {
11568 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
11569 for (int i = 0; i < 10; ++i)
11570 ;
11571 }
11572 #pragma omp master
11573 {
11574 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
11575 for (int i = 0; i < 10; ++i)
11576 ;
11577 }
11578 #pragma omp master
11579 {
11580 #pragma omp target simd // OK
11581 for (int i = 0; i < 10; ++i)
11582 ;
11583 }
11584 #pragma omp master
11585 {
11586 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
11587 for (int i = 0; i < 10; ++i)
11588 ;
11589 }
11590 #pragma omp master
11591 {
11592 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
11593 for (int i = 0; i < 10; ++i)
11594 ;
11595 }
11596 #pragma omp master
11597 {
11598 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
11599 for (int i = 0; i < 10; ++i)
11600 ;
11601 }
11602 #pragma omp master
11603 {
11604 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
11605 for (int i = 0; i < 10; ++i)
11606 ;
11607 }
11608 #pragma omp master
11609 {
11610 #pragma omp target teams // OK
11611 a++;
11612 }
11613 #pragma omp master
11614 {
11615 #pragma omp target teams distribute // OK
11616 for (int i = 0; i < 10; ++i)
11617 ;
11618 }
11619 #pragma omp master
11620 {
11621 #pragma omp target teams distribute parallel for // OK
11622 for (int i = 0; i < 10; ++i)
11623 ;
11624 }
11625 #pragma omp master
11626 {
11627 #pragma omp target teams distribute parallel for simd // OK
11628 for (int i = 0; i < 10; ++i)
11629 ;
11630 }
11631 #pragma omp master
11632 {
11633 #pragma omp target teams distribute simd // OK
11634 for (int i = 0; i < 10; ++i)
11635 ;
11636 }
11637
11638 // CRITICAL DIRECTIVE
11639 #pragma omp critical
11640 {
11641 #pragma omp for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
11642 for (int i = 0; i < 10; ++i)
11643 ;
11644 }
11645 #pragma omp critical
11646 {
11647 #pragma omp simd
11648 for (int i = 0; i < 10; ++i)
11649 ;
11650 }
11651 #pragma omp critical
11652 {
11653 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
11654 for (int i = 0; i < 10; ++i)
11655 ;
11656 }
11657 #pragma omp critical
11658 {
11659 #pragma omp parallel
11660 for (int i = 0; i < 10; ++i)
11661 ;
11662 }
11663 #pragma omp critical
11664 {
11665 #pragma omp single // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
11666 {
11667 bar();
11668 }
11669 }
11670 #pragma omp critical
11671 {
11672 #pragma omp master // OK, though second 'master' is redundant
11673 {
11674 bar();
11675 }
11676 }
11677 #pragma omp critical
11678 {
11679 #pragma omp critical
11680 {
11681 bar();
11682 }
11683 }
11684 #pragma omp critical
11685 {
11686 #pragma omp sections // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
11687 {
11688 bar();
11689 }
11690 }
11691 #pragma omp critical
11692 {
11693 #pragma omp parallel
11694 {
11695 #pragma omp master // OK
11696 {
11697 bar();
11698 }
11699 #pragma omp for // OK
11700 for (int i = 0; i < 10; ++i)
11701 ;
11702 #pragma omp for simd // OK
11703 for (int i = 0; i < 10; ++i)
11704 ;
11705 #pragma omp sections // OK
11706 {
11707 bar();
11708 }
11709 }
11710 }
11711 #pragma omp critical
11712 {
11713 #pragma omp parallel for
11714 for (int i = 0; i < 10; ++i)
11715 ;
11716 }
11717 #pragma omp critical
11718 {
11719 #pragma omp parallel for simd
11720 for (int i = 0; i < 10; ++i)
11721 ;
11722 }
11723 #pragma omp critical
11724 {
11725 #pragma omp parallel sections
11726 {
11727 bar();
11728 }
11729 }
11730 #pragma omp critical
11731 {
11732 #pragma omp task
11733 {
11734 bar();
11735 }
11736 }
11737 #pragma omp critical
11738 {
11739 #pragma omp taskyield
11740 bar();
11741 }
11742 #pragma omp critical
11743 {
11744 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}
11745 bar();
11746 }
11747 #pragma omp critical
11748 {
11749 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}}
11750 bar();
11751 }
11752 #pragma omp critical
11753 {
11754 #pragma omp taskwait
11755 bar();
11756 }
11757 #pragma omp critical(Belka)
11758 {
11759 #pragma omp critical(Strelka)
11760 bar();
11761 }
11762 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}}
11763 {
11764 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}}
11765 {
11766 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}}
11767 {
11768 #pragma omp parallel
11769 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}}
11770 {
11771 bar();
11772 }
11773 }
11774 }
11775 }
11776 #pragma omp critical
11777 {
11778 #pragma omp flush
11779 bar();
11780 }
11781 #pragma omp critical
11782 {
11783 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
11784 bar();
11785 }
11786 #pragma omp critical
11787 {
11788 #pragma omp atomic
11789 ++a;
11790 }
11791 #pragma omp critical
11792 {
11793 #pragma omp target
11794 ++a;
11795 }
11796 #pragma omp critical
11797 {
11798 #pragma omp target parallel
11799 ++a;
11800 }
11801 #pragma omp critical
11802 {
11803 #pragma omp target parallel for
11804 for (int i = 0; i < 10; ++i)
11805 ;
11806 }
11807 #pragma omp critical
11808 {
11809 #pragma omp target enter data map(to: a)
11810 ++a;
11811 }
11812 #pragma omp critical
11813 {
11814 #pragma omp target exit data map(from: a)
11815 ++a;
11816 }
11817 #pragma omp critical
11818 {
11819 #pragma omp teams // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
11820 ++a;
11821 }
11822 #pragma omp critical
11823 {
11824 #pragma omp taskloop
11825 for (int i = 0; i < 10; ++i)
11826 ++a;
11827 }
11828 #pragma omp critical
11829 {
11830 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
11831 for (int i = 0; i < 10; ++i)
11832 ;
11833 }
11834 #pragma omp critical
11835 {
11836 #pragma omp target update to(a)
11837 a++;
11838 }
11839 #pragma omp critical
11840 {
11841 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
11842 for (int i = 0; i < 10; ++i)
11843 ;
11844 }
11845 #pragma omp critical
11846 {
11847 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
11848 for (int i = 0; i < 10; ++i)
11849 ;
11850 }
11851 #pragma omp critical
11852 {
11853 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
11854 for (int i = 0; i < 10; ++i)
11855 ;
11856 }
11857 #pragma omp critical
11858 {
11859 #pragma omp target simd // OK
11860 for (int i = 0; i < 10; ++i)
11861 ;
11862 }
11863 #pragma omp critical
11864 {
11865 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
11866 for (int i = 0; i < 10; ++i)
11867 ;
11868 }
11869 #pragma omp critical
11870 {
11871 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
11872 for (int i = 0; i < 10; ++i)
11873 ;
11874 }
11875 #pragma omp critical
11876 {
11877 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
11878 for (int i = 0; i < 10; ++i)
11879 ;
11880 }
11881 #pragma omp critical
11882 {
11883 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
11884 for (int i = 0; i < 10; ++i)
11885 ;
11886 }
11887 #pragma omp critical
11888 {
11889 #pragma omp target teams // OK
11890 a++;
11891 }
11892 #pragma omp critical
11893 {
11894 #pragma omp target teams distribute // OK
11895 for (int i = 0; i < 10; ++i)
11896 ;
11897 }
11898 #pragma omp critical
11899 {
11900 #pragma omp target teams distribute parallel for // OK
11901 for (int i = 0; i < 10; ++i)
11902 ;
11903 }
11904 #pragma omp critical
11905 {
11906 #pragma omp target teams distribute parallel for simd // OK
11907 for (int i = 0; i < 10; ++i)
11908 ;
11909 }
11910 #pragma omp critical
11911 {
11912 #pragma omp target teams distribute simd // OK
11913 for (int i = 0; i < 10; ++i)
11914 ;
11915 }
11916
11917 // PARALLEL FOR DIRECTIVE
11918 #pragma omp parallel for
11919 for (int i = 0; i < 10; ++i) {
11920 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
11921 for (int i = 0; i < 10; ++i)
11922 ;
11923 }
11924 #pragma omp parallel for
11925 for (int i = 0; i < 10; ++i) {
11926 #pragma omp simd
11927 for (int i = 0; i < 10; ++i)
11928 ;
11929 }
11930 #pragma omp parallel for
11931 for (int i = 0; i < 10; ++i) {
11932 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
11933 for (int i = 0; i < 10; ++i)
11934 ;
11935 }
11936
11937 #pragma omp parallel for
11938 for (int i = 0; i < 10; ++i) {
11939 #pragma omp parallel
11940 for (int i = 0; i < 10; ++i)
11941 ;
11942 }
11943 #pragma omp parallel for
11944 for (int i = 0; i < 10; ++i) {
11945 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
11946 {
11947 bar();
11948 }
11949 }
11950 #pragma omp parallel for
11951 for (int i = 0; i < 10; ++i) {
11952 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}
11953 {
11954 bar();
11955 }
11956 }
11957 #pragma omp parallel for
11958 for (int i = 0; i < 10; ++i) {
11959 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
11960 {
11961 bar();
11962 }
11963 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}
11964 {
11965 bar();
11966 }
11967 #pragma omp critical
11968 {
11969 bar();
11970 }
11971 }
11972 #pragma omp parallel for
11973 for (int i = 0; i < 10; ++i) {
11974 #pragma omp parallel
11975 {
11976 #pragma omp single // OK
11977 {
11978 bar();
11979 }
11980 #pragma omp master // OK
11981 {
11982 bar();
11983 }
11984 #pragma omp critical // OK
11985 {
11986 bar();
11987 }
11988 #pragma omp for // OK
11989 for (int i = 0; i < 10; ++i)
11990 ;
11991 #pragma omp for simd // OK
11992 for (int i = 0; i < 10; ++i)
11993 ;
11994 #pragma omp sections // OK
11995 {
11996 bar();
11997 }
11998 }
11999 }
12000 #pragma omp parallel for
12001 for (int i = 0; i < 10; ++i) {
12002 #pragma omp parallel for
12003 for (int i = 0; i < 10; ++i)
12004 ;
12005 }
12006 #pragma omp parallel for
12007 for (int i = 0; i < 10; ++i) {
12008 #pragma omp parallel for simd
12009 for (int i = 0; i < 10; ++i)
12010 ;
12011 }
12012 #pragma omp parallel for
12013 for (int i = 0; i < 10; ++i) {
12014 #pragma omp parallel sections
12015 {
12016 bar();
12017 }
12018 }
12019 #pragma omp parallel for
12020 for (int i = 0; i < 10; ++i) {
12021 #pragma omp task
12022 {
12023 bar();
12024 }
12025 }
12026 #pragma omp parallel for
12027 for (int i = 0; i < 10; ++i) {
12028 #pragma omp taskyield
12029 bar();
12030 }
12031 #pragma omp parallel for
12032 for (int i = 0; i < 10; ++i) {
12033 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}
12034 bar();
12035 }
12036 #pragma omp parallel for
12037 for (int i = 0; i < 10; ++i) {
12038 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
12039 bar();
12040 }
12041 #pragma omp parallel for
12042 for (int i = 0; i < 10; ++i) {
12043 #pragma omp taskwait
12044 bar();
12045 }
12046 #pragma omp parallel for
12047 for (int i = 0; i < 10; ++i) {
12048 #pragma omp flush
12049 bar();
12050 }
12051 #pragma omp parallel for
12052 for (int i = 0; i < 10; ++i) {
12053 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
12054 bar();
12055 }
12056 #pragma omp parallel for ordered
12057 for (int i = 0; i < 10; ++i) {
12058 #pragma omp ordered // OK
12059 bar();
12060 }
12061 #pragma omp parallel for
12062 for (int i = 0; i < 10; ++i) {
12063 #pragma omp atomic
12064 ++a;
12065 }
12066 #pragma omp parallel for
12067 for (int i = 0; i < 10; ++i) {
12068 #pragma omp target
12069 ++a;
12070 }
12071 #pragma omp parallel for
12072 for (int i = 0; i < 10; ++i) {
12073 #pragma omp target parallel
12074 ++a;
12075 }
12076 #pragma omp parallel for
12077 for (int i = 0; i < 10; ++i) {
12078 #pragma omp target parallel for
12079 for (int i = 0; i < 10; ++i)
12080 ;
12081 }
12082 #pragma omp parallel for
12083 for (int i = 0; i < 10; ++i) {
12084 #pragma omp target enter data map(to: a)
12085 ++a;
12086 }
12087 #pragma omp parallel for
12088 for (int i = 0; i < 10; ++i) {
12089 #pragma omp target exit data map(from: a)
12090 ++a;
12091 }
12092 #pragma omp parallel for
12093 for (int i = 0; i < 10; ++i) {
12094 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
12095 ++a;
12096 }
12097 #pragma omp parallel for
12098 for (int i = 0; i < 10; ++i) {
12099 #pragma omp taskloop
12100 for (int i = 0; i < 10; ++i)
12101 ++a;
12102 }
12103 #pragma omp parallel for
12104 for (int i = 0; i < 10; ++i) {
12105 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
12106 for (int j = 0; j < 10; ++j)
12107 ;
12108 }
12109 #pragma omp parallel for
12110 for (int i = 0; i < 10; ++i) {
12111 #pragma omp target update to(a)
12112 a++;
12113 }
12114 #pragma omp parallel for
12115 for (int i = 0; i < 10; ++i) {
12116 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
12117 for (int j = 0; j < 10; ++j)
12118 ;
12119 }
12120 #pragma omp parallel for
12121 for (int i = 0; i < 10; ++i) {
12122 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
12123 for (int j = 0; j < 10; ++j)
12124 ;
12125 }
12126 #pragma omp parallel for
12127 for (int i = 0; i < 10; ++i) {
12128 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
12129 for (int j = 0; j < 10; ++j)
12130 ;
12131 }
12132 #pragma omp parallel for
12133 for (int i = 0; i < 10; ++i) {
12134 #pragma omp target simd // OK
12135 for (int j = 0; j < 10; ++j)
12136 ;
12137 }
12138 #pragma omp parallel for
12139 for (int i = 0; i < 10; ++i) {
12140 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
12141 for (int j = 0; j < 10; ++j)
12142 ;
12143 }
12144 #pragma omp parallel for
12145 for (int i = 0; i < 10; ++i) {
12146 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
12147 for (int j = 0; j < 10; ++j)
12148 ;
12149 }
12150 #pragma omp parallel for
12151 for (int i = 0; i < 10; ++i) {
12152 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
12153 for (int j = 0; j < 10; ++j)
12154 ;
12155 }
12156 #pragma omp parallel for
12157 for (int i = 0; i < 10; ++i) {
12158 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
12159 for (int j = 0; j < 10; ++j)
12160 ;
12161 }
12162 #pragma omp parallel for
12163 for (int i = 0; i < 10; ++i) {
12164 #pragma omp target teams // OK
12165 a++;
12166 }
12167 #pragma omp parallel for
12168 for (int i = 0; i < 10; ++i) {
12169 #pragma omp target teams distribute // OK
12170 for (int j = 0; j < 10; ++j)
12171 ;
12172 }
12173 #pragma omp parallel for
12174 for (int i = 0; i < 10; ++i) {
12175 #pragma omp target teams distribute parallel for // OK
12176 for (int j = 0; j < 10; ++j)
12177 ;
12178 }
12179 #pragma omp parallel for
12180 for (int i = 0; i < 10; ++i) {
12181 #pragma omp target teams distribute parallel for simd // OK
12182 for (int j = 0; j < 10; ++j)
12183 ;
12184 }
12185 #pragma omp parallel for
12186 for (int i = 0; i < 10; ++i) {
12187 #pragma omp target teams distribute simd // OK
12188 for (int j = 0; j < 10; ++j)
12189 ;
12190 }
12191
12192 // PARALLEL FOR SIMD DIRECTIVE
12193 #pragma omp parallel for simd
12194 for (int i = 0; i < 10; ++i) {
12195 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12196 for (int i = 0; i < 10; ++i)
12197 ;
12198 }
12199 #pragma omp parallel for simd
12200 for (int i = 0; i < 10; ++i) {
12201 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
12202 for (int i = 0; i < 10; ++i)
12203 ;
12204 }
12205 #pragma omp parallel for simd
12206 for (int i = 0; i < 10; ++i) {
12207 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12208 for (int i = 0; i < 10; ++i)
12209 ;
12210 }
12211 #pragma omp parallel for simd
12212 for (int i = 0; i < 10; ++i) {
12213 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12214 for (int i = 0; i < 10; ++i)
12215 ;
12216 }
12217 #pragma omp parallel for simd
12218 for (int i = 0; i < 10; ++i) {
12219 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12220 {
12221 bar();
12222 }
12223 }
12224 #pragma omp parallel for simd
12225 for (int i = 0; i < 10; ++i) {
12226 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12227 {
12228 bar();
12229 }
12230 }
12231 #pragma omp parallel for simd
12232 for (int i = 0; i < 10; ++i) {
12233 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12234 {
12235 bar();
12236 }
12237 }
12238
12239 #pragma omp parallel for simd
12240 for (int i = 0; i < 10; ++i) {
12241 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12242 {
12243 bar();
12244 }
12245 }
12246
12247 #pragma omp parallel for simd
12248 for (int i = 0; i < 10; ++i) {
12249 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12250 {
12251 bar();
12252 }
12253 }
12254
12255 #pragma omp parallel for simd
12256 for (int i = 0; i < 10; ++i) {
12257 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12258 {
12259 #pragma omp single
12260 {
12261 bar();
12262 }
12263 #pragma omp for
12264 for (int i = 0; i < 10; ++i)
12265 ;
12266 #pragma omp for simd
12267 for (int i = 0; i < 10; ++i)
12268 ;
12269 #pragma omp sections
12270 {
12271 bar();
12272 }
12273 }
12274 }
12275 #pragma omp parallel for simd
12276 for (int i = 0; i < 10; ++i) {
12277 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12278 for (int i = 0; i < 10; ++i)
12279 ;
12280 }
12281 #pragma omp parallel for simd
12282 for (int i = 0; i < 10; ++i) {
12283 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}
12284 for (int i = 0; i < 10; ++i)
12285 ;
12286 }
12287 #pragma omp parallel for simd
12288 for (int i = 0; i < 10; ++i) {
12289 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12290 {
12291 bar();
12292 }
12293 }
12294 #pragma omp parallel for simd
12295 for (int i = 0; i < 10; ++i) {
12296 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12297 {
12298 bar();
12299 }
12300 }
12301 #pragma omp parallel for simd
12302 for (int i = 0; i < 10; ++i) {
12303 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12304 bar();
12305 }
12306 #pragma omp parallel for simd
12307 for (int i = 0; i < 10; ++i) {
12308 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12309 bar();
12310 }
12311 #pragma omp parallel for simd
12312 for (int i = 0; i < 10; ++i) {
12313 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}
12314 bar();
12315 }
12316 #pragma omp parallel for simd
12317 for (int i = 0; i < 10; ++i) {
12318 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12319 bar();
12320 }
12321 #pragma omp parallel for simd
12322 for (int i = 0; i < 10; ++i) {
12323 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12324 bar();
12325 }
12326 #pragma omp parallel for simd
12327 for (int i = 0; i < 10; ++i) {
12328 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12329 bar();
12330 }
12331 #pragma omp parallel for simd
12332 for (int i = 0; i < 10; ++i) {
12333 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12334 bar();
12335 }
12336 #pragma omp parallel for simd
12337 for (int i = 0; i < 10; ++i) {
12338 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
12339 ++a;
12340 }
12341 #pragma omp parallel for simd
12342 for (int i = 0; i < 10; ++i) {
12343 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12344 ++a;
12345 }
12346 #pragma omp parallel for simd
12347 for (int i = 0; i < 10; ++i) {
12348 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12349 ++a;
12350 }
12351 #pragma omp parallel for simd
12352 for (int i = 0; i < 10; ++i) {
12353 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12354 for (int i = 0; i < 10; ++i)
12355 ;
12356 }
12357 #pragma omp parallel for simd
12358 for (int i = 0; i < 10; ++i) {
12359 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12360 ++a;
12361 }
12362 #pragma omp parallel for simd
12363 for (int i = 0; i < 10; ++i) {
12364 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12365 ++a;
12366 }
12367 #pragma omp parallel for simd
12368 for (int i = 0; i < 10; ++i) {
12369 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12370 ++a;
12371 }
12372 #pragma omp parallel for simd
12373 for (int i = 0; i < 10; ++i) {
12374 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12375 for (int i = 0; i < 10; ++i)
12376 ++a;
12377 }
12378 #pragma omp parallel for simd
12379 for (int i = 0; i < 10; ++i) {
12380 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12381 for (int j = 0; j < 10; ++j)
12382 ;
12383 }
12384 #pragma omp parallel for simd
12385 for (int i = 0; i < 10; ++i) {
12386 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12387 a++;
12388 }
12389 #pragma omp parallel for simd
12390 for (int i = 0; i < 10; ++i) {
12391 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12392 for (int j = 0; j < 10; ++j)
12393 ;
12394 }
12395 #pragma omp parallel for simd
12396 for (int i = 0; i < 10; ++i) {
12397 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12398 for (int j = 0; j < 10; ++j)
12399 ;
12400 }
12401 #pragma omp parallel for simd
12402 for (int i = 0; i < 10; ++i) {
12403 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12404 for (int j = 0; j < 10; ++j)
12405 ;
12406 }
12407 #pragma omp parallel for simd
12408 for (int i = 0; i < 10; ++i) {
12409 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12410 for (int j = 0; j < 10; ++j)
12411 ;
12412 }
12413 #pragma omp parallel for simd
12414 for (int i = 0; i < 10; ++i) {
12415 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12416 for (int j = 0; j < 10; ++j)
12417 ;
12418 }
12419 #pragma omp parallel for simd
12420 for (int i = 0; i < 10; ++i) {
12421 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12422 for (int j = 0; j < 10; ++j)
12423 ;
12424 }
12425 #pragma omp parallel for simd
12426 for (int i = 0; i < 10; ++i) {
12427 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12428 for (int j = 0; j < 10; ++j)
12429 ;
12430 }
12431 #pragma omp parallel for simd
12432 for (int i = 0; i < 10; ++i) {
12433 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12434 for (int j = 0; j < 10; ++j)
12435 ;
12436 }
12437 #pragma omp parallel for simd
12438 for (int i = 0; i < 10; ++i) {
12439 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12440 a++;
12441 }
12442 #pragma omp parallel for simd
12443 for (int i = 0; i < 10; ++i) {
12444 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12445 for (int j = 0; j < 10; ++j)
12446 ;
12447 }
12448 #pragma omp parallel for simd
12449 for (int i = 0; i < 10; ++i) {
12450 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12451 for (int j = 0; j < 10; ++j)
12452 ;
12453 }
12454 #pragma omp parallel for simd
12455 for (int i = 0; i < 10; ++i) {
12456 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12457 for (int j = 0; j < 10; ++j)
12458 ;
12459 }
12460 #pragma omp parallel for simd
12461 for (int i = 0; i < 10; ++i) {
12462 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
12463 for (int j = 0; j < 10; ++j)
12464 ;
12465 }
12466
12467 // PARALLEL SECTIONS DIRECTIVE
12468 #pragma omp parallel sections
12469 {
12470 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
12471 for (int i = 0; i < 10; ++i)
12472 ;
12473 }
12474 #pragma omp parallel sections
12475 {
12476 #pragma omp simd
12477 for (int i = 0; i < 10; ++i)
12478 ;
12479 }
12480 #pragma omp parallel sections
12481 {
12482 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
12483 for (int i = 0; i < 10; ++i)
12484 ;
12485 }
12486 #pragma omp parallel sections
12487 {
12488 #pragma omp parallel
12489 for (int i = 0; i < 10; ++i)
12490 ;
12491 }
12492 #pragma omp parallel sections
12493 {
12494 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
12495 {
12496 bar();
12497 }
12498 }
12499 #pragma omp parallel sections
12500 {
12501 #pragma omp section
12502 {
12503 bar();
12504 }
12505 }
12506 #pragma omp parallel sections
12507 {
12508 #pragma omp section
12509 {
12510 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
12511 bar();
12512 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
12513 bar();
12514 #pragma omp critical
12515 bar();
12516 }
12517 }
12518 #pragma omp parallel sections
12519 {
12520 #pragma omp parallel
12521 {
12522 #pragma omp single // OK
12523 {
12524 bar();
12525 }
12526 #pragma omp master // OK
12527 {
12528 bar();
12529 }
12530 #pragma omp critical // OK
12531 {
12532 bar();
12533 }
12534 #pragma omp for // OK
12535 for (int i = 0; i < 10; ++i)
12536 ;
12537 #pragma omp for simd // OK
12538 for (int i = 0; i < 10; ++i)
12539 ;
12540 #pragma omp sections // OK
12541 {
12542 bar();
12543 }
12544 }
12545 }
12546 #pragma omp parallel sections
12547 {
12548 #pragma omp parallel for
12549 for (int i = 0; i < 10; ++i)
12550 ;
12551 }
12552 #pragma omp parallel sections
12553 {
12554 #pragma omp parallel for simd
12555 for (int i = 0; i < 10; ++i)
12556 ;
12557 }
12558 #pragma omp parallel sections
12559 {
12560 #pragma omp parallel sections
12561 {
12562 bar();
12563 }
12564 }
12565 #pragma omp parallel sections
12566 {
12567 #pragma omp task
12568 {
12569 bar();
12570 }
12571 }
12572 #pragma omp parallel sections
12573 {
12574 #pragma omp taskyield
12575 }
12576 #pragma omp parallel sections
12577 {
12578 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
12579 }
12580 #pragma omp parallel sections
12581 {
12582 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
12583 }
12584 #pragma omp parallel sections
12585 {
12586 #pragma omp taskwait
12587 }
12588 #pragma omp parallel sections
12589 {
12590 #pragma omp flush
12591 }
12592 #pragma omp parallel sections
12593 {
12594 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
12595 bar();
12596 }
12597 #pragma omp parallel sections
12598 {
12599 #pragma omp atomic
12600 ++a;
12601 }
12602 #pragma omp parallel sections
12603 {
12604 #pragma omp target
12605 ++a;
12606 }
12607 #pragma omp parallel sections
12608 {
12609 #pragma omp target parallel
12610 ++a;
12611 }
12612 #pragma omp parallel sections
12613 {
12614 #pragma omp target parallel for
12615 for (int i = 0; i < 10; ++i)
12616 ;
12617 }
12618 #pragma omp parallel sections
12619 {
12620 #pragma omp target enter data map(to: a)
12621 }
12622 #pragma omp parallel sections
12623 {
12624 #pragma omp target exit data map(from: a)
12625 }
12626 #pragma omp parallel sections
12627 {
12628 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
12629 ++a;
12630 }
12631 #pragma omp parallel sections
12632 {
12633 #pragma omp taskloop
12634 for (int i = 0; i < 10; ++i)
12635 ++a;
12636 }
12637 #pragma omp parallel sections
12638 {
12639 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
12640 for (int i = 0; i < 10; ++i)
12641 ;
12642 }
12643 #pragma omp parallel sections
12644 {
12645 #pragma omp target update to(a)
12646 }
12647 #pragma omp parallel sections
12648 {
12649 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
12650 for (int i = 0; i < 10; ++i)
12651 ;
12652 }
12653 #pragma omp parallel sections
12654 {
12655 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
12656 for (int i = 0; i < 10; ++i)
12657 ;
12658 }
12659 #pragma omp parallel sections
12660 {
12661 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
12662 for (int i = 0; i < 10; ++i)
12663 ;
12664 }
12665 #pragma omp parallel sections
12666 {
12667 #pragma omp target simd // OK
12668 for (int i = 0; i < 10; ++i)
12669 ;
12670 }
12671 #pragma omp parallel sections
12672 {
12673 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
12674 for (int i = 0; i < 10; ++i)
12675 ;
12676 }
12677 #pragma omp parallel sections
12678 {
12679 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
12680 for (int i = 0; i < 10; ++i)
12681 ;
12682 }
12683 #pragma omp parallel sections
12684 {
12685 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
12686 for (int i = 0; i < 10; ++i)
12687 ;
12688 }
12689 #pragma omp parallel sections
12690 {
12691 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
12692 for (int i = 0; i < 10; ++i)
12693 ;
12694 }
12695 #pragma omp parallel sections
12696 {
12697 #pragma omp target teams // OK
12698 a++;
12699 }
12700 #pragma omp parallel sections
12701 {
12702 #pragma omp target teams distribute // OK
12703 for (int i = 0; i < 10; ++i)
12704 ;
12705 }
12706 #pragma omp parallel sections
12707 {
12708 #pragma omp target teams distribute parallel for // OK
12709 for (int i = 0; i < 10; ++i)
12710 ;
12711 }
12712 #pragma omp parallel sections
12713 {
12714 #pragma omp target teams distribute parallel for simd // OK
12715 for (int i = 0; i < 10; ++i)
12716 ;
12717 }
12718 #pragma omp parallel sections
12719 {
12720 #pragma omp target teams distribute simd // OK
12721 for (int i = 0; i < 10; ++i)
12722 ;
12723 }
12724
12725 // TASK DIRECTIVE
12726 #pragma omp task
12727 #pragma omp for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
12728 for (int i = 0; i < 10; ++i)
12729 ;
12730 #pragma omp task
12731 #pragma omp simd
12732 for (int i = 0; i < 10; ++i)
12733 ;
12734 #pragma omp task
12735 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
12736 for (int i = 0; i < 10; ++i)
12737 ;
12738 #pragma omp task
12739 #pragma omp sections // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
12740 {
12741 bar();
12742 }
12743 #pragma omp task
12744 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}
12745 {
12746 bar();
12747 }
12748 #pragma omp task
12749 #pragma omp single // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
12750 bar();
12751 #pragma omp task
12752 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}
12753 bar();
12754 #pragma omp task
12755 #pragma omp critical
12756 bar();
12757 #pragma omp task
12758 #pragma omp parallel for
12759 for (int i = 0; i < 10; ++i)
12760 ;
12761 #pragma omp task
12762 #pragma omp parallel for simd
12763 for (int i = 0; i < 10; ++i)
12764 ;
12765 #pragma omp task
12766 #pragma omp parallel sections
12767 {
12768 bar();
12769 }
12770 #pragma omp task
12771 #pragma omp task
12772 {
12773 bar();
12774 }
12775 #pragma omp task
12776 {
12777 #pragma omp taskyield
12778 bar();
12779 }
12780 #pragma omp task
12781 {
12782 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}
12783 bar();
12784 }
12785 #pragma omp task
12786 {
12787 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}}
12788 bar();
12789 }
12790 #pragma omp task
12791 {
12792 #pragma omp taskwait
12793 bar();
12794 }
12795 #pragma omp task
12796 {
12797 #pragma omp flush
12798 bar();
12799 }
12800 #pragma omp task
12801 {
12802 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
12803 bar();
12804 }
12805 #pragma omp task
12806 {
12807 #pragma omp atomic
12808 ++a;
12809 }
12810 #pragma omp task
12811 {
12812 #pragma omp target
12813 ++a;
12814 }
12815 #pragma omp task
12816 {
12817 #pragma omp target parallel
12818 ++a;
12819 }
12820 #pragma omp task
12821 #pragma omp target parallel for
12822 for (int i = 0; i < 10; ++i)
12823 ;
12824 #pragma omp task
12825 {
12826 #pragma omp target enter data map(to: a)
12827 ++a;
12828 }
12829 #pragma omp task
12830 {
12831 #pragma omp target exit data map(from: a)
12832 ++a;
12833 }
12834 #pragma omp task
12835 {
12836 #pragma omp teams // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
12837 ++a;
12838 }
12839 #pragma omp task
12840 {
12841 #pragma omp taskloop
12842 for (int i = 0; i < 10; ++i)
12843 ++a;
12844 }
12845 #pragma omp task
12846 {
12847 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
12848 for (int i = 0; i < 10; ++i)
12849 ;
12850 }
12851 #pragma omp task
12852 {
12853 #pragma omp target update to(a)
12854 a++;
12855 }
12856 #pragma omp task
12857 {
12858 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
12859 for (int i = 0; i < 10; ++i)
12860 ;
12861 }
12862 #pragma omp task
12863 {
12864 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
12865 for (int i = 0; i < 10; ++i)
12866 ;
12867 }
12868 #pragma omp task
12869 {
12870 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
12871 for (int i = 0; i < 10; ++i)
12872 ;
12873 }
12874 #pragma omp task
12875 {
12876 #pragma omp target simd // OK
12877 for (int i = 0; i < 10; ++i)
12878 ;
12879 }
12880 #pragma omp task
12881 {
12882 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
12883 for (int i = 0; i < 10; ++i)
12884 ;
12885 }
12886 #pragma omp task
12887 {
12888 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
12889 for (int i = 0; i < 10; ++i)
12890 ;
12891 }
12892 #pragma omp task
12893 {
12894 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
12895 for (int i = 0; i < 10; ++i)
12896 ;
12897 }
12898 #pragma omp task
12899 {
12900 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
12901 for (int i = 0; i < 10; ++i)
12902 ;
12903 }
12904 #pragma omp task
12905 {
12906 #pragma omp target teams // OK
12907 a++;
12908 }
12909 #pragma omp task
12910 {
12911 #pragma omp target teams distribute // OK
12912 for (int i = 0; i < 10; ++i)
12913 ;
12914 }
12915 #pragma omp task
12916 {
12917 #pragma omp target teams distribute parallel for // OK
12918 for (int i = 0; i < 10; ++i)
12919 ;
12920 }
12921 #pragma omp task
12922 {
12923 #pragma omp target teams distribute parallel for simd // OK
12924 for (int i = 0; i < 10; ++i)
12925 ;
12926 }
12927 #pragma omp task
12928 {
12929 #pragma omp target teams distribute simd // OK
12930 for (int i = 0; i < 10; ++i)
12931 ;
12932 }
12933
12934 // ATOMIC DIRECTIVE
12935 #pragma omp atomic
12936 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12937 // expected-note@+1 {{expected an expression statement}}
12938 {
12939 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12940 for (int i = 0; i < 10; ++i)
12941 ;
12942 }
12943 #pragma omp atomic
12944 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12945 // expected-note@+1 {{expected an expression statement}}
12946 {
12947 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12948 for (int i = 0; i < 10; ++i)
12949 ;
12950 }
12951 #pragma omp atomic
12952 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12953 // expected-note@+1 {{expected an expression statement}}
12954 {
12955 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12956 for (int i = 0; i < 10; ++i)
12957 ;
12958 }
12959 #pragma omp atomic
12960 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12961 // expected-note@+1 {{expected an expression statement}}
12962 {
12963 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12964 for (int i = 0; i < 10; ++i)
12965 ;
12966 }
12967 #pragma omp atomic
12968 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12969 // expected-note@+1 {{expected an expression statement}}
12970 {
12971 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12972 {
12973 bar();
12974 }
12975 }
12976 #pragma omp atomic
12977 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12978 // expected-note@+1 {{expected an expression statement}}
12979 {
12980 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12981 {
12982 bar();
12983 }
12984 }
12985 #pragma omp atomic
12986 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12987 // expected-note@+1 {{expected an expression statement}}
12988 {
12989 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12990 {
12991 bar();
12992 }
12993 }
12994 #pragma omp atomic
12995 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
12996 // expected-note@+1 {{expected an expression statement}}
12997 {
12998 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12999 {
13000 bar();
13001 }
13002 }
13003 #pragma omp atomic
13004 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13005 // expected-note@+1 {{expected an expression statement}}
13006 {
13007 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13008 {
13009 bar();
13010 }
13011 }
13012 #pragma omp atomic
13013 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13014 // expected-note@+1 {{expected an expression statement}}
13015 {
13016 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13017 for (int i = 0; i < 10; ++i)
13018 ;
13019 }
13020 #pragma omp atomic
13021 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13022 // expected-note@+1 {{expected an expression statement}}
13023 {
13024 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13025 for (int i = 0; i < 10; ++i)
13026 ;
13027 }
13028 #pragma omp atomic
13029 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13030 // expected-note@+1 {{expected an expression statement}}
13031 {
13032 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13033 {
13034 bar();
13035 }
13036 }
13037 #pragma omp atomic
13038 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13039 // expected-note@+1 {{expected an expression statement}}
13040 {
13041 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13042 {
13043 bar();
13044 }
13045 }
13046 #pragma omp atomic
13047 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13048 // expected-note@+1 {{expected an expression statement}}
13049 {
13050 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13051 bar();
13052 }
13053 #pragma omp atomic
13054 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13055 // expected-note@+1 {{expected an expression statement}}
13056 {
13057 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13058 bar();
13059 }
13060 #pragma omp atomic
13061 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13062 // expected-note@+1 {{expected an expression statement}}
13063 {
13064 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13065 bar();
13066 }
13067 #pragma omp atomic
13068 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13069 // expected-note@+1 {{expected an expression statement}}
13070 {
13071 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13072 bar();
13073 }
13074 #pragma omp atomic
13075 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13076 // expected-note@+1 {{expected an expression statement}}
13077 {
13078 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13079 bar();
13080 }
13081 #pragma omp atomic
13082 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13083 // expected-note@+1 {{expected an expression statement}}
13084 {
13085 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13086 bar();
13087 }
13088 #pragma omp atomic
13089 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13090 // expected-note@+1 {{expected an expression statement}}
13091 {
13092 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13093 ++a;
13094 }
13095 #pragma omp atomic
13096 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13097 // expected-note@+1 {{expected an expression statement}}
13098 {
13099 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13100 ++a;
13101 }
13102 #pragma omp atomic
13103 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13104 // expected-note@+1 {{expected an expression statement}}
13105 {
13106 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13107 ++a;
13108 }
13109 #pragma omp atomic
13110 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13111 // expected-note@+1 {{expected an expression statement}}
13112 {
13113 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13114 for (int i = 0; i < 10; ++i)
13115 ;
13116 }
13117 #pragma omp atomic
13118 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13119 // expected-note@+1 {{expected an expression statement}}
13120 {
13121 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13122 ++a;
13123 }
13124 #pragma omp atomic
13125 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13126 // expected-note@+1 {{expected an expression statement}}
13127 {
13128 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13129 ++a;
13130 }
13131 #pragma omp atomic
13132 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13133 // expected-note@+1 {{expected an expression statement}}
13134 {
13135 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13136 ++a;
13137 }
13138 #pragma omp atomic
13139 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13140 // expected-note@+1 {{expected an expression statement}}
13141 {
13142 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13143 for (int i = 0; i < 10; ++i)
13144 ++a;
13145 }
13146 #pragma omp atomic
13147 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13148 // expected-note@+1 {{expected an expression statement}}
13149 {
13150 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13151 for (int i = 0; i < 10; ++i)
13152 ;
13153 }
13154 #pragma omp atomic
13155 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13156 // expected-note@+1 {{expected an expression statement}}
13157 {
13158 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13159 }
13160 #pragma omp atomic
13161 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13162 // expected-note@+1 {{expected an expression statement}}
13163 {
13164 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13165 for (int i = 0; i < 10; ++i)
13166 ;
13167 }
13168 #pragma omp atomic
13169 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13170 // expected-note@+1 {{expected an expression statement}}
13171 {
13172 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13173 for (int i = 0; i < 10; ++i)
13174 ;
13175 }
13176 #pragma omp atomic
13177 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13178 // expected-note@+1 {{expected an expression statement}}
13179 {
13180 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13181 for (int i = 0; i < 10; ++i)
13182 ;
13183 }
13184 #pragma omp atomic
13185 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13186 // expected-note@+1 {{expected an expression statement}}
13187 {
13188 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13189 for (int i = 0; i < 10; ++i)
13190 ;
13191 }
13192 #pragma omp atomic
13193 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13194 // expected-note@+1 {{expected an expression statement}}
13195 {
13196 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13197 for (int i = 0; i < 10; ++i)
13198 ;
13199 }
13200 #pragma omp atomic
13201 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13202 // expected-note@+1 {{expected an expression statement}}
13203 {
13204 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13205 for (int i = 0; i < 10; ++i)
13206 ;
13207 }
13208 #pragma omp atomic
13209 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13210 // expected-note@+1 {{expected an expression statement}}
13211 {
13212 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13213 for (int i = 0; i < 10; ++i)
13214 ;
13215 }
13216 #pragma omp atomic
13217 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13218 // expected-note@+1 {{expected an expression statement}}
13219 {
13220 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13221 for (int i = 0; i < 10; ++i)
13222 ;
13223 }
13224 #pragma omp atomic
13225 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13226 // expected-note@+1 {{expected an expression statement}}
13227 {
13228 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13229 a++;
13230 }
13231 #pragma omp atomic
13232 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13233 // expected-note@+1 {{expected an expression statement}}
13234 {
13235 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13236 for (int i = 0; i < 10; ++i)
13237 ;
13238 }
13239 #pragma omp atomic
13240 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13241 // expected-note@+1 {{expected an expression statement}}
13242 {
13243 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13244 for (int i = 0; i < 10; ++i)
13245 ;
13246 }
13247 #pragma omp atomic
13248 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13249 // expected-note@+1 {{expected an expression statement}}
13250 {
13251 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13252 for (int i = 0; i < 10; ++i)
13253 ;
13254 }
13255 #pragma omp atomic
13256 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13257 // expected-note@+1 {{expected an expression statement}}
13258 {
13259 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13260 for (int i = 0; i < 10; ++i)
13261 ;
13262 }
13263
13264 // TARGET DIRECTIVE
13265 #pragma omp target
13266 #pragma omp parallel
13267 bar();
13268 #pragma omp target
13269 #pragma omp for
13270 for (int i = 0; i < 10; ++i)
13271 ;
13272 #pragma omp target
13273 #pragma omp simd
13274 for (int i = 0; i < 10; ++i)
13275 ;
13276 #pragma omp target
13277 #pragma omp for simd
13278 for (int i = 0; i < 10; ++i)
13279 ;
13280 #pragma omp target
13281 #pragma omp sections
13282 {
13283 bar();
13284 }
13285 #pragma omp target
13286 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}
13287 {
13288 bar();
13289 }
13290 #pragma omp target
13291 #pragma omp single
13292 bar();
13293
13294 #pragma omp target
13295 #pragma omp master
13296 {
13297 bar();
13298 }
13299 #pragma omp target
13300 #pragma omp critical
13301 {
13302 bar();
13303 }
13304 #pragma omp target
13305 #pragma omp parallel for
13306 for (int i = 0; i < 10; ++i)
13307 ;
13308 #pragma omp target
13309 #pragma omp parallel for simd
13310 for (int i = 0; i < 10; ++i)
13311 ;
13312 #pragma omp target
13313 #pragma omp parallel sections
13314 {
13315 bar();
13316 }
13317 #pragma omp target
13318 #pragma omp task
13319 {
13320 bar();
13321 }
13322 #pragma omp target
13323 {
13324 #pragma omp taskyield
13325 bar();
13326 }
13327 #pragma omp target
13328 {
13329 #pragma omp barrier
13330 bar();
13331 }
13332 #pragma omp target
13333 {
13334 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
13335 bar();
13336 }
13337 #pragma omp target
13338 {
13339 #pragma omp taskwait
13340 bar();
13341 }
13342 #pragma omp target
13343 {
13344 #pragma omp flush
13345 bar();
13346 }
13347 #pragma omp target
13348 {
13349 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
13350 bar();
13351 }
13352 #pragma omp target
13353 {
13354 #pragma omp atomic
13355 ++a;
13356 }
13357 #pragma omp target
13358 {
13359 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
13360 ++a;
13361 }
13362 #pragma omp target
13363 {
13364 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
13365 ++a;
13366 }
13367 #pragma omp target
13368 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
13369 for (int i = 0; i < 10; ++i)
13370 ;
13371 #pragma omp target
13372 {
13373 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
13374 }
13375 #pragma omp target
13376 {
13377 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
13378 }
13379 #pragma omp target
13380 {
13381 #pragma omp teams
13382 ++a;
13383 }
13384 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
13385 {
13386 #pragma omp teams // expected-note {{directive outside teams construct here}}
13387 ++a;
13388 #pragma omp teams // expected-note {{nested teams construct here}}
13389 ++a;
13390 }
13391 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
13392 {
13393 ++a; // expected-note {{statement outside teams construct here}}
13394 #pragma omp teams // expected-note {{nested teams construct here}}
13395 ++a;
13396 }
13397 #pragma omp target
13398 {
13399 #pragma omp taskloop
13400 for (int i = 0; i < 10; ++i)
13401 ++a;
13402 }
13403 #pragma omp target
13404 {
13405 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
13406 for (int i = 0; i < 10; ++i)
13407 ;
13408 }
13409 #pragma omp atomic
13410 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}}
13411 // expected-note@+1 {{expected an expression statement}}
13412 {
13413 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
13414 a++;
13415 }
13416 #pragma omp target
13417 {
13418 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
13419 for (int i = 0; i < 10; ++i)
13420 ;
13421 }
13422 #pragma omp target
13423 {
13424 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
13425 for (int i = 0; i < 10; ++i)
13426 ;
13427 }
13428 #pragma omp target
13429 {
13430 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
13431 for (int i = 0; i < 10; ++i)
13432 ;
13433 }
13434 #pragma omp target
13435 {
13436 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
13437 for (int i = 0; i < 10; ++i)
13438 ;
13439 }
13440 #pragma omp target
13441 {
13442 #pragma omp teams distribute // OK
13443 for (int i = 0; i < 10; ++i)
13444 ;
13445 }
13446 #pragma omp target
13447 {
13448 #pragma omp teams distribute simd // OK
13449 for (int i = 0; i < 10; ++i)
13450 ;
13451 }
13452 #pragma omp target
13453 {
13454 #pragma omp teams distribute parallel for simd // OK
13455 for (int i = 0; i < 10; ++i)
13456 ;
13457 }
13458 #pragma omp target
13459 {
13460 #pragma omp teams distribute parallel for // OK
13461 for (int i = 0; i < 10; ++i)
13462 ;
13463 }
13464 #pragma omp target
13465 {
13466 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
13467 a++;
13468 }
13469 #pragma omp target
13470 {
13471 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
13472 for (int i = 0; i < 10; ++i)
13473 ;
13474 }
13475 #pragma omp target
13476 {
13477 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
13478 for (int i = 0; i < 10; ++i)
13479 ;
13480 }
13481 #pragma omp target
13482 {
13483 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
13484 for (int i = 0; i < 10; ++i)
13485 ;
13486 }
13487 #pragma omp target
13488 {
13489 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
13490 for (int i = 0; i < 10; ++i)
13491 ;
13492 }
13493
13494 // TARGET PARALLEL DIRECTIVE
13495 #pragma omp target parallel
13496 #pragma omp parallel
13497 bar();
13498 #pragma omp target parallel
13499 #pragma omp for
13500 for (int i = 0; i < 10; ++i)
13501 ;
13502 #pragma omp target parallel
13503 #pragma omp simd
13504 for (int i = 0; i < 10; ++i)
13505 ;
13506 #pragma omp target parallel
13507 #pragma omp for simd
13508 for (int i = 0; i < 10; ++i)
13509 ;
13510 #pragma omp target parallel
13511 #pragma omp sections
13512 {
13513 bar();
13514 }
13515 #pragma omp target parallel
13516 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
13517 {
13518 bar();
13519 }
13520 #pragma omp target parallel
13521 #pragma omp single
13522 bar();
13523
13524 #pragma omp target parallel
13525 #pragma omp master
13526 {
13527 bar();
13528 }
13529 #pragma omp target parallel
13530 #pragma omp critical
13531 {
13532 bar();
13533 }
13534 #pragma omp target parallel
13535 #pragma omp parallel for
13536 for (int i = 0; i < 10; ++i)
13537 ;
13538 #pragma omp target parallel
13539 #pragma omp parallel for simd
13540 for (int i = 0; i < 10; ++i)
13541 ;
13542 #pragma omp target parallel
13543 #pragma omp parallel sections
13544 {
13545 bar();
13546 }
13547 #pragma omp target parallel
13548 #pragma omp task
13549 {
13550 bar();
13551 }
13552 #pragma omp target parallel
13553 {
13554 #pragma omp taskyield
13555 bar();
13556 }
13557 #pragma omp target parallel
13558 {
13559 #pragma omp barrier
13560 bar();
13561 }
13562 #pragma omp target parallel
13563 {
13564 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
13565 bar();
13566 }
13567 #pragma omp target parallel
13568 {
13569 #pragma omp taskwait
13570 bar();
13571 }
13572 #pragma omp target parallel
13573 {
13574 #pragma omp flush
13575 bar();
13576 }
13577 #pragma omp target parallel
13578 {
13579 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
13580 bar();
13581 }
13582 #pragma omp target parallel
13583 {
13584 #pragma omp atomic
13585 ++a;
13586 }
13587 #pragma omp target parallel
13588 {
13589 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}
13590 ++a;
13591 }
13592 #pragma omp target parallel
13593 {
13594 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}
13595 ++a;
13596 }
13597 #pragma omp target parallel
13598 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
13599 for (int i = 0; i < 10; ++i)
13600 ;
13601 #pragma omp target parallel
13602 {
13603 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
13604 ++a;
13605 }
13606 #pragma omp target parallel
13607 {
13608 ++a;
13609 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
13610 ++a;
13611 }
13612 #pragma omp target parallel
13613 {
13614 #pragma omp taskloop
13615 for (int i = 0; i < 10; ++i)
13616 ++a;
13617 }
13618 #pragma omp target parallel
13619 {
13620 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
13621 for (int i = 0; i < 10; ++i)
13622 ;
13623 }
13624 #pragma omp target parallel
13625 {
13626 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
13627 }
13628 #pragma omp target parallel
13629 {
13630 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
13631 }
13632 #pragma omp target parallel
13633 {
13634 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}
13635 }
13636 #pragma omp target parallel
13637 {
13638 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
13639 for (int i = 0; i < 10; ++i)
13640 ;
13641 }
13642 #pragma omp target parallel
13643 {
13644 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
13645 for (int i = 0; i < 10; ++i)
13646 ;
13647 }
13648 #pragma omp target parallel
13649 {
13650 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
13651 for (int i = 0; i < 10; ++i)
13652 ;
13653 }
13654 #pragma omp target parallel
13655 {
13656 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}}
13657 for (int i = 0; i < 10; ++i)
13658 ;
13659 }
13660 #pragma omp target parallel
13661 {
13662 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
13663 for (int i = 0; i < 10; ++i)
13664 ;
13665 }
13666 #pragma omp target parallel
13667 {
13668 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
13669 for (int i = 0; i < 10; ++i)
13670 ;
13671 }
13672 #pragma omp target parallel
13673 {
13674 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
13675 for (int i = 0; i < 10; ++i)
13676 ;
13677 }
13678 #pragma omp target parallel
13679 {
13680 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
13681 for (int i = 0; i < 10; ++i)
13682 ;
13683 }
13684 #pragma omp target parallel
13685 {
13686 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}
13687 a++;
13688 }
13689 #pragma omp target parallel
13690 {
13691 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}
13692 for (int i = 0; i < 10; ++i)
13693 ;
13694 }
13695 #pragma omp target parallel
13696 {
13697 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
13698 for (int i = 0; i < 10; ++i)
13699 ;
13700 }
13701 #pragma omp target parallel
13702 {
13703 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}
13704 for (int i = 0; i < 10; ++i)
13705 ;
13706 }
13707 #pragma omp target parallel
13708 {
13709 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}
13710 for (int i = 0; i < 10; ++i)
13711 ;
13712 }
13713
13714 // TARGET PARALLEL FOR DIRECTIVE
13715 #pragma omp target parallel for
13716 for (int i = 0; i < 10; ++i) {
13717 #pragma omp for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
13718 for (int i = 0; i < 10; ++i)
13719 ;
13720 }
13721 #pragma omp target parallel for
13722 for (int i = 0; i < 10; ++i) {
13723 #pragma omp simd
13724 for (int i = 0; i < 10; ++i)
13725 ;
13726 }
13727 #pragma omp target parallel for
13728 for (int i = 0; i < 10; ++i) {
13729 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
13730 for (int i = 0; i < 10; ++i)
13731 ;
13732 }
13733 #pragma omp target parallel for
13734 for (int i = 0; i < 10; ++i) {
13735 #pragma omp parallel
13736 for (int i = 0; i < 10; ++i)
13737 ;
13738 }
13739 #pragma omp target parallel for
13740 for (int i = 0; i < 10; ++i) {
13741 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
13742 {
13743 bar();
13744 }
13745 }
13746 #pragma omp target parallel for
13747 for (int i = 0; i < 10; ++i) {
13748 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}
13749 {
13750 bar();
13751 }
13752 }
13753 #pragma omp target parallel for
13754 for (int i = 0; i < 10; ++i) {
13755 #pragma omp single // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
13756 {
13757 bar();
13758 }
13759 }
13760
13761 #pragma omp target parallel for
13762 for (int i = 0; i < 10; ++i) {
13763 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13764 {
13765 bar();
13766 }
13767 }
13768
13769 #pragma omp target parallel for
13770 for (int i = 0; i < 10; ++i) {
13771 #pragma omp critical
13772 {
13773 bar();
13774 }
13775 }
13776
13777 #pragma omp target parallel for
13778 for (int i = 0; i < 10; ++i) {
13779 #pragma omp parallel
13780 {
13781 #pragma omp single // OK
13782 {
13783 bar();
13784 }
13785 #pragma omp for // OK
13786 for (int i = 0; i < 10; ++i)
13787 ;
13788 #pragma omp for simd // OK
13789 for (int i = 0; i < 10; ++i)
13790 ;
13791 #pragma omp sections // OK
13792 {
13793 bar();
13794 }
13795 }
13796 }
13797 #pragma omp target parallel for
13798 for (int i = 0; i < 10; ++i) {
13799 #pragma omp parallel for
13800 for (int i = 0; i < 10; ++i)
13801 ;
13802 }
13803 #pragma omp target parallel for
13804 for (int i = 0; i < 10; ++i) {
13805 #pragma omp parallel for simd
13806 for (int i = 0; i < 10; ++i)
13807 ;
13808 }
13809 #pragma omp target parallel for
13810 for (int i = 0; i < 10; ++i) {
13811 #pragma omp parallel sections
13812 {
13813 bar();
13814 }
13815 }
13816 #pragma omp target parallel for
13817 for (int i = 0; i < 10; ++i) {
13818 #pragma omp task
13819 {
13820 bar();
13821 }
13822 }
13823 #pragma omp target parallel for
13824 for (int i = 0; i < 10; ++i) {
13825 #pragma omp taskyield
13826 bar();
13827 }
13828 #pragma omp target parallel for
13829 for (int i = 0; i < 10; ++i) {
13830 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13831 bar();
13832 }
13833 #pragma omp target parallel for
13834 for (int i = 0; i < 10; ++i) {
13835 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13836 bar();
13837 }
13838 #pragma omp target parallel for
13839 for (int i = 0; i < 10; ++i) {
13840 #pragma omp taskwait
13841 bar();
13842 }
13843 #pragma omp target parallel for
13844 for (int i = 0; i < 10; ++i) {
13845 #pragma omp flush
13846 bar();
13847 }
13848 #pragma omp target parallel for
13849 for (int i = 0; i < 10; ++i) {
13850 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
13851 bar();
13852 }
13853 #pragma omp target parallel for ordered
13854 for (int i = 0; i < 10; ++i) {
13855 #pragma omp ordered // OK
13856 bar();
13857 }
13858 #pragma omp target parallel for
13859 for (int i = 0; i < 10; ++i) {
13860 #pragma omp atomic
13861 ++a;
13862 }
13863 #pragma omp target parallel for
13864 for (int i = 0; i < 10; ++i) {
13865 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}
13866 ++a;
13867 }
13868 #pragma omp target parallel for
13869 for (int i = 0; i < 10; ++i) {
13870 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}
13871 ++a;
13872 }
13873 #pragma omp target parallel for
13874 for (int i = 0; i < 10; ++i) {
13875 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
13876 for (int i = 0; i < 10; ++i)
13877 ;
13878 }
13879 #pragma omp target parallel for
13880 for (int i = 0; i < 10; ++i) {
13881 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13882 ++a;
13883 }
13884 #pragma omp target parallel for
13885 for (int i = 0; i < 10; ++i) {
13886 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13887 ++a;
13888 }
13889 #pragma omp target parallel for
13890 for (int i = 0; i < 10; ++i) {
13891 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
13892 ++a;
13893 }
13894 #pragma omp target parallel for
13895 for (int i = 0; i < 10; ++i) {
13896 #pragma omp taskloop
13897 for (int i = 0; i < 10; ++i)
13898 ++a;
13899 }
13900 #pragma omp target parallel for
13901 for (int i = 0; i < 10; ++i) {
13902 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
13903 for (int j = 0; j < 10; ++j)
13904 ;
13905 }
13906 #pragma omp target parallel for
13907 for (int i = 0; i < 10; ++i) {
13908 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13909 a++;
13910 }
13911 #pragma omp target parallel for
13912 for (int i = 0; i < 10; ++i) {
13913 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
13914 for (int j = 0; j < 10; ++j)
13915 ;
13916 }
13917 #pragma omp target parallel for
13918 for (int i = 0; i < 10; ++i) {
13919 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
13920 for (int j = 0; j < 10; ++j)
13921 ;
13922 }
13923 #pragma omp target parallel for
13924 for (int i = 0; i < 10; ++i) {
13925 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
13926 for (int j = 0; j < 10; ++j)
13927 ;
13928 }
13929 #pragma omp target parallel for
13930 for (int i = 0; i < 10; ++i) {
13931 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13932 for (int j = 0; j < 10; ++j)
13933 ;
13934 }
13935 #pragma omp target parallel for
13936 for (int i = 0; i < 10; ++i) {
13937 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
13938 for (int j = 0; j < 10; ++j)
13939 ;
13940 }
13941 #pragma omp target parallel for
13942 for (int i = 0; i < 10; ++i) {
13943 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
13944 for (int j = 0; j < 10; ++j)
13945 ;
13946 }
13947 #pragma omp target parallel for
13948 for (int i = 0; i < 10; ++i) {
13949 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
13950 for (int j = 0; j < 10; ++j)
13951 ;
13952 }
13953 #pragma omp target parallel for
13954 for (int i = 0; i < 10; ++i) {
13955 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
13956 for (int j = 0; j < 10; ++j)
13957 ;
13958 }
13959 #pragma omp target parallel for
13960 for (int i = 0; i < 10; ++i) {
13961 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}
13962 a++;
13963 }
13964 #pragma omp target parallel for
13965 for (int i = 0; i < 10; ++i) {
13966 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}
13967 for (int j = 0; j < 10; ++j)
13968 ;
13969 }
13970 #pragma omp target parallel for
13971 for (int i = 0; i < 10; ++i) {
13972 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
13973 for (int j = 0; j < 10; ++j)
13974 ;
13975 }
13976 #pragma omp target parallel for
13977 for (int i = 0; i < 10; ++i) {
13978 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13979 for (int j = 0; j < 10; ++j)
13980 ;
13981 }
13982 #pragma omp target parallel for
13983 for (int i = 0; i < 10; ++i) {
13984 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13985 for (int j = 0; j < 10; ++j)
13986 ;
13987 }
13988
13989 // TEAMS DIRECTIVE
13990 #pragma omp target
13991 #pragma omp teams
13992 #pragma omp parallel
13993 bar();
13994 #pragma omp target
13995 #pragma omp teams
13996 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
13997 for (int i = 0; i < 10; ++i)
13998 ;
13999 #pragma omp target
14000 #pragma omp teams
14001 #pragma omp simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}}
14002 for (int i = 0; i < 10; ++i)
14003 ;
14004 #pragma omp target
14005 #pragma omp teams
14006 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
14007 for (int i = 0; i < 10; ++i)
14008 ;
14009 #pragma omp target
14010 #pragma omp teams
14011 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
14012 {
14013 bar();
14014 }
14015 #pragma omp target
14016 #pragma omp teams
14017 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}
14018 {
14019 bar();
14020 }
14021 #pragma omp target
14022 #pragma omp teams
14023 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
14024 bar();
14025
14026 #pragma omp target
14027 #pragma omp teams
14028 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}}
14029 {
14030 bar();
14031 }
14032 #pragma omp target
14033 #pragma omp teams
14034 #pragma omp critical // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}}
14035 {
14036 bar();
14037 }
14038 #pragma omp target
14039 #pragma omp teams
14040 #pragma omp parallel for
14041 for (int i = 0; i < 10; ++i)
14042 ;
14043 #pragma omp target
14044 #pragma omp teams
14045 #pragma omp parallel for simd
14046 for (int i = 0; i < 10; ++i)
14047 ;
14048 #pragma omp target
14049 #pragma omp teams
14050 #pragma omp parallel sections
14051 {
14052 bar();
14053 }
14054 #pragma omp target
14055 #pragma omp teams
14056 #pragma omp task // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}}
14057 {
14058 bar();
14059 }
14060 #pragma omp target
14061 #pragma omp teams
14062 {
14063 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}}
14064 bar();
14065 }
14066 #pragma omp target
14067 #pragma omp teams
14068 {
14069 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}}
14070 bar();
14071 }
14072 #pragma omp target
14073 #pragma omp teams
14074 {
14075 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
14076 bar();
14077 }
14078 #pragma omp target
14079 #pragma omp teams
14080 {
14081 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}}
14082 bar();
14083 }
14084 #pragma omp target
14085 #pragma omp teams
14086 {
14087 #pragma omp flush // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}}
14088 bar();
14089 }
14090 #pragma omp target
14091 #pragma omp teams
14092 {
14093 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
14094 bar();
14095 }
14096 #pragma omp target
14097 #pragma omp teams
14098 {
14099 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}
14100 ++a;
14101 }
14102 #pragma omp target
14103 #pragma omp teams
14104 {
14105 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
14106 ++a;
14107 }
14108 #pragma omp target
14109 #pragma omp teams
14110 {
14111 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
14112 ++a;
14113 }
14114 #pragma omp target
14115 #pragma omp teams
14116 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14117 for (int i = 0; i < 10; ++i)
14118 ;
14119 #pragma omp target
14120 #pragma omp teams
14121 {
14122 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
14123 }
14124 #pragma omp target
14125 #pragma omp teams
14126 {
14127 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
14128 }
14129 #pragma omp target
14130 #pragma omp teams
14131 {
14132 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
14133 ++a;
14134 }
14135 #pragma omp target
14136 #pragma omp teams
14137 {
14138 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}}
14139 for (int i = 0; i < 10; ++i)
14140 ++a;
14141 }
14142 #pragma omp target
14143 #pragma omp teams
14144 #pragma omp distribute
14145 for (int i = 0; i < 10; ++i)
14146 ;
14147 #pragma omp target
14148 #pragma omp teams
14149 #pragma omp distribute
14150 for (int i = 0; i < 10; ++i)
14151 ;
14152 #pragma omp distribute
14153 for (int j = 0; j < 10; ++j)
14154 ;
14155 #pragma omp target
14156 #pragma omp teams
14157 {
14158 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
14159 ++a;
14160 }
14161 #pragma omp target
14162 #pragma omp teams
14163 #pragma omp distribute parallel for
14164 for (int i = 0; i < 10; ++i)
14165 ;
14166 #pragma omp target
14167 #pragma omp teams
14168 {
14169 #pragma omp distribute parallel for
14170 for (int i = 0; i < 10; ++i)
14171 ;
14172 #pragma omp distribute parallel for
14173 for (int j = 0; j < 10; ++j)
14174 ;
14175 }
14176 #pragma omp target
14177 #pragma omp teams
14178 {
14179 #pragma omp distribute parallel for simd
14180 for (int i = 0; i < 10; ++i)
14181 ;
14182 #pragma omp distribute parallel for simd
14183 for (int j = 0; j < 10; ++j)
14184 ;
14185 }
14186 #pragma omp target
14187 #pragma omp teams
14188 {
14189 #pragma omp distribute simd
14190 for (int i = 0; i < 10; ++i)
14191 ;
14192 #pragma omp distribute simd
14193 for (int j = 0; j < 10; ++j)
14194 ;
14195 }
14196 #pragma omp target
14197 #pragma omp teams
14198 {
14199 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
14200 for (int i = 0; i < 10; ++i)
14201 ;
14202 }
14203 #pragma omp target
14204 #pragma omp teams
14205 {
14206 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
14207 for (int i = 0; i < 10; ++i)
14208 ;
14209 }
14210 #pragma omp target
14211 #pragma omp teams
14212 {
14213 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
14214 for (int i = 0; i < 10; ++i)
14215 ;
14216 }
14217 #pragma omp target
14218 #pragma omp teams
14219 {
14220 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
14221 for (int i = 0; i < 10; ++i)
14222 ;
14223 }
14224 #pragma omp target
14225 #pragma omp teams
14226 {
14227 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
14228 for (int i = 0; i < 10; ++i)
14229 ;
14230 }
14231 #pragma omp target
14232 #pragma omp teams
14233 {
14234 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
14235 a++;
14236 }
14237 #pragma omp target
14238 #pragma omp teams
14239 {
14240 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
14241 for (int i = 0; i < 10; ++i)
14242 ;
14243 }
14244 #pragma omp target
14245 #pragma omp teams
14246 {
14247 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
14248 for (int i = 0; i < 10; ++i)
14249 ;
14250 }
14251 #pragma omp target
14252 #pragma omp teams
14253 {
14254 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14255 for (int i = 0; i < 10; ++i)
14256 ;
14257 }
14258 #pragma omp target
14259 #pragma omp teams
14260 {
14261 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
14262 for (int i = 0; i < 10; ++i)
14263 ;
14264 }
14265
14266 // TASKLOOP DIRECTIVE
14267 #pragma omp taskloop
14268 for (int i = 0; i < 10; ++i) {
14269 #pragma omp for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
14270 for (int i = 0; i < 10; ++i)
14271 ;
14272 }
14273 #pragma omp taskloop
14274 for (int i = 0; i < 10; ++i) {
14275 #pragma omp simd
14276 for (int i = 0; i < 10; ++i)
14277 ;
14278 }
14279 #pragma omp taskloop
14280 for (int i = 0; i < 10; ++i) {
14281 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
14282 for (int i = 0; i < 10; ++i)
14283 ;
14284 }
14285 #pragma omp taskloop
14286 for (int i = 0; i < 10; ++i) {
14287 #pragma omp parallel
14288 for (int i = 0; i < 10; ++i)
14289 ;
14290 }
14291 #pragma omp taskloop
14292 for (int i = 0; i < 10; ++i) {
14293 #pragma omp sections // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
14294 {
14295 bar();
14296 }
14297 }
14298 #pragma omp taskloop
14299 for (int i = 0; i < 10; ++i) {
14300 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}
14301 {
14302 bar();
14303 }
14304 }
14305 #pragma omp taskloop
14306 for (int i = 0; i < 10; ++i) {
14307 #pragma omp single // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
14308 {
14309 bar();
14310 }
14311 }
14312
14313 #pragma omp taskloop
14314 for (int i = 0; i < 10; ++i) {
14315 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}
14316 {
14317 bar();
14318 }
14319 }
14320 #pragma omp taskloop
14321 for (int i = 0; i < 10; ++i) {
14322 #pragma omp critical
14323 {
14324 bar();
14325 }
14326 }
14327 #pragma omp taskloop
14328 for (int i = 0; i < 10; ++i) {
14329 #pragma omp parallel
14330 {
14331 #pragma omp single // OK
14332 {
14333 bar();
14334 }
14335 #pragma omp for // OK
14336 for (int i = 0; i < 10; ++i)
14337 ;
14338 #pragma omp sections // OK
14339 {
14340 bar();
14341 }
14342 }
14343 }
14344 #pragma omp taskloop
14345 for (int i = 0; i < 10; ++i) {
14346 #pragma omp parallel for
14347 for (int i = 0; i < 10; ++i)
14348 ;
14349 }
14350 #pragma omp taskloop
14351 for (int i = 0; i < 10; ++i) {
14352 #pragma omp parallel for simd
14353 for (int i = 0; i < 10; ++i)
14354 ;
14355 }
14356 #pragma omp taskloop
14357 for (int i = 0; i < 10; ++i) {
14358 #pragma omp parallel sections
14359 {
14360 bar();
14361 }
14362 }
14363 #pragma omp taskloop
14364 for (int i = 0; i < 10; ++i) {
14365 #pragma omp task
14366 {
14367 bar();
14368 }
14369 }
14370 #pragma omp taskloop
14371 for (int i = 0; i < 10; ++i) {
14372 #pragma omp taskyield
14373 bar();
14374 }
14375 #pragma omp taskloop
14376 for (int i = 0; i < 10; ++i) {
14377 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}
14378 bar();
14379 }
14380 #pragma omp taskloop
14381 for (int i = 0; i < 10; ++i) {
14382 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}}
14383 bar();
14384 }
14385 #pragma omp taskloop
14386 for (int i = 0; i < 10; ++i) {
14387 #pragma omp taskwait
14388 bar();
14389 }
14390 #pragma omp taskloop
14391 for (int i = 0; i < 10; ++i) {
14392 #pragma omp flush
14393 bar();
14394 }
14395 #pragma omp taskloop
14396 for (int i = 0; i < 10; ++i) {
14397 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
14398 bar();
14399 }
14400 #pragma omp taskloop
14401 for (int i = 0; i < 10; ++i) {
14402 #pragma omp atomic
14403 ++a;
14404 }
14405 #pragma omp taskloop
14406 for (int i = 0; i < 10; ++i) {
14407 #pragma omp target
14408 ++a;
14409 }
14410 #pragma omp taskloop
14411 for (int i = 0; i < 10; ++i) {
14412 #pragma omp target parallel
14413 ++a;
14414 }
14415 #pragma omp taskloop
14416 for (int i = 0; i < 10; ++i) {
14417 #pragma omp target parallel for
14418 for (int i = 0; i < 10; ++i)
14419 ;
14420 }
14421 #pragma omp taskloop
14422 for (int i = 0; i < 10; ++i) {
14423 #pragma omp target enter data map(to: a)
14424 ++a;
14425 }
14426 #pragma omp taskloop
14427 for (int i = 0; i < 10; ++i) {
14428 #pragma omp target exit data map(from: a)
14429 ++a;
14430 }
14431 #pragma omp taskloop
14432 for (int i = 0; i < 10; ++i) {
14433 #pragma omp teams // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
14434 ++a;
14435 }
14436 #pragma omp taskloop
14437 for (int i = 0; i < 10; ++i) {
14438 #pragma omp taskloop
14439 for (int i = 0; i < 10; ++i)
14440 ++a;
14441 }
14442 #pragma omp taskloop
14443 for (int i = 0; i < 10; ++i) {
14444 #pragma omp target update to(a)
14445 ++a;
14446 }
14447 #pragma omp taskloop
14448 for (int i = 0; i < 10; ++i) {
14449 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
14450 for (int i = 0; i < 10; ++i)
14451 ;
14452 }
14453 #pragma omp taskloop
14454 for (int i = 0; i < 10; ++i) {
14455 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
14456 for (int i = 0; i < 10; ++i)
14457 ;
14458 }
14459 #pragma omp taskloop
14460 for (int i = 0; i < 10; ++i) {
14461 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
14462 for (int i = 0; i < 10; ++i)
14463 ;
14464 }
14465 #pragma omp taskloop
14466 for (int i = 0; i < 10; ++i) {
14467 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
14468 for (int i = 0; i < 10; ++i)
14469 ;
14470 }
14471 #pragma omp taskloop
14472 for (int i = 0; i < 10; ++i) {
14473 #pragma omp target simd // OK
14474 for (int i = 0; i < 10; ++i)
14475 ;
14476 }
14477 #pragma omp taskloop
14478 for (int i = 0; i < 10; ++i) {
14479 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
14480 for (int i = 0; i < 10; ++i)
14481 ;
14482 }
14483 #pragma omp taskloop
14484 for (int i = 0; i < 10; ++i) {
14485 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
14486 for (int i = 0; i < 10; ++i)
14487 ;
14488 }
14489 #pragma omp taskloop
14490 for (int i = 0; i < 10; ++i) {
14491 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
14492 for (int i = 0; i < 10; ++i)
14493 ;
14494 }
14495 #pragma omp taskloop
14496 for (int i = 0; i < 10; ++i) {
14497 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
14498 for (int i = 0; i < 10; ++i)
14499 ;
14500 }
14501 #pragma omp taskloop
14502 for (int i = 0; i < 10; ++i) {
14503 #pragma omp target teams // OK
14504 a++;
14505 }
14506 #pragma omp taskloop
14507 for (int i = 0; i < 10; ++i) {
14508 #pragma omp target teams distribute // OK
14509 for (int i = 0; i < 10; ++i)
14510 ;
14511 }
14512 #pragma omp taskloop
14513 for (int i = 0; i < 10; ++i) {
14514 #pragma omp target teams distribute parallel for // OK
14515 for (int i = 0; i < 10; ++i)
14516 ;
14517 }
14518 #pragma omp taskloop
14519 for (int i = 0; i < 10; ++i) {
14520 #pragma omp target teams distribute parallel for simd // OK
14521 for (int i = 0; i < 10; ++i)
14522 ;
14523 }
14524 #pragma omp taskloop
14525 for (int i = 0; i < 10; ++i) {
14526 #pragma omp target teams distribute simd // OK
14527 for (int i = 0; i < 10; ++i)
14528 ;
14529 }
14530
14531 // DISTRIBUTE DIRECTIVE
14532 #pragma omp target
14533 #pragma omp teams
14534 #pragma omp distribute
14535 for (int i = 0; i < 10; ++i) {
14536 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
14537 for (int i = 0; i < 10; ++i)
14538 ;
14539 }
14540 #pragma omp target
14541 #pragma omp teams
14542 #pragma omp distribute
14543 for (int i = 0; i < 10; ++i) {
14544 #pragma omp for
14545 for (int i = 0; i < 10; ++i)
14546 ;
14547 }
14548 #pragma omp target
14549 #pragma omp teams
14550 #pragma omp distribute
14551 for (int i = 0; i < 10; ++i) {
14552 #pragma omp simd
14553 for (int i = 0; i < 10; ++i)
14554 ;
14555 }
14556 #pragma omp target
14557 #pragma omp teams
14558 #pragma omp distribute
14559 for (int i = 0; i < 10; ++i) {
14560 #pragma omp for simd
14561 for (int i = 0; i < 10; ++i)
14562 ;
14563 }
14564 #pragma omp target
14565 #pragma omp teams
14566 #pragma omp distribute
14567 for (int i = 0; i < 10; ++i) {
14568 #pragma omp parallel
14569 for (int i = 0; i < 10; ++i)
14570 ;
14571 }
14572 #pragma omp target
14573 #pragma omp teams
14574 #pragma omp distribute
14575 for (int i = 0; i < 10; ++i) {
14576 #pragma omp sections
14577 {
14578 bar();
14579 }
14580 }
14581 #pragma omp target
14582 #pragma omp teams
14583 #pragma omp distribute
14584 for (int i = 0; i < 10; ++i) {
14585 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}
14586 {
14587 bar();
14588 }
14589 }
14590 #pragma omp target
14591 #pragma omp teams
14592 #pragma omp distribute
14593 for (int i = 0; i < 10; ++i) {
14594 #pragma omp single
14595 {
14596 bar();
14597 }
14598 }
14599 #pragma omp target
14600 #pragma omp teams
14601 #pragma omp distribute
14602 for (int i = 0; i < 10; ++i) {
14603 #pragma omp master
14604 {
14605 bar();
14606 }
14607 }
14608 #pragma omp target
14609 #pragma omp teams
14610 #pragma omp distribute
14611 for (int i = 0; i < 10; ++i) {
14612 #pragma omp critical
14613 {
14614 bar();
14615 }
14616 }
14617 #pragma omp target
14618 #pragma omp teams
14619 #pragma omp distribute
14620 for (int i = 0; i < 10; ++i) {
14621 #pragma omp parallel
14622 {
14623 #pragma omp single
14624 {
14625 bar();
14626 }
14627 }
14628 }
14629 #pragma omp target
14630 #pragma omp teams
14631 #pragma omp distribute
14632 for (int i = 0; i < 10; ++i) {
14633 #pragma omp parallel for
14634 for (int i = 0; i < 10; ++i)
14635 ;
14636 }
14637 #pragma omp target
14638 #pragma omp teams
14639 #pragma omp distribute
14640 for (int i = 0; i < 10; ++i) {
14641 #pragma omp parallel for simd
14642 for (int i = 0; i < 10; ++i)
14643 ;
14644 }
14645 #pragma omp target
14646 #pragma omp teams
14647 #pragma omp distribute
14648 for (int i = 0; i < 10; ++i) {
14649 #pragma omp parallel sections
14650 {
14651 bar();
14652 }
14653 }
14654 #pragma omp target
14655 #pragma omp teams
14656 #pragma omp distribute
14657 for (int i = 0; i < 10; ++i) {
14658 #pragma omp task
14659 {
14660 bar();
14661 }
14662 }
14663 #pragma omp target
14664 #pragma omp teams
14665 #pragma omp distribute
14666 for (int i = 0; i < 10; ++i) {
14667 #pragma omp taskyield
14668 bar();
14669 }
14670 #pragma omp target
14671 #pragma omp teams
14672 #pragma omp distribute
14673 for (int i = 0; i < 10; ++i) {
14674 #pragma omp barrier
14675 bar();
14676 }
14677 #pragma omp target
14678 #pragma omp teams
14679 #pragma omp distribute
14680 for (int i = 0; i < 10; ++i) {
14681 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
14682 bar();
14683 }
14684 #pragma omp target
14685 #pragma omp teams
14686 #pragma omp distribute
14687 for (int i = 0; i < 10; ++i) {
14688 #pragma omp taskwait
14689 bar();
14690 }
14691 #pragma omp target
14692 #pragma omp teams
14693 #pragma omp distribute
14694 for (int i = 0; i < 10; ++i) {
14695 #pragma omp flush
14696 bar();
14697 }
14698 #pragma omp target
14699 #pragma omp teams
14700 #pragma omp distribute
14701 for (int i = 0; i < 10; ++i) {
14702 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
14703 bar();
14704 }
14705 #pragma omp target
14706 #pragma omp teams
14707 #pragma omp distribute
14708 for (int i = 0; i < 10; ++i) {
14709 #pragma omp atomic
14710 ++a;
14711 }
14712 #pragma omp target
14713 #pragma omp teams
14714 #pragma omp distribute
14715 for (int i = 0; i < 10; ++i) {
14716 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
14717 ++a;
14718 }
14719 #pragma omp target
14720 #pragma omp teams
14721 #pragma omp distribute
14722 for (int i = 0; i < 10; ++i) {
14723 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
14724 ++a;
14725 }
14726 #pragma omp target
14727 #pragma omp teams
14728 #pragma omp distribute
14729 for (int i = 0; i < 10; ++i) {
14730 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14731 for (int i = 0; i < 10; ++i)
14732 ;
14733 }
14734 #pragma omp target
14735 #pragma omp teams
14736 #pragma omp distribute
14737 for (int i = 0; i < 10; ++i) {
14738 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
14739 ++a;
14740 }
14741 #pragma omp target
14742 #pragma omp teams
14743 #pragma omp distribute
14744 for (int i = 0; i < 10; ++i) {
14745 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
14746 ++a;
14747 }
14748 #pragma omp target
14749 #pragma omp teams
14750 #pragma omp distribute
14751 for (int i = 0; i < 10; ++i) {
14752 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
14753 ++a;
14754 }
14755 #pragma omp target
14756 #pragma omp teams
14757 #pragma omp distribute
14758 for (int i = 0; i < 10; ++i) {
14759 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
14760 ++a;
14761 }
14762 #pragma omp target
14763 #pragma omp teams
14764 #pragma omp distribute
14765 for (int i = 0; i < 10; ++i) {
14766 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
14767 for (int i = 0; i < 10; ++i)
14768 ++a;
14769 }
14770 #pragma omp target
14771 #pragma omp teams
14772 #pragma omp distribute
14773 for (int i = 0; i < 10; ++i) {
14774 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
14775 for (int i = 0; i < 10; ++i)
14776 ++a;
14777 }
14778 #pragma omp target
14779 #pragma omp teams
14780 #pragma omp distribute
14781 for (int i = 0; i < 10; ++i) {
14782 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
14783 for (int i = 0; i < 10; ++i)
14784 ++a;
14785 }
14786 #pragma omp target
14787 #pragma omp teams
14788 #pragma omp distribute
14789 for (int i = 0; i < 10; ++i) {
14790 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
14791 for (int i = 0; i < 10; ++i)
14792 ++a;
14793 }
14794 #pragma omp target
14795 #pragma omp teams
14796 #pragma omp distribute
14797 for (int i = 0; i < 10; ++i) {
14798 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14799 for (int i = 0; i < 10; ++i)
14800 ++a;
14801 }
14802 #pragma omp target
14803 #pragma omp teams
14804 #pragma omp distribute
14805 for (int i = 0; i < 10; ++i) {
14806 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14807 for (int i = 0; i < 10; ++i)
14808 ++a;
14809 }
14810 #pragma omp target
14811 #pragma omp teams
14812 #pragma omp distribute
14813 for (int i = 0; i < 10; ++i) {
14814 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
14815 for (int i = 0; i < 10; ++i)
14816 ++a;
14817 }
14818 #pragma omp target
14819 #pragma omp teams
14820 #pragma omp distribute
14821 for (int i = 0; i < 10; ++i) {
14822 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
14823 for (int i = 0; i < 10; ++i)
14824 ++a;
14825 }
14826 #pragma omp target
14827 #pragma omp teams
14828 #pragma omp distribute
14829 for (int i = 0; i < 10; ++i) {
14830 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
14831 for (int i = 0; i < 10; ++i)
14832 ++a;
14833 }
14834 #pragma omp target
14835 #pragma omp teams
14836 #pragma omp distribute
14837 for (int i = 0; i < 10; ++i) {
14838 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14839 for (int i = 0; i < 10; ++i)
14840 ++a;
14841 }
14842 #pragma omp target
14843 #pragma omp teams
14844 #pragma omp distribute
14845 for (int i = 0; i < 10; ++i) {
14846 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
14847 for (int i = 0; i < 10; ++i)
14848 ++a;
14849 }
14850
14851 // DISTRIBUTE PARALLEL FOR DIRECTIVE
14852 #pragma omp target
14853 #pragma omp teams
14854 #pragma omp distribute parallel for
14855 for (int i = 0; i < 10; ++i) {
14856 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}
14857 for (int i = 0; i < 10; ++i)
14858 ;
14859 }
14860
14861 #pragma omp target
14862 #pragma omp teams
14863 #pragma omp distribute parallel for
14864 for (int i = 0; i < 10; ++i) {
14865 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
14866 for (int i = 0; i < 10; ++i)
14867 ;
14868 }
14869 #pragma omp target
14870 #pragma omp teams
14871 #pragma omp distribute parallel for
14872 for (int i = 0; i < 10; ++i) {
14873 #pragma omp for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
14874 for (int i = 0; i < 10; ++i)
14875 ;
14876 }
14877 #pragma omp target
14878 #pragma omp teams
14879 #pragma omp distribute parallel for
14880 for (int i = 0; i < 10; ++i) {
14881 #pragma omp simd
14882 for (int i = 0; i < 10; ++i)
14883 ;
14884 }
14885 #pragma omp target
14886 #pragma omp teams
14887 #pragma omp distribute parallel for
14888 for (int i = 0; i < 10; ++i) {
14889 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
14890 for (int i = 0; i < 10; ++i)
14891 ;
14892 }
14893 #pragma omp target
14894 #pragma omp teams
14895 #pragma omp distribute parallel for
14896 for (int i = 0; i < 10; ++i) {
14897 #pragma omp parallel
14898 for (int i = 0; i < 10; ++i)
14899 ;
14900 }
14901 #pragma omp target
14902 #pragma omp teams
14903 #pragma omp distribute parallel for
14904 for (int i = 0; i < 10; ++i) {
14905 #pragma omp sections // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
14906 {
14907 bar();
14908 }
14909 }
14910 #pragma omp target
14911 #pragma omp teams
14912 #pragma omp distribute parallel for
14913 for (int i = 0; i < 10; ++i) {
14914 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}
14915 {
14916 bar();
14917 }
14918 }
14919 #pragma omp target
14920 #pragma omp teams
14921 #pragma omp distribute parallel for
14922 for (int i = 0; i < 10; ++i) {
14923 #pragma omp single // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
14924 {
14925 bar();
14926 }
14927 }
14928 #pragma omp target
14929 #pragma omp teams
14930 #pragma omp distribute parallel for
14931 for (int i = 0; i < 10; ++i) {
14932 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
14933 {
14934 bar();
14935 }
14936 }
14937 #pragma omp target
14938 #pragma omp teams
14939 #pragma omp distribute parallel for
14940 for (int i = 0; i < 10; ++i) {
14941 #pragma omp critical
14942 {
14943 bar();
14944 }
14945 }
14946 #pragma omp target
14947 #pragma omp teams
14948 #pragma omp distribute parallel for
14949 for (int i = 0; i < 10; ++i) {
14950 #pragma omp parallel
14951 {
14952 #pragma omp single
14953 {
14954 bar();
14955 }
14956 }
14957 }
14958 #pragma omp target
14959 #pragma omp teams
14960 #pragma omp distribute parallel for
14961 for (int i = 0; i < 10; ++i) {
14962 #pragma omp parallel for
14963 for (int i = 0; i < 10; ++i)
14964 ;
14965 }
14966 #pragma omp target
14967 #pragma omp teams
14968 #pragma omp distribute parallel for
14969 for (int i = 0; i < 10; ++i) {
14970 #pragma omp parallel for simd
14971 for (int i = 0; i < 10; ++i)
14972 ;
14973 }
14974 #pragma omp target
14975 #pragma omp teams
14976 #pragma omp distribute parallel for
14977 for (int i = 0; i < 10; ++i) {
14978 #pragma omp parallel sections
14979 {
14980 bar();
14981 }
14982 }
14983 #pragma omp target
14984 #pragma omp teams
14985 #pragma omp distribute parallel for
14986 for (int i = 0; i < 10; ++i) {
14987 #pragma omp task
14988 {
14989 bar();
14990 }
14991 }
14992 #pragma omp target
14993 #pragma omp teams
14994 #pragma omp distribute parallel for
14995 for (int i = 0; i < 10; ++i) {
14996 #pragma omp taskyield
14997 bar();
14998 }
14999 #pragma omp target
15000 #pragma omp teams
15001 #pragma omp distribute parallel for
15002 for (int i = 0; i < 10; ++i) {
15003 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
15004 bar();
15005 }
15006 #pragma omp target
15007 #pragma omp teams
15008 #pragma omp distribute parallel for
15009 for (int i = 0; i < 10; ++i) {
15010 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
15011 bar();
15012 }
15013 #pragma omp target
15014 #pragma omp teams
15015 #pragma omp distribute parallel for
15016 for (int i = 0; i < 10; ++i) {
15017 #pragma omp taskwait
15018 bar();
15019 }
15020 #pragma omp target
15021 #pragma omp teams
15022 #pragma omp distribute parallel for
15023 for (int i = 0; i < 10; ++i) {
15024 #pragma omp flush
15025 bar();
15026 }
15027 #pragma omp target
15028 #pragma omp teams
15029 #pragma omp distribute parallel for
15030 for (int i = 0; i < 10; ++i) {
15031 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
15032 bar();
15033 }
15034 #pragma omp target
15035 #pragma omp teams
15036 #pragma omp distribute parallel for
15037 for (int i = 0; i < 10; ++i) {
15038 #pragma omp atomic
15039 ++a;
15040 }
15041 #pragma omp target
15042 #pragma omp teams
15043 #pragma omp distribute parallel for
15044 for (int i = 0; i < 10; ++i) {
15045 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
15046 ++a;
15047 }
15048 #pragma omp target
15049 #pragma omp teams
15050 #pragma omp distribute parallel for
15051 for (int i = 0; i < 10; ++i) {
15052 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
15053 ++a;
15054 }
15055 #pragma omp target
15056 #pragma omp teams
15057 #pragma omp distribute parallel for
15058 for (int i = 0; i < 10; ++i) {
15059 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
15060 for (int i = 0; i < 10; ++i)
15061 ;
15062 }
15063 #pragma omp target
15064 #pragma omp teams
15065 #pragma omp distribute parallel for
15066 for (int i = 0; i < 10; ++i) {
15067 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
15068 ++a;
15069 }
15070 #pragma omp target
15071 #pragma omp teams
15072 #pragma omp distribute parallel for
15073 for (int i = 0; i < 10; ++i) {
15074 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
15075 ++a;
15076 }
15077 #pragma omp target
15078 #pragma omp teams
15079 #pragma omp distribute parallel for
15080 for (int i = 0; i < 10; ++i) {
15081 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
15082 ++a;
15083 }
15084 #pragma omp target
15085 #pragma omp teams
15086 #pragma omp distribute parallel for
15087 for (int i = 0; i < 10; ++i) {
15088 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
15089 ++a;
15090 }
15091 #pragma omp target
15092 #pragma omp teams
15093 #pragma omp distribute parallel for
15094 for (int i = 0; i < 10; ++i) {
15095 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
15096 for (int i = 0; i < 10; ++i)
15097 ++a;
15098 }
15099 #pragma omp target
15100 #pragma omp teams
15101 #pragma omp distribute parallel for
15102 for (int i = 0; i < 10; ++i) {
15103 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
15104 for (int i = 0; i < 10; ++i)
15105 ++a;
15106 }
15107 #pragma omp target
15108 #pragma omp teams
15109 #pragma omp distribute parallel for
15110 for (int i = 0; i < 10; ++i) {
15111 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
15112 for (int i = 0; i < 10; ++i)
15113 ++a;
15114 }
15115 #pragma omp target
15116 #pragma omp teams
15117 #pragma omp distribute parallel for
15118 for (int i = 0; i < 10; ++i) {
15119 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
15120 for (int i = 0; i < 10; ++i)
15121 ++a;
15122 }
15123 #pragma omp target
15124 #pragma omp teams
15125 #pragma omp distribute parallel for
15126 for (int i = 0; i < 10; ++i) {
15127 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
15128 for (int i = 0; i < 10; ++i)
15129 ++a;
15130 }
15131 #pragma omp target
15132 #pragma omp teams
15133 #pragma omp distribute parallel for
15134 for (int i = 0; i < 10; ++i) {
15135 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
15136 for (int i = 0; i < 10; ++i)
15137 ++a;
15138 }
15139 #pragma omp target
15140 #pragma omp teams
15141 #pragma omp distribute parallel for
15142 for (int i = 0; i < 10; ++i) {
15143 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
15144 ++a;
15145 }
15146 #pragma omp target
15147 #pragma omp teams
15148 #pragma omp distribute parallel for
15149 for (int i = 0; i < 10; ++i) {
15150 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
15151 for (int i = 0; i < 10; ++i)
15152 ++a;
15153 }
15154 #pragma omp target
15155 #pragma omp teams
15156 #pragma omp distribute parallel for
15157 for (int i = 0; i < 10; ++i) {
15158 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
15159 for (int i = 0; i < 10; ++i)
15160 ++a;
15161 }
15162 #pragma omp target
15163 #pragma omp teams
15164 #pragma omp distribute parallel for
15165 for (int i = 0; i < 10; ++i) {
15166 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
15167 for (int i = 0; i < 10; ++i)
15168 ++a;
15169 }
15170 #pragma omp target
15171 #pragma omp teams
15172 #pragma omp distribute parallel for
15173 for (int i = 0; i < 10; ++i) {
15174 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
15175 for (int i = 0; i < 10; ++i)
15176 ++a;
15177 }
15178
15179 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
15180 #pragma omp target
15181 #pragma omp teams
15182 #pragma omp distribute parallel for simd
15183 for (int i = 0; i < 10; ++i) {
15184 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15185 for (int i = 0; i < 10; ++i)
15186 ;
15187 }
15188 #pragma omp target
15189 #pragma omp teams
15190 #pragma omp distribute parallel for simd
15191 for (int i = 0; i < 10; ++i) {
15192 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15193 for (int i = 0; i < 10; ++i)
15194 ;
15195 }
15196 #pragma omp target
15197 #pragma omp teams
15198 #pragma omp distribute parallel for simd
15199 for (int i = 0; i < 10; ++i) {
15200 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15201 for (int i = 0; i < 10; ++i)
15202 ;
15203 }
15204 #pragma omp target
15205 #pragma omp teams
15206 #pragma omp distribute parallel for simd
15207 for (int i = 0; i < 10; ++i) {
15208 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15209 for (int i = 0; i < 10; ++i)
15210 ;
15211 }
15212 #pragma omp target
15213 #pragma omp teams
15214 #pragma omp distribute parallel for simd
15215 for (int i = 0; i < 10; ++i) {
15216 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15217 for (int i = 0; i < 10; ++i)
15218 ;
15219 }
15220 #pragma omp target
15221 #pragma omp teams
15222 #pragma omp distribute parallel for simd
15223 for (int i = 0; i < 10; ++i) {
15224 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15225 for (int i = 0; i < 10; ++i)
15226 ;
15227 }
15228 #pragma omp target
15229 #pragma omp teams
15230 #pragma omp distribute parallel for simd
15231 for (int i = 0; i < 10; ++i) {
15232 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15233 {
15234 bar();
15235 }
15236 }
15237 #pragma omp target
15238 #pragma omp teams
15239 #pragma omp distribute parallel for simd
15240 for (int i = 0; i < 10; ++i) {
15241 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15242 {
15243 bar();
15244 }
15245 }
15246 #pragma omp target
15247 #pragma omp teams
15248 #pragma omp distribute parallel for simd
15249 for (int i = 0; i < 10; ++i) {
15250 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15251 {
15252 bar();
15253 }
15254 }
15255 #pragma omp target
15256 #pragma omp teams
15257 #pragma omp distribute parallel for simd
15258 for (int i = 0; i < 10; ++i) {
15259 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15260 {
15261 bar();
15262 }
15263 }
15264 #pragma omp target
15265 #pragma omp teams
15266 #pragma omp distribute parallel for simd
15267 for (int i = 0; i < 10; ++i) {
15268 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15269 {
15270 bar();
15271 }
15272 }
15273 #pragma omp target
15274 #pragma omp teams
15275 #pragma omp distribute parallel for simd
15276 for (int i = 0; i < 10; ++i) {
15277 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15278 {
15279 #pragma omp single
15280 {
15281 bar();
15282 }
15283 }
15284 }
15285 #pragma omp target
15286 #pragma omp teams
15287 #pragma omp distribute parallel for simd
15288 for (int i = 0; i < 10; ++i) {
15289 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15290 for (int i = 0; i < 10; ++i)
15291 ;
15292 }
15293 #pragma omp target
15294 #pragma omp teams
15295 #pragma omp distribute parallel for simd
15296 for (int i = 0; i < 10; ++i) {
15297 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15298 for (int i = 0; i < 10; ++i)
15299 ;
15300 }
15301 #pragma omp target
15302 #pragma omp teams
15303 #pragma omp distribute parallel for simd
15304 for (int i = 0; i < 10; ++i) {
15305 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15306 {
15307 bar();
15308 }
15309 }
15310 #pragma omp target
15311 #pragma omp teams
15312 #pragma omp distribute parallel for simd
15313 for (int i = 0; i < 10; ++i) {
15314 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15315 {
15316 bar();
15317 }
15318 }
15319 #pragma omp target
15320 #pragma omp teams
15321 #pragma omp distribute parallel for simd
15322 for (int i = 0; i < 10; ++i) {
15323 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15324 bar();
15325 }
15326 #pragma omp target
15327 #pragma omp teams
15328 #pragma omp distribute parallel for simd
15329 for (int i = 0; i < 10; ++i) {
15330 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15331 bar();
15332 }
15333 #pragma omp target
15334 #pragma omp teams
15335 #pragma omp distribute parallel for simd
15336 for (int i = 0; i < 10; ++i) {
15337 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
15338 bar();
15339 }
15340 #pragma omp target
15341 #pragma omp teams
15342 #pragma omp distribute parallel for simd
15343 for (int i = 0; i < 10; ++i) {
15344 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15345 bar();
15346 }
15347 #pragma omp target
15348 #pragma omp teams
15349 #pragma omp distribute parallel for simd
15350 for (int i = 0; i < 10; ++i) {
15351 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15352 bar();
15353 }
15354 #pragma omp target
15355 #pragma omp teams
15356 #pragma omp distribute parallel for simd
15357 for (int i = 0; i < 10; ++i) {
15358 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15359 bar();
15360 }
15361 #pragma omp target
15362 #pragma omp teams
15363 #pragma omp distribute parallel for simd
15364 for (int i = 0; i < 10; ++i) {
15365 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
15366 ++a;
15367 }
15368 #pragma omp target
15369 #pragma omp teams
15370 #pragma omp distribute parallel for simd
15371 for (int i = 0; i < 10; ++i) {
15372 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15373 ++a;
15374 }
15375 #pragma omp target
15376 #pragma omp teams
15377 #pragma omp distribute parallel for simd
15378 for (int i = 0; i < 10; ++i) {
15379 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15380 ++a;
15381 }
15382 #pragma omp target
15383 #pragma omp teams
15384 #pragma omp distribute parallel for simd
15385 for (int i = 0; i < 10; ++i) {
15386 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15387 ++a;
15388 }
15389 #pragma omp target
15390 #pragma omp teams
15391 #pragma omp distribute parallel for simd
15392 for (int i = 0; i < 10; ++i) {
15393 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15394 ++a;
15395 }
15396 #pragma omp target
15397 #pragma omp teams
15398 #pragma omp distribute parallel for simd
15399 for (int i = 0; i < 10; ++i) {
15400 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15401 ++a;
15402 }
15403 #pragma omp target
15404 #pragma omp teams
15405 #pragma omp distribute parallel for simd
15406 for (int i = 0; i < 10; ++i) {
15407 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15408 ++a;
15409 }
15410 #pragma omp target
15411 #pragma omp teams
15412 #pragma omp distribute parallel for simd
15413 for (int i = 0; i < 10; ++i) {
15414 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15415 for (int i = 0; i < 10; ++i)
15416 ;
15417 }
15418 #pragma omp target
15419 #pragma omp teams
15420 #pragma omp distribute parallel for simd
15421 for (int i = 0; i < 10; ++i) {
15422 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15423 for (int i = 0; i < 10; ++i)
15424 ;
15425 }
15426 #pragma omp target
15427 #pragma omp teams
15428 #pragma omp distribute parallel for simd
15429 for (int i = 0; i < 10; ++i) {
15430 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15431 for (int i = 0; i < 10; ++i)
15432 ;
15433 }
15434 #pragma omp target
15435 #pragma omp teams
15436 #pragma omp distribute parallel for simd
15437 for (int i = 0; i < 10; ++i) {
15438 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15439 for (int i = 0; i < 10; ++i)
15440 ;
15441 }
15442 #pragma omp target
15443 #pragma omp teams
15444 #pragma omp distribute parallel for simd
15445 for (int i = 0; i < 10; ++i) {
15446 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15447 for (int i = 0; i < 10; ++i)
15448 ;
15449 }
15450 #pragma omp target
15451 #pragma omp teams
15452 #pragma omp distribute parallel for simd
15453 for (int i = 0; i < 10; ++i) {
15454 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15455 for (int i = 0; i < 10; ++i)
15456 ;
15457 }
15458 #pragma omp target
15459 #pragma omp teams
15460 #pragma omp distribute parallel for simd
15461 for (int i = 0; i < 10; ++i) {
15462 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15463 a++;
15464 }
15465 #pragma omp target
15466 #pragma omp teams
15467 #pragma omp distribute parallel for simd
15468 for (int i = 0; i < 10; ++i) {
15469 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15470 for (int i = 0; i < 10; ++i)
15471 ;
15472 }
15473 #pragma omp target
15474 #pragma omp teams
15475 #pragma omp distribute parallel for simd
15476 for (int i = 0; i < 10; ++i) {
15477 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15478 for (int i = 0; i < 10; ++i)
15479 ;
15480 }
15481 #pragma omp target
15482 #pragma omp teams
15483 #pragma omp distribute parallel for simd
15484 for (int i = 0; i < 10; ++i) {
15485 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15486 for (int i = 0; i < 10; ++i)
15487 ;
15488 }
15489 #pragma omp target
15490 #pragma omp teams
15491 #pragma omp distribute parallel for simd
15492 for (int i = 0; i < 10; ++i) {
15493 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15494 for (int i = 0; i < 10; ++i)
15495 ;
15496 }
15497
15498 // DISTRIBUTE SIMD DIRECTIVE
15499 #pragma omp target
15500 #pragma omp teams
15501 #pragma omp distribute simd
15502 for (int i = 0; i < 10; ++i) {
15503 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15504 for (int i = 0; i < 10; ++i)
15505 ;
15506 }
15507 #pragma omp target
15508 #pragma omp teams
15509 #pragma omp distribute simd
15510 for (int i = 0; i < 10; ++i) {
15511 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15512 for (int i = 0; i < 10; ++i)
15513 ;
15514 }
15515 #pragma omp target
15516 #pragma omp teams
15517 #pragma omp distribute simd
15518 for (int i = 0; i < 10; ++i) {
15519 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15520 for (int i = 0; i < 10; ++i)
15521 ;
15522 }
15523 #pragma omp target
15524 #pragma omp teams
15525 #pragma omp distribute simd
15526 for (int i = 0; i < 10; ++i) {
15527 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15528 for (int i = 0; i < 10; ++i)
15529 ;
15530 }
15531 #pragma omp target
15532 #pragma omp teams
15533 #pragma omp distribute simd
15534 for (int i = 0; i < 10; ++i) {
15535 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15536 for (int i = 0; i < 10; ++i)
15537 ;
15538 }
15539 #pragma omp target
15540 #pragma omp teams
15541 #pragma omp distribute simd
15542 for (int i = 0; i < 10; ++i) {
15543 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15544 for (int i = 0; i < 10; ++i)
15545 ;
15546 }
15547 #pragma omp target
15548 #pragma omp teams
15549 #pragma omp distribute simd
15550 for (int i = 0; i < 10; ++i) {
15551 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15552 {
15553 bar();
15554 }
15555 }
15556 #pragma omp target
15557 #pragma omp teams
15558 #pragma omp distribute simd
15559 for (int i = 0; i < 10; ++i) {
15560 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15561 {
15562 bar();
15563 }
15564 }
15565 #pragma omp target
15566 #pragma omp teams
15567 #pragma omp distribute simd
15568 for (int i = 0; i < 10; ++i) {
15569 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15570 {
15571 bar();
15572 }
15573 }
15574 #pragma omp target
15575 #pragma omp teams
15576 #pragma omp distribute simd
15577 for (int i = 0; i < 10; ++i) {
15578 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15579 {
15580 bar();
15581 }
15582 }
15583 #pragma omp target
15584 #pragma omp teams
15585 #pragma omp distribute simd
15586 for (int i = 0; i < 10; ++i) {
15587 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15588 {
15589 bar();
15590 }
15591 }
15592 #pragma omp target
15593 #pragma omp teams
15594 #pragma omp distribute simd
15595 for (int i = 0; i < 10; ++i) {
15596 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15597 {
15598 #pragma omp single
15599 {
15600 bar();
15601 }
15602 }
15603 }
15604 #pragma omp target
15605 #pragma omp teams
15606 #pragma omp distribute simd
15607 for (int i = 0; i < 10; ++i) {
15608 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15609 for (int i = 0; i < 10; ++i)
15610 ;
15611 }
15612 #pragma omp target
15613 #pragma omp teams
15614 #pragma omp distribute simd
15615 for (int i = 0; i < 10; ++i) {
15616 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15617 for (int i = 0; i < 10; ++i)
15618 ;
15619 }
15620 #pragma omp target
15621 #pragma omp teams
15622 #pragma omp distribute simd
15623 for (int i = 0; i < 10; ++i) {
15624 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15625 {
15626 bar();
15627 }
15628 }
15629 #pragma omp target
15630 #pragma omp teams
15631 #pragma omp distribute simd
15632 for (int i = 0; i < 10; ++i) {
15633 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15634 {
15635 bar();
15636 }
15637 }
15638 #pragma omp target
15639 #pragma omp teams
15640 #pragma omp distribute simd
15641 for (int i = 0; i < 10; ++i) {
15642 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15643 bar();
15644 }
15645 #pragma omp target
15646 #pragma omp teams
15647 #pragma omp distribute simd
15648 for (int i = 0; i < 10; ++i) {
15649 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15650 bar();
15651 }
15652 #pragma omp target
15653 #pragma omp teams
15654 #pragma omp distribute simd
15655 for (int i = 0; i < 10; ++i) {
15656 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
15657 bar();
15658 }
15659 #pragma omp target
15660 #pragma omp teams
15661 #pragma omp distribute simd
15662 for (int i = 0; i < 10; ++i) {
15663 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15664 bar();
15665 }
15666 #pragma omp target
15667 #pragma omp teams
15668 #pragma omp distribute simd
15669 for (int i = 0; i < 10; ++i) {
15670 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15671 bar();
15672 }
15673 #pragma omp target
15674 #pragma omp teams
15675 #pragma omp distribute simd
15676 for (int i = 0; i < 10; ++i) {
15677 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15678 bar();
15679 }
15680 #pragma omp target
15681 #pragma omp teams
15682 #pragma omp distribute simd
15683 for (int i = 0; i < 10; ++i) {
15684 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
15685 ++a;
15686 }
15687 #pragma omp target
15688 #pragma omp teams
15689 #pragma omp distribute simd
15690 for (int i = 0; i < 10; ++i) {
15691 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15692 ++a;
15693 }
15694 #pragma omp target
15695 #pragma omp teams
15696 #pragma omp distribute simd
15697 for (int i = 0; i < 10; ++i) {
15698 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15699 ++a;
15700 }
15701 #pragma omp target
15702 #pragma omp teams
15703 #pragma omp distribute simd
15704 for (int i = 0; i < 10; ++i) {
15705 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15706 ++a;
15707 }
15708 #pragma omp target
15709 #pragma omp teams
15710 #pragma omp distribute simd
15711 for (int i = 0; i < 10; ++i) {
15712 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15713 ++a;
15714 }
15715 #pragma omp target
15716 #pragma omp teams
15717 #pragma omp distribute simd
15718 for (int i = 0; i < 10; ++i) {
15719 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15720 ++a;
15721 }
15722 #pragma omp target
15723 #pragma omp teams
15724 #pragma omp distribute simd
15725 for (int i = 0; i < 10; ++i) {
15726 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15727 ++a;
15728 }
15729 #pragma omp target
15730 #pragma omp teams
15731 #pragma omp distribute simd
15732 for (int i = 0; i < 10; ++i) {
15733 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15734 for (int i = 0; i < 10; ++i)
15735 ;
15736 }
15737 #pragma omp target
15738 #pragma omp teams
15739 #pragma omp distribute simd
15740 for (int i = 0; i < 10; ++i) {
15741 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15742 for (int i = 0; i < 10; ++i)
15743 ;
15744 }
15745 #pragma omp target
15746 #pragma omp teams
15747 #pragma omp distribute simd
15748 for (int i = 0; i < 10; ++i) {
15749 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15750 for (int i = 0; i < 10; ++i)
15751 ;
15752 }
15753 #pragma omp target
15754 #pragma omp teams
15755 #pragma omp distribute simd
15756 for (int i = 0; i < 10; ++i) {
15757 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15758 for (int i = 0; i < 10; ++i)
15759 ;
15760 }
15761 #pragma omp target
15762 #pragma omp teams
15763 #pragma omp distribute simd
15764 for (int i = 0; i < 10; ++i) {
15765 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15766 for (int i = 0; i < 10; ++i)
15767 ;
15768 }
15769 #pragma omp target
15770 #pragma omp teams
15771 #pragma omp distribute simd
15772 for (int i = 0; i < 10; ++i) {
15773 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15774 for (int i = 0; i < 10; ++i)
15775 ;
15776 }
15777 #pragma omp target
15778 #pragma omp teams
15779 #pragma omp distribute simd
15780 for (int i = 0; i < 10; ++i) {
15781 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15782 a++;
15783 }
15784 #pragma omp target
15785 #pragma omp teams
15786 #pragma omp distribute simd
15787 for (int i = 0; i < 10; ++i) {
15788 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15789 for (int i = 0; i < 10; ++i)
15790 ;
15791 }
15792 #pragma omp target
15793 #pragma omp teams
15794 #pragma omp distribute simd
15795 for (int i = 0; i < 10; ++i) {
15796 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15797 for (int i = 0; i < 10; ++i)
15798 ;
15799 }
15800 #pragma omp target
15801 #pragma omp teams
15802 #pragma omp distribute simd
15803 for (int i = 0; i < 10; ++i) {
15804 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15805 for (int i = 0; i < 10; ++i)
15806 ;
15807 }
15808 #pragma omp target
15809 #pragma omp teams
15810 #pragma omp distribute simd
15811 for (int i = 0; i < 10; ++i) {
15812 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15813 for (int i = 0; i < 10; ++i)
15814 ;
15815 }
15816
15817 // TARGET SIMD DIRECTIVE
15818 #pragma omp target simd
15819 for (int i = 0; i < 10; ++i) {
15820 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15821 for (int i = 0; i < 10; ++i)
15822 ;
15823 }
15824 #pragma omp target simd
15825 for (int i = 0; i < 10; ++i) {
15826 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15827 for (int i = 0; i < 10; ++i)
15828 ;
15829 }
15830 #pragma omp target simd
15831 for (int i = 0; i < 10; ++i) {
15832 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15833 for (int i = 0; i < 10; ++i)
15834 ;
15835 }
15836 #pragma omp target simd
15837 for (int i = 0; i < 10; ++i) {
15838 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15839 for (int i = 0; i < 10; ++i)
15840 ;
15841 }
15842 #pragma omp target simd
15843 for (int i = 0; i < 10; ++i) {
15844 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15845 for (int i = 0; i < 10; ++i)
15846 ;
15847 }
15848 #pragma omp target simd
15849 for (int i = 0; i < 10; ++i) {
15850 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15851 for (int i = 0; i < 10; ++i)
15852 ;
15853 }
15854 #pragma omp target simd
15855 for (int i = 0; i < 10; ++i) {
15856 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15857 {
15858 bar();
15859 }
15860 }
15861 #pragma omp target simd
15862 for (int i = 0; i < 10; ++i) {
15863 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15864 {
15865 bar();
15866 }
15867 }
15868 #pragma omp target simd
15869 for (int i = 0; i < 10; ++i) {
15870 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15871 {
15872 bar();
15873 }
15874 }
15875 #pragma omp target simd
15876 for (int i = 0; i < 10; ++i) {
15877 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15878 {
15879 bar();
15880 }
15881 }
15882 #pragma omp target simd
15883 for (int i = 0; i < 10; ++i) {
15884 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15885 {
15886 bar();
15887 }
15888 }
15889 #pragma omp target simd
15890 for (int i = 0; i < 10; ++i) {
15891 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15892 {
15893 #pragma omp single
15894 {
15895 bar();
15896 }
15897 }
15898 }
15899 #pragma omp target simd
15900 for (int i = 0; i < 10; ++i) {
15901 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15902 for (int i = 0; i < 10; ++i)
15903 ;
15904 }
15905 #pragma omp target simd
15906 for (int i = 0; i < 10; ++i) {
15907 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15908 for (int i = 0; i < 10; ++i)
15909 ;
15910 }
15911 #pragma omp target simd
15912 for (int i = 0; i < 10; ++i) {
15913 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15914 {
15915 bar();
15916 }
15917 }
15918 #pragma omp target simd
15919 for (int i = 0; i < 10; ++i) {
15920 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15921 {
15922 bar();
15923 }
15924 }
15925 #pragma omp target simd
15926 for (int i = 0; i < 10; ++i) {
15927 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15928 bar();
15929 }
15930 #pragma omp target simd
15931 for (int i = 0; i < 10; ++i) {
15932 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15933 bar();
15934 }
15935 #pragma omp target simd
15936 for (int i = 0; i < 10; ++i) {
15937 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
15938 bar();
15939 }
15940 #pragma omp target simd
15941 for (int i = 0; i < 10; ++i) {
15942 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15943 bar();
15944 }
15945 #pragma omp target simd
15946 for (int i = 0; i < 10; ++i) {
15947 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15948 bar();
15949 }
15950 #pragma omp target simd
15951 for (int i = 0; i < 10; ++i) {
15952 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15953 bar();
15954 }
15955 #pragma omp target simd
15956 for (int i = 0; i < 10; ++i) {
15957 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
15958 ++a;
15959 }
15960 #pragma omp target simd
15961 for (int i = 0; i < 10; ++i) {
15962 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15963 ++a;
15964 }
15965 #pragma omp target simd
15966 for (int i = 0; i < 10; ++i) {
15967 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15968 ++a;
15969 }
15970 #pragma omp target simd
15971 for (int i = 0; i < 10; ++i) {
15972 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15973 ++a;
15974 }
15975 #pragma omp target simd
15976 for (int i = 0; i < 10; ++i) {
15977 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15978 ++a;
15979 }
15980 #pragma omp target simd
15981 for (int i = 0; i < 10; ++i) {
15982 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15983 ++a;
15984 }
15985 #pragma omp target simd
15986 for (int i = 0; i < 10; ++i) {
15987 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15988 ++a;
15989 }
15990 #pragma omp target simd
15991 for (int i = 0; i < 10; ++i) {
15992 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15993 for (int i = 0; i < 10; ++i)
15994 ;
15995 }
15996 #pragma omp target simd
15997 for (int i = 0; i < 10; ++i) {
15998 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15999 for (int i = 0; i < 10; ++i)
16000 ;
16001 }
16002 #pragma omp target simd
16003 for (int i = 0; i < 10; ++i) {
16004 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16005 for (int i = 0; i < 10; ++i)
16006 ;
16007 }
16008 #pragma omp target simd
16009 for (int i = 0; i < 10; ++i) {
16010 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16011 for (int i = 0; i < 10; ++i)
16012 ;
16013 }
16014 #pragma omp target simd
16015 for (int i = 0; i < 10; ++i) {
16016 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16017 for (int i = 0; i < 10; ++i)
16018 ;
16019 }
16020 #pragma omp target simd
16021 for (int i = 0; i < 10; ++i) {
16022 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16023 for (int i = 0; i < 10; ++i)
16024 ;
16025 }
16026 #pragma omp target simd
16027 for (int i = 0; i < 10; ++i) {
16028 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16029 a++;
16030 }
16031 #pragma omp target simd
16032 for (int i = 0; i < 10; ++i) {
16033 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16034 for (int i = 0; i < 10; ++i)
16035 ;
16036 }
16037 #pragma omp target simd
16038 for (int i = 0; i < 10; ++i) {
16039 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16040 for (int i = 0; i < 10; ++i)
16041 ;
16042 }
16043 #pragma omp target simd
16044 for (int i = 0; i < 10; ++i) {
16045 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16046 for (int i = 0; i < 10; ++i)
16047 ;
16048 }
16049 #pragma omp target simd
16050 for (int i = 0; i < 10; ++i) {
16051 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16052 for (int i = 0; i < 10; ++i)
16053 ;
16054 }
16055
16056 // TEAMS DISTRIBUTE DIRECTIVE
16057 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
16058 for (int i = 0; i < 10; ++i)
16059 ;
16060 #pragma omp target
16061 #pragma omp teams distribute
16062 for (int i = 0; i < 10; ++i) {
16063 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
16064 for (int i = 0; i < 10; ++i)
16065 ;
16066 }
16067 #pragma omp target
16068 #pragma omp teams distribute
16069 for (int i = 0; i < 10; ++i) {
16070 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
16071 for (int i = 0; i < 10; ++i)
16072 ;
16073 }
16074 #pragma omp target
16075 #pragma omp teams distribute
16076 for (int i = 0; i < 10; ++i) {
16077 #pragma omp for // OK
16078 for (int i = 0; i < 10; ++i)
16079 ;
16080 }
16081 #pragma omp target
16082 #pragma omp teams distribute
16083 for (int i = 0; i < 10; ++i) {
16084 #pragma omp simd // OK
16085 for (int i = 0; i < 10; ++i)
16086 ;
16087 }
16088 #pragma omp target
16089 #pragma omp teams distribute
16090 for (int i = 0; i < 10; ++i) {
16091 #pragma omp for simd // OK
16092 for (int i = 0; i < 10; ++i)
16093 ;
16094 }
16095 #pragma omp target
16096 #pragma omp teams distribute
16097 for (int i = 0; i < 10; ++i) {
16098 #pragma omp parallel // OK
16099 for (int i = 0; i < 10; ++i)
16100 ;
16101 }
16102 #pragma omp target
16103 #pragma omp teams distribute
16104 for (int i = 0; i < 10; ++i) {
16105 #pragma omp sections // OK
16106 {
16107 bar();
16108 }
16109 }
16110 #pragma omp target
16111 #pragma omp teams distribute
16112 for (int i = 0; i < 10; ++i) {
16113 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
16114 {
16115 bar();
16116 }
16117 }
16118 #pragma omp target
16119 #pragma omp teams distribute
16120 for (int i = 0; i < 10; ++i) {
16121 #pragma omp single // OK
16122 {
16123 bar();
16124 }
16125 }
16126 #pragma omp target
16127 #pragma omp teams distribute
16128 for (int i = 0; i < 10; ++i) {
16129 #pragma omp master // OK
16130 {
16131 bar();
16132 }
16133 }
16134 #pragma omp target
16135 #pragma omp teams distribute
16136 for (int i = 0; i < 10; ++i) {
16137 #pragma omp critical // OK
16138 {
16139 bar();
16140 }
16141 }
16142 #pragma omp target
16143 #pragma omp teams distribute
16144 for (int i = 0; i < 10; ++i) {
16145 #pragma omp parallel // OK
16146 {
16147 #pragma omp single
16148 {
16149 bar();
16150 }
16151 }
16152 }
16153 #pragma omp target
16154 #pragma omp teams distribute
16155 for (int i = 0; i < 10; ++i) {
16156 #pragma omp parallel for // OK
16157 for (int i = 0; i < 10; ++i)
16158 ;
16159 }
16160 #pragma omp target
16161 #pragma omp teams distribute
16162 for (int i = 0; i < 10; ++i) {
16163 #pragma omp parallel for simd // OK
16164 for (int i = 0; i < 10; ++i)
16165 ;
16166 }
16167 #pragma omp target
16168 #pragma omp teams distribute
16169 for (int i = 0; i < 10; ++i) {
16170 #pragma omp parallel sections // OK
16171 {
16172 bar();
16173 }
16174 }
16175 #pragma omp target
16176 #pragma omp teams distribute
16177 for (int i = 0; i < 10; ++i) {
16178 #pragma omp task // OK
16179 {
16180 bar();
16181 }
16182 }
16183 #pragma omp target
16184 #pragma omp teams distribute
16185 for (int i = 0; i < 10; ++i) {
16186 #pragma omp taskyield // OK
16187 bar();
16188 }
16189 #pragma omp target
16190 #pragma omp teams distribute
16191 for (int i = 0; i < 10; ++i) {
16192 #pragma omp barrier // OK
16193 bar();
16194 }
16195 #pragma omp target
16196 #pragma omp teams distribute
16197 for (int i = 0; i < 10; ++i) {
16198 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
16199 bar();
16200 }
16201 #pragma omp target
16202 #pragma omp teams distribute
16203 for (int i = 0; i < 10; ++i) {
16204 #pragma omp taskwait // OK
16205 bar();
16206 }
16207 #pragma omp target
16208 #pragma omp teams distribute
16209 for (int i = 0; i < 10; ++i) {
16210 #pragma omp flush // OK
16211 bar();
16212 }
16213 #pragma omp target
16214 #pragma omp teams distribute
16215 for (int i = 0; i < 10; ++i) {
16216 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
16217 bar();
16218 }
16219 #pragma omp target
16220 #pragma omp teams distribute
16221 for (int i = 0; i < 10; ++i) {
16222 #pragma omp atomic // OK
16223 ++a;
16224 }
16225 #pragma omp target
16226 #pragma omp teams distribute
16227 for (int i = 0; i < 10; ++i) {
16228 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
16229 ++a;
16230 }
16231 #pragma omp target
16232 #pragma omp teams distribute
16233 for (int i = 0; i < 10; ++i) {
16234 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
16235 ++a;
16236 }
16237 #pragma omp target
16238 #pragma omp teams distribute
16239 for (int i = 0; i < 10; ++i) {
16240 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
16241 for (int i = 0; i < 10; ++i)
16242 ;
16243 }
16244 #pragma omp target
16245 #pragma omp teams distribute
16246 for (int i = 0; i < 10; ++i) {
16247 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
16248 ++a;
16249 }
16250 #pragma omp target
16251 #pragma omp teams distribute
16252 for (int i = 0; i < 10; ++i) {
16253 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
16254 ++a;
16255 }
16256 #pragma omp target
16257 #pragma omp teams distribute
16258 for (int i = 0; i < 10; ++i) {
16259 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
16260 ++a;
16261 }
16262 #pragma omp target
16263 #pragma omp teams distribute
16264 for (int i = 0; i < 10; ++i) {
16265 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
16266 ++a;
16267 }
16268 #pragma omp target
16269 #pragma omp teams distribute
16270 for (int i = 0; i < 10; ++i) {
16271 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
16272 for (int i = 0; i < 10; ++i)
16273 ++a;
16274 }
16275 #pragma omp target
16276 #pragma omp teams distribute
16277 for (int i = 0; i < 10; ++i) {
16278 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
16279 for (int i = 0; i < 10; ++i)
16280 ++a;
16281 }
16282 #pragma omp target
16283 #pragma omp teams distribute
16284 for (int i = 0; i < 10; ++i) {
16285 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
16286 for (int i = 0; i < 10; ++i)
16287 ++a;
16288 }
16289 #pragma omp target
16290 #pragma omp teams distribute
16291 for (int i = 0; i < 10; ++i) {
16292 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
16293 for (int i = 0; i < 10; ++i)
16294 ++a;
16295 }
16296 #pragma omp target
16297 #pragma omp teams distribute
16298 for (int i = 0; i < 10; ++i) {
16299 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
16300 for (int i = 0; i < 10; ++i)
16301 ++a;
16302 }
16303 #pragma omp target
16304 #pragma omp teams distribute
16305 for (int i = 0; i < 10; ++i) {
16306 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
16307 for (int i = 0; i < 10; ++i)
16308 ++a;
16309 }
16310 #pragma omp target
16311 #pragma omp teams distribute
16312 for (int i = 0; i < 10; ++i) {
16313 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
16314 ++a;
16315 }
16316 #pragma omp target
16317 #pragma omp teams distribute
16318 for (int i = 0; i < 10; ++i) {
16319 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
16320 for (int i = 0; i < 10; ++i)
16321 ++a;
16322 }
16323 #pragma omp target
16324 #pragma omp teams distribute
16325 for (int i = 0; i < 10; ++i) {
16326 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
16327 for (int i = 0; i < 10; ++i)
16328 ++a;
16329 }
16330 #pragma omp target
16331 #pragma omp teams distribute
16332 for (int i = 0; i < 10; ++i) {
16333 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
16334 for (int i = 0; i < 10; ++i)
16335 ++a;
16336 }
16337 #pragma omp target
16338 #pragma omp teams distribute
16339 for (int i = 0; i < 10; ++i) {
16340 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
16341 for (int i = 0; i < 10; ++i)
16342 ++a;
16343 }
16344
16345 // TEAMS DISTRIBUTE SIMD DIRECTIVE
16346 #pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
16347 for (int i = 0; i < 10; ++i)
16348 ;
16349 #pragma omp target
16350 #pragma omp teams distribute simd
16351 for (int i = 0; i < 10; ++i) {
16352 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16353 for (int i = 0; i < 10; ++i)
16354 ;
16355 }
16356 #pragma omp target
16357 #pragma omp teams distribute simd
16358 for (int i = 0; i < 10; ++i) {
16359 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16360 for (int i = 0; i < 10; ++i)
16361 ;
16362 }
16363 #pragma omp target
16364 #pragma omp teams distribute simd
16365 for (int i = 0; i < 10; ++i) {
16366 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16367 for (int i = 0; i < 10; ++i)
16368 ;
16369 }
16370 #pragma omp target
16371 #pragma omp teams distribute simd
16372 for (int i = 0; i < 10; ++i) {
16373 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
16374 for (int i = 0; i < 10; ++i)
16375 ;
16376 }
16377 #pragma omp target
16378 #pragma omp teams distribute simd
16379 for (int i = 0; i < 10; ++i) {
16380 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16381 for (int i = 0; i < 10; ++i)
16382 ;
16383 }
16384 #pragma omp target
16385 #pragma omp teams distribute simd
16386 for (int i = 0; i < 10; ++i) {
16387 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16388 for (int i = 0; i < 10; ++i)
16389 ;
16390 }
16391 #pragma omp target
16392 #pragma omp teams distribute simd
16393 for (int i = 0; i < 10; ++i) {
16394 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16395 {
16396 bar();
16397 }
16398 }
16399 #pragma omp target
16400 #pragma omp teams distribute simd
16401 for (int i = 0; i < 10; ++i) {
16402 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16403 {
16404 bar();
16405 }
16406 }
16407 #pragma omp target
16408 #pragma omp teams distribute simd
16409 for (int i = 0; i < 10; ++i) {
16410 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16411 {
16412 bar();
16413 }
16414 }
16415 #pragma omp target
16416 #pragma omp teams distribute simd
16417 for (int i = 0; i < 10; ++i) {
16418 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16419 {
16420 bar();
16421 }
16422 }
16423 #pragma omp target
16424 #pragma omp teams distribute simd
16425 for (int i = 0; i < 10; ++i) {
16426 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16427 {
16428 bar();
16429 }
16430 }
16431 #pragma omp target
16432 #pragma omp teams distribute simd
16433 for (int i = 0; i < 10; ++i) {
16434 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16435 {
16436 #pragma omp single
16437 {
16438 bar();
16439 }
16440 }
16441 }
16442 #pragma omp target
16443 #pragma omp teams distribute simd
16444 for (int i = 0; i < 10; ++i) {
16445 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16446 for (int i = 0; i < 10; ++i)
16447 ;
16448 }
16449 #pragma omp target
16450 #pragma omp teams distribute simd
16451 for (int i = 0; i < 10; ++i) {
16452 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16453 for (int i = 0; i < 10; ++i)
16454 ;
16455 }
16456 #pragma omp target
16457 #pragma omp teams distribute simd
16458 for (int i = 0; i < 10; ++i) {
16459 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16460 {
16461 bar();
16462 }
16463 }
16464 #pragma omp target
16465 #pragma omp teams distribute simd
16466 for (int i = 0; i < 10; ++i) {
16467 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16468 {
16469 bar();
16470 }
16471 }
16472 #pragma omp target
16473 #pragma omp teams distribute simd
16474 for (int i = 0; i < 10; ++i) {
16475 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16476 bar();
16477 }
16478 #pragma omp target
16479 #pragma omp teams distribute simd
16480 for (int i = 0; i < 10; ++i) {
16481 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16482 bar();
16483 }
16484 #pragma omp target
16485 #pragma omp teams distribute simd
16486 for (int i = 0; i < 10; ++i) {
16487 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
16488 bar();
16489 }
16490 #pragma omp target
16491 #pragma omp teams distribute simd
16492 for (int i = 0; i < 10; ++i) {
16493 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16494 bar();
16495 }
16496 #pragma omp target
16497 #pragma omp teams distribute simd
16498 for (int i = 0; i < 10; ++i) {
16499 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16500 bar();
16501 }
16502 #pragma omp target
16503 #pragma omp teams distribute simd
16504 for (int i = 0; i < 10; ++i) {
16505 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16506 bar();
16507 }
16508 #pragma omp target
16509 #pragma omp teams distribute simd
16510 for (int i = 0; i < 10; ++i) {
16511 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
16512 ++a;
16513 }
16514 #pragma omp target
16515 #pragma omp teams distribute simd
16516 for (int i = 0; i < 10; ++i) {
16517 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16518 ++a;
16519 }
16520 #pragma omp target
16521 #pragma omp teams distribute simd
16522 for (int i = 0; i < 10; ++i) {
16523 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16524 ++a;
16525 }
16526 #pragma omp target
16527 #pragma omp teams distribute simd
16528 for (int i = 0; i < 10; ++i) {
16529 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16530 for (int i = 0; i < 10; ++i)
16531 ;
16532 }
16533 #pragma omp target
16534 #pragma omp teams distribute simd
16535 for (int i = 0; i < 10; ++i) {
16536 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16537 ++a;
16538 }
16539 #pragma omp target
16540 #pragma omp teams distribute simd
16541 for (int i = 0; i < 10; ++i) {
16542 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16543 ++a;
16544 }
16545 #pragma omp target
16546 #pragma omp teams distribute simd
16547 for (int i = 0; i < 10; ++i) {
16548 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16549 ++a;
16550 }
16551 #pragma omp target
16552 #pragma omp teams distribute simd
16553 for (int i = 0; i < 10; ++i) {
16554 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16555 ++a;
16556 }
16557 #pragma omp target
16558 #pragma omp teams distribute simd
16559 for (int i = 0; i < 10; ++i) {
16560 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16561 for (int i = 0; i < 10; ++i)
16562 ++a;
16563 }
16564 #pragma omp target
16565 #pragma omp teams distribute simd
16566 for (int i = 0; i < 10; ++i) {
16567 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16568 for (int i = 0; i < 10; ++i)
16569 ++a;
16570 }
16571 #pragma omp target
16572 #pragma omp teams distribute simd
16573 for (int i = 0; i < 10; ++i) {
16574 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16575 for (int i = 0; i < 10; ++i)
16576 ++a;
16577 }
16578 #pragma omp target
16579 #pragma omp teams distribute simd
16580 for (int i = 0; i < 10; ++i) {
16581 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16582 for (int i = 0; i < 10; ++i)
16583 ++a;
16584 }
16585 #pragma omp target
16586 #pragma omp teams distribute simd
16587 for (int i = 0; i < 10; ++i) {
16588 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16589 for (int i = 0; i < 10; ++i)
16590 ++a;
16591 }
16592 #pragma omp target
16593 #pragma omp teams distribute simd
16594 for (int i = 0; i < 10; ++i) {
16595 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16596 for (int i = 0; i < 10; ++i)
16597 ++a;
16598 }
16599 #pragma omp target
16600 #pragma omp teams distribute simd
16601 for (int i = 0; i < 10; ++i) {
16602 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16603 ++a;
16604 }
16605 #pragma omp target
16606 #pragma omp teams distribute simd
16607 for (int i = 0; i < 10; ++i) {
16608 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16609 for (int i = 0; i < 10; ++i)
16610 ++a;
16611 }
16612 #pragma omp target
16613 #pragma omp teams distribute simd
16614 for (int i = 0; i < 10; ++i) {
16615 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16616 for (int i = 0; i < 10; ++i)
16617 ++a;
16618 }
16619 #pragma omp target
16620 #pragma omp teams distribute simd
16621 for (int i = 0; i < 10; ++i) {
16622 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16623 for (int i = 0; i < 10; ++i)
16624 ++a;
16625 }
16626 #pragma omp target
16627 #pragma omp teams distribute simd
16628 for (int i = 0; i < 10; ++i) {
16629 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16630 for (int i = 0; i < 10; ++i)
16631 ++a;
16632 }
16633
16634 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
16635 #pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
16636 for (int i = 0; i < 10; ++i)
16637 ;
16638 #pragma omp target
16639 #pragma omp teams distribute parallel for simd
16640 for (int i = 0; i < 10; ++i) {
16641 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16642 for (int i = 0; i < 10; ++i)
16643 ;
16644 }
16645 #pragma omp target
16646 #pragma omp teams distribute parallel for simd
16647 for (int i = 0; i < 10; ++i) {
16648 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16649 for (int i = 0; i < 10; ++i)
16650 ;
16651 }
16652 #pragma omp target
16653 #pragma omp teams distribute parallel for simd
16654 for (int i = 0; i < 10; ++i) {
16655 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16656 for (int i = 0; i < 10; ++i)
16657 ;
16658 }
16659 #pragma omp target
16660 #pragma omp teams distribute parallel for simd
16661 for (int i = 0; i < 10; ++i) {
16662 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
16663 for (int i = 0; i < 10; ++i)
16664 ;
16665 }
16666 #pragma omp target
16667 #pragma omp teams distribute parallel for simd
16668 for (int i = 0; i < 10; ++i) {
16669 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16670 for (int i = 0; i < 10; ++i)
16671 ;
16672 }
16673 #pragma omp target
16674 #pragma omp teams distribute parallel for simd
16675 for (int i = 0; i < 10; ++i) {
16676 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16677 for (int i = 0; i < 10; ++i)
16678 ;
16679 }
16680 #pragma omp target
16681 #pragma omp teams distribute parallel for simd
16682 for (int i = 0; i < 10; ++i) {
16683 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16684 {
16685 bar();
16686 }
16687 }
16688 #pragma omp target
16689 #pragma omp teams distribute parallel for simd
16690 for (int i = 0; i < 10; ++i) {
16691 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16692 {
16693 bar();
16694 }
16695 }
16696 #pragma omp target
16697 #pragma omp teams distribute parallel for simd
16698 for (int i = 0; i < 10; ++i) {
16699 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16700 {
16701 bar();
16702 }
16703 }
16704 #pragma omp target
16705 #pragma omp teams distribute parallel for simd
16706 for (int i = 0; i < 10; ++i) {
16707 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16708 {
16709 bar();
16710 }
16711 }
16712 #pragma omp target
16713 #pragma omp teams distribute parallel for simd
16714 for (int i = 0; i < 10; ++i) {
16715 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16716 {
16717 bar();
16718 }
16719 }
16720 #pragma omp target
16721 #pragma omp teams distribute parallel for simd
16722 for (int i = 0; i < 10; ++i) {
16723 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16724 {
16725 #pragma omp single
16726 {
16727 bar();
16728 }
16729 }
16730 }
16731 #pragma omp target
16732 #pragma omp teams distribute parallel for simd
16733 for (int i = 0; i < 10; ++i) {
16734 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16735 for (int i = 0; i < 10; ++i)
16736 ;
16737 }
16738 #pragma omp target
16739 #pragma omp teams distribute parallel for simd
16740 for (int i = 0; i < 10; ++i) {
16741 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16742 for (int i = 0; i < 10; ++i)
16743 ;
16744 }
16745 #pragma omp target
16746 #pragma omp teams distribute parallel for simd
16747 for (int i = 0; i < 10; ++i) {
16748 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16749 {
16750 bar();
16751 }
16752 }
16753 #pragma omp target
16754 #pragma omp teams distribute parallel for simd
16755 for (int i = 0; i < 10; ++i) {
16756 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16757 {
16758 bar();
16759 }
16760 }
16761 #pragma omp target
16762 #pragma omp teams distribute parallel for simd
16763 for (int i = 0; i < 10; ++i) {
16764 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16765 bar();
16766 }
16767 #pragma omp target
16768 #pragma omp teams distribute parallel for simd
16769 for (int i = 0; i < 10; ++i) {
16770 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16771 bar();
16772 }
16773 #pragma omp target
16774 #pragma omp teams distribute parallel for simd
16775 for (int i = 0; i < 10; ++i) {
16776 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
16777 bar();
16778 }
16779 #pragma omp target
16780 #pragma omp teams distribute parallel for simd
16781 for (int i = 0; i < 10; ++i) {
16782 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16783 bar();
16784 }
16785 #pragma omp target
16786 #pragma omp teams distribute parallel for simd
16787 for (int i = 0; i < 10; ++i) {
16788 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16789 bar();
16790 }
16791 #pragma omp target
16792 #pragma omp teams distribute parallel for simd
16793 for (int i = 0; i < 10; ++i) {
16794 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16795 bar();
16796 }
16797 #pragma omp target
16798 #pragma omp teams distribute parallel for simd
16799 for (int i = 0; i < 10; ++i) {
16800 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
16801 ++a;
16802 }
16803 #pragma omp target
16804 #pragma omp teams distribute parallel for simd
16805 for (int i = 0; i < 10; ++i) {
16806 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16807 ++a;
16808 }
16809 #pragma omp target
16810 #pragma omp teams distribute parallel for simd
16811 for (int i = 0; i < 10; ++i) {
16812 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16813 ++a;
16814 }
16815 #pragma omp target
16816 #pragma omp teams distribute parallel for simd
16817 for (int i = 0; i < 10; ++i) {
16818 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16819 for (int i = 0; i < 10; ++i)
16820 ;
16821 }
16822 #pragma omp target
16823 #pragma omp teams distribute parallel for simd
16824 for (int i = 0; i < 10; ++i) {
16825 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16826 ++a;
16827 }
16828 #pragma omp target
16829 #pragma omp teams distribute parallel for simd
16830 for (int i = 0; i < 10; ++i) {
16831 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16832 ++a;
16833 }
16834 #pragma omp target
16835 #pragma omp teams distribute parallel for simd
16836 for (int i = 0; i < 10; ++i) {
16837 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16838 ++a;
16839 }
16840 #pragma omp target
16841 #pragma omp teams distribute parallel for simd
16842 for (int i = 0; i < 10; ++i) {
16843 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16844 ++a;
16845 }
16846 #pragma omp target
16847 #pragma omp teams distribute parallel for simd
16848 for (int i = 0; i < 10; ++i) {
16849 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16850 for (int i = 0; i < 10; ++i)
16851 ++a;
16852 }
16853 #pragma omp target
16854 #pragma omp teams distribute parallel for simd
16855 for (int i = 0; i < 10; ++i) {
16856 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16857 for (int i = 0; i < 10; ++i)
16858 ++a;
16859 }
16860 #pragma omp target
16861 #pragma omp teams distribute parallel for simd
16862 for (int i = 0; i < 10; ++i) {
16863 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16864 for (int i = 0; i < 10; ++i)
16865 ++a;
16866 }
16867 #pragma omp target
16868 #pragma omp teams distribute parallel for simd
16869 for (int i = 0; i < 10; ++i) {
16870 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16871 for (int i = 0; i < 10; ++i)
16872 ++a;
16873 }
16874 #pragma omp target
16875 #pragma omp teams distribute parallel for simd
16876 for (int i = 0; i < 10; ++i) {
16877 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16878 for (int i = 0; i < 10; ++i)
16879 ++a;
16880 }
16881 #pragma omp target
16882 #pragma omp teams distribute parallel for simd
16883 for (int i = 0; i < 10; ++i) {
16884 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16885 for (int i = 0; i < 10; ++i)
16886 ++a;
16887 }
16888 #pragma omp target
16889 #pragma omp teams distribute parallel for simd
16890 for (int i = 0; i < 10; ++i) {
16891 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16892 ++a;
16893 }
16894 #pragma omp target
16895 #pragma omp teams distribute parallel for simd
16896 for (int i = 0; i < 10; ++i) {
16897 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16898 for (int i = 0; i < 10; ++i)
16899 ++a;
16900 }
16901 #pragma omp target
16902 #pragma omp teams distribute parallel for simd
16903 for (int i = 0; i < 10; ++i) {
16904 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16905 for (int i = 0; i < 10; ++i)
16906 ++a;
16907 }
16908 #pragma omp target
16909 #pragma omp teams distribute parallel for simd
16910 for (int i = 0; i < 10; ++i) {
16911 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16912 for (int i = 0; i < 10; ++i)
16913 ++a;
16914 }
16915 #pragma omp target
16916 #pragma omp teams distribute parallel for simd
16917 for (int i = 0; i < 10; ++i) {
16918 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16919 for (int i = 0; i < 10; ++i)
16920 ++a;
16921 }
16922
16923 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
16924 #pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
16925 for (int i = 0; i < 10; ++i)
16926 ;
16927 #pragma omp target
16928 #pragma omp teams distribute parallel for
16929 for (int i = 0; i < 10; ++i) {
16930 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
16931 for (int i = 0; i < 10; ++i)
16932 ;
16933 }
16934 #pragma omp target
16935 #pragma omp teams distribute parallel for
16936 for (int i = 0; i < 10; ++i) {
16937 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
16938 for (int i = 0; i < 10; ++i)
16939 ;
16940 }
16941 #pragma omp target
16942 #pragma omp teams distribute parallel for
16943 for (int i = 0; i < 10; ++i) {
16944 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
16945 for (int i = 0; i < 10; ++i)
16946 ;
16947 }
16948 #pragma omp target
16949 #pragma omp teams distribute parallel for
16950 for (int i = 0; i < 10; ++i) {
16951 #pragma omp simd // OK
16952 for (int i = 0; i < 10; ++i)
16953 ;
16954 }
16955 #pragma omp target
16956 #pragma omp teams distribute parallel for
16957 for (int i = 0; i < 10; ++i) {
16958 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
16959 for (int i = 0; i < 10; ++i)
16960 ;
16961 }
16962 #pragma omp target
16963 #pragma omp teams distribute parallel for
16964 for (int i = 0; i < 10; ++i) {
16965 #pragma omp parallel // OK
16966 for (int i = 0; i < 10; ++i)
16967 ;
16968 }
16969 #pragma omp target
16970 #pragma omp teams distribute parallel for
16971 for (int i = 0; i < 10; ++i) {
16972 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
16973 {
16974 bar();
16975 }
16976 }
16977 #pragma omp target
16978 #pragma omp teams distribute parallel for
16979 for (int i = 0; i < 10; ++i) {
16980 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}
16981 {
16982 bar();
16983 }
16984 }
16985 #pragma omp target
16986 #pragma omp teams distribute parallel for
16987 for (int i = 0; i < 10; ++i) {
16988 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
16989 {
16990 bar();
16991 }
16992 }
16993 #pragma omp target
16994 #pragma omp teams distribute parallel for
16995 for (int i = 0; i < 10; ++i) {
16996 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
16997 {
16998 bar();
16999 }
17000 }
17001 #pragma omp target
17002 #pragma omp teams distribute parallel for
17003 for (int i = 0; i < 10; ++i) {
17004 #pragma omp critical // OK
17005 {
17006 bar();
17007 }
17008 }
17009 #pragma omp target
17010 #pragma omp teams distribute parallel for
17011 for (int i = 0; i < 10; ++i) {
17012 #pragma omp parallel // OK
17013 {
17014 #pragma omp single
17015 {
17016 bar();
17017 }
17018 }
17019 }
17020 #pragma omp target
17021 #pragma omp teams distribute parallel for
17022 for (int i = 0; i < 10; ++i) {
17023 #pragma omp parallel for // OK
17024 for (int i = 0; i < 10; ++i)
17025 ;
17026 }
17027 #pragma omp target
17028 #pragma omp teams distribute parallel for
17029 for (int i = 0; i < 10; ++i) {
17030 #pragma omp parallel for simd // OK
17031 for (int i = 0; i < 10; ++i)
17032 ;
17033 }
17034 #pragma omp target
17035 #pragma omp teams distribute parallel for
17036 for (int i = 0; i < 10; ++i) {
17037 #pragma omp parallel sections // OK
17038 {
17039 bar();
17040 }
17041 }
17042 #pragma omp target
17043 #pragma omp teams distribute parallel for
17044 for (int i = 0; i < 10; ++i) {
17045 #pragma omp task // OK
17046 {
17047 bar();
17048 }
17049 }
17050 #pragma omp target
17051 #pragma omp teams distribute parallel for
17052 for (int i = 0; i < 10; ++i) {
17053 #pragma omp taskyield // OK
17054 bar();
17055 }
17056 #pragma omp target
17057 #pragma omp teams distribute parallel for
17058 for (int i = 0; i < 10; ++i) {
17059 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
17060 bar();
17061 }
17062 #pragma omp target
17063 #pragma omp teams distribute parallel for
17064 for (int i = 0; i < 10; ++i) {
17065 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
17066 bar();
17067 }
17068 #pragma omp target
17069 #pragma omp teams distribute parallel for
17070 for (int i = 0; i < 10; ++i) {
17071 #pragma omp taskwait // OK
17072 bar();
17073 }
17074 #pragma omp target
17075 #pragma omp teams distribute parallel for
17076 for (int i = 0; i < 10; ++i) {
17077 #pragma omp flush // OK
17078 bar();
17079 }
17080 #pragma omp target
17081 #pragma omp teams distribute parallel for
17082 for (int i = 0; i < 10; ++i) {
17083 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
17084 bar();
17085 }
17086 #pragma omp target
17087 #pragma omp teams distribute parallel for
17088 for (int i = 0; i < 10; ++i) {
17089 #pragma omp atomic // OK
17090 ++a;
17091 }
17092 #pragma omp target
17093 #pragma omp teams distribute parallel for
17094 for (int i = 0; i < 10; ++i) {
17095 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
17096 ++a;
17097 }
17098 #pragma omp target
17099 #pragma omp teams distribute parallel for
17100 for (int i = 0; i < 10; ++i) {
17101 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
17102 ++a;
17103 }
17104 #pragma omp target
17105 #pragma omp teams distribute parallel for
17106 for (int i = 0; i < 10; ++i) {
17107 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
17108 for (int i = 0; i < 10; ++i)
17109 ;
17110 }
17111 #pragma omp target
17112 #pragma omp teams distribute parallel for
17113 for (int i = 0; i < 10; ++i) {
17114 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
17115 ++a;
17116 }
17117 #pragma omp target
17118 #pragma omp teams distribute parallel for
17119 for (int i = 0; i < 10; ++i) {
17120 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
17121 ++a;
17122 }
17123 #pragma omp target
17124 #pragma omp teams distribute parallel for
17125 for (int i = 0; i < 10; ++i) {
17126 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
17127 ++a;
17128 }
17129 #pragma omp target
17130 #pragma omp teams distribute parallel for
17131 for (int i = 0; i < 10; ++i) {
17132 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
17133 ++a;
17134 }
17135 #pragma omp target
17136 #pragma omp teams distribute parallel for
17137 for (int i = 0; i < 10; ++i) {
17138 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
17139 for (int i = 0; i < 10; ++i)
17140 ++a;
17141 }
17142 #pragma omp target
17143 #pragma omp teams distribute parallel for
17144 for (int i = 0; i < 10; ++i) {
17145 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
17146 for (int i = 0; i < 10; ++i)
17147 ++a;
17148 }
17149 #pragma omp target
17150 #pragma omp teams distribute parallel for
17151 for (int i = 0; i < 10; ++i) {
17152 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
17153 for (int i = 0; i < 10; ++i)
17154 ++a;
17155 }
17156 #pragma omp target
17157 #pragma omp teams distribute parallel for
17158 for (int i = 0; i < 10; ++i) {
17159 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
17160 for (int i = 0; i < 10; ++i)
17161 ++a;
17162 }
17163 #pragma omp target
17164 #pragma omp teams distribute parallel for
17165 for (int i = 0; i < 10; ++i) {
17166 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
17167 for (int i = 0; i < 10; ++i)
17168 ++a;
17169 }
17170 #pragma omp target
17171 #pragma omp teams distribute parallel for
17172 for (int i = 0; i < 10; ++i) {
17173 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
17174 for (int i = 0; i < 10; ++i)
17175 ++a;
17176 }
17177 #pragma omp target
17178 #pragma omp teams distribute parallel for
17179 for (int i = 0; i < 10; ++i) {
17180 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
17181 ++a;
17182 }
17183 #pragma omp target
17184 #pragma omp teams distribute parallel for
17185 for (int i = 0; i < 10; ++i) {
17186 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
17187 for (int i = 0; i < 10; ++i)
17188 ++a;
17189 }
17190 #pragma omp target
17191 #pragma omp teams distribute parallel for
17192 for (int i = 0; i < 10; ++i) {
17193 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
17194 for (int i = 0; i < 10; ++i)
17195 ++a;
17196 }
17197 #pragma omp target
17198 #pragma omp teams distribute parallel for
17199 for (int i = 0; i < 10; ++i) {
17200 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
17201 for (int i = 0; i < 10; ++i)
17202 ++a;
17203 }
17204 #pragma omp target
17205 #pragma omp teams distribute parallel for
17206 for (int i = 0; i < 10; ++i) {
17207 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
17208 for (int i = 0; i < 10; ++i)
17209 ++a;
17210 }
17211
17212 // TARGET TEAMS DIRECTIVE
17213 #pragma omp target teams
17214 #pragma omp parallel
17215 bar();
17216 #pragma omp target teams
17217 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
17218 for (int i = 0; i < 10; ++i)
17219 ;
17220 #pragma omp target teams
17221 #pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}}
17222 for (int i = 0; i < 10; ++i)
17223 ;
17224 #pragma omp target teams
17225 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
17226 for (int i = 0; i < 10; ++i)
17227 ;
17228 #pragma omp target teams
17229 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
17230 {
17231 bar();
17232 }
17233 #pragma omp target teams
17234 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}
17235 {
17236 bar();
17237 }
17238 #pragma omp target teams
17239 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}
17240 bar();
17241
17242 #pragma omp target teams
17243 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}}
17244 {
17245 bar();
17246 }
17247 #pragma omp target teams
17248 #pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}}
17249 {
17250 bar();
17251 }
17252 #pragma omp target teams
17253 #pragma omp parallel for
17254 for (int i = 0; i < 10; ++i)
17255 ;
17256 #pragma omp target teams
17257 #pragma omp parallel for simd
17258 for (int i = 0; i < 10; ++i)
17259 ;
17260 #pragma omp target teams
17261 #pragma omp parallel sections
17262 {
17263 bar();
17264 }
17265 #pragma omp target teams
17266 #pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}}
17267 {
17268 bar();
17269 }
17270 #pragma omp target teams
17271 {
17272 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}}
17273 bar();
17274 }
17275 #pragma omp target teams
17276 {
17277 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}}
17278 bar();
17279 }
17280 #pragma omp target teams
17281 {
17282 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
17283 bar();
17284 }
17285 #pragma omp target teams
17286 {
17287 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}}
17288 bar();
17289 }
17290 #pragma omp target teams
17291 {
17292 #pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}}
17293 bar();
17294 }
17295 #pragma omp target teams
17296 {
17297 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
17298 bar();
17299 }
17300 #pragma omp target teams
17301 {
17302 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}
17303 ++a;
17304 }
17305 #pragma omp target teams
17306 {
17307 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}
17308 ++a;
17309 }
17310 #pragma omp target teams
17311 {
17312 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}
17313 ++a;
17314 }
17315 #pragma omp target teams
17316 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
17317 for (int i = 0; i < 10; ++i)
17318 ;
17319 #pragma omp target teams
17320 {
17321 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}
17322 }
17323 #pragma omp target teams
17324 {
17325 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}
17326 }
17327 #pragma omp target teams
17328 {
17329 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
17330 ++a;
17331 }
17332 #pragma omp target teams
17333 {
17334 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}}
17335 for (int i = 0; i < 10; ++i)
17336 ++a;
17337 }
17338 #pragma omp target teams
17339 #pragma omp distribute
17340 for (int i = 0; i < 10; ++i)
17341 ;
17342 #pragma omp target teams
17343 {
17344 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}
17345 ++a;
17346 }
17347 #pragma omp target teams
17348 #pragma omp distribute parallel for
17349 for (int i = 0; i < 10; ++i)
17350 ;
17351 #pragma omp target teams
17352 {
17353 #pragma omp distribute parallel for
17354 for (int i = 0; i < 10; ++i)
17355 ;
17356 #pragma omp distribute parallel for
17357 for (int j = 0; j < 10; ++j)
17358 ;
17359 }
17360 #pragma omp target teams
17361 {
17362 #pragma omp distribute parallel for simd
17363 for (int i = 0; i < 10; ++i)
17364 ;
17365 #pragma omp distribute parallel for simd
17366 for (int j = 0; j < 10; ++j)
17367 ;
17368 }
17369 #pragma omp target teams
17370 {
17371 #pragma omp distribute simd
17372 for (int i = 0; i < 10; ++i)
17373 ;
17374 #pragma omp distribute simd
17375 for (int j = 0; j < 10; ++j)
17376 ;
17377 }
17378 #pragma omp target teams
17379 {
17380 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}
17381 for (int i = 0; i < 10; ++i)
17382 ;
17383 }
17384 #pragma omp target teams
17385 {
17386 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
17387 for (int i = 0; i < 10; ++i)
17388 ;
17389 }
17390 #pragma omp target teams
17391 {
17392 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
17393 for (int i = 0; i < 10; ++i)
17394 ;
17395 }
17396 #pragma omp target teams
17397 {
17398 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
17399 for (int i = 0; i < 10; ++i)
17400 ;
17401 }
17402 #pragma omp target teams
17403 {
17404 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
17405 for (int i = 0; i < 10; ++i)
17406 ;
17407 }
17408 #pragma omp target teams
17409 {
17410 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}
17411 a++;
17412 }
17413 #pragma omp target teams
17414 {
17415 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}
17416 for (int i = 0; i < 10; ++i)
17417 ;
17418 }
17419 #pragma omp target teams
17420 {
17421 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
17422 for (int i = 0; i < 10; ++i)
17423 ;
17424 }
17425 #pragma omp target teams
17426 {
17427 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}
17428 for (int i = 0; i < 10; ++i)
17429 ;
17430 }
17431 #pragma omp target teams
17432 {
17433 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}
17434 for (int i = 0; i < 10; ++i)
17435 ;
17436 }
17437
17438 // TARGET TEAMS DISTRIBUTE DIRECTIVE
17439 #pragma omp target teams distribute // OK
17440 for (int i = 0; i < 10; ++i)
17441 ;
17442 #pragma omp target teams distribute
17443 for (int i = 0; i < 10; ++i) {
17444 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
17445 for (int i = 0; i < 10; ++i)
17446 ;
17447 }
17448 #pragma omp target teams distribute
17449 for (int i = 0; i < 10; ++i) {
17450 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
17451 for (int i = 0; i < 10; ++i)
17452 ;
17453 }
17454 #pragma omp target teams distribute
17455 for (int i = 0; i < 10; ++i) {
17456 #pragma omp for // OK
17457 for (int i = 0; i < 10; ++i)
17458 ;
17459 }
17460 #pragma omp target teams distribute
17461 for (int i = 0; i < 10; ++i) {
17462 #pragma omp simd // OK
17463 for (int i = 0; i < 10; ++i)
17464 ;
17465 }
17466 #pragma omp target teams distribute
17467 for (int i = 0; i < 10; ++i) {
17468 #pragma omp for simd // OK
17469 for (int i = 0; i < 10; ++i)
17470 ;
17471 }
17472 #pragma omp target teams distribute
17473 for (int i = 0; i < 10; ++i) {
17474 #pragma omp parallel // OK
17475 for (int i = 0; i < 10; ++i)
17476 ;
17477 }
17478 #pragma omp target teams distribute
17479 for (int i = 0; i < 10; ++i) {
17480 #pragma omp sections // OK
17481 {
17482 bar();
17483 }
17484 }
17485 #pragma omp target teams distribute
17486 for (int i = 0; i < 10; ++i) {
17487 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}
17488 {
17489 bar();
17490 }
17491 }
17492 #pragma omp target teams distribute
17493 for (int i = 0; i < 10; ++i) {
17494 #pragma omp single // OK
17495 {
17496 bar();
17497 }
17498 }
17499 #pragma omp target teams distribute
17500 for (int i = 0; i < 10; ++i) {
17501 #pragma omp master // OK
17502 {
17503 bar();
17504 }
17505 }
17506 #pragma omp target teams distribute
17507 for (int i = 0; i < 10; ++i) {
17508 #pragma omp critical // OK
17509 {
17510 bar();
17511 }
17512 }
17513 #pragma omp target teams distribute
17514 for (int i = 0; i < 10; ++i) {
17515 #pragma omp parallel // OK
17516 {
17517 #pragma omp single
17518 {
17519 bar();
17520 }
17521 }
17522 }
17523 #pragma omp target teams distribute
17524 for (int i = 0; i < 10; ++i) {
17525 #pragma omp parallel for // OK
17526 for (int i = 0; i < 10; ++i)
17527 ;
17528 }
17529 #pragma omp target teams distribute
17530 for (int i = 0; i < 10; ++i) {
17531 #pragma omp parallel for simd // OK
17532 for (int i = 0; i < 10; ++i)
17533 ;
17534 }
17535 #pragma omp target teams distribute
17536 for (int i = 0; i < 10; ++i) {
17537 #pragma omp parallel sections // OK
17538 {
17539 bar();
17540 }
17541 }
17542 #pragma omp target teams distribute
17543 for (int i = 0; i < 10; ++i) {
17544 #pragma omp task // OK
17545 {
17546 bar();
17547 }
17548 }
17549 #pragma omp target teams distribute
17550 for (int i = 0; i < 10; ++i) {
17551 #pragma omp taskyield // OK
17552 bar();
17553 }
17554 #pragma omp target teams distribute
17555 for (int i = 0; i < 10; ++i) {
17556 #pragma omp barrier // OK
17557 bar();
17558 }
17559 #pragma omp target teams distribute
17560 for (int i = 0; i < 10; ++i) {
17561 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
17562 bar();
17563 }
17564 #pragma omp target teams distribute
17565 for (int i = 0; i < 10; ++i) {
17566 #pragma omp taskwait // OK
17567 bar();
17568 }
17569 #pragma omp target teams distribute
17570 for (int i = 0; i < 10; ++i) {
17571 #pragma omp flush // OK
17572 bar();
17573 }
17574 #pragma omp target teams distribute
17575 for (int i = 0; i < 10; ++i) {
17576 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
17577 bar();
17578 }
17579 #pragma omp target teams distribute
17580 for (int i = 0; i < 10; ++i) {
17581 #pragma omp atomic // OK
17582 ++a;
17583 }
17584 #pragma omp target teams distribute
17585 for (int i = 0; i < 10; ++i) {
17586 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17587 ++a;
17588 }
17589 #pragma omp target teams distribute
17590 for (int i = 0; i < 10; ++i) {
17591 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17592 ++a;
17593 }
17594 #pragma omp target teams distribute
17595 for (int i = 0; i < 10; ++i) {
17596 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17597 for (int i = 0; i < 10; ++i)
17598 ;
17599 }
17600 #pragma omp target teams distribute
17601 for (int i = 0; i < 10; ++i) {
17602 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17603 ++a;
17604 }
17605 #pragma omp target teams distribute
17606 for (int i = 0; i < 10; ++i) {
17607 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17608 ++a;
17609 }
17610 #pragma omp target teams distribute
17611 for (int i = 0; i < 10; ++i) {
17612 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
17613 ++a;
17614 }
17615 #pragma omp target teams distribute
17616 for (int i = 0; i < 10; ++i) {
17617 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17618 ++a;
17619 }
17620 #pragma omp target teams distribute
17621 for (int i = 0; i < 10; ++i) {
17622 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
17623 for (int i = 0; i < 10; ++i)
17624 ++a;
17625 }
17626 #pragma omp target teams distribute
17627 for (int i = 0; i < 10; ++i) {
17628 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17629 for (int i = 0; i < 10; ++i)
17630 ++a;
17631 }
17632 #pragma omp target teams distribute
17633 for (int i = 0; i < 10; ++i) {
17634 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
17635 for (int i = 0; i < 10; ++i)
17636 ++a;
17637 }
17638 #pragma omp target teams distribute
17639 for (int i = 0; i < 10; ++i) {
17640 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
17641 for (int i = 0; i < 10; ++i)
17642 ++a;
17643 }
17644 #pragma omp target teams distribute
17645 for (int i = 0; i < 10; ++i) {
17646 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
17647 for (int i = 0; i < 10; ++i)
17648 ++a;
17649 }
17650 #pragma omp target teams distribute
17651 for (int i = 0; i < 10; ++i) {
17652 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
17653 for (int i = 0; i < 10; ++i)
17654 ++a;
17655 }
17656 #pragma omp target teams distribute
17657 for (int i = 0; i < 10; ++i) {
17658 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17659 ++a;
17660 }
17661 #pragma omp target teams distribute
17662 for (int i = 0; i < 10; ++i) {
17663 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17664 for (int i = 0; i < 10; ++i)
17665 ++a;
17666 }
17667 #pragma omp target teams distribute
17668 for (int i = 0; i < 10; ++i) {
17669 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17670 for (int i = 0; i < 10; ++i)
17671 ++a;
17672 }
17673 #pragma omp target teams distribute
17674 for (int i = 0; i < 10; ++i) {
17675 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17676 for (int i = 0; i < 10; ++i)
17677 ++a;
17678 }
17679 #pragma omp target teams distribute
17680 for (int i = 0; i < 10; ++i) {
17681 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
17682 for (int i = 0; i < 10; ++i)
17683 ++a;
17684 }
17685
17686 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
17687 #pragma omp target teams distribute parallel for // OK
17688 for (int i = 0; i < 10; ++i)
17689 ;
17690 #pragma omp target teams distribute parallel for
17691 for (int i = 0; i < 10; ++i) {
17692 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}
17693 for (int i = 0; i < 10; ++i)
17694 ;
17695 }
17696 #pragma omp target teams distribute parallel for
17697 for (int i = 0; i < 10; ++i) {
17698 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
17699 for (int i = 0; i < 10; ++i)
17700 ;
17701 }
17702 #pragma omp target teams distribute parallel for
17703 for (int i = 0; i < 10; ++i) {
17704 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}
17705 for (int i = 0; i < 10; ++i)
17706 ;
17707 }
17708 #pragma omp target teams distribute parallel for
17709 for (int i = 0; i < 10; ++i) {
17710 #pragma omp simd // OK
17711 for (int i = 0; i < 10; ++i)
17712 ;
17713 }
17714 #pragma omp target teams distribute parallel for
17715 for (int i = 0; i < 10; ++i) {
17716 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}
17717 for (int i = 0; i < 10; ++i)
17718 ;
17719 }
17720 #pragma omp target teams distribute parallel for
17721 for (int i = 0; i < 10; ++i) {
17722 #pragma omp parallel // OK
17723 for (int i = 0; i < 10; ++i)
17724 ;
17725 }
17726 #pragma omp target teams distribute parallel for
17727 for (int i = 0; i < 10; ++i) {
17728 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}
17729 {
17730 bar();
17731 }
17732 }
17733 #pragma omp target teams distribute parallel for
17734 for (int i = 0; i < 10; ++i) {
17735 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}}
17736 {
17737 bar();
17738 }
17739 }
17740 #pragma omp target teams distribute parallel for
17741 for (int i = 0; i < 10; ++i) {
17742 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
17743 {
17744 bar();
17745 }
17746 }
17747 #pragma omp target teams distribute parallel for
17748 for (int i = 0; i < 10; ++i) {
17749 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
17750 {
17751 bar();
17752 }
17753 }
17754 #pragma omp target teams distribute parallel for
17755 for (int i = 0; i < 10; ++i) {
17756 #pragma omp critical // OK
17757 {
17758 bar();
17759 }
17760 }
17761 #pragma omp target teams distribute parallel for
17762 for (int i = 0; i < 10; ++i) {
17763 #pragma omp parallel // OK
17764 {
17765 #pragma omp single
17766 {
17767 bar();
17768 }
17769 }
17770 }
17771 #pragma omp target teams distribute parallel for
17772 for (int i = 0; i < 10; ++i) {
17773 #pragma omp parallel for // OK
17774 for (int i = 0; i < 10; ++i)
17775 ;
17776 }
17777 #pragma omp target teams distribute parallel for
17778 for (int i = 0; i < 10; ++i) {
17779 #pragma omp parallel for simd // OK
17780 for (int i = 0; i < 10; ++i)
17781 ;
17782 }
17783 #pragma omp target teams distribute parallel for
17784 for (int i = 0; i < 10; ++i) {
17785 #pragma omp parallel sections // OK
17786 {
17787 bar();
17788 }
17789 }
17790 #pragma omp target teams distribute parallel for
17791 for (int i = 0; i < 10; ++i) {
17792 #pragma omp task // OK
17793 {
17794 bar();
17795 }
17796 }
17797 #pragma omp target teams distribute parallel for
17798 for (int i = 0; i < 10; ++i) {
17799 #pragma omp taskyield // OK
17800 bar();
17801 }
17802 #pragma omp target teams distribute parallel for
17803 for (int i = 0; i < 10; ++i) {
17804 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
17805 bar();
17806 }
17807 #pragma omp target teams distribute parallel for
17808 for (int i = 0; i < 10; ++i) {
17809 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
17810 bar();
17811 }
17812 #pragma omp target teams distribute parallel for
17813 for (int i = 0; i < 10; ++i) {
17814 #pragma omp taskwait // OK
17815 bar();
17816 }
17817 #pragma omp target teams distribute parallel for
17818 for (int i = 0; i < 10; ++i) {
17819 #pragma omp flush // OK
17820 bar();
17821 }
17822 #pragma omp target teams distribute parallel for
17823 for (int i = 0; i < 10; ++i) {
17824 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
17825 bar();
17826 }
17827 #pragma omp target teams distribute parallel for
17828 for (int i = 0; i < 10; ++i) {
17829 #pragma omp atomic // OK
17830 ++a;
17831 }
17832 #pragma omp target teams distribute parallel for
17833 for (int i = 0; i < 10; ++i) {
17834 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17835 ++a;
17836 }
17837 #pragma omp target teams distribute parallel for
17838 for (int i = 0; i < 10; ++i) {
17839 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17840 ++a;
17841 }
17842 #pragma omp target teams distribute parallel for
17843 for (int i = 0; i < 10; ++i) {
17844 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17845 for (int i = 0; i < 10; ++i)
17846 ;
17847 }
17848 #pragma omp target teams distribute parallel for
17849 for (int i = 0; i < 10; ++i) {
17850 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17851 ++a;
17852 }
17853 #pragma omp target teams distribute parallel for
17854 for (int i = 0; i < 10; ++i) {
17855 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17856 ++a;
17857 }
17858 #pragma omp target teams distribute parallel for
17859 for (int i = 0; i < 10; ++i) {
17860 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
17861 ++a;
17862 }
17863 #pragma omp target teams distribute parallel for
17864 for (int i = 0; i < 10; ++i) {
17865 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17866 ++a;
17867 }
17868 #pragma omp target teams distribute parallel for
17869 for (int i = 0; i < 10; ++i) {
17870 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}
17871 for (int i = 0; i < 10; ++i)
17872 ++a;
17873 }
17874 #pragma omp target teams distribute parallel for
17875 for (int i = 0; i < 10; ++i) {
17876 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17877 for (int i = 0; i < 10; ++i)
17878 ++a;
17879 }
17880 #pragma omp target teams distribute parallel for
17881 for (int i = 0; i < 10; ++i) {
17882 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}
17883 for (int i = 0; i < 10; ++i)
17884 ++a;
17885 }
17886 #pragma omp target teams distribute parallel for
17887 for (int i = 0; i < 10; ++i) {
17888 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}
17889 for (int i = 0; i < 10; ++i)
17890 ++a;
17891 }
17892 #pragma omp target teams distribute parallel for
17893 for (int i = 0; i < 10; ++i) {
17894 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}
17895 for (int i = 0; i < 10; ++i)
17896 ++a;
17897 }
17898 #pragma omp target teams distribute parallel for
17899 for (int i = 0; i < 10; ++i) {
17900 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}
17901 for (int i = 0; i < 10; ++i)
17902 ++a;
17903 }
17904 #pragma omp target teams distribute parallel for
17905 for (int i = 0; i < 10; ++i) {
17906 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17907 ++a;
17908 }
17909 #pragma omp target teams distribute parallel for
17910 for (int i = 0; i < 10; ++i) {
17911 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17912 for (int i = 0; i < 10; ++i)
17913 ++a;
17914 }
17915 #pragma omp target teams distribute parallel for
17916 for (int i = 0; i < 10; ++i) {
17917 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17918 for (int i = 0; i < 10; ++i)
17919 ++a;
17920 }
17921 #pragma omp target teams distribute parallel for
17922 for (int i = 0; i < 10; ++i) {
17923 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17924 for (int i = 0; i < 10; ++i)
17925 ++a;
17926 }
17927 #pragma omp target teams distribute parallel for
17928 for (int i = 0; i < 10; ++i) {
17929 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17930 for (int i = 0; i < 10; ++i)
17931 ++a;
17932 }
17933
17934 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
17935 #pragma omp target teams distribute parallel for simd // OK
17936 for (int i = 0; i < 10; ++i)
17937 ;
17938 #pragma omp target teams distribute parallel for simd
17939 for (int i = 0; i < 10; ++i) {
17940 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17941 for (int i = 0; i < 10; ++i)
17942 ;
17943 }
17944 #pragma omp target teams distribute parallel for simd
17945 for (int i = 0; i < 10; ++i) {
17946 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17947 for (int i = 0; i < 10; ++i)
17948 ;
17949 }
17950 #pragma omp target teams distribute parallel for simd
17951 for (int i = 0; i < 10; ++i) {
17952 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17953 for (int i = 0; i < 10; ++i)
17954 ;
17955 }
17956 #pragma omp target teams distribute parallel for simd
17957 for (int i = 0; i < 10; ++i) {
17958 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
17959 for (int i = 0; i < 10; ++i)
17960 ;
17961 }
17962 #pragma omp target teams distribute parallel for simd
17963 for (int i = 0; i < 10; ++i) {
17964 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17965 for (int i = 0; i < 10; ++i)
17966 ;
17967 }
17968 #pragma omp target teams distribute parallel for simd
17969 for (int i = 0; i < 10; ++i) {
17970 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17971 for (int i = 0; i < 10; ++i)
17972 ;
17973 }
17974 #pragma omp target teams distribute parallel for simd
17975 for (int i = 0; i < 10; ++i) {
17976 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17977 {
17978 bar();
17979 }
17980 }
17981 #pragma omp target teams distribute parallel for simd
17982 for (int i = 0; i < 10; ++i) {
17983 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17984 {
17985 bar();
17986 }
17987 }
17988 #pragma omp target teams distribute parallel for simd
17989 for (int i = 0; i < 10; ++i) {
17990 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17991 {
17992 bar();
17993 }
17994 }
17995 #pragma omp target teams distribute parallel for simd
17996 for (int i = 0; i < 10; ++i) {
17997 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17998 {
17999 bar();
18000 }
18001 }
18002 #pragma omp target teams distribute parallel for simd
18003 for (int i = 0; i < 10; ++i) {
18004 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18005 {
18006 bar();
18007 }
18008 }
18009 #pragma omp target teams distribute parallel for simd
18010 for (int i = 0; i < 10; ++i) {
18011 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18012 {
18013 #pragma omp single
18014 {
18015 bar();
18016 }
18017 }
18018 }
18019 #pragma omp target teams distribute parallel for simd
18020 for (int i = 0; i < 10; ++i) {
18021 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18022 for (int i = 0; i < 10; ++i)
18023 ;
18024 }
18025 #pragma omp target teams distribute parallel for simd
18026 for (int i = 0; i < 10; ++i) {
18027 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18028 for (int i = 0; i < 10; ++i)
18029 ;
18030 }
18031 #pragma omp target teams distribute parallel for simd
18032 for (int i = 0; i < 10; ++i) {
18033 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18034 {
18035 bar();
18036 }
18037 }
18038 #pragma omp target teams distribute parallel for simd
18039 for (int i = 0; i < 10; ++i) {
18040 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18041 {
18042 bar();
18043 }
18044 }
18045 #pragma omp target teams distribute parallel for simd
18046 for (int i = 0; i < 10; ++i) {
18047 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18048 bar();
18049 }
18050 #pragma omp target teams distribute parallel for simd
18051 for (int i = 0; i < 10; ++i) {
18052 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18053 bar();
18054 }
18055 #pragma omp target teams distribute parallel for simd
18056 for (int i = 0; i < 10; ++i) {
18057 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
18058 bar();
18059 }
18060 #pragma omp target teams distribute parallel for simd
18061 for (int i = 0; i < 10; ++i) {
18062 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18063 bar();
18064 }
18065 #pragma omp target teams distribute parallel for simd
18066 for (int i = 0; i < 10; ++i) {
18067 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18068 bar();
18069 }
18070 #pragma omp target teams distribute parallel for simd
18071 for (int i = 0; i < 10; ++i) {
18072 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18073 bar();
18074 }
18075 #pragma omp target teams distribute parallel for simd
18076 for (int i = 0; i < 10; ++i) {
18077 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
18078 ++a;
18079 }
18080 #pragma omp target teams distribute parallel for simd
18081 for (int i = 0; i < 10; ++i) {
18082 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18083 ++a;
18084 }
18085 #pragma omp target teams distribute parallel for simd
18086 for (int i = 0; i < 10; ++i) {
18087 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18088 ++a;
18089 }
18090 #pragma omp target teams distribute parallel for simd
18091 for (int i = 0; i < 10; ++i) {
18092 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18093 for (int i = 0; i < 10; ++i)
18094 ;
18095 }
18096 #pragma omp target teams distribute parallel for simd
18097 for (int i = 0; i < 10; ++i) {
18098 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18099 ++a;
18100 }
18101 #pragma omp target teams distribute parallel for simd
18102 for (int i = 0; i < 10; ++i) {
18103 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18104 ++a;
18105 }
18106 #pragma omp target teams distribute parallel for simd
18107 for (int i = 0; i < 10; ++i) {
18108 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18109 ++a;
18110 }
18111 #pragma omp target teams distribute parallel for simd
18112 for (int i = 0; i < 10; ++i) {
18113 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18114 ++a;
18115 }
18116 #pragma omp target teams distribute parallel for simd
18117 for (int i = 0; i < 10; ++i) {
18118 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18119 for (int i = 0; i < 10; ++i)
18120 ++a;
18121 }
18122 #pragma omp target teams distribute parallel for simd
18123 for (int i = 0; i < 10; ++i) {
18124 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18125 for (int i = 0; i < 10; ++i)
18126 ++a;
18127 }
18128 #pragma omp target teams distribute parallel for simd
18129 for (int i = 0; i < 10; ++i) {
18130 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18131 for (int i = 0; i < 10; ++i)
18132 ++a;
18133 }
18134 #pragma omp target teams distribute parallel for simd
18135 for (int i = 0; i < 10; ++i) {
18136 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18137 for (int i = 0; i < 10; ++i)
18138 ++a;
18139 }
18140 #pragma omp target teams distribute parallel for simd
18141 for (int i = 0; i < 10; ++i) {
18142 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18143 for (int i = 0; i < 10; ++i)
18144 ++a;
18145 }
18146 #pragma omp target teams distribute parallel for simd
18147 for (int i = 0; i < 10; ++i) {
18148 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18149 for (int i = 0; i < 10; ++i)
18150 ;
18151 }
18152 #pragma omp target teams distribute parallel for simd
18153 for (int i = 0; i < 10; ++i) {
18154 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18155 a++;
18156 }
18157 #pragma omp target teams distribute parallel for simd
18158 for (int i = 0; i < 10; ++i) {
18159 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18160 for (int i = 0; i < 10; ++i)
18161 ;
18162 }
18163 #pragma omp target teams distribute parallel for simd
18164 for (int i = 0; i < 10; ++i) {
18165 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18166 for (int i = 0; i < 10; ++i)
18167 ;
18168 }
18169 #pragma omp target teams distribute parallel for simd
18170 for (int i = 0; i < 10; ++i) {
18171 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18172 for (int i = 0; i < 10; ++i)
18173 ;
18174 }
18175 #pragma omp target teams distribute parallel for simd
18176 for (int i = 0; i < 10; ++i) {
18177 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18178 for (int i = 0; i < 10; ++i)
18179 ;
18180 }
18181
18182 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE
18183 #pragma omp target teams distribute simd // OK
18184 for (int i = 0; i < 10; ++i)
18185 ;
18186 #pragma omp target teams distribute simd
18187 for (int i = 0; i < 10; ++i) {
18188 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18189 for (int i = 0; i < 10; ++i)
18190 ;
18191 }
18192 #pragma omp target teams distribute simd
18193 for (int i = 0; i < 10; ++i) {
18194 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18195 for (int i = 0; i < 10; ++i)
18196 ;
18197 }
18198 #pragma omp target teams distribute simd
18199 for (int i = 0; i < 10; ++i) {
18200 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18201 for (int i = 0; i < 10; ++i)
18202 ;
18203 }
18204 #pragma omp target teams distribute simd
18205 for (int i = 0; i < 10; ++i) {
18206 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
18207 for (int i = 0; i < 10; ++i)
18208 ;
18209 }
18210 #pragma omp target teams distribute simd
18211 for (int i = 0; i < 10; ++i) {
18212 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18213 for (int i = 0; i < 10; ++i)
18214 ;
18215 }
18216 #pragma omp target teams distribute simd
18217 for (int i = 0; i < 10; ++i) {
18218 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18219 for (int i = 0; i < 10; ++i)
18220 ;
18221 }
18222 #pragma omp target teams distribute simd
18223 for (int i = 0; i < 10; ++i) {
18224 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18225 {
18226 bar();
18227 }
18228 }
18229 #pragma omp target teams distribute simd
18230 for (int i = 0; i < 10; ++i) {
18231 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18232 {
18233 bar();
18234 }
18235 }
18236 #pragma omp target teams distribute simd
18237 for (int i = 0; i < 10; ++i) {
18238 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18239 {
18240 bar();
18241 }
18242 }
18243 #pragma omp target teams distribute simd
18244 for (int i = 0; i < 10; ++i) {
18245 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18246 {
18247 bar();
18248 }
18249 }
18250 #pragma omp target teams distribute simd
18251 for (int i = 0; i < 10; ++i) {
18252 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18253 {
18254 bar();
18255 }
18256 }
18257 #pragma omp target teams distribute simd
18258 for (int i = 0; i < 10; ++i) {
18259 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18260 {
18261 #pragma omp single
18262 {
18263 bar();
18264 }
18265 }
18266 }
18267 #pragma omp target teams distribute simd
18268 for (int i = 0; i < 10; ++i) {
18269 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18270 for (int i = 0; i < 10; ++i)
18271 ;
18272 }
18273 #pragma omp target teams distribute simd
18274 for (int i = 0; i < 10; ++i) {
18275 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18276 for (int i = 0; i < 10; ++i)
18277 ;
18278 }
18279 #pragma omp target teams distribute simd
18280 for (int i = 0; i < 10; ++i) {
18281 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18282 {
18283 bar();
18284 }
18285 }
18286 #pragma omp target teams distribute simd
18287 for (int i = 0; i < 10; ++i) {
18288 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18289 {
18290 bar();
18291 }
18292 }
18293 #pragma omp target teams distribute simd
18294 for (int i = 0; i < 10; ++i) {
18295 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18296 bar();
18297 }
18298 #pragma omp target teams distribute simd
18299 for (int i = 0; i < 10; ++i) {
18300 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18301 bar();
18302 }
18303 #pragma omp target teams distribute simd
18304 for (int i = 0; i < 10; ++i) {
18305 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}
18306 bar();
18307 }
18308 #pragma omp target teams distribute simd
18309 for (int i = 0; i < 10; ++i) {
18310 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18311 bar();
18312 }
18313 #pragma omp target teams distribute simd
18314 for (int i = 0; i < 10; ++i) {
18315 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18316 bar();
18317 }
18318 #pragma omp target teams distribute simd
18319 for (int i = 0; i < 10; ++i) {
18320 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18321 bar();
18322 }
18323 #pragma omp target teams distribute simd
18324 for (int i = 0; i < 10; ++i) {
18325 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}
18326 ++a;
18327 }
18328 #pragma omp target teams distribute simd
18329 for (int i = 0; i < 10; ++i) {
18330 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18331 ++a;
18332 }
18333 #pragma omp target teams distribute simd
18334 for (int i = 0; i < 10; ++i) {
18335 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18336 ++a;
18337 }
18338 #pragma omp target teams distribute simd
18339 for (int i = 0; i < 10; ++i) {
18340 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18341 for (int i = 0; i < 10; ++i)
18342 ;
18343 }
18344 #pragma omp target teams distribute simd
18345 for (int i = 0; i < 10; ++i) {
18346 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18347 ++a;
18348 }
18349 #pragma omp target teams distribute simd
18350 for (int i = 0; i < 10; ++i) {
18351 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18352 ++a;
18353 }
18354 #pragma omp target teams distribute simd
18355 for (int i = 0; i < 10; ++i) {
18356 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18357 ++a;
18358 }
18359 #pragma omp target teams distribute simd
18360 for (int i = 0; i < 10; ++i) {
18361 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18362 ++a;
18363 }
18364 #pragma omp target teams distribute simd
18365 for (int i = 0; i < 10; ++i) {
18366 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18367 for (int i = 0; i < 10; ++i)
18368 ++a;
18369 }
18370 #pragma omp target teams distribute simd
18371 for (int i = 0; i < 10; ++i) {
18372 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18373 for (int i = 0; i < 10; ++i)
18374 ++a;
18375 }
18376 #pragma omp target teams distribute simd
18377 for (int i = 0; i < 10; ++i) {
18378 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18379 for (int i = 0; i < 10; ++i)
18380 ++a;
18381 }
18382 #pragma omp target teams distribute simd
18383 for (int i = 0; i < 10; ++i) {
18384 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18385 for (int i = 0; i < 10; ++i)
18386 ++a;
18387 }
18388 #pragma omp target teams distribute simd
18389 for (int i = 0; i < 10; ++i) {
18390 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18391 for (int i = 0; i < 10; ++i)
18392 ++a;
18393 }
18394 #pragma omp target teams distribute simd
18395 for (int i = 0; i < 10; ++i) {
18396 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18397 for (int i = 0; i < 10; ++i)
18398 ;
18399 }
18400 #pragma omp target teams distribute simd
18401 for (int i = 0; i < 10; ++i) {
18402 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18403 a++;
18404 }
18405 #pragma omp target teams distribute simd
18406 for (int i = 0; i < 10; ++i) {
18407 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18408 for (int i = 0; i < 10; ++i)
18409 ;
18410 }
18411 #pragma omp target teams distribute simd
18412 for (int i = 0; i < 10; ++i) {
18413 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18414 for (int i = 0; i < 10; ++i)
18415 ;
18416 }
18417 #pragma omp target teams distribute simd
18418 for (int i = 0; i < 10; ++i) {
18419 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18420 for (int i = 0; i < 10; ++i)
18421 ;
18422 }
18423 #pragma omp target teams distribute simd
18424 for (int i = 0; i < 10; ++i) {
18425 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
18426 for (int i = 0; i < 10; ++i)
18427 ;
18428 }
18429
18430 return foo<int>();
18431 }
18432
18433