1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s
2
3 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify %s
4 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
5
6 void bar();
7
8 template <class T>
foo()9 void foo() {
10 T a = T();
11 // PARALLEL DIRECTIVE
12 #pragma omp parallel
13 #pragma omp for
14 for (int i = 0; i < 10; ++i)
15 ;
16 #pragma omp parallel
17 #pragma omp simd
18 for (int i = 0; i < 10; ++i)
19 ;
20 #pragma omp parallel
21 #pragma omp for simd
22 for (int i = 0; i < 10; ++i)
23 ;
24 #pragma omp parallel
25 #pragma omp sections
26 {
27 bar();
28 }
29 #pragma omp parallel
30 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}
31 {
32 bar();
33 }
34 #pragma omp parallel
35 #pragma omp single
36 bar();
37
38 #pragma omp parallel
39 #pragma omp master
40 {
41 bar();
42 }
43 #pragma omp parallel
44 #pragma omp critical
45 {
46 bar();
47 }
48 #pragma omp parallel
49 #pragma omp parallel for
50 for (int i = 0; i < 10; ++i)
51 ;
52 #pragma omp parallel
53 #pragma omp parallel for simd
54 for (int i = 0; i < 10; ++i)
55 ;
56 #pragma omp parallel
57 #pragma omp parallel sections
58 {
59 bar();
60 }
61 #pragma omp parallel
62 #pragma omp task
63 {
64 bar();
65 }
66 #pragma omp parallel
67 {
68 #pragma omp taskyield
69 bar();
70 }
71 #pragma omp parallel
72 {
73 #pragma omp barrier
74 bar();
75 }
76 #pragma omp parallel
77 {
78 #pragma omp taskwait
79 bar();
80 }
81 #pragma omp parallel
82 {
83 #pragma omp flush
84 bar();
85 }
86 #pragma omp parallel
87 {
88 #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?}}
89 bar();
90 }
91 #pragma omp parallel
92 {
93 #pragma omp atomic
94 ++a;
95 }
96 #pragma omp parallel
97 {
98 #pragma omp target
99 ++a;
100 }
101 #pragma omp parallel
102 {
103 #pragma omp target parallel
104 ++a;
105 }
106 #pragma omp parallel
107 {
108 #pragma omp target parallel for
109 for (int i = 0; i < 10; ++i)
110 ;
111 }
112 #pragma omp parallel
113 {
114 #pragma omp target enter data map(to: a)
115 ++a;
116 }
117 #pragma omp parallel
118 {
119 #pragma omp target exit data map(from: a)
120 ++a;
121 }
122 #pragma omp parallel
123 {
124 #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?}}
125 ++a;
126 }
127 #pragma omp parallel
128 {
129 #pragma omp taskloop
130 for (int i = 0; i < 10; ++i)
131 ++a;
132 }
133 #pragma omp parallel
134 {
135 #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?}}
136 for (int i = 0; i < 10; ++i)
137 ;
138 }
139 #pragma omp parallel
140 {
141 #pragma omp target update to(a)
142 }
143 #pragma omp parallel
144 {
145 #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?}}
146 for (int i = 0; i < 10; ++i)
147 ;
148 }
149 #pragma omp parallel
150 {
151 #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?}}
152 for (int i = 0; i < 10; ++i)
153 ;
154 }
155 #pragma omp parallel
156 {
157 #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?}}
158 for (int i = 0; i < 10; ++i)
159 ;
160 }
161 #pragma omp parallel
162 {
163 #pragma omp target simd // OK
164 for (int i = 0; i < 10; ++i)
165 ;
166 }
167 #pragma omp parallel
168 {
169 #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?}}
170 for (int i = 0; i < 10; ++i)
171 ;
172 }
173 #pragma omp parallel
174 {
175 #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?}}
176 for (int i = 0; i < 10; ++i)
177 ;
178 }
179 #pragma omp parallel
180 {
181 #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?}}
182 for (int i = 0; i < 10; ++i)
183 ;
184 }
185 #pragma omp parallel
186 {
187 #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?}}
188 for (int i = 0; i < 10; ++i)
189 ;
190 }
191 #pragma omp parallel
192 {
193 #pragma omp target teams // OK
194 ++a;
195 }
196 #pragma omp parallel
197 {
198 #pragma omp target teams distribute // OK
199 for (int i = 0; i < 10; ++i)
200 ;
201 }
202 #pragma omp parallel
203 {
204 #pragma omp target teams distribute parallel for // OK
205 for (int i = 0; i < 10; ++i)
206 ;
207 }
208 #pragma omp parallel
209 {
210 #pragma omp target teams distribute parallel for simd // OK
211 for (int i = 0; i < 10; ++i)
212 ;
213 }
214 #pragma omp parallel
215 {
216 #pragma omp target teams distribute simd // OK
217 for (int i = 0; i < 10; ++i)
218 ;
219 }
220
221 // SIMD DIRECTIVE
222 #pragma omp simd
223 for (int i = 0; i < 10; ++i) {
224 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
225 for (int i = 0; i < 10; ++i)
226 ;
227 }
228 #pragma omp simd
229 for (int i = 0; i < 10; ++i) {
230 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
231 for (int i = 0; i < 10; ++i)
232 ;
233 }
234 #pragma omp simd
235 for (int i = 0; i < 10; ++i) {
236 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
237 for (int i = 0; i < 10; ++i)
238 ;
239 }
240 #pragma omp simd
241 for (int i = 0; i < 10; ++i) {
242 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
243 for (int i = 0; i < 10; ++i)
244 ;
245 }
246 #pragma omp simd
247 for (int i = 0; i < 10; ++i) {
248 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
249 {
250 bar();
251 }
252 }
253 #pragma omp simd
254 for (int i = 0; i < 10; ++i) {
255 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
256 {
257 bar();
258 }
259 }
260 #pragma omp simd
261 for (int i = 0; i < 10; ++i) {
262 #pragma omp single // 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 master // 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 critical // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
284 for (int i = 0; i < 10; ++i)
285 ;
286 }
287 #pragma omp simd
288 for (int i = 0; i < 10; ++i) {
289 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
290 for (int i = 0; i < 10; ++i)
291 ;
292 }
293 #pragma omp simd
294 for (int i = 0; i < 10; ++i) {
295 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
296 {
297 bar();
298 }
299 }
300 #pragma omp simd
301 for (int i = 0; i < 10; ++i) {
302 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
303 {
304 bar();
305 }
306 }
307 #pragma omp simd
308 for (int i = 0; i < 10; ++i) {
309 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
310 bar();
311 }
312 #pragma omp simd
313 for (int i = 0; i < 10; ++i) {
314 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
315 bar();
316 }
317 #pragma omp simd
318 for (int i = 0; i < 10; ++i) {
319 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
320 bar();
321 }
322 #pragma omp simd
323 for (int i = 0; i < 10; ++i) {
324 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
325 bar();
326 }
327 #pragma omp simd
328 for (int i = 0; i < 10; ++i) {
329 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
330 bar();
331 }
332 #pragma omp simd
333 for (int i = 0; i < 10; ++i) {
334 #pragma omp ordered simd // OK
335 bar();
336 }
337 #pragma omp simd
338 for (int i = 0; i < 10; ++i) {
339 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}}
340 bar();
341 }
342 #pragma omp simd
343 for (int i = 0; i < 10; ++i) {
344 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
345 ++a;
346 }
347 #pragma omp simd
348 for (int i = 0; i < 10; ++i) {
349 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
350 ++a;
351 }
352 #pragma omp simd
353 for (int i = 0; i < 10; ++i) {
354 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
355 ++a;
356 }
357 #pragma omp simd
358 for (int i = 0; i < 10; ++i) {
359 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
360 for (int i = 0; i < 10; ++i)
361 ;
362 }
363 #pragma omp simd
364 for (int i = 0; i < 10; ++i) {
365 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
366 ++a;
367 }
368 #pragma omp simd
369 for (int i = 0; i < 10; ++i) {
370 #pragma omp target exit data map(from: a) // expected-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 teams // 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 taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
381 for (int i = 0; i < 10; ++i)
382 ++a;
383 }
384 #pragma omp simd
385 for (int i = 0; i < 10; ++i) {
386 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
387 for (int j = 0; j < 10; ++j)
388 ;
389 }
390 #pragma omp simd
391 for (int i = 0; i < 10; ++i) {
392 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
393 }
394 #pragma omp simd
395 for (int i = 0; i < 10; ++i) {
396 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}}
397 for (int j = 0; j < 10; ++j)
398 ;
399 }
400 #pragma omp simd
401 for (int i = 0; i < 10; ++i) {
402 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
403 for (int j = 0; j < 10; ++j)
404 ;
405 }
406 #pragma omp simd
407 for (int i = 0; i < 10; ++i) {
408 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
409 for (int j = 0; j < 10; ++j)
410 ;
411 }
412 #pragma omp simd
413 for (int i = 0; i < 10; ++i) {
414 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
415 for (int j = 0; j < 10; ++j)
416 ;
417 }
418 #pragma omp simd
419 for (int i = 0; i < 10; ++i) {
420 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
421 for (int j = 0; j < 10; ++j)
422 ;
423 }
424 #pragma omp simd
425 for (int i = 0; i < 10; ++i) {
426 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
427 for (int j = 0; j < 10; ++j)
428 ;
429 }
430 #pragma omp simd
431 for (int i = 0; i < 10; ++i) {
432 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
433 for (int j = 0; j < 10; ++j)
434 ;
435 }
436 #pragma omp simd
437 for (int i = 0; i < 10; ++i) {
438 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
439 for (int j = 0; j < 10; ++j)
440 ;
441 }
442 #pragma omp simd
443 for (int i = 0; i < 10; ++i) {
444 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
445 ++a;
446 }
447 #pragma omp simd
448 for (int i = 0; i < 10; ++i) {
449 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
450 for (int j = 0; j < 10; ++j)
451 ;
452 }
453 #pragma omp simd
454 for (int i = 0; i < 10; ++i) {
455 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
456 for (int j = 0; j < 10; ++j)
457 ;
458 }
459 #pragma omp simd
460 for (int i = 0; i < 10; ++i) {
461 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
462 for (int j = 0; j < 10; ++j)
463 ;
464 }
465 #pragma omp simd
466 for (int i = 0; i < 10; ++i) {
467 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
468 for (int j = 0; j < 10; ++j)
469 ;
470 }
471
472 // FOR DIRECTIVE
473 #pragma omp for
474 for (int i = 0; i < 10; ++i) {
475 #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?}}
476 for (int i = 0; i < 10; ++i)
477 ;
478 }
479 #pragma omp for
480 for (int i = 0; i < 10; ++i) {
481 #pragma omp simd
482 for (int i = 0; i < 10; ++i)
483 ;
484 }
485 #pragma omp for
486 for (int i = 0; i < 10; ++i) {
487 #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?}}
488 for (int i = 0; i < 10; ++i)
489 ;
490 }
491 #pragma omp for
492 for (int i = 0; i < 10; ++i) {
493 #pragma omp parallel
494 for (int i = 0; i < 10; ++i)
495 ;
496 }
497 #pragma omp for
498 for (int i = 0; i < 10; ++i) {
499 #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?}}
500 {
501 bar();
502 }
503 }
504 #pragma omp for
505 for (int i = 0; i < 10; ++i) {
506 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}
507 {
508 bar();
509 }
510 }
511 #pragma omp for
512 for (int i = 0; i < 10; ++i) {
513 #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?}}
514 {
515 bar();
516 }
517 }
518
519 #pragma omp for
520 for (int i = 0; i < 10; ++i) {
521 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
522 {
523 bar();
524 }
525 }
526 #pragma omp for
527 for (int i = 0; i < 10; ++i) {
528 #pragma omp critical
529 {
530 bar();
531 }
532 }
533 #pragma omp for
534 for (int i = 0; i < 10; ++i) {
535 #pragma omp parallel
536 {
537 #pragma omp single // OK
538 {
539 bar();
540 }
541 #pragma omp for // OK
542 for (int i = 0; i < 10; ++i)
543 ;
544 #pragma omp sections // OK
545 {
546 bar();
547 }
548 }
549 }
550 #pragma omp for
551 for (int i = 0; i < 10; ++i) {
552 #pragma omp parallel for
553 for (int i = 0; i < 10; ++i)
554 ;
555 }
556 #pragma omp for
557 for (int i = 0; i < 10; ++i) {
558 #pragma omp parallel for simd
559 for (int i = 0; i < 10; ++i)
560 ;
561 }
562 #pragma omp for
563 for (int i = 0; i < 10; ++i) {
564 #pragma omp parallel sections
565 {
566 bar();
567 }
568 }
569 #pragma omp for
570 for (int i = 0; i < 10; ++i) {
571 #pragma omp task
572 {
573 bar();
574 }
575 }
576 #pragma omp for
577 for (int i = 0; i < 10; ++i) {
578 #pragma omp taskyield
579 bar();
580 }
581 #pragma omp for
582 for (int i = 0; i < 10; ++i) {
583 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}
584 bar();
585 }
586 #pragma omp for
587 for (int i = 0; i < 10; ++i) {
588 #pragma omp taskwait
589 bar();
590 }
591 #pragma omp for
592 for (int i = 0; i < 10; ++i) {
593 #pragma omp flush
594 bar();
595 }
596 #pragma omp for
597 for (int i = 0; i < 10; ++i) {
598 #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?}}
599 bar();
600 }
601 #pragma omp for ordered
602 for (int i = 0; i < 10; ++i) {
603 #pragma omp ordered // OK
604 bar();
605 }
606 #pragma omp for
607 for (int i = 0; i < 10; ++i) {
608 #pragma omp atomic
609 ++a;
610 }
611 #pragma omp for
612 for (int i = 0; i < 10; ++i) {
613 #pragma omp target
614 ++a;
615 }
616 #pragma omp for
617 for (int i = 0; i < 10; ++i) {
618 #pragma omp target parallel
619 ++a;
620 }
621 #pragma omp for
622 for (int i = 0; i < 10; ++i) {
623 #pragma omp target parallel for
624 for (int i = 0; i < 10; ++i)
625 ;
626 }
627 #pragma omp for
628 for (int i = 0; i < 10; ++i) {
629 #pragma omp target enter data map(to: a)
630 ++a;
631 }
632 #pragma omp for
633 for (int i = 0; i < 10; ++i) {
634 #pragma omp target exit data map(from: a)
635 ++a;
636 }
637 #pragma omp for
638 for (int i = 0; i < 10; ++i) {
639 #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?}}
640 ++a;
641 }
642 #pragma omp for
643 for (int i = 0; i < 10; ++i) {
644 #pragma omp taskloop
645 for (int i = 0; i < 10; ++i)
646 ++a;
647 }
648 #pragma omp for
649 for (int i = 0; i < 10; ++i) {
650 #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?}}
651 for (int j = 0; j < 10; ++j)
652 ;
653 }
654 #pragma omp for
655 for (int i = 0; i < 10; ++i) {
656 #pragma omp target update to(a)
657 }
658 #pragma omp for
659 for (int i = 0; i < 10; ++i) {
660 #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?}}
661 for (int j = 0; j < 10; ++j)
662 ;
663 }
664 #pragma omp for
665 for (int i = 0; i < 10; ++i) {
666 #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?}}
667 for (int j = 0; j < 10; ++j)
668 ;
669 }
670 #pragma omp for
671 for (int i = 0; i < 10; ++i) {
672 #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?}}
673 for (int j = 0; j < 10; ++j)
674 ;
675 }
676 #pragma omp for
677 for (int i = 0; i < 10; ++i) {
678 #pragma omp target simd // OK
679 for (int j = 0; j < 10; ++j)
680 ;
681 }
682 #pragma omp for
683 for (int i = 0; i < 10; ++i) {
684 #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?}}
685 for (int j = 0; j < 10; ++j)
686 ;
687 }
688 #pragma omp for
689 for (int i = 0; i < 10; ++i) {
690 #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?}}
691 for (int j = 0; j < 10; ++j)
692 ;
693 }
694 #pragma omp for
695 for (int i = 0; i < 10; ++i) {
696 #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?}}
697 for (int j = 0; j < 10; ++j)
698 ;
699 }
700 #pragma omp for
701 for (int i = 0; i < 10; ++i) {
702 #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?}}
703 for (int j = 0; j < 10; ++j)
704 ;
705 }
706 #pragma omp for
707 for (int i = 0; i < 10; ++i) {
708 #pragma omp target teams // OK
709 ++a;
710 }
711 #pragma omp for
712 for (int i = 0; i < 10; ++i) {
713 #pragma omp target teams distribute // OK
714 for (int j = 0; j < 10; ++j)
715 ;
716 }
717 #pragma omp for
718 for (int i = 0; i < 10; ++i) {
719 #pragma omp target teams distribute parallel for // OK
720 for (int j = 0; j < 10; ++j)
721 ;
722 }
723 #pragma omp for
724 for (int i = 0; i < 10; ++i) {
725 #pragma omp target teams distribute parallel for simd // OK
726 for (int j = 0; j < 10; ++j)
727 ;
728 }
729 #pragma omp for
730 for (int i = 0; i < 10; ++i) {
731 #pragma omp target teams distribute simd // OK
732 for (int j = 0; j < 10; ++j)
733 ;
734 }
735
736 // FOR SIMD DIRECTIVE
737 #pragma omp for simd
738 for (int i = 0; i < 10; ++i) {
739 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
740 for (int i = 0; i < 10; ++i)
741 ;
742 }
743 #pragma omp for simd
744 for (int i = 0; i < 10; ++i) {
745 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
746 for (int i = 0; i < 10; ++i)
747 ;
748 }
749 #pragma omp for simd
750 for (int i = 0; i < 10; ++i) {
751 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
752 for (int i = 0; i < 10; ++i)
753 ;
754 }
755 #pragma omp for simd
756 for (int i = 0; i < 10; ++i) {
757 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
758 for (int i = 0; i < 10; ++i)
759 ;
760 }
761 #pragma omp for simd
762 for (int i = 0; i < 10; ++i) {
763 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
764 {
765 bar();
766 }
767 }
768 #pragma omp for simd
769 for (int i = 0; i < 10; ++i) {
770 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
771 {
772 bar();
773 }
774 }
775 #pragma omp for simd
776 for (int i = 0; i < 10; ++i) {
777 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
778 {
779 bar();
780 }
781 }
782 #pragma omp for simd
783 for (int i = 0; i < 10; ++i) {
784 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
785 {
786 bar();
787 }
788 }
789 #pragma omp for simd
790 for (int i = 0; i < 10; ++i) {
791 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
792 {
793 bar();
794 }
795 }
796 #pragma omp for simd
797 for (int i = 0; i < 10; ++i) {
798 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
799 for (int i = 0; i < 10; ++i)
800 ;
801 }
802 #pragma omp for simd
803 for (int i = 0; i < 10; ++i) {
804 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
805 for (int i = 0; i < 10; ++i)
806 ;
807 }
808 #pragma omp for simd
809 for (int i = 0; i < 10; ++i) {
810 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
811 {
812 bar();
813 }
814 }
815 #pragma omp for simd
816 for (int i = 0; i < 10; ++i) {
817 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
818 {
819 bar();
820 }
821 }
822 #pragma omp for simd
823 for (int i = 0; i < 10; ++i) {
824 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
825 bar();
826 }
827 #pragma omp for simd
828 for (int i = 0; i < 10; ++i) {
829 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
830 bar();
831 }
832 #pragma omp for simd
833 for (int i = 0; i < 10; ++i) {
834 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
835 bar();
836 }
837 #pragma omp for simd
838 for (int i = 0; i < 10; ++i) {
839 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
840 bar();
841 }
842 #pragma omp for simd
843 for (int i = 0; i < 10; ++i) {
844 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
845 bar();
846 }
847 #pragma omp for simd
848 for (int i = 0; i < 10; ++i) {
849 #pragma omp ordered simd // OK
850 bar();
851 }
852 #pragma omp for simd
853 for (int i = 0; i < 10; ++i) {
854 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}}
855 bar();
856 }
857 #pragma omp for simd
858 for (int i = 0; i < 10; ++i) {
859 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
860 ++a;
861 }
862 #pragma omp for simd
863 for (int i = 0; i < 10; ++i) {
864 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
865 ++a;
866 }
867 #pragma omp for simd
868 for (int i = 0; i < 10; ++i) {
869 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
870 ++a;
871 }
872 #pragma omp for simd
873 for (int i = 0; i < 10; ++i) {
874 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
875 for (int i = 0; i < 10; ++i)
876 ;
877 }
878 #pragma omp for simd
879 for (int i = 0; i < 10; ++i) {
880 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
881 ++a;
882 }
883 #pragma omp for simd
884 for (int i = 0; i < 10; ++i) {
885 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
886 ++a;
887 }
888 #pragma omp for simd
889 for (int i = 0; i < 10; ++i) {
890 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
891 ++a;
892 }
893 #pragma omp for simd
894 for (int i = 0; i < 10; ++i) {
895 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
896 for (int i = 0; i < 10; ++i)
897 ++a;
898 }
899 #pragma omp for simd
900 for (int i = 0; i < 10; ++i) {
901 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
902 for (int j = 0; j < 10; ++j)
903 ;
904 }
905 #pragma omp for simd
906 for (int i = 0; i < 10; ++i) {
907 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
908 bar();
909 }
910 #pragma omp for simd
911 for (int i = 0; i < 10; ++i) {
912 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
913 for (int j = 0; j < 10; ++j)
914 ;
915 }
916 #pragma omp for simd
917 for (int i = 0; i < 10; ++i) {
918 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
919 for (int j = 0; j < 10; ++j)
920 ;
921 }
922 #pragma omp for simd
923 for (int i = 0; i < 10; ++i) {
924 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
925 for (int j = 0; j < 10; ++j)
926 ;
927 }
928 #pragma omp for simd
929 for (int i = 0; i < 10; ++i) {
930 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
931 for (int j = 0; j < 10; ++j)
932 ;
933 }
934 #pragma omp for simd
935 for (int i = 0; i < 10; ++i) {
936 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
937 for (int j = 0; j < 10; ++j)
938 ;
939 }
940 #pragma omp for simd
941 for (int i = 0; i < 10; ++i) {
942 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
943 for (int j = 0; j < 10; ++j)
944 ;
945 }
946 #pragma omp for simd
947 for (int i = 0; i < 10; ++i) {
948 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
949 for (int j = 0; j < 10; ++j)
950 ;
951 }
952 #pragma omp for simd
953 for (int i = 0; i < 10; ++i) {
954 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
955 for (int j = 0; j < 10; ++j)
956 ;
957 }
958 #pragma omp for simd
959 for (int i = 0; i < 10; ++i) {
960 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
961 a++;
962 }
963 #pragma omp for simd
964 for (int i = 0; i < 10; ++i) {
965 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
966 for (int j = 0; j < 10; ++j)
967 ;
968 }
969 #pragma omp for simd
970 for (int i = 0; i < 10; ++i) {
971 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
972 for (int j = 0; j < 10; ++j)
973 ;
974 }
975 #pragma omp for simd
976 for (int i = 0; i < 10; ++i) {
977 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
978 for (int j = 0; j < 10; ++j)
979 ;
980 }
981 #pragma omp for simd
982 for (int i = 0; i < 10; ++i) {
983 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
984 for (int j = 0; j < 10; ++j)
985 ;
986 }
987
988 // SECTIONS DIRECTIVE
989 #pragma omp sections
990 {
991 #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?}}
992 for (int i = 0; i < 10; ++i)
993 ;
994 }
995 #pragma omp sections
996 {
997 #pragma omp simd
998 for (int i = 0; i < 10; ++i)
999 ;
1000 }
1001 #pragma omp sections
1002 {
1003 #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?}}
1004 for (int i = 0; i < 10; ++i)
1005 ;
1006 }
1007 #pragma omp sections
1008 {
1009 #pragma omp parallel
1010 for (int i = 0; i < 10; ++i)
1011 ;
1012 }
1013 #pragma omp sections
1014 {
1015 #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?}}
1016 {
1017 bar();
1018 }
1019 }
1020 #pragma omp sections
1021 {
1022 #pragma omp section
1023 {
1024 bar();
1025 }
1026 }
1027 #pragma omp sections
1028 {
1029 #pragma omp parallel
1030 {
1031 #pragma omp single // OK
1032 {
1033 bar();
1034 }
1035 #pragma omp for // OK
1036 for (int i = 0; i < 10; ++i)
1037 ;
1038 #pragma omp sections // OK
1039 {
1040 bar();
1041 }
1042 }
1043 }
1044 #pragma omp sections
1045 {
1046 #pragma omp parallel
1047 {
1048 #pragma omp master // OK
1049 {
1050 bar();
1051 }
1052 #pragma omp for // OK
1053 for (int i = 0; i < 10; ++i)
1054 ;
1055 #pragma omp master // OK
1056 {
1057 bar();
1058 }
1059 }
1060 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}
1061 bar();
1062 }
1063 #pragma omp sections
1064 {
1065 #pragma omp parallel
1066 {
1067 #pragma omp critical(A) // OK
1068 {
1069 bar();
1070 }
1071 #pragma omp for // OK
1072 for (int i = 0; i < 10; ++i)
1073 ;
1074 #pragma omp critical // OK
1075 {
1076 bar();
1077 }
1078 }
1079 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}}
1080 bar();
1081 }
1082 #pragma omp sections
1083 {
1084 #pragma omp parallel for
1085 for (int i = 0; i < 10; ++i)
1086 ;
1087 }
1088 #pragma omp sections
1089 {
1090 #pragma omp parallel for simd
1091 for (int i = 0; i < 10; ++i)
1092 ;
1093 }
1094 #pragma omp sections
1095 {
1096 #pragma omp parallel sections
1097 {
1098 bar();
1099 }
1100 }
1101 #pragma omp sections
1102 {
1103 #pragma omp task
1104 {
1105 bar();
1106 }
1107 }
1108 #pragma omp sections
1109 {
1110 #pragma omp taskyield
1111 }
1112 #pragma omp sections
1113 {
1114 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}
1115 }
1116 #pragma omp sections
1117 {
1118 #pragma omp taskwait
1119 }
1120 #pragma omp sections
1121 {
1122 #pragma omp flush
1123 }
1124 #pragma omp sections
1125 {
1126 #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?}}
1127 bar();
1128 }
1129 #pragma omp sections
1130 {
1131 #pragma omp atomic
1132 ++a;
1133 }
1134 #pragma omp sections
1135 {
1136 #pragma omp target
1137 ++a;
1138 }
1139 #pragma omp sections
1140 {
1141 #pragma omp target parallel
1142 ++a;
1143 }
1144 #pragma omp sections
1145 {
1146 #pragma omp target parallel for
1147 for (int i = 0; i < 10; ++i)
1148 ;
1149 }
1150 #pragma omp sections
1151 {
1152 #pragma omp target enter data map(to: a)
1153 }
1154 #pragma omp sections
1155 {
1156 #pragma omp target exit data map(from: a)
1157 }
1158 #pragma omp sections
1159 {
1160 #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?}}
1161 ++a;
1162 }
1163 #pragma omp sections
1164 {
1165 #pragma omp taskloop
1166 for (int i = 0; i < 10; ++i)
1167 ++a;
1168 }
1169 #pragma omp sections
1170 {
1171 #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?}}
1172 for (int i = 0; i < 10; ++i)
1173 ;
1174 }
1175 #pragma omp sections
1176 {
1177 #pragma omp target update to(a)
1178 }
1179 #pragma omp sections
1180 {
1181 #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?}}
1182 for (int i = 0; i < 10; ++i)
1183 ;
1184 }
1185 #pragma omp sections
1186 {
1187 #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?}}
1188 for (int i = 0; i < 10; ++i)
1189 ;
1190 }
1191 #pragma omp sections
1192 {
1193 #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?}}
1194 for (int i = 0; i < 10; ++i)
1195 ;
1196 }
1197 #pragma omp sections
1198 {
1199 #pragma omp target simd // OK
1200 for (int i = 0; i < 10; ++i)
1201 ;
1202 }
1203 #pragma omp sections
1204 {
1205 #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?}}
1206 for (int i = 0; i < 10; ++i)
1207 ;
1208 }
1209 #pragma omp sections
1210 {
1211 #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?}}
1212 for (int i = 0; i < 10; ++i)
1213 ;
1214 }
1215 #pragma omp sections
1216 {
1217 #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?}}
1218 for (int i = 0; i < 10; ++i)
1219 ;
1220 }
1221 #pragma omp sections
1222 {
1223 #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?}}
1224 for (int i = 0; i < 10; ++i)
1225 ;
1226 }
1227 #pragma omp sections
1228 {
1229 #pragma omp target teams // OK
1230 ++a;
1231 }
1232 #pragma omp sections
1233 {
1234 #pragma omp target teams distribute // OK
1235 for (int i = 0; i < 10; ++i)
1236 ;
1237 }
1238 #pragma omp sections
1239 {
1240 #pragma omp target teams distribute parallel for // OK
1241 for (int i = 0; i < 10; ++i)
1242 ;
1243 }
1244 #pragma omp sections
1245 {
1246 #pragma omp target teams distribute parallel for simd // OK
1247 for (int i = 0; i < 10; ++i)
1248 ;
1249 }
1250 #pragma omp sections
1251 {
1252 #pragma omp target teams distribute simd // OK
1253 for (int i = 0; i < 10; ++i)
1254 ;
1255 }
1256
1257 // SECTION DIRECTIVE
1258 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}
1259 {
1260 bar();
1261 }
1262 #pragma omp sections
1263 {
1264 #pragma omp section
1265 {
1266 #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?}}
1267 for (int i = 0; i < 10; ++i)
1268 ;
1269 }
1270 }
1271 #pragma omp sections
1272 {
1273 #pragma omp section
1274 {
1275 #pragma omp simd
1276 for (int i = 0; i < 10; ++i)
1277 ;
1278 }
1279 }
1280 #pragma omp sections
1281 {
1282 #pragma omp section
1283 {
1284 #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?}}
1285 for (int i = 0; i < 10; ++i)
1286 ;
1287 }
1288 }
1289 #pragma omp sections
1290 {
1291 #pragma omp section
1292 {
1293 #pragma omp parallel
1294 for (int i = 0; i < 10; ++i)
1295 ;
1296 }
1297 }
1298 #pragma omp sections
1299 {
1300 #pragma omp section
1301 {
1302 #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?}}
1303 {
1304 bar();
1305 }
1306 }
1307 }
1308 #pragma omp sections
1309 {
1310 #pragma omp section
1311 {
1312 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}
1313 {
1314 bar();
1315 }
1316 }
1317 }
1318 #pragma omp sections
1319 {
1320 #pragma omp section
1321 {
1322 #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?}}
1323 bar();
1324 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
1325 bar();
1326 #pragma omp critical
1327 bar();
1328 }
1329 }
1330 #pragma omp sections
1331 {
1332 #pragma omp section
1333 {
1334 #pragma omp parallel
1335 {
1336 #pragma omp single // OK
1337 {
1338 bar();
1339 }
1340 #pragma omp for // OK
1341 for (int i = 0; i < 10; ++i)
1342 ;
1343 #pragma omp for simd // OK
1344 for (int i = 0; i < 10; ++i)
1345 ;
1346 #pragma omp sections // OK
1347 {
1348 bar();
1349 }
1350 }
1351 }
1352 }
1353 #pragma omp sections
1354 {
1355 #pragma omp section
1356 {
1357 #pragma omp parallel for
1358 for (int i = 0; i < 10; ++i)
1359 ;
1360 }
1361 }
1362 #pragma omp sections
1363 {
1364 #pragma omp section
1365 {
1366 #pragma omp parallel for simd
1367 for (int i = 0; i < 10; ++i)
1368 ;
1369 }
1370 }
1371 #pragma omp sections
1372 {
1373 #pragma omp section
1374 {
1375 #pragma omp parallel sections
1376 {
1377 bar();
1378 }
1379 }
1380 }
1381 #pragma omp sections
1382 {
1383 #pragma omp section
1384 {
1385 #pragma omp task
1386 {
1387 bar();
1388 }
1389 }
1390 }
1391 #pragma omp sections
1392 {
1393 #pragma omp section
1394 {
1395 #pragma omp taskyield
1396 bar();
1397 }
1398 }
1399 #pragma omp sections
1400 {
1401 #pragma omp section
1402 {
1403 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}
1404 bar();
1405 }
1406 }
1407 #pragma omp sections
1408 {
1409 #pragma omp section
1410 {
1411 #pragma omp taskwait
1412 bar();
1413 }
1414 }
1415 #pragma omp sections
1416 {
1417 #pragma omp section
1418 {
1419 #pragma omp flush
1420 bar();
1421 }
1422 }
1423 #pragma omp sections
1424 {
1425 #pragma omp section
1426 {
1427 #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?}}
1428 bar();
1429 }
1430 }
1431 #pragma omp sections
1432 {
1433 #pragma omp section
1434 #pragma omp atomic
1435 ++a;
1436 }
1437 #pragma omp sections
1438 {
1439 #pragma omp section
1440 #pragma omp target
1441 ++a;
1442 }
1443 #pragma omp sections
1444 {
1445 #pragma omp section
1446 #pragma omp target parallel
1447 ++a;
1448 }
1449 #pragma omp sections
1450 {
1451 #pragma omp section
1452 {
1453 #pragma omp target parallel for
1454 for (int i = 0; i < 10; ++i)
1455 ;
1456 }
1457 }
1458 #pragma omp sections
1459 {
1460 #pragma omp section
1461 {
1462 #pragma omp target enter data map(to: a)
1463 ++a;
1464 }
1465 }
1466 #pragma omp sections
1467 {
1468 #pragma omp section
1469 {
1470 #pragma omp target exit data map(from: a)
1471 ++a;
1472 }
1473 }
1474 #pragma omp sections
1475 {
1476 #pragma omp section
1477 #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?}}
1478 ++a;
1479 }
1480 #pragma omp sections
1481 {
1482 #pragma omp section
1483 #pragma omp taskloop
1484 for (int i = 0; i < 10; ++i)
1485 ++a;
1486 }
1487 #pragma omp sections
1488 {
1489 #pragma omp section
1490 #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?}}
1491 for (int i = 0; i < 10; ++i)
1492 ;
1493 }
1494 #pragma omp sections
1495 {
1496 #pragma omp section
1497 {
1498 bar();
1499 #pragma omp target update to(a)
1500 }
1501 }
1502 #pragma omp sections
1503 {
1504 #pragma omp section
1505 #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?}}
1506 for (int i = 0; i < 10; ++i)
1507 ;
1508 }
1509 #pragma omp sections
1510 {
1511 #pragma omp section
1512 #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?}}
1513 for (int i = 0; i < 10; ++i)
1514 ;
1515 }
1516 #pragma omp sections
1517 {
1518 #pragma omp section
1519 #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?}}
1520 for (int i = 0; i < 10; ++i)
1521 ;
1522 }
1523 #pragma omp sections
1524 {
1525 #pragma omp section
1526 #pragma omp target simd // OK
1527 for (int i = 0; i < 10; ++i)
1528 ;
1529 }
1530 #pragma omp sections
1531 {
1532 #pragma omp section
1533 #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?}}
1534 for (int i = 0; i < 10; ++i)
1535 ;
1536 }
1537 #pragma omp sections
1538 {
1539 #pragma omp section
1540 #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?}}
1541 for (int i = 0; i < 10; ++i)
1542 ;
1543 }
1544 #pragma omp sections
1545 {
1546 #pragma omp section
1547 #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?}}
1548 for (int i = 0; i < 10; ++i)
1549 ;
1550 }
1551 #pragma omp sections
1552 {
1553 #pragma omp section
1554 #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?}}
1555 for (int i = 0; i < 10; ++i)
1556 ;
1557 }
1558 #pragma omp sections
1559 {
1560 #pragma omp section
1561 #pragma omp target teams // OK
1562 ++a;
1563 }
1564 #pragma omp sections
1565 {
1566 #pragma omp section
1567 #pragma omp target teams distribute // OK
1568 for (int i = 0; i < 10; ++i)
1569 ;
1570 }
1571 #pragma omp sections
1572 {
1573 #pragma omp section
1574 #pragma omp target teams distribute parallel for // OK
1575 for (int i = 0; i < 10; ++i)
1576 ;
1577 }
1578 #pragma omp sections
1579 {
1580 #pragma omp section
1581 #pragma omp target teams distribute parallel for simd // OK
1582 for (int i = 0; i < 10; ++i)
1583 ;
1584 }
1585 #pragma omp sections
1586 {
1587 #pragma omp section
1588 #pragma omp target teams distribute simd // OK
1589 for (int i = 0; i < 10; ++i)
1590 ;
1591 }
1592
1593 // SINGLE DIRECTIVE
1594 #pragma omp single
1595 {
1596 #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?}}
1597 for (int i = 0; i < 10; ++i)
1598 ;
1599 }
1600 #pragma omp single
1601 {
1602 #pragma omp simd
1603 for (int i = 0; i < 10; ++i)
1604 ;
1605 }
1606 #pragma omp single
1607 {
1608 #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?}}
1609 for (int i = 0; i < 10; ++i)
1610 ;
1611 }
1612 #pragma omp single
1613 {
1614 #pragma omp parallel
1615 for (int i = 0; i < 10; ++i)
1616 ;
1617 }
1618 #pragma omp single
1619 {
1620 #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?}}
1621 {
1622 bar();
1623 }
1624 }
1625 #pragma omp single
1626 {
1627 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}
1628 {
1629 bar();
1630 }
1631 }
1632 #pragma omp single
1633 {
1634 #pragma omp critical
1635 {
1636 bar();
1637 }
1638 }
1639 #pragma omp single
1640 {
1641 #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?}}
1642 {
1643 bar();
1644 }
1645 }
1646 #pragma omp single
1647 {
1648 #pragma omp parallel
1649 {
1650 #pragma omp single // OK
1651 {
1652 bar();
1653 }
1654 #pragma omp for // OK
1655 for (int i = 0; i < 10; ++i)
1656 ;
1657 #pragma omp for simd // OK
1658 for (int i = 0; i < 10; ++i)
1659 ;
1660 #pragma omp sections // OK
1661 {
1662 bar();
1663 }
1664 }
1665 }
1666 #pragma omp single
1667 {
1668 #pragma omp parallel for
1669 for (int i = 0; i < 10; ++i)
1670 ;
1671 }
1672 #pragma omp single
1673 {
1674 #pragma omp parallel for simd
1675 for (int i = 0; i < 10; ++i)
1676 ;
1677 }
1678 #pragma omp single
1679 {
1680 #pragma omp parallel sections
1681 {
1682 bar();
1683 }
1684 }
1685 #pragma omp single
1686 {
1687 #pragma omp task
1688 {
1689 bar();
1690 }
1691 }
1692 #pragma omp single
1693 {
1694 #pragma omp taskyield
1695 bar();
1696 }
1697 #pragma omp single
1698 {
1699 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}
1700 bar();
1701 }
1702 #pragma omp single
1703 {
1704 #pragma omp taskwait
1705 bar();
1706 }
1707 #pragma omp single
1708 {
1709 #pragma omp flush
1710 bar();
1711 }
1712 #pragma omp single
1713 {
1714 #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?}}
1715 bar();
1716 }
1717 #pragma omp single
1718 {
1719 #pragma omp atomic
1720 ++a;
1721 }
1722 #pragma omp single
1723 {
1724 #pragma omp target
1725 ++a;
1726 }
1727 #pragma omp single
1728 {
1729 #pragma omp target parallel
1730 ++a;
1731 }
1732 #pragma omp single
1733 {
1734 #pragma omp target parallel for
1735 for (int i = 0; i < 10; ++i)
1736 ;
1737 }
1738 #pragma omp single
1739 {
1740 #pragma omp target enter data map(to: a)
1741 ++a;
1742 }
1743 #pragma omp single
1744 {
1745 #pragma omp target exit data map(from: a)
1746 ++a;
1747 }
1748 #pragma omp single
1749 {
1750 #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?}}
1751 ++a;
1752 }
1753 #pragma omp single
1754 {
1755 #pragma omp taskloop
1756 for (int i = 0; i < 10; ++i)
1757 ++a;
1758 }
1759 #pragma omp single
1760 {
1761 #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?}}
1762 for (int i = 0; i < 10; ++i)
1763 ;
1764 }
1765 #pragma omp single
1766 {
1767 #pragma omp target update to(a)
1768 bar();
1769 }
1770 #pragma omp single
1771 {
1772 #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?}}
1773 for (int i = 0; i < 10; ++i)
1774 ;
1775 }
1776 #pragma omp single
1777 {
1778 #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?}}
1779 for (int i = 0; i < 10; ++i)
1780 ;
1781 }
1782 #pragma omp single
1783 {
1784 #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?}}
1785 for (int i = 0; i < 10; ++i)
1786 ;
1787 }
1788 #pragma omp single
1789 {
1790 #pragma omp target simd // OK
1791 for (int i = 0; i < 10; ++i)
1792 ;
1793 }
1794 #pragma omp single
1795 {
1796 #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?}}
1797 for (int i = 0; i < 10; ++i)
1798 ;
1799 }
1800 #pragma omp single
1801 {
1802 #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?}}
1803 for (int i = 0; i < 10; ++i)
1804 ;
1805 }
1806 #pragma omp single
1807 {
1808 #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?}}
1809 for (int i = 0; i < 10; ++i)
1810 ;
1811 }
1812 #pragma omp single
1813 {
1814 #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?}}
1815 for (int i = 0; i < 10; ++i)
1816 ;
1817 }
1818 #pragma omp single
1819 {
1820 #pragma omp target teams // OK
1821 ++a;
1822 }
1823 #pragma omp single
1824 {
1825 #pragma omp target teams distribute // OK
1826 for (int i = 0; i < 10; ++i)
1827 ;
1828 }
1829 #pragma omp single
1830 {
1831 #pragma omp target teams distribute parallel for // OK
1832 for (int i = 0; i < 10; ++i)
1833 ;
1834 }
1835 #pragma omp single
1836 {
1837 #pragma omp target teams distribute parallel for simd // OK
1838 for (int i = 0; i < 10; ++i)
1839 ;
1840 }
1841 #pragma omp single
1842 {
1843 #pragma omp target teams distribute simd // OK
1844 for (int i = 0; i < 10; ++i)
1845 ;
1846 }
1847
1848 // MASTER DIRECTIVE
1849 #pragma omp master
1850 {
1851 #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?}}
1852 for (int i = 0; i < 10; ++i)
1853 ;
1854 }
1855 #pragma omp master
1856 {
1857 #pragma omp simd
1858 for (int i = 0; i < 10; ++i)
1859 ;
1860 }
1861 #pragma omp master
1862 {
1863 #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?}}
1864 for (int i = 0; i < 10; ++i)
1865 ;
1866 }
1867 #pragma omp master
1868 {
1869 #pragma omp parallel
1870 for (int i = 0; i < 10; ++i)
1871 ;
1872 }
1873 #pragma omp master
1874 {
1875 #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?}}
1876 {
1877 bar();
1878 }
1879 }
1880 #pragma omp master
1881 {
1882 #pragma omp master // OK, though second 'master' is redundant
1883 {
1884 bar();
1885 }
1886 }
1887 #pragma omp master
1888 {
1889 #pragma omp critical
1890 {
1891 bar();
1892 }
1893 }
1894 #pragma omp master
1895 {
1896 #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?}}
1897 {
1898 bar();
1899 }
1900 }
1901 #pragma omp master
1902 {
1903 #pragma omp parallel
1904 {
1905 #pragma omp master // OK
1906 {
1907 bar();
1908 }
1909 #pragma omp for // OK
1910 for (int i = 0; i < 10; ++i)
1911 ;
1912 #pragma omp for simd // OK
1913 for (int i = 0; i < 10; ++i)
1914 ;
1915 #pragma omp sections // OK
1916 {
1917 bar();
1918 }
1919 }
1920 }
1921 #pragma omp master
1922 {
1923 #pragma omp parallel for
1924 for (int i = 0; i < 10; ++i)
1925 ;
1926 }
1927 #pragma omp master
1928 {
1929 #pragma omp parallel for simd
1930 for (int i = 0; i < 10; ++i)
1931 ;
1932 }
1933 #pragma omp master
1934 {
1935 #pragma omp parallel sections
1936 {
1937 bar();
1938 }
1939 }
1940 #pragma omp master
1941 {
1942 #pragma omp task
1943 {
1944 bar();
1945 }
1946 }
1947 #pragma omp master
1948 {
1949 #pragma omp taskyield
1950 bar();
1951 }
1952 #pragma omp master
1953 {
1954 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}
1955 bar();
1956 }
1957 #pragma omp master
1958 {
1959 #pragma omp taskwait
1960 bar();
1961 }
1962 #pragma omp master
1963 {
1964 #pragma omp flush
1965 bar();
1966 }
1967 #pragma omp master
1968 {
1969 #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?}}
1970 bar();
1971 }
1972 #pragma omp master
1973 {
1974 #pragma omp atomic
1975 ++a;
1976 }
1977 #pragma omp master
1978 {
1979 #pragma omp target
1980 ++a;
1981 }
1982 #pragma omp master
1983 {
1984 #pragma omp target parallel
1985 ++a;
1986 }
1987 #pragma omp master
1988 {
1989 #pragma omp target parallel for
1990 for (int i = 0; i < 10; ++i)
1991 ;
1992 }
1993 #pragma omp master
1994 {
1995 #pragma omp target enter data map(to: a)
1996 ++a;
1997 }
1998 #pragma omp master
1999 {
2000 #pragma omp target exit data map(from: a)
2001 ++a;
2002 }
2003 #pragma omp master
2004 {
2005 #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?}}
2006 ++a;
2007 }
2008 #pragma omp master
2009 {
2010 #pragma omp taskloop
2011 for (int i = 0; i < 10; ++i)
2012 ++a;
2013 }
2014 #pragma omp master
2015 {
2016 #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?}}
2017 for (int i = 0; i < 10; ++i)
2018 ;
2019 }
2020 #pragma omp master
2021 {
2022 #pragma omp target update to(a)
2023 bar();
2024 }
2025 #pragma omp master
2026 {
2027 #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?}}
2028 for (int i = 0; i < 10; ++i)
2029 ;
2030 }
2031 #pragma omp master
2032 {
2033 #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?}}
2034 for (int i = 0; i < 10; ++i)
2035 ;
2036 }
2037 #pragma omp master
2038 {
2039 #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?}}
2040 for (int i = 0; i < 10; ++i)
2041 ;
2042 }
2043 #pragma omp master
2044 {
2045 #pragma omp target simd // OK
2046 for (int i = 0; i < 10; ++i)
2047 ;
2048 }
2049 #pragma omp master
2050 {
2051 #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?}}
2052 for (int i = 0; i < 10; ++i)
2053 ;
2054 }
2055 #pragma omp master
2056 {
2057 #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?}}
2058 for (int i = 0; i < 10; ++i)
2059 ;
2060 }
2061 #pragma omp master
2062 {
2063 #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?}}
2064 for (int i = 0; i < 10; ++i)
2065 ;
2066 }
2067 #pragma omp master
2068 {
2069 #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?}}
2070 for (int i = 0; i < 10; ++i)
2071 ;
2072 }
2073 #pragma omp master
2074 {
2075 #pragma omp target teams // OK
2076 a++;
2077 }
2078 #pragma omp master
2079 {
2080 #pragma omp target teams distribute // OK
2081 for (int i = 0; i < 10; ++i)
2082 ;
2083 }
2084 #pragma omp master
2085 {
2086 #pragma omp target teams distribute parallel for // OK
2087 for (int i = 0; i < 10; ++i)
2088 ;
2089 }
2090 #pragma omp master
2091 {
2092 #pragma omp target teams distribute parallel for simd // OK
2093 for (int i = 0; i < 10; ++i)
2094 ;
2095 }
2096 #pragma omp master
2097 {
2098 #pragma omp target teams distribute simd // OK
2099 for (int i = 0; i < 10; ++i)
2100 ;
2101 }
2102
2103 // CRITICAL DIRECTIVE
2104 #pragma omp critical
2105 {
2106 #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?}}
2107 for (int i = 0; i < 10; ++i)
2108 ;
2109 }
2110 #pragma omp critical
2111 {
2112 #pragma omp simd
2113 for (int i = 0; i < 10; ++i)
2114 ;
2115 }
2116 #pragma omp critical
2117 {
2118 #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?}}
2119 for (int i = 0; i < 10; ++i)
2120 ;
2121 }
2122 #pragma omp critical
2123 {
2124 #pragma omp parallel
2125 for (int i = 0; i < 10; ++i)
2126 ;
2127 }
2128 #pragma omp critical
2129 {
2130 #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?}}
2131 {
2132 bar();
2133 }
2134 }
2135 #pragma omp critical
2136 {
2137 #pragma omp master // OK, though second 'master' is redundant
2138 {
2139 bar();
2140 }
2141 }
2142 #pragma omp critical
2143 {
2144 #pragma omp critical
2145 {
2146 bar();
2147 }
2148 }
2149 #pragma omp critical
2150 {
2151 #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?}}
2152 {
2153 bar();
2154 }
2155 }
2156 #pragma omp critical
2157 {
2158 #pragma omp parallel
2159 {
2160 #pragma omp master // OK
2161 {
2162 bar();
2163 }
2164 #pragma omp for // OK
2165 for (int i = 0; i < 10; ++i)
2166 ;
2167 #pragma omp for simd // OK
2168 for (int i = 0; i < 10; ++i)
2169 ;
2170 #pragma omp sections // OK
2171 {
2172 bar();
2173 }
2174 }
2175 }
2176 #pragma omp critical
2177 {
2178 #pragma omp parallel for
2179 for (int i = 0; i < 10; ++i)
2180 ;
2181 }
2182 #pragma omp critical
2183 {
2184 #pragma omp parallel for simd
2185 for (int i = 0; i < 10; ++i)
2186 ;
2187 }
2188 #pragma omp critical
2189 {
2190 #pragma omp parallel sections
2191 {
2192 bar();
2193 }
2194 }
2195 #pragma omp critical
2196 {
2197 #pragma omp task
2198 {
2199 bar();
2200 }
2201 }
2202 #pragma omp critical
2203 {
2204 #pragma omp taskyield
2205 bar();
2206 }
2207 #pragma omp critical
2208 {
2209 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}
2210 bar();
2211 }
2212 #pragma omp critical
2213 {
2214 #pragma omp taskwait
2215 bar();
2216 }
2217 #pragma omp critical(Tuzik)
2218 {
2219 #pragma omp critical(grelka)
2220 bar();
2221 }
2222 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}}
2223 {
2224 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}}
2225 {
2226 #pragma omp critical(Tuzik)
2227 {
2228 #pragma omp parallel
2229 #pragma omp critical(grelka)
2230 {
2231 bar();
2232 }
2233 }
2234 }
2235 }
2236 #pragma omp critical
2237 {
2238 #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?}}
2239 bar();
2240 }
2241 #pragma omp critical
2242 {
2243 #pragma omp atomic
2244 ++a;
2245 }
2246 #pragma omp critical
2247 {
2248 #pragma omp target
2249 ++a;
2250 }
2251 #pragma omp critical
2252 {
2253 #pragma omp target parallel
2254 ++a;
2255 }
2256 #pragma omp critical
2257 {
2258 #pragma omp target parallel for
2259 for (int i = 0; i < 10; ++i)
2260 ;
2261 }
2262 #pragma omp critical
2263 {
2264 #pragma omp target enter data map(to: a)
2265 ++a;
2266 }
2267 #pragma omp critical
2268 {
2269 #pragma omp target exit data map(from: a)
2270 ++a;
2271 }
2272 #pragma omp critical
2273 {
2274 #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?}}
2275 ++a;
2276 }
2277 #pragma omp critical
2278 {
2279 #pragma omp taskloop
2280 for (int i = 0; i < 10; ++i)
2281 ++a;
2282 }
2283 #pragma omp critical
2284 {
2285 #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?}}
2286 for (int i = 0; i < 10; ++i)
2287 ;
2288 }
2289 #pragma omp critical
2290 {
2291 #pragma omp target update to(a)
2292 bar();
2293 }
2294 #pragma omp critical
2295 {
2296 #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?}}
2297 for (int i = 0; i < 10; ++i)
2298 ;
2299 }
2300 #pragma omp critical
2301 {
2302 #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?}}
2303 for (int i = 0; i < 10; ++i)
2304 ;
2305 }
2306 #pragma omp critical
2307 {
2308 #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?}}
2309 for (int i = 0; i < 10; ++i)
2310 ;
2311 }
2312 #pragma omp critical
2313 {
2314 #pragma omp target simd // OK
2315 for (int i = 0; i < 10; ++i)
2316 ;
2317 }
2318 #pragma omp critical
2319 {
2320 #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?}}
2321 for (int i = 0; i < 10; ++i)
2322 ;
2323 }
2324 #pragma omp critical
2325 {
2326 #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?}}
2327 for (int i = 0; i < 10; ++i)
2328 ;
2329 }
2330 #pragma omp critical
2331 {
2332 #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?}}
2333 for (int i = 0; i < 10; ++i)
2334 ;
2335 }
2336 #pragma omp critical
2337 {
2338 #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?}}
2339 for (int i = 0; i < 10; ++i)
2340 ;
2341 }
2342 #pragma omp critical
2343 {
2344 #pragma omp target teams // OK
2345 a++;
2346 }
2347 #pragma omp critical
2348 {
2349 #pragma omp target teams distribute // OK
2350 for (int i = 0; i < 10; ++i)
2351 ;
2352 }
2353 #pragma omp critical
2354 {
2355 #pragma omp target teams distribute parallel for // OK
2356 for (int i = 0; i < 10; ++i)
2357 ;
2358 }
2359 #pragma omp critical
2360 {
2361 #pragma omp target teams distribute parallel for simd // OK
2362 for (int i = 0; i < 10; ++i)
2363 ;
2364 }
2365 #pragma omp critical
2366 {
2367 #pragma omp target teams distribute simd // OK
2368 for (int i = 0; i < 10; ++i)
2369 ;
2370 }
2371
2372 // PARALLEL FOR DIRECTIVE
2373 #pragma omp parallel for
2374 for (int i = 0; i < 10; ++i) {
2375 #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?}}
2376 for (int i = 0; i < 10; ++i)
2377 ;
2378 }
2379 #pragma omp parallel for
2380 for (int i = 0; i < 10; ++i) {
2381 #pragma omp simd
2382 for (int i = 0; i < 10; ++i)
2383 ;
2384 }
2385 #pragma omp parallel for
2386 for (int i = 0; i < 10; ++i) {
2387 #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?}}
2388 for (int i = 0; i < 10; ++i)
2389 ;
2390 }
2391 #pragma omp parallel for
2392 for (int i = 0; i < 10; ++i) {
2393 #pragma omp parallel
2394 for (int i = 0; i < 10; ++i)
2395 ;
2396 }
2397 #pragma omp parallel for
2398 for (int i = 0; i < 10; ++i) {
2399 #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?}}
2400 {
2401 bar();
2402 }
2403 }
2404 #pragma omp parallel for
2405 for (int i = 0; i < 10; ++i) {
2406 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}
2407 {
2408 bar();
2409 }
2410 }
2411 #pragma omp parallel for
2412 for (int i = 0; i < 10; ++i) {
2413 #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?}}
2414 {
2415 bar();
2416 }
2417 }
2418
2419 #pragma omp parallel for
2420 for (int i = 0; i < 10; ++i) {
2421 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}
2422 {
2423 bar();
2424 }
2425 }
2426
2427 #pragma omp parallel for
2428 for (int i = 0; i < 10; ++i) {
2429 #pragma omp critical
2430 {
2431 bar();
2432 }
2433 }
2434
2435 #pragma omp parallel for
2436 for (int i = 0; i < 10; ++i) {
2437 #pragma omp parallel
2438 {
2439 #pragma omp single // OK
2440 {
2441 bar();
2442 }
2443 #pragma omp for // OK
2444 for (int i = 0; i < 10; ++i)
2445 ;
2446 #pragma omp for simd // OK
2447 for (int i = 0; i < 10; ++i)
2448 ;
2449 #pragma omp sections // OK
2450 {
2451 bar();
2452 }
2453 }
2454 }
2455 #pragma omp parallel for
2456 for (int i = 0; i < 10; ++i) {
2457 #pragma omp parallel for
2458 for (int i = 0; i < 10; ++i)
2459 ;
2460 }
2461 #pragma omp parallel for
2462 for (int i = 0; i < 10; ++i) {
2463 #pragma omp parallel for simd
2464 for (int i = 0; i < 10; ++i)
2465 ;
2466 }
2467 #pragma omp parallel for
2468 for (int i = 0; i < 10; ++i) {
2469 #pragma omp parallel sections
2470 {
2471 bar();
2472 }
2473 }
2474 #pragma omp parallel for
2475 for (int i = 0; i < 10; ++i) {
2476 #pragma omp task
2477 {
2478 bar();
2479 }
2480 }
2481 #pragma omp parallel for
2482 for (int i = 0; i < 10; ++i) {
2483 #pragma omp taskyield
2484 bar();
2485 }
2486 #pragma omp parallel for
2487 for (int i = 0; i < 10; ++i) {
2488 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}
2489 bar();
2490 }
2491 #pragma omp parallel for
2492 for (int i = 0; i < 10; ++i) {
2493 #pragma omp taskwait
2494 bar();
2495 }
2496 #pragma omp parallel for
2497 for (int i = 0; i < 10; ++i) {
2498 #pragma omp flush
2499 bar();
2500 }
2501 #pragma omp parallel for
2502 for (int i = 0; i < 10; ++i) {
2503 #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?}}
2504 bar();
2505 }
2506 #pragma omp parallel for ordered
2507 for (int i = 0; i < 10; ++i) {
2508 #pragma omp ordered // OK
2509 bar();
2510 }
2511 #pragma omp parallel for
2512 for (int i = 0; i < 10; ++i) {
2513 #pragma omp atomic
2514 ++a;
2515 }
2516 #pragma omp parallel for
2517 for (int i = 0; i < 10; ++i) {
2518 #pragma omp target
2519 ++a;
2520 }
2521 #pragma omp parallel for
2522 for (int i = 0; i < 10; ++i) {
2523 #pragma omp target parallel
2524 ++a;
2525 }
2526 #pragma omp parallel for
2527 for (int i = 0; i < 10; ++i) {
2528 #pragma omp target parallel for
2529 for (int i = 0; i < 10; ++i)
2530 ;
2531 }
2532 #pragma omp parallel for
2533 for (int i = 0; i < 10; ++i) {
2534 #pragma omp target enter data map(to: a)
2535 ++a;
2536 }
2537 #pragma omp parallel for
2538 for (int i = 0; i < 10; ++i) {
2539 #pragma omp target exit data map(from: a)
2540 ++a;
2541 }
2542 #pragma omp parallel for
2543 for (int i = 0; i < 10; ++i) {
2544 #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?}}
2545 ++a;
2546 }
2547 #pragma omp parallel for
2548 for (int i = 0; i < 10; ++i) {
2549 #pragma omp taskloop
2550 for (int i = 0; i < 10; ++i)
2551 ++a;
2552 }
2553 #pragma omp parallel for
2554 for (int i = 0; i < 10; ++i) {
2555 #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?}}
2556 for (int j = 0; j < 10; ++j)
2557 ;
2558 }
2559 #pragma omp parallel for
2560 for (int i = 0; i < 10; ++i) {
2561 #pragma omp target update to(a)
2562 }
2563 #pragma omp parallel for
2564 for (int i = 0; i < 10; ++i) {
2565 #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?}}
2566 for (int j = 0; j < 10; ++j)
2567 ;
2568 }
2569 #pragma omp parallel for
2570 for (int i = 0; i < 10; ++i) {
2571 #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?}}
2572 for (int j = 0; j < 10; ++j)
2573 ;
2574 }
2575 #pragma omp parallel for
2576 for (int i = 0; i < 10; ++i) {
2577 #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?}}
2578 for (int j = 0; j < 10; ++j)
2579 ;
2580 }
2581 #pragma omp parallel for
2582 for (int i = 0; i < 10; ++i) {
2583 #pragma omp target simd // OK
2584 for (int j = 0; j < 10; ++j)
2585 ;
2586 }
2587 #pragma omp parallel for
2588 for (int i = 0; i < 10; ++i) {
2589 #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?}}
2590 for (int j = 0; j < 10; ++j)
2591 ;
2592 }
2593 #pragma omp parallel for
2594 for (int i = 0; i < 10; ++i) {
2595 #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?}}
2596 for (int j = 0; j < 10; ++j)
2597 ;
2598 }
2599 #pragma omp parallel for
2600 for (int i = 0; i < 10; ++i) {
2601 #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?}}
2602 for (int j = 0; j < 10; ++j)
2603 ;
2604 }
2605 #pragma omp parallel for
2606 for (int i = 0; i < 10; ++i) {
2607 #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?}}
2608 for (int j = 0; j < 10; ++j)
2609 ;
2610 }
2611 #pragma omp parallel for
2612 for (int i = 0; i < 10; ++i) {
2613 #pragma omp target teams // OK
2614 a++;
2615 }
2616 #pragma omp parallel for
2617 for (int i = 0; i < 10; ++i) {
2618 #pragma omp target teams distribute // OK
2619 for (int j = 0; j < 10; ++j)
2620 ;
2621 }
2622 #pragma omp parallel for
2623 for (int i = 0; i < 10; ++i) {
2624 #pragma omp target teams distribute parallel for // OK
2625 for (int j = 0; j < 10; ++j)
2626 ;
2627 }
2628 #pragma omp parallel for
2629 for (int i = 0; i < 10; ++i) {
2630 #pragma omp target teams distribute parallel for simd // OK
2631 for (int j = 0; j < 10; ++j)
2632 ;
2633 }
2634 #pragma omp parallel for
2635 for (int i = 0; i < 10; ++i) {
2636 #pragma omp target teams distribute simd // OK
2637 for (int j = 0; j < 10; ++j)
2638 ;
2639 }
2640
2641 // PARALLEL FOR SIMD DIRECTIVE
2642 #pragma omp parallel for simd
2643 for (int i = 0; i < 10; ++i) {
2644 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2645 for (int i = 0; i < 10; ++i)
2646 ;
2647 }
2648 #pragma omp parallel for simd
2649 for (int i = 0; i < 10; ++i) {
2650 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
2651 for (int i = 0; i < 10; ++i)
2652 ;
2653 }
2654 #pragma omp parallel for simd
2655 for (int i = 0; i < 10; ++i) {
2656 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2657 for (int i = 0; i < 10; ++i)
2658 ;
2659 }
2660 #pragma omp parallel for simd
2661 for (int i = 0; i < 10; ++i) {
2662 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2663 for (int i = 0; i < 10; ++i)
2664 ;
2665 }
2666 #pragma omp parallel for simd
2667 for (int i = 0; i < 10; ++i) {
2668 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2669 {
2670 bar();
2671 }
2672 }
2673 #pragma omp parallel for simd
2674 for (int i = 0; i < 10; ++i) {
2675 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2676 {
2677 bar();
2678 }
2679 }
2680 #pragma omp parallel for simd
2681 for (int i = 0; i < 10; ++i) {
2682 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2683 {
2684 bar();
2685 }
2686 }
2687
2688 #pragma omp parallel for simd
2689 for (int i = 0; i < 10; ++i) {
2690 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2691 {
2692 bar();
2693 }
2694 }
2695
2696 #pragma omp parallel for simd
2697 for (int i = 0; i < 10; ++i) {
2698 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2699 {
2700 bar();
2701 }
2702 }
2703
2704 #pragma omp parallel for simd
2705 for (int i = 0; i < 10; ++i) {
2706 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2707 {
2708 #pragma omp single
2709 {
2710 bar();
2711 }
2712 #pragma omp for
2713 for (int i = 0; i < 10; ++i)
2714 ;
2715 #pragma omp for simd
2716 for (int i = 0; i < 10; ++i)
2717 ;
2718 #pragma omp sections
2719 {
2720 bar();
2721 }
2722 }
2723 }
2724 #pragma omp parallel for simd
2725 for (int i = 0; i < 10; ++i) {
2726 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2727 for (int i = 0; i < 10; ++i)
2728 ;
2729 }
2730 #pragma omp parallel for simd
2731 for (int i = 0; i < 10; ++i) {
2732 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}
2733 for (int i = 0; i < 10; ++i)
2734 ;
2735 }
2736 #pragma omp parallel for simd
2737 for (int i = 0; i < 10; ++i) {
2738 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2739 {
2740 bar();
2741 }
2742 }
2743 #pragma omp parallel for simd
2744 for (int i = 0; i < 10; ++i) {
2745 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2746 {
2747 bar();
2748 }
2749 }
2750 #pragma omp parallel for simd
2751 for (int i = 0; i < 10; ++i) {
2752 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2753 bar();
2754 }
2755 #pragma omp parallel for simd
2756 for (int i = 0; i < 10; ++i) {
2757 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2758 bar();
2759 }
2760 #pragma omp parallel for simd
2761 for (int i = 0; i < 10; ++i) {
2762 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2763 bar();
2764 }
2765 #pragma omp parallel for simd
2766 for (int i = 0; i < 10; ++i) {
2767 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2768 bar();
2769 }
2770 #pragma omp parallel for simd
2771 for (int i = 0; i < 10; ++i) {
2772 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2773 bar();
2774 }
2775 #pragma omp parallel for simd
2776 for (int i = 0; i < 10; ++i) {
2777 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2778 bar();
2779 }
2780 #pragma omp parallel for simd
2781 for (int i = 0; i < 10; ++i) {
2782 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2783 ++a;
2784 }
2785 #pragma omp parallel for simd
2786 for (int i = 0; i < 10; ++i) {
2787 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2788 ++a;
2789 }
2790 #pragma omp parallel for simd
2791 for (int i = 0; i < 10; ++i) {
2792 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2793 ++a;
2794 }
2795 #pragma omp parallel for simd
2796 for (int i = 0; i < 10; ++i) {
2797 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2798 for (int i = 0; i < 10; ++i)
2799 ;
2800 }
2801 #pragma omp parallel for simd
2802 for (int i = 0; i < 10; ++i) {
2803 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2804 ++a;
2805 }
2806 #pragma omp parallel for simd
2807 for (int i = 0; i < 10; ++i) {
2808 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2809 ++a;
2810 }
2811 #pragma omp parallel for simd
2812 for (int i = 0; i < 10; ++i) {
2813 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2814 ++a;
2815 }
2816 #pragma omp parallel for simd
2817 for (int i = 0; i < 10; ++i) {
2818 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2819 for (int i = 0; i < 10; ++i)
2820 ++a;
2821 }
2822 #pragma omp parallel for simd
2823 for (int i = 0; i < 10; ++i) {
2824 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2825 for (int j = 0; j < 10; ++j)
2826 ;
2827 }
2828 #pragma omp parallel for simd
2829 for (int i = 0; i < 10; ++i) {
2830 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2831 bar();
2832 }
2833 #pragma omp parallel for simd
2834 for (int i = 0; i < 10; ++i) {
2835 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2836 for (int j = 0; j < 10; ++j)
2837 ;
2838 }
2839 #pragma omp parallel for simd
2840 for (int i = 0; i < 10; ++i) {
2841 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2842 for (int j = 0; j < 10; ++j)
2843 ;
2844 }
2845 #pragma omp parallel for simd
2846 for (int i = 0; i < 10; ++i) {
2847 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2848 for (int j = 0; j < 10; ++j)
2849 ;
2850 }
2851 #pragma omp parallel for simd
2852 for (int i = 0; i < 10; ++i) {
2853 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2854 for (int j = 0; j < 10; ++j)
2855 ;
2856 }
2857 #pragma omp parallel for simd
2858 for (int i = 0; i < 10; ++i) {
2859 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2860 for (int j = 0; j < 10; ++j)
2861 ;
2862 }
2863 #pragma omp parallel for simd
2864 for (int i = 0; i < 10; ++i) {
2865 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2866 for (int j = 0; j < 10; ++j)
2867 ;
2868 }
2869 #pragma omp parallel for simd
2870 for (int i = 0; i < 10; ++i) {
2871 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2872 for (int j = 0; j < 10; ++j)
2873 ;
2874 }
2875 #pragma omp parallel for simd
2876 for (int i = 0; i < 10; ++i) {
2877 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2878 for (int j = 0; j < 10; ++j)
2879 ;
2880 }
2881 #pragma omp parallel for simd
2882 for (int i = 0; i < 10; ++i) {
2883 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2884 a++;
2885 }
2886 #pragma omp parallel for simd
2887 for (int i = 0; i < 10; ++i) {
2888 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2889 for (int j = 0; j < 10; ++j)
2890 ;
2891 }
2892 #pragma omp parallel for simd
2893 for (int i = 0; i < 10; ++i) {
2894 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2895 for (int j = 0; j < 10; ++j)
2896 ;
2897 }
2898 #pragma omp parallel for simd
2899 for (int i = 0; i < 10; ++i) {
2900 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2901 for (int j = 0; j < 10; ++j)
2902 ;
2903 }
2904 #pragma omp parallel for simd
2905 for (int i = 0; i < 10; ++i) {
2906 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
2907 for (int j = 0; j < 10; ++j)
2908 ;
2909 }
2910
2911 // PARALLEL SECTIONS DIRECTIVE
2912 #pragma omp parallel sections
2913 {
2914 #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?}}
2915 for (int i = 0; i < 10; ++i)
2916 ;
2917 }
2918 #pragma omp parallel sections
2919 {
2920 #pragma omp simd
2921 for (int i = 0; i < 10; ++i)
2922 ;
2923 }
2924 #pragma omp parallel sections
2925 {
2926 #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?}}
2927 for (int i = 0; i < 10; ++i)
2928 ;
2929 }
2930 #pragma omp parallel sections
2931 {
2932 #pragma omp parallel
2933 for (int i = 0; i < 10; ++i)
2934 ;
2935 }
2936 #pragma omp parallel sections
2937 {
2938 #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?}}
2939 {
2940 bar();
2941 }
2942 }
2943 #pragma omp parallel sections
2944 {
2945 #pragma omp section
2946 {
2947 bar();
2948 }
2949 }
2950 #pragma omp parallel sections
2951 {
2952 #pragma omp section
2953 {
2954 #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?}}
2955 bar();
2956 }
2957 }
2958 #pragma omp parallel sections
2959 {
2960 #pragma omp section
2961 {
2962 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
2963 bar();
2964 }
2965 }
2966 #pragma omp parallel sections
2967 {
2968 #pragma omp section
2969 {
2970 #pragma omp critical
2971 bar();
2972 }
2973 }
2974 #pragma omp parallel sections
2975 {
2976 #pragma omp parallel
2977 {
2978 #pragma omp single // OK
2979 {
2980 bar();
2981 }
2982 #pragma omp for // OK
2983 for (int i = 0; i < 10; ++i)
2984 ;
2985 #pragma omp for simd // OK
2986 for (int i = 0; i < 10; ++i)
2987 ;
2988 #pragma omp sections // OK
2989 {
2990 bar();
2991 }
2992 }
2993 }
2994 #pragma omp parallel sections
2995 {
2996 #pragma omp parallel for
2997 for (int i = 0; i < 10; ++i)
2998 ;
2999 }
3000 #pragma omp parallel sections
3001 {
3002 #pragma omp parallel for simd
3003 for (int i = 0; i < 10; ++i)
3004 ;
3005 }
3006 #pragma omp parallel sections
3007 {
3008 #pragma omp parallel sections
3009 {
3010 bar();
3011 }
3012 }
3013 #pragma omp parallel sections
3014 {
3015 #pragma omp task
3016 {
3017 bar();
3018 }
3019 }
3020 #pragma omp parallel sections
3021 {
3022 #pragma omp taskyield
3023 }
3024 #pragma omp parallel sections
3025 {
3026 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
3027 }
3028 #pragma omp parallel sections
3029 {
3030 #pragma omp taskwait
3031 }
3032 #pragma omp parallel sections
3033 {
3034 #pragma omp flush
3035 }
3036 #pragma omp parallel sections
3037 {
3038 #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?}}
3039 bar();
3040 }
3041 #pragma omp parallel sections
3042 {
3043 #pragma omp atomic
3044 ++a;
3045 }
3046 #pragma omp parallel sections
3047 {
3048 #pragma omp target
3049 ++a;
3050 }
3051 #pragma omp parallel sections
3052 {
3053 #pragma omp target parallel
3054 ++a;
3055 }
3056 #pragma omp parallel sections
3057 {
3058 #pragma omp target parallel for
3059 for (int i = 0; i < 10; ++i)
3060 ;
3061 }
3062 #pragma omp parallel sections
3063 {
3064 #pragma omp target enter data map(to: a)
3065 }
3066 #pragma omp parallel sections
3067 {
3068 #pragma omp target exit data map(from: a)
3069 }
3070 #pragma omp parallel sections
3071 {
3072 #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?}}
3073 ++a;
3074 }
3075 #pragma omp parallel sections
3076 {
3077 #pragma omp taskloop
3078 for (int i = 0; i < 10; ++i)
3079 ++a;
3080 }
3081 #pragma omp parallel sections
3082 {
3083 #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?}}
3084 for (int i = 0; i < 10; ++i)
3085 ;
3086 }
3087 #pragma omp parallel sections
3088 {
3089 #pragma omp target update to(a)
3090 }
3091 #pragma omp parallel sections
3092 {
3093 #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?}}
3094 for (int i = 0; i < 10; ++i)
3095 ;
3096 }
3097 #pragma omp parallel sections
3098 {
3099 #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?}}
3100 for (int i = 0; i < 10; ++i)
3101 ;
3102 }
3103 #pragma omp parallel sections
3104 {
3105 #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?}}
3106 for (int i = 0; i < 10; ++i)
3107 ;
3108 }
3109 #pragma omp parallel sections
3110 {
3111 #pragma omp target simd // OK
3112 for (int i = 0; i < 10; ++i)
3113 ;
3114 }
3115 #pragma omp parallel sections
3116 {
3117 #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?}}
3118 for (int i = 0; i < 10; ++i)
3119 ;
3120 }
3121 #pragma omp parallel sections
3122 {
3123 #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?}}
3124 for (int i = 0; i < 10; ++i)
3125 ;
3126 }
3127 #pragma omp parallel sections
3128 {
3129 #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?}}
3130 for (int i = 0; i < 10; ++i)
3131 ;
3132 }
3133 #pragma omp parallel sections
3134 {
3135 #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?}}
3136 for (int i = 0; i < 10; ++i)
3137 ;
3138 }
3139 #pragma omp parallel sections
3140 {
3141 #pragma omp target teams // OK
3142 a++;
3143 }
3144 #pragma omp parallel sections
3145 {
3146 #pragma omp target teams distribute // OK
3147 for (int i = 0; i < 10; ++i)
3148 ;
3149 }
3150 #pragma omp parallel sections
3151 {
3152 #pragma omp target teams distribute parallel for // OK
3153 for (int i = 0; i < 10; ++i)
3154 ;
3155 }
3156 #pragma omp parallel sections
3157 {
3158 #pragma omp target teams distribute parallel for simd // OK
3159 for (int i = 0; i < 10; ++i)
3160 ;
3161 }
3162 #pragma omp parallel sections
3163 {
3164 #pragma omp target teams distribute simd // OK
3165 for (int i = 0; i < 10; ++i)
3166 ;
3167 }
3168
3169 // TASK DIRECTIVE
3170 #pragma omp task
3171 #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?}}
3172 for (int i = 0; i < 10; ++i)
3173 ;
3174 #pragma omp task
3175 #pragma omp simd
3176 for (int i = 0; i < 10; ++i)
3177 ;
3178 #pragma omp task
3179 #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?}}
3180 for (int i = 0; i < 10; ++i)
3181 ;
3182 #pragma omp task
3183 #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?}}
3184 {
3185 bar();
3186 }
3187 #pragma omp task
3188 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}
3189 {
3190 bar();
3191 }
3192 #pragma omp task
3193 #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?}}
3194 bar();
3195 #pragma omp task
3196 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}
3197 bar();
3198 #pragma omp task
3199 #pragma omp critical
3200 bar();
3201
3202 #pragma omp task
3203 #pragma omp parallel for
3204 for (int i = 0; i < 10; ++i)
3205 ;
3206 #pragma omp task
3207 #pragma omp parallel for simd
3208 for (int i = 0; i < 10; ++i)
3209 ;
3210 #pragma omp task
3211 #pragma omp parallel sections
3212 {
3213 bar();
3214 }
3215 #pragma omp task
3216 #pragma omp task
3217 {
3218 bar();
3219 }
3220 #pragma omp task
3221 {
3222 #pragma omp taskyield
3223 bar();
3224 }
3225 #pragma omp task
3226 {
3227 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}
3228 bar();
3229 }
3230 #pragma omp task
3231 {
3232 #pragma omp taskwait
3233 bar();
3234 }
3235 #pragma omp task
3236 {
3237 #pragma omp flush
3238 bar();
3239 }
3240 #pragma omp task
3241 {
3242 #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?}}
3243 bar();
3244 }
3245 #pragma omp task
3246 {
3247 #pragma omp atomic
3248 ++a;
3249 }
3250 #pragma omp task
3251 {
3252 #pragma omp target
3253 ++a;
3254 }
3255 #pragma omp task
3256 {
3257 #pragma omp target parallel
3258 ++a;
3259 }
3260 #pragma omp task
3261 #pragma omp target parallel for
3262 for (int i = 0; i < 10; ++i)
3263 ;
3264 #pragma omp task
3265 {
3266 #pragma omp target enter data map(to: a)
3267 ++a;
3268 }
3269 #pragma omp task
3270 {
3271 #pragma omp target exit data map(from: a)
3272 ++a;
3273 }
3274 #pragma omp task
3275 {
3276 #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?}}
3277 ++a;
3278 }
3279 #pragma omp task
3280 {
3281 #pragma omp taskloop
3282 for (int i = 0; i < 10; ++i)
3283 ++a;
3284 }
3285 #pragma omp task
3286 {
3287 #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?}}
3288 for (int i = 0; i < 10; ++i)
3289 ;
3290 }
3291 #pragma omp task
3292 {
3293 #pragma omp target update to(a)
3294 bar();
3295 }
3296 #pragma omp task
3297 {
3298 #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?}}
3299 for (int i = 0; i < 10; ++i)
3300 ;
3301 }
3302 #pragma omp task
3303 {
3304 #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?}}
3305 for (int i = 0; i < 10; ++i)
3306 ;
3307 }
3308 #pragma omp task
3309 {
3310 #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?}}
3311 for (int i = 0; i < 10; ++i)
3312 ;
3313 }
3314 #pragma omp task
3315 {
3316 #pragma omp target simd // OK
3317 for (int i = 0; i < 10; ++i)
3318 ;
3319 }
3320 #pragma omp task
3321 {
3322 #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?}}
3323 for (int i = 0; i < 10; ++i)
3324 ;
3325 }
3326 #pragma omp task
3327 {
3328 #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?}}
3329 for (int i = 0; i < 10; ++i)
3330 ;
3331 }
3332 #pragma omp task
3333 {
3334 #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?}}
3335 for (int i = 0; i < 10; ++i)
3336 ;
3337 }
3338 #pragma omp task
3339 {
3340 #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?}}
3341 for (int i = 0; i < 10; ++i)
3342 ;
3343 }
3344 #pragma omp task
3345 {
3346 #pragma omp target teams // OK
3347 a++;
3348 }
3349 #pragma omp task
3350 {
3351 #pragma omp target teams distribute // OK
3352 for (int i = 0; i < 10; ++i)
3353 ;
3354 }
3355 #pragma omp task
3356 {
3357 #pragma omp target teams distribute parallel for // OK
3358 for (int i = 0; i < 10; ++i)
3359 ;
3360 }
3361 #pragma omp task
3362 {
3363 #pragma omp target teams distribute parallel for simd // OK
3364 for (int i = 0; i < 10; ++i)
3365 ;
3366 }
3367 #pragma omp task
3368 {
3369 #pragma omp target teams distribute simd // OK
3370 for (int i = 0; i < 10; ++i)
3371 ;
3372 }
3373
3374 // ORDERED DIRECTIVE
3375 #pragma omp ordered
3376 {
3377 #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?}}
3378 for (int i = 0; i < 10; ++i)
3379 ;
3380 }
3381 #pragma omp ordered
3382 {
3383 #pragma omp simd
3384 for (int i = 0; i < 10; ++i)
3385 ;
3386 }
3387 #pragma omp ordered
3388 {
3389 #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?}}
3390 for (int i = 0; i < 10; ++i)
3391 ;
3392 }
3393 #pragma omp ordered
3394 {
3395 #pragma omp parallel
3396 for (int i = 0; i < 10; ++i)
3397 ;
3398 }
3399 #pragma omp ordered
3400 {
3401 #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?}}
3402 {
3403 bar();
3404 }
3405 }
3406 #pragma omp ordered
3407 {
3408 #pragma omp master // OK, though second 'ordered' is redundant
3409 {
3410 bar();
3411 }
3412 }
3413 #pragma omp ordered
3414 {
3415 #pragma omp critical
3416 {
3417 bar();
3418 }
3419 }
3420 #pragma omp ordered
3421 {
3422 #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?}}
3423 {
3424 bar();
3425 }
3426 }
3427 #pragma omp ordered
3428 {
3429 #pragma omp parallel for ordered
3430 for (int j = 0; j < 10; ++j) {
3431 #pragma omp ordered // OK
3432 {
3433 bar();
3434 }
3435 }
3436 }
3437 #pragma omp ordered
3438 {
3439 #pragma omp parallel for simd ordered
3440 for (int j = 0; j < 10; ++j) {
3441 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
3442 {
3443 bar();
3444 }
3445 }
3446 }
3447 #pragma omp ordered
3448 {
3449 #pragma omp parallel for simd ordered
3450 for (int j = 0; j < 10; ++j) {
3451 #pragma omp ordered simd
3452 {
3453 bar();
3454 }
3455 }
3456 }
3457 #pragma omp ordered
3458 {
3459 #pragma omp parallel for
3460 for (int i = 0; i < 10; ++i)
3461 ;
3462 }
3463 #pragma omp ordered
3464 {
3465 #pragma omp parallel for simd
3466 for (int i = 0; i < 10; ++i)
3467 ;
3468 }
3469 #pragma omp ordered
3470 {
3471 #pragma omp parallel sections
3472 {
3473 bar();
3474 }
3475 }
3476 #pragma omp ordered
3477 {
3478 #pragma omp task
3479 {
3480 bar();
3481 }
3482 }
3483 #pragma omp ordered
3484 {
3485 #pragma omp taskyield
3486 bar();
3487 }
3488 #pragma omp ordered
3489 {
3490 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}}
3491 bar();
3492 }
3493 #pragma omp ordered
3494 {
3495 #pragma omp taskwait
3496 bar();
3497 }
3498 #pragma omp ordered
3499 {
3500 #pragma omp flush
3501 bar();
3502 }
3503 #pragma omp ordered
3504 {
3505 #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?}}
3506 bar();
3507 }
3508 #pragma omp ordered
3509 {
3510 #pragma omp atomic
3511 ++a;
3512 }
3513 #pragma omp ordered
3514 {
3515 #pragma omp target
3516 ++a;
3517 }
3518 #pragma omp ordered
3519 {
3520 #pragma omp target parallel
3521 ++a;
3522 }
3523 #pragma omp ordered
3524 {
3525 #pragma omp target parallel for ordered
3526 for (int j = 0; j < 10; ++j) {
3527 #pragma omp ordered // OK
3528 {
3529 bar();
3530 }
3531 }
3532 }
3533 #pragma omp ordered
3534 {
3535 #pragma omp target parallel for
3536 for (int i = 0; i < 10; ++i)
3537 ;
3538 }
3539 #pragma omp ordered
3540 {
3541 #pragma omp target enter data map(to: a)
3542 ++a;
3543 }
3544 #pragma omp ordered
3545 {
3546 #pragma omp target exit data map(from: a)
3547 ++a;
3548 }
3549 #pragma omp ordered
3550 {
3551 #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?}}
3552 ++a;
3553 }
3554 #pragma omp ordered
3555 {
3556 #pragma omp taskloop
3557 for (int i = 0; i < 10; ++i)
3558 ++a;
3559 }
3560 #pragma omp ordered
3561 {
3562 #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?}}
3563 for (int i = 0; i < 10; ++i)
3564 ;
3565 }
3566 #pragma omp ordered
3567 {
3568 bar();
3569 #pragma omp target update to(a)
3570 bar();
3571 }
3572 #pragma omp ordered
3573 {
3574 #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?}}
3575 for (int i = 0; i < 10; ++i)
3576 ;
3577 }
3578 #pragma omp ordered
3579 {
3580 #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?}}
3581 for (int i = 0; i < 10; ++i)
3582 ;
3583 }
3584 #pragma omp ordered
3585 {
3586 #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?}}
3587 for (int i = 0; i < 10; ++i)
3588 ;
3589 }
3590 #pragma omp ordered
3591 {
3592 #pragma omp target simd // OK
3593 for (int i = 0; i < 10; ++i)
3594 ;
3595 }
3596 #pragma omp ordered
3597 {
3598 #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?}}
3599 for (int i = 0; i < 10; ++i)
3600 ;
3601 }
3602 #pragma omp ordered
3603 {
3604 #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?}}
3605 for (int i = 0; i < 10; ++i)
3606 ;
3607 }
3608 #pragma omp ordered
3609 {
3610 #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?}}
3611 for (int i = 0; i < 10; ++i)
3612 ;
3613 }
3614 #pragma omp ordered
3615 {
3616 #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?}}
3617 for (int i = 0; i < 10; ++i)
3618 ;
3619 }
3620 #pragma omp ordered
3621 {
3622 #pragma omp target teams // OK
3623 a++;
3624 }
3625 #pragma omp ordered
3626 {
3627 #pragma omp target teams distribute // OK
3628 for (int i = 0; i < 10; ++i)
3629 ;
3630 }
3631 #pragma omp ordered
3632 {
3633 #pragma omp target teams distribute parallel for // OK
3634 for (int i = 0; i < 10; ++i)
3635 ;
3636 }
3637 #pragma omp ordered
3638 {
3639 #pragma omp target teams distribute parallel for simd // OK
3640 for (int i = 0; i < 10; ++i)
3641 ;
3642 }
3643 #pragma omp ordered
3644 {
3645 #pragma omp target teams distribute simd // OK
3646 for (int i = 0; i < 10; ++i)
3647 ;
3648 }
3649
3650 // ATOMIC DIRECTIVE
3651 #pragma omp atomic
3652 // 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}}
3653 // expected-note@+1 {{expected an expression statement}}
3654 {
3655 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3656 for (int i = 0; i < 10; ++i)
3657 ;
3658 }
3659 #pragma omp atomic
3660 // 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}}
3661 // expected-note@+1 {{expected an expression statement}}
3662 {
3663 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3664 for (int i = 0; i < 10; ++i)
3665 ;
3666 }
3667 #pragma omp atomic
3668 // 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}}
3669 // expected-note@+1 {{expected an expression statement}}
3670 {
3671 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3672 for (int i = 0; i < 10; ++i)
3673 ;
3674 }
3675 #pragma omp atomic
3676 // 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}}
3677 // expected-note@+1 {{expected an expression statement}}
3678 {
3679 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3680 for (int i = 0; i < 10; ++i)
3681 ;
3682 }
3683 #pragma omp atomic
3684 // 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}}
3685 // expected-note@+1 {{expected an expression statement}}
3686 {
3687 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3688 {
3689 bar();
3690 }
3691 }
3692 #pragma omp atomic
3693 // 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}}
3694 // expected-note@+1 {{expected an expression statement}}
3695 {
3696 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3697 {
3698 bar();
3699 }
3700 }
3701 #pragma omp atomic
3702 // 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}}
3703 // expected-note@+1 {{expected an expression statement}}
3704 {
3705 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3706 {
3707 bar();
3708 }
3709 }
3710 #pragma omp atomic
3711 // 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}}
3712 // expected-note@+1 {{expected an expression statement}}
3713 {
3714 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3715 {
3716 bar();
3717 }
3718 }
3719 #pragma omp atomic
3720 // 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}}
3721 // expected-note@+1 {{expected an expression statement}}
3722 {
3723 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3724 {
3725 bar();
3726 }
3727 }
3728 #pragma omp atomic
3729 // 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}}
3730 // expected-note@+1 {{expected an expression statement}}
3731 {
3732 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3733 for (int i = 0; i < 10; ++i)
3734 ;
3735 }
3736 #pragma omp atomic
3737 // 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}}
3738 // expected-note@+1 {{expected an expression statement}}
3739 {
3740 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3741 for (int i = 0; i < 10; ++i)
3742 ;
3743 }
3744 #pragma omp atomic
3745 // 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}}
3746 // expected-note@+1 {{expected an expression statement}}
3747 {
3748 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3749 {
3750 bar();
3751 }
3752 }
3753 #pragma omp atomic
3754 // 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}}
3755 // expected-note@+1 {{expected an expression statement}}
3756 {
3757 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3758 {
3759 bar();
3760 }
3761 }
3762 #pragma omp atomic
3763 // 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}}
3764 // expected-note@+1 {{expected an expression statement}}
3765 {
3766 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3767 bar();
3768 }
3769 #pragma omp atomic
3770 // 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}}
3771 // expected-note@+1 {{expected an expression statement}}
3772 {
3773 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3774 bar();
3775 }
3776 #pragma omp atomic
3777 // 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}}
3778 // expected-note@+1 {{expected an expression statement}}
3779 {
3780 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3781 bar();
3782 }
3783 #pragma omp atomic
3784 // 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}}
3785 // expected-note@+1 {{expected an expression statement}}
3786 {
3787 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3788 bar();
3789 }
3790 #pragma omp atomic
3791 // 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}}
3792 // expected-note@+1 {{expected an expression statement}}
3793 {
3794 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3795 bar();
3796 }
3797 #pragma omp atomic
3798 // 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}}
3799 // expected-note@+1 {{expected an expression statement}}
3800 {
3801 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3802 ++a;
3803 }
3804 #pragma omp atomic
3805 // 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}}
3806 // expected-note@+1 {{expected an expression statement}}
3807 {
3808 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3809 ++a;
3810 }
3811 #pragma omp atomic
3812 // 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}}
3813 // expected-note@+1 {{expected an expression statement}}
3814 {
3815 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3816 ++a;
3817 }
3818 #pragma omp atomic
3819 // 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}}
3820 // expected-note@+1 {{expected an expression statement}}
3821 {
3822 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3823 for (int i = 0; i < 10; ++i)
3824 ;
3825 }
3826 #pragma omp atomic
3827 // 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}}
3828 // expected-note@+1 {{expected an expression statement}}
3829 {
3830 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3831 ++a;
3832 }
3833 #pragma omp atomic
3834 // 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}}
3835 // expected-note@+1 {{expected an expression statement}}
3836 {
3837 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3838 ++a;
3839 }
3840 #pragma omp atomic
3841 // 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}}
3842 // expected-note@+1 {{expected an expression statement}}
3843 {
3844 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3845 ++a;
3846 }
3847 #pragma omp atomic
3848 // 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}}
3849 // expected-note@+1 {{expected an expression statement}}
3850 {
3851 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3852 for (int i = 0; i < 10; ++i)
3853 ++a;
3854 }
3855 #pragma omp atomic
3856 // 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}}
3857 // expected-note@+1 {{expected an expression statement}}
3858 {
3859 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3860 for (int i = 0; i < 10; ++i)
3861 ;
3862 }
3863 #pragma omp atomic
3864 // 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}}
3865 // expected-note@+1 {{expected an expression statement}}
3866 {
3867 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3868 bar();
3869 }
3870 #pragma omp atomic
3871 // 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}}
3872 // expected-note@+1 {{expected an expression statement}}
3873 {
3874 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3875 for (int i = 0; i < 10; ++i)
3876 ;
3877 }
3878 #pragma omp atomic
3879 // 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}}
3880 // expected-note@+1 {{expected an expression statement}}
3881 {
3882 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3883 for (int i = 0; i < 10; ++i)
3884 ;
3885 }
3886 #pragma omp atomic
3887 // 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}}
3888 // expected-note@+1 {{expected an expression statement}}
3889 {
3890 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3891 for (int i = 0; i < 10; ++i)
3892 ;
3893 }
3894 #pragma omp atomic
3895 // 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}}
3896 // expected-note@+1 {{expected an expression statement}}
3897 {
3898 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3899 for (int i = 0; i < 10; ++i)
3900 ;
3901 }
3902 #pragma omp atomic
3903 // 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}}
3904 // expected-note@+1 {{expected an expression statement}}
3905 {
3906 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3907 for (int i = 0; i < 10; ++i)
3908 ;
3909 }
3910 #pragma omp atomic
3911 // 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}}
3912 // expected-note@+1 {{expected an expression statement}}
3913 {
3914 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3915 for (int i = 0; i < 10; ++i)
3916 ;
3917 }
3918 #pragma omp atomic
3919 // 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}}
3920 // expected-note@+1 {{expected an expression statement}}
3921 {
3922 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3923 for (int i = 0; i < 10; ++i)
3924 ;
3925 }
3926 #pragma omp atomic
3927 // 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}}
3928 // expected-note@+1 {{expected an expression statement}}
3929 {
3930 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3931 for (int i = 0; i < 10; ++i)
3932 ;
3933 }
3934 #pragma omp atomic
3935 // 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}}
3936 // expected-note@+1 {{expected an expression statement}}
3937 {
3938 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3939 a++;
3940 }
3941 #pragma omp atomic
3942 // 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}}
3943 // expected-note@+1 {{expected an expression statement}}
3944 {
3945 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3946 for (int i = 0; i < 10; ++i)
3947 ;
3948 }
3949 #pragma omp atomic
3950 // 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}}
3951 // expected-note@+1 {{expected an expression statement}}
3952 {
3953 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3954 for (int i = 0; i < 10; ++i)
3955 ;
3956 }
3957 #pragma omp atomic
3958 // 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}}
3959 // expected-note@+1 {{expected an expression statement}}
3960 {
3961 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3962 for (int i = 0; i < 10; ++i)
3963 ;
3964 }
3965 #pragma omp atomic
3966 // 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}}
3967 // expected-note@+1 {{expected an expression statement}}
3968 {
3969 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
3970 for (int i = 0; i < 10; ++i)
3971 ;
3972 }
3973
3974 // TARGET DIRECTIVE
3975 #pragma omp target
3976 #pragma omp parallel
3977 bar();
3978 #pragma omp target
3979 #pragma omp for
3980 for (int i = 0; i < 10; ++i)
3981 ;
3982 #pragma omp target
3983 #pragma omp simd
3984 for (int i = 0; i < 10; ++i)
3985 ;
3986 #pragma omp target
3987 #pragma omp for simd
3988 for (int i = 0; i < 10; ++i)
3989 ;
3990 #pragma omp target
3991 #pragma omp sections
3992 {
3993 bar();
3994 }
3995 #pragma omp target
3996 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}
3997 {
3998 bar();
3999 }
4000 #pragma omp target
4001 #pragma omp single
4002 bar();
4003
4004 #pragma omp target
4005 #pragma omp master
4006 {
4007 bar();
4008 }
4009 #pragma omp target
4010 #pragma omp critical
4011 {
4012 bar();
4013 }
4014 #pragma omp target
4015 #pragma omp parallel for
4016 for (int i = 0; i < 10; ++i)
4017 ;
4018 #pragma omp target
4019 #pragma omp parallel for simd
4020 for (int i = 0; i < 10; ++i)
4021 ;
4022 #pragma omp target
4023 #pragma omp parallel sections
4024 {
4025 bar();
4026 }
4027 #pragma omp target
4028 #pragma omp task
4029 {
4030 bar();
4031 }
4032 #pragma omp target
4033 {
4034 #pragma omp taskyield
4035 bar();
4036 }
4037 #pragma omp target
4038 {
4039 #pragma omp barrier
4040 bar();
4041 }
4042 #pragma omp target
4043 {
4044 #pragma omp taskwait
4045 bar();
4046 }
4047 #pragma omp target
4048 {
4049 #pragma omp flush
4050 bar();
4051 }
4052 #pragma omp target
4053 {
4054 #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?}}
4055 bar();
4056 }
4057 #pragma omp target
4058 {
4059 #pragma omp atomic
4060 ++a;
4061 }
4062 #pragma omp target
4063 {
4064 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
4065 ++a;
4066 }
4067 #pragma omp target
4068 {
4069 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
4070 ++a;
4071 }
4072 #pragma omp target
4073 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
4074 for (int i = 0; i < 10; ++i)
4075 ;
4076 #pragma omp target
4077 {
4078 #pragma omp teams
4079 ++a;
4080 }
4081 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4082 {
4083 ++a; // expected-note {{statement outside teams construct here}}
4084 #pragma omp teams // expected-note {{nested teams construct here}}
4085 ++a;
4086 }
4087 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4088 {
4089 while (0) // expected-note {{statement outside teams construct here}}
4090 #pragma omp teams // expected-note {{nested teams construct here}}
4091 ++a;
4092 }
4093 #pragma omp target
4094 {
4095 #pragma omp taskloop
4096 for (int i = 0; i < 10; ++i)
4097 ++a;
4098 }
4099 #pragma omp target
4100 {
4101 #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?}}
4102 for (int i = 0; i < 10; ++i)
4103 ;
4104 }
4105 #pragma omp target
4106 {
4107 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
4108 }
4109 #pragma omp target
4110 {
4111 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
4112 }
4113 #pragma omp target
4114 {
4115 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
4116 }
4117 #pragma omp target
4118 {
4119 #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?}}
4120 for (int i = 0; i < 10; ++i)
4121 ;
4122 }
4123 #pragma omp target
4124 {
4125 #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?}}
4126 for (int i = 0; i < 10; ++i)
4127 ;
4128 }
4129 #pragma omp target
4130 {
4131 #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?}}
4132 for (int i = 0; i < 10; ++i)
4133 ;
4134 }
4135 #pragma omp target
4136 {
4137 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
4138 for (int i = 0; i < 10; ++i)
4139 ;
4140 }
4141 #pragma omp target
4142 {
4143 #pragma omp teams distribute // OK
4144 for (int i = 0; i < 10; ++i)
4145 ;
4146 }
4147 #pragma omp target
4148 {
4149 #pragma omp teams distribute simd // OK
4150 for (int i = 0; i < 10; ++i)
4151 ;
4152 }
4153 #pragma omp target
4154 {
4155 #pragma omp teams distribute parallel for simd // OK
4156 for (int i = 0; i < 10; ++i)
4157 ;
4158 }
4159 #pragma omp target
4160 {
4161 #pragma omp teams distribute parallel for // OK
4162 for (int i = 0; i < 10; ++i)
4163 ;
4164 }
4165 #pragma omp target
4166 {
4167 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
4168 for (int i = 0; i < 10; ++i)
4169 ;
4170 }
4171 #pragma omp target
4172 {
4173 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
4174 for (int i = 0; i < 10; ++i)
4175 ;
4176 }
4177 #pragma omp target
4178 {
4179 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
4180 for (int i = 0; i < 10; ++i)
4181 ;
4182 }
4183 #pragma omp target
4184 {
4185 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
4186 for (int i = 0; i < 10; ++i)
4187 ;
4188 }
4189 #pragma omp target
4190 {
4191 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
4192 for (int i = 0; i < 10; ++i)
4193 ;
4194 }
4195
4196 // TARGET PARALLEL DIRECTIVE
4197 #pragma omp target parallel
4198 #pragma omp parallel
4199 bar();
4200 #pragma omp target parallel
4201 #pragma omp for
4202 for (int i = 0; i < 10; ++i)
4203 ;
4204 #pragma omp target parallel
4205 #pragma omp simd
4206 for (int i = 0; i < 10; ++i)
4207 ;
4208 #pragma omp target parallel
4209 #pragma omp for simd
4210 for (int i = 0; i < 10; ++i)
4211 ;
4212 #pragma omp target parallel
4213 #pragma omp sections
4214 {
4215 bar();
4216 }
4217 #pragma omp target parallel
4218 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
4219 {
4220 bar();
4221 }
4222 #pragma omp target parallel
4223 #pragma omp single
4224 bar();
4225
4226 #pragma omp target parallel
4227 #pragma omp master
4228 {
4229 bar();
4230 }
4231 #pragma omp target parallel
4232 #pragma omp critical
4233 {
4234 bar();
4235 }
4236 #pragma omp target parallel
4237 #pragma omp parallel for
4238 for (int i = 0; i < 10; ++i)
4239 ;
4240 #pragma omp target parallel
4241 #pragma omp parallel for simd
4242 for (int i = 0; i < 10; ++i)
4243 ;
4244 #pragma omp target parallel
4245 #pragma omp parallel sections
4246 {
4247 bar();
4248 }
4249 #pragma omp target parallel
4250 #pragma omp task
4251 {
4252 bar();
4253 }
4254 #pragma omp target parallel
4255 {
4256 #pragma omp taskyield
4257 bar();
4258 }
4259 #pragma omp target parallel
4260 {
4261 #pragma omp barrier
4262 bar();
4263 }
4264 #pragma omp target parallel
4265 {
4266 #pragma omp taskwait
4267 bar();
4268 }
4269 #pragma omp target parallel
4270 {
4271 #pragma omp flush
4272 bar();
4273 }
4274 #pragma omp target parallel
4275 {
4276 #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?}}
4277 bar();
4278 }
4279 #pragma omp target parallel
4280 {
4281 #pragma omp atomic
4282 ++a;
4283 }
4284 #pragma omp target parallel
4285 {
4286 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}
4287 ++a;
4288 }
4289 #pragma omp target parallel
4290 {
4291 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}
4292 ++a;
4293 }
4294 #pragma omp target parallel
4295 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
4296 for (int i = 0; i < 10; ++i)
4297 ;
4298 #pragma omp target parallel
4299 {
4300 #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?}}
4301 ++a;
4302 }
4303 #pragma omp target parallel
4304 {
4305 ++a;
4306 #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?}}
4307 ++a;
4308 }
4309 #pragma omp target parallel
4310 {
4311 #pragma omp taskloop
4312 for (int i = 0; i < 10; ++i)
4313 ++a;
4314 }
4315 #pragma omp target parallel
4316 {
4317 #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?}}
4318 for (int i = 0; i < 10; ++i)
4319 ;
4320 }
4321 #pragma omp target parallel
4322 {
4323 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4324 }
4325 #pragma omp target parallel
4326 {
4327 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4328 }
4329 #pragma omp target parallel
4330 {
4331 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4332 }
4333 #pragma omp target parallel
4334 {
4335 #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?}}
4336 for (int i = 0; i < 10; ++i)
4337 ;
4338 }
4339 #pragma omp target parallel
4340 {
4341 #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?}}
4342 for (int i = 0; i < 10; ++i)
4343 ;
4344 }
4345 #pragma omp target parallel
4346 {
4347 #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?}}
4348 for (int i = 0; i < 10; ++i)
4349 ;
4350 }
4351 #pragma omp target parallel
4352 {
4353 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4354 for (int i = 0; i < 10; ++i)
4355 ;
4356 }
4357 #pragma omp target parallel
4358 {
4359 #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?}}
4360 for (int i = 0; i < 10; ++i)
4361 ;
4362 }
4363 #pragma omp target parallel
4364 {
4365 #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?}}
4366 for (int i = 0; i < 10; ++i)
4367 ;
4368 }
4369 #pragma omp target parallel
4370 {
4371 #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?}}
4372 for (int i = 0; i < 10; ++i)
4373 ;
4374 }
4375 #pragma omp target parallel
4376 {
4377 #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?}}
4378 for (int i = 0; i < 10; ++i)
4379 ;
4380 }
4381 #pragma omp target parallel
4382 {
4383 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}
4384 a++;
4385 }
4386 #pragma omp target parallel
4387 {
4388 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}
4389 for (int i = 0; i < 10; ++i)
4390 ;
4391 }
4392 #pragma omp target parallel
4393 {
4394 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
4395 for (int i = 0; i < 10; ++i)
4396 ;
4397 }
4398 #pragma omp target parallel
4399 {
4400 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4401 for (int i = 0; i < 10; ++i)
4402 ;
4403 }
4404 #pragma omp target parallel
4405 {
4406 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4407 for (int i = 0; i < 10; ++i)
4408 ;
4409 }
4410
4411 // TARGET PARALLEL FOR DIRECTIVE
4412 #pragma omp target parallel for
4413 for (int i = 0; i < 10; ++i) {
4414 #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?}}
4415 for (int i = 0; i < 10; ++i)
4416 ;
4417 }
4418 #pragma omp target parallel for
4419 for (int i = 0; i < 10; ++i) {
4420 #pragma omp simd
4421 for (int i = 0; i < 10; ++i)
4422 ;
4423 }
4424 #pragma omp target parallel for
4425 for (int i = 0; i < 10; ++i) {
4426 #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?}}
4427 for (int i = 0; i < 10; ++i)
4428 ;
4429 }
4430 #pragma omp target parallel for
4431 for (int i = 0; i < 10; ++i) {
4432 #pragma omp parallel
4433 for (int i = 0; i < 10; ++i)
4434 ;
4435 }
4436 #pragma omp target parallel for
4437 for (int i = 0; i < 10; ++i) {
4438 #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?}}
4439 {
4440 bar();
4441 }
4442 }
4443 #pragma omp target parallel for
4444 for (int i = 0; i < 10; ++i) {
4445 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}
4446 {
4447 bar();
4448 }
4449 }
4450 #pragma omp target parallel for
4451 for (int i = 0; i < 10; ++i) {
4452 #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?}}
4453 {
4454 bar();
4455 }
4456 }
4457
4458 #pragma omp target parallel for
4459 for (int i = 0; i < 10; ++i) {
4460 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
4461 {
4462 bar();
4463 }
4464 }
4465
4466 #pragma omp target parallel for
4467 for (int i = 0; i < 10; ++i) {
4468 #pragma omp critical
4469 {
4470 bar();
4471 }
4472 }
4473
4474 #pragma omp target parallel for
4475 for (int i = 0; i < 10; ++i) {
4476 #pragma omp parallel
4477 {
4478 #pragma omp single // OK
4479 {
4480 bar();
4481 }
4482 #pragma omp for // OK
4483 for (int i = 0; i < 10; ++i)
4484 ;
4485 #pragma omp for simd // OK
4486 for (int i = 0; i < 10; ++i)
4487 ;
4488 #pragma omp sections // OK
4489 {
4490 bar();
4491 }
4492 }
4493 }
4494 #pragma omp target parallel for
4495 for (int i = 0; i < 10; ++i) {
4496 #pragma omp parallel for
4497 for (int i = 0; i < 10; ++i)
4498 ;
4499 }
4500 #pragma omp target parallel for
4501 for (int i = 0; i < 10; ++i) {
4502 #pragma omp parallel for simd
4503 for (int i = 0; i < 10; ++i)
4504 ;
4505 }
4506 #pragma omp target parallel for
4507 for (int i = 0; i < 10; ++i) {
4508 #pragma omp parallel sections
4509 {
4510 bar();
4511 }
4512 }
4513 #pragma omp target parallel for
4514 for (int i = 0; i < 10; ++i) {
4515 #pragma omp task
4516 {
4517 bar();
4518 }
4519 }
4520 #pragma omp target parallel for
4521 for (int i = 0; i < 10; ++i) {
4522 #pragma omp taskyield
4523 bar();
4524 }
4525 #pragma omp target parallel for
4526 for (int i = 0; i < 10; ++i) {
4527 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
4528 bar();
4529 }
4530 #pragma omp target parallel for
4531 for (int i = 0; i < 10; ++i) {
4532 #pragma omp taskwait
4533 bar();
4534 }
4535 #pragma omp target parallel for
4536 for (int i = 0; i < 10; ++i) {
4537 #pragma omp flush
4538 bar();
4539 }
4540 #pragma omp target parallel for
4541 for (int i = 0; i < 10; ++i) {
4542 #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?}}
4543 bar();
4544 }
4545 #pragma omp target parallel for ordered
4546 for (int i = 0; i < 10; ++i) {
4547 #pragma omp ordered // OK
4548 bar();
4549 }
4550 #pragma omp target parallel for
4551 for (int i = 0; i < 10; ++i) {
4552 #pragma omp atomic
4553 ++a;
4554 }
4555 #pragma omp target parallel for
4556 for (int i = 0; i < 10; ++i) {
4557 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}
4558 ++a;
4559 }
4560 #pragma omp target parallel for
4561 for (int i = 0; i < 10; ++i) {
4562 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}
4563 ++a;
4564 }
4565 #pragma omp target parallel for
4566 for (int i = 0; i < 10; ++i) {
4567 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
4568 for (int i = 0; i < 10; ++i)
4569 ;
4570 }
4571 #pragma omp target parallel for
4572 for (int i = 0; i < 10; ++i) {
4573 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
4574 ++a;
4575 }
4576 #pragma omp target parallel for
4577 for (int i = 0; i < 10; ++i) {
4578 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
4579 ++a;
4580 }
4581 #pragma omp target parallel for
4582 for (int i = 0; i < 10; ++i) {
4583 #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?}}
4584 ++a;
4585 }
4586 #pragma omp target parallel for
4587 for (int i = 0; i < 10; ++i) {
4588 #pragma omp taskloop
4589 for (int i = 0; i < 10; ++i)
4590 ++a;
4591 }
4592 #pragma omp target parallel for
4593 for (int i = 0; i < 10; ++i) {
4594 #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?}}
4595 for (int j = 0; j < 10; ++j)
4596 ;
4597 }
4598 #pragma omp target parallel for
4599 for (int i = 0; i < 10; ++i) {
4600 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
4601 }
4602 #pragma omp target parallel for
4603 for (int i = 0; i < 10; ++i) {
4604 #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?}}
4605 for (int j = 0; j < 10; ++j)
4606 ;
4607 }
4608 #pragma omp target parallel for
4609 for (int i = 0; i < 10; ++i) {
4610 #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?}}
4611 for (int j = 0; j < 10; ++j)
4612 ;
4613 }
4614 #pragma omp target parallel for
4615 for (int i = 0; i < 10; ++i) {
4616 #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?}}
4617 for (int j = 0; j < 10; ++j)
4618 ;
4619 }
4620 #pragma omp target parallel for
4621 for (int i = 0; i < 10; ++i) {
4622 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
4623 for (int j = 0; j < 10; ++j)
4624 ;
4625 }
4626 #pragma omp target parallel for
4627 for (int i = 0; i < 10; ++i) {
4628 #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?}}
4629 for (int j = 0; j < 10; ++j)
4630 ;
4631 }
4632 #pragma omp target parallel for
4633 for (int i = 0; i < 10; ++i) {
4634 #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?}}
4635 for (int j = 0; j < 10; ++j)
4636 ;
4637 }
4638 #pragma omp target parallel for
4639 for (int i = 0; i < 10; ++i) {
4640 #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?}}
4641 for (int j = 0; j < 10; ++j)
4642 ;
4643 }
4644 #pragma omp target parallel for
4645 for (int i = 0; i < 10; ++i) {
4646 #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?}}
4647 for (int j = 0; j < 10; ++j)
4648 ;
4649 }
4650 #pragma omp target parallel for
4651 for (int i = 0; i < 10; ++i) {
4652 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}
4653 a++;
4654 }
4655 #pragma omp target parallel for
4656 for (int i = 0; i < 10; ++i) {
4657 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}
4658 for (int j = 0; j < 10; ++j)
4659 ;
4660 }
4661 #pragma omp target parallel for
4662 for (int i = 0; i < 10; ++i) {
4663 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
4664 for (int j = 0; j < 10; ++j)
4665 ;
4666 }
4667 #pragma omp target parallel for
4668 for (int i = 0; i < 10; ++i) {
4669 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
4670 for (int j = 0; j < 10; ++j)
4671 ;
4672 }
4673 #pragma omp target parallel for
4674 for (int i = 0; i < 10; ++i) {
4675 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
4676 for (int j = 0; j < 10; ++j)
4677 ;
4678 }
4679
4680 // TEAMS DIRECTIVE
4681 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
4682 bar();
4683 #pragma omp target
4684 #pragma omp teams
4685 #pragma omp parallel
4686 bar();
4687 #pragma omp target
4688 #pragma omp teams
4689 #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?}}
4690 for (int i = 0; i < 10; ++i)
4691 ;
4692 #pragma omp target
4693 #pragma omp teams
4694 #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?}}
4695 for (int i = 0; i < 10; ++i)
4696 ;
4697 #pragma omp target
4698 #pragma omp teams
4699 #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?}}
4700 for (int i = 0; i < 10; ++i)
4701 ;
4702 #pragma omp target
4703 #pragma omp teams
4704 #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?}}
4705 {
4706 bar();
4707 }
4708 #pragma omp target
4709 #pragma omp teams
4710 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}
4711 {
4712 bar();
4713 }
4714 #pragma omp target
4715 #pragma omp teams
4716 #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?}}
4717 bar();
4718
4719 #pragma omp target
4720 #pragma omp teams
4721 #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?}}
4722 {
4723 bar();
4724 }
4725 #pragma omp target
4726 #pragma omp teams
4727 #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?}}
4728 {
4729 bar();
4730 }
4731 #pragma omp target
4732 #pragma omp teams
4733 #pragma omp parallel for
4734 for (int i = 0; i < 10; ++i)
4735 ;
4736 #pragma omp target
4737 #pragma omp teams
4738 #pragma omp parallel for simd
4739 for (int i = 0; i < 10; ++i)
4740 ;
4741 #pragma omp target
4742 #pragma omp teams
4743 #pragma omp parallel sections
4744 {
4745 bar();
4746 }
4747 #pragma omp target
4748 #pragma omp teams
4749 #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?}}
4750 {
4751 bar();
4752 }
4753 #pragma omp target
4754 #pragma omp teams
4755 {
4756 #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?}}
4757 bar();
4758 }
4759 #pragma omp target
4760 #pragma omp teams
4761 {
4762 #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?}}
4763 bar();
4764 }
4765 #pragma omp target
4766 #pragma omp teams
4767 {
4768 #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?}}
4769 bar();
4770 }
4771 #pragma omp target
4772 #pragma omp teams
4773 {
4774 #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?}}
4775 bar();
4776 }
4777 #pragma omp target
4778 #pragma omp teams
4779 {
4780 #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?}}
4781 bar();
4782 }
4783 #pragma omp target
4784 #pragma omp teams
4785 {
4786 #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?}}
4787 ++a;
4788 }
4789 #pragma omp target
4790 #pragma omp teams
4791 {
4792 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
4793 ++a;
4794 }
4795 #pragma omp target
4796 #pragma omp teams
4797 {
4798 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
4799 ++a;
4800 }
4801 #pragma omp target
4802 #pragma omp teams
4803 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
4804 for (int i = 0; i < 10; ++i)
4805 ;
4806 #pragma omp target
4807 #pragma omp teams
4808 {
4809 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
4810 ++a;
4811 }
4812 #pragma omp target
4813 #pragma omp teams
4814 {
4815 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
4816 ++a;
4817 }
4818 #pragma omp target
4819 #pragma omp teams
4820 {
4821 #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?}}
4822 ++a;
4823 }
4824 #pragma omp target
4825 #pragma omp teams
4826 {
4827 #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?}}
4828 for (int i = 0; i < 10; ++i)
4829 ++a;
4830 }
4831 #pragma omp target
4832 #pragma omp teams
4833 #pragma omp distribute
4834 for (int i = 0; i < 10; ++i)
4835 ;
4836 #pragma omp target
4837 #pragma omp teams
4838 #pragma omp distribute
4839 for (int i = 0; i < 10; ++i)
4840 ;
4841 #pragma omp distribute
4842 for (int j = 0; j < 10; ++j)
4843 ;
4844 #pragma omp target
4845 #pragma omp teams
4846 {
4847 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
4848 }
4849 #pragma omp target
4850 #pragma omp teams
4851 {
4852 #pragma omp distribute parallel for
4853 for (int i = 0; i < 10; ++i)
4854 ;
4855 #pragma omp distribute parallel for
4856 for (int j = 0; j < 10; ++j)
4857 ;
4858 }
4859 #pragma omp target
4860 #pragma omp teams
4861 {
4862 #pragma omp distribute parallel for simd
4863 for (int i = 0; i < 10; ++i)
4864 ;
4865 #pragma omp distribute parallel for simd
4866 for (int j = 0; j < 10; ++j)
4867 ;
4868 }
4869 #pragma omp target
4870 #pragma omp teams
4871 {
4872 #pragma omp distribute simd
4873 for (int i = 0; i < 10; ++i)
4874 ;
4875 #pragma omp distribute simd
4876 for (int j = 0; j < 10; ++j)
4877 ;
4878 }
4879 #pragma omp target
4880 #pragma omp teams
4881 {
4882 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
4883 for (int i = 0; i < 10; ++i)
4884 ;
4885 }
4886 #pragma omp target
4887 #pragma omp teams
4888 {
4889 #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?}}
4890 for (int i = 0; i < 10; ++i)
4891 ;
4892 }
4893 #pragma omp target
4894 #pragma omp teams
4895 {
4896 #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?}}
4897 for (int i = 0; i < 10; ++i)
4898 ;
4899 }
4900 #pragma omp target
4901 #pragma omp teams
4902 {
4903 #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?}}
4904 for (int i = 0; i < 10; ++i)
4905 ;
4906 }
4907 #pragma omp target
4908 #pragma omp teams
4909 {
4910 #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?}}
4911 for (int i = 0; i < 10; ++i)
4912 ;
4913 }
4914 #pragma omp target
4915 #pragma omp teams
4916 {
4917 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
4918 a++;
4919 }
4920 #pragma omp target
4921 #pragma omp teams
4922 {
4923 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
4924 for (int i = 0; i < 10; ++i)
4925 ;
4926 }
4927 #pragma omp target
4928 #pragma omp teams
4929 {
4930 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
4931 for (int i = 0; i < 10; ++i)
4932 ;
4933 }
4934 #pragma omp target
4935 #pragma omp teams
4936 {
4937 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
4938 for (int i = 0; i < 10; ++i)
4939 ;
4940 }
4941 #pragma omp target
4942 #pragma omp teams
4943 {
4944 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
4945 for (int i = 0; i < 10; ++i)
4946 ;
4947 }
4948
4949 // TASKLOOP DIRECTIVE
4950 #pragma omp taskloop
4951 for (int i = 0; i < 10; ++i) {
4952 #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?}}
4953 for (int i = 0; i < 10; ++i)
4954 ;
4955 }
4956 #pragma omp taskloop
4957 for (int i = 0; i < 10; ++i) {
4958 #pragma omp simd
4959 for (int i = 0; i < 10; ++i)
4960 ;
4961 }
4962 #pragma omp taskloop
4963 for (int i = 0; i < 10; ++i) {
4964 #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?}}
4965 for (int i = 0; i < 10; ++i)
4966 ;
4967 }
4968 #pragma omp taskloop
4969 for (int i = 0; i < 10; ++i) {
4970 #pragma omp parallel
4971 for (int i = 0; i < 10; ++i)
4972 ;
4973 }
4974 #pragma omp taskloop
4975 for (int i = 0; i < 10; ++i) {
4976 #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?}}
4977 {
4978 bar();
4979 }
4980 }
4981 #pragma omp taskloop
4982 for (int i = 0; i < 10; ++i) {
4983 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}
4984 {
4985 bar();
4986 }
4987 }
4988 #pragma omp taskloop
4989 for (int i = 0; i < 10; ++i) {
4990 #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?}}
4991 {
4992 bar();
4993 }
4994 }
4995
4996 #pragma omp taskloop
4997 for (int i = 0; i < 10; ++i) {
4998 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}
4999 {
5000 bar();
5001 }
5002 }
5003 #pragma omp taskloop
5004 for (int i = 0; i < 10; ++i) {
5005 #pragma omp critical
5006 {
5007 bar();
5008 }
5009 }
5010 #pragma omp taskloop
5011 for (int i = 0; i < 10; ++i) {
5012 #pragma omp parallel
5013 {
5014 #pragma omp single // OK
5015 {
5016 bar();
5017 }
5018 #pragma omp for // OK
5019 for (int i = 0; i < 10; ++i)
5020 ;
5021 #pragma omp sections // OK
5022 {
5023 bar();
5024 }
5025 }
5026 }
5027 #pragma omp taskloop
5028 for (int i = 0; i < 10; ++i) {
5029 #pragma omp parallel for
5030 for (int i = 0; i < 10; ++i)
5031 ;
5032 }
5033 #pragma omp taskloop
5034 for (int i = 0; i < 10; ++i) {
5035 #pragma omp parallel for simd
5036 for (int i = 0; i < 10; ++i)
5037 ;
5038 }
5039 #pragma omp taskloop
5040 for (int i = 0; i < 10; ++i) {
5041 #pragma omp parallel sections
5042 {
5043 bar();
5044 }
5045 }
5046 #pragma omp taskloop
5047 for (int i = 0; i < 10; ++i) {
5048 #pragma omp task
5049 {
5050 bar();
5051 }
5052 }
5053 #pragma omp taskloop
5054 for (int i = 0; i < 10; ++i) {
5055 #pragma omp taskyield
5056 bar();
5057 }
5058 #pragma omp taskloop
5059 for (int i = 0; i < 10; ++i) {
5060 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5061 bar();
5062 }
5063 #pragma omp taskloop
5064 for (int i = 0; i < 10; ++i) {
5065 #pragma omp taskwait
5066 bar();
5067 }
5068 #pragma omp taskloop
5069 for (int i = 0; i < 10; ++i) {
5070 #pragma omp flush
5071 bar();
5072 }
5073 #pragma omp taskloop
5074 for (int i = 0; i < 10; ++i) {
5075 #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?}}
5076 bar();
5077 }
5078 #pragma omp taskloop
5079 for (int i = 0; i < 10; ++i) {
5080 #pragma omp atomic
5081 ++a;
5082 }
5083 #pragma omp taskloop
5084 for (int i = 0; i < 10; ++i) {
5085 #pragma omp target
5086 ++a;
5087 }
5088 #pragma omp taskloop
5089 for (int i = 0; i < 10; ++i) {
5090 #pragma omp target parallel
5091 ++a;
5092 }
5093 #pragma omp taskloop
5094 for (int i = 0; i < 10; ++i) {
5095 #pragma omp target parallel for
5096 for (int i = 0; i < 10; ++i)
5097 ;
5098 }
5099 #pragma omp taskloop
5100 for (int i = 0; i < 10; ++i) {
5101 #pragma omp target enter data map(to: a)
5102 ++a;
5103 }
5104 #pragma omp taskloop
5105 for (int i = 0; i < 10; ++i) {
5106 #pragma omp target exit data map(from: a)
5107 ++a;
5108 }
5109 #pragma omp taskloop
5110 for (int i = 0; i < 10; ++i) {
5111 #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?}}
5112 ++a;
5113 }
5114 #pragma omp taskloop
5115 for (int i = 0; i < 10; ++i) {
5116 #pragma omp taskloop
5117 for (int i = 0; i < 10; ++i)
5118 ++a;
5119 }
5120 #pragma omp taskloop
5121 for (int i = 0; i < 10; ++i) {
5122 #pragma omp target update to(a)
5123 bar();
5124 }
5125 #pragma omp taskloop
5126 for (int i = 0; i < 10; ++i) {
5127 #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?}}
5128 for (int j = 0; j < 10; ++j)
5129 ++a;
5130 }
5131 #pragma omp taskloop
5132 for (int i = 0; i < 10; ++i) {
5133 #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?}}
5134 for (int j = 0; j < 10; ++j)
5135 ++a;
5136 }
5137 #pragma omp taskloop
5138 for (int i = 0; i < 10; ++i) {
5139 #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?}}
5140 for (int j = 0; j < 10; ++j)
5141 ++a;
5142 }
5143 #pragma omp taskloop
5144 for (int i = 0; i < 10; ++i) {
5145 #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?}}
5146 for (int j = 0; j < 10; ++j)
5147 ++a;
5148 }
5149 #pragma omp taskloop
5150 for (int i = 0; i < 10; ++i) {
5151 #pragma omp target simd // OK
5152 for (int j = 0; j < 10; ++j)
5153 ++a;
5154 }
5155 #pragma omp taskloop
5156 for (int i = 0; i < 10; ++i) {
5157 #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?}}
5158 for (int j = 0; j < 10; ++j)
5159 ++a;
5160 }
5161 #pragma omp taskloop
5162 for (int i = 0; i < 10; ++i) {
5163 #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?}}
5164 for (int j = 0; j < 10; ++j)
5165 ++a;
5166 }
5167 #pragma omp taskloop
5168 for (int i = 0; i < 10; ++i) {
5169 #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?}}
5170 for (int j = 0; j < 10; ++j)
5171 ++a;
5172 }
5173 #pragma omp taskloop
5174 for (int i = 0; i < 10; ++i) {
5175 #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?}}
5176 for (int j = 0; j < 10; ++j)
5177 ++a;
5178 }
5179 #pragma omp taskloop
5180 for (int i = 0; i < 10; ++i) {
5181 #pragma omp target teams // OK
5182 ++a;
5183 }
5184 #pragma omp taskloop
5185 for (int i = 0; i < 10; ++i) {
5186 #pragma omp target teams distribute // OK
5187 for (int j = 0; j < 10; ++j)
5188 ++a;
5189 }
5190 #pragma omp taskloop
5191 for (int i = 0; i < 10; ++i) {
5192 #pragma omp target teams distribute parallel for // OK
5193 for (int j = 0; j < 10; ++j)
5194 ++a;
5195 }
5196 #pragma omp taskloop
5197 for (int i = 0; i < 10; ++i) {
5198 #pragma omp target teams distribute parallel for simd // OK
5199 for (int j = 0; j < 10; ++j)
5200 ++a;
5201 }
5202 #pragma omp taskloop
5203 for (int i = 0; i < 10; ++i) {
5204 #pragma omp target teams distribute simd // OK
5205 for (int j = 0; j < 10; ++j)
5206 ++a;
5207 }
5208
5209 // DISTRIBUTE DIRECTIVE
5210 #pragma omp target
5211 #pragma omp teams
5212 #pragma omp distribute
5213 for (int i = 0; i < 10; ++i) {
5214 #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?}}
5215 for (int i = 0; i < 10; ++i)
5216 ;
5217 }
5218 #pragma omp target
5219 #pragma omp teams
5220 #pragma omp distribute
5221 for (int i = 0; i < 10; ++i) {
5222 #pragma omp for
5223 for (int i = 0; i < 10; ++i)
5224 ;
5225 }
5226 #pragma omp target
5227 #pragma omp teams
5228 #pragma omp distribute
5229 for (int i = 0; i < 10; ++i) {
5230 #pragma omp simd
5231 for (int i = 0; i < 10; ++i)
5232 ;
5233 }
5234 #pragma omp target
5235 #pragma omp teams
5236 #pragma omp distribute
5237 for (int i = 0; i < 10; ++i) {
5238 #pragma omp for simd
5239 for (int i = 0; i < 10; ++i)
5240 ;
5241 }
5242 #pragma omp target
5243 #pragma omp teams
5244 #pragma omp distribute
5245 for (int i = 0; i < 10; ++i) {
5246 #pragma omp parallel
5247 for (int i = 0; i < 10; ++i)
5248 ;
5249 }
5250 #pragma omp target
5251 #pragma omp teams
5252 #pragma omp distribute
5253 for (int i = 0; i < 10; ++i) {
5254 #pragma omp sections
5255 {
5256 bar();
5257 }
5258 }
5259 #pragma omp target
5260 #pragma omp teams
5261 #pragma omp distribute
5262 for (int i = 0; i < 10; ++i) {
5263 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}
5264 {
5265 bar();
5266 }
5267 }
5268 #pragma omp target
5269 #pragma omp teams
5270 #pragma omp distribute
5271 for (int i = 0; i < 10; ++i) {
5272 #pragma omp single
5273 {
5274 bar();
5275 }
5276 }
5277 #pragma omp target
5278 #pragma omp teams
5279 #pragma omp distribute
5280 for (int i = 0; i < 10; ++i) {
5281 #pragma omp master
5282 {
5283 bar();
5284 }
5285 }
5286 #pragma omp target
5287 #pragma omp teams
5288 #pragma omp distribute
5289 for (int i = 0; i < 10; ++i) {
5290 #pragma omp critical
5291 {
5292 bar();
5293 }
5294 }
5295 #pragma omp target
5296 #pragma omp teams
5297 #pragma omp distribute
5298 for (int i = 0; i < 10; ++i) {
5299 #pragma omp parallel
5300 {
5301 #pragma omp single
5302 {
5303 bar();
5304 }
5305 }
5306 }
5307 #pragma omp target
5308 #pragma omp teams
5309 #pragma omp distribute
5310 for (int i = 0; i < 10; ++i) {
5311 #pragma omp parallel for
5312 for (int i = 0; i < 10; ++i)
5313 ;
5314 }
5315 #pragma omp target
5316 #pragma omp teams
5317 #pragma omp distribute
5318 for (int i = 0; i < 10; ++i) {
5319 #pragma omp parallel for simd
5320 for (int i = 0; i < 10; ++i)
5321 ;
5322 }
5323 #pragma omp target
5324 #pragma omp teams
5325 #pragma omp distribute
5326 for (int i = 0; i < 10; ++i) {
5327 #pragma omp parallel sections
5328 {
5329 bar();
5330 }
5331 }
5332 #pragma omp target
5333 #pragma omp teams
5334 #pragma omp distribute
5335 for (int i = 0; i < 10; ++i) {
5336 #pragma omp task
5337 {
5338 bar();
5339 }
5340 }
5341 #pragma omp target
5342 #pragma omp teams
5343 #pragma omp distribute
5344 for (int i = 0; i < 10; ++i) {
5345 #pragma omp taskyield
5346 bar();
5347 }
5348 #pragma omp target
5349 #pragma omp teams
5350 #pragma omp distribute
5351 for (int i = 0; i < 10; ++i) {
5352 #pragma omp barrier
5353 bar();
5354 }
5355 #pragma omp target
5356 #pragma omp teams
5357 #pragma omp distribute
5358 for (int i = 0; i < 10; ++i) {
5359 #pragma omp taskwait
5360 bar();
5361 }
5362 #pragma omp target
5363 #pragma omp teams
5364 #pragma omp distribute
5365 for (int i = 0; i < 10; ++i) {
5366 #pragma omp flush
5367 bar();
5368 }
5369 #pragma omp target
5370 #pragma omp teams
5371 #pragma omp distribute
5372 for (int i = 0; i < 10; ++i) {
5373 #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?}}
5374 bar();
5375 }
5376 #pragma omp target
5377 #pragma omp teams
5378 #pragma omp distribute
5379 for (int i = 0; i < 10; ++i) {
5380 #pragma omp atomic
5381 ++a;
5382 }
5383 #pragma omp target
5384 #pragma omp teams
5385 #pragma omp distribute
5386 for (int i = 0; i < 10; ++i) {
5387 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
5388 ++a;
5389 }
5390 #pragma omp target
5391 #pragma omp teams
5392 #pragma omp distribute
5393 for (int i = 0; i < 10; ++i) {
5394 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
5395 ++a;
5396 }
5397 #pragma omp target
5398 #pragma omp teams
5399 #pragma omp distribute
5400 for (int i = 0; i < 10; ++i) {
5401 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
5402 for (int i = 0; i < 10; ++i)
5403 ;
5404 }
5405 #pragma omp target
5406 #pragma omp teams
5407 #pragma omp distribute
5408 for (int i = 0; i < 10; ++i) {
5409 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
5410 ++a;
5411 }
5412 #pragma omp target
5413 #pragma omp teams
5414 #pragma omp distribute
5415 for (int i = 0; i < 10; ++i) {
5416 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
5417 ++a;
5418 }
5419 #pragma omp target
5420 #pragma omp teams
5421 #pragma omp distribute
5422 for (int i = 0; i < 10; ++i) {
5423 #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?}}
5424 ++a;
5425 }
5426 #pragma omp target
5427 #pragma omp teams
5428 #pragma omp distribute
5429 for (int i = 0; i < 10; ++i) {
5430 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
5431 ++a;
5432 }
5433 #pragma omp target
5434 #pragma omp teams
5435 #pragma omp distribute
5436 for (int i = 0; i < 10; ++i) {
5437 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
5438 for (int j = 0; j < 10; ++j)
5439 ;
5440 }
5441 #pragma omp target
5442 #pragma omp teams
5443 #pragma omp distribute
5444 for (int i = 0; i < 10; ++i) {
5445 #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?}}
5446 for (int j = 0; j < 10; ++j)
5447 ;
5448 }
5449 #pragma omp target
5450 #pragma omp teams
5451 #pragma omp distribute
5452 for (int i = 0; i < 10; ++i) {
5453 #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?}}
5454 for (int j = 0; j < 10; ++j)
5455 ;
5456 }
5457 #pragma omp target
5458 #pragma omp teams
5459 #pragma omp distribute
5460 for (int i = 0; i < 10; ++i) {
5461 #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?}}
5462 for (int j = 0; j < 10; ++j)
5463 ;
5464 }
5465 #pragma omp target
5466 #pragma omp teams
5467 #pragma omp distribute
5468 for (int i = 0; i < 10; ++i) {
5469 #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?}}
5470 for (int j = 0; j < 10; ++j)
5471 ;
5472 }
5473 #pragma omp target
5474 #pragma omp teams
5475 #pragma omp distribute
5476 for (int i = 0; i < 10; ++i) {
5477 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
5478 a++;
5479 }
5480 #pragma omp target
5481 #pragma omp teams
5482 #pragma omp distribute
5483 for (int i = 0; i < 10; ++i) {
5484 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
5485 for (int j = 0; j < 10; ++j)
5486 ;
5487 }
5488 #pragma omp target
5489 #pragma omp teams
5490 #pragma omp distribute
5491 for (int i = 0; i < 10; ++i) {
5492 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
5493 for (int j = 0; j < 10; ++j)
5494 ;
5495 }
5496 #pragma omp target
5497 #pragma omp teams
5498 #pragma omp distribute
5499 for (int i = 0; i < 10; ++i) {
5500 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
5501 for (int j = 0; j < 10; ++j)
5502 ;
5503 }
5504 #pragma omp target
5505 #pragma omp teams
5506 #pragma omp distribute
5507 for (int i = 0; i < 10; ++i) {
5508 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
5509 for (int j = 0; j < 10; ++j)
5510 ;
5511 }
5512
5513 // DISTRIBUTE PARALLEL FOR DIRECTIVE
5514 #pragma omp target
5515 #pragma omp teams
5516 #pragma omp distribute parallel for
5517 for (int i = 0; i < 10; ++i) {
5518 #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?}}
5519 for (int i = 0; i < 10; ++i)
5520 ;
5521 }
5522 #pragma omp target
5523 #pragma omp teams
5524 #pragma omp distribute parallel for
5525 for (int i = 0; i < 10; ++i) {
5526 #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?}}
5527 for (int i = 0; i < 10; ++i)
5528 ;
5529 }
5530 #pragma omp target
5531 #pragma omp teams
5532 #pragma omp distribute parallel for
5533 for (int i = 0; i < 10; ++i) {
5534 #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?}}
5535 for (int i = 0; i < 10; ++i)
5536 ;
5537 }
5538 #pragma omp target
5539 #pragma omp teams
5540 #pragma omp distribute parallel for
5541 for (int i = 0; i < 10; ++i) {
5542 #pragma omp simd
5543 for (int i = 0; i < 10; ++i)
5544 ;
5545 }
5546 #pragma omp target
5547 #pragma omp teams
5548 #pragma omp distribute parallel for
5549 for (int i = 0; i < 10; ++i) {
5550 #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?}}
5551 for (int i = 0; i < 10; ++i)
5552 ;
5553 }
5554 #pragma omp target
5555 #pragma omp teams
5556 #pragma omp distribute parallel for
5557 for (int i = 0; i < 10; ++i) {
5558 #pragma omp parallel
5559 for (int i = 0; i < 10; ++i)
5560 ;
5561 }
5562 #pragma omp target
5563 #pragma omp teams
5564 #pragma omp distribute parallel for
5565 for (int i = 0; i < 10; ++i) {
5566 #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?}}
5567 {
5568 bar();
5569 }
5570 }
5571 #pragma omp target
5572 #pragma omp teams
5573 #pragma omp distribute parallel for
5574 for (int i = 0; i < 10; ++i) {
5575 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}
5576 {
5577 bar();
5578 }
5579 }
5580 #pragma omp target
5581 #pragma omp teams
5582 #pragma omp distribute parallel for
5583 for (int i = 0; i < 10; ++i) {
5584 #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?}}
5585 {
5586 bar();
5587 }
5588 }
5589 #pragma omp target
5590 #pragma omp teams
5591 #pragma omp distribute parallel for
5592 for (int i = 0; i < 10; ++i) {
5593 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
5594 {
5595 bar();
5596 }
5597 }
5598 #pragma omp target
5599 #pragma omp teams
5600 #pragma omp distribute parallel for
5601 for (int i = 0; i < 10; ++i) {
5602 #pragma omp critical
5603 {
5604 bar();
5605 }
5606 }
5607 #pragma omp target
5608 #pragma omp teams
5609 #pragma omp distribute parallel for
5610 for (int i = 0; i < 10; ++i) {
5611 #pragma omp parallel
5612 {
5613 #pragma omp single
5614 {
5615 bar();
5616 }
5617 }
5618 }
5619 #pragma omp target
5620 #pragma omp teams
5621 #pragma omp distribute parallel for
5622 for (int i = 0; i < 10; ++i) {
5623 #pragma omp parallel for
5624 for (int i = 0; i < 10; ++i)
5625 ;
5626 }
5627 #pragma omp target
5628 #pragma omp teams
5629 #pragma omp distribute parallel for
5630 for (int i = 0; i < 10; ++i) {
5631 #pragma omp parallel for simd
5632 for (int i = 0; i < 10; ++i)
5633 ;
5634 }
5635 #pragma omp target
5636 #pragma omp teams
5637 #pragma omp distribute parallel for
5638 for (int i = 0; i < 10; ++i) {
5639 #pragma omp parallel sections
5640 {
5641 bar();
5642 }
5643 }
5644 #pragma omp target
5645 #pragma omp teams
5646 #pragma omp distribute parallel for
5647 for (int i = 0; i < 10; ++i) {
5648 #pragma omp task
5649 {
5650 bar();
5651 }
5652 }
5653 #pragma omp target
5654 #pragma omp teams
5655 #pragma omp distribute parallel for
5656 for (int i = 0; i < 10; ++i) {
5657 #pragma omp taskyield
5658 bar();
5659 }
5660 #pragma omp target
5661 #pragma omp teams
5662 #pragma omp distribute parallel for
5663 for (int i = 0; i < 10; ++i) {
5664 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
5665 bar();
5666 }
5667 #pragma omp target
5668 #pragma omp teams
5669 #pragma omp distribute parallel for
5670 for (int i = 0; i < 10; ++i) {
5671 #pragma omp taskwait
5672 bar();
5673 }
5674 #pragma omp target
5675 #pragma omp teams
5676 #pragma omp distribute parallel for
5677 for (int i = 0; i < 10; ++i) {
5678 #pragma omp flush
5679 bar();
5680 }
5681 #pragma omp target
5682 #pragma omp teams
5683 #pragma omp distribute parallel for
5684 for (int i = 0; i < 10; ++i) {
5685 #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?}}
5686 bar();
5687 }
5688 #pragma omp target
5689 #pragma omp teams
5690 #pragma omp distribute parallel for
5691 for (int i = 0; i < 10; ++i) {
5692 #pragma omp atomic
5693 ++a;
5694 }
5695 #pragma omp target
5696 #pragma omp teams
5697 #pragma omp distribute parallel for
5698 for (int i = 0; i < 10; ++i) {
5699 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
5700 ++a;
5701 }
5702 #pragma omp target
5703 #pragma omp teams
5704 #pragma omp distribute parallel for
5705 for (int i = 0; i < 10; ++i) {
5706 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
5707 ++a;
5708 }
5709 #pragma omp target
5710 #pragma omp teams
5711 #pragma omp distribute parallel for
5712 for (int i = 0; i < 10; ++i) {
5713 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
5714 for (int i = 0; i < 10; ++i)
5715 ;
5716 }
5717 #pragma omp target
5718 #pragma omp teams
5719 #pragma omp distribute parallel for
5720 for (int i = 0; i < 10; ++i) {
5721 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
5722 ++a;
5723 }
5724 #pragma omp target
5725 #pragma omp teams
5726 #pragma omp distribute parallel for
5727 for (int i = 0; i < 10; ++i) {
5728 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
5729 ++a;
5730 }
5731 #pragma omp target
5732 #pragma omp teams
5733 #pragma omp distribute parallel for
5734 for (int i = 0; i < 10; ++i) {
5735 #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?}}
5736 ++a;
5737 }
5738 #pragma omp target
5739 #pragma omp teams
5740 #pragma omp distribute parallel for
5741 for (int i = 0; i < 10; ++i) {
5742 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
5743 ++a;
5744 }
5745 #pragma omp target
5746 #pragma omp teams
5747 #pragma omp distribute parallel for
5748 for (int i = 0; i < 10; ++i) {
5749 #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?}}
5750 for (int i = 0; i < 10; ++i)
5751 ;
5752 }
5753 #pragma omp target
5754 #pragma omp teams
5755 #pragma omp distribute parallel for
5756 for (int i = 0; i < 10; ++i) {
5757 #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?}}
5758 for (int i = 0; i < 10; ++i)
5759 ;
5760 }
5761 #pragma omp target
5762 #pragma omp teams
5763 #pragma omp distribute parallel for
5764 for (int i = 0; i < 10; ++i) {
5765 #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?}}
5766 for (int i = 0; i < 10; ++i)
5767 ;
5768 }
5769 #pragma omp target
5770 #pragma omp teams
5771 #pragma omp distribute parallel for
5772 for (int i = 0; i < 10; ++i) {
5773 #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?}}
5774 for (int i = 0; i < 10; ++i)
5775 ;
5776 }
5777 #pragma omp target
5778 #pragma omp teams
5779 #pragma omp distribute parallel for
5780 for (int i = 0; i < 10; ++i) {
5781 #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?}}
5782 for (int i = 0; i < 10; ++i)
5783 ;
5784 }
5785 #pragma omp target
5786 #pragma omp teams
5787 #pragma omp distribute parallel for
5788 for (int i = 0; i < 10; ++i) {
5789 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
5790 a++;
5791 }
5792 #pragma omp target
5793 #pragma omp teams
5794 #pragma omp distribute parallel for
5795 for (int i = 0; i < 10; ++i) {
5796 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
5797 for (int i = 0; i < 10; ++i)
5798 ;
5799 }
5800 #pragma omp target
5801 #pragma omp teams
5802 #pragma omp distribute parallel for
5803 for (int i = 0; i < 10; ++i) {
5804 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
5805 for (int i = 0; i < 10; ++i)
5806 ;
5807 }
5808 #pragma omp target
5809 #pragma omp teams
5810 #pragma omp distribute parallel for
5811 for (int i = 0; i < 10; ++i) {
5812 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
5813 for (int i = 0; i < 10; ++i)
5814 ;
5815 }
5816 #pragma omp target
5817 #pragma omp teams
5818 #pragma omp distribute parallel for
5819 for (int i = 0; i < 10; ++i) {
5820 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
5821 for (int i = 0; i < 10; ++i)
5822 ;
5823 }
5824
5825 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
5826 #pragma omp target
5827 #pragma omp teams
5828 #pragma omp distribute parallel for simd
5829 for (int i = 0; i < 10; ++i) {
5830 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5831 for (int i = 0; i < 10; ++i)
5832 ;
5833 }
5834 #pragma omp target
5835 #pragma omp teams
5836 #pragma omp distribute parallel for simd
5837 for (int i = 0; i < 10; ++i) {
5838 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5839 for (int i = 0; i < 10; ++i)
5840 ;
5841 }
5842 #pragma omp target
5843 #pragma omp teams
5844 #pragma omp distribute parallel for simd
5845 for (int i = 0; i < 10; ++i) {
5846 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5847 for (int i = 0; i < 10; ++i)
5848 ;
5849 }
5850 #pragma omp target
5851 #pragma omp teams
5852 #pragma omp distribute parallel for simd
5853 for (int i = 0; i < 10; ++i) {
5854 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
5855 for (int i = 0; i < 10; ++i)
5856 ;
5857 }
5858 #pragma omp target
5859 #pragma omp teams
5860 #pragma omp distribute parallel for simd
5861 for (int i = 0; i < 10; ++i) {
5862 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5863 for (int i = 0; i < 10; ++i)
5864 ;
5865 }
5866 #pragma omp target
5867 #pragma omp teams
5868 #pragma omp distribute parallel for simd
5869 for (int i = 0; i < 10; ++i) {
5870 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5871 for (int i = 0; i < 10; ++i)
5872 ;
5873 }
5874 #pragma omp target
5875 #pragma omp teams
5876 #pragma omp distribute parallel for simd
5877 for (int i = 0; i < 10; ++i) {
5878 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5879 {
5880 bar();
5881 }
5882 }
5883 #pragma omp target
5884 #pragma omp teams
5885 #pragma omp distribute parallel for simd
5886 for (int i = 0; i < 10; ++i) {
5887 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5888 {
5889 bar();
5890 }
5891 }
5892 #pragma omp target
5893 #pragma omp teams
5894 #pragma omp distribute parallel for simd
5895 for (int i = 0; i < 10; ++i) {
5896 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5897 {
5898 bar();
5899 }
5900 }
5901 #pragma omp target
5902 #pragma omp teams
5903 #pragma omp distribute parallel for simd
5904 for (int i = 0; i < 10; ++i) {
5905 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5906 {
5907 bar();
5908 }
5909 }
5910 #pragma omp target
5911 #pragma omp teams
5912 #pragma omp distribute parallel for simd
5913 for (int i = 0; i < 10; ++i) {
5914 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5915 {
5916 bar();
5917 }
5918 }
5919 #pragma omp target
5920 #pragma omp teams
5921 #pragma omp distribute parallel for simd
5922 for (int i = 0; i < 10; ++i) {
5923 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5924 {
5925 #pragma omp single
5926 {
5927 bar();
5928 }
5929 }
5930 }
5931 #pragma omp target
5932 #pragma omp teams
5933 #pragma omp distribute parallel for simd
5934 for (int i = 0; i < 10; ++i) {
5935 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5936 for (int i = 0; i < 10; ++i)
5937 ;
5938 }
5939 #pragma omp target
5940 #pragma omp teams
5941 #pragma omp distribute parallel for simd
5942 for (int i = 0; i < 10; ++i) {
5943 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5944 for (int i = 0; i < 10; ++i)
5945 ;
5946 }
5947 #pragma omp target
5948 #pragma omp teams
5949 #pragma omp distribute parallel for simd
5950 for (int i = 0; i < 10; ++i) {
5951 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5952 {
5953 bar();
5954 }
5955 }
5956 #pragma omp target
5957 #pragma omp teams
5958 #pragma omp distribute parallel for simd
5959 for (int i = 0; i < 10; ++i) {
5960 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5961 {
5962 bar();
5963 }
5964 }
5965 #pragma omp target
5966 #pragma omp teams
5967 #pragma omp distribute parallel for simd
5968 for (int i = 0; i < 10; ++i) {
5969 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5970 bar();
5971 }
5972 #pragma omp target
5973 #pragma omp teams
5974 #pragma omp distribute parallel for simd
5975 for (int i = 0; i < 10; ++i) {
5976 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5977 bar();
5978 }
5979 #pragma omp target
5980 #pragma omp teams
5981 #pragma omp distribute parallel for simd
5982 for (int i = 0; i < 10; ++i) {
5983 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5984 bar();
5985 }
5986 #pragma omp target
5987 #pragma omp teams
5988 #pragma omp distribute parallel for simd
5989 for (int i = 0; i < 10; ++i) {
5990 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5991 bar();
5992 }
5993 #pragma omp target
5994 #pragma omp teams
5995 #pragma omp distribute parallel for simd
5996 for (int i = 0; i < 10; ++i) {
5997 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5998 bar();
5999 }
6000 #pragma omp target
6001 #pragma omp teams
6002 #pragma omp distribute parallel for simd
6003 for (int i = 0; i < 10; ++i) {
6004 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6005 ++a;
6006 }
6007 #pragma omp target
6008 #pragma omp teams
6009 #pragma omp distribute parallel for simd
6010 for (int i = 0; i < 10; ++i) {
6011 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6012 ++a;
6013 }
6014 #pragma omp target
6015 #pragma omp teams
6016 #pragma omp distribute parallel for simd
6017 for (int i = 0; i < 10; ++i) {
6018 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6019 ++a;
6020 }
6021 #pragma omp target
6022 #pragma omp teams
6023 #pragma omp distribute parallel for simd
6024 for (int i = 0; i < 10; ++i) {
6025 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6026 for (int i = 0; i < 10; ++i)
6027 ;
6028 }
6029 #pragma omp target
6030 #pragma omp teams
6031 #pragma omp distribute parallel for simd
6032 for (int i = 0; i < 10; ++i) {
6033 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6034 ++a;
6035 }
6036 #pragma omp target
6037 #pragma omp teams
6038 #pragma omp distribute parallel for simd
6039 for (int i = 0; i < 10; ++i) {
6040 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6041 ++a;
6042 }
6043 #pragma omp target
6044 #pragma omp teams
6045 #pragma omp distribute parallel for simd
6046 for (int i = 0; i < 10; ++i) {
6047 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6048 ++a;
6049 }
6050 #pragma omp target
6051 #pragma omp teams
6052 #pragma omp distribute parallel for simd
6053 for (int i = 0; i < 10; ++i) {
6054 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6055 ++a;
6056 }
6057 #pragma omp target
6058 #pragma omp teams
6059 #pragma omp distribute parallel for simd
6060 for (int i = 0; i < 10; ++i) {
6061 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6062 for (int i = 0; i < 10; ++i)
6063 ++a;
6064 }
6065 #pragma omp target
6066 #pragma omp teams
6067 #pragma omp distribute parallel for simd
6068 for (int i = 0; i < 10; ++i) {
6069 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6070 for (int i = 0; i < 10; ++i)
6071 ++a;
6072 }
6073 #pragma omp target
6074 #pragma omp teams
6075 #pragma omp distribute parallel for simd
6076 for (int i = 0; i < 10; ++i) {
6077 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6078 for (int i = 0; i < 10; ++i)
6079 ++a;
6080 }
6081 #pragma omp target
6082 #pragma omp teams
6083 #pragma omp distribute parallel for simd
6084 for (int i = 0; i < 10; ++i) {
6085 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6086 for (int i = 0; i < 10; ++i)
6087 ++a;
6088 }
6089 #pragma omp target
6090 #pragma omp teams
6091 #pragma omp distribute parallel for simd
6092 for (int i = 0; i < 10; ++i) {
6093 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6094 for (int i = 0; i < 10; ++i)
6095 ++a;
6096 }
6097 #pragma omp target
6098 #pragma omp teams
6099 #pragma omp distribute parallel for simd
6100 for (int i = 0; i < 10; ++i) {
6101 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6102 for (int i = 0; i < 10; ++i)
6103 ++a;
6104 }
6105 #pragma omp target
6106 #pragma omp teams
6107 #pragma omp distribute parallel for simd
6108 for (int i = 0; i < 10; ++i) {
6109 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6110 ++a;
6111 }
6112 #pragma omp target
6113 #pragma omp teams
6114 #pragma omp distribute parallel for simd
6115 for (int i = 0; i < 10; ++i) {
6116 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6117 for (int i = 0; i < 10; ++i)
6118 ++a;
6119 }
6120 #pragma omp target
6121 #pragma omp teams
6122 #pragma omp distribute parallel for simd
6123 for (int i = 0; i < 10; ++i) {
6124 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6125 for (int i = 0; i < 10; ++i)
6126 ++a;
6127 }
6128 #pragma omp target
6129 #pragma omp teams
6130 #pragma omp distribute parallel for simd
6131 for (int i = 0; i < 10; ++i) {
6132 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6133 for (int i = 0; i < 10; ++i)
6134 ++a;
6135 }
6136 #pragma omp target
6137 #pragma omp teams
6138 #pragma omp distribute parallel for simd
6139 for (int i = 0; i < 10; ++i) {
6140 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6141 for (int i = 0; i < 10; ++i)
6142 ++a;
6143 }
6144
6145 // TARGET SIMD DIRECTIVE
6146 #pragma omp target simd
6147 for (int i = 0; i < 10; ++i) {
6148 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6149 for (int i = 0; i < 10; ++i)
6150 ;
6151 }
6152 #pragma omp target simd
6153 for (int i = 0; i < 10; ++i) {
6154 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6155 for (int i = 0; i < 10; ++i)
6156 ;
6157 }
6158 #pragma omp target simd
6159 for (int i = 0; i < 10; ++i) {
6160 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6161 for (int i = 0; i < 10; ++i)
6162 ;
6163 }
6164 #pragma omp target simd
6165 for (int i = 0; i < 10; ++i) {
6166 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
6167 for (int i = 0; i < 10; ++i)
6168 ;
6169 }
6170 #pragma omp target simd
6171 for (int i = 0; i < 10; ++i) {
6172 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6173 for (int i = 0; i < 10; ++i)
6174 ;
6175 }
6176 #pragma omp target simd
6177 for (int i = 0; i < 10; ++i) {
6178 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6179 for (int i = 0; i < 10; ++i)
6180 ;
6181 }
6182 #pragma omp target simd
6183 for (int i = 0; i < 10; ++i) {
6184 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6185 {
6186 bar();
6187 }
6188 }
6189 #pragma omp target simd
6190 for (int i = 0; i < 10; ++i) {
6191 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6192 {
6193 bar();
6194 }
6195 }
6196 #pragma omp target simd
6197 for (int i = 0; i < 10; ++i) {
6198 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6199 {
6200 bar();
6201 }
6202 }
6203 #pragma omp target simd
6204 for (int i = 0; i < 10; ++i) {
6205 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6206 {
6207 bar();
6208 }
6209 }
6210 #pragma omp target simd
6211 for (int i = 0; i < 10; ++i) {
6212 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6213 {
6214 bar();
6215 }
6216 }
6217 #pragma omp target simd
6218 for (int i = 0; i < 10; ++i) {
6219 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6220 {
6221 #pragma omp single
6222 {
6223 bar();
6224 }
6225 }
6226 }
6227 #pragma omp target simd
6228 for (int i = 0; i < 10; ++i) {
6229 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6230 for (int i = 0; i < 10; ++i)
6231 ;
6232 }
6233 #pragma omp target simd
6234 for (int i = 0; i < 10; ++i) {
6235 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6236 for (int i = 0; i < 10; ++i)
6237 ;
6238 }
6239 #pragma omp target simd
6240 for (int i = 0; i < 10; ++i) {
6241 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6242 {
6243 bar();
6244 }
6245 }
6246 #pragma omp target simd
6247 for (int i = 0; i < 10; ++i) {
6248 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6249 {
6250 bar();
6251 }
6252 }
6253 #pragma omp target simd
6254 for (int i = 0; i < 10; ++i) {
6255 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6256 bar();
6257 }
6258 #pragma omp target simd
6259 for (int i = 0; i < 10; ++i) {
6260 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6261 bar();
6262 }
6263 #pragma omp target simd
6264 for (int i = 0; i < 10; ++i) {
6265 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6266 bar();
6267 }
6268 #pragma omp target simd
6269 for (int i = 0; i < 10; ++i) {
6270 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6271 bar();
6272 }
6273 #pragma omp target simd
6274 for (int i = 0; i < 10; ++i) {
6275 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6276 bar();
6277 }
6278 #pragma omp target simd
6279 for (int i = 0; i < 10; ++i) {
6280 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6281 ++a;
6282 }
6283 #pragma omp target simd
6284 for (int i = 0; i < 10; ++i) {
6285 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6286 ++a;
6287 }
6288 #pragma omp target simd
6289 for (int i = 0; i < 10; ++i) {
6290 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6291 ++a;
6292 }
6293 #pragma omp target simd
6294 for (int i = 0; i < 10; ++i) {
6295 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6296 for (int i = 0; i < 10; ++i)
6297 ;
6298 }
6299 #pragma omp target simd
6300 for (int i = 0; i < 10; ++i) {
6301 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6302 ++a;
6303 }
6304 #pragma omp target simd
6305 for (int i = 0; i < 10; ++i) {
6306 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6307 ++a;
6308 }
6309 #pragma omp target simd
6310 for (int i = 0; i < 10; ++i) {
6311 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6312 ++a;
6313 }
6314 #pragma omp target simd
6315 for (int i = 0; i < 10; ++i) {
6316 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6317 ++a;
6318 }
6319 #pragma omp target simd
6320 for (int i = 0; i < 10; ++i) {
6321 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6322 for (int i = 0; i < 10; ++i)
6323 ++a;
6324 }
6325 #pragma omp target simd
6326 for (int i = 0; i < 10; ++i) {
6327 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6328 for (int i = 0; i < 10; ++i)
6329 ++a;
6330 }
6331 #pragma omp target simd
6332 for (int i = 0; i < 10; ++i) {
6333 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6334 for (int i = 0; i < 10; ++i)
6335 ++a;
6336 }
6337 #pragma omp target simd
6338 for (int i = 0; i < 10; ++i) {
6339 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6340 for (int i = 0; i < 10; ++i)
6341 ++a;
6342 }
6343 #pragma omp target simd
6344 for (int i = 0; i < 10; ++i) {
6345 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6346 for (int i = 0; i < 10; ++i)
6347 ++a;
6348 }
6349 #pragma omp target simd
6350 for (int i = 0; i < 10; ++i) {
6351 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6352 for (int i = 0; i < 10; ++i)
6353 ++a;
6354 }
6355 #pragma omp target simd
6356 for (int i = 0; i < 10; ++i) {
6357 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6358 for (int i = 0; i < 10; ++i)
6359 ++a;
6360 }
6361 #pragma omp target simd
6362 for (int i = 0; i < 10; ++i) {
6363 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6364 for (int i = 0; i < 10; ++i)
6365 ++a;
6366 }
6367
6368 // TEAMS DISTRIBUTE DIRECTIVE
6369 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
6370 for (int i = 0; i < 10; ++i)
6371 ;
6372 #pragma omp target
6373 #pragma omp teams distribute
6374 for (int i = 0; i < 10; ++i) {
6375 #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?}}
6376 for (int i = 0; i < 10; ++i)
6377 ;
6378 }
6379 #pragma omp target
6380 #pragma omp teams distribute
6381 for (int i = 0; i < 10; ++i) {
6382 #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?}}
6383 for (int i = 0; i < 10; ++i)
6384 ;
6385 }
6386 #pragma omp target
6387 #pragma omp teams distribute
6388 for (int i = 0; i < 10; ++i) {
6389 #pragma omp for // OK
6390 for (int i = 0; i < 10; ++i)
6391 ;
6392 }
6393 #pragma omp target
6394 #pragma omp teams distribute
6395 for (int i = 0; i < 10; ++i) {
6396 #pragma omp simd // OK
6397 for (int i = 0; i < 10; ++i)
6398 ;
6399 }
6400 #pragma omp target
6401 #pragma omp teams distribute
6402 for (int i = 0; i < 10; ++i) {
6403 #pragma omp for simd // OK
6404 for (int i = 0; i < 10; ++i)
6405 ;
6406 }
6407 #pragma omp target
6408 #pragma omp teams distribute
6409 for (int i = 0; i < 10; ++i) {
6410 #pragma omp parallel // OK
6411 for (int i = 0; i < 10; ++i)
6412 ;
6413 }
6414 #pragma omp target
6415 #pragma omp teams distribute
6416 for (int i = 0; i < 10; ++i) {
6417 #pragma omp sections // OK
6418 {
6419 bar();
6420 }
6421 }
6422 #pragma omp target
6423 #pragma omp teams distribute
6424 for (int i = 0; i < 10; ++i) {
6425 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
6426 {
6427 bar();
6428 }
6429 }
6430 #pragma omp target
6431 #pragma omp teams distribute
6432 for (int i = 0; i < 10; ++i) {
6433 #pragma omp single // OK
6434 {
6435 bar();
6436 }
6437 }
6438 #pragma omp target
6439 #pragma omp teams distribute
6440 for (int i = 0; i < 10; ++i) {
6441 #pragma omp master // OK
6442 {
6443 bar();
6444 }
6445 }
6446 #pragma omp target
6447 #pragma omp teams distribute
6448 for (int i = 0; i < 10; ++i) {
6449 #pragma omp critical // OK
6450 {
6451 bar();
6452 }
6453 }
6454 #pragma omp target
6455 #pragma omp teams distribute
6456 for (int i = 0; i < 10; ++i) {
6457 #pragma omp parallel // OK
6458 {
6459 #pragma omp single
6460 {
6461 bar();
6462 }
6463 }
6464 }
6465 #pragma omp target
6466 #pragma omp teams distribute
6467 for (int i = 0; i < 10; ++i) {
6468 #pragma omp parallel for // OK
6469 for (int i = 0; i < 10; ++i)
6470 ;
6471 }
6472 #pragma omp target
6473 #pragma omp teams distribute
6474 for (int i = 0; i < 10; ++i) {
6475 #pragma omp parallel for simd // OK
6476 for (int i = 0; i < 10; ++i)
6477 ;
6478 }
6479 #pragma omp target
6480 #pragma omp teams distribute
6481 for (int i = 0; i < 10; ++i) {
6482 #pragma omp parallel sections // OK
6483 {
6484 bar();
6485 }
6486 }
6487 #pragma omp target
6488 #pragma omp teams distribute
6489 for (int i = 0; i < 10; ++i) {
6490 #pragma omp task // OK
6491 {
6492 bar();
6493 }
6494 }
6495 #pragma omp target
6496 #pragma omp teams distribute
6497 for (int i = 0; i < 10; ++i) {
6498 #pragma omp taskyield // OK
6499 bar();
6500 }
6501 #pragma omp target
6502 #pragma omp teams distribute
6503 for (int i = 0; i < 10; ++i) {
6504 #pragma omp barrier // OK
6505 bar();
6506 }
6507 #pragma omp target
6508 #pragma omp teams distribute
6509 for (int i = 0; i < 10; ++i) {
6510 #pragma omp taskwait // OK
6511 bar();
6512 }
6513 #pragma omp target
6514 #pragma omp teams distribute
6515 for (int i = 0; i < 10; ++i) {
6516 #pragma omp flush // OK
6517 bar();
6518 }
6519 #pragma omp target
6520 #pragma omp teams distribute
6521 for (int i = 0; i < 10; ++i) {
6522 #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?}}
6523 bar();
6524 }
6525 #pragma omp target
6526 #pragma omp teams distribute
6527 for (int i = 0; i < 10; ++i) {
6528 #pragma omp atomic // OK
6529 ++a;
6530 }
6531 #pragma omp target
6532 #pragma omp teams distribute
6533 for (int i = 0; i < 10; ++i) {
6534 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
6535 ++a;
6536 }
6537 #pragma omp target
6538 #pragma omp teams distribute
6539 for (int i = 0; i < 10; ++i) {
6540 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
6541 ++a;
6542 }
6543 #pragma omp target
6544 #pragma omp teams distribute
6545 for (int i = 0; i < 10; ++i) {
6546 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
6547 for (int i = 0; i < 10; ++i)
6548 ;
6549 }
6550 #pragma omp target
6551 #pragma omp teams distribute
6552 for (int i = 0; i < 10; ++i) {
6553 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
6554 ++a;
6555 }
6556 #pragma omp target
6557 #pragma omp teams distribute
6558 for (int i = 0; i < 10; ++i) {
6559 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
6560 ++a;
6561 }
6562 #pragma omp target
6563 #pragma omp teams distribute
6564 for (int i = 0; i < 10; ++i) {
6565 #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?}}
6566 ++a;
6567 }
6568 #pragma omp target
6569 #pragma omp teams distribute
6570 for (int i = 0; i < 10; ++i) {
6571 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
6572 ++a;
6573 }
6574 #pragma omp target
6575 #pragma omp teams distribute
6576 for (int i = 0; i < 10; ++i) {
6577 #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?}}
6578 for (int i = 0; i < 10; ++i)
6579 ++a;
6580 }
6581 #pragma omp target
6582 #pragma omp teams distribute
6583 for (int i = 0; i < 10; ++i) {
6584 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
6585 for (int i = 0; i < 10; ++i)
6586 ++a;
6587 }
6588 #pragma omp target
6589 #pragma omp teams distribute
6590 for (int i = 0; i < 10; ++i) {
6591 #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?}}
6592 for (int i = 0; i < 10; ++i)
6593 ++a;
6594 }
6595 #pragma omp target
6596 #pragma omp teams distribute
6597 for (int i = 0; i < 10; ++i) {
6598 #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?}}
6599 for (int i = 0; i < 10; ++i)
6600 ++a;
6601 }
6602 #pragma omp target
6603 #pragma omp teams distribute
6604 for (int i = 0; i < 10; ++i) {
6605 #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?}}
6606 for (int i = 0; i < 10; ++i)
6607 ++a;
6608 }
6609 #pragma omp target
6610 #pragma omp teams distribute
6611 for (int i = 0; i < 10; ++i) {
6612 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
6613 for (int i = 0; i < 10; ++i)
6614 ++a;
6615 }
6616 #pragma omp target
6617 #pragma omp teams distribute
6618 for (int i = 0; i < 10; ++i) {
6619 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
6620 for (int i = 0; i < 10; ++i)
6621 ++a;
6622 }
6623 #pragma omp target
6624 #pragma omp teams distribute
6625 for (int i = 0; i < 10; ++i) {
6626 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
6627 for (int i = 0; i < 10; ++i)
6628 ++a;
6629 }
6630
6631 // TEAMS DISTRIBUTE DIRECTIVE
6632 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
6633 for (int i = 0; i < 10; ++i)
6634 ;
6635 #pragma omp target
6636 #pragma omp teams distribute
6637 for (int i = 0; i < 10; ++i) {
6638 #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?}}
6639 for (int i = 0; i < 10; ++i)
6640 ;
6641 }
6642 #pragma omp target
6643 #pragma omp teams distribute
6644 for (int i = 0; i < 10; ++i) {
6645 #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?}}
6646 for (int i = 0; i < 10; ++i)
6647 ;
6648 }
6649 #pragma omp target
6650 #pragma omp teams distribute
6651 for (int i = 0; i < 10; ++i) {
6652 #pragma omp for // OK
6653 for (int i = 0; i < 10; ++i)
6654 ;
6655 }
6656 #pragma omp target
6657 #pragma omp teams distribute
6658 for (int i = 0; i < 10; ++i) {
6659 #pragma omp simd // OK
6660 for (int i = 0; i < 10; ++i)
6661 ;
6662 }
6663 #pragma omp target
6664 #pragma omp teams distribute
6665 for (int i = 0; i < 10; ++i) {
6666 #pragma omp for simd // OK
6667 for (int i = 0; i < 10; ++i)
6668 ;
6669 }
6670 #pragma omp target
6671 #pragma omp teams distribute
6672 for (int i = 0; i < 10; ++i) {
6673 #pragma omp parallel // OK
6674 for (int i = 0; i < 10; ++i)
6675 ;
6676 }
6677 #pragma omp target
6678 #pragma omp teams distribute
6679 for (int i = 0; i < 10; ++i) {
6680 #pragma omp sections // OK
6681 {
6682 bar();
6683 }
6684 }
6685 #pragma omp target
6686 #pragma omp teams distribute
6687 for (int i = 0; i < 10; ++i) {
6688 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
6689 {
6690 bar();
6691 }
6692 }
6693 #pragma omp target
6694 #pragma omp teams distribute
6695 for (int i = 0; i < 10; ++i) {
6696 #pragma omp single // OK
6697 {
6698 bar();
6699 }
6700 }
6701 #pragma omp target
6702 #pragma omp teams distribute
6703 for (int i = 0; i < 10; ++i) {
6704 #pragma omp master // OK
6705 {
6706 bar();
6707 }
6708 }
6709 #pragma omp target
6710 #pragma omp teams distribute
6711 for (int i = 0; i < 10; ++i) {
6712 #pragma omp critical // OK
6713 {
6714 bar();
6715 }
6716 }
6717 #pragma omp target
6718 #pragma omp teams distribute
6719 for (int i = 0; i < 10; ++i) {
6720 #pragma omp parallel // OK
6721 {
6722 #pragma omp single
6723 {
6724 bar();
6725 }
6726 }
6727 }
6728 #pragma omp target
6729 #pragma omp teams distribute
6730 for (int i = 0; i < 10; ++i) {
6731 #pragma omp parallel for // OK
6732 for (int i = 0; i < 10; ++i)
6733 ;
6734 }
6735 #pragma omp target
6736 #pragma omp teams distribute
6737 for (int i = 0; i < 10; ++i) {
6738 #pragma omp parallel for simd // OK
6739 for (int i = 0; i < 10; ++i)
6740 ;
6741 }
6742 #pragma omp target
6743 #pragma omp teams distribute
6744 for (int i = 0; i < 10; ++i) {
6745 #pragma omp parallel sections // OK
6746 {
6747 bar();
6748 }
6749 }
6750 #pragma omp target
6751 #pragma omp teams distribute
6752 for (int i = 0; i < 10; ++i) {
6753 #pragma omp task // OK
6754 {
6755 bar();
6756 }
6757 }
6758 #pragma omp target
6759 #pragma omp teams distribute
6760 for (int i = 0; i < 10; ++i) {
6761 #pragma omp taskyield // OK
6762 bar();
6763 }
6764 #pragma omp target
6765 #pragma omp teams distribute
6766 for (int i = 0; i < 10; ++i) {
6767 #pragma omp barrier // OK
6768 bar();
6769 }
6770 #pragma omp target
6771 #pragma omp teams distribute
6772 for (int i = 0; i < 10; ++i) {
6773 #pragma omp taskwait // OK
6774 bar();
6775 }
6776 #pragma omp target
6777 #pragma omp teams distribute
6778 for (int i = 0; i < 10; ++i) {
6779 #pragma omp flush // OK
6780 bar();
6781 }
6782 #pragma omp target
6783 #pragma omp teams distribute
6784 for (int i = 0; i < 10; ++i) {
6785 #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?}}
6786 bar();
6787 }
6788 #pragma omp target
6789 #pragma omp teams distribute
6790 for (int i = 0; i < 10; ++i) {
6791 #pragma omp atomic // OK
6792 ++a;
6793 }
6794 #pragma omp target
6795 #pragma omp teams distribute
6796 for (int i = 0; i < 10; ++i) {
6797 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
6798 ++a;
6799 }
6800 #pragma omp target
6801 #pragma omp teams distribute
6802 for (int i = 0; i < 10; ++i) {
6803 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
6804 ++a;
6805 }
6806 #pragma omp target
6807 #pragma omp teams distribute
6808 for (int i = 0; i < 10; ++i) {
6809 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
6810 for (int i = 0; i < 10; ++i)
6811 ;
6812 }
6813 #pragma omp target
6814 #pragma omp teams distribute
6815 for (int i = 0; i < 10; ++i) {
6816 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
6817 ++a;
6818 }
6819 #pragma omp target
6820 #pragma omp teams distribute
6821 for (int i = 0; i < 10; ++i) {
6822 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
6823 ++a;
6824 }
6825 #pragma omp target
6826 #pragma omp teams distribute
6827 for (int i = 0; i < 10; ++i) {
6828 #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?}}
6829 ++a;
6830 }
6831 #pragma omp target
6832 #pragma omp teams distribute
6833 for (int i = 0; i < 10; ++i) {
6834 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
6835 ++a;
6836 }
6837 #pragma omp target
6838 #pragma omp teams distribute
6839 for (int i = 0; i < 10; ++i) {
6840 #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?}}
6841 for (int i = 0; i < 10; ++i)
6842 ++a;
6843 }
6844 #pragma omp target
6845 #pragma omp teams distribute
6846 for (int i = 0; i < 10; ++i) {
6847 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
6848 for (int i = 0; i < 10; ++i)
6849 ++a;
6850 }
6851 #pragma omp target
6852 #pragma omp teams distribute
6853 for (int i = 0; i < 10; ++i) {
6854 #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?}}
6855 for (int i = 0; i < 10; ++i)
6856 ++a;
6857 }
6858 #pragma omp target
6859 #pragma omp teams distribute
6860 for (int i = 0; i < 10; ++i) {
6861 #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?}}
6862 for (int i = 0; i < 10; ++i)
6863 ++a;
6864 }
6865 #pragma omp target
6866 #pragma omp teams distribute
6867 for (int i = 0; i < 10; ++i) {
6868 #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?}}
6869 for (int i = 0; i < 10; ++i)
6870 ++a;
6871 }
6872 #pragma omp target
6873 #pragma omp teams distribute
6874 for (int i = 0; i < 10; ++i) {
6875 #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?}}
6876 for (int i = 0; i < 10; ++i)
6877 ++a;
6878 }
6879 #pragma omp target
6880 #pragma omp teams distribute
6881 for (int i = 0; i < 10; ++i) {
6882 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
6883 ++a;
6884 }
6885 #pragma omp target
6886 #pragma omp teams distribute
6887 for (int i = 0; i < 10; ++i) {
6888 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
6889 for (int i = 0; i < 10; ++i)
6890 ++a;
6891 }
6892 #pragma omp target
6893 #pragma omp teams distribute
6894 for (int i = 0; i < 10; ++i) {
6895 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
6896 for (int i = 0; i < 10; ++i)
6897 ++a;
6898 }
6899 #pragma omp target
6900 #pragma omp teams distribute
6901 for (int i = 0; i < 10; ++i) {
6902 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
6903 for (int i = 0; i < 10; ++i)
6904 ++a;
6905 }
6906 #pragma omp target
6907 #pragma omp teams distribute
6908 for (int i = 0; i < 10; ++i) {
6909 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
6910 for (int i = 0; i < 10; ++i)
6911 ++a;
6912 }
6913
6914 // TEAMS DISTRIBUTE SIMD DIRECTIVE
6915 #pragma omp teams distribute simd // expected-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
6916 for (int i = 0; i < 10; ++i)
6917 ;
6918 #pragma omp target
6919 #pragma omp teams distribute simd
6920 for (int i = 0; i < 10; ++i) {
6921 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6922 for (int i = 0; i < 10; ++i)
6923 ;
6924 }
6925 #pragma omp target
6926 #pragma omp teams distribute simd
6927 for (int i = 0; i < 10; ++i) {
6928 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6929 for (int i = 0; i < 10; ++i)
6930 ;
6931 }
6932 #pragma omp target
6933 #pragma omp teams distribute simd
6934 for (int i = 0; i < 10; ++i) {
6935 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6936 for (int i = 0; i < 10; ++i)
6937 ;
6938 }
6939 #pragma omp target
6940 #pragma omp teams distribute simd
6941 for (int i = 0; i < 10; ++i) {
6942 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
6943 for (int i = 0; i < 10; ++i)
6944 ;
6945 }
6946 #pragma omp target
6947 #pragma omp teams distribute simd
6948 for (int i = 0; i < 10; ++i) {
6949 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6950 for (int i = 0; i < 10; ++i)
6951 ;
6952 }
6953 #pragma omp target
6954 #pragma omp teams distribute simd
6955 for (int i = 0; i < 10; ++i) {
6956 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6957 for (int i = 0; i < 10; ++i)
6958 ;
6959 }
6960 #pragma omp target
6961 #pragma omp teams distribute simd
6962 for (int i = 0; i < 10; ++i) {
6963 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6964 {
6965 bar();
6966 }
6967 }
6968 #pragma omp target
6969 #pragma omp teams distribute simd
6970 for (int i = 0; i < 10; ++i) {
6971 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6972 {
6973 bar();
6974 }
6975 }
6976 #pragma omp target
6977 #pragma omp teams distribute simd
6978 for (int i = 0; i < 10; ++i) {
6979 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6980 {
6981 bar();
6982 }
6983 }
6984 #pragma omp target
6985 #pragma omp teams distribute simd
6986 for (int i = 0; i < 10; ++i) {
6987 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6988 {
6989 bar();
6990 }
6991 }
6992 #pragma omp target
6993 #pragma omp teams distribute simd
6994 for (int i = 0; i < 10; ++i) {
6995 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6996 {
6997 bar();
6998 }
6999 }
7000 #pragma omp target
7001 #pragma omp teams distribute simd
7002 for (int i = 0; i < 10; ++i) {
7003 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7004 {
7005 #pragma omp single
7006 {
7007 bar();
7008 }
7009 }
7010 }
7011 #pragma omp target
7012 #pragma omp teams distribute simd
7013 for (int i = 0; i < 10; ++i) {
7014 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7015 for (int i = 0; i < 10; ++i)
7016 ;
7017 }
7018 #pragma omp target
7019 #pragma omp teams distribute simd
7020 for (int i = 0; i < 10; ++i) {
7021 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7022 for (int i = 0; i < 10; ++i)
7023 ;
7024 }
7025 #pragma omp target
7026 #pragma omp teams distribute simd
7027 for (int i = 0; i < 10; ++i) {
7028 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7029 {
7030 bar();
7031 }
7032 }
7033 #pragma omp target
7034 #pragma omp teams distribute simd
7035 for (int i = 0; i < 10; ++i) {
7036 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7037 {
7038 bar();
7039 }
7040 }
7041 #pragma omp target
7042 #pragma omp teams distribute simd
7043 for (int i = 0; i < 10; ++i) {
7044 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7045 bar();
7046 }
7047 #pragma omp target
7048 #pragma omp teams distribute simd
7049 for (int i = 0; i < 10; ++i) {
7050 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7051 bar();
7052 }
7053 #pragma omp target
7054 #pragma omp teams distribute simd
7055 for (int i = 0; i < 10; ++i) {
7056 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7057 bar();
7058 }
7059 #pragma omp target
7060 #pragma omp teams distribute simd
7061 for (int i = 0; i < 10; ++i) {
7062 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7063 bar();
7064 }
7065 #pragma omp target
7066 #pragma omp teams distribute simd
7067 for (int i = 0; i < 10; ++i) {
7068 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7069 bar();
7070 }
7071 #pragma omp target
7072 #pragma omp teams distribute simd
7073 for (int i = 0; i < 10; ++i) {
7074 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7075 ++a;
7076 }
7077 #pragma omp target
7078 #pragma omp teams distribute simd
7079 for (int i = 0; i < 10; ++i) {
7080 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7081 ++a;
7082 }
7083 #pragma omp target
7084 #pragma omp teams distribute simd
7085 for (int i = 0; i < 10; ++i) {
7086 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7087 ++a;
7088 }
7089 #pragma omp target
7090 #pragma omp teams distribute simd
7091 for (int i = 0; i < 10; ++i) {
7092 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7093 for (int i = 0; i < 10; ++i)
7094 ;
7095 }
7096 #pragma omp target
7097 #pragma omp teams distribute simd
7098 for (int i = 0; i < 10; ++i) {
7099 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7100 ++a;
7101 }
7102 #pragma omp target
7103 #pragma omp teams distribute simd
7104 for (int i = 0; i < 10; ++i) {
7105 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7106 ++a;
7107 }
7108 #pragma omp target
7109 #pragma omp teams distribute simd
7110 for (int i = 0; i < 10; ++i) {
7111 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7112 ++a;
7113 }
7114 #pragma omp target
7115 #pragma omp teams distribute simd
7116 for (int i = 0; i < 10; ++i) {
7117 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7118 ++a;
7119 }
7120 #pragma omp target
7121 #pragma omp teams distribute simd
7122 for (int i = 0; i < 10; ++i) {
7123 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7124 for (int i = 0; i < 10; ++i)
7125 ++a;
7126 }
7127 #pragma omp target
7128 #pragma omp teams distribute simd
7129 for (int i = 0; i < 10; ++i) {
7130 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7131 for (int i = 0; i < 10; ++i)
7132 ++a;
7133 }
7134 #pragma omp target
7135 #pragma omp teams distribute simd
7136 for (int i = 0; i < 10; ++i) {
7137 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7138 for (int i = 0; i < 10; ++i)
7139 ++a;
7140 }
7141 #pragma omp target
7142 #pragma omp teams distribute simd
7143 for (int i = 0; i < 10; ++i) {
7144 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7145 for (int i = 0; i < 10; ++i)
7146 ++a;
7147 }
7148 #pragma omp target
7149 #pragma omp teams distribute simd
7150 for (int i = 0; i < 10; ++i) {
7151 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7152 for (int i = 0; i < 10; ++i)
7153 ++a;
7154 }
7155 #pragma omp target
7156 #pragma omp teams distribute simd
7157 for (int i = 0; i < 10; ++i) {
7158 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7159 for (int i = 0; i < 10; ++i)
7160 ++a;
7161 }
7162 #pragma omp target
7163 #pragma omp teams distribute simd
7164 for (int i = 0; i < 10; ++i) {
7165 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7166 ++a;
7167 }
7168 #pragma omp target
7169 #pragma omp teams distribute simd
7170 for (int i = 0; i < 10; ++i) {
7171 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7172 for (int i = 0; i < 10; ++i)
7173 ++a;
7174 }
7175 #pragma omp target
7176 #pragma omp teams distribute simd
7177 for (int i = 0; i < 10; ++i) {
7178 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7179 for (int i = 0; i < 10; ++i)
7180 ++a;
7181 }
7182 #pragma omp target
7183 #pragma omp teams distribute simd
7184 for (int i = 0; i < 10; ++i) {
7185 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7186 for (int i = 0; i < 10; ++i)
7187 ++a;
7188 }
7189 #pragma omp target
7190 #pragma omp teams distribute simd
7191 for (int i = 0; i < 10; ++i) {
7192 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7193 for (int i = 0; i < 10; ++i)
7194 ++a;
7195 }
7196
7197 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
7198 #pragma omp teams distribute parallel for simd // expected-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
7199 for (int i = 0; i < 10; ++i)
7200 ;
7201 #pragma omp target
7202 #pragma omp teams distribute parallel for simd
7203 for (int i = 0; i < 10; ++i) {
7204 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7205 for (int i = 0; i < 10; ++i)
7206 ;
7207 }
7208 #pragma omp target
7209 #pragma omp teams distribute parallel for simd
7210 for (int i = 0; i < 10; ++i) {
7211 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7212 for (int i = 0; i < 10; ++i)
7213 ;
7214 }
7215 #pragma omp target
7216 #pragma omp teams distribute parallel for simd
7217 for (int i = 0; i < 10; ++i) {
7218 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7219 for (int i = 0; i < 10; ++i)
7220 ;
7221 }
7222 #pragma omp target
7223 #pragma omp teams distribute parallel for simd
7224 for (int i = 0; i < 10; ++i) {
7225 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
7226 for (int i = 0; i < 10; ++i)
7227 ;
7228 }
7229 #pragma omp target
7230 #pragma omp teams distribute parallel for simd
7231 for (int i = 0; i < 10; ++i) {
7232 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7233 for (int i = 0; i < 10; ++i)
7234 ;
7235 }
7236 #pragma omp target
7237 #pragma omp teams distribute parallel for simd
7238 for (int i = 0; i < 10; ++i) {
7239 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7240 for (int i = 0; i < 10; ++i)
7241 ;
7242 }
7243 #pragma omp target
7244 #pragma omp teams distribute parallel for simd
7245 for (int i = 0; i < 10; ++i) {
7246 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7247 {
7248 bar();
7249 }
7250 }
7251 #pragma omp target
7252 #pragma omp teams distribute parallel for simd
7253 for (int i = 0; i < 10; ++i) {
7254 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7255 {
7256 bar();
7257 }
7258 }
7259 #pragma omp target
7260 #pragma omp teams distribute parallel for simd
7261 for (int i = 0; i < 10; ++i) {
7262 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7263 {
7264 bar();
7265 }
7266 }
7267 #pragma omp target
7268 #pragma omp teams distribute parallel for simd
7269 for (int i = 0; i < 10; ++i) {
7270 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7271 {
7272 bar();
7273 }
7274 }
7275 #pragma omp target
7276 #pragma omp teams distribute parallel for simd
7277 for (int i = 0; i < 10; ++i) {
7278 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7279 {
7280 bar();
7281 }
7282 }
7283 #pragma omp target
7284 #pragma omp teams distribute parallel for simd
7285 for (int i = 0; i < 10; ++i) {
7286 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7287 {
7288 #pragma omp single
7289 {
7290 bar();
7291 }
7292 }
7293 }
7294 #pragma omp target
7295 #pragma omp teams distribute parallel for simd
7296 for (int i = 0; i < 10; ++i) {
7297 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7298 for (int i = 0; i < 10; ++i)
7299 ;
7300 }
7301 #pragma omp target
7302 #pragma omp teams distribute parallel for simd
7303 for (int i = 0; i < 10; ++i) {
7304 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7305 for (int i = 0; i < 10; ++i)
7306 ;
7307 }
7308 #pragma omp target
7309 #pragma omp teams distribute parallel for simd
7310 for (int i = 0; i < 10; ++i) {
7311 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7312 {
7313 bar();
7314 }
7315 }
7316 #pragma omp target
7317 #pragma omp teams distribute parallel for simd
7318 for (int i = 0; i < 10; ++i) {
7319 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7320 {
7321 bar();
7322 }
7323 }
7324 #pragma omp target
7325 #pragma omp teams distribute parallel for simd
7326 for (int i = 0; i < 10; ++i) {
7327 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7328 bar();
7329 }
7330 #pragma omp target
7331 #pragma omp teams distribute parallel for simd
7332 for (int i = 0; i < 10; ++i) {
7333 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7334 bar();
7335 }
7336 #pragma omp target
7337 #pragma omp teams distribute parallel for simd
7338 for (int i = 0; i < 10; ++i) {
7339 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7340 bar();
7341 }
7342 #pragma omp target
7343 #pragma omp teams distribute parallel for simd
7344 for (int i = 0; i < 10; ++i) {
7345 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7346 bar();
7347 }
7348 #pragma omp target
7349 #pragma omp teams distribute parallel for simd
7350 for (int i = 0; i < 10; ++i) {
7351 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7352 bar();
7353 }
7354 #pragma omp target
7355 #pragma omp teams distribute parallel for simd
7356 for (int i = 0; i < 10; ++i) {
7357 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7358 ++a;
7359 }
7360 #pragma omp target
7361 #pragma omp teams distribute parallel for simd
7362 for (int i = 0; i < 10; ++i) {
7363 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7364 ++a;
7365 }
7366 #pragma omp target
7367 #pragma omp teams distribute parallel for simd
7368 for (int i = 0; i < 10; ++i) {
7369 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7370 ++a;
7371 }
7372 #pragma omp target
7373 #pragma omp teams distribute parallel for simd
7374 for (int i = 0; i < 10; ++i) {
7375 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7376 for (int i = 0; i < 10; ++i)
7377 ;
7378 }
7379 #pragma omp target
7380 #pragma omp teams distribute parallel for simd
7381 for (int i = 0; i < 10; ++i) {
7382 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7383 ++a;
7384 }
7385 #pragma omp target
7386 #pragma omp teams distribute parallel for simd
7387 for (int i = 0; i < 10; ++i) {
7388 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7389 ++a;
7390 }
7391 #pragma omp target
7392 #pragma omp teams distribute parallel for simd
7393 for (int i = 0; i < 10; ++i) {
7394 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7395 ++a;
7396 }
7397 #pragma omp target
7398 #pragma omp teams distribute parallel for simd
7399 for (int i = 0; i < 10; ++i) {
7400 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7401 ++a;
7402 }
7403 #pragma omp target
7404 #pragma omp teams distribute parallel for simd
7405 for (int i = 0; i < 10; ++i) {
7406 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7407 for (int i = 0; i < 10; ++i)
7408 ++a;
7409 }
7410 #pragma omp target
7411 #pragma omp teams distribute parallel for simd
7412 for (int i = 0; i < 10; ++i) {
7413 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7414 for (int i = 0; i < 10; ++i)
7415 ++a;
7416 }
7417 #pragma omp target
7418 #pragma omp teams distribute parallel for simd
7419 for (int i = 0; i < 10; ++i) {
7420 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7421 for (int i = 0; i < 10; ++i)
7422 ++a;
7423 }
7424 #pragma omp target
7425 #pragma omp teams distribute parallel for simd
7426 for (int i = 0; i < 10; ++i) {
7427 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7428 for (int i = 0; i < 10; ++i)
7429 ++a;
7430 }
7431 #pragma omp target
7432 #pragma omp teams distribute parallel for simd
7433 for (int i = 0; i < 10; ++i) {
7434 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7435 for (int i = 0; i < 10; ++i)
7436 ++a;
7437 }
7438 #pragma omp target
7439 #pragma omp teams distribute parallel for simd
7440 for (int i = 0; i < 10; ++i) {
7441 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7442 for (int i = 0; i < 10; ++i)
7443 ++a;
7444 }
7445 #pragma omp target
7446 #pragma omp teams distribute parallel for simd
7447 for (int i = 0; i < 10; ++i) {
7448 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7449 ++a;
7450 }
7451 #pragma omp target
7452 #pragma omp teams distribute parallel for simd
7453 for (int i = 0; i < 10; ++i) {
7454 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7455 for (int i = 0; i < 10; ++i)
7456 ++a;
7457 }
7458 #pragma omp target
7459 #pragma omp teams distribute parallel for simd
7460 for (int i = 0; i < 10; ++i) {
7461 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7462 for (int i = 0; i < 10; ++i)
7463 ++a;
7464 }
7465 #pragma omp target
7466 #pragma omp teams distribute parallel for simd
7467 for (int i = 0; i < 10; ++i) {
7468 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7469 for (int i = 0; i < 10; ++i)
7470 ++a;
7471 }
7472 #pragma omp target
7473 #pragma omp teams distribute parallel for simd
7474 for (int i = 0; i < 10; ++i) {
7475 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7476 for (int i = 0; i < 10; ++i)
7477 ++a;
7478 }
7479
7480 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
7481 #pragma omp teams distribute parallel for // expected-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
7482 for (int i = 0; i < 10; ++i)
7483 ;
7484 #pragma omp target
7485 #pragma omp teams distribute parallel for
7486 for (int i = 0; i < 10; ++i) {
7487 #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?}}
7488 for (int i = 0; i < 10; ++i)
7489 ;
7490 }
7491 #pragma omp target
7492 #pragma omp teams distribute parallel for
7493 for (int i = 0; i < 10; ++i) {
7494 #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?}}
7495 for (int i = 0; i < 10; ++i)
7496 ;
7497 }
7498 #pragma omp target
7499 #pragma omp teams distribute parallel for
7500 for (int i = 0; i < 10; ++i) {
7501 #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?}}
7502 for (int i = 0; i < 10; ++i)
7503 ;
7504 }
7505 #pragma omp target
7506 #pragma omp teams distribute parallel for
7507 for (int i = 0; i < 10; ++i) {
7508 #pragma omp simd // OK
7509 for (int i = 0; i < 10; ++i)
7510 ;
7511 }
7512 #pragma omp target
7513 #pragma omp teams distribute parallel for
7514 for (int i = 0; i < 10; ++i) {
7515 #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?}}
7516 for (int i = 0; i < 10; ++i)
7517 ;
7518 }
7519 #pragma omp target
7520 #pragma omp teams distribute parallel for
7521 for (int i = 0; i < 10; ++i) {
7522 #pragma omp parallel // OK
7523 for (int i = 0; i < 10; ++i)
7524 ;
7525 }
7526 #pragma omp target
7527 #pragma omp teams distribute parallel for
7528 for (int i = 0; i < 10; ++i) {
7529 #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?}}
7530 {
7531 bar();
7532 }
7533 }
7534 #pragma omp target
7535 #pragma omp teams distribute parallel for
7536 for (int i = 0; i < 10; ++i) {
7537 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}
7538 {
7539 bar();
7540 }
7541 }
7542 #pragma omp target
7543 #pragma omp teams distribute parallel for
7544 for (int i = 0; i < 10; ++i) {
7545 #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?}}
7546 {
7547 bar();
7548 }
7549 }
7550 #pragma omp target
7551 #pragma omp teams distribute parallel for
7552 for (int i = 0; i < 10; ++i) {
7553 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
7554 {
7555 bar();
7556 }
7557 }
7558 #pragma omp target
7559 #pragma omp teams distribute parallel for
7560 for (int i = 0; i < 10; ++i) {
7561 #pragma omp critical // OK
7562 {
7563 bar();
7564 }
7565 }
7566 #pragma omp target
7567 #pragma omp teams distribute parallel for
7568 for (int i = 0; i < 10; ++i) {
7569 #pragma omp parallel // OK
7570 {
7571 #pragma omp single
7572 {
7573 bar();
7574 }
7575 }
7576 }
7577 #pragma omp target
7578 #pragma omp teams distribute parallel for
7579 for (int i = 0; i < 10; ++i) {
7580 #pragma omp parallel for // OK
7581 for (int i = 0; i < 10; ++i)
7582 ;
7583 }
7584 #pragma omp target
7585 #pragma omp teams distribute parallel for
7586 for (int i = 0; i < 10; ++i) {
7587 #pragma omp parallel for simd // OK
7588 for (int i = 0; i < 10; ++i)
7589 ;
7590 }
7591 #pragma omp target
7592 #pragma omp teams distribute parallel for
7593 for (int i = 0; i < 10; ++i) {
7594 #pragma omp parallel sections // OK
7595 {
7596 bar();
7597 }
7598 }
7599 #pragma omp target
7600 #pragma omp teams distribute parallel for
7601 for (int i = 0; i < 10; ++i) {
7602 #pragma omp task // OK
7603 {
7604 bar();
7605 }
7606 }
7607 #pragma omp target
7608 #pragma omp teams distribute parallel for
7609 for (int i = 0; i < 10; ++i) {
7610 #pragma omp taskyield // OK
7611 bar();
7612 }
7613 #pragma omp target
7614 #pragma omp teams distribute parallel for
7615 for (int i = 0; i < 10; ++i) {
7616 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
7617 bar();
7618 }
7619 #pragma omp target
7620 #pragma omp teams distribute parallel for
7621 for (int i = 0; i < 10; ++i) {
7622 #pragma omp taskwait // OK
7623 bar();
7624 }
7625 #pragma omp target
7626 #pragma omp teams distribute parallel for
7627 for (int i = 0; i < 10; ++i) {
7628 #pragma omp flush // OK
7629 bar();
7630 }
7631 #pragma omp target
7632 #pragma omp teams distribute parallel for
7633 for (int i = 0; i < 10; ++i) {
7634 #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?}}
7635 bar();
7636 }
7637 #pragma omp target
7638 #pragma omp teams distribute parallel for
7639 for (int i = 0; i < 10; ++i) {
7640 #pragma omp atomic // OK
7641 ++a;
7642 }
7643 #pragma omp target
7644 #pragma omp teams distribute parallel for
7645 for (int i = 0; i < 10; ++i) {
7646 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
7647 ++a;
7648 }
7649 #pragma omp target
7650 #pragma omp teams distribute parallel for
7651 for (int i = 0; i < 10; ++i) {
7652 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
7653 ++a;
7654 }
7655 #pragma omp target
7656 #pragma omp teams distribute parallel for
7657 for (int i = 0; i < 10; ++i) {
7658 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
7659 for (int i = 0; i < 10; ++i)
7660 ;
7661 }
7662 #pragma omp target
7663 #pragma omp teams distribute parallel for
7664 for (int i = 0; i < 10; ++i) {
7665 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
7666 ++a;
7667 }
7668 #pragma omp target
7669 #pragma omp teams distribute parallel for
7670 for (int i = 0; i < 10; ++i) {
7671 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
7672 ++a;
7673 }
7674 #pragma omp target
7675 #pragma omp teams distribute parallel for
7676 for (int i = 0; i < 10; ++i) {
7677 #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?}}
7678 ++a;
7679 }
7680 #pragma omp target
7681 #pragma omp teams distribute parallel for
7682 for (int i = 0; i < 10; ++i) {
7683 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
7684 ++a;
7685 }
7686 #pragma omp target
7687 #pragma omp teams distribute parallel for
7688 for (int i = 0; i < 10; ++i) {
7689 #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?}}
7690 for (int i = 0; i < 10; ++i)
7691 ++a;
7692 }
7693 #pragma omp target
7694 #pragma omp teams distribute parallel for
7695 for (int i = 0; i < 10; ++i) {
7696 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
7697 for (int i = 0; i < 10; ++i)
7698 ++a;
7699 }
7700 #pragma omp target
7701 #pragma omp teams distribute parallel for
7702 for (int i = 0; i < 10; ++i) {
7703 #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?}}
7704 for (int i = 0; i < 10; ++i)
7705 ++a;
7706 }
7707 #pragma omp target
7708 #pragma omp teams distribute parallel for
7709 for (int i = 0; i < 10; ++i) {
7710 #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?}}
7711 for (int i = 0; i < 10; ++i)
7712 ++a;
7713 }
7714 #pragma omp target
7715 #pragma omp teams distribute parallel for
7716 for (int i = 0; i < 10; ++i) {
7717 #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?}}
7718 for (int i = 0; i < 10; ++i)
7719 ++a;
7720 }
7721 #pragma omp target
7722 #pragma omp teams distribute parallel for
7723 for (int i = 0; i < 10; ++i) {
7724 #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?}}
7725 for (int i = 0; i < 10; ++i)
7726 ++a;
7727 }
7728 #pragma omp target
7729 #pragma omp teams distribute parallel for
7730 for (int i = 0; i < 10; ++i) {
7731 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
7732 ++a;
7733 }
7734 #pragma omp target
7735 #pragma omp teams distribute parallel for
7736 for (int i = 0; i < 10; ++i) {
7737 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
7738 for (int i = 0; i < 10; ++i)
7739 ++a;
7740 }
7741 #pragma omp target
7742 #pragma omp teams distribute parallel for
7743 for (int i = 0; i < 10; ++i) {
7744 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
7745 for (int i = 0; i < 10; ++i)
7746 ++a;
7747 }
7748 #pragma omp target
7749 #pragma omp teams distribute parallel for
7750 for (int i = 0; i < 10; ++i) {
7751 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
7752 for (int i = 0; i < 10; ++i)
7753 ++a;
7754 }
7755 #pragma omp target
7756 #pragma omp teams distribute parallel for
7757 for (int i = 0; i < 10; ++i) {
7758 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
7759 for (int i = 0; i < 10; ++i)
7760 ++a;
7761 }
7762
7763 // TARGET TEAMS DIRECTIVE
7764 #pragma omp target teams
7765 #pragma omp parallel
7766 bar();
7767 #pragma omp target teams
7768 #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?}}
7769 for (int i = 0; i < 10; ++i)
7770 ;
7771 #pragma omp target teams
7772 #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?}}
7773 for (int i = 0; i < 10; ++i)
7774 ;
7775 #pragma omp target teams
7776 #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?}}
7777 for (int i = 0; i < 10; ++i)
7778 ;
7779 #pragma omp target teams
7780 #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?}}
7781 {
7782 bar();
7783 }
7784 #pragma omp target teams
7785 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}
7786 {
7787 bar();
7788 }
7789 #pragma omp target teams
7790 #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?}}
7791 bar();
7792
7793 #pragma omp target teams
7794 #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?}}
7795 {
7796 bar();
7797 }
7798 #pragma omp target teams
7799 #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?}}
7800 {
7801 bar();
7802 }
7803 #pragma omp target teams
7804 #pragma omp parallel for
7805 for (int i = 0; i < 10; ++i)
7806 ;
7807 #pragma omp target teams
7808 #pragma omp parallel for simd
7809 for (int i = 0; i < 10; ++i)
7810 ;
7811 #pragma omp target teams
7812 #pragma omp parallel sections
7813 {
7814 bar();
7815 }
7816 #pragma omp target teams
7817 #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?}}
7818 {
7819 bar();
7820 }
7821 #pragma omp target teams
7822 {
7823 #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?}}
7824 bar();
7825 }
7826 #pragma omp target teams
7827 {
7828 #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?}}
7829 bar();
7830 }
7831 #pragma omp target teams
7832 {
7833 #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?}}
7834 bar();
7835 }
7836 #pragma omp target teams
7837 {
7838 #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?}}
7839 bar();
7840 }
7841 #pragma omp target teams
7842 {
7843 #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?}}
7844 bar();
7845 }
7846 #pragma omp target teams
7847 {
7848 #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?}}
7849 ++a;
7850 }
7851 #pragma omp target teams
7852 {
7853 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}
7854 ++a;
7855 }
7856 #pragma omp target teams
7857 {
7858 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}
7859 ++a;
7860 }
7861 #pragma omp target teams
7862 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
7863 for (int i = 0; i < 10; ++i)
7864 ;
7865 #pragma omp target teams
7866 {
7867 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}
7868 }
7869 #pragma omp target teams
7870 {
7871 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}
7872 }
7873 #pragma omp target teams
7874 {
7875 #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?}}
7876 ++a;
7877 }
7878 #pragma omp target teams
7879 {
7880 #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?}}
7881 for (int i = 0; i < 10; ++i)
7882 ++a;
7883 }
7884 #pragma omp target teams
7885 #pragma omp distribute
7886 for (int i = 0; i < 10; ++i)
7887 ;
7888 #pragma omp target teams
7889 {
7890 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}
7891 ++a;
7892 }
7893 #pragma omp target teams
7894 #pragma omp distribute parallel for
7895 for (int i = 0; i < 10; ++i)
7896 ;
7897 #pragma omp target teams
7898 {
7899 #pragma omp distribute parallel for
7900 for (int i = 0; i < 10; ++i)
7901 ;
7902 #pragma omp distribute parallel for
7903 for (int j = 0; j < 10; ++j)
7904 ;
7905 }
7906 #pragma omp target teams
7907 {
7908 #pragma omp distribute parallel for simd
7909 for (int i = 0; i < 10; ++i)
7910 ;
7911 #pragma omp distribute parallel for simd
7912 for (int j = 0; j < 10; ++j)
7913 ;
7914 }
7915 #pragma omp target teams
7916 {
7917 #pragma omp distribute simd
7918 for (int i = 0; i < 10; ++i)
7919 ;
7920 #pragma omp distribute simd
7921 for (int j = 0; j < 10; ++j)
7922 ;
7923 }
7924 #pragma omp target teams
7925 {
7926 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}
7927 for (int i = 0; i < 10; ++i)
7928 ;
7929 }
7930 #pragma omp target teams
7931 {
7932 #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?}}
7933 for (int i = 0; i < 10; ++i)
7934 ;
7935 }
7936 #pragma omp target teams
7937 {
7938 #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?}}
7939 for (int i = 0; i < 10; ++i)
7940 ;
7941 }
7942 #pragma omp target teams
7943 {
7944 #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?}}
7945 for (int i = 0; i < 10; ++i)
7946 ;
7947 }
7948 #pragma omp target teams
7949 {
7950 #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?}}
7951 for (int i = 0; i < 10; ++i)
7952 ;
7953 }
7954 #pragma omp target teams
7955 {
7956 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}
7957 a++;
7958 }
7959 #pragma omp target teams
7960 {
7961 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}
7962 for (int i = 0; i < 10; ++i)
7963 ;
7964 }
7965 #pragma omp target teams
7966 {
7967 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
7968 for (int i = 0; i < 10; ++i)
7969 ;
7970 }
7971 #pragma omp target teams
7972 {
7973 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}
7974 for (int i = 0; i < 10; ++i)
7975 ;
7976 }
7977 #pragma omp target teams
7978 {
7979 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}
7980 for (int i = 0; i < 10; ++i)
7981 ;
7982 }
7983
7984 // TARGET TEAMS DISTRIBUTE DIRECTIVE
7985 #pragma omp target teams distribute // OK
7986 for (int i = 0; i < 10; ++i)
7987 ;
7988 #pragma omp target teams distribute
7989 for (int i = 0; i < 10; ++i) {
7990 #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?}}
7991 for (int i = 0; i < 10; ++i)
7992 ;
7993 }
7994 #pragma omp target teams distribute
7995 for (int i = 0; i < 10; ++i) {
7996 #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?}}
7997 for (int i = 0; i < 10; ++i)
7998 ;
7999 }
8000 #pragma omp target teams distribute
8001 for (int i = 0; i < 10; ++i) {
8002 #pragma omp for // OK
8003 for (int i = 0; i < 10; ++i)
8004 ;
8005 }
8006 #pragma omp target teams distribute
8007 for (int i = 0; i < 10; ++i) {
8008 #pragma omp simd // OK
8009 for (int i = 0; i < 10; ++i)
8010 ;
8011 }
8012 #pragma omp target teams distribute
8013 for (int i = 0; i < 10; ++i) {
8014 #pragma omp for simd // OK
8015 for (int i = 0; i < 10; ++i)
8016 ;
8017 }
8018 #pragma omp target teams distribute
8019 for (int i = 0; i < 10; ++i) {
8020 #pragma omp parallel // OK
8021 for (int i = 0; i < 10; ++i)
8022 ;
8023 }
8024 #pragma omp target teams distribute
8025 for (int i = 0; i < 10; ++i) {
8026 #pragma omp sections // OK
8027 {
8028 bar();
8029 }
8030 }
8031 #pragma omp target teams distribute
8032 for (int i = 0; i < 10; ++i) {
8033 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}
8034 {
8035 bar();
8036 }
8037 }
8038 #pragma omp target teams distribute
8039 for (int i = 0; i < 10; ++i) {
8040 #pragma omp single // OK
8041 {
8042 bar();
8043 }
8044 }
8045 #pragma omp target teams distribute
8046 for (int i = 0; i < 10; ++i) {
8047 #pragma omp master // OK
8048 {
8049 bar();
8050 }
8051 }
8052 #pragma omp target teams distribute
8053 for (int i = 0; i < 10; ++i) {
8054 #pragma omp critical // OK
8055 {
8056 bar();
8057 }
8058 }
8059 #pragma omp target teams distribute
8060 for (int i = 0; i < 10; ++i) {
8061 #pragma omp parallel // OK
8062 {
8063 #pragma omp single
8064 {
8065 bar();
8066 }
8067 }
8068 }
8069 #pragma omp target teams distribute
8070 for (int i = 0; i < 10; ++i) {
8071 #pragma omp parallel for // OK
8072 for (int i = 0; i < 10; ++i)
8073 ;
8074 }
8075 #pragma omp target teams distribute
8076 for (int i = 0; i < 10; ++i) {
8077 #pragma omp parallel for simd // OK
8078 for (int i = 0; i < 10; ++i)
8079 ;
8080 }
8081 #pragma omp target teams distribute
8082 for (int i = 0; i < 10; ++i) {
8083 #pragma omp parallel sections // OK
8084 {
8085 bar();
8086 }
8087 }
8088 #pragma omp target teams distribute
8089 for (int i = 0; i < 10; ++i) {
8090 #pragma omp task // OK
8091 {
8092 bar();
8093 }
8094 }
8095 #pragma omp target teams distribute
8096 for (int i = 0; i < 10; ++i) {
8097 #pragma omp taskyield // OK
8098 bar();
8099 }
8100 #pragma omp target teams distribute
8101 for (int i = 0; i < 10; ++i) {
8102 #pragma omp barrier // OK
8103 bar();
8104 }
8105 #pragma omp target teams distribute
8106 for (int i = 0; i < 10; ++i) {
8107 #pragma omp taskwait // OK
8108 bar();
8109 }
8110 #pragma omp target teams distribute
8111 for (int i = 0; i < 10; ++i) {
8112 #pragma omp flush // OK
8113 bar();
8114 }
8115 #pragma omp target teams distribute
8116 for (int i = 0; i < 10; ++i) {
8117 #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?}}
8118 bar();
8119 }
8120 #pragma omp target teams distribute
8121 for (int i = 0; i < 10; ++i) {
8122 #pragma omp atomic // OK
8123 ++a;
8124 }
8125 #pragma omp target teams distribute
8126 for (int i = 0; i < 10; ++i) {
8127 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8128 ++a;
8129 }
8130 #pragma omp target teams distribute
8131 for (int i = 0; i < 10; ++i) {
8132 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8133 ++a;
8134 }
8135 #pragma omp target teams distribute
8136 for (int i = 0; i < 10; ++i) {
8137 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8138 for (int i = 0; i < 10; ++i)
8139 ;
8140 }
8141 #pragma omp target teams distribute
8142 for (int i = 0; i < 10; ++i) {
8143 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8144 ++a;
8145 }
8146 #pragma omp target teams distribute
8147 for (int i = 0; i < 10; ++i) {
8148 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8149 ++a;
8150 }
8151 #pragma omp target teams distribute
8152 for (int i = 0; i < 10; ++i) {
8153 #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?}}
8154 ++a;
8155 }
8156 #pragma omp target teams distribute
8157 for (int i = 0; i < 10; ++i) {
8158 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8159 ++a;
8160 }
8161 #pragma omp target teams distribute
8162 for (int i = 0; i < 10; ++i) {
8163 #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?}}
8164 for (int i = 0; i < 10; ++i)
8165 ++a;
8166 }
8167 #pragma omp target teams distribute
8168 for (int i = 0; i < 10; ++i) {
8169 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8170 for (int i = 0; i < 10; ++i)
8171 ++a;
8172 }
8173 #pragma omp target teams distribute
8174 for (int i = 0; i < 10; ++i) {
8175 #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?}}
8176 for (int i = 0; i < 10; ++i)
8177 ++a;
8178 }
8179 #pragma omp target teams distribute
8180 for (int i = 0; i < 10; ++i) {
8181 #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?}}
8182 for (int i = 0; i < 10; ++i)
8183 ++a;
8184 }
8185 #pragma omp target teams distribute
8186 for (int i = 0; i < 10; ++i) {
8187 #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?}}
8188 for (int i = 0; i < 10; ++i)
8189 ++a;
8190 }
8191 #pragma omp target teams distribute
8192 for (int i = 0; i < 10; ++i) {
8193 #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?}}
8194 for (int i = 0; i < 10; ++i)
8195 ;
8196 }
8197 #pragma omp target teams distribute
8198 for (int i = 0; i < 10; ++i) {
8199 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8200 a++;
8201 }
8202 #pragma omp target teams distribute
8203 for (int i = 0; i < 10; ++i) {
8204 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8205 for (int i = 0; i < 10; ++i)
8206 ;
8207 }
8208 #pragma omp target teams distribute
8209 for (int i = 0; i < 10; ++i) {
8210 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8211 for (int i = 0; i < 10; ++i)
8212 ;
8213 }
8214 #pragma omp target teams distribute
8215 for (int i = 0; i < 10; ++i) {
8216 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8217 for (int i = 0; i < 10; ++i)
8218 ;
8219 }
8220 #pragma omp target teams distribute
8221 for (int i = 0; i < 10; ++i) {
8222 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8223 for (int i = 0; i < 10; ++i)
8224 ;
8225 }
8226
8227 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
8228 #pragma omp target teams distribute parallel for // OK
8229 for (int i = 0; i < 10; ++i)
8230 ;
8231 #pragma omp target teams distribute parallel for
8232 for (int i = 0; i < 10; ++i) {
8233 #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?}}
8234 for (int i = 0; i < 10; ++i)
8235 ;
8236 }
8237 #pragma omp target teams distribute parallel for
8238 for (int i = 0; i < 10; ++i) {
8239 #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?}}
8240 for (int i = 0; i < 10; ++i)
8241 ;
8242 }
8243 #pragma omp target teams distribute parallel for
8244 for (int i = 0; i < 10; ++i) {
8245 #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?}}
8246 for (int i = 0; i < 10; ++i)
8247 ;
8248 }
8249 #pragma omp target teams distribute parallel for
8250 for (int i = 0; i < 10; ++i) {
8251 #pragma omp simd // OK
8252 for (int i = 0; i < 10; ++i)
8253 ;
8254 }
8255 #pragma omp target teams distribute parallel for
8256 for (int i = 0; i < 10; ++i) {
8257 #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?}}
8258 for (int i = 0; i < 10; ++i)
8259 ;
8260 }
8261 #pragma omp target teams distribute parallel for
8262 for (int i = 0; i < 10; ++i) {
8263 #pragma omp parallel // OK
8264 for (int i = 0; i < 10; ++i)
8265 ;
8266 }
8267 #pragma omp target teams distribute parallel for
8268 for (int i = 0; i < 10; ++i) {
8269 #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?}}
8270 {
8271 bar();
8272 }
8273 }
8274 #pragma omp target teams distribute parallel for
8275 for (int i = 0; i < 10; ++i) {
8276 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}}
8277 {
8278 bar();
8279 }
8280 }
8281 #pragma omp target teams distribute parallel for
8282 for (int i = 0; i < 10; ++i) {
8283 #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?}}
8284 {
8285 bar();
8286 }
8287 }
8288 #pragma omp target teams distribute parallel for
8289 for (int i = 0; i < 10; ++i) {
8290 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8291 {
8292 bar();
8293 }
8294 }
8295 #pragma omp target teams distribute parallel for
8296 for (int i = 0; i < 10; ++i) {
8297 #pragma omp critical // OK
8298 {
8299 bar();
8300 }
8301 }
8302 #pragma omp target teams distribute parallel for
8303 for (int i = 0; i < 10; ++i) {
8304 #pragma omp parallel // OK
8305 {
8306 #pragma omp single
8307 {
8308 bar();
8309 }
8310 }
8311 }
8312 #pragma omp target teams distribute parallel for
8313 for (int i = 0; i < 10; ++i) {
8314 #pragma omp parallel for // OK
8315 for (int i = 0; i < 10; ++i)
8316 ;
8317 }
8318 #pragma omp target teams distribute parallel for
8319 for (int i = 0; i < 10; ++i) {
8320 #pragma omp parallel for simd // OK
8321 for (int i = 0; i < 10; ++i)
8322 ;
8323 }
8324 #pragma omp target teams distribute parallel for
8325 for (int i = 0; i < 10; ++i) {
8326 #pragma omp parallel sections // OK
8327 {
8328 bar();
8329 }
8330 }
8331 #pragma omp target teams distribute parallel for
8332 for (int i = 0; i < 10; ++i) {
8333 #pragma omp task // OK
8334 {
8335 bar();
8336 }
8337 }
8338 #pragma omp target teams distribute parallel for
8339 for (int i = 0; i < 10; ++i) {
8340 #pragma omp taskyield // OK
8341 bar();
8342 }
8343 #pragma omp target teams distribute parallel for
8344 for (int i = 0; i < 10; ++i) {
8345 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8346 bar();
8347 }
8348 #pragma omp target teams distribute parallel for
8349 for (int i = 0; i < 10; ++i) {
8350 #pragma omp taskwait // OK
8351 bar();
8352 }
8353 #pragma omp target teams distribute parallel for
8354 for (int i = 0; i < 10; ++i) {
8355 #pragma omp flush // OK
8356 bar();
8357 }
8358 #pragma omp target teams distribute parallel for
8359 for (int i = 0; i < 10; ++i) {
8360 #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?}}
8361 bar();
8362 }
8363 #pragma omp target teams distribute parallel for
8364 for (int i = 0; i < 10; ++i) {
8365 #pragma omp atomic // OK
8366 ++a;
8367 }
8368 #pragma omp target teams distribute parallel for
8369 for (int i = 0; i < 10; ++i) {
8370 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8371 ++a;
8372 }
8373 #pragma omp target teams distribute parallel for
8374 for (int i = 0; i < 10; ++i) {
8375 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8376 ++a;
8377 }
8378 #pragma omp target teams distribute parallel for
8379 for (int i = 0; i < 10; ++i) {
8380 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8381 for (int i = 0; i < 10; ++i)
8382 ;
8383 }
8384 #pragma omp target teams distribute parallel for
8385 for (int i = 0; i < 10; ++i) {
8386 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8387 ++a;
8388 }
8389 #pragma omp target teams distribute parallel for
8390 for (int i = 0; i < 10; ++i) {
8391 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8392 ++a;
8393 }
8394 #pragma omp target teams distribute parallel for
8395 for (int i = 0; i < 10; ++i) {
8396 #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?}}
8397 ++a;
8398 }
8399 #pragma omp target teams distribute parallel for
8400 for (int i = 0; i < 10; ++i) {
8401 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8402 ++a;
8403 }
8404 #pragma omp target teams distribute parallel for
8405 for (int i = 0; i < 10; ++i) {
8406 #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?}}
8407 for (int i = 0; i < 10; ++i)
8408 ++a;
8409 }
8410 #pragma omp target teams distribute parallel for
8411 for (int i = 0; i < 10; ++i) {
8412 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8413 for (int i = 0; i < 10; ++i)
8414 ++a;
8415 }
8416 #pragma omp target teams distribute parallel for
8417 for (int i = 0; i < 10; ++i) {
8418 #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?}}
8419 for (int i = 0; i < 10; ++i)
8420 ++a;
8421 }
8422 #pragma omp target teams distribute parallel for
8423 for (int i = 0; i < 10; ++i) {
8424 #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?}}
8425 for (int i = 0; i < 10; ++i)
8426 ++a;
8427 }
8428 #pragma omp target teams distribute parallel for
8429 for (int i = 0; i < 10; ++i) {
8430 #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?}}
8431 for (int i = 0; i < 10; ++i)
8432 ++a;
8433 }
8434 #pragma omp target teams distribute parallel for
8435 for (int i = 0; i < 10; ++i) {
8436 #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?}}
8437 for (int i = 0; i < 10; ++i)
8438 ;
8439 }
8440 #pragma omp target teams distribute parallel for
8441 for (int i = 0; i < 10; ++i) {
8442 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8443 a++;
8444 }
8445 #pragma omp target teams distribute parallel for
8446 for (int i = 0; i < 10; ++i) {
8447 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8448 for (int i = 0; i < 10; ++i)
8449 ;
8450 }
8451 #pragma omp target teams distribute parallel for
8452 for (int i = 0; i < 10; ++i) {
8453 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8454 for (int i = 0; i < 10; ++i)
8455 ;
8456 }
8457 #pragma omp target teams distribute parallel for
8458 for (int i = 0; i < 10; ++i) {
8459 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8460 for (int i = 0; i < 10; ++i)
8461 ;
8462 }
8463 #pragma omp target teams distribute parallel for
8464 for (int i = 0; i < 10; ++i) {
8465 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8466 for (int i = 0; i < 10; ++i)
8467 ;
8468 }
8469
8470 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
8471 #pragma omp target teams distribute parallel for simd // OK
8472 for (int i = 0; i < 10; ++i)
8473 ;
8474 #pragma omp target teams distribute parallel for simd
8475 for (int i = 0; i < 10; ++i) {
8476 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8477 for (int i = 0; i < 10; ++i)
8478 ;
8479 }
8480 #pragma omp target teams distribute parallel for simd
8481 for (int i = 0; i < 10; ++i) {
8482 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8483 for (int i = 0; i < 10; ++i)
8484 ;
8485 }
8486 #pragma omp target teams distribute parallel for simd
8487 for (int i = 0; i < 10; ++i) {
8488 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8489 for (int i = 0; i < 10; ++i)
8490 ;
8491 }
8492 #pragma omp target teams distribute parallel for simd
8493 for (int i = 0; i < 10; ++i) {
8494 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
8495 for (int i = 0; i < 10; ++i)
8496 ;
8497 }
8498 #pragma omp target teams distribute parallel for simd
8499 for (int i = 0; i < 10; ++i) {
8500 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8501 for (int i = 0; i < 10; ++i)
8502 ;
8503 }
8504 #pragma omp target teams distribute parallel for simd
8505 for (int i = 0; i < 10; ++i) {
8506 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8507 for (int i = 0; i < 10; ++i)
8508 ;
8509 }
8510 #pragma omp target teams distribute parallel for simd
8511 for (int i = 0; i < 10; ++i) {
8512 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8513 {
8514 bar();
8515 }
8516 }
8517 #pragma omp target teams distribute parallel for simd
8518 for (int i = 0; i < 10; ++i) {
8519 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8520 {
8521 bar();
8522 }
8523 }
8524 #pragma omp target teams distribute parallel for simd
8525 for (int i = 0; i < 10; ++i) {
8526 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8527 {
8528 bar();
8529 }
8530 }
8531 #pragma omp target teams distribute parallel for simd
8532 for (int i = 0; i < 10; ++i) {
8533 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8534 {
8535 bar();
8536 }
8537 }
8538 #pragma omp target teams distribute parallel for simd
8539 for (int i = 0; i < 10; ++i) {
8540 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8541 {
8542 bar();
8543 }
8544 }
8545 #pragma omp target teams distribute parallel for simd
8546 for (int i = 0; i < 10; ++i) {
8547 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8548 {
8549 #pragma omp single
8550 {
8551 bar();
8552 }
8553 }
8554 }
8555 #pragma omp target teams distribute parallel for simd
8556 for (int i = 0; i < 10; ++i) {
8557 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8558 for (int i = 0; i < 10; ++i)
8559 ;
8560 }
8561 #pragma omp target teams distribute parallel for simd
8562 for (int i = 0; i < 10; ++i) {
8563 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8564 for (int i = 0; i < 10; ++i)
8565 ;
8566 }
8567 #pragma omp target teams distribute parallel for simd
8568 for (int i = 0; i < 10; ++i) {
8569 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8570 {
8571 bar();
8572 }
8573 }
8574 #pragma omp target teams distribute parallel for simd
8575 for (int i = 0; i < 10; ++i) {
8576 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8577 {
8578 bar();
8579 }
8580 }
8581 #pragma omp target teams distribute parallel for simd
8582 for (int i = 0; i < 10; ++i) {
8583 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8584 bar();
8585 }
8586 #pragma omp target teams distribute parallel for simd
8587 for (int i = 0; i < 10; ++i) {
8588 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8589 bar();
8590 }
8591 #pragma omp target teams distribute parallel for simd
8592 for (int i = 0; i < 10; ++i) {
8593 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8594 bar();
8595 }
8596 #pragma omp target teams distribute parallel for simd
8597 for (int i = 0; i < 10; ++i) {
8598 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8599 bar();
8600 }
8601 #pragma omp target teams distribute parallel for simd
8602 for (int i = 0; i < 10; ++i) {
8603 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8604 bar();
8605 }
8606 #pragma omp target teams distribute parallel for simd
8607 for (int i = 0; i < 10; ++i) {
8608 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
8609 ++a;
8610 }
8611 #pragma omp target teams distribute parallel for simd
8612 for (int i = 0; i < 10; ++i) {
8613 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8614 ++a;
8615 }
8616 #pragma omp target teams distribute parallel for simd
8617 for (int i = 0; i < 10; ++i) {
8618 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8619 ++a;
8620 }
8621 #pragma omp target teams distribute parallel for simd
8622 for (int i = 0; i < 10; ++i) {
8623 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8624 for (int i = 0; i < 10; ++i)
8625 ;
8626 }
8627 #pragma omp target teams distribute parallel for simd
8628 for (int i = 0; i < 10; ++i) {
8629 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8630 ++a;
8631 }
8632 #pragma omp target teams distribute parallel for simd
8633 for (int i = 0; i < 10; ++i) {
8634 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8635 ++a;
8636 }
8637 #pragma omp target teams distribute parallel for simd
8638 for (int i = 0; i < 10; ++i) {
8639 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8640 ++a;
8641 }
8642 #pragma omp target teams distribute parallel for simd
8643 for (int i = 0; i < 10; ++i) {
8644 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8645 ++a;
8646 }
8647 #pragma omp target teams distribute parallel for simd
8648 for (int i = 0; i < 10; ++i) {
8649 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8650 for (int i = 0; i < 10; ++i)
8651 ++a;
8652 }
8653 #pragma omp target teams distribute parallel for simd
8654 for (int i = 0; i < 10; ++i) {
8655 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8656 for (int i = 0; i < 10; ++i)
8657 ++a;
8658 }
8659 #pragma omp target teams distribute parallel for simd
8660 for (int i = 0; i < 10; ++i) {
8661 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8662 for (int i = 0; i < 10; ++i)
8663 ++a;
8664 }
8665 #pragma omp target teams distribute parallel for simd
8666 for (int i = 0; i < 10; ++i) {
8667 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8668 for (int i = 0; i < 10; ++i)
8669 ++a;
8670 }
8671 #pragma omp target teams distribute parallel for simd
8672 for (int i = 0; i < 10; ++i) {
8673 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8674 for (int i = 0; i < 10; ++i)
8675 ++a;
8676 }
8677 #pragma omp target teams distribute parallel for simd
8678 for (int i = 0; i < 10; ++i) {
8679 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8680 for (int i = 0; i < 10; ++i)
8681 ;
8682 }
8683 #pragma omp target teams distribute parallel for simd
8684 for (int i = 0; i < 10; ++i) {
8685 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8686 a++;
8687 }
8688 #pragma omp target teams distribute parallel for simd
8689 for (int i = 0; i < 10; ++i) {
8690 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8691 for (int i = 0; i < 10; ++i)
8692 ;
8693 }
8694 #pragma omp target teams distribute parallel for simd
8695 for (int i = 0; i < 10; ++i) {
8696 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8697 for (int i = 0; i < 10; ++i)
8698 ;
8699 }
8700 #pragma omp target teams distribute parallel for simd
8701 for (int i = 0; i < 10; ++i) {
8702 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8703 for (int i = 0; i < 10; ++i)
8704 ;
8705 }
8706 #pragma omp target teams distribute parallel for simd
8707 for (int i = 0; i < 10; ++i) {
8708 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8709 for (int i = 0; i < 10; ++i)
8710 ;
8711 }
8712
8713 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE
8714 #pragma omp target teams distribute simd // OK
8715 for (int i = 0; i < 10; ++i)
8716 ;
8717 #pragma omp target teams distribute simd
8718 for (int i = 0; i < 10; ++i) {
8719 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8720 for (int i = 0; i < 10; ++i)
8721 ;
8722 }
8723 #pragma omp target teams distribute simd
8724 for (int i = 0; i < 10; ++i) {
8725 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8726 for (int i = 0; i < 10; ++i)
8727 ;
8728 }
8729 #pragma omp target teams distribute simd
8730 for (int i = 0; i < 10; ++i) {
8731 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8732 for (int i = 0; i < 10; ++i)
8733 ;
8734 }
8735 #pragma omp target teams distribute simd
8736 for (int i = 0; i < 10; ++i) {
8737 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
8738 for (int i = 0; i < 10; ++i)
8739 ;
8740 }
8741 #pragma omp target teams distribute simd
8742 for (int i = 0; i < 10; ++i) {
8743 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8744 for (int i = 0; i < 10; ++i)
8745 ;
8746 }
8747 #pragma omp target teams distribute simd
8748 for (int i = 0; i < 10; ++i) {
8749 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8750 for (int i = 0; i < 10; ++i)
8751 ;
8752 }
8753 #pragma omp target teams distribute simd
8754 for (int i = 0; i < 10; ++i) {
8755 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8756 {
8757 bar();
8758 }
8759 }
8760 #pragma omp target teams distribute simd
8761 for (int i = 0; i < 10; ++i) {
8762 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8763 {
8764 bar();
8765 }
8766 }
8767 #pragma omp target teams distribute simd
8768 for (int i = 0; i < 10; ++i) {
8769 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8770 {
8771 bar();
8772 }
8773 }
8774 #pragma omp target teams distribute simd
8775 for (int i = 0; i < 10; ++i) {
8776 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8777 {
8778 bar();
8779 }
8780 }
8781 #pragma omp target teams distribute simd
8782 for (int i = 0; i < 10; ++i) {
8783 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8784 {
8785 bar();
8786 }
8787 }
8788 #pragma omp target teams distribute simd
8789 for (int i = 0; i < 10; ++i) {
8790 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8791 {
8792 #pragma omp single
8793 {
8794 bar();
8795 }
8796 }
8797 }
8798 #pragma omp target teams distribute simd
8799 for (int i = 0; i < 10; ++i) {
8800 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8801 for (int i = 0; i < 10; ++i)
8802 ;
8803 }
8804 #pragma omp target teams distribute simd
8805 for (int i = 0; i < 10; ++i) {
8806 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8807 for (int i = 0; i < 10; ++i)
8808 ;
8809 }
8810 #pragma omp target teams distribute simd
8811 for (int i = 0; i < 10; ++i) {
8812 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8813 {
8814 bar();
8815 }
8816 }
8817 #pragma omp target teams distribute simd
8818 for (int i = 0; i < 10; ++i) {
8819 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8820 {
8821 bar();
8822 }
8823 }
8824 #pragma omp target teams distribute simd
8825 for (int i = 0; i < 10; ++i) {
8826 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8827 bar();
8828 }
8829 #pragma omp target teams distribute simd
8830 for (int i = 0; i < 10; ++i) {
8831 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8832 bar();
8833 }
8834 #pragma omp target teams distribute simd
8835 for (int i = 0; i < 10; ++i) {
8836 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8837 bar();
8838 }
8839 #pragma omp target teams distribute simd
8840 for (int i = 0; i < 10; ++i) {
8841 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8842 bar();
8843 }
8844 #pragma omp target teams distribute simd
8845 for (int i = 0; i < 10; ++i) {
8846 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8847 bar();
8848 }
8849 #pragma omp target teams distribute simd
8850 for (int i = 0; i < 10; ++i) {
8851 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
8852 ++a;
8853 }
8854 #pragma omp target teams distribute simd
8855 for (int i = 0; i < 10; ++i) {
8856 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8857 ++a;
8858 }
8859 #pragma omp target teams distribute simd
8860 for (int i = 0; i < 10; ++i) {
8861 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8862 ++a;
8863 }
8864 #pragma omp target teams distribute simd
8865 for (int i = 0; i < 10; ++i) {
8866 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8867 for (int i = 0; i < 10; ++i)
8868 ;
8869 }
8870 #pragma omp target teams distribute simd
8871 for (int i = 0; i < 10; ++i) {
8872 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8873 ++a;
8874 }
8875 #pragma omp target teams distribute simd
8876 for (int i = 0; i < 10; ++i) {
8877 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8878 ++a;
8879 }
8880 #pragma omp target teams distribute simd
8881 for (int i = 0; i < 10; ++i) {
8882 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8883 ++a;
8884 }
8885 #pragma omp target teams distribute simd
8886 for (int i = 0; i < 10; ++i) {
8887 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8888 ++a;
8889 }
8890 #pragma omp target teams distribute simd
8891 for (int i = 0; i < 10; ++i) {
8892 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8893 for (int i = 0; i < 10; ++i)
8894 ++a;
8895 }
8896 #pragma omp target teams distribute simd
8897 for (int i = 0; i < 10; ++i) {
8898 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8899 for (int i = 0; i < 10; ++i)
8900 ++a;
8901 }
8902 #pragma omp target teams distribute simd
8903 for (int i = 0; i < 10; ++i) {
8904 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8905 for (int i = 0; i < 10; ++i)
8906 ++a;
8907 }
8908 #pragma omp target teams distribute simd
8909 for (int i = 0; i < 10; ++i) {
8910 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8911 for (int i = 0; i < 10; ++i)
8912 ++a;
8913 }
8914 #pragma omp target teams distribute simd
8915 for (int i = 0; i < 10; ++i) {
8916 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8917 for (int i = 0; i < 10; ++i)
8918 ++a;
8919 }
8920 #pragma omp target teams distribute simd
8921 for (int i = 0; i < 10; ++i) {
8922 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8923 for (int i = 0; i < 10; ++i)
8924 ;
8925 }
8926 #pragma omp target teams distribute simd
8927 for (int i = 0; i < 10; ++i) {
8928 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8929 a++;
8930 }
8931 #pragma omp target teams distribute simd
8932 for (int i = 0; i < 10; ++i) {
8933 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8934 for (int i = 0; i < 10; ++i)
8935 ;
8936 }
8937 #pragma omp target teams distribute simd
8938 for (int i = 0; i < 10; ++i) {
8939 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8940 for (int i = 0; i < 10; ++i)
8941 ;
8942 }
8943 #pragma omp target teams distribute simd
8944 for (int i = 0; i < 10; ++i) {
8945 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8946 for (int i = 0; i < 10; ++i)
8947 ;
8948 }
8949 #pragma omp target teams distribute simd
8950 for (int i = 0; i < 10; ++i) {
8951 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8952 for (int i = 0; i < 10; ++i)
8953 ;
8954 }
8955
8956 }
8957
foo()8958 void foo() {
8959 int a = 0;
8960 // PARALLEL DIRECTIVE
8961 #pragma omp parallel
8962 #pragma omp for
8963 for (int i = 0; i < 10; ++i)
8964 ;
8965 #pragma omp parallel
8966 #pragma omp simd
8967 for (int i = 0; i < 10; ++i)
8968 ;
8969 #pragma omp parallel
8970 #pragma omp for simd
8971 for (int i = 0; i < 10; ++i)
8972 ;
8973 #pragma omp parallel
8974 #pragma omp sections
8975 {
8976 bar();
8977 }
8978 #pragma omp parallel
8979 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}
8980 {
8981 bar();
8982 }
8983 #pragma omp parallel
8984 #pragma omp sections
8985 {
8986 bar();
8987 }
8988 #pragma omp parallel
8989 #pragma omp single
8990 bar();
8991 #pragma omp parallel
8992 #pragma omp master
8993 bar();
8994 #pragma omp parallel
8995 #pragma omp critical
8996 bar();
8997 #pragma omp parallel
8998 #pragma omp parallel for
8999 for (int i = 0; i < 10; ++i)
9000 ;
9001 #pragma omp parallel
9002 #pragma omp parallel for simd
9003 for (int i = 0; i < 10; ++i)
9004 ;
9005 #pragma omp parallel
9006 #pragma omp parallel sections
9007 {
9008 bar();
9009 }
9010 #pragma omp parallel
9011 #pragma omp task
9012 {
9013 bar();
9014 }
9015 #pragma omp parallel
9016 {
9017 #pragma omp taskyield
9018 bar();
9019 }
9020 #pragma omp parallel
9021 {
9022 #pragma omp barrier
9023 bar();
9024 }
9025 #pragma omp parallel
9026 {
9027 #pragma omp taskwait
9028 bar();
9029 }
9030 #pragma omp parallel
9031 {
9032 #pragma omp flush
9033 bar();
9034 }
9035 #pragma omp parallel
9036 {
9037 #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?}}
9038 bar();
9039 }
9040 #pragma omp parallel
9041 {
9042 #pragma omp atomic
9043 ++a;
9044 }
9045 #pragma omp parallel
9046 {
9047 #pragma omp target
9048 ++a;
9049 }
9050 #pragma omp parallel
9051 {
9052 #pragma omp target parallel
9053 ++a;
9054 }
9055 #pragma omp parallel
9056 #pragma omp target parallel for
9057 for (int i = 0; i < 10; ++i)
9058 ;
9059 #pragma omp parallel
9060 {
9061 #pragma omp target enter data map(to: a)
9062 ++a;
9063 }
9064 #pragma omp parallel
9065 {
9066 #pragma omp target exit data map(from: a)
9067 ++a;
9068 }
9069 #pragma omp parallel
9070 {
9071 #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?}}
9072 ++a;
9073 }
9074 #pragma omp parallel
9075 {
9076 #pragma omp taskloop
9077 for (int i = 0; i < 10; ++i)
9078 ++a;
9079 }
9080 #pragma omp parallel
9081 {
9082 #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?}}
9083 for (int i = 0; i < 10; ++i)
9084 ;
9085 }
9086 #pragma omp parallel
9087 {
9088 #pragma omp target update to(a)
9089 a++;
9090 }
9091 #pragma omp parallel
9092 {
9093 #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?}}
9094 for (int i = 0; i < 10; ++i)
9095 ;
9096 }
9097 #pragma omp parallel
9098 {
9099 #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?}}
9100 for (int i = 0; i < 10; ++i)
9101 ;
9102 }
9103 #pragma omp parallel
9104 {
9105 #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?}}
9106 for (int i = 0; i < 10; ++i)
9107 ;
9108 }
9109 #pragma omp parallel
9110 {
9111 #pragma omp target simd // OK
9112 for (int i = 0; i < 10; ++i)
9113 ;
9114 }
9115 #pragma omp parallel
9116 {
9117 #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?}}
9118 for (int i = 0; i < 10; ++i)
9119 ;
9120 }
9121 #pragma omp parallel
9122 {
9123 #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?}}
9124 for (int i = 0; i < 10; ++i)
9125 ;
9126 }
9127 #pragma omp parallel
9128 {
9129 #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?}}
9130 for (int i = 0; i < 10; ++i)
9131 ;
9132 }
9133 #pragma omp parallel
9134 {
9135 #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?}}
9136 for (int i = 0; i < 10; ++i)
9137 ;
9138 }
9139 #pragma omp parallel
9140 {
9141 #pragma omp target teams // OK
9142 a++;
9143 }
9144 #pragma omp parallel
9145 {
9146 #pragma omp target teams distribute // OK
9147 for (int i = 0; i < 10; ++i)
9148 ;
9149 }
9150 #pragma omp parallel
9151 {
9152 #pragma omp target teams distribute parallel for // OK
9153 for (int i = 0; i < 10; ++i)
9154 ;
9155 }
9156 #pragma omp parallel
9157 {
9158 #pragma omp target teams distribute parallel for simd // OK
9159 for (int i = 0; i < 10; ++i)
9160 ;
9161 }
9162 #pragma omp parallel
9163 {
9164 #pragma omp target teams distribute simd // OK
9165 for (int i = 0; i < 10; ++i)
9166 ;
9167 }
9168
9169 // SIMD DIRECTIVE
9170 #pragma omp simd
9171 for (int i = 0; i < 10; ++i) {
9172 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9173 for (int i = 0; i < 10; ++i)
9174 ;
9175 }
9176 #pragma omp simd
9177 for (int i = 0; i < 10; ++i) {
9178 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9179 for (int i = 0; i < 10; ++i)
9180 ;
9181 }
9182 #pragma omp simd
9183 for (int i = 0; i < 10; ++i) {
9184 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9185 for (int i = 0; i < 10; ++i)
9186 ;
9187 }
9188 #pragma omp simd
9189 for (int i = 0; i < 10; ++i) {
9190 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9191 for (int i = 0; i < 10; ++i)
9192 ;
9193 }
9194 #pragma omp simd
9195 for (int i = 0; i < 10; ++i) {
9196 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9197 {
9198 bar();
9199 }
9200 }
9201 #pragma omp simd
9202 for (int i = 0; i < 10; ++i) {
9203 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9204 {
9205 bar();
9206 }
9207 }
9208 #pragma omp simd
9209 for (int i = 0; i < 10; ++i) {
9210 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9211 bar();
9212 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9213 bar();
9214 }
9215 #pragma omp simd
9216 for (int i = 0; i < 10; ++i) {
9217 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9218 bar();
9219 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9220 bar();
9221 }
9222 #pragma omp simd
9223 for (int i = 0; i < 10; ++i) {
9224 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9225 for (int i = 0; i < 10; ++i)
9226 ;
9227 }
9228 #pragma omp simd
9229 for (int i = 0; i < 10; ++i) {
9230 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9231 for (int i = 0; i < 10; ++i)
9232 ;
9233 }
9234 #pragma omp simd
9235 for (int i = 0; i < 10; ++i) {
9236 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9237 {
9238 bar();
9239 }
9240 }
9241 #pragma omp simd
9242 for (int i = 0; i < 10; ++i) {
9243 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9244 {
9245 bar();
9246 }
9247 }
9248 #pragma omp simd
9249 for (int i = 0; i < 10; ++i) {
9250 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9251 bar();
9252 }
9253 #pragma omp simd
9254 for (int i = 0; i < 10; ++i) {
9255 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9256 bar();
9257 }
9258 #pragma omp simd
9259 for (int i = 0; i < 10; ++i) {
9260 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9261 bar();
9262 }
9263 #pragma omp simd
9264 for (int i = 0; i < 10; ++i) {
9265 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9266 bar();
9267 }
9268 #pragma omp simd
9269 for (int i = 0; i < 10; ++i) {
9270 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9271 bar();
9272 }
9273 #pragma omp simd
9274 for (int i = 0; i < 10; ++i) {
9275 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9276 ++a;
9277 }
9278 #pragma omp simd
9279 for (int i = 0; i < 10; ++i) {
9280 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9281 ++a;
9282 }
9283 #pragma omp simd
9284 for (int i = 0; i < 10; ++i) {
9285 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9286 ++a;
9287 }
9288 #pragma omp simd
9289 for (int i = 0; i < 10; ++i) {
9290 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9291 for (int i = 0; i < 10; ++i)
9292 ;
9293 }
9294 #pragma omp simd
9295 for (int i = 0; i < 10; ++i) {
9296 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9297 ++a;
9298 }
9299 #pragma omp simd
9300 for (int i = 0; i < 10; ++i) {
9301 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9302 ++a;
9303 }
9304 #pragma omp simd
9305 for (int i = 0; i < 10; ++i) {
9306 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9307 ++a;
9308 }
9309 #pragma omp simd
9310 for (int i = 0; i < 10; ++i) {
9311 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9312 for (int i = 0; i < 10; ++i)
9313 ++a;
9314 }
9315 #pragma omp 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 j = 0; j < 10; ++j)
9319 ;
9320 }
9321 #pragma omp simd
9322 for (int i = 0; i < 10; ++i) {
9323 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9324 a++;
9325 }
9326 #pragma omp simd
9327 for (int i = 0; i < 10; ++i) {
9328 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9329 for (int j = 0; j < 10; ++j)
9330 ;
9331 }
9332 #pragma omp simd
9333 for (int i = 0; i < 10; ++i) {
9334 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9335 for (int j = 0; j < 10; ++j)
9336 ;
9337 }
9338 #pragma omp simd
9339 for (int i = 0; i < 10; ++i) {
9340 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9341 for (int j = 0; j < 10; ++j)
9342 ;
9343 }
9344 #pragma omp simd
9345 for (int i = 0; i < 10; ++i) {
9346 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9347 for (int j = 0; j < 10; ++j)
9348 ;
9349 }
9350 #pragma omp simd
9351 for (int i = 0; i < 10; ++i) {
9352 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9353 for (int j = 0; j < 10; ++j)
9354 ;
9355 }
9356 #pragma omp simd
9357 for (int i = 0; i < 10; ++i) {
9358 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9359 for (int j = 0; j < 10; ++j)
9360 ;
9361 }
9362 #pragma omp simd
9363 for (int i = 0; i < 10; ++i) {
9364 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9365 for (int j = 0; j < 10; ++j)
9366 ;
9367 }
9368 #pragma omp simd
9369 for (int i = 0; i < 10; ++i) {
9370 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9371 for (int j = 0; j < 10; ++j)
9372 ;
9373 }
9374 #pragma omp simd
9375 for (int i = 0; i < 10; ++i) {
9376 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9377 a++;
9378 }
9379 #pragma omp simd
9380 for (int i = 0; i < 10; ++i) {
9381 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9382 for (int j = 0; j < 10; ++j)
9383 ;
9384 }
9385 #pragma omp simd
9386 for (int i = 0; i < 10; ++i) {
9387 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9388 for (int j = 0; j < 10; ++j)
9389 ;
9390 }
9391 #pragma omp simd
9392 for (int i = 0; i < 10; ++i) {
9393 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9394 for (int j = 0; j < 10; ++j)
9395 ;
9396 }
9397 #pragma omp simd
9398 for (int i = 0; i < 10; ++i) {
9399 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9400 for (int j = 0; j < 10; ++j)
9401 ;
9402 }
9403
9404 // FOR DIRECTIVE
9405 #pragma omp for
9406 for (int i = 0; i < 10; ++i) {
9407 #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?}}
9408 for (int i = 0; i < 10; ++i)
9409 ;
9410 }
9411 #pragma omp for
9412 for (int i = 0; i < 10; ++i) {
9413 #pragma omp simd
9414 for (int i = 0; i < 10; ++i)
9415 ;
9416 }
9417 #pragma omp for
9418 for (int i = 0; i < 10; ++i) {
9419 #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?}}
9420 for (int i = 0; i < 10; ++i)
9421 ;
9422 }
9423 #pragma omp for
9424 for (int i = 0; i < 10; ++i) {
9425 #pragma omp parallel
9426 for (int i = 0; i < 10; ++i)
9427 ;
9428 }
9429 #pragma omp for
9430 for (int i = 0; i < 10; ++i) {
9431 #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?}}
9432 {
9433 bar();
9434 }
9435 }
9436 #pragma omp for
9437 for (int i = 0; i < 10; ++i) {
9438 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}
9439 {
9440 bar();
9441 }
9442 }
9443 #pragma omp for
9444 for (int i = 0; i < 10; ++i) {
9445 #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?}}
9446 bar();
9447 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
9448 bar();
9449 #pragma omp critical
9450 bar();
9451 }
9452 #pragma omp for
9453 for (int i = 0; i < 10; ++i) {
9454 #pragma omp parallel
9455 {
9456 #pragma omp single // OK
9457 {
9458 bar();
9459 }
9460 #pragma omp for // OK
9461 for (int i = 0; i < 10; ++i)
9462 ;
9463 #pragma omp for simd // OK
9464 for (int i = 0; i < 10; ++i)
9465 ;
9466 #pragma omp sections // OK
9467 {
9468 bar();
9469 }
9470 }
9471 }
9472 #pragma omp for
9473 for (int i = 0; i < 10; ++i) {
9474 #pragma omp parallel for
9475 for (int i = 0; i < 10; ++i)
9476 ;
9477 }
9478 #pragma omp for
9479 for (int i = 0; i < 10; ++i) {
9480 #pragma omp parallel for simd
9481 for (int i = 0; i < 10; ++i)
9482 ;
9483 }
9484 #pragma omp for
9485 for (int i = 0; i < 10; ++i) {
9486 #pragma omp parallel sections
9487 {
9488 bar();
9489 }
9490 }
9491 #pragma omp for
9492 for (int i = 0; i < 10; ++i) {
9493 #pragma omp task
9494 {
9495 bar();
9496 }
9497 }
9498 #pragma omp for
9499 for (int i = 0; i < 10; ++i) {
9500 #pragma omp taskyield
9501 bar();
9502 }
9503 #pragma omp for
9504 for (int i = 0; i < 10; ++i) {
9505 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}
9506 bar();
9507 }
9508 #pragma omp for
9509 for (int i = 0; i < 10; ++i) {
9510 #pragma omp taskwait
9511 bar();
9512 }
9513 #pragma omp for
9514 for (int i = 0; i < 10; ++i) {
9515 #pragma omp flush
9516 bar();
9517 }
9518 #pragma omp for
9519 for (int i = 0; i < 10; ++i) {
9520 #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?}}
9521 bar();
9522 }
9523 #pragma omp for ordered
9524 for (int i = 0; i < 10; ++i) {
9525 #pragma omp ordered // OK
9526 bar();
9527 }
9528 #pragma omp for
9529 for (int i = 0; i < 10; ++i) {
9530 #pragma omp atomic
9531 ++a;
9532 }
9533 #pragma omp for
9534 for (int i = 0; i < 10; ++i) {
9535 #pragma omp target
9536 ++a;
9537 }
9538 #pragma omp for
9539 for (int i = 0; i < 10; ++i) {
9540 #pragma omp target parallel
9541 ++a;
9542 }
9543 #pragma omp for
9544 for (int i = 0; i < 10; ++i) {
9545 #pragma omp target parallel for
9546 for (int i = 0; i < 10; ++i)
9547 ;
9548 }
9549 #pragma omp for
9550 for (int i = 0; i < 10; ++i) {
9551 #pragma omp target enter data map(to: a)
9552 ++a;
9553 }
9554 #pragma omp for
9555 for (int i = 0; i < 10; ++i) {
9556 #pragma omp target exit data map(from: a)
9557 ++a;
9558 }
9559 #pragma omp for
9560 for (int i = 0; i < 10; ++i) {
9561 #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?}}
9562 ++a;
9563 }
9564 #pragma omp for
9565 for (int i = 0; i < 10; ++i) {
9566 #pragma omp taskloop
9567 for (int i = 0; i < 10; ++i)
9568 ++a;
9569 }
9570 #pragma omp for
9571 for (int i = 0; i < 10; ++i) {
9572 #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?}}
9573 for (int j = 0; j < 10; ++j)
9574 ;
9575 }
9576 #pragma omp for
9577 for (int i = 0; i < 10; ++i) {
9578 #pragma omp target update to(a)
9579 ++a;
9580 }
9581 #pragma omp for
9582 for (int i = 0; i < 10; ++i) {
9583 #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?}}
9584 for (int j = 0; j < 10; ++j)
9585 ;
9586 }
9587 #pragma omp for
9588 for (int i = 0; i < 10; ++i) {
9589 #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?}}
9590 for (int j = 0; j < 10; ++j)
9591 ;
9592 }
9593 #pragma omp for
9594 for (int i = 0; i < 10; ++i) {
9595 #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?}}
9596 for (int j = 0; j < 10; ++j)
9597 ;
9598 }
9599 #pragma omp for
9600 for (int i = 0; i < 10; ++i) {
9601 #pragma omp target simd // OK
9602 for (int j = 0; j < 10; ++j)
9603 ;
9604 }
9605 #pragma omp for
9606 for (int i = 0; i < 10; ++i) {
9607 #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?}}
9608 for (int j = 0; j < 10; ++j)
9609 ;
9610 }
9611 #pragma omp for
9612 for (int i = 0; i < 10; ++i) {
9613 #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?}}
9614 for (int j = 0; j < 10; ++j)
9615 ;
9616 }
9617 #pragma omp for
9618 for (int i = 0; i < 10; ++i) {
9619 #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?}}
9620 for (int j = 0; j < 10; ++j)
9621 ;
9622 }
9623 #pragma omp for
9624 for (int i = 0; i < 10; ++i) {
9625 #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?}}
9626 for (int j = 0; j < 10; ++j)
9627 ;
9628 }
9629 #pragma omp for
9630 for (int i = 0; i < 10; ++i) {
9631 #pragma omp target teams // OK
9632 a++;
9633 }
9634 #pragma omp for
9635 for (int i = 0; i < 10; ++i) {
9636 #pragma omp target teams distribute // OK
9637 for (int j = 0; j < 10; ++j)
9638 ;
9639 }
9640 #pragma omp for
9641 for (int i = 0; i < 10; ++i) {
9642 #pragma omp target teams distribute parallel for // OK
9643 for (int j = 0; j < 10; ++j)
9644 ;
9645 }
9646 #pragma omp for
9647 for (int i = 0; i < 10; ++i) {
9648 #pragma omp target teams distribute parallel for simd // OK
9649 for (int j = 0; j < 10; ++j)
9650 ;
9651 }
9652 #pragma omp for
9653 for (int i = 0; i < 10; ++i) {
9654 #pragma omp target teams distribute simd // OK
9655 for (int j = 0; j < 10; ++j)
9656 ;
9657 }
9658
9659 // FOR SIMD DIRECTIVE
9660 #pragma omp for simd
9661 for (int i = 0; i < 10; ++i) {
9662 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9663 for (int i = 0; i < 10; ++i)
9664 ;
9665 }
9666 #pragma omp for simd
9667 for (int i = 0; i < 10; ++i) {
9668 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9669 for (int i = 0; i < 10; ++i)
9670 ;
9671 }
9672 #pragma omp for simd
9673 for (int i = 0; i < 10; ++i) {
9674 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9675 for (int i = 0; i < 10; ++i)
9676 ;
9677 }
9678 #pragma omp for simd
9679 for (int i = 0; i < 10; ++i) {
9680 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9681 for (int i = 0; i < 10; ++i)
9682 ;
9683 }
9684 #pragma omp for simd
9685 for (int i = 0; i < 10; ++i) {
9686 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9687 {
9688 bar();
9689 }
9690 }
9691 #pragma omp for simd
9692 for (int i = 0; i < 10; ++i) {
9693 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9694 {
9695 bar();
9696 }
9697 }
9698 #pragma omp for simd
9699 for (int i = 0; i < 10; ++i) {
9700 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9701 bar();
9702 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9703 bar();
9704 }
9705 #pragma omp for simd
9706 for (int i = 0; i < 10; ++i) {
9707 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9708 bar();
9709 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9710 bar();
9711 }
9712 #pragma omp for simd
9713 for (int i = 0; i < 10; ++i) {
9714 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9715 for (int i = 0; i < 10; ++i)
9716 ;
9717 }
9718 #pragma omp for simd
9719 for (int i = 0; i < 10; ++i) {
9720 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9721 for (int i = 0; i < 10; ++i)
9722 ;
9723 }
9724 #pragma omp for simd
9725 for (int i = 0; i < 10; ++i) {
9726 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9727 {
9728 bar();
9729 }
9730 }
9731 #pragma omp for simd
9732 for (int i = 0; i < 10; ++i) {
9733 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9734 {
9735 bar();
9736 }
9737 }
9738 #pragma omp for simd
9739 for (int i = 0; i < 10; ++i) {
9740 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9741 bar();
9742 }
9743 #pragma omp for simd
9744 for (int i = 0; i < 10; ++i) {
9745 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9746 bar();
9747 }
9748 #pragma omp for simd
9749 for (int i = 0; i < 10; ++i) {
9750 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9751 bar();
9752 }
9753 #pragma omp for simd
9754 for (int i = 0; i < 10; ++i) {
9755 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9756 bar();
9757 }
9758 #pragma omp for simd
9759 for (int i = 0; i < 10; ++i) {
9760 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9761 bar();
9762 }
9763 #pragma omp for simd
9764 for (int i = 0; i < 10; ++i) {
9765 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9766 ++a;
9767 }
9768 #pragma omp for simd
9769 for (int i = 0; i < 10; ++i) {
9770 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9771 ++a;
9772 }
9773 #pragma omp for simd
9774 for (int i = 0; i < 10; ++i) {
9775 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9776 ++a;
9777 }
9778 #pragma omp for simd
9779 for (int i = 0; i < 10; ++i) {
9780 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9781 for (int i = 0; i < 10; ++i)
9782 ;
9783 }
9784 #pragma omp for simd
9785 for (int i = 0; i < 10; ++i) {
9786 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9787 ++a;
9788 }
9789 #pragma omp for simd
9790 for (int i = 0; i < 10; ++i) {
9791 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9792 ++a;
9793 }
9794 #pragma omp for simd
9795 for (int i = 0; i < 10; ++i) {
9796 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9797 ++a;
9798 }
9799 #pragma omp for simd
9800 for (int i = 0; i < 10; ++i) {
9801 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9802 for (int i = 0; i < 10; ++i)
9803 ++a;
9804 }
9805 #pragma omp for simd
9806 for (int i = 0; i < 10; ++i) {
9807 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9808 for (int j = 0; j < 10; ++j)
9809 ;
9810 }
9811 #pragma omp for simd
9812 for (int i = 0; i < 10; ++i) {
9813 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9814 ++a;
9815 }
9816 #pragma omp for simd
9817 for (int i = 0; i < 10; ++i) {
9818 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9819 for (int j = 0; j < 10; ++j)
9820 ;
9821 }
9822 #pragma omp for simd
9823 for (int i = 0; i < 10; ++i) {
9824 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9825 for (int j = 0; j < 10; ++j)
9826 ;
9827 }
9828 #pragma omp for simd
9829 for (int i = 0; i < 10; ++i) {
9830 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9831 for (int j = 0; j < 10; ++j)
9832 ;
9833 }
9834 #pragma omp for simd
9835 for (int i = 0; i < 10; ++i) {
9836 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9837 for (int j = 0; j < 10; ++j)
9838 ;
9839 }
9840 #pragma omp for simd
9841 for (int i = 0; i < 10; ++i) {
9842 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9843 for (int j = 0; j < 10; ++j)
9844 ;
9845 }
9846 #pragma omp for simd
9847 for (int i = 0; i < 10; ++i) {
9848 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9849 for (int j = 0; j < 10; ++j)
9850 ;
9851 }
9852 #pragma omp for simd
9853 for (int i = 0; i < 10; ++i) {
9854 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9855 for (int j = 0; j < 10; ++j)
9856 ;
9857 }
9858 #pragma omp for simd
9859 for (int i = 0; i < 10; ++i) {
9860 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9861 for (int j = 0; j < 10; ++j)
9862 ;
9863 }
9864 #pragma omp for simd
9865 for (int i = 0; i < 10; ++i) {
9866 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9867 a++;
9868 }
9869 #pragma omp for simd
9870 for (int i = 0; i < 10; ++i) {
9871 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9872 for (int j = 0; j < 10; ++j)
9873 ;
9874 }
9875 #pragma omp for simd
9876 for (int i = 0; i < 10; ++i) {
9877 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9878 for (int j = 0; j < 10; ++j)
9879 ;
9880 }
9881 #pragma omp for simd
9882 for (int i = 0; i < 10; ++i) {
9883 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9884 for (int j = 0; j < 10; ++j)
9885 ;
9886 }
9887 #pragma omp for simd
9888 for (int i = 0; i < 10; ++i) {
9889 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9890 for (int j = 0; j < 10; ++j)
9891 ;
9892 }
9893
9894 // SECTIONS DIRECTIVE
9895 #pragma omp sections
9896 {
9897 #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?}}
9898 for (int i = 0; i < 10; ++i)
9899 ;
9900 }
9901 #pragma omp sections
9902 {
9903 #pragma omp simd
9904 for (int i = 0; i < 10; ++i)
9905 ;
9906 }
9907 #pragma omp sections
9908 {
9909 #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?}}
9910 for (int i = 0; i < 10; ++i)
9911 ;
9912 }
9913 #pragma omp sections
9914 {
9915 #pragma omp parallel
9916 for (int i = 0; i < 10; ++i)
9917 ;
9918 }
9919 #pragma omp sections
9920 {
9921 #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?}}
9922 {
9923 bar();
9924 }
9925 }
9926 #pragma omp sections
9927 {
9928 #pragma omp section
9929 {
9930 bar();
9931 }
9932 }
9933 #pragma omp sections
9934 {
9935 #pragma omp critical
9936 bar();
9937 #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?}}
9938 bar();
9939 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}
9940 bar();
9941 }
9942 #pragma omp sections
9943 {
9944 #pragma omp parallel
9945 {
9946 #pragma omp single // OK
9947 {
9948 bar();
9949 }
9950 #pragma omp for // OK
9951 for (int i = 0; i < 10; ++i)
9952 ;
9953 #pragma omp for simd // OK
9954 for (int i = 0; i < 10; ++i)
9955 ;
9956 #pragma omp sections // OK
9957 {
9958 bar();
9959 }
9960 }
9961 }
9962 #pragma omp sections
9963 {
9964 #pragma omp parallel for
9965 for (int i = 0; i < 10; ++i)
9966 ;
9967 }
9968 #pragma omp sections
9969 {
9970 #pragma omp parallel for simd
9971 for (int i = 0; i < 10; ++i)
9972 ;
9973 }
9974 #pragma omp sections
9975 {
9976 #pragma omp parallel sections
9977 {
9978 bar();
9979 }
9980 }
9981 #pragma omp sections
9982 {
9983 #pragma omp task
9984 {
9985 bar();
9986 }
9987 }
9988 #pragma omp sections
9989 {
9990 #pragma omp taskyield
9991 }
9992 #pragma omp sections
9993 {
9994 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}
9995 bar();
9996 }
9997 #pragma omp sections
9998 {
9999 #pragma omp taskwait
10000 }
10001 #pragma omp sections
10002 {
10003 #pragma omp flush
10004 }
10005 #pragma omp sections
10006 {
10007 #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?}}
10008 bar();
10009 }
10010 #pragma omp sections
10011 {
10012 #pragma omp atomic
10013 ++a;
10014 }
10015 #pragma omp sections
10016 {
10017 #pragma omp target
10018 ++a;
10019 }
10020 #pragma omp sections
10021 {
10022 #pragma omp target parallel
10023 ++a;
10024 }
10025 #pragma omp sections
10026 {
10027 #pragma omp target parallel for
10028 for (int i = 0; i < 10; ++i)
10029 ;
10030 }
10031 #pragma omp sections
10032 {
10033 #pragma omp target enter data map(to: a)
10034 }
10035 #pragma omp sections
10036 {
10037 #pragma omp target exit data map(from: a)
10038 }
10039 #pragma omp sections
10040 {
10041 #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?}}
10042 ++a;
10043 }
10044 #pragma omp sections
10045 {
10046 #pragma omp taskloop
10047 for (int i = 0; i < 10; ++i)
10048 ++a;
10049 }
10050 #pragma omp sections
10051 {
10052 #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?}}
10053 for (int i = 0; i < 10; ++i)
10054 ;
10055 }
10056 #pragma omp sections
10057 {
10058 #pragma omp target update to(a)
10059 }
10060 #pragma omp sections
10061 {
10062 #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?}}
10063 for (int i = 0; i < 10; ++i)
10064 ;
10065 }
10066 #pragma omp sections
10067 {
10068 #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?}}
10069 for (int i = 0; i < 10; ++i)
10070 ;
10071 }
10072 #pragma omp sections
10073 {
10074 #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?}}
10075 for (int i = 0; i < 10; ++i)
10076 ;
10077 }
10078 #pragma omp sections
10079 {
10080 #pragma omp target simd // OK
10081 for (int i = 0; i < 10; ++i)
10082 ;
10083 }
10084 #pragma omp sections
10085 {
10086 #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?}}
10087 for (int i = 0; i < 10; ++i)
10088 ;
10089 }
10090 #pragma omp sections
10091 {
10092 #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?}}
10093 for (int i = 0; i < 10; ++i)
10094 ;
10095 }
10096 #pragma omp sections
10097 {
10098 #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?}}
10099 for (int i = 0; i < 10; ++i)
10100 ;
10101 }
10102 #pragma omp sections
10103 {
10104 #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?}}
10105 for (int i = 0; i < 10; ++i)
10106 ;
10107 }
10108 #pragma omp sections
10109 {
10110 #pragma omp target teams // OK
10111 a++;
10112 }
10113 #pragma omp sections
10114 {
10115 #pragma omp target teams distribute // OK
10116 for (int i = 0; i < 10; ++i)
10117 ;
10118 }
10119 #pragma omp sections
10120 {
10121 #pragma omp target teams distribute parallel for // OK
10122 for (int i = 0; i < 10; ++i)
10123 ;
10124 }
10125 #pragma omp sections
10126 {
10127 #pragma omp target teams distribute parallel for simd // OK
10128 for (int i = 0; i < 10; ++i)
10129 ;
10130 }
10131 #pragma omp sections
10132 {
10133 #pragma omp target teams distribute simd // OK
10134 for (int i = 0; i < 10; ++i)
10135 ;
10136 }
10137
10138 // SECTION DIRECTIVE
10139 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}
10140 {
10141 bar();
10142 }
10143 #pragma omp sections
10144 {
10145 #pragma omp section
10146 {
10147 #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?}}
10148 for (int i = 0; i < 10; ++i)
10149 ;
10150 }
10151 }
10152 #pragma omp sections
10153 {
10154 #pragma omp section
10155 {
10156 #pragma omp simd
10157 for (int i = 0; i < 10; ++i)
10158 ;
10159 }
10160 }
10161 #pragma omp sections
10162 {
10163 #pragma omp section
10164 {
10165 #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?}}
10166 for (int i = 0; i < 10; ++i)
10167 ;
10168 }
10169 }
10170 #pragma omp sections
10171 {
10172 #pragma omp section
10173 {
10174 #pragma omp parallel
10175 for (int i = 0; i < 10; ++i)
10176 ;
10177 }
10178 }
10179 #pragma omp sections
10180 {
10181 #pragma omp section
10182 {
10183 #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?}}
10184 {
10185 bar();
10186 }
10187 }
10188 }
10189 #pragma omp sections
10190 {
10191 #pragma omp section
10192 {
10193 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}
10194 {
10195 bar();
10196 }
10197 }
10198 }
10199 #pragma omp sections
10200 {
10201 #pragma omp section
10202 {
10203 #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?}}
10204 bar();
10205 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
10206 bar();
10207 #pragma omp critical
10208 bar();
10209 }
10210 }
10211 #pragma omp sections
10212 {
10213 #pragma omp section
10214 {
10215 #pragma omp parallel
10216 {
10217 #pragma omp single // OK
10218 {
10219 bar();
10220 }
10221 #pragma omp for // OK
10222 for (int i = 0; i < 10; ++i)
10223 ;
10224 #pragma omp for simd // OK
10225 for (int i = 0; i < 10; ++i)
10226 ;
10227 #pragma omp sections // OK
10228 {
10229 bar();
10230 }
10231 }
10232 }
10233 }
10234 #pragma omp sections
10235 {
10236 #pragma omp section
10237 {
10238 #pragma omp parallel for
10239 for (int i = 0; i < 10; ++i)
10240 ;
10241 }
10242 }
10243 #pragma omp sections
10244 {
10245 #pragma omp section
10246 {
10247 #pragma omp parallel for simd
10248 for (int i = 0; i < 10; ++i)
10249 ;
10250 }
10251 }
10252 #pragma omp sections
10253 {
10254 #pragma omp section
10255 {
10256 #pragma omp parallel sections
10257 {
10258 bar();
10259 }
10260 }
10261 }
10262 #pragma omp sections
10263 {
10264 #pragma omp section
10265 {
10266 #pragma omp task
10267 {
10268 bar();
10269 }
10270 }
10271 }
10272 #pragma omp sections
10273 {
10274 #pragma omp section
10275 {
10276 #pragma omp taskyield
10277 bar();
10278 }
10279 }
10280 #pragma omp sections
10281 {
10282 #pragma omp section
10283 {
10284 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}
10285 bar();
10286 }
10287 }
10288 #pragma omp sections
10289 {
10290 #pragma omp section
10291 {
10292 #pragma omp taskwait
10293 bar();
10294 }
10295 }
10296 #pragma omp sections
10297 {
10298 #pragma omp section
10299 {
10300 #pragma omp flush
10301 bar();
10302 }
10303 }
10304 #pragma omp sections
10305 {
10306 #pragma omp section
10307 {
10308 #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?}}
10309 bar();
10310 }
10311 }
10312 #pragma omp sections
10313 {
10314 #pragma omp section
10315 {
10316 #pragma omp atomic
10317 ++a;
10318 }
10319 }
10320 #pragma omp sections
10321 {
10322 #pragma omp section
10323 {
10324 #pragma omp target
10325 ++a;
10326 }
10327 }
10328 #pragma omp sections
10329 {
10330 #pragma omp section
10331 {
10332 #pragma omp target parallel
10333 ++a;
10334 }
10335 }
10336 #pragma omp sections
10337 {
10338 #pragma omp section
10339 {
10340 #pragma omp target parallel for
10341 for (int i = 0; i < 10; ++i)
10342 ;
10343 }
10344 }
10345 #pragma omp sections
10346 {
10347 #pragma omp section
10348 {
10349 #pragma omp target enter data map(to: a)
10350 ++a;
10351 }
10352 }
10353 #pragma omp sections
10354 {
10355 #pragma omp section
10356 {
10357 #pragma omp target exit data map(from: a)
10358 ++a;
10359 }
10360 }
10361 #pragma omp sections
10362 {
10363 #pragma omp section
10364 {
10365 #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?}}
10366 ++a;
10367 }
10368 }
10369 #pragma omp sections
10370 {
10371 #pragma omp section
10372 {
10373 #pragma omp taskloop
10374 for (int i = 0; i < 10; ++i)
10375 ++a;
10376 }
10377 }
10378 #pragma omp sections
10379 {
10380 #pragma omp section
10381 #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?}}
10382 for (int i = 0; i < 10; ++i)
10383 ;
10384 }
10385 #pragma omp sections
10386 {
10387 #pragma omp section
10388 {
10389 #pragma omp target update to(a)
10390 a++;
10391 }
10392 }
10393 #pragma omp sections
10394 {
10395 #pragma omp section
10396 #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?}}
10397 for (int i = 0; i < 10; ++i)
10398 ;
10399 }
10400 #pragma omp sections
10401 {
10402 #pragma omp section
10403 #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?}}
10404 for (int i = 0; i < 10; ++i)
10405 ;
10406 }
10407 #pragma omp sections
10408 {
10409 #pragma omp section
10410 #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?}}
10411 for (int i = 0; i < 10; ++i)
10412 ;
10413 }
10414 #pragma omp sections
10415 {
10416 #pragma omp section
10417 #pragma omp target simd // OK
10418 for (int i = 0; i < 10; ++i)
10419 ;
10420 }
10421 #pragma omp sections
10422 {
10423 #pragma omp section
10424 #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?}}
10425 for (int i = 0; i < 10; ++i)
10426 ;
10427 }
10428 #pragma omp sections
10429 {
10430 #pragma omp section
10431 #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?}}
10432 for (int i = 0; i < 10; ++i)
10433 ;
10434 }
10435 #pragma omp sections
10436 {
10437 #pragma omp section
10438 #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?}}
10439 for (int i = 0; i < 10; ++i)
10440 ;
10441 }
10442 #pragma omp sections
10443 {
10444 #pragma omp section
10445 #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?}}
10446 for (int i = 0; i < 10; ++i)
10447 ;
10448 }
10449 #pragma omp sections
10450 {
10451 #pragma omp section
10452 #pragma omp target teams // OK
10453 a++;
10454 }
10455 #pragma omp sections
10456 {
10457 #pragma omp section
10458 #pragma omp target teams distribute // OK
10459 for (int i = 0; i < 10; ++i)
10460 ;
10461 }
10462 #pragma omp sections
10463 {
10464 #pragma omp section
10465 #pragma omp target teams distribute parallel for // OK
10466 for (int i = 0; i < 10; ++i)
10467 ;
10468 }
10469 #pragma omp sections
10470 {
10471 #pragma omp section
10472 #pragma omp target teams distribute parallel for simd // OK
10473 for (int i = 0; i < 10; ++i)
10474 ;
10475 }
10476 #pragma omp sections
10477 {
10478 #pragma omp section
10479 #pragma omp target teams distribute simd // OK
10480 for (int i = 0; i < 10; ++i)
10481 ;
10482 }
10483
10484 // SINGLE DIRECTIVE
10485 #pragma omp single
10486 {
10487 #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?}}
10488 for (int i = 0; i < 10; ++i)
10489 ;
10490 }
10491 #pragma omp single
10492 {
10493 #pragma omp simd
10494 for (int i = 0; i < 10; ++i)
10495 ;
10496 }
10497 #pragma omp single
10498 {
10499 #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?}}
10500 for (int i = 0; i < 10; ++i)
10501 ;
10502 }
10503 #pragma omp single
10504 {
10505 #pragma omp parallel
10506 for (int i = 0; i < 10; ++i)
10507 ;
10508 }
10509 #pragma omp single
10510 {
10511 #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?}}
10512 {
10513 bar();
10514 }
10515 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}
10516 bar();
10517 #pragma omp critical
10518 bar();
10519 }
10520 #pragma omp single
10521 {
10522 #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?}}
10523 {
10524 bar();
10525 }
10526 }
10527 #pragma omp single
10528 {
10529 #pragma omp parallel
10530 {
10531 #pragma omp single // OK
10532 {
10533 bar();
10534 }
10535 #pragma omp for // OK
10536 for (int i = 0; i < 10; ++i)
10537 ;
10538 #pragma omp for simd // OK
10539 for (int i = 0; i < 10; ++i)
10540 ;
10541 #pragma omp sections // OK
10542 {
10543 bar();
10544 }
10545 }
10546 }
10547 #pragma omp single
10548 {
10549 #pragma omp parallel for
10550 for (int i = 0; i < 10; ++i)
10551 ;
10552 }
10553 #pragma omp single
10554 {
10555 #pragma omp parallel for simd
10556 for (int i = 0; i < 10; ++i)
10557 ;
10558 }
10559 #pragma omp single
10560 {
10561 #pragma omp parallel sections
10562 {
10563 bar();
10564 }
10565 }
10566 #pragma omp single
10567 {
10568 #pragma omp task
10569 {
10570 bar();
10571 }
10572 }
10573 #pragma omp single
10574 {
10575 #pragma omp taskyield
10576 bar();
10577 }
10578 #pragma omp single
10579 {
10580 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}
10581 bar();
10582 }
10583 #pragma omp single
10584 {
10585 #pragma omp taskwait
10586 bar();
10587 }
10588 #pragma omp single
10589 {
10590 #pragma omp flush
10591 bar();
10592 }
10593 #pragma omp single
10594 {
10595 #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?}}
10596 bar();
10597 }
10598 #pragma omp single
10599 {
10600 #pragma omp atomic
10601 ++a;
10602 }
10603 #pragma omp single
10604 {
10605 #pragma omp target
10606 ++a;
10607 }
10608 #pragma omp single
10609 {
10610 #pragma omp target parallel
10611 ++a;
10612 }
10613 #pragma omp single
10614 {
10615 #pragma omp target parallel for
10616 for (int i = 0; i < 10; ++i)
10617 ;
10618 }
10619 #pragma omp single
10620 {
10621 #pragma omp target enter data map(to: a)
10622 ++a;
10623 }
10624 #pragma omp single
10625 {
10626 #pragma omp target exit data map(from: a)
10627 ++a;
10628 }
10629 #pragma omp single
10630 {
10631 #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?}}
10632 ++a;
10633 }
10634 #pragma omp single
10635 {
10636 #pragma omp taskloop
10637 for (int i = 0; i < 10; ++i)
10638 ++a;
10639 }
10640 #pragma omp single
10641 {
10642 #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?}}
10643 for (int i = 0; i < 10; ++i)
10644 ;
10645 }
10646 #pragma omp single
10647 {
10648 #pragma omp target update to(a)
10649 a++;
10650 }
10651 #pragma omp single
10652 {
10653 #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?}}
10654 for (int i = 0; i < 10; ++i)
10655 ;
10656 }
10657 #pragma omp single
10658 {
10659 #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?}}
10660 for (int i = 0; i < 10; ++i)
10661 ;
10662 }
10663 #pragma omp single
10664 {
10665 #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?}}
10666 for (int i = 0; i < 10; ++i)
10667 ;
10668 }
10669 #pragma omp single
10670 {
10671 #pragma omp target simd // OK
10672 for (int i = 0; i < 10; ++i)
10673 ;
10674 }
10675 #pragma omp single
10676 {
10677 #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?}}
10678 for (int i = 0; i < 10; ++i)
10679 ;
10680 }
10681 #pragma omp single
10682 {
10683 #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?}}
10684 for (int i = 0; i < 10; ++i)
10685 ;
10686 }
10687 #pragma omp single
10688 {
10689 #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?}}
10690 for (int i = 0; i < 10; ++i)
10691 ;
10692 }
10693 #pragma omp single
10694 {
10695 #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?}}
10696 for (int i = 0; i < 10; ++i)
10697 ;
10698 }
10699 #pragma omp single
10700 {
10701 #pragma omp target teams // oK
10702 a++;
10703 }
10704 #pragma omp single
10705 {
10706 #pragma omp target teams distribute // OK
10707 for (int i = 0; i < 10; ++i)
10708 ;
10709 }
10710 #pragma omp single
10711 {
10712 #pragma omp target teams distribute parallel for // OK
10713 for (int i = 0; i < 10; ++i)
10714 ;
10715 }
10716 #pragma omp single
10717 {
10718 #pragma omp target teams distribute parallel for simd // OK
10719 for (int i = 0; i < 10; ++i)
10720 ;
10721 }
10722 #pragma omp single
10723 {
10724 #pragma omp target teams distribute simd // OK
10725 for (int i = 0; i < 10; ++i)
10726 ;
10727 }
10728
10729 // MASTER DIRECTIVE
10730 #pragma omp master
10731 {
10732 #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?}}
10733 for (int i = 0; i < 10; ++i)
10734 ;
10735 }
10736 #pragma omp master
10737 {
10738 #pragma omp simd
10739 for (int i = 0; i < 10; ++i)
10740 ;
10741 }
10742 #pragma omp master
10743 {
10744 #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?}}
10745 for (int i = 0; i < 10; ++i)
10746 ;
10747 }
10748 #pragma omp master
10749 {
10750 #pragma omp parallel
10751 for (int i = 0; i < 10; ++i)
10752 ;
10753 }
10754 #pragma omp master
10755 {
10756 #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?}}
10757 {
10758 bar();
10759 }
10760 }
10761 #pragma omp master
10762 {
10763 #pragma omp master // OK, though second 'master' is redundant
10764 {
10765 bar();
10766 }
10767 }
10768 #pragma omp master
10769 {
10770 #pragma omp critical
10771 {
10772 bar();
10773 }
10774 }
10775 #pragma omp master
10776 {
10777 #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?}}
10778 {
10779 bar();
10780 }
10781 }
10782 #pragma omp master
10783 {
10784 #pragma omp parallel
10785 {
10786 #pragma omp master // OK
10787 {
10788 bar();
10789 }
10790 #pragma omp for // OK
10791 for (int i = 0; i < 10; ++i)
10792 ;
10793 #pragma omp for simd // OK
10794 for (int i = 0; i < 10; ++i)
10795 ;
10796 #pragma omp sections // OK
10797 {
10798 bar();
10799 }
10800 }
10801 }
10802 #pragma omp master
10803 {
10804 #pragma omp parallel for
10805 for (int i = 0; i < 10; ++i)
10806 ;
10807 }
10808 #pragma omp master
10809 {
10810 #pragma omp parallel for simd
10811 for (int i = 0; i < 10; ++i)
10812 ;
10813 }
10814 #pragma omp master
10815 {
10816 #pragma omp parallel sections
10817 {
10818 bar();
10819 }
10820 }
10821 #pragma omp master
10822 {
10823 #pragma omp task
10824 {
10825 bar();
10826 }
10827 }
10828 #pragma omp master
10829 {
10830 #pragma omp taskyield
10831 bar();
10832 }
10833 #pragma omp master
10834 {
10835 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}
10836 bar();
10837 }
10838 #pragma omp master
10839 {
10840 #pragma omp taskwait
10841 bar();
10842 }
10843 #pragma omp master
10844 {
10845 #pragma omp flush
10846 bar();
10847 }
10848 #pragma omp master
10849 {
10850 #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?}}
10851 bar();
10852 }
10853 #pragma omp master
10854 {
10855 #pragma omp atomic
10856 ++a;
10857 }
10858 #pragma omp master
10859 {
10860 #pragma omp target
10861 ++a;
10862 }
10863 #pragma omp master
10864 {
10865 #pragma omp target parallel
10866 ++a;
10867 }
10868 #pragma omp master
10869 {
10870 #pragma omp target parallel for
10871 for (int i = 0; i < 10; ++i)
10872 ;
10873 }
10874 #pragma omp master
10875 {
10876 #pragma omp target enter data map(to: a)
10877 ++a;
10878 }
10879 #pragma omp master
10880 {
10881 #pragma omp target exit data map(from: a)
10882 ++a;
10883 }
10884 #pragma omp master
10885 {
10886 #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?}}
10887 ++a;
10888 }
10889 #pragma omp master
10890 {
10891 #pragma omp taskloop
10892 for (int i = 0; i < 10; ++i)
10893 ++a;
10894 }
10895 #pragma omp master
10896 {
10897 #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?}}
10898 for (int i = 0; i < 10; ++i)
10899 ;
10900 }
10901 #pragma omp master
10902 {
10903 #pragma omp target update to(a)
10904 ++a;
10905 }
10906 #pragma omp master
10907 {
10908 #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?}}
10909 for (int i = 0; i < 10; ++i)
10910 ;
10911 }
10912 #pragma omp master
10913 {
10914 #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?}}
10915 for (int i = 0; i < 10; ++i)
10916 ;
10917 }
10918 #pragma omp master
10919 {
10920 #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?}}
10921 for (int i = 0; i < 10; ++i)
10922 ;
10923 }
10924 #pragma omp master
10925 {
10926 #pragma omp target simd // OK
10927 for (int i = 0; i < 10; ++i)
10928 ;
10929 }
10930 #pragma omp master
10931 {
10932 #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?}}
10933 for (int i = 0; i < 10; ++i)
10934 ;
10935 }
10936 #pragma omp master
10937 {
10938 #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?}}
10939 for (int i = 0; i < 10; ++i)
10940 ;
10941 }
10942 #pragma omp master
10943 {
10944 #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?}}
10945 for (int i = 0; i < 10; ++i)
10946 ;
10947 }
10948 #pragma omp master
10949 {
10950 #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?}}
10951 for (int i = 0; i < 10; ++i)
10952 ;
10953 }
10954 #pragma omp master
10955 {
10956 #pragma omp target teams // OK
10957 a++;
10958 }
10959 #pragma omp master
10960 {
10961 #pragma omp target teams distribute // OK
10962 for (int i = 0; i < 10; ++i)
10963 ;
10964 }
10965 #pragma omp master
10966 {
10967 #pragma omp target teams distribute parallel for // OK
10968 for (int i = 0; i < 10; ++i)
10969 ;
10970 }
10971 #pragma omp master
10972 {
10973 #pragma omp target teams distribute parallel for simd // OK
10974 for (int i = 0; i < 10; ++i)
10975 ;
10976 }
10977 #pragma omp master
10978 {
10979 #pragma omp target teams distribute simd // OK
10980 for (int i = 0; i < 10; ++i)
10981 ;
10982 }
10983
10984 // CRITICAL DIRECTIVE
10985 #pragma omp critical
10986 {
10987 #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?}}
10988 for (int i = 0; i < 10; ++i)
10989 ;
10990 }
10991 #pragma omp critical
10992 {
10993 #pragma omp simd
10994 for (int i = 0; i < 10; ++i)
10995 ;
10996 }
10997 #pragma omp critical
10998 {
10999 #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?}}
11000 for (int i = 0; i < 10; ++i)
11001 ;
11002 }
11003 #pragma omp critical
11004 {
11005 #pragma omp parallel
11006 for (int i = 0; i < 10; ++i)
11007 ;
11008 }
11009 #pragma omp critical
11010 {
11011 #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?}}
11012 {
11013 bar();
11014 }
11015 }
11016 #pragma omp critical
11017 {
11018 #pragma omp master // OK, though second 'master' is redundant
11019 {
11020 bar();
11021 }
11022 }
11023 #pragma omp critical
11024 {
11025 #pragma omp critical
11026 {
11027 bar();
11028 }
11029 }
11030 #pragma omp critical
11031 {
11032 #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?}}
11033 {
11034 bar();
11035 }
11036 }
11037 #pragma omp critical
11038 {
11039 #pragma omp parallel
11040 {
11041 #pragma omp master // OK
11042 {
11043 bar();
11044 }
11045 #pragma omp for // OK
11046 for (int i = 0; i < 10; ++i)
11047 ;
11048 #pragma omp for simd // OK
11049 for (int i = 0; i < 10; ++i)
11050 ;
11051 #pragma omp sections // OK
11052 {
11053 bar();
11054 }
11055 }
11056 }
11057 #pragma omp critical
11058 {
11059 #pragma omp parallel for
11060 for (int i = 0; i < 10; ++i)
11061 ;
11062 }
11063 #pragma omp critical
11064 {
11065 #pragma omp parallel for simd
11066 for (int i = 0; i < 10; ++i)
11067 ;
11068 }
11069 #pragma omp critical
11070 {
11071 #pragma omp parallel sections
11072 {
11073 bar();
11074 }
11075 }
11076 #pragma omp critical
11077 {
11078 #pragma omp task
11079 {
11080 bar();
11081 }
11082 }
11083 #pragma omp critical
11084 {
11085 #pragma omp taskyield
11086 bar();
11087 }
11088 #pragma omp critical
11089 {
11090 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}
11091 bar();
11092 }
11093 #pragma omp critical
11094 {
11095 #pragma omp taskwait
11096 bar();
11097 }
11098 #pragma omp critical(Belka)
11099 {
11100 #pragma omp critical(Strelka)
11101 bar();
11102 }
11103 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}}
11104 {
11105 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}}
11106 {
11107 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}}
11108 {
11109 #pragma omp parallel
11110 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}}
11111 {
11112 bar();
11113 }
11114 }
11115 }
11116 }
11117 #pragma omp critical
11118 {
11119 #pragma omp flush
11120 bar();
11121 }
11122 #pragma omp critical
11123 {
11124 #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?}}
11125 bar();
11126 }
11127 #pragma omp critical
11128 {
11129 #pragma omp atomic
11130 ++a;
11131 }
11132 #pragma omp critical
11133 {
11134 #pragma omp target
11135 ++a;
11136 }
11137 #pragma omp critical
11138 {
11139 #pragma omp target parallel
11140 ++a;
11141 }
11142 #pragma omp critical
11143 {
11144 #pragma omp target parallel for
11145 for (int i = 0; i < 10; ++i)
11146 ;
11147 }
11148 #pragma omp critical
11149 {
11150 #pragma omp target enter data map(to: a)
11151 ++a;
11152 }
11153 #pragma omp critical
11154 {
11155 #pragma omp target exit data map(from: a)
11156 ++a;
11157 }
11158 #pragma omp critical
11159 {
11160 #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?}}
11161 ++a;
11162 }
11163 #pragma omp critical
11164 {
11165 #pragma omp taskloop
11166 for (int i = 0; i < 10; ++i)
11167 ++a;
11168 }
11169 #pragma omp critical
11170 {
11171 #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?}}
11172 for (int i = 0; i < 10; ++i)
11173 ;
11174 }
11175 #pragma omp critical
11176 {
11177 #pragma omp target update to(a)
11178 a++;
11179 }
11180 #pragma omp critical
11181 {
11182 #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?}}
11183 for (int i = 0; i < 10; ++i)
11184 ;
11185 }
11186 #pragma omp critical
11187 {
11188 #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?}}
11189 for (int i = 0; i < 10; ++i)
11190 ;
11191 }
11192 #pragma omp critical
11193 {
11194 #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?}}
11195 for (int i = 0; i < 10; ++i)
11196 ;
11197 }
11198 #pragma omp critical
11199 {
11200 #pragma omp target simd // OK
11201 for (int i = 0; i < 10; ++i)
11202 ;
11203 }
11204 #pragma omp critical
11205 {
11206 #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?}}
11207 for (int i = 0; i < 10; ++i)
11208 ;
11209 }
11210 #pragma omp critical
11211 {
11212 #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?}}
11213 for (int i = 0; i < 10; ++i)
11214 ;
11215 }
11216 #pragma omp critical
11217 {
11218 #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?}}
11219 for (int i = 0; i < 10; ++i)
11220 ;
11221 }
11222 #pragma omp critical
11223 {
11224 #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?}}
11225 for (int i = 0; i < 10; ++i)
11226 ;
11227 }
11228 #pragma omp critical
11229 {
11230 #pragma omp target teams // OK
11231 a++;
11232 }
11233 #pragma omp critical
11234 {
11235 #pragma omp target teams distribute // OK
11236 for (int i = 0; i < 10; ++i)
11237 ;
11238 }
11239 #pragma omp critical
11240 {
11241 #pragma omp target teams distribute parallel for // OK
11242 for (int i = 0; i < 10; ++i)
11243 ;
11244 }
11245 #pragma omp critical
11246 {
11247 #pragma omp target teams distribute parallel for simd // OK
11248 for (int i = 0; i < 10; ++i)
11249 ;
11250 }
11251 #pragma omp critical
11252 {
11253 #pragma omp target teams distribute simd // OK
11254 for (int i = 0; i < 10; ++i)
11255 ;
11256 }
11257
11258 // PARALLEL FOR DIRECTIVE
11259 #pragma omp parallel for
11260 for (int i = 0; i < 10; ++i) {
11261 #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?}}
11262 for (int i = 0; i < 10; ++i)
11263 ;
11264 }
11265 #pragma omp parallel for
11266 for (int i = 0; i < 10; ++i) {
11267 #pragma omp simd
11268 for (int i = 0; i < 10; ++i)
11269 ;
11270 }
11271 #pragma omp parallel for
11272 for (int i = 0; i < 10; ++i) {
11273 #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?}}
11274 for (int i = 0; i < 10; ++i)
11275 ;
11276 }
11277
11278 #pragma omp parallel for
11279 for (int i = 0; i < 10; ++i) {
11280 #pragma omp parallel
11281 for (int i = 0; i < 10; ++i)
11282 ;
11283 }
11284 #pragma omp parallel for
11285 for (int i = 0; i < 10; ++i) {
11286 #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?}}
11287 {
11288 bar();
11289 }
11290 }
11291 #pragma omp parallel for
11292 for (int i = 0; i < 10; ++i) {
11293 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}
11294 {
11295 bar();
11296 }
11297 }
11298 #pragma omp parallel for
11299 for (int i = 0; i < 10; ++i) {
11300 #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?}}
11301 {
11302 bar();
11303 }
11304 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}
11305 {
11306 bar();
11307 }
11308 #pragma omp critical
11309 {
11310 bar();
11311 }
11312 }
11313 #pragma omp parallel for
11314 for (int i = 0; i < 10; ++i) {
11315 #pragma omp parallel
11316 {
11317 #pragma omp single // OK
11318 {
11319 bar();
11320 }
11321 #pragma omp master // OK
11322 {
11323 bar();
11324 }
11325 #pragma omp critical // OK
11326 {
11327 bar();
11328 }
11329 #pragma omp for // OK
11330 for (int i = 0; i < 10; ++i)
11331 ;
11332 #pragma omp for simd // OK
11333 for (int i = 0; i < 10; ++i)
11334 ;
11335 #pragma omp sections // OK
11336 {
11337 bar();
11338 }
11339 }
11340 }
11341 #pragma omp parallel for
11342 for (int i = 0; i < 10; ++i) {
11343 #pragma omp parallel for
11344 for (int i = 0; i < 10; ++i)
11345 ;
11346 }
11347 #pragma omp parallel for
11348 for (int i = 0; i < 10; ++i) {
11349 #pragma omp parallel for simd
11350 for (int i = 0; i < 10; ++i)
11351 ;
11352 }
11353 #pragma omp parallel for
11354 for (int i = 0; i < 10; ++i) {
11355 #pragma omp parallel sections
11356 {
11357 bar();
11358 }
11359 }
11360 #pragma omp parallel for
11361 for (int i = 0; i < 10; ++i) {
11362 #pragma omp task
11363 {
11364 bar();
11365 }
11366 }
11367 #pragma omp parallel for
11368 for (int i = 0; i < 10; ++i) {
11369 #pragma omp taskyield
11370 bar();
11371 }
11372 #pragma omp parallel for
11373 for (int i = 0; i < 10; ++i) {
11374 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}
11375 bar();
11376 }
11377 #pragma omp parallel for
11378 for (int i = 0; i < 10; ++i) {
11379 #pragma omp taskwait
11380 bar();
11381 }
11382 #pragma omp parallel for
11383 for (int i = 0; i < 10; ++i) {
11384 #pragma omp flush
11385 bar();
11386 }
11387 #pragma omp parallel for
11388 for (int i = 0; i < 10; ++i) {
11389 #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?}}
11390 bar();
11391 }
11392 #pragma omp parallel for ordered
11393 for (int i = 0; i < 10; ++i) {
11394 #pragma omp ordered // OK
11395 bar();
11396 }
11397 #pragma omp parallel for
11398 for (int i = 0; i < 10; ++i) {
11399 #pragma omp atomic
11400 ++a;
11401 }
11402 #pragma omp parallel for
11403 for (int i = 0; i < 10; ++i) {
11404 #pragma omp target
11405 ++a;
11406 }
11407 #pragma omp parallel for
11408 for (int i = 0; i < 10; ++i) {
11409 #pragma omp target parallel
11410 ++a;
11411 }
11412 #pragma omp parallel for
11413 for (int i = 0; i < 10; ++i) {
11414 #pragma omp target parallel for
11415 for (int i = 0; i < 10; ++i)
11416 ;
11417 }
11418 #pragma omp parallel for
11419 for (int i = 0; i < 10; ++i) {
11420 #pragma omp target enter data map(to: a)
11421 ++a;
11422 }
11423 #pragma omp parallel for
11424 for (int i = 0; i < 10; ++i) {
11425 #pragma omp target exit data map(from: a)
11426 ++a;
11427 }
11428 #pragma omp parallel for
11429 for (int i = 0; i < 10; ++i) {
11430 #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?}}
11431 ++a;
11432 }
11433 #pragma omp parallel for
11434 for (int i = 0; i < 10; ++i) {
11435 #pragma omp taskloop
11436 for (int i = 0; i < 10; ++i)
11437 ++a;
11438 }
11439 #pragma omp parallel for
11440 for (int i = 0; i < 10; ++i) {
11441 #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?}}
11442 for (int j = 0; j < 10; ++j)
11443 ;
11444 }
11445 #pragma omp parallel for
11446 for (int i = 0; i < 10; ++i) {
11447 #pragma omp target update to(a)
11448 a++;
11449 }
11450 #pragma omp parallel for
11451 for (int i = 0; i < 10; ++i) {
11452 #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?}}
11453 for (int j = 0; j < 10; ++j)
11454 ;
11455 }
11456 #pragma omp parallel for
11457 for (int i = 0; i < 10; ++i) {
11458 #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?}}
11459 for (int j = 0; j < 10; ++j)
11460 ;
11461 }
11462 #pragma omp parallel for
11463 for (int i = 0; i < 10; ++i) {
11464 #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?}}
11465 for (int j = 0; j < 10; ++j)
11466 ;
11467 }
11468 #pragma omp parallel for
11469 for (int i = 0; i < 10; ++i) {
11470 #pragma omp target simd // OK
11471 for (int j = 0; j < 10; ++j)
11472 ;
11473 }
11474 #pragma omp parallel for
11475 for (int i = 0; i < 10; ++i) {
11476 #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?}}
11477 for (int j = 0; j < 10; ++j)
11478 ;
11479 }
11480 #pragma omp parallel for
11481 for (int i = 0; i < 10; ++i) {
11482 #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?}}
11483 for (int j = 0; j < 10; ++j)
11484 ;
11485 }
11486 #pragma omp parallel for
11487 for (int i = 0; i < 10; ++i) {
11488 #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?}}
11489 for (int j = 0; j < 10; ++j)
11490 ;
11491 }
11492 #pragma omp parallel for
11493 for (int i = 0; i < 10; ++i) {
11494 #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?}}
11495 for (int j = 0; j < 10; ++j)
11496 ;
11497 }
11498 #pragma omp parallel for
11499 for (int i = 0; i < 10; ++i) {
11500 #pragma omp target teams // OK
11501 a++;
11502 }
11503 #pragma omp parallel for
11504 for (int i = 0; i < 10; ++i) {
11505 #pragma omp target teams distribute // OK
11506 for (int j = 0; j < 10; ++j)
11507 ;
11508 }
11509 #pragma omp parallel for
11510 for (int i = 0; i < 10; ++i) {
11511 #pragma omp target teams distribute parallel for // OK
11512 for (int j = 0; j < 10; ++j)
11513 ;
11514 }
11515 #pragma omp parallel for
11516 for (int i = 0; i < 10; ++i) {
11517 #pragma omp target teams distribute parallel for simd // OK
11518 for (int j = 0; j < 10; ++j)
11519 ;
11520 }
11521 #pragma omp parallel for
11522 for (int i = 0; i < 10; ++i) {
11523 #pragma omp target teams distribute simd // OK
11524 for (int j = 0; j < 10; ++j)
11525 ;
11526 }
11527
11528 // PARALLEL FOR SIMD DIRECTIVE
11529 #pragma omp parallel for simd
11530 for (int i = 0; i < 10; ++i) {
11531 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11532 for (int i = 0; i < 10; ++i)
11533 ;
11534 }
11535 #pragma omp parallel for simd
11536 for (int i = 0; i < 10; ++i) {
11537 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
11538 for (int i = 0; i < 10; ++i)
11539 ;
11540 }
11541 #pragma omp parallel for simd
11542 for (int i = 0; i < 10; ++i) {
11543 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11544 for (int i = 0; i < 10; ++i)
11545 ;
11546 }
11547 #pragma omp parallel for simd
11548 for (int i = 0; i < 10; ++i) {
11549 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11550 for (int i = 0; i < 10; ++i)
11551 ;
11552 }
11553 #pragma omp parallel for simd
11554 for (int i = 0; i < 10; ++i) {
11555 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11556 {
11557 bar();
11558 }
11559 }
11560 #pragma omp parallel for simd
11561 for (int i = 0; i < 10; ++i) {
11562 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11563 {
11564 bar();
11565 }
11566 }
11567 #pragma omp parallel for simd
11568 for (int i = 0; i < 10; ++i) {
11569 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11570 {
11571 bar();
11572 }
11573 }
11574
11575 #pragma omp parallel for simd
11576 for (int i = 0; i < 10; ++i) {
11577 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11578 {
11579 bar();
11580 }
11581 }
11582
11583 #pragma omp parallel for simd
11584 for (int i = 0; i < 10; ++i) {
11585 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11586 {
11587 bar();
11588 }
11589 }
11590
11591 #pragma omp parallel for simd
11592 for (int i = 0; i < 10; ++i) {
11593 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11594 {
11595 #pragma omp single
11596 {
11597 bar();
11598 }
11599 #pragma omp for
11600 for (int i = 0; i < 10; ++i)
11601 ;
11602 #pragma omp for simd
11603 for (int i = 0; i < 10; ++i)
11604 ;
11605 #pragma omp sections
11606 {
11607 bar();
11608 }
11609 }
11610 }
11611 #pragma omp parallel for simd
11612 for (int i = 0; i < 10; ++i) {
11613 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11614 for (int i = 0; i < 10; ++i)
11615 ;
11616 }
11617 #pragma omp parallel for simd
11618 for (int i = 0; i < 10; ++i) {
11619 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}
11620 for (int i = 0; i < 10; ++i)
11621 ;
11622 }
11623 #pragma omp parallel for simd
11624 for (int i = 0; i < 10; ++i) {
11625 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11626 {
11627 bar();
11628 }
11629 }
11630 #pragma omp parallel for simd
11631 for (int i = 0; i < 10; ++i) {
11632 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11633 {
11634 bar();
11635 }
11636 }
11637 #pragma omp parallel for simd
11638 for (int i = 0; i < 10; ++i) {
11639 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11640 bar();
11641 }
11642 #pragma omp parallel for simd
11643 for (int i = 0; i < 10; ++i) {
11644 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11645 bar();
11646 }
11647 #pragma omp parallel for simd
11648 for (int i = 0; i < 10; ++i) {
11649 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11650 bar();
11651 }
11652 #pragma omp parallel for simd
11653 for (int i = 0; i < 10; ++i) {
11654 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11655 bar();
11656 }
11657 #pragma omp parallel for simd
11658 for (int i = 0; i < 10; ++i) {
11659 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11660 bar();
11661 }
11662 #pragma omp parallel for simd
11663 for (int i = 0; i < 10; ++i) {
11664 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11665 bar();
11666 }
11667 #pragma omp parallel for simd
11668 for (int i = 0; i < 10; ++i) {
11669 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11670 ++a;
11671 }
11672 #pragma omp parallel for simd
11673 for (int i = 0; i < 10; ++i) {
11674 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11675 ++a;
11676 }
11677 #pragma omp parallel for simd
11678 for (int i = 0; i < 10; ++i) {
11679 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11680 ++a;
11681 }
11682 #pragma omp parallel for simd
11683 for (int i = 0; i < 10; ++i) {
11684 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11685 for (int i = 0; i < 10; ++i)
11686 ;
11687 }
11688 #pragma omp parallel for simd
11689 for (int i = 0; i < 10; ++i) {
11690 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11691 ++a;
11692 }
11693 #pragma omp parallel for simd
11694 for (int i = 0; i < 10; ++i) {
11695 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11696 ++a;
11697 }
11698 #pragma omp parallel for simd
11699 for (int i = 0; i < 10; ++i) {
11700 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11701 ++a;
11702 }
11703 #pragma omp parallel for simd
11704 for (int i = 0; i < 10; ++i) {
11705 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11706 for (int i = 0; i < 10; ++i)
11707 ++a;
11708 }
11709 #pragma omp parallel for simd
11710 for (int i = 0; i < 10; ++i) {
11711 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11712 for (int j = 0; j < 10; ++j)
11713 ;
11714 }
11715 #pragma omp parallel for simd
11716 for (int i = 0; i < 10; ++i) {
11717 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11718 a++;
11719 }
11720 #pragma omp parallel for simd
11721 for (int i = 0; i < 10; ++i) {
11722 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11723 for (int j = 0; j < 10; ++j)
11724 ;
11725 }
11726 #pragma omp parallel for simd
11727 for (int i = 0; i < 10; ++i) {
11728 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11729 for (int j = 0; j < 10; ++j)
11730 ;
11731 }
11732 #pragma omp parallel for simd
11733 for (int i = 0; i < 10; ++i) {
11734 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11735 for (int j = 0; j < 10; ++j)
11736 ;
11737 }
11738 #pragma omp parallel for simd
11739 for (int i = 0; i < 10; ++i) {
11740 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11741 for (int j = 0; j < 10; ++j)
11742 ;
11743 }
11744 #pragma omp parallel for simd
11745 for (int i = 0; i < 10; ++i) {
11746 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11747 for (int j = 0; j < 10; ++j)
11748 ;
11749 }
11750 #pragma omp parallel for simd
11751 for (int i = 0; i < 10; ++i) {
11752 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11753 for (int j = 0; j < 10; ++j)
11754 ;
11755 }
11756 #pragma omp parallel for simd
11757 for (int i = 0; i < 10; ++i) {
11758 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11759 for (int j = 0; j < 10; ++j)
11760 ;
11761 }
11762 #pragma omp parallel for simd
11763 for (int i = 0; i < 10; ++i) {
11764 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11765 for (int j = 0; j < 10; ++j)
11766 ;
11767 }
11768 #pragma omp parallel for simd
11769 for (int i = 0; i < 10; ++i) {
11770 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11771 a++;
11772 }
11773 #pragma omp parallel for simd
11774 for (int i = 0; i < 10; ++i) {
11775 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11776 for (int j = 0; j < 10; ++j)
11777 ;
11778 }
11779 #pragma omp parallel for simd
11780 for (int i = 0; i < 10; ++i) {
11781 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11782 for (int j = 0; j < 10; ++j)
11783 ;
11784 }
11785 #pragma omp parallel for simd
11786 for (int i = 0; i < 10; ++i) {
11787 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11788 for (int j = 0; j < 10; ++j)
11789 ;
11790 }
11791 #pragma omp parallel for simd
11792 for (int i = 0; i < 10; ++i) {
11793 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11794 for (int j = 0; j < 10; ++j)
11795 ;
11796 }
11797
11798 // PARALLEL SECTIONS DIRECTIVE
11799 #pragma omp parallel sections
11800 {
11801 #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?}}
11802 for (int i = 0; i < 10; ++i)
11803 ;
11804 }
11805 #pragma omp parallel sections
11806 {
11807 #pragma omp simd
11808 for (int i = 0; i < 10; ++i)
11809 ;
11810 }
11811 #pragma omp parallel sections
11812 {
11813 #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?}}
11814 for (int i = 0; i < 10; ++i)
11815 ;
11816 }
11817 #pragma omp parallel sections
11818 {
11819 #pragma omp parallel
11820 for (int i = 0; i < 10; ++i)
11821 ;
11822 }
11823 #pragma omp parallel sections
11824 {
11825 #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?}}
11826 {
11827 bar();
11828 }
11829 }
11830 #pragma omp parallel sections
11831 {
11832 #pragma omp section
11833 {
11834 bar();
11835 }
11836 }
11837 #pragma omp parallel sections
11838 {
11839 #pragma omp section
11840 {
11841 #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?}}
11842 bar();
11843 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
11844 bar();
11845 #pragma omp critical
11846 bar();
11847 }
11848 }
11849 #pragma omp parallel sections
11850 {
11851 #pragma omp parallel
11852 {
11853 #pragma omp single // OK
11854 {
11855 bar();
11856 }
11857 #pragma omp master // OK
11858 {
11859 bar();
11860 }
11861 #pragma omp critical // OK
11862 {
11863 bar();
11864 }
11865 #pragma omp for // OK
11866 for (int i = 0; i < 10; ++i)
11867 ;
11868 #pragma omp for simd // OK
11869 for (int i = 0; i < 10; ++i)
11870 ;
11871 #pragma omp sections // OK
11872 {
11873 bar();
11874 }
11875 }
11876 }
11877 #pragma omp parallel sections
11878 {
11879 #pragma omp parallel for
11880 for (int i = 0; i < 10; ++i)
11881 ;
11882 }
11883 #pragma omp parallel sections
11884 {
11885 #pragma omp parallel for simd
11886 for (int i = 0; i < 10; ++i)
11887 ;
11888 }
11889 #pragma omp parallel sections
11890 {
11891 #pragma omp parallel sections
11892 {
11893 bar();
11894 }
11895 }
11896 #pragma omp parallel sections
11897 {
11898 #pragma omp task
11899 {
11900 bar();
11901 }
11902 }
11903 #pragma omp parallel sections
11904 {
11905 #pragma omp taskyield
11906 }
11907 #pragma omp parallel sections
11908 {
11909 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
11910 }
11911 #pragma omp parallel sections
11912 {
11913 #pragma omp taskwait
11914 }
11915 #pragma omp parallel sections
11916 {
11917 #pragma omp flush
11918 }
11919 #pragma omp parallel sections
11920 {
11921 #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?}}
11922 bar();
11923 }
11924 #pragma omp parallel sections
11925 {
11926 #pragma omp atomic
11927 ++a;
11928 }
11929 #pragma omp parallel sections
11930 {
11931 #pragma omp target
11932 ++a;
11933 }
11934 #pragma omp parallel sections
11935 {
11936 #pragma omp target parallel
11937 ++a;
11938 }
11939 #pragma omp parallel sections
11940 {
11941 #pragma omp target parallel for
11942 for (int i = 0; i < 10; ++i)
11943 ;
11944 }
11945 #pragma omp parallel sections
11946 {
11947 #pragma omp target enter data map(to: a)
11948 }
11949 #pragma omp parallel sections
11950 {
11951 #pragma omp target exit data map(from: a)
11952 }
11953 #pragma omp parallel sections
11954 {
11955 #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?}}
11956 ++a;
11957 }
11958 #pragma omp parallel sections
11959 {
11960 #pragma omp taskloop
11961 for (int i = 0; i < 10; ++i)
11962 ++a;
11963 }
11964 #pragma omp parallel sections
11965 {
11966 #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?}}
11967 for (int i = 0; i < 10; ++i)
11968 ;
11969 }
11970 #pragma omp parallel sections
11971 {
11972 #pragma omp target update to(a)
11973 }
11974 #pragma omp parallel sections
11975 {
11976 #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?}}
11977 for (int i = 0; i < 10; ++i)
11978 ;
11979 }
11980 #pragma omp parallel sections
11981 {
11982 #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?}}
11983 for (int i = 0; i < 10; ++i)
11984 ;
11985 }
11986 #pragma omp parallel sections
11987 {
11988 #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?}}
11989 for (int i = 0; i < 10; ++i)
11990 ;
11991 }
11992 #pragma omp parallel sections
11993 {
11994 #pragma omp target simd // OK
11995 for (int i = 0; i < 10; ++i)
11996 ;
11997 }
11998 #pragma omp parallel sections
11999 {
12000 #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?}}
12001 for (int i = 0; i < 10; ++i)
12002 ;
12003 }
12004 #pragma omp parallel sections
12005 {
12006 #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?}}
12007 for (int i = 0; i < 10; ++i)
12008 ;
12009 }
12010 #pragma omp parallel sections
12011 {
12012 #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?}}
12013 for (int i = 0; i < 10; ++i)
12014 ;
12015 }
12016 #pragma omp parallel sections
12017 {
12018 #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?}}
12019 for (int i = 0; i < 10; ++i)
12020 ;
12021 }
12022 #pragma omp parallel sections
12023 {
12024 #pragma omp target teams // OK
12025 a++;
12026 }
12027 #pragma omp parallel sections
12028 {
12029 #pragma omp target teams distribute // OK
12030 for (int i = 0; i < 10; ++i)
12031 ;
12032 }
12033 #pragma omp parallel sections
12034 {
12035 #pragma omp target teams distribute parallel for // OK
12036 for (int i = 0; i < 10; ++i)
12037 ;
12038 }
12039 #pragma omp parallel sections
12040 {
12041 #pragma omp target teams distribute parallel for simd // OK
12042 for (int i = 0; i < 10; ++i)
12043 ;
12044 }
12045 #pragma omp parallel sections
12046 {
12047 #pragma omp target teams distribute simd // OK
12048 for (int i = 0; i < 10; ++i)
12049 ;
12050 }
12051
12052 // TASK DIRECTIVE
12053 #pragma omp task
12054 #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?}}
12055 for (int i = 0; i < 10; ++i)
12056 ;
12057 #pragma omp task
12058 #pragma omp simd
12059 for (int i = 0; i < 10; ++i)
12060 ;
12061 #pragma omp task
12062 #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?}}
12063 for (int i = 0; i < 10; ++i)
12064 ;
12065 #pragma omp task
12066 #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?}}
12067 {
12068 bar();
12069 }
12070 #pragma omp task
12071 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}
12072 {
12073 bar();
12074 }
12075 #pragma omp task
12076 #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?}}
12077 bar();
12078 #pragma omp task
12079 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}
12080 bar();
12081 #pragma omp task
12082 #pragma omp critical
12083 bar();
12084 #pragma omp task
12085 #pragma omp parallel for
12086 for (int i = 0; i < 10; ++i)
12087 ;
12088 #pragma omp task
12089 #pragma omp parallel for simd
12090 for (int i = 0; i < 10; ++i)
12091 ;
12092 #pragma omp task
12093 #pragma omp parallel sections
12094 {
12095 bar();
12096 }
12097 #pragma omp task
12098 #pragma omp task
12099 {
12100 bar();
12101 }
12102 #pragma omp task
12103 {
12104 #pragma omp taskyield
12105 bar();
12106 }
12107 #pragma omp task
12108 {
12109 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}
12110 bar();
12111 }
12112 #pragma omp task
12113 {
12114 #pragma omp taskwait
12115 bar();
12116 }
12117 #pragma omp task
12118 {
12119 #pragma omp flush
12120 bar();
12121 }
12122 #pragma omp task
12123 {
12124 #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?}}
12125 bar();
12126 }
12127 #pragma omp task
12128 {
12129 #pragma omp atomic
12130 ++a;
12131 }
12132 #pragma omp task
12133 {
12134 #pragma omp target
12135 ++a;
12136 }
12137 #pragma omp task
12138 {
12139 #pragma omp target parallel
12140 ++a;
12141 }
12142 #pragma omp task
12143 #pragma omp target parallel for
12144 for (int i = 0; i < 10; ++i)
12145 ;
12146 #pragma omp task
12147 {
12148 #pragma omp target enter data map(to: a)
12149 ++a;
12150 }
12151 #pragma omp task
12152 {
12153 #pragma omp target exit data map(from: a)
12154 ++a;
12155 }
12156 #pragma omp task
12157 {
12158 #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?}}
12159 ++a;
12160 }
12161 #pragma omp task
12162 {
12163 #pragma omp taskloop
12164 for (int i = 0; i < 10; ++i)
12165 ++a;
12166 }
12167 #pragma omp task
12168 {
12169 #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?}}
12170 for (int i = 0; i < 10; ++i)
12171 ;
12172 }
12173 #pragma omp task
12174 {
12175 #pragma omp target update to(a)
12176 a++;
12177 }
12178 #pragma omp task
12179 {
12180 #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?}}
12181 for (int i = 0; i < 10; ++i)
12182 ;
12183 }
12184 #pragma omp task
12185 {
12186 #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?}}
12187 for (int i = 0; i < 10; ++i)
12188 ;
12189 }
12190 #pragma omp task
12191 {
12192 #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?}}
12193 for (int i = 0; i < 10; ++i)
12194 ;
12195 }
12196 #pragma omp task
12197 {
12198 #pragma omp target simd // OK
12199 for (int i = 0; i < 10; ++i)
12200 ;
12201 }
12202 #pragma omp task
12203 {
12204 #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?}}
12205 for (int i = 0; i < 10; ++i)
12206 ;
12207 }
12208 #pragma omp task
12209 {
12210 #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?}}
12211 for (int i = 0; i < 10; ++i)
12212 ;
12213 }
12214 #pragma omp task
12215 {
12216 #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?}}
12217 for (int i = 0; i < 10; ++i)
12218 ;
12219 }
12220 #pragma omp task
12221 {
12222 #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?}}
12223 for (int i = 0; i < 10; ++i)
12224 ;
12225 }
12226 #pragma omp task
12227 {
12228 #pragma omp target teams // OK
12229 a++;
12230 }
12231 #pragma omp task
12232 {
12233 #pragma omp target teams distribute // OK
12234 for (int i = 0; i < 10; ++i)
12235 ;
12236 }
12237 #pragma omp task
12238 {
12239 #pragma omp target teams distribute parallel for // OK
12240 for (int i = 0; i < 10; ++i)
12241 ;
12242 }
12243 #pragma omp task
12244 {
12245 #pragma omp target teams distribute parallel for simd // OK
12246 for (int i = 0; i < 10; ++i)
12247 ;
12248 }
12249 #pragma omp task
12250 {
12251 #pragma omp target teams distribute simd // OK
12252 for (int i = 0; i < 10; ++i)
12253 ;
12254 }
12255
12256 // ATOMIC DIRECTIVE
12257 #pragma omp atomic
12258 // 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}}
12259 // expected-note@+1 {{expected an expression statement}}
12260 {
12261 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12262 for (int i = 0; i < 10; ++i)
12263 ;
12264 }
12265 #pragma omp atomic
12266 // 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}}
12267 // expected-note@+1 {{expected an expression statement}}
12268 {
12269 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12270 for (int i = 0; i < 10; ++i)
12271 ;
12272 }
12273 #pragma omp atomic
12274 // 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}}
12275 // expected-note@+1 {{expected an expression statement}}
12276 {
12277 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12278 for (int i = 0; i < 10; ++i)
12279 ;
12280 }
12281 #pragma omp atomic
12282 // 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}}
12283 // expected-note@+1 {{expected an expression statement}}
12284 {
12285 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12286 for (int i = 0; i < 10; ++i)
12287 ;
12288 }
12289 #pragma omp atomic
12290 // 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}}
12291 // expected-note@+1 {{expected an expression statement}}
12292 {
12293 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12294 {
12295 bar();
12296 }
12297 }
12298 #pragma omp atomic
12299 // 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}}
12300 // expected-note@+1 {{expected an expression statement}}
12301 {
12302 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12303 {
12304 bar();
12305 }
12306 }
12307 #pragma omp atomic
12308 // 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}}
12309 // expected-note@+1 {{expected an expression statement}}
12310 {
12311 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12312 {
12313 bar();
12314 }
12315 }
12316 #pragma omp atomic
12317 // 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}}
12318 // expected-note@+1 {{expected an expression statement}}
12319 {
12320 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12321 {
12322 bar();
12323 }
12324 }
12325 #pragma omp atomic
12326 // 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}}
12327 // expected-note@+1 {{expected an expression statement}}
12328 {
12329 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12330 {
12331 bar();
12332 }
12333 }
12334 #pragma omp atomic
12335 // 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}}
12336 // expected-note@+1 {{expected an expression statement}}
12337 {
12338 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12339 for (int i = 0; i < 10; ++i)
12340 ;
12341 }
12342 #pragma omp atomic
12343 // 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}}
12344 // expected-note@+1 {{expected an expression statement}}
12345 {
12346 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12347 for (int i = 0; i < 10; ++i)
12348 ;
12349 }
12350 #pragma omp atomic
12351 // 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}}
12352 // expected-note@+1 {{expected an expression statement}}
12353 {
12354 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12355 {
12356 bar();
12357 }
12358 }
12359 #pragma omp atomic
12360 // 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}}
12361 // expected-note@+1 {{expected an expression statement}}
12362 {
12363 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12364 {
12365 bar();
12366 }
12367 }
12368 #pragma omp atomic
12369 // 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}}
12370 // expected-note@+1 {{expected an expression statement}}
12371 {
12372 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12373 bar();
12374 }
12375 #pragma omp atomic
12376 // 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}}
12377 // expected-note@+1 {{expected an expression statement}}
12378 {
12379 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12380 bar();
12381 }
12382 #pragma omp atomic
12383 // 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}}
12384 // expected-note@+1 {{expected an expression statement}}
12385 {
12386 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12387 bar();
12388 }
12389 #pragma omp atomic
12390 // 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}}
12391 // expected-note@+1 {{expected an expression statement}}
12392 {
12393 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12394 bar();
12395 }
12396 #pragma omp atomic
12397 // 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}}
12398 // expected-note@+1 {{expected an expression statement}}
12399 {
12400 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12401 bar();
12402 }
12403 #pragma omp atomic
12404 // 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}}
12405 // expected-note@+1 {{expected an expression statement}}
12406 {
12407 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12408 ++a;
12409 }
12410 #pragma omp atomic
12411 // 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}}
12412 // expected-note@+1 {{expected an expression statement}}
12413 {
12414 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12415 ++a;
12416 }
12417 #pragma omp atomic
12418 // 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}}
12419 // expected-note@+1 {{expected an expression statement}}
12420 {
12421 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12422 ++a;
12423 }
12424 #pragma omp atomic
12425 // 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}}
12426 // expected-note@+1 {{expected an expression statement}}
12427 {
12428 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12429 for (int i = 0; i < 10; ++i)
12430 ;
12431 }
12432 #pragma omp atomic
12433 // 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}}
12434 // expected-note@+1 {{expected an expression statement}}
12435 {
12436 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12437 ++a;
12438 }
12439 #pragma omp atomic
12440 // 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}}
12441 // expected-note@+1 {{expected an expression statement}}
12442 {
12443 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12444 ++a;
12445 }
12446 #pragma omp atomic
12447 // 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}}
12448 // expected-note@+1 {{expected an expression statement}}
12449 {
12450 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12451 ++a;
12452 }
12453 #pragma omp atomic
12454 // 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}}
12455 // expected-note@+1 {{expected an expression statement}}
12456 {
12457 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12458 for (int i = 0; i < 10; ++i)
12459 ++a;
12460 }
12461 #pragma omp atomic
12462 // 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}}
12463 // expected-note@+1 {{expected an expression statement}}
12464 {
12465 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12466 for (int i = 0; i < 10; ++i)
12467 ;
12468 }
12469 #pragma omp atomic
12470 // 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}}
12471 // expected-note@+1 {{expected an expression statement}}
12472 {
12473 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12474 }
12475 #pragma omp atomic
12476 // 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}}
12477 // expected-note@+1 {{expected an expression statement}}
12478 {
12479 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12480 for (int i = 0; i < 10; ++i)
12481 ;
12482 }
12483 #pragma omp atomic
12484 // 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}}
12485 // expected-note@+1 {{expected an expression statement}}
12486 {
12487 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12488 for (int i = 0; i < 10; ++i)
12489 ;
12490 }
12491 #pragma omp atomic
12492 // 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}}
12493 // expected-note@+1 {{expected an expression statement}}
12494 {
12495 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12496 for (int i = 0; i < 10; ++i)
12497 ;
12498 }
12499 #pragma omp atomic
12500 // 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}}
12501 // expected-note@+1 {{expected an expression statement}}
12502 {
12503 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12504 for (int i = 0; i < 10; ++i)
12505 ;
12506 }
12507 #pragma omp atomic
12508 // 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}}
12509 // expected-note@+1 {{expected an expression statement}}
12510 {
12511 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12512 for (int i = 0; i < 10; ++i)
12513 ;
12514 }
12515 #pragma omp atomic
12516 // 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}}
12517 // expected-note@+1 {{expected an expression statement}}
12518 {
12519 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12520 for (int i = 0; i < 10; ++i)
12521 ;
12522 }
12523 #pragma omp atomic
12524 // 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}}
12525 // expected-note@+1 {{expected an expression statement}}
12526 {
12527 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12528 for (int i = 0; i < 10; ++i)
12529 ;
12530 }
12531 #pragma omp atomic
12532 // 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}}
12533 // expected-note@+1 {{expected an expression statement}}
12534 {
12535 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12536 for (int i = 0; i < 10; ++i)
12537 ;
12538 }
12539 #pragma omp atomic
12540 // 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}}
12541 // expected-note@+1 {{expected an expression statement}}
12542 {
12543 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12544 a++;
12545 }
12546 #pragma omp atomic
12547 // 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}}
12548 // expected-note@+1 {{expected an expression statement}}
12549 {
12550 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12551 for (int i = 0; i < 10; ++i)
12552 ;
12553 }
12554 #pragma omp atomic
12555 // 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}}
12556 // expected-note@+1 {{expected an expression statement}}
12557 {
12558 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12559 for (int i = 0; i < 10; ++i)
12560 ;
12561 }
12562 #pragma omp atomic
12563 // 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}}
12564 // expected-note@+1 {{expected an expression statement}}
12565 {
12566 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12567 for (int i = 0; i < 10; ++i)
12568 ;
12569 }
12570 #pragma omp atomic
12571 // 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}}
12572 // expected-note@+1 {{expected an expression statement}}
12573 {
12574 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12575 for (int i = 0; i < 10; ++i)
12576 ;
12577 }
12578
12579 // TARGET DIRECTIVE
12580 #pragma omp target
12581 #pragma omp parallel
12582 bar();
12583 #pragma omp target
12584 #pragma omp for
12585 for (int i = 0; i < 10; ++i)
12586 ;
12587 #pragma omp target
12588 #pragma omp simd
12589 for (int i = 0; i < 10; ++i)
12590 ;
12591 #pragma omp target
12592 #pragma omp for simd
12593 for (int i = 0; i < 10; ++i)
12594 ;
12595 #pragma omp target
12596 #pragma omp sections
12597 {
12598 bar();
12599 }
12600 #pragma omp target
12601 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}
12602 {
12603 bar();
12604 }
12605 #pragma omp target
12606 #pragma omp single
12607 bar();
12608
12609 #pragma omp target
12610 #pragma omp master
12611 {
12612 bar();
12613 }
12614 #pragma omp target
12615 #pragma omp critical
12616 {
12617 bar();
12618 }
12619 #pragma omp target
12620 #pragma omp parallel for
12621 for (int i = 0; i < 10; ++i)
12622 ;
12623 #pragma omp target
12624 #pragma omp parallel for simd
12625 for (int i = 0; i < 10; ++i)
12626 ;
12627 #pragma omp target
12628 #pragma omp parallel sections
12629 {
12630 bar();
12631 }
12632 #pragma omp target
12633 #pragma omp task
12634 {
12635 bar();
12636 }
12637 #pragma omp target
12638 {
12639 #pragma omp taskyield
12640 bar();
12641 }
12642 #pragma omp target
12643 {
12644 #pragma omp barrier
12645 bar();
12646 }
12647 #pragma omp target
12648 {
12649 #pragma omp taskwait
12650 bar();
12651 }
12652 #pragma omp target
12653 {
12654 #pragma omp flush
12655 bar();
12656 }
12657 #pragma omp target
12658 {
12659 #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?}}
12660 bar();
12661 }
12662 #pragma omp target
12663 {
12664 #pragma omp atomic
12665 ++a;
12666 }
12667 #pragma omp target
12668 {
12669 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
12670 ++a;
12671 }
12672 #pragma omp target
12673 {
12674 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
12675 ++a;
12676 }
12677 #pragma omp target
12678 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
12679 for (int i = 0; i < 10; ++i)
12680 ;
12681 #pragma omp target
12682 {
12683 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
12684 }
12685 #pragma omp target
12686 {
12687 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
12688 }
12689 #pragma omp target
12690 {
12691 #pragma omp teams
12692 ++a;
12693 }
12694 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
12695 {
12696 ++a; // expected-note {{statement outside teams construct here}}
12697 #pragma omp teams // expected-note {{nested teams construct here}}
12698 ++a;
12699 }
12700 #pragma omp target
12701 {
12702 #pragma omp taskloop
12703 for (int i = 0; i < 10; ++i)
12704 ++a;
12705 }
12706 #pragma omp target
12707 {
12708 #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?}}
12709 for (int i = 0; i < 10; ++i)
12710 ;
12711 }
12712 #pragma omp atomic
12713 // 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}}
12714 // expected-note@+1 {{expected an expression statement}}
12715 {
12716 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12717 a++;
12718 }
12719 #pragma omp target
12720 {
12721 #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?}}
12722 for (int i = 0; i < 10; ++i)
12723 ;
12724 }
12725 #pragma omp target
12726 {
12727 #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?}}
12728 for (int i = 0; i < 10; ++i)
12729 ;
12730 }
12731 #pragma omp target
12732 {
12733 #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?}}
12734 for (int i = 0; i < 10; ++i)
12735 ;
12736 }
12737 #pragma omp target
12738 {
12739 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
12740 for (int i = 0; i < 10; ++i)
12741 ;
12742 }
12743 #pragma omp target
12744 {
12745 #pragma omp teams distribute // OK
12746 for (int i = 0; i < 10; ++i)
12747 ;
12748 }
12749 #pragma omp target
12750 {
12751 #pragma omp teams distribute simd // OK
12752 for (int i = 0; i < 10; ++i)
12753 ;
12754 }
12755 #pragma omp target
12756 {
12757 #pragma omp teams distribute parallel for simd // OK
12758 for (int i = 0; i < 10; ++i)
12759 ;
12760 }
12761 #pragma omp target
12762 {
12763 #pragma omp teams distribute parallel for // OK
12764 for (int i = 0; i < 10; ++i)
12765 ;
12766 }
12767 #pragma omp target
12768 {
12769 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
12770 a++;
12771 }
12772 #pragma omp target
12773 {
12774 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
12775 for (int i = 0; i < 10; ++i)
12776 ;
12777 }
12778 #pragma omp target
12779 {
12780 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
12781 for (int i = 0; i < 10; ++i)
12782 ;
12783 }
12784 #pragma omp target
12785 {
12786 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
12787 for (int i = 0; i < 10; ++i)
12788 ;
12789 }
12790 #pragma omp target
12791 {
12792 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
12793 for (int i = 0; i < 10; ++i)
12794 ;
12795 }
12796
12797 // TARGET PARALLEL DIRECTIVE
12798 #pragma omp target parallel
12799 #pragma omp parallel
12800 bar();
12801 #pragma omp target parallel
12802 #pragma omp for
12803 for (int i = 0; i < 10; ++i)
12804 ;
12805 #pragma omp target parallel
12806 #pragma omp simd
12807 for (int i = 0; i < 10; ++i)
12808 ;
12809 #pragma omp target parallel
12810 #pragma omp for simd
12811 for (int i = 0; i < 10; ++i)
12812 ;
12813 #pragma omp target parallel
12814 #pragma omp sections
12815 {
12816 bar();
12817 }
12818 #pragma omp target parallel
12819 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
12820 {
12821 bar();
12822 }
12823 #pragma omp target parallel
12824 #pragma omp single
12825 bar();
12826
12827 #pragma omp target parallel
12828 #pragma omp master
12829 {
12830 bar();
12831 }
12832 #pragma omp target parallel
12833 #pragma omp critical
12834 {
12835 bar();
12836 }
12837 #pragma omp target parallel
12838 #pragma omp parallel for
12839 for (int i = 0; i < 10; ++i)
12840 ;
12841 #pragma omp target parallel
12842 #pragma omp parallel for simd
12843 for (int i = 0; i < 10; ++i)
12844 ;
12845 #pragma omp target parallel
12846 #pragma omp parallel sections
12847 {
12848 bar();
12849 }
12850 #pragma omp target parallel
12851 #pragma omp task
12852 {
12853 bar();
12854 }
12855 #pragma omp target parallel
12856 {
12857 #pragma omp taskyield
12858 bar();
12859 }
12860 #pragma omp target parallel
12861 {
12862 #pragma omp barrier
12863 bar();
12864 }
12865 #pragma omp target parallel
12866 {
12867 #pragma omp taskwait
12868 bar();
12869 }
12870 #pragma omp target parallel
12871 {
12872 #pragma omp flush
12873 bar();
12874 }
12875 #pragma omp target parallel
12876 {
12877 #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?}}
12878 bar();
12879 }
12880 #pragma omp target parallel
12881 {
12882 #pragma omp atomic
12883 ++a;
12884 }
12885 #pragma omp target parallel
12886 {
12887 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}
12888 ++a;
12889 }
12890 #pragma omp target parallel
12891 {
12892 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}
12893 ++a;
12894 }
12895 #pragma omp target parallel
12896 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
12897 for (int i = 0; i < 10; ++i)
12898 ;
12899 #pragma omp target parallel
12900 {
12901 #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?}}
12902 ++a;
12903 }
12904 #pragma omp target parallel
12905 {
12906 ++a;
12907 #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?}}
12908 ++a;
12909 }
12910 #pragma omp target parallel
12911 {
12912 #pragma omp taskloop
12913 for (int i = 0; i < 10; ++i)
12914 ++a;
12915 }
12916 #pragma omp target parallel
12917 {
12918 #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?}}
12919 for (int i = 0; i < 10; ++i)
12920 ;
12921 }
12922 #pragma omp target parallel
12923 {
12924 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
12925 }
12926 #pragma omp target parallel
12927 {
12928 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
12929 }
12930 #pragma omp target parallel
12931 {
12932 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}
12933 }
12934 #pragma omp target parallel
12935 {
12936 #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?}}
12937 for (int i = 0; i < 10; ++i)
12938 ;
12939 }
12940 #pragma omp target parallel
12941 {
12942 #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?}}
12943 for (int i = 0; i < 10; ++i)
12944 ;
12945 }
12946 #pragma omp target parallel
12947 {
12948 #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?}}
12949 for (int i = 0; i < 10; ++i)
12950 ;
12951 }
12952 #pragma omp target parallel
12953 {
12954 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}}
12955 for (int i = 0; i < 10; ++i)
12956 ;
12957 }
12958 #pragma omp target parallel
12959 {
12960 #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?}}
12961 for (int i = 0; i < 10; ++i)
12962 ;
12963 }
12964 #pragma omp target parallel
12965 {
12966 #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?}}
12967 for (int i = 0; i < 10; ++i)
12968 ;
12969 }
12970 #pragma omp target parallel
12971 {
12972 #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?}}
12973 for (int i = 0; i < 10; ++i)
12974 ;
12975 }
12976 #pragma omp target parallel
12977 {
12978 #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?}}
12979 for (int i = 0; i < 10; ++i)
12980 ;
12981 }
12982 #pragma omp target parallel
12983 {
12984 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}
12985 a++;
12986 }
12987 #pragma omp target parallel
12988 {
12989 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}
12990 for (int i = 0; i < 10; ++i)
12991 ;
12992 }
12993 #pragma omp target parallel
12994 {
12995 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
12996 for (int i = 0; i < 10; ++i)
12997 ;
12998 }
12999 #pragma omp target parallel
13000 {
13001 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}
13002 for (int i = 0; i < 10; ++i)
13003 ;
13004 }
13005 #pragma omp target parallel
13006 {
13007 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}
13008 for (int i = 0; i < 10; ++i)
13009 ;
13010 }
13011
13012 // TARGET PARALLEL FOR DIRECTIVE
13013 #pragma omp target parallel for
13014 for (int i = 0; i < 10; ++i) {
13015 #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?}}
13016 for (int i = 0; i < 10; ++i)
13017 ;
13018 }
13019 #pragma omp target parallel for
13020 for (int i = 0; i < 10; ++i) {
13021 #pragma omp simd
13022 for (int i = 0; i < 10; ++i)
13023 ;
13024 }
13025 #pragma omp target parallel for
13026 for (int i = 0; i < 10; ++i) {
13027 #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?}}
13028 for (int i = 0; i < 10; ++i)
13029 ;
13030 }
13031 #pragma omp target parallel for
13032 for (int i = 0; i < 10; ++i) {
13033 #pragma omp parallel
13034 for (int i = 0; i < 10; ++i)
13035 ;
13036 }
13037 #pragma omp target parallel for
13038 for (int i = 0; i < 10; ++i) {
13039 #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?}}
13040 {
13041 bar();
13042 }
13043 }
13044 #pragma omp target parallel for
13045 for (int i = 0; i < 10; ++i) {
13046 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}
13047 {
13048 bar();
13049 }
13050 }
13051 #pragma omp target parallel for
13052 for (int i = 0; i < 10; ++i) {
13053 #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?}}
13054 {
13055 bar();
13056 }
13057 }
13058
13059 #pragma omp target parallel for
13060 for (int i = 0; i < 10; ++i) {
13061 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13062 {
13063 bar();
13064 }
13065 }
13066
13067 #pragma omp target parallel for
13068 for (int i = 0; i < 10; ++i) {
13069 #pragma omp critical
13070 {
13071 bar();
13072 }
13073 }
13074
13075 #pragma omp target parallel for
13076 for (int i = 0; i < 10; ++i) {
13077 #pragma omp parallel
13078 {
13079 #pragma omp single // OK
13080 {
13081 bar();
13082 }
13083 #pragma omp for // OK
13084 for (int i = 0; i < 10; ++i)
13085 ;
13086 #pragma omp for simd // OK
13087 for (int i = 0; i < 10; ++i)
13088 ;
13089 #pragma omp sections // OK
13090 {
13091 bar();
13092 }
13093 }
13094 }
13095 #pragma omp target parallel for
13096 for (int i = 0; i < 10; ++i) {
13097 #pragma omp parallel for
13098 for (int i = 0; i < 10; ++i)
13099 ;
13100 }
13101 #pragma omp target parallel for
13102 for (int i = 0; i < 10; ++i) {
13103 #pragma omp parallel for simd
13104 for (int i = 0; i < 10; ++i)
13105 ;
13106 }
13107 #pragma omp target parallel for
13108 for (int i = 0; i < 10; ++i) {
13109 #pragma omp parallel sections
13110 {
13111 bar();
13112 }
13113 }
13114 #pragma omp target parallel for
13115 for (int i = 0; i < 10; ++i) {
13116 #pragma omp task
13117 {
13118 bar();
13119 }
13120 }
13121 #pragma omp target parallel for
13122 for (int i = 0; i < 10; ++i) {
13123 #pragma omp taskyield
13124 bar();
13125 }
13126 #pragma omp target parallel for
13127 for (int i = 0; i < 10; ++i) {
13128 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13129 bar();
13130 }
13131 #pragma omp target parallel for
13132 for (int i = 0; i < 10; ++i) {
13133 #pragma omp taskwait
13134 bar();
13135 }
13136 #pragma omp target parallel for
13137 for (int i = 0; i < 10; ++i) {
13138 #pragma omp flush
13139 bar();
13140 }
13141 #pragma omp target parallel for
13142 for (int i = 0; i < 10; ++i) {
13143 #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?}}
13144 bar();
13145 }
13146 #pragma omp target parallel for ordered
13147 for (int i = 0; i < 10; ++i) {
13148 #pragma omp ordered // OK
13149 bar();
13150 }
13151 #pragma omp target parallel for
13152 for (int i = 0; i < 10; ++i) {
13153 #pragma omp atomic
13154 ++a;
13155 }
13156 #pragma omp target parallel for
13157 for (int i = 0; i < 10; ++i) {
13158 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}
13159 ++a;
13160 }
13161 #pragma omp target parallel for
13162 for (int i = 0; i < 10; ++i) {
13163 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}
13164 ++a;
13165 }
13166 #pragma omp target parallel for
13167 for (int i = 0; i < 10; ++i) {
13168 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
13169 for (int i = 0; i < 10; ++i)
13170 ;
13171 }
13172 #pragma omp target parallel for
13173 for (int i = 0; i < 10; ++i) {
13174 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13175 ++a;
13176 }
13177 #pragma omp target parallel for
13178 for (int i = 0; i < 10; ++i) {
13179 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13180 ++a;
13181 }
13182 #pragma omp target parallel for
13183 for (int i = 0; i < 10; ++i) {
13184 #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?}}
13185 ++a;
13186 }
13187 #pragma omp target parallel for
13188 for (int i = 0; i < 10; ++i) {
13189 #pragma omp taskloop
13190 for (int i = 0; i < 10; ++i)
13191 ++a;
13192 }
13193 #pragma omp target parallel for
13194 for (int i = 0; i < 10; ++i) {
13195 #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?}}
13196 for (int j = 0; j < 10; ++j)
13197 ;
13198 }
13199 #pragma omp target parallel for
13200 for (int i = 0; i < 10; ++i) {
13201 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13202 a++;
13203 }
13204 #pragma omp target parallel for
13205 for (int i = 0; i < 10; ++i) {
13206 #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?}}
13207 for (int j = 0; j < 10; ++j)
13208 ;
13209 }
13210 #pragma omp target parallel for
13211 for (int i = 0; i < 10; ++i) {
13212 #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?}}
13213 for (int j = 0; j < 10; ++j)
13214 ;
13215 }
13216 #pragma omp target parallel for
13217 for (int i = 0; i < 10; ++i) {
13218 #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?}}
13219 for (int j = 0; j < 10; ++j)
13220 ;
13221 }
13222 #pragma omp target parallel for
13223 for (int i = 0; i < 10; ++i) {
13224 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13225 for (int j = 0; j < 10; ++j)
13226 ;
13227 }
13228 #pragma omp target parallel for
13229 for (int i = 0; i < 10; ++i) {
13230 #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?}}
13231 for (int j = 0; j < 10; ++j)
13232 ;
13233 }
13234 #pragma omp target parallel for
13235 for (int i = 0; i < 10; ++i) {
13236 #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?}}
13237 for (int j = 0; j < 10; ++j)
13238 ;
13239 }
13240 #pragma omp target parallel for
13241 for (int i = 0; i < 10; ++i) {
13242 #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?}}
13243 for (int j = 0; j < 10; ++j)
13244 ;
13245 }
13246 #pragma omp target parallel for
13247 for (int i = 0; i < 10; ++i) {
13248 #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?}}
13249 for (int j = 0; j < 10; ++j)
13250 ;
13251 }
13252 #pragma omp target parallel for
13253 for (int i = 0; i < 10; ++i) {
13254 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}
13255 a++;
13256 }
13257 #pragma omp target parallel for
13258 for (int i = 0; i < 10; ++i) {
13259 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}
13260 for (int j = 0; j < 10; ++j)
13261 ;
13262 }
13263 #pragma omp target parallel for
13264 for (int i = 0; i < 10; ++i) {
13265 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
13266 for (int j = 0; j < 10; ++j)
13267 ;
13268 }
13269 #pragma omp target parallel for
13270 for (int i = 0; i < 10; ++i) {
13271 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13272 for (int j = 0; j < 10; ++j)
13273 ;
13274 }
13275 #pragma omp target parallel for
13276 for (int i = 0; i < 10; ++i) {
13277 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13278 for (int j = 0; j < 10; ++j)
13279 ;
13280 }
13281
13282 // TEAMS DIRECTIVE
13283 #pragma omp target
13284 #pragma omp teams
13285 #pragma omp parallel
13286 bar();
13287 #pragma omp target
13288 #pragma omp teams
13289 #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?}}
13290 for (int i = 0; i < 10; ++i)
13291 ;
13292 #pragma omp target
13293 #pragma omp teams
13294 #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?}}
13295 for (int i = 0; i < 10; ++i)
13296 ;
13297 #pragma omp target
13298 #pragma omp teams
13299 #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?}}
13300 for (int i = 0; i < 10; ++i)
13301 ;
13302 #pragma omp target
13303 #pragma omp teams
13304 #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?}}
13305 {
13306 bar();
13307 }
13308 #pragma omp target
13309 #pragma omp teams
13310 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}
13311 {
13312 bar();
13313 }
13314 #pragma omp target
13315 #pragma omp teams
13316 #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?}}
13317 bar();
13318
13319 #pragma omp target
13320 #pragma omp teams
13321 #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?}}
13322 {
13323 bar();
13324 }
13325 #pragma omp target
13326 #pragma omp teams
13327 #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?}}
13328 {
13329 bar();
13330 }
13331 #pragma omp target
13332 #pragma omp teams
13333 #pragma omp parallel for
13334 for (int i = 0; i < 10; ++i)
13335 ;
13336 #pragma omp target
13337 #pragma omp teams
13338 #pragma omp parallel for simd
13339 for (int i = 0; i < 10; ++i)
13340 ;
13341 #pragma omp target
13342 #pragma omp teams
13343 #pragma omp parallel sections
13344 {
13345 bar();
13346 }
13347 #pragma omp target
13348 #pragma omp teams
13349 #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?}}
13350 {
13351 bar();
13352 }
13353 #pragma omp target
13354 #pragma omp teams
13355 {
13356 #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?}}
13357 bar();
13358 }
13359 #pragma omp target
13360 #pragma omp teams
13361 {
13362 #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?}}
13363 bar();
13364 }
13365 #pragma omp target
13366 #pragma omp teams
13367 {
13368 #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?}}
13369 bar();
13370 }
13371 #pragma omp target
13372 #pragma omp teams
13373 {
13374 #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?}}
13375 bar();
13376 }
13377 #pragma omp target
13378 #pragma omp teams
13379 {
13380 #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?}}
13381 bar();
13382 }
13383 #pragma omp target
13384 #pragma omp teams
13385 {
13386 #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?}}
13387 ++a;
13388 }
13389 #pragma omp target
13390 #pragma omp teams
13391 {
13392 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
13393 ++a;
13394 }
13395 #pragma omp target
13396 #pragma omp teams
13397 {
13398 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
13399 ++a;
13400 }
13401 #pragma omp target
13402 #pragma omp teams
13403 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
13404 for (int i = 0; i < 10; ++i)
13405 ;
13406 #pragma omp target
13407 #pragma omp teams
13408 {
13409 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
13410 }
13411 #pragma omp target
13412 #pragma omp teams
13413 {
13414 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
13415 }
13416 #pragma omp target
13417 #pragma omp teams
13418 {
13419 #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?}}
13420 ++a;
13421 }
13422 #pragma omp target
13423 #pragma omp teams
13424 {
13425 #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?}}
13426 for (int i = 0; i < 10; ++i)
13427 ++a;
13428 }
13429 #pragma omp target
13430 #pragma omp teams
13431 #pragma omp distribute
13432 for (int i = 0; i < 10; ++i)
13433 ;
13434 #pragma omp target
13435 #pragma omp teams
13436 #pragma omp distribute
13437 for (int i = 0; i < 10; ++i)
13438 ;
13439 #pragma omp distribute
13440 for (int j = 0; j < 10; ++j)
13441 ;
13442 #pragma omp target
13443 #pragma omp teams
13444 {
13445 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
13446 ++a;
13447 }
13448 #pragma omp target
13449 #pragma omp teams
13450 #pragma omp distribute parallel for
13451 for (int i = 0; i < 10; ++i)
13452 ;
13453 #pragma omp target
13454 #pragma omp teams
13455 {
13456 #pragma omp distribute parallel for
13457 for (int i = 0; i < 10; ++i)
13458 ;
13459 #pragma omp distribute parallel for
13460 for (int j = 0; j < 10; ++j)
13461 ;
13462 }
13463 #pragma omp target
13464 #pragma omp teams
13465 {
13466 #pragma omp distribute parallel for simd
13467 for (int i = 0; i < 10; ++i)
13468 ;
13469 #pragma omp distribute parallel for simd
13470 for (int j = 0; j < 10; ++j)
13471 ;
13472 }
13473 #pragma omp target
13474 #pragma omp teams
13475 {
13476 #pragma omp distribute simd
13477 for (int i = 0; i < 10; ++i)
13478 ;
13479 #pragma omp distribute simd
13480 for (int j = 0; j < 10; ++j)
13481 ;
13482 }
13483 #pragma omp target
13484 #pragma omp teams
13485 {
13486 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
13487 for (int i = 0; i < 10; ++i)
13488 ;
13489 }
13490 #pragma omp target
13491 #pragma omp teams
13492 {
13493 #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?}}
13494 for (int i = 0; i < 10; ++i)
13495 ;
13496 }
13497 #pragma omp target
13498 #pragma omp teams
13499 {
13500 #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?}}
13501 for (int i = 0; i < 10; ++i)
13502 ;
13503 }
13504 #pragma omp target
13505 #pragma omp teams
13506 {
13507 #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?}}
13508 for (int i = 0; i < 10; ++i)
13509 ;
13510 }
13511 #pragma omp target
13512 #pragma omp teams
13513 {
13514 #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?}}
13515 for (int i = 0; i < 10; ++i)
13516 ;
13517 }
13518 #pragma omp target
13519 #pragma omp teams
13520 {
13521 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
13522 a++;
13523 }
13524 #pragma omp target
13525 #pragma omp teams
13526 {
13527 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
13528 for (int i = 0; i < 10; ++i)
13529 ;
13530 }
13531 #pragma omp target
13532 #pragma omp teams
13533 {
13534 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
13535 for (int i = 0; i < 10; ++i)
13536 ;
13537 }
13538 #pragma omp target
13539 #pragma omp teams
13540 {
13541 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
13542 for (int i = 0; i < 10; ++i)
13543 ;
13544 }
13545 #pragma omp target
13546 #pragma omp teams
13547 {
13548 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
13549 for (int i = 0; i < 10; ++i)
13550 ;
13551 }
13552
13553 // TASKLOOP DIRECTIVE
13554 #pragma omp taskloop
13555 for (int i = 0; i < 10; ++i) {
13556 #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?}}
13557 for (int i = 0; i < 10; ++i)
13558 ;
13559 }
13560 #pragma omp taskloop
13561 for (int i = 0; i < 10; ++i) {
13562 #pragma omp simd
13563 for (int i = 0; i < 10; ++i)
13564 ;
13565 }
13566 #pragma omp taskloop
13567 for (int i = 0; i < 10; ++i) {
13568 #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?}}
13569 for (int i = 0; i < 10; ++i)
13570 ;
13571 }
13572 #pragma omp taskloop
13573 for (int i = 0; i < 10; ++i) {
13574 #pragma omp parallel
13575 for (int i = 0; i < 10; ++i)
13576 ;
13577 }
13578 #pragma omp taskloop
13579 for (int i = 0; i < 10; ++i) {
13580 #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?}}
13581 {
13582 bar();
13583 }
13584 }
13585 #pragma omp taskloop
13586 for (int i = 0; i < 10; ++i) {
13587 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}
13588 {
13589 bar();
13590 }
13591 }
13592 #pragma omp taskloop
13593 for (int i = 0; i < 10; ++i) {
13594 #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?}}
13595 {
13596 bar();
13597 }
13598 }
13599
13600 #pragma omp taskloop
13601 for (int i = 0; i < 10; ++i) {
13602 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}
13603 {
13604 bar();
13605 }
13606 }
13607 #pragma omp taskloop
13608 for (int i = 0; i < 10; ++i) {
13609 #pragma omp critical
13610 {
13611 bar();
13612 }
13613 }
13614 #pragma omp taskloop
13615 for (int i = 0; i < 10; ++i) {
13616 #pragma omp parallel
13617 {
13618 #pragma omp single // OK
13619 {
13620 bar();
13621 }
13622 #pragma omp for // OK
13623 for (int i = 0; i < 10; ++i)
13624 ;
13625 #pragma omp sections // OK
13626 {
13627 bar();
13628 }
13629 }
13630 }
13631 #pragma omp taskloop
13632 for (int i = 0; i < 10; ++i) {
13633 #pragma omp parallel for
13634 for (int i = 0; i < 10; ++i)
13635 ;
13636 }
13637 #pragma omp taskloop
13638 for (int i = 0; i < 10; ++i) {
13639 #pragma omp parallel for simd
13640 for (int i = 0; i < 10; ++i)
13641 ;
13642 }
13643 #pragma omp taskloop
13644 for (int i = 0; i < 10; ++i) {
13645 #pragma omp parallel sections
13646 {
13647 bar();
13648 }
13649 }
13650 #pragma omp taskloop
13651 for (int i = 0; i < 10; ++i) {
13652 #pragma omp task
13653 {
13654 bar();
13655 }
13656 }
13657 #pragma omp taskloop
13658 for (int i = 0; i < 10; ++i) {
13659 #pragma omp taskyield
13660 bar();
13661 }
13662 #pragma omp taskloop
13663 for (int i = 0; i < 10; ++i) {
13664 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}
13665 bar();
13666 }
13667 #pragma omp taskloop
13668 for (int i = 0; i < 10; ++i) {
13669 #pragma omp taskwait
13670 bar();
13671 }
13672 #pragma omp taskloop
13673 for (int i = 0; i < 10; ++i) {
13674 #pragma omp flush
13675 bar();
13676 }
13677 #pragma omp taskloop
13678 for (int i = 0; i < 10; ++i) {
13679 #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?}}
13680 bar();
13681 }
13682 #pragma omp taskloop
13683 for (int i = 0; i < 10; ++i) {
13684 #pragma omp atomic
13685 ++a;
13686 }
13687 #pragma omp taskloop
13688 for (int i = 0; i < 10; ++i) {
13689 #pragma omp target
13690 ++a;
13691 }
13692 #pragma omp taskloop
13693 for (int i = 0; i < 10; ++i) {
13694 #pragma omp target parallel
13695 ++a;
13696 }
13697 #pragma omp taskloop
13698 for (int i = 0; i < 10; ++i) {
13699 #pragma omp target parallel for
13700 for (int i = 0; i < 10; ++i)
13701 ;
13702 }
13703 #pragma omp taskloop
13704 for (int i = 0; i < 10; ++i) {
13705 #pragma omp target enter data map(to: a)
13706 ++a;
13707 }
13708 #pragma omp taskloop
13709 for (int i = 0; i < 10; ++i) {
13710 #pragma omp target exit data map(from: a)
13711 ++a;
13712 }
13713 #pragma omp taskloop
13714 for (int i = 0; i < 10; ++i) {
13715 #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?}}
13716 ++a;
13717 }
13718 #pragma omp taskloop
13719 for (int i = 0; i < 10; ++i) {
13720 #pragma omp taskloop
13721 for (int i = 0; i < 10; ++i)
13722 ++a;
13723 }
13724 #pragma omp taskloop
13725 for (int i = 0; i < 10; ++i) {
13726 #pragma omp target update to(a)
13727 ++a;
13728 }
13729 #pragma omp taskloop
13730 for (int i = 0; i < 10; ++i) {
13731 #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?}}
13732 for (int i = 0; i < 10; ++i)
13733 ;
13734 }
13735 #pragma omp taskloop
13736 for (int i = 0; i < 10; ++i) {
13737 #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?}}
13738 for (int i = 0; i < 10; ++i)
13739 ;
13740 }
13741 #pragma omp taskloop
13742 for (int i = 0; i < 10; ++i) {
13743 #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?}}
13744 for (int i = 0; i < 10; ++i)
13745 ;
13746 }
13747 #pragma omp taskloop
13748 for (int i = 0; i < 10; ++i) {
13749 #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?}}
13750 for (int i = 0; i < 10; ++i)
13751 ;
13752 }
13753 #pragma omp taskloop
13754 for (int i = 0; i < 10; ++i) {
13755 #pragma omp target simd // OK
13756 for (int i = 0; i < 10; ++i)
13757 ;
13758 }
13759 #pragma omp taskloop
13760 for (int i = 0; i < 10; ++i) {
13761 #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?}}
13762 for (int i = 0; i < 10; ++i)
13763 ;
13764 }
13765 #pragma omp taskloop
13766 for (int i = 0; i < 10; ++i) {
13767 #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?}}
13768 for (int i = 0; i < 10; ++i)
13769 ;
13770 }
13771 #pragma omp taskloop
13772 for (int i = 0; i < 10; ++i) {
13773 #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?}}
13774 for (int i = 0; i < 10; ++i)
13775 ;
13776 }
13777 #pragma omp taskloop
13778 for (int i = 0; i < 10; ++i) {
13779 #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?}}
13780 for (int i = 0; i < 10; ++i)
13781 ;
13782 }
13783 #pragma omp taskloop
13784 for (int i = 0; i < 10; ++i) {
13785 #pragma omp target teams // OK
13786 a++;
13787 }
13788 #pragma omp taskloop
13789 for (int i = 0; i < 10; ++i) {
13790 #pragma omp target teams distribute // OK
13791 for (int i = 0; i < 10; ++i)
13792 ;
13793 }
13794 #pragma omp taskloop
13795 for (int i = 0; i < 10; ++i) {
13796 #pragma omp target teams distribute parallel for // OK
13797 for (int i = 0; i < 10; ++i)
13798 ;
13799 }
13800 #pragma omp taskloop
13801 for (int i = 0; i < 10; ++i) {
13802 #pragma omp target teams distribute parallel for simd // OK
13803 for (int i = 0; i < 10; ++i)
13804 ;
13805 }
13806 #pragma omp taskloop
13807 for (int i = 0; i < 10; ++i) {
13808 #pragma omp target teams distribute simd // OK
13809 for (int i = 0; i < 10; ++i)
13810 ;
13811 }
13812
13813 // DISTRIBUTE DIRECTIVE
13814 #pragma omp target
13815 #pragma omp teams
13816 #pragma omp distribute
13817 for (int i = 0; i < 10; ++i) {
13818 #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?}}
13819 for (int i = 0; i < 10; ++i)
13820 ;
13821 }
13822 #pragma omp target
13823 #pragma omp teams
13824 #pragma omp distribute
13825 for (int i = 0; i < 10; ++i) {
13826 #pragma omp for
13827 for (int i = 0; i < 10; ++i)
13828 ;
13829 }
13830 #pragma omp target
13831 #pragma omp teams
13832 #pragma omp distribute
13833 for (int i = 0; i < 10; ++i) {
13834 #pragma omp simd
13835 for (int i = 0; i < 10; ++i)
13836 ;
13837 }
13838 #pragma omp target
13839 #pragma omp teams
13840 #pragma omp distribute
13841 for (int i = 0; i < 10; ++i) {
13842 #pragma omp for simd
13843 for (int i = 0; i < 10; ++i)
13844 ;
13845 }
13846 #pragma omp target
13847 #pragma omp teams
13848 #pragma omp distribute
13849 for (int i = 0; i < 10; ++i) {
13850 #pragma omp parallel
13851 for (int i = 0; i < 10; ++i)
13852 ;
13853 }
13854 #pragma omp target
13855 #pragma omp teams
13856 #pragma omp distribute
13857 for (int i = 0; i < 10; ++i) {
13858 #pragma omp sections
13859 {
13860 bar();
13861 }
13862 }
13863 #pragma omp target
13864 #pragma omp teams
13865 #pragma omp distribute
13866 for (int i = 0; i < 10; ++i) {
13867 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}
13868 {
13869 bar();
13870 }
13871 }
13872 #pragma omp target
13873 #pragma omp teams
13874 #pragma omp distribute
13875 for (int i = 0; i < 10; ++i) {
13876 #pragma omp single
13877 {
13878 bar();
13879 }
13880 }
13881 #pragma omp target
13882 #pragma omp teams
13883 #pragma omp distribute
13884 for (int i = 0; i < 10; ++i) {
13885 #pragma omp master
13886 {
13887 bar();
13888 }
13889 }
13890 #pragma omp target
13891 #pragma omp teams
13892 #pragma omp distribute
13893 for (int i = 0; i < 10; ++i) {
13894 #pragma omp critical
13895 {
13896 bar();
13897 }
13898 }
13899 #pragma omp target
13900 #pragma omp teams
13901 #pragma omp distribute
13902 for (int i = 0; i < 10; ++i) {
13903 #pragma omp parallel
13904 {
13905 #pragma omp single
13906 {
13907 bar();
13908 }
13909 }
13910 }
13911 #pragma omp target
13912 #pragma omp teams
13913 #pragma omp distribute
13914 for (int i = 0; i < 10; ++i) {
13915 #pragma omp parallel for
13916 for (int i = 0; i < 10; ++i)
13917 ;
13918 }
13919 #pragma omp target
13920 #pragma omp teams
13921 #pragma omp distribute
13922 for (int i = 0; i < 10; ++i) {
13923 #pragma omp parallel for simd
13924 for (int i = 0; i < 10; ++i)
13925 ;
13926 }
13927 #pragma omp target
13928 #pragma omp teams
13929 #pragma omp distribute
13930 for (int i = 0; i < 10; ++i) {
13931 #pragma omp parallel sections
13932 {
13933 bar();
13934 }
13935 }
13936 #pragma omp target
13937 #pragma omp teams
13938 #pragma omp distribute
13939 for (int i = 0; i < 10; ++i) {
13940 #pragma omp task
13941 {
13942 bar();
13943 }
13944 }
13945 #pragma omp target
13946 #pragma omp teams
13947 #pragma omp distribute
13948 for (int i = 0; i < 10; ++i) {
13949 #pragma omp taskyield
13950 bar();
13951 }
13952 #pragma omp target
13953 #pragma omp teams
13954 #pragma omp distribute
13955 for (int i = 0; i < 10; ++i) {
13956 #pragma omp barrier
13957 bar();
13958 }
13959 #pragma omp target
13960 #pragma omp teams
13961 #pragma omp distribute
13962 for (int i = 0; i < 10; ++i) {
13963 #pragma omp taskwait
13964 bar();
13965 }
13966 #pragma omp target
13967 #pragma omp teams
13968 #pragma omp distribute
13969 for (int i = 0; i < 10; ++i) {
13970 #pragma omp flush
13971 bar();
13972 }
13973 #pragma omp target
13974 #pragma omp teams
13975 #pragma omp distribute
13976 for (int i = 0; i < 10; ++i) {
13977 #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?}}
13978 bar();
13979 }
13980 #pragma omp target
13981 #pragma omp teams
13982 #pragma omp distribute
13983 for (int i = 0; i < 10; ++i) {
13984 #pragma omp atomic
13985 ++a;
13986 }
13987 #pragma omp target
13988 #pragma omp teams
13989 #pragma omp distribute
13990 for (int i = 0; i < 10; ++i) {
13991 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
13992 ++a;
13993 }
13994 #pragma omp target
13995 #pragma omp teams
13996 #pragma omp distribute
13997 for (int i = 0; i < 10; ++i) {
13998 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
13999 ++a;
14000 }
14001 #pragma omp target
14002 #pragma omp teams
14003 #pragma omp distribute
14004 for (int i = 0; i < 10; ++i) {
14005 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14006 for (int i = 0; i < 10; ++i)
14007 ;
14008 }
14009 #pragma omp target
14010 #pragma omp teams
14011 #pragma omp distribute
14012 for (int i = 0; i < 10; ++i) {
14013 #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?}}
14014 ++a;
14015 }
14016 #pragma omp target
14017 #pragma omp teams
14018 #pragma omp distribute
14019 for (int i = 0; i < 10; ++i) {
14020 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
14021 ++a;
14022 }
14023 #pragma omp target
14024 #pragma omp teams
14025 #pragma omp distribute
14026 for (int i = 0; i < 10; ++i) {
14027 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
14028 ++a;
14029 }
14030 #pragma omp target
14031 #pragma omp teams
14032 #pragma omp distribute
14033 for (int i = 0; i < 10; ++i) {
14034 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
14035 ++a;
14036 }
14037 #pragma omp target
14038 #pragma omp teams
14039 #pragma omp distribute
14040 for (int i = 0; i < 10; ++i) {
14041 #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?}}
14042 for (int i = 0; i < 10; ++i)
14043 ++a;
14044 }
14045 #pragma omp target
14046 #pragma omp teams
14047 #pragma omp distribute
14048 for (int i = 0; i < 10; ++i) {
14049 #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?}}
14050 for (int i = 0; i < 10; ++i)
14051 ++a;
14052 }
14053 #pragma omp target
14054 #pragma omp teams
14055 #pragma omp distribute
14056 for (int i = 0; i < 10; ++i) {
14057 #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?}}
14058 for (int i = 0; i < 10; ++i)
14059 ++a;
14060 }
14061 #pragma omp target
14062 #pragma omp teams
14063 #pragma omp distribute
14064 for (int i = 0; i < 10; ++i) {
14065 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
14066 for (int i = 0; i < 10; ++i)
14067 ++a;
14068 }
14069 #pragma omp target
14070 #pragma omp teams
14071 #pragma omp distribute
14072 for (int i = 0; i < 10; ++i) {
14073 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14074 for (int i = 0; i < 10; ++i)
14075 ++a;
14076 }
14077 #pragma omp target
14078 #pragma omp teams
14079 #pragma omp distribute
14080 for (int i = 0; i < 10; ++i) {
14081 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14082 for (int i = 0; i < 10; ++i)
14083 ++a;
14084 }
14085 #pragma omp target
14086 #pragma omp teams
14087 #pragma omp distribute
14088 for (int i = 0; i < 10; ++i) {
14089 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
14090 for (int i = 0; i < 10; ++i)
14091 ++a;
14092 }
14093 #pragma omp target
14094 #pragma omp teams
14095 #pragma omp distribute
14096 for (int i = 0; i < 10; ++i) {
14097 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
14098 for (int i = 0; i < 10; ++i)
14099 ++a;
14100 }
14101 #pragma omp target
14102 #pragma omp teams
14103 #pragma omp distribute
14104 for (int i = 0; i < 10; ++i) {
14105 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
14106 for (int i = 0; i < 10; ++i)
14107 ++a;
14108 }
14109 #pragma omp target
14110 #pragma omp teams
14111 #pragma omp distribute
14112 for (int i = 0; i < 10; ++i) {
14113 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14114 for (int i = 0; i < 10; ++i)
14115 ++a;
14116 }
14117 #pragma omp target
14118 #pragma omp teams
14119 #pragma omp distribute
14120 for (int i = 0; i < 10; ++i) {
14121 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
14122 for (int i = 0; i < 10; ++i)
14123 ++a;
14124 }
14125
14126 // DISTRIBUTE PARALLEL FOR DIRECTIVE
14127 #pragma omp target
14128 #pragma omp teams
14129 #pragma omp distribute parallel for
14130 for (int i = 0; i < 10; ++i) {
14131 #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?}}
14132 for (int i = 0; i < 10; ++i)
14133 ;
14134 }
14135
14136 #pragma omp target
14137 #pragma omp teams
14138 #pragma omp distribute parallel for
14139 for (int i = 0; i < 10; ++i) {
14140 #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?}}
14141 for (int i = 0; i < 10; ++i)
14142 ;
14143 }
14144 #pragma omp target
14145 #pragma omp teams
14146 #pragma omp distribute parallel for
14147 for (int i = 0; i < 10; ++i) {
14148 #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?}}
14149 for (int i = 0; i < 10; ++i)
14150 ;
14151 }
14152 #pragma omp target
14153 #pragma omp teams
14154 #pragma omp distribute parallel for
14155 for (int i = 0; i < 10; ++i) {
14156 #pragma omp simd
14157 for (int i = 0; i < 10; ++i)
14158 ;
14159 }
14160 #pragma omp target
14161 #pragma omp teams
14162 #pragma omp distribute parallel for
14163 for (int i = 0; i < 10; ++i) {
14164 #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?}}
14165 for (int i = 0; i < 10; ++i)
14166 ;
14167 }
14168 #pragma omp target
14169 #pragma omp teams
14170 #pragma omp distribute parallel for
14171 for (int i = 0; i < 10; ++i) {
14172 #pragma omp parallel
14173 for (int i = 0; i < 10; ++i)
14174 ;
14175 }
14176 #pragma omp target
14177 #pragma omp teams
14178 #pragma omp distribute parallel for
14179 for (int i = 0; i < 10; ++i) {
14180 #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?}}
14181 {
14182 bar();
14183 }
14184 }
14185 #pragma omp target
14186 #pragma omp teams
14187 #pragma omp distribute parallel for
14188 for (int i = 0; i < 10; ++i) {
14189 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}
14190 {
14191 bar();
14192 }
14193 }
14194 #pragma omp target
14195 #pragma omp teams
14196 #pragma omp distribute parallel for
14197 for (int i = 0; i < 10; ++i) {
14198 #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?}}
14199 {
14200 bar();
14201 }
14202 }
14203 #pragma omp target
14204 #pragma omp teams
14205 #pragma omp distribute parallel for
14206 for (int i = 0; i < 10; ++i) {
14207 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
14208 {
14209 bar();
14210 }
14211 }
14212 #pragma omp target
14213 #pragma omp teams
14214 #pragma omp distribute parallel for
14215 for (int i = 0; i < 10; ++i) {
14216 #pragma omp critical
14217 {
14218 bar();
14219 }
14220 }
14221 #pragma omp target
14222 #pragma omp teams
14223 #pragma omp distribute parallel for
14224 for (int i = 0; i < 10; ++i) {
14225 #pragma omp parallel
14226 {
14227 #pragma omp single
14228 {
14229 bar();
14230 }
14231 }
14232 }
14233 #pragma omp target
14234 #pragma omp teams
14235 #pragma omp distribute parallel for
14236 for (int i = 0; i < 10; ++i) {
14237 #pragma omp parallel for
14238 for (int i = 0; i < 10; ++i)
14239 ;
14240 }
14241 #pragma omp target
14242 #pragma omp teams
14243 #pragma omp distribute parallel for
14244 for (int i = 0; i < 10; ++i) {
14245 #pragma omp parallel for simd
14246 for (int i = 0; i < 10; ++i)
14247 ;
14248 }
14249 #pragma omp target
14250 #pragma omp teams
14251 #pragma omp distribute parallel for
14252 for (int i = 0; i < 10; ++i) {
14253 #pragma omp parallel sections
14254 {
14255 bar();
14256 }
14257 }
14258 #pragma omp target
14259 #pragma omp teams
14260 #pragma omp distribute parallel for
14261 for (int i = 0; i < 10; ++i) {
14262 #pragma omp task
14263 {
14264 bar();
14265 }
14266 }
14267 #pragma omp target
14268 #pragma omp teams
14269 #pragma omp distribute parallel for
14270 for (int i = 0; i < 10; ++i) {
14271 #pragma omp taskyield
14272 bar();
14273 }
14274 #pragma omp target
14275 #pragma omp teams
14276 #pragma omp distribute parallel for
14277 for (int i = 0; i < 10; ++i) {
14278 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
14279 bar();
14280 }
14281 #pragma omp target
14282 #pragma omp teams
14283 #pragma omp distribute parallel for
14284 for (int i = 0; i < 10; ++i) {
14285 #pragma omp taskwait
14286 bar();
14287 }
14288 #pragma omp target
14289 #pragma omp teams
14290 #pragma omp distribute parallel for
14291 for (int i = 0; i < 10; ++i) {
14292 #pragma omp flush
14293 bar();
14294 }
14295 #pragma omp target
14296 #pragma omp teams
14297 #pragma omp distribute parallel for
14298 for (int i = 0; i < 10; ++i) {
14299 #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?}}
14300 bar();
14301 }
14302 #pragma omp target
14303 #pragma omp teams
14304 #pragma omp distribute parallel for
14305 for (int i = 0; i < 10; ++i) {
14306 #pragma omp atomic
14307 ++a;
14308 }
14309 #pragma omp target
14310 #pragma omp teams
14311 #pragma omp distribute parallel for
14312 for (int i = 0; i < 10; ++i) {
14313 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
14314 ++a;
14315 }
14316 #pragma omp target
14317 #pragma omp teams
14318 #pragma omp distribute parallel for
14319 for (int i = 0; i < 10; ++i) {
14320 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
14321 ++a;
14322 }
14323 #pragma omp target
14324 #pragma omp teams
14325 #pragma omp distribute parallel for
14326 for (int i = 0; i < 10; ++i) {
14327 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14328 for (int i = 0; i < 10; ++i)
14329 ;
14330 }
14331 #pragma omp target
14332 #pragma omp teams
14333 #pragma omp distribute parallel for
14334 for (int i = 0; i < 10; ++i) {
14335 #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?}}
14336 ++a;
14337 }
14338 #pragma omp target
14339 #pragma omp teams
14340 #pragma omp distribute parallel for
14341 for (int i = 0; i < 10; ++i) {
14342 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
14343 ++a;
14344 }
14345 #pragma omp target
14346 #pragma omp teams
14347 #pragma omp distribute parallel for
14348 for (int i = 0; i < 10; ++i) {
14349 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
14350 ++a;
14351 }
14352 #pragma omp target
14353 #pragma omp teams
14354 #pragma omp distribute parallel for
14355 for (int i = 0; i < 10; ++i) {
14356 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
14357 ++a;
14358 }
14359 #pragma omp target
14360 #pragma omp teams
14361 #pragma omp distribute parallel for
14362 for (int i = 0; i < 10; ++i) {
14363 #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?}}
14364 for (int i = 0; i < 10; ++i)
14365 ++a;
14366 }
14367 #pragma omp target
14368 #pragma omp teams
14369 #pragma omp distribute parallel for
14370 for (int i = 0; i < 10; ++i) {
14371 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
14372 for (int i = 0; i < 10; ++i)
14373 ++a;
14374 }
14375 #pragma omp target
14376 #pragma omp teams
14377 #pragma omp distribute parallel for
14378 for (int i = 0; i < 10; ++i) {
14379 #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?}}
14380 for (int i = 0; i < 10; ++i)
14381 ++a;
14382 }
14383 #pragma omp target
14384 #pragma omp teams
14385 #pragma omp distribute parallel for
14386 for (int i = 0; i < 10; ++i) {
14387 #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?}}
14388 for (int i = 0; i < 10; ++i)
14389 ++a;
14390 }
14391 #pragma omp target
14392 #pragma omp teams
14393 #pragma omp distribute parallel for
14394 for (int i = 0; i < 10; ++i) {
14395 #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?}}
14396 for (int i = 0; i < 10; ++i)
14397 ++a;
14398 }
14399 #pragma omp target
14400 #pragma omp teams
14401 #pragma omp distribute parallel for
14402 for (int i = 0; i < 10; ++i) {
14403 #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?}}
14404 for (int i = 0; i < 10; ++i)
14405 ++a;
14406 }
14407 #pragma omp target
14408 #pragma omp teams
14409 #pragma omp distribute parallel for
14410 for (int i = 0; i < 10; ++i) {
14411 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
14412 ++a;
14413 }
14414 #pragma omp target
14415 #pragma omp teams
14416 #pragma omp distribute parallel for
14417 for (int i = 0; i < 10; ++i) {
14418 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
14419 for (int i = 0; i < 10; ++i)
14420 ++a;
14421 }
14422 #pragma omp target
14423 #pragma omp teams
14424 #pragma omp distribute parallel for
14425 for (int i = 0; i < 10; ++i) {
14426 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
14427 for (int i = 0; i < 10; ++i)
14428 ++a;
14429 }
14430 #pragma omp target
14431 #pragma omp teams
14432 #pragma omp distribute parallel for
14433 for (int i = 0; i < 10; ++i) {
14434 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14435 for (int i = 0; i < 10; ++i)
14436 ++a;
14437 }
14438 #pragma omp target
14439 #pragma omp teams
14440 #pragma omp distribute parallel for
14441 for (int i = 0; i < 10; ++i) {
14442 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
14443 for (int i = 0; i < 10; ++i)
14444 ++a;
14445 }
14446
14447 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
14448 #pragma omp target
14449 #pragma omp teams
14450 #pragma omp distribute parallel for simd
14451 for (int i = 0; i < 10; ++i) {
14452 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14453 for (int i = 0; i < 10; ++i)
14454 ;
14455 }
14456 #pragma omp target
14457 #pragma omp teams
14458 #pragma omp distribute parallel for simd
14459 for (int i = 0; i < 10; ++i) {
14460 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14461 for (int i = 0; i < 10; ++i)
14462 ;
14463 }
14464 #pragma omp target
14465 #pragma omp teams
14466 #pragma omp distribute parallel for simd
14467 for (int i = 0; i < 10; ++i) {
14468 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14469 for (int i = 0; i < 10; ++i)
14470 ;
14471 }
14472 #pragma omp target
14473 #pragma omp teams
14474 #pragma omp distribute parallel for simd
14475 for (int i = 0; i < 10; ++i) {
14476 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
14477 for (int i = 0; i < 10; ++i)
14478 ;
14479 }
14480 #pragma omp target
14481 #pragma omp teams
14482 #pragma omp distribute parallel for simd
14483 for (int i = 0; i < 10; ++i) {
14484 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14485 for (int i = 0; i < 10; ++i)
14486 ;
14487 }
14488 #pragma omp target
14489 #pragma omp teams
14490 #pragma omp distribute parallel for simd
14491 for (int i = 0; i < 10; ++i) {
14492 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14493 for (int i = 0; i < 10; ++i)
14494 ;
14495 }
14496 #pragma omp target
14497 #pragma omp teams
14498 #pragma omp distribute parallel for simd
14499 for (int i = 0; i < 10; ++i) {
14500 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14501 {
14502 bar();
14503 }
14504 }
14505 #pragma omp target
14506 #pragma omp teams
14507 #pragma omp distribute parallel for simd
14508 for (int i = 0; i < 10; ++i) {
14509 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14510 {
14511 bar();
14512 }
14513 }
14514 #pragma omp target
14515 #pragma omp teams
14516 #pragma omp distribute parallel for simd
14517 for (int i = 0; i < 10; ++i) {
14518 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14519 {
14520 bar();
14521 }
14522 }
14523 #pragma omp target
14524 #pragma omp teams
14525 #pragma omp distribute parallel for simd
14526 for (int i = 0; i < 10; ++i) {
14527 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14528 {
14529 bar();
14530 }
14531 }
14532 #pragma omp target
14533 #pragma omp teams
14534 #pragma omp distribute parallel for simd
14535 for (int i = 0; i < 10; ++i) {
14536 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14537 {
14538 bar();
14539 }
14540 }
14541 #pragma omp target
14542 #pragma omp teams
14543 #pragma omp distribute parallel for simd
14544 for (int i = 0; i < 10; ++i) {
14545 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14546 {
14547 #pragma omp single
14548 {
14549 bar();
14550 }
14551 }
14552 }
14553 #pragma omp target
14554 #pragma omp teams
14555 #pragma omp distribute parallel for simd
14556 for (int i = 0; i < 10; ++i) {
14557 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14558 for (int i = 0; i < 10; ++i)
14559 ;
14560 }
14561 #pragma omp target
14562 #pragma omp teams
14563 #pragma omp distribute parallel for simd
14564 for (int i = 0; i < 10; ++i) {
14565 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14566 for (int i = 0; i < 10; ++i)
14567 ;
14568 }
14569 #pragma omp target
14570 #pragma omp teams
14571 #pragma omp distribute parallel for simd
14572 for (int i = 0; i < 10; ++i) {
14573 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14574 {
14575 bar();
14576 }
14577 }
14578 #pragma omp target
14579 #pragma omp teams
14580 #pragma omp distribute parallel for simd
14581 for (int i = 0; i < 10; ++i) {
14582 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14583 {
14584 bar();
14585 }
14586 }
14587 #pragma omp target
14588 #pragma omp teams
14589 #pragma omp distribute parallel for simd
14590 for (int i = 0; i < 10; ++i) {
14591 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14592 bar();
14593 }
14594 #pragma omp target
14595 #pragma omp teams
14596 #pragma omp distribute parallel for simd
14597 for (int i = 0; i < 10; ++i) {
14598 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14599 bar();
14600 }
14601 #pragma omp target
14602 #pragma omp teams
14603 #pragma omp distribute parallel for simd
14604 for (int i = 0; i < 10; ++i) {
14605 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14606 bar();
14607 }
14608 #pragma omp target
14609 #pragma omp teams
14610 #pragma omp distribute parallel for simd
14611 for (int i = 0; i < 10; ++i) {
14612 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14613 bar();
14614 }
14615 #pragma omp target
14616 #pragma omp teams
14617 #pragma omp distribute parallel for simd
14618 for (int i = 0; i < 10; ++i) {
14619 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14620 bar();
14621 }
14622 #pragma omp target
14623 #pragma omp teams
14624 #pragma omp distribute parallel for simd
14625 for (int i = 0; i < 10; ++i) {
14626 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14627 ++a;
14628 }
14629 #pragma omp target
14630 #pragma omp teams
14631 #pragma omp distribute parallel for simd
14632 for (int i = 0; i < 10; ++i) {
14633 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14634 ++a;
14635 }
14636 #pragma omp target
14637 #pragma omp teams
14638 #pragma omp distribute parallel for simd
14639 for (int i = 0; i < 10; ++i) {
14640 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14641 ++a;
14642 }
14643 #pragma omp target
14644 #pragma omp teams
14645 #pragma omp distribute parallel for simd
14646 for (int i = 0; i < 10; ++i) {
14647 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14648 ++a;
14649 }
14650 #pragma omp target
14651 #pragma omp teams
14652 #pragma omp distribute parallel for simd
14653 for (int i = 0; i < 10; ++i) {
14654 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14655 ++a;
14656 }
14657 #pragma omp target
14658 #pragma omp teams
14659 #pragma omp distribute parallel for simd
14660 for (int i = 0; i < 10; ++i) {
14661 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14662 ++a;
14663 }
14664 #pragma omp target
14665 #pragma omp teams
14666 #pragma omp distribute parallel for simd
14667 for (int i = 0; i < 10; ++i) {
14668 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14669 ++a;
14670 }
14671 #pragma omp target
14672 #pragma omp teams
14673 #pragma omp distribute parallel for simd
14674 for (int i = 0; i < 10; ++i) {
14675 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14676 for (int i = 0; i < 10; ++i)
14677 ;
14678 }
14679 #pragma omp target
14680 #pragma omp teams
14681 #pragma omp distribute parallel for simd
14682 for (int i = 0; i < 10; ++i) {
14683 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14684 for (int i = 0; i < 10; ++i)
14685 ;
14686 }
14687 #pragma omp target
14688 #pragma omp teams
14689 #pragma omp distribute parallel for simd
14690 for (int i = 0; i < 10; ++i) {
14691 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14692 for (int i = 0; i < 10; ++i)
14693 ;
14694 }
14695 #pragma omp target
14696 #pragma omp teams
14697 #pragma omp distribute parallel for simd
14698 for (int i = 0; i < 10; ++i) {
14699 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14700 for (int i = 0; i < 10; ++i)
14701 ;
14702 }
14703 #pragma omp target
14704 #pragma omp teams
14705 #pragma omp distribute parallel for simd
14706 for (int i = 0; i < 10; ++i) {
14707 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14708 for (int i = 0; i < 10; ++i)
14709 ;
14710 }
14711 #pragma omp target
14712 #pragma omp teams
14713 #pragma omp distribute parallel for simd
14714 for (int i = 0; i < 10; ++i) {
14715 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14716 for (int i = 0; i < 10; ++i)
14717 ;
14718 }
14719 #pragma omp target
14720 #pragma omp teams
14721 #pragma omp distribute parallel for simd
14722 for (int i = 0; i < 10; ++i) {
14723 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14724 a++;
14725 }
14726 #pragma omp target
14727 #pragma omp teams
14728 #pragma omp distribute parallel for simd
14729 for (int i = 0; i < 10; ++i) {
14730 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14731 for (int i = 0; i < 10; ++i)
14732 ;
14733 }
14734 #pragma omp target
14735 #pragma omp teams
14736 #pragma omp distribute parallel for simd
14737 for (int i = 0; i < 10; ++i) {
14738 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14739 for (int i = 0; i < 10; ++i)
14740 ;
14741 }
14742 #pragma omp target
14743 #pragma omp teams
14744 #pragma omp distribute parallel for simd
14745 for (int i = 0; i < 10; ++i) {
14746 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14747 for (int i = 0; i < 10; ++i)
14748 ;
14749 }
14750 #pragma omp target
14751 #pragma omp teams
14752 #pragma omp distribute parallel for simd
14753 for (int i = 0; i < 10; ++i) {
14754 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14755 for (int i = 0; i < 10; ++i)
14756 ;
14757 }
14758
14759 // DISTRIBUTE SIMD DIRECTIVE
14760 #pragma omp target
14761 #pragma omp teams
14762 #pragma omp distribute simd
14763 for (int i = 0; i < 10; ++i) {
14764 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14765 for (int i = 0; i < 10; ++i)
14766 ;
14767 }
14768 #pragma omp target
14769 #pragma omp teams
14770 #pragma omp distribute simd
14771 for (int i = 0; i < 10; ++i) {
14772 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14773 for (int i = 0; i < 10; ++i)
14774 ;
14775 }
14776 #pragma omp target
14777 #pragma omp teams
14778 #pragma omp distribute simd
14779 for (int i = 0; i < 10; ++i) {
14780 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14781 for (int i = 0; i < 10; ++i)
14782 ;
14783 }
14784 #pragma omp target
14785 #pragma omp teams
14786 #pragma omp distribute simd
14787 for (int i = 0; i < 10; ++i) {
14788 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
14789 for (int i = 0; i < 10; ++i)
14790 ;
14791 }
14792 #pragma omp target
14793 #pragma omp teams
14794 #pragma omp distribute simd
14795 for (int i = 0; i < 10; ++i) {
14796 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14797 for (int i = 0; i < 10; ++i)
14798 ;
14799 }
14800 #pragma omp target
14801 #pragma omp teams
14802 #pragma omp distribute simd
14803 for (int i = 0; i < 10; ++i) {
14804 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14805 for (int i = 0; i < 10; ++i)
14806 ;
14807 }
14808 #pragma omp target
14809 #pragma omp teams
14810 #pragma omp distribute simd
14811 for (int i = 0; i < 10; ++i) {
14812 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14813 {
14814 bar();
14815 }
14816 }
14817 #pragma omp target
14818 #pragma omp teams
14819 #pragma omp distribute simd
14820 for (int i = 0; i < 10; ++i) {
14821 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14822 {
14823 bar();
14824 }
14825 }
14826 #pragma omp target
14827 #pragma omp teams
14828 #pragma omp distribute simd
14829 for (int i = 0; i < 10; ++i) {
14830 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14831 {
14832 bar();
14833 }
14834 }
14835 #pragma omp target
14836 #pragma omp teams
14837 #pragma omp distribute simd
14838 for (int i = 0; i < 10; ++i) {
14839 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14840 {
14841 bar();
14842 }
14843 }
14844 #pragma omp target
14845 #pragma omp teams
14846 #pragma omp distribute simd
14847 for (int i = 0; i < 10; ++i) {
14848 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14849 {
14850 bar();
14851 }
14852 }
14853 #pragma omp target
14854 #pragma omp teams
14855 #pragma omp distribute simd
14856 for (int i = 0; i < 10; ++i) {
14857 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14858 {
14859 #pragma omp single
14860 {
14861 bar();
14862 }
14863 }
14864 }
14865 #pragma omp target
14866 #pragma omp teams
14867 #pragma omp distribute simd
14868 for (int i = 0; i < 10; ++i) {
14869 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14870 for (int i = 0; i < 10; ++i)
14871 ;
14872 }
14873 #pragma omp target
14874 #pragma omp teams
14875 #pragma omp distribute simd
14876 for (int i = 0; i < 10; ++i) {
14877 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14878 for (int i = 0; i < 10; ++i)
14879 ;
14880 }
14881 #pragma omp target
14882 #pragma omp teams
14883 #pragma omp distribute simd
14884 for (int i = 0; i < 10; ++i) {
14885 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14886 {
14887 bar();
14888 }
14889 }
14890 #pragma omp target
14891 #pragma omp teams
14892 #pragma omp distribute simd
14893 for (int i = 0; i < 10; ++i) {
14894 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14895 {
14896 bar();
14897 }
14898 }
14899 #pragma omp target
14900 #pragma omp teams
14901 #pragma omp distribute simd
14902 for (int i = 0; i < 10; ++i) {
14903 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14904 bar();
14905 }
14906 #pragma omp target
14907 #pragma omp teams
14908 #pragma omp distribute simd
14909 for (int i = 0; i < 10; ++i) {
14910 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14911 bar();
14912 }
14913 #pragma omp target
14914 #pragma omp teams
14915 #pragma omp distribute simd
14916 for (int i = 0; i < 10; ++i) {
14917 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14918 bar();
14919 }
14920 #pragma omp target
14921 #pragma omp teams
14922 #pragma omp distribute simd
14923 for (int i = 0; i < 10; ++i) {
14924 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14925 bar();
14926 }
14927 #pragma omp target
14928 #pragma omp teams
14929 #pragma omp distribute simd
14930 for (int i = 0; i < 10; ++i) {
14931 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14932 bar();
14933 }
14934 #pragma omp target
14935 #pragma omp teams
14936 #pragma omp distribute simd
14937 for (int i = 0; i < 10; ++i) {
14938 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14939 ++a;
14940 }
14941 #pragma omp target
14942 #pragma omp teams
14943 #pragma omp distribute simd
14944 for (int i = 0; i < 10; ++i) {
14945 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14946 ++a;
14947 }
14948 #pragma omp target
14949 #pragma omp teams
14950 #pragma omp distribute simd
14951 for (int i = 0; i < 10; ++i) {
14952 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14953 ++a;
14954 }
14955 #pragma omp target
14956 #pragma omp teams
14957 #pragma omp distribute simd
14958 for (int i = 0; i < 10; ++i) {
14959 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14960 ++a;
14961 }
14962 #pragma omp target
14963 #pragma omp teams
14964 #pragma omp distribute simd
14965 for (int i = 0; i < 10; ++i) {
14966 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14967 ++a;
14968 }
14969 #pragma omp target
14970 #pragma omp teams
14971 #pragma omp distribute simd
14972 for (int i = 0; i < 10; ++i) {
14973 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14974 ++a;
14975 }
14976 #pragma omp target
14977 #pragma omp teams
14978 #pragma omp distribute simd
14979 for (int i = 0; i < 10; ++i) {
14980 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14981 ++a;
14982 }
14983 #pragma omp target
14984 #pragma omp teams
14985 #pragma omp distribute simd
14986 for (int i = 0; i < 10; ++i) {
14987 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14988 for (int i = 0; i < 10; ++i)
14989 ;
14990 }
14991 #pragma omp target
14992 #pragma omp teams
14993 #pragma omp distribute simd
14994 for (int i = 0; i < 10; ++i) {
14995 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14996 for (int i = 0; i < 10; ++i)
14997 ;
14998 }
14999 #pragma omp target
15000 #pragma omp teams
15001 #pragma omp distribute simd
15002 for (int i = 0; i < 10; ++i) {
15003 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15004 for (int i = 0; i < 10; ++i)
15005 ;
15006 }
15007 #pragma omp target
15008 #pragma omp teams
15009 #pragma omp distribute simd
15010 for (int i = 0; i < 10; ++i) {
15011 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15012 for (int i = 0; i < 10; ++i)
15013 ;
15014 }
15015 #pragma omp target
15016 #pragma omp teams
15017 #pragma omp distribute simd
15018 for (int i = 0; i < 10; ++i) {
15019 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15020 for (int i = 0; i < 10; ++i)
15021 ;
15022 }
15023 #pragma omp target
15024 #pragma omp teams
15025 #pragma omp distribute simd
15026 for (int i = 0; i < 10; ++i) {
15027 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15028 for (int i = 0; i < 10; ++i)
15029 ;
15030 }
15031 #pragma omp target
15032 #pragma omp teams
15033 #pragma omp distribute simd
15034 for (int i = 0; i < 10; ++i) {
15035 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15036 a++;
15037 }
15038 #pragma omp target
15039 #pragma omp teams
15040 #pragma omp distribute simd
15041 for (int i = 0; i < 10; ++i) {
15042 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15043 for (int i = 0; i < 10; ++i)
15044 ;
15045 }
15046 #pragma omp target
15047 #pragma omp teams
15048 #pragma omp distribute simd
15049 for (int i = 0; i < 10; ++i) {
15050 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15051 for (int i = 0; i < 10; ++i)
15052 ;
15053 }
15054 #pragma omp target
15055 #pragma omp teams
15056 #pragma omp distribute simd
15057 for (int i = 0; i < 10; ++i) {
15058 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15059 for (int i = 0; i < 10; ++i)
15060 ;
15061 }
15062 #pragma omp target
15063 #pragma omp teams
15064 #pragma omp distribute simd
15065 for (int i = 0; i < 10; ++i) {
15066 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15067 for (int i = 0; i < 10; ++i)
15068 ;
15069 }
15070
15071 // TARGET SIMD DIRECTIVE
15072 #pragma omp target simd
15073 for (int i = 0; i < 10; ++i) {
15074 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15075 for (int i = 0; i < 10; ++i)
15076 ;
15077 }
15078 #pragma omp target simd
15079 for (int i = 0; i < 10; ++i) {
15080 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15081 for (int i = 0; i < 10; ++i)
15082 ;
15083 }
15084 #pragma omp target simd
15085 for (int i = 0; i < 10; ++i) {
15086 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15087 for (int i = 0; i < 10; ++i)
15088 ;
15089 }
15090 #pragma omp target simd
15091 for (int i = 0; i < 10; ++i) {
15092 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15093 for (int i = 0; i < 10; ++i)
15094 ;
15095 }
15096 #pragma omp target simd
15097 for (int i = 0; i < 10; ++i) {
15098 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15099 for (int i = 0; i < 10; ++i)
15100 ;
15101 }
15102 #pragma omp target simd
15103 for (int i = 0; i < 10; ++i) {
15104 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15105 for (int i = 0; i < 10; ++i)
15106 ;
15107 }
15108 #pragma omp target simd
15109 for (int i = 0; i < 10; ++i) {
15110 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15111 {
15112 bar();
15113 }
15114 }
15115 #pragma omp target simd
15116 for (int i = 0; i < 10; ++i) {
15117 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15118 {
15119 bar();
15120 }
15121 }
15122 #pragma omp target simd
15123 for (int i = 0; i < 10; ++i) {
15124 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15125 {
15126 bar();
15127 }
15128 }
15129 #pragma omp target simd
15130 for (int i = 0; i < 10; ++i) {
15131 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15132 {
15133 bar();
15134 }
15135 }
15136 #pragma omp target simd
15137 for (int i = 0; i < 10; ++i) {
15138 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15139 {
15140 bar();
15141 }
15142 }
15143 #pragma omp target simd
15144 for (int i = 0; i < 10; ++i) {
15145 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15146 {
15147 #pragma omp single
15148 {
15149 bar();
15150 }
15151 }
15152 }
15153 #pragma omp target simd
15154 for (int i = 0; i < 10; ++i) {
15155 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15156 for (int i = 0; i < 10; ++i)
15157 ;
15158 }
15159 #pragma omp target simd
15160 for (int i = 0; i < 10; ++i) {
15161 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15162 for (int i = 0; i < 10; ++i)
15163 ;
15164 }
15165 #pragma omp target simd
15166 for (int i = 0; i < 10; ++i) {
15167 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15168 {
15169 bar();
15170 }
15171 }
15172 #pragma omp target simd
15173 for (int i = 0; i < 10; ++i) {
15174 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15175 {
15176 bar();
15177 }
15178 }
15179 #pragma omp target simd
15180 for (int i = 0; i < 10; ++i) {
15181 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15182 bar();
15183 }
15184 #pragma omp target simd
15185 for (int i = 0; i < 10; ++i) {
15186 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15187 bar();
15188 }
15189 #pragma omp target simd
15190 for (int i = 0; i < 10; ++i) {
15191 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15192 bar();
15193 }
15194 #pragma omp target simd
15195 for (int i = 0; i < 10; ++i) {
15196 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15197 bar();
15198 }
15199 #pragma omp target simd
15200 for (int i = 0; i < 10; ++i) {
15201 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15202 bar();
15203 }
15204 #pragma omp target simd
15205 for (int i = 0; i < 10; ++i) {
15206 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15207 ++a;
15208 }
15209 #pragma omp target simd
15210 for (int i = 0; i < 10; ++i) {
15211 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15212 ++a;
15213 }
15214 #pragma omp target simd
15215 for (int i = 0; i < 10; ++i) {
15216 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15217 ++a;
15218 }
15219 #pragma omp target simd
15220 for (int i = 0; i < 10; ++i) {
15221 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15222 ++a;
15223 }
15224 #pragma omp target simd
15225 for (int i = 0; i < 10; ++i) {
15226 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15227 ++a;
15228 }
15229 #pragma omp target simd
15230 for (int i = 0; i < 10; ++i) {
15231 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15232 ++a;
15233 }
15234 #pragma omp target simd
15235 for (int i = 0; i < 10; ++i) {
15236 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15237 ++a;
15238 }
15239 #pragma omp target simd
15240 for (int i = 0; i < 10; ++i) {
15241 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15242 for (int i = 0; i < 10; ++i)
15243 ;
15244 }
15245 #pragma omp target simd
15246 for (int i = 0; i < 10; ++i) {
15247 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15248 for (int i = 0; i < 10; ++i)
15249 ;
15250 }
15251 #pragma omp target simd
15252 for (int i = 0; i < 10; ++i) {
15253 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15254 for (int i = 0; i < 10; ++i)
15255 ;
15256 }
15257 #pragma omp target simd
15258 for (int i = 0; i < 10; ++i) {
15259 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15260 for (int i = 0; i < 10; ++i)
15261 ;
15262 }
15263 #pragma omp target simd
15264 for (int i = 0; i < 10; ++i) {
15265 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15266 for (int i = 0; i < 10; ++i)
15267 ;
15268 }
15269 #pragma omp target simd
15270 for (int i = 0; i < 10; ++i) {
15271 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15272 for (int i = 0; i < 10; ++i)
15273 ;
15274 }
15275 #pragma omp target simd
15276 for (int i = 0; i < 10; ++i) {
15277 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15278 a++;
15279 }
15280 #pragma omp target simd
15281 for (int i = 0; i < 10; ++i) {
15282 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15283 for (int i = 0; i < 10; ++i)
15284 ;
15285 }
15286 #pragma omp target simd
15287 for (int i = 0; i < 10; ++i) {
15288 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15289 for (int i = 0; i < 10; ++i)
15290 ;
15291 }
15292 #pragma omp target simd
15293 for (int i = 0; i < 10; ++i) {
15294 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15295 for (int i = 0; i < 10; ++i)
15296 ;
15297 }
15298 #pragma omp target simd
15299 for (int i = 0; i < 10; ++i) {
15300 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15301 for (int i = 0; i < 10; ++i)
15302 ;
15303 }
15304
15305 // TEAMS DISTRIBUTE DIRECTIVE
15306 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
15307 for (int i = 0; i < 10; ++i)
15308 ;
15309 #pragma omp target
15310 #pragma omp teams distribute
15311 for (int i = 0; i < 10; ++i) {
15312 #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?}}
15313 for (int i = 0; i < 10; ++i)
15314 ;
15315 }
15316 #pragma omp target
15317 #pragma omp teams distribute
15318 for (int i = 0; i < 10; ++i) {
15319 #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?}}
15320 for (int i = 0; i < 10; ++i)
15321 ;
15322 }
15323 #pragma omp target
15324 #pragma omp teams distribute
15325 for (int i = 0; i < 10; ++i) {
15326 #pragma omp for // OK
15327 for (int i = 0; i < 10; ++i)
15328 ;
15329 }
15330 #pragma omp target
15331 #pragma omp teams distribute
15332 for (int i = 0; i < 10; ++i) {
15333 #pragma omp simd // OK
15334 for (int i = 0; i < 10; ++i)
15335 ;
15336 }
15337 #pragma omp target
15338 #pragma omp teams distribute
15339 for (int i = 0; i < 10; ++i) {
15340 #pragma omp for simd // OK
15341 for (int i = 0; i < 10; ++i)
15342 ;
15343 }
15344 #pragma omp target
15345 #pragma omp teams distribute
15346 for (int i = 0; i < 10; ++i) {
15347 #pragma omp parallel // OK
15348 for (int i = 0; i < 10; ++i)
15349 ;
15350 }
15351 #pragma omp target
15352 #pragma omp teams distribute
15353 for (int i = 0; i < 10; ++i) {
15354 #pragma omp sections // OK
15355 {
15356 bar();
15357 }
15358 }
15359 #pragma omp target
15360 #pragma omp teams distribute
15361 for (int i = 0; i < 10; ++i) {
15362 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
15363 {
15364 bar();
15365 }
15366 }
15367 #pragma omp target
15368 #pragma omp teams distribute
15369 for (int i = 0; i < 10; ++i) {
15370 #pragma omp single // OK
15371 {
15372 bar();
15373 }
15374 }
15375 #pragma omp target
15376 #pragma omp teams distribute
15377 for (int i = 0; i < 10; ++i) {
15378 #pragma omp master // OK
15379 {
15380 bar();
15381 }
15382 }
15383 #pragma omp target
15384 #pragma omp teams distribute
15385 for (int i = 0; i < 10; ++i) {
15386 #pragma omp critical // OK
15387 {
15388 bar();
15389 }
15390 }
15391 #pragma omp target
15392 #pragma omp teams distribute
15393 for (int i = 0; i < 10; ++i) {
15394 #pragma omp parallel // OK
15395 {
15396 #pragma omp single
15397 {
15398 bar();
15399 }
15400 }
15401 }
15402 #pragma omp target
15403 #pragma omp teams distribute
15404 for (int i = 0; i < 10; ++i) {
15405 #pragma omp parallel for // OK
15406 for (int i = 0; i < 10; ++i)
15407 ;
15408 }
15409 #pragma omp target
15410 #pragma omp teams distribute
15411 for (int i = 0; i < 10; ++i) {
15412 #pragma omp parallel for simd // OK
15413 for (int i = 0; i < 10; ++i)
15414 ;
15415 }
15416 #pragma omp target
15417 #pragma omp teams distribute
15418 for (int i = 0; i < 10; ++i) {
15419 #pragma omp parallel sections // OK
15420 {
15421 bar();
15422 }
15423 }
15424 #pragma omp target
15425 #pragma omp teams distribute
15426 for (int i = 0; i < 10; ++i) {
15427 #pragma omp task // OK
15428 {
15429 bar();
15430 }
15431 }
15432 #pragma omp target
15433 #pragma omp teams distribute
15434 for (int i = 0; i < 10; ++i) {
15435 #pragma omp taskyield // OK
15436 bar();
15437 }
15438 #pragma omp target
15439 #pragma omp teams distribute
15440 for (int i = 0; i < 10; ++i) {
15441 #pragma omp barrier // OK
15442 bar();
15443 }
15444 #pragma omp target
15445 #pragma omp teams distribute
15446 for (int i = 0; i < 10; ++i) {
15447 #pragma omp taskwait // OK
15448 bar();
15449 }
15450 #pragma omp target
15451 #pragma omp teams distribute
15452 for (int i = 0; i < 10; ++i) {
15453 #pragma omp flush // OK
15454 bar();
15455 }
15456 #pragma omp target
15457 #pragma omp teams distribute
15458 for (int i = 0; i < 10; ++i) {
15459 #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?}}
15460 bar();
15461 }
15462 #pragma omp target
15463 #pragma omp teams distribute
15464 for (int i = 0; i < 10; ++i) {
15465 #pragma omp atomic // OK
15466 ++a;
15467 }
15468 #pragma omp target
15469 #pragma omp teams distribute
15470 for (int i = 0; i < 10; ++i) {
15471 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
15472 ++a;
15473 }
15474 #pragma omp target
15475 #pragma omp teams distribute
15476 for (int i = 0; i < 10; ++i) {
15477 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
15478 ++a;
15479 }
15480 #pragma omp target
15481 #pragma omp teams distribute
15482 for (int i = 0; i < 10; ++i) {
15483 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
15484 for (int i = 0; i < 10; ++i)
15485 ;
15486 }
15487 #pragma omp target
15488 #pragma omp teams distribute
15489 for (int i = 0; i < 10; ++i) {
15490 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
15491 ++a;
15492 }
15493 #pragma omp target
15494 #pragma omp teams distribute
15495 for (int i = 0; i < 10; ++i) {
15496 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
15497 ++a;
15498 }
15499 #pragma omp target
15500 #pragma omp teams distribute
15501 for (int i = 0; i < 10; ++i) {
15502 #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?}}
15503 ++a;
15504 }
15505 #pragma omp target
15506 #pragma omp teams distribute
15507 for (int i = 0; i < 10; ++i) {
15508 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
15509 ++a;
15510 }
15511 #pragma omp target
15512 #pragma omp teams distribute
15513 for (int i = 0; i < 10; ++i) {
15514 #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?}}
15515 for (int i = 0; i < 10; ++i)
15516 ++a;
15517 }
15518 #pragma omp target
15519 #pragma omp teams distribute
15520 for (int i = 0; i < 10; ++i) {
15521 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
15522 for (int i = 0; i < 10; ++i)
15523 ++a;
15524 }
15525 #pragma omp target
15526 #pragma omp teams distribute
15527 for (int i = 0; i < 10; ++i) {
15528 #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?}}
15529 for (int i = 0; i < 10; ++i)
15530 ++a;
15531 }
15532 #pragma omp target
15533 #pragma omp teams distribute
15534 for (int i = 0; i < 10; ++i) {
15535 #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?}}
15536 for (int i = 0; i < 10; ++i)
15537 ++a;
15538 }
15539 #pragma omp target
15540 #pragma omp teams distribute
15541 for (int i = 0; i < 10; ++i) {
15542 #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?}}
15543 for (int i = 0; i < 10; ++i)
15544 ++a;
15545 }
15546 #pragma omp target
15547 #pragma omp teams distribute
15548 for (int i = 0; i < 10; ++i) {
15549 #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?}}
15550 for (int i = 0; i < 10; ++i)
15551 ++a;
15552 }
15553 #pragma omp target
15554 #pragma omp teams distribute
15555 for (int i = 0; i < 10; ++i) {
15556 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
15557 ++a;
15558 }
15559 #pragma omp target
15560 #pragma omp teams distribute
15561 for (int i = 0; i < 10; ++i) {
15562 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
15563 for (int i = 0; i < 10; ++i)
15564 ++a;
15565 }
15566 #pragma omp target
15567 #pragma omp teams distribute
15568 for (int i = 0; i < 10; ++i) {
15569 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
15570 for (int i = 0; i < 10; ++i)
15571 ++a;
15572 }
15573 #pragma omp target
15574 #pragma omp teams distribute
15575 for (int i = 0; i < 10; ++i) {
15576 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
15577 for (int i = 0; i < 10; ++i)
15578 ++a;
15579 }
15580 #pragma omp target
15581 #pragma omp teams distribute
15582 for (int i = 0; i < 10; ++i) {
15583 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
15584 for (int i = 0; i < 10; ++i)
15585 ++a;
15586 }
15587
15588 // TEAMS DISTRIBUTE SIMD DIRECTIVE
15589 #pragma omp teams distribute simd // expected-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
15590 for (int i = 0; i < 10; ++i)
15591 ;
15592 #pragma omp target
15593 #pragma omp teams distribute simd
15594 for (int i = 0; i < 10; ++i) {
15595 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15596 for (int i = 0; i < 10; ++i)
15597 ;
15598 }
15599 #pragma omp target
15600 #pragma omp teams distribute simd
15601 for (int i = 0; i < 10; ++i) {
15602 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15603 for (int i = 0; i < 10; ++i)
15604 ;
15605 }
15606 #pragma omp target
15607 #pragma omp teams distribute simd
15608 for (int i = 0; i < 10; ++i) {
15609 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15610 for (int i = 0; i < 10; ++i)
15611 ;
15612 }
15613 #pragma omp target
15614 #pragma omp teams distribute simd
15615 for (int i = 0; i < 10; ++i) {
15616 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15617 for (int i = 0; i < 10; ++i)
15618 ;
15619 }
15620 #pragma omp target
15621 #pragma omp teams distribute simd
15622 for (int i = 0; i < 10; ++i) {
15623 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15624 for (int i = 0; i < 10; ++i)
15625 ;
15626 }
15627 #pragma omp target
15628 #pragma omp teams distribute simd
15629 for (int i = 0; i < 10; ++i) {
15630 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15631 for (int i = 0; i < 10; ++i)
15632 ;
15633 }
15634 #pragma omp target
15635 #pragma omp teams distribute simd
15636 for (int i = 0; i < 10; ++i) {
15637 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15638 {
15639 bar();
15640 }
15641 }
15642 #pragma omp target
15643 #pragma omp teams distribute simd
15644 for (int i = 0; i < 10; ++i) {
15645 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15646 {
15647 bar();
15648 }
15649 }
15650 #pragma omp target
15651 #pragma omp teams distribute simd
15652 for (int i = 0; i < 10; ++i) {
15653 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15654 {
15655 bar();
15656 }
15657 }
15658 #pragma omp target
15659 #pragma omp teams distribute simd
15660 for (int i = 0; i < 10; ++i) {
15661 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15662 {
15663 bar();
15664 }
15665 }
15666 #pragma omp target
15667 #pragma omp teams distribute simd
15668 for (int i = 0; i < 10; ++i) {
15669 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15670 {
15671 bar();
15672 }
15673 }
15674 #pragma omp target
15675 #pragma omp teams distribute simd
15676 for (int i = 0; i < 10; ++i) {
15677 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15678 {
15679 #pragma omp single
15680 {
15681 bar();
15682 }
15683 }
15684 }
15685 #pragma omp target
15686 #pragma omp teams distribute simd
15687 for (int i = 0; i < 10; ++i) {
15688 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15689 for (int i = 0; i < 10; ++i)
15690 ;
15691 }
15692 #pragma omp target
15693 #pragma omp teams distribute simd
15694 for (int i = 0; i < 10; ++i) {
15695 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15696 for (int i = 0; i < 10; ++i)
15697 ;
15698 }
15699 #pragma omp target
15700 #pragma omp teams distribute simd
15701 for (int i = 0; i < 10; ++i) {
15702 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15703 {
15704 bar();
15705 }
15706 }
15707 #pragma omp target
15708 #pragma omp teams distribute simd
15709 for (int i = 0; i < 10; ++i) {
15710 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15711 {
15712 bar();
15713 }
15714 }
15715 #pragma omp target
15716 #pragma omp teams distribute simd
15717 for (int i = 0; i < 10; ++i) {
15718 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15719 bar();
15720 }
15721 #pragma omp target
15722 #pragma omp teams distribute simd
15723 for (int i = 0; i < 10; ++i) {
15724 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15725 bar();
15726 }
15727 #pragma omp target
15728 #pragma omp teams distribute simd
15729 for (int i = 0; i < 10; ++i) {
15730 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15731 bar();
15732 }
15733 #pragma omp target
15734 #pragma omp teams distribute simd
15735 for (int i = 0; i < 10; ++i) {
15736 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15737 bar();
15738 }
15739 #pragma omp target
15740 #pragma omp teams distribute simd
15741 for (int i = 0; i < 10; ++i) {
15742 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15743 bar();
15744 }
15745 #pragma omp target
15746 #pragma omp teams distribute simd
15747 for (int i = 0; i < 10; ++i) {
15748 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15749 ++a;
15750 }
15751 #pragma omp target
15752 #pragma omp teams distribute simd
15753 for (int i = 0; i < 10; ++i) {
15754 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15755 ++a;
15756 }
15757 #pragma omp target
15758 #pragma omp teams distribute simd
15759 for (int i = 0; i < 10; ++i) {
15760 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15761 ++a;
15762 }
15763 #pragma omp target
15764 #pragma omp teams distribute simd
15765 for (int i = 0; i < 10; ++i) {
15766 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15767 for (int i = 0; i < 10; ++i)
15768 ;
15769 }
15770 #pragma omp target
15771 #pragma omp teams distribute simd
15772 for (int i = 0; i < 10; ++i) {
15773 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15774 ++a;
15775 }
15776 #pragma omp target
15777 #pragma omp teams distribute simd
15778 for (int i = 0; i < 10; ++i) {
15779 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15780 ++a;
15781 }
15782 #pragma omp target
15783 #pragma omp teams distribute simd
15784 for (int i = 0; i < 10; ++i) {
15785 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15786 ++a;
15787 }
15788 #pragma omp target
15789 #pragma omp teams distribute simd
15790 for (int i = 0; i < 10; ++i) {
15791 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15792 ++a;
15793 }
15794 #pragma omp target
15795 #pragma omp teams distribute simd
15796 for (int i = 0; i < 10; ++i) {
15797 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15798 for (int i = 0; i < 10; ++i)
15799 ++a;
15800 }
15801 #pragma omp target
15802 #pragma omp teams distribute simd
15803 for (int i = 0; i < 10; ++i) {
15804 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15805 for (int i = 0; i < 10; ++i)
15806 ++a;
15807 }
15808 #pragma omp target
15809 #pragma omp teams distribute simd
15810 for (int i = 0; i < 10; ++i) {
15811 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15812 for (int i = 0; i < 10; ++i)
15813 ++a;
15814 }
15815 #pragma omp target
15816 #pragma omp teams distribute simd
15817 for (int i = 0; i < 10; ++i) {
15818 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15819 for (int i = 0; i < 10; ++i)
15820 ++a;
15821 }
15822 #pragma omp target
15823 #pragma omp teams distribute simd
15824 for (int i = 0; i < 10; ++i) {
15825 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15826 for (int i = 0; i < 10; ++i)
15827 ++a;
15828 }
15829 #pragma omp target
15830 #pragma omp teams distribute simd
15831 for (int i = 0; i < 10; ++i) {
15832 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15833 for (int i = 0; i < 10; ++i)
15834 ++a;
15835 }
15836 #pragma omp target
15837 #pragma omp teams distribute simd
15838 for (int i = 0; i < 10; ++i) {
15839 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15840 ++a;
15841 }
15842 #pragma omp target
15843 #pragma omp teams distribute simd
15844 for (int i = 0; i < 10; ++i) {
15845 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15846 for (int i = 0; i < 10; ++i)
15847 ++a;
15848 }
15849 #pragma omp target
15850 #pragma omp teams distribute simd
15851 for (int i = 0; i < 10; ++i) {
15852 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15853 for (int i = 0; i < 10; ++i)
15854 ++a;
15855 }
15856 #pragma omp target
15857 #pragma omp teams distribute simd
15858 for (int i = 0; i < 10; ++i) {
15859 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15860 for (int i = 0; i < 10; ++i)
15861 ++a;
15862 }
15863 #pragma omp target
15864 #pragma omp teams distribute simd
15865 for (int i = 0; i < 10; ++i) {
15866 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15867 for (int i = 0; i < 10; ++i)
15868 ++a;
15869 }
15870
15871 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
15872 #pragma omp teams distribute parallel for simd // expected-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
15873 for (int i = 0; i < 10; ++i)
15874 ;
15875 #pragma omp target
15876 #pragma omp teams distribute parallel for simd
15877 for (int i = 0; i < 10; ++i) {
15878 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15879 for (int i = 0; i < 10; ++i)
15880 ;
15881 }
15882 #pragma omp target
15883 #pragma omp teams distribute parallel for simd
15884 for (int i = 0; i < 10; ++i) {
15885 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15886 for (int i = 0; i < 10; ++i)
15887 ;
15888 }
15889 #pragma omp target
15890 #pragma omp teams distribute parallel for simd
15891 for (int i = 0; i < 10; ++i) {
15892 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15893 for (int i = 0; i < 10; ++i)
15894 ;
15895 }
15896 #pragma omp target
15897 #pragma omp teams distribute parallel for simd
15898 for (int i = 0; i < 10; ++i) {
15899 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15900 for (int i = 0; i < 10; ++i)
15901 ;
15902 }
15903 #pragma omp target
15904 #pragma omp teams distribute parallel for simd
15905 for (int i = 0; i < 10; ++i) {
15906 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15907 for (int i = 0; i < 10; ++i)
15908 ;
15909 }
15910 #pragma omp target
15911 #pragma omp teams distribute parallel for simd
15912 for (int i = 0; i < 10; ++i) {
15913 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15914 for (int i = 0; i < 10; ++i)
15915 ;
15916 }
15917 #pragma omp target
15918 #pragma omp teams distribute parallel for simd
15919 for (int i = 0; i < 10; ++i) {
15920 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15921 {
15922 bar();
15923 }
15924 }
15925 #pragma omp target
15926 #pragma omp teams distribute parallel for simd
15927 for (int i = 0; i < 10; ++i) {
15928 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15929 {
15930 bar();
15931 }
15932 }
15933 #pragma omp target
15934 #pragma omp teams distribute parallel for simd
15935 for (int i = 0; i < 10; ++i) {
15936 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15937 {
15938 bar();
15939 }
15940 }
15941 #pragma omp target
15942 #pragma omp teams distribute parallel for simd
15943 for (int i = 0; i < 10; ++i) {
15944 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15945 {
15946 bar();
15947 }
15948 }
15949 #pragma omp target
15950 #pragma omp teams distribute parallel for simd
15951 for (int i = 0; i < 10; ++i) {
15952 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15953 {
15954 bar();
15955 }
15956 }
15957 #pragma omp target
15958 #pragma omp teams distribute parallel for simd
15959 for (int i = 0; i < 10; ++i) {
15960 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15961 {
15962 #pragma omp single
15963 {
15964 bar();
15965 }
15966 }
15967 }
15968 #pragma omp target
15969 #pragma omp teams distribute parallel for simd
15970 for (int i = 0; i < 10; ++i) {
15971 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15972 for (int i = 0; i < 10; ++i)
15973 ;
15974 }
15975 #pragma omp target
15976 #pragma omp teams distribute parallel for simd
15977 for (int i = 0; i < 10; ++i) {
15978 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15979 for (int i = 0; i < 10; ++i)
15980 ;
15981 }
15982 #pragma omp target
15983 #pragma omp teams distribute parallel for simd
15984 for (int i = 0; i < 10; ++i) {
15985 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15986 {
15987 bar();
15988 }
15989 }
15990 #pragma omp target
15991 #pragma omp teams distribute parallel for simd
15992 for (int i = 0; i < 10; ++i) {
15993 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15994 {
15995 bar();
15996 }
15997 }
15998 #pragma omp target
15999 #pragma omp teams distribute parallel for simd
16000 for (int i = 0; i < 10; ++i) {
16001 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16002 bar();
16003 }
16004 #pragma omp target
16005 #pragma omp teams distribute parallel for simd
16006 for (int i = 0; i < 10; ++i) {
16007 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16008 bar();
16009 }
16010 #pragma omp target
16011 #pragma omp teams distribute parallel for simd
16012 for (int i = 0; i < 10; ++i) {
16013 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16014 bar();
16015 }
16016 #pragma omp target
16017 #pragma omp teams distribute parallel for simd
16018 for (int i = 0; i < 10; ++i) {
16019 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16020 bar();
16021 }
16022 #pragma omp target
16023 #pragma omp teams distribute parallel for simd
16024 for (int i = 0; i < 10; ++i) {
16025 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16026 bar();
16027 }
16028 #pragma omp target
16029 #pragma omp teams distribute parallel for simd
16030 for (int i = 0; i < 10; ++i) {
16031 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16032 ++a;
16033 }
16034 #pragma omp target
16035 #pragma omp teams distribute parallel for simd
16036 for (int i = 0; i < 10; ++i) {
16037 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16038 ++a;
16039 }
16040 #pragma omp target
16041 #pragma omp teams distribute parallel for simd
16042 for (int i = 0; i < 10; ++i) {
16043 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16044 ++a;
16045 }
16046 #pragma omp target
16047 #pragma omp teams distribute parallel for simd
16048 for (int i = 0; i < 10; ++i) {
16049 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16050 for (int i = 0; i < 10; ++i)
16051 ;
16052 }
16053 #pragma omp target
16054 #pragma omp teams distribute parallel for simd
16055 for (int i = 0; i < 10; ++i) {
16056 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16057 ++a;
16058 }
16059 #pragma omp target
16060 #pragma omp teams distribute parallel for simd
16061 for (int i = 0; i < 10; ++i) {
16062 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16063 ++a;
16064 }
16065 #pragma omp target
16066 #pragma omp teams distribute parallel for simd
16067 for (int i = 0; i < 10; ++i) {
16068 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16069 ++a;
16070 }
16071 #pragma omp target
16072 #pragma omp teams distribute parallel for simd
16073 for (int i = 0; i < 10; ++i) {
16074 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16075 ++a;
16076 }
16077 #pragma omp target
16078 #pragma omp teams distribute parallel for simd
16079 for (int i = 0; i < 10; ++i) {
16080 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16081 for (int i = 0; i < 10; ++i)
16082 ++a;
16083 }
16084 #pragma omp target
16085 #pragma omp teams distribute parallel for simd
16086 for (int i = 0; i < 10; ++i) {
16087 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16088 for (int i = 0; i < 10; ++i)
16089 ++a;
16090 }
16091 #pragma omp target
16092 #pragma omp teams distribute parallel for simd
16093 for (int i = 0; i < 10; ++i) {
16094 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16095 for (int i = 0; i < 10; ++i)
16096 ++a;
16097 }
16098 #pragma omp target
16099 #pragma omp teams distribute parallel for simd
16100 for (int i = 0; i < 10; ++i) {
16101 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16102 for (int i = 0; i < 10; ++i)
16103 ++a;
16104 }
16105 #pragma omp target
16106 #pragma omp teams distribute parallel for simd
16107 for (int i = 0; i < 10; ++i) {
16108 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16109 for (int i = 0; i < 10; ++i)
16110 ++a;
16111 }
16112 #pragma omp target
16113 #pragma omp teams distribute parallel for simd
16114 for (int i = 0; i < 10; ++i) {
16115 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16116 for (int i = 0; i < 10; ++i)
16117 ++a;
16118 }
16119 #pragma omp target
16120 #pragma omp teams distribute parallel for simd
16121 for (int i = 0; i < 10; ++i) {
16122 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16123 ++a;
16124 }
16125 #pragma omp target
16126 #pragma omp teams distribute parallel for simd
16127 for (int i = 0; i < 10; ++i) {
16128 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16129 for (int i = 0; i < 10; ++i)
16130 ++a;
16131 }
16132 #pragma omp target
16133 #pragma omp teams distribute parallel for simd
16134 for (int i = 0; i < 10; ++i) {
16135 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16136 for (int i = 0; i < 10; ++i)
16137 ++a;
16138 }
16139 #pragma omp target
16140 #pragma omp teams distribute parallel for simd
16141 for (int i = 0; i < 10; ++i) {
16142 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16143 for (int i = 0; i < 10; ++i)
16144 ++a;
16145 }
16146 #pragma omp target
16147 #pragma omp teams distribute parallel for simd
16148 for (int i = 0; i < 10; ++i) {
16149 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16150 for (int i = 0; i < 10; ++i)
16151 ++a;
16152 }
16153
16154 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
16155 #pragma omp teams distribute parallel for // expected-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
16156 for (int i = 0; i < 10; ++i)
16157 ;
16158 #pragma omp target
16159 #pragma omp teams distribute parallel for
16160 for (int i = 0; i < 10; ++i) {
16161 #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?}}
16162 for (int i = 0; i < 10; ++i)
16163 ;
16164 }
16165 #pragma omp target
16166 #pragma omp teams distribute parallel for
16167 for (int i = 0; i < 10; ++i) {
16168 #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?}}
16169 for (int i = 0; i < 10; ++i)
16170 ;
16171 }
16172 #pragma omp target
16173 #pragma omp teams distribute parallel for
16174 for (int i = 0; i < 10; ++i) {
16175 #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?}}
16176 for (int i = 0; i < 10; ++i)
16177 ;
16178 }
16179 #pragma omp target
16180 #pragma omp teams distribute parallel for
16181 for (int i = 0; i < 10; ++i) {
16182 #pragma omp simd // OK
16183 for (int i = 0; i < 10; ++i)
16184 ;
16185 }
16186 #pragma omp target
16187 #pragma omp teams distribute parallel for
16188 for (int i = 0; i < 10; ++i) {
16189 #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?}}
16190 for (int i = 0; i < 10; ++i)
16191 ;
16192 }
16193 #pragma omp target
16194 #pragma omp teams distribute parallel for
16195 for (int i = 0; i < 10; ++i) {
16196 #pragma omp parallel // OK
16197 for (int i = 0; i < 10; ++i)
16198 ;
16199 }
16200 #pragma omp target
16201 #pragma omp teams distribute parallel for
16202 for (int i = 0; i < 10; ++i) {
16203 #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?}}
16204 {
16205 bar();
16206 }
16207 }
16208 #pragma omp target
16209 #pragma omp teams distribute parallel for
16210 for (int i = 0; i < 10; ++i) {
16211 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}
16212 {
16213 bar();
16214 }
16215 }
16216 #pragma omp target
16217 #pragma omp teams distribute parallel for
16218 for (int i = 0; i < 10; ++i) {
16219 #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?}}
16220 {
16221 bar();
16222 }
16223 }
16224 #pragma omp target
16225 #pragma omp teams distribute parallel for
16226 for (int i = 0; i < 10; ++i) {
16227 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
16228 {
16229 bar();
16230 }
16231 }
16232 #pragma omp target
16233 #pragma omp teams distribute parallel for
16234 for (int i = 0; i < 10; ++i) {
16235 #pragma omp critical // OK
16236 {
16237 bar();
16238 }
16239 }
16240 #pragma omp target
16241 #pragma omp teams distribute parallel for
16242 for (int i = 0; i < 10; ++i) {
16243 #pragma omp parallel // OK
16244 {
16245 #pragma omp single
16246 {
16247 bar();
16248 }
16249 }
16250 }
16251 #pragma omp target
16252 #pragma omp teams distribute parallel for
16253 for (int i = 0; i < 10; ++i) {
16254 #pragma omp parallel for // OK
16255 for (int i = 0; i < 10; ++i)
16256 ;
16257 }
16258 #pragma omp target
16259 #pragma omp teams distribute parallel for
16260 for (int i = 0; i < 10; ++i) {
16261 #pragma omp parallel for simd // OK
16262 for (int i = 0; i < 10; ++i)
16263 ;
16264 }
16265 #pragma omp target
16266 #pragma omp teams distribute parallel for
16267 for (int i = 0; i < 10; ++i) {
16268 #pragma omp parallel sections // OK
16269 {
16270 bar();
16271 }
16272 }
16273 #pragma omp target
16274 #pragma omp teams distribute parallel for
16275 for (int i = 0; i < 10; ++i) {
16276 #pragma omp task // OK
16277 {
16278 bar();
16279 }
16280 }
16281 #pragma omp target
16282 #pragma omp teams distribute parallel for
16283 for (int i = 0; i < 10; ++i) {
16284 #pragma omp taskyield // OK
16285 bar();
16286 }
16287 #pragma omp target
16288 #pragma omp teams distribute parallel for
16289 for (int i = 0; i < 10; ++i) {
16290 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
16291 bar();
16292 }
16293 #pragma omp target
16294 #pragma omp teams distribute parallel for
16295 for (int i = 0; i < 10; ++i) {
16296 #pragma omp taskwait // OK
16297 bar();
16298 }
16299 #pragma omp target
16300 #pragma omp teams distribute parallel for
16301 for (int i = 0; i < 10; ++i) {
16302 #pragma omp flush // OK
16303 bar();
16304 }
16305 #pragma omp target
16306 #pragma omp teams distribute parallel for
16307 for (int i = 0; i < 10; ++i) {
16308 #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?}}
16309 bar();
16310 }
16311 #pragma omp target
16312 #pragma omp teams distribute parallel for
16313 for (int i = 0; i < 10; ++i) {
16314 #pragma omp atomic // OK
16315 ++a;
16316 }
16317 #pragma omp target
16318 #pragma omp teams distribute parallel for
16319 for (int i = 0; i < 10; ++i) {
16320 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
16321 ++a;
16322 }
16323 #pragma omp target
16324 #pragma omp teams distribute parallel for
16325 for (int i = 0; i < 10; ++i) {
16326 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
16327 ++a;
16328 }
16329 #pragma omp target
16330 #pragma omp teams distribute parallel for
16331 for (int i = 0; i < 10; ++i) {
16332 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
16333 for (int i = 0; i < 10; ++i)
16334 ;
16335 }
16336 #pragma omp target
16337 #pragma omp teams distribute parallel for
16338 for (int i = 0; i < 10; ++i) {
16339 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
16340 ++a;
16341 }
16342 #pragma omp target
16343 #pragma omp teams distribute parallel for
16344 for (int i = 0; i < 10; ++i) {
16345 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
16346 ++a;
16347 }
16348 #pragma omp target
16349 #pragma omp teams distribute parallel for
16350 for (int i = 0; i < 10; ++i) {
16351 #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?}}
16352 ++a;
16353 }
16354 #pragma omp target
16355 #pragma omp teams distribute parallel for
16356 for (int i = 0; i < 10; ++i) {
16357 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
16358 ++a;
16359 }
16360 #pragma omp target
16361 #pragma omp teams distribute parallel for
16362 for (int i = 0; i < 10; ++i) {
16363 #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?}}
16364 for (int i = 0; i < 10; ++i)
16365 ++a;
16366 }
16367 #pragma omp target
16368 #pragma omp teams distribute parallel for
16369 for (int i = 0; i < 10; ++i) {
16370 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
16371 for (int i = 0; i < 10; ++i)
16372 ++a;
16373 }
16374 #pragma omp target
16375 #pragma omp teams distribute parallel for
16376 for (int i = 0; i < 10; ++i) {
16377 #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?}}
16378 for (int i = 0; i < 10; ++i)
16379 ++a;
16380 }
16381 #pragma omp target
16382 #pragma omp teams distribute parallel for
16383 for (int i = 0; i < 10; ++i) {
16384 #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?}}
16385 for (int i = 0; i < 10; ++i)
16386 ++a;
16387 }
16388 #pragma omp target
16389 #pragma omp teams distribute parallel for
16390 for (int i = 0; i < 10; ++i) {
16391 #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?}}
16392 for (int i = 0; i < 10; ++i)
16393 ++a;
16394 }
16395 #pragma omp target
16396 #pragma omp teams distribute parallel for
16397 for (int i = 0; i < 10; ++i) {
16398 #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?}}
16399 for (int i = 0; i < 10; ++i)
16400 ++a;
16401 }
16402 #pragma omp target
16403 #pragma omp teams distribute parallel for
16404 for (int i = 0; i < 10; ++i) {
16405 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
16406 ++a;
16407 }
16408 #pragma omp target
16409 #pragma omp teams distribute parallel for
16410 for (int i = 0; i < 10; ++i) {
16411 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
16412 for (int i = 0; i < 10; ++i)
16413 ++a;
16414 }
16415 #pragma omp target
16416 #pragma omp teams distribute parallel for
16417 for (int i = 0; i < 10; ++i) {
16418 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
16419 for (int i = 0; i < 10; ++i)
16420 ++a;
16421 }
16422 #pragma omp target
16423 #pragma omp teams distribute parallel for
16424 for (int i = 0; i < 10; ++i) {
16425 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
16426 for (int i = 0; i < 10; ++i)
16427 ++a;
16428 }
16429 #pragma omp target
16430 #pragma omp teams distribute parallel for
16431 for (int i = 0; i < 10; ++i) {
16432 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
16433 for (int i = 0; i < 10; ++i)
16434 ++a;
16435 }
16436
16437 // TARGET TEAMS DIRECTIVE
16438 #pragma omp target teams
16439 #pragma omp parallel
16440 bar();
16441 #pragma omp target teams
16442 #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?}}
16443 for (int i = 0; i < 10; ++i)
16444 ;
16445 #pragma omp target teams
16446 #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?}}
16447 for (int i = 0; i < 10; ++i)
16448 ;
16449 #pragma omp target teams
16450 #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?}}
16451 for (int i = 0; i < 10; ++i)
16452 ;
16453 #pragma omp target teams
16454 #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?}}
16455 {
16456 bar();
16457 }
16458 #pragma omp target teams
16459 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}
16460 {
16461 bar();
16462 }
16463 #pragma omp target teams
16464 #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?}}
16465 bar();
16466
16467 #pragma omp target teams
16468 #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?}}
16469 {
16470 bar();
16471 }
16472 #pragma omp target teams
16473 #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?}}
16474 {
16475 bar();
16476 }
16477 #pragma omp target teams
16478 #pragma omp parallel for
16479 for (int i = 0; i < 10; ++i)
16480 ;
16481 #pragma omp target teams
16482 #pragma omp parallel for simd
16483 for (int i = 0; i < 10; ++i)
16484 ;
16485 #pragma omp target teams
16486 #pragma omp parallel sections
16487 {
16488 bar();
16489 }
16490 #pragma omp target teams
16491 #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?}}
16492 {
16493 bar();
16494 }
16495 #pragma omp target teams
16496 {
16497 #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?}}
16498 bar();
16499 }
16500 #pragma omp target teams
16501 {
16502 #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?}}
16503 bar();
16504 }
16505 #pragma omp target teams
16506 {
16507 #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?}}
16508 bar();
16509 }
16510 #pragma omp target teams
16511 {
16512 #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?}}
16513 bar();
16514 }
16515 #pragma omp target teams
16516 {
16517 #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?}}
16518 bar();
16519 }
16520 #pragma omp target teams
16521 {
16522 #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?}}
16523 ++a;
16524 }
16525 #pragma omp target teams
16526 {
16527 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}
16528 ++a;
16529 }
16530 #pragma omp target teams
16531 {
16532 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}
16533 ++a;
16534 }
16535 #pragma omp target teams
16536 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
16537 for (int i = 0; i < 10; ++i)
16538 ;
16539 #pragma omp target teams
16540 {
16541 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}
16542 }
16543 #pragma omp target teams
16544 {
16545 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}
16546 }
16547 #pragma omp target teams
16548 {
16549 #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?}}
16550 ++a;
16551 }
16552 #pragma omp target teams
16553 {
16554 #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?}}
16555 for (int i = 0; i < 10; ++i)
16556 ++a;
16557 }
16558 #pragma omp target teams
16559 #pragma omp distribute
16560 for (int i = 0; i < 10; ++i)
16561 ;
16562 #pragma omp target teams
16563 {
16564 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}
16565 ++a;
16566 }
16567 #pragma omp target teams
16568 #pragma omp distribute parallel for
16569 for (int i = 0; i < 10; ++i)
16570 ;
16571 #pragma omp target teams
16572 {
16573 #pragma omp distribute parallel for
16574 for (int i = 0; i < 10; ++i)
16575 ;
16576 #pragma omp distribute parallel for
16577 for (int j = 0; j < 10; ++j)
16578 ;
16579 }
16580 #pragma omp target teams
16581 {
16582 #pragma omp distribute parallel for simd
16583 for (int i = 0; i < 10; ++i)
16584 ;
16585 #pragma omp distribute parallel for simd
16586 for (int j = 0; j < 10; ++j)
16587 ;
16588 }
16589 #pragma omp target teams
16590 {
16591 #pragma omp distribute simd
16592 for (int i = 0; i < 10; ++i)
16593 ;
16594 #pragma omp distribute simd
16595 for (int j = 0; j < 10; ++j)
16596 ;
16597 }
16598 #pragma omp target teams
16599 {
16600 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}
16601 for (int i = 0; i < 10; ++i)
16602 ;
16603 }
16604 #pragma omp target teams
16605 {
16606 #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?}}
16607 for (int i = 0; i < 10; ++i)
16608 ;
16609 }
16610 #pragma omp target teams
16611 {
16612 #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?}}
16613 for (int i = 0; i < 10; ++i)
16614 ;
16615 }
16616 #pragma omp target teams
16617 {
16618 #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?}}
16619 for (int i = 0; i < 10; ++i)
16620 ;
16621 }
16622 #pragma omp target teams
16623 {
16624 #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?}}
16625 for (int i = 0; i < 10; ++i)
16626 ;
16627 }
16628 #pragma omp target teams
16629 {
16630 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}
16631 a++;
16632 }
16633 #pragma omp target teams
16634 {
16635 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}
16636 for (int i = 0; i < 10; ++i)
16637 ;
16638 }
16639 #pragma omp target teams
16640 {
16641 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
16642 for (int i = 0; i < 10; ++i)
16643 ;
16644 }
16645 #pragma omp target teams
16646 {
16647 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}
16648 for (int i = 0; i < 10; ++i)
16649 ;
16650 }
16651 #pragma omp target teams
16652 {
16653 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}
16654 for (int i = 0; i < 10; ++i)
16655 ;
16656 }
16657
16658 // TARGET TEAMS DISTRIBUTE DIRECTIVE
16659 #pragma omp target teams distribute // OK
16660 for (int i = 0; i < 10; ++i)
16661 ;
16662 #pragma omp target teams distribute
16663 for (int i = 0; i < 10; ++i) {
16664 #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?}}
16665 for (int i = 0; i < 10; ++i)
16666 ;
16667 }
16668 #pragma omp target teams distribute
16669 for (int i = 0; i < 10; ++i) {
16670 #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?}}
16671 for (int i = 0; i < 10; ++i)
16672 ;
16673 }
16674 #pragma omp target teams distribute
16675 for (int i = 0; i < 10; ++i) {
16676 #pragma omp for // OK
16677 for (int i = 0; i < 10; ++i)
16678 ;
16679 }
16680 #pragma omp target teams distribute
16681 for (int i = 0; i < 10; ++i) {
16682 #pragma omp simd // OK
16683 for (int i = 0; i < 10; ++i)
16684 ;
16685 }
16686 #pragma omp target teams distribute
16687 for (int i = 0; i < 10; ++i) {
16688 #pragma omp for simd // OK
16689 for (int i = 0; i < 10; ++i)
16690 ;
16691 }
16692 #pragma omp target teams distribute
16693 for (int i = 0; i < 10; ++i) {
16694 #pragma omp parallel // OK
16695 for (int i = 0; i < 10; ++i)
16696 ;
16697 }
16698 #pragma omp target teams distribute
16699 for (int i = 0; i < 10; ++i) {
16700 #pragma omp sections // OK
16701 {
16702 bar();
16703 }
16704 }
16705 #pragma omp target teams distribute
16706 for (int i = 0; i < 10; ++i) {
16707 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}
16708 {
16709 bar();
16710 }
16711 }
16712 #pragma omp target teams distribute
16713 for (int i = 0; i < 10; ++i) {
16714 #pragma omp single // OK
16715 {
16716 bar();
16717 }
16718 }
16719 #pragma omp target teams distribute
16720 for (int i = 0; i < 10; ++i) {
16721 #pragma omp master // OK
16722 {
16723 bar();
16724 }
16725 }
16726 #pragma omp target teams distribute
16727 for (int i = 0; i < 10; ++i) {
16728 #pragma omp critical // OK
16729 {
16730 bar();
16731 }
16732 }
16733 #pragma omp target teams distribute
16734 for (int i = 0; i < 10; ++i) {
16735 #pragma omp parallel // OK
16736 {
16737 #pragma omp single
16738 {
16739 bar();
16740 }
16741 }
16742 }
16743 #pragma omp target teams distribute
16744 for (int i = 0; i < 10; ++i) {
16745 #pragma omp parallel for // OK
16746 for (int i = 0; i < 10; ++i)
16747 ;
16748 }
16749 #pragma omp target teams distribute
16750 for (int i = 0; i < 10; ++i) {
16751 #pragma omp parallel for simd // OK
16752 for (int i = 0; i < 10; ++i)
16753 ;
16754 }
16755 #pragma omp target teams distribute
16756 for (int i = 0; i < 10; ++i) {
16757 #pragma omp parallel sections // OK
16758 {
16759 bar();
16760 }
16761 }
16762 #pragma omp target teams distribute
16763 for (int i = 0; i < 10; ++i) {
16764 #pragma omp task // OK
16765 {
16766 bar();
16767 }
16768 }
16769 #pragma omp target teams distribute
16770 for (int i = 0; i < 10; ++i) {
16771 #pragma omp taskyield // OK
16772 bar();
16773 }
16774 #pragma omp target teams distribute
16775 for (int i = 0; i < 10; ++i) {
16776 #pragma omp barrier // OK
16777 bar();
16778 }
16779 #pragma omp target teams distribute
16780 for (int i = 0; i < 10; ++i) {
16781 #pragma omp taskwait // OK
16782 bar();
16783 }
16784 #pragma omp target teams distribute
16785 for (int i = 0; i < 10; ++i) {
16786 #pragma omp flush // OK
16787 bar();
16788 }
16789 #pragma omp target teams distribute
16790 for (int i = 0; i < 10; ++i) {
16791 #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?}}
16792 bar();
16793 }
16794 #pragma omp target teams distribute
16795 for (int i = 0; i < 10; ++i) {
16796 #pragma omp atomic // OK
16797 ++a;
16798 }
16799 #pragma omp target teams distribute
16800 for (int i = 0; i < 10; ++i) {
16801 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16802 ++a;
16803 }
16804 #pragma omp target teams distribute
16805 for (int i = 0; i < 10; ++i) {
16806 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16807 ++a;
16808 }
16809 #pragma omp target teams distribute
16810 for (int i = 0; i < 10; ++i) {
16811 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16812 for (int i = 0; i < 10; ++i)
16813 ;
16814 }
16815 #pragma omp target teams distribute
16816 for (int i = 0; i < 10; ++i) {
16817 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16818 ++a;
16819 }
16820 #pragma omp target teams distribute
16821 for (int i = 0; i < 10; ++i) {
16822 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16823 ++a;
16824 }
16825 #pragma omp target teams distribute
16826 for (int i = 0; i < 10; ++i) {
16827 #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?}}
16828 ++a;
16829 }
16830 #pragma omp target teams distribute
16831 for (int i = 0; i < 10; ++i) {
16832 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16833 ++a;
16834 }
16835 #pragma omp target teams distribute
16836 for (int i = 0; i < 10; ++i) {
16837 #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?}}
16838 for (int i = 0; i < 10; ++i)
16839 ++a;
16840 }
16841 #pragma omp target teams distribute
16842 for (int i = 0; i < 10; ++i) {
16843 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16844 for (int i = 0; i < 10; ++i)
16845 ++a;
16846 }
16847 #pragma omp target teams distribute
16848 for (int i = 0; i < 10; ++i) {
16849 #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?}}
16850 for (int i = 0; i < 10; ++i)
16851 ++a;
16852 }
16853 #pragma omp target teams distribute
16854 for (int i = 0; i < 10; ++i) {
16855 #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?}}
16856 for (int i = 0; i < 10; ++i)
16857 ++a;
16858 }
16859 #pragma omp target teams distribute
16860 for (int i = 0; i < 10; ++i) {
16861 #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?}}
16862 for (int i = 0; i < 10; ++i)
16863 ++a;
16864 }
16865 #pragma omp target teams distribute
16866 for (int i = 0; i < 10; ++i) {
16867 #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?}}
16868 for (int i = 0; i < 10; ++i)
16869 ++a;
16870 }
16871 #pragma omp target teams distribute
16872 for (int i = 0; i < 10; ++i) {
16873 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16874 ++a;
16875 }
16876 #pragma omp target teams distribute
16877 for (int i = 0; i < 10; ++i) {
16878 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16879 for (int i = 0; i < 10; ++i)
16880 ++a;
16881 }
16882 #pragma omp target teams distribute
16883 for (int i = 0; i < 10; ++i) {
16884 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16885 for (int i = 0; i < 10; ++i)
16886 ++a;
16887 }
16888 #pragma omp target teams distribute
16889 for (int i = 0; i < 10; ++i) {
16890 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16891 for (int i = 0; i < 10; ++i)
16892 ++a;
16893 }
16894 #pragma omp target teams distribute
16895 for (int i = 0; i < 10; ++i) {
16896 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16897 for (int i = 0; i < 10; ++i)
16898 ++a;
16899 }
16900
16901 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
16902 #pragma omp target teams distribute parallel for // OK
16903 for (int i = 0; i < 10; ++i)
16904 ;
16905 #pragma omp target teams distribute parallel for
16906 for (int i = 0; i < 10; ++i) {
16907 #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?}}
16908 for (int i = 0; i < 10; ++i)
16909 ;
16910 }
16911 #pragma omp target teams distribute parallel for
16912 for (int i = 0; i < 10; ++i) {
16913 #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?}}
16914 for (int i = 0; i < 10; ++i)
16915 ;
16916 }
16917 #pragma omp target teams distribute parallel for
16918 for (int i = 0; i < 10; ++i) {
16919 #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?}}
16920 for (int i = 0; i < 10; ++i)
16921 ;
16922 }
16923 #pragma omp target teams distribute parallel for
16924 for (int i = 0; i < 10; ++i) {
16925 #pragma omp simd // OK
16926 for (int i = 0; i < 10; ++i)
16927 ;
16928 }
16929 #pragma omp target teams distribute parallel for
16930 for (int i = 0; i < 10; ++i) {
16931 #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?}}
16932 for (int i = 0; i < 10; ++i)
16933 ;
16934 }
16935 #pragma omp target teams distribute parallel for
16936 for (int i = 0; i < 10; ++i) {
16937 #pragma omp parallel // OK
16938 for (int i = 0; i < 10; ++i)
16939 ;
16940 }
16941 #pragma omp target teams distribute parallel for
16942 for (int i = 0; i < 10; ++i) {
16943 #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?}}
16944 {
16945 bar();
16946 }
16947 }
16948 #pragma omp target teams distribute parallel for
16949 for (int i = 0; i < 10; ++i) {
16950 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}}
16951 {
16952 bar();
16953 }
16954 }
16955 #pragma omp target teams distribute parallel for
16956 for (int i = 0; i < 10; ++i) {
16957 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
16958 {
16959 bar();
16960 }
16961 }
16962 #pragma omp target teams distribute parallel for
16963 for (int i = 0; i < 10; ++i) {
16964 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
16965 {
16966 bar();
16967 }
16968 }
16969 #pragma omp target teams distribute parallel for
16970 for (int i = 0; i < 10; ++i) {
16971 #pragma omp critical // OK
16972 {
16973 bar();
16974 }
16975 }
16976 #pragma omp target teams distribute parallel for
16977 for (int i = 0; i < 10; ++i) {
16978 #pragma omp parallel // OK
16979 {
16980 #pragma omp single
16981 {
16982 bar();
16983 }
16984 }
16985 }
16986 #pragma omp target teams distribute parallel for
16987 for (int i = 0; i < 10; ++i) {
16988 #pragma omp parallel for // OK
16989 for (int i = 0; i < 10; ++i)
16990 ;
16991 }
16992 #pragma omp target teams distribute parallel for
16993 for (int i = 0; i < 10; ++i) {
16994 #pragma omp parallel for simd // OK
16995 for (int i = 0; i < 10; ++i)
16996 ;
16997 }
16998 #pragma omp target teams distribute parallel for
16999 for (int i = 0; i < 10; ++i) {
17000 #pragma omp parallel sections // OK
17001 {
17002 bar();
17003 }
17004 }
17005 #pragma omp target teams distribute parallel for
17006 for (int i = 0; i < 10; ++i) {
17007 #pragma omp task // OK
17008 {
17009 bar();
17010 }
17011 }
17012 #pragma omp target teams distribute parallel for
17013 for (int i = 0; i < 10; ++i) {
17014 #pragma omp taskyield // OK
17015 bar();
17016 }
17017 #pragma omp target teams distribute parallel for
17018 for (int i = 0; i < 10; ++i) {
17019 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
17020 bar();
17021 }
17022 #pragma omp target teams distribute parallel for
17023 for (int i = 0; i < 10; ++i) {
17024 #pragma omp taskwait // OK
17025 bar();
17026 }
17027 #pragma omp target teams distribute parallel for
17028 for (int i = 0; i < 10; ++i) {
17029 #pragma omp flush // OK
17030 bar();
17031 }
17032 #pragma omp target teams distribute parallel for
17033 for (int i = 0; i < 10; ++i) {
17034 #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?}}
17035 bar();
17036 }
17037 #pragma omp target teams distribute parallel for
17038 for (int i = 0; i < 10; ++i) {
17039 #pragma omp atomic // OK
17040 ++a;
17041 }
17042 #pragma omp target teams distribute parallel for
17043 for (int i = 0; i < 10; ++i) {
17044 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17045 ++a;
17046 }
17047 #pragma omp target teams distribute parallel for
17048 for (int i = 0; i < 10; ++i) {
17049 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17050 ++a;
17051 }
17052 #pragma omp target teams distribute parallel for
17053 for (int i = 0; i < 10; ++i) {
17054 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17055 for (int i = 0; i < 10; ++i)
17056 ;
17057 }
17058 #pragma omp target teams distribute parallel for
17059 for (int i = 0; i < 10; ++i) {
17060 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17061 ++a;
17062 }
17063 #pragma omp target teams distribute parallel for
17064 for (int i = 0; i < 10; ++i) {
17065 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17066 ++a;
17067 }
17068 #pragma omp target teams distribute parallel for
17069 for (int i = 0; i < 10; ++i) {
17070 #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?}}
17071 ++a;
17072 }
17073 #pragma omp target teams distribute parallel for
17074 for (int i = 0; i < 10; ++i) {
17075 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17076 ++a;
17077 }
17078 #pragma omp target teams distribute parallel for
17079 for (int i = 0; i < 10; ++i) {
17080 #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?}}
17081 for (int i = 0; i < 10; ++i)
17082 ++a;
17083 }
17084 #pragma omp target teams distribute parallel for
17085 for (int i = 0; i < 10; ++i) {
17086 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17087 for (int i = 0; i < 10; ++i)
17088 ++a;
17089 }
17090 #pragma omp target teams distribute parallel for
17091 for (int i = 0; i < 10; ++i) {
17092 #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?}}
17093 for (int i = 0; i < 10; ++i)
17094 ++a;
17095 }
17096 #pragma omp target teams distribute parallel for
17097 for (int i = 0; i < 10; ++i) {
17098 #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?}}
17099 for (int i = 0; i < 10; ++i)
17100 ++a;
17101 }
17102 #pragma omp target teams distribute parallel for
17103 for (int i = 0; i < 10; ++i) {
17104 #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?}}
17105 for (int i = 0; i < 10; ++i)
17106 ++a;
17107 }
17108 #pragma omp target teams distribute parallel for
17109 for (int i = 0; i < 10; ++i) {
17110 #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?}}
17111 for (int i = 0; i < 10; ++i)
17112 ++a;
17113 }
17114 #pragma omp target teams distribute parallel for
17115 for (int i = 0; i < 10; ++i) {
17116 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17117 ++a;
17118 }
17119 #pragma omp target teams distribute parallel for
17120 for (int i = 0; i < 10; ++i) {
17121 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17122 for (int i = 0; i < 10; ++i)
17123 ++a;
17124 }
17125 #pragma omp target teams distribute parallel for
17126 for (int i = 0; i < 10; ++i) {
17127 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17128 for (int i = 0; i < 10; ++i)
17129 ++a;
17130 }
17131 #pragma omp target teams distribute parallel for
17132 for (int i = 0; i < 10; ++i) {
17133 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17134 for (int i = 0; i < 10; ++i)
17135 ++a;
17136 }
17137 #pragma omp target teams distribute parallel for
17138 for (int i = 0; i < 10; ++i) {
17139 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17140 for (int i = 0; i < 10; ++i)
17141 ++a;
17142 }
17143
17144 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
17145 #pragma omp target teams distribute parallel for simd // OK
17146 for (int i = 0; i < 10; ++i)
17147 ;
17148 #pragma omp target teams distribute parallel for simd
17149 for (int i = 0; i < 10; ++i) {
17150 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17151 for (int i = 0; i < 10; ++i)
17152 ;
17153 }
17154 #pragma omp target teams distribute parallel for simd
17155 for (int i = 0; i < 10; ++i) {
17156 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17157 for (int i = 0; i < 10; ++i)
17158 ;
17159 }
17160 #pragma omp target teams distribute parallel for simd
17161 for (int i = 0; i < 10; ++i) {
17162 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17163 for (int i = 0; i < 10; ++i)
17164 ;
17165 }
17166 #pragma omp target teams distribute parallel for simd
17167 for (int i = 0; i < 10; ++i) {
17168 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
17169 for (int i = 0; i < 10; ++i)
17170 ;
17171 }
17172 #pragma omp target teams distribute parallel for simd
17173 for (int i = 0; i < 10; ++i) {
17174 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17175 for (int i = 0; i < 10; ++i)
17176 ;
17177 }
17178 #pragma omp target teams distribute parallel for simd
17179 for (int i = 0; i < 10; ++i) {
17180 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17181 for (int i = 0; i < 10; ++i)
17182 ;
17183 }
17184 #pragma omp target teams distribute parallel for simd
17185 for (int i = 0; i < 10; ++i) {
17186 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17187 {
17188 bar();
17189 }
17190 }
17191 #pragma omp target teams distribute parallel for simd
17192 for (int i = 0; i < 10; ++i) {
17193 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17194 {
17195 bar();
17196 }
17197 }
17198 #pragma omp target teams distribute parallel for simd
17199 for (int i = 0; i < 10; ++i) {
17200 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17201 {
17202 bar();
17203 }
17204 }
17205 #pragma omp target teams distribute parallel for simd
17206 for (int i = 0; i < 10; ++i) {
17207 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17208 {
17209 bar();
17210 }
17211 }
17212 #pragma omp target teams distribute parallel for simd
17213 for (int i = 0; i < 10; ++i) {
17214 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17215 {
17216 bar();
17217 }
17218 }
17219 #pragma omp target teams distribute parallel for simd
17220 for (int i = 0; i < 10; ++i) {
17221 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17222 {
17223 #pragma omp single
17224 {
17225 bar();
17226 }
17227 }
17228 }
17229 #pragma omp target teams distribute parallel for simd
17230 for (int i = 0; i < 10; ++i) {
17231 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17232 for (int i = 0; i < 10; ++i)
17233 ;
17234 }
17235 #pragma omp target teams distribute parallel for simd
17236 for (int i = 0; i < 10; ++i) {
17237 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17238 for (int i = 0; i < 10; ++i)
17239 ;
17240 }
17241 #pragma omp target teams distribute parallel for simd
17242 for (int i = 0; i < 10; ++i) {
17243 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17244 {
17245 bar();
17246 }
17247 }
17248 #pragma omp target teams distribute parallel for simd
17249 for (int i = 0; i < 10; ++i) {
17250 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17251 {
17252 bar();
17253 }
17254 }
17255 #pragma omp target teams distribute parallel for simd
17256 for (int i = 0; i < 10; ++i) {
17257 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17258 bar();
17259 }
17260 #pragma omp target teams distribute parallel for simd
17261 for (int i = 0; i < 10; ++i) {
17262 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17263 bar();
17264 }
17265 #pragma omp target teams distribute parallel for simd
17266 for (int i = 0; i < 10; ++i) {
17267 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17268 bar();
17269 }
17270 #pragma omp target teams distribute parallel for simd
17271 for (int i = 0; i < 10; ++i) {
17272 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17273 bar();
17274 }
17275 #pragma omp target teams distribute parallel for simd
17276 for (int i = 0; i < 10; ++i) {
17277 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17278 bar();
17279 }
17280 #pragma omp target teams distribute parallel for simd
17281 for (int i = 0; i < 10; ++i) {
17282 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
17283 ++a;
17284 }
17285 #pragma omp target teams distribute parallel for simd
17286 for (int i = 0; i < 10; ++i) {
17287 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17288 ++a;
17289 }
17290 #pragma omp target teams distribute parallel for simd
17291 for (int i = 0; i < 10; ++i) {
17292 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17293 ++a;
17294 }
17295 #pragma omp target teams distribute parallel for simd
17296 for (int i = 0; i < 10; ++i) {
17297 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17298 for (int i = 0; i < 10; ++i)
17299 ;
17300 }
17301 #pragma omp target teams distribute parallel for simd
17302 for (int i = 0; i < 10; ++i) {
17303 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17304 ++a;
17305 }
17306 #pragma omp target teams distribute parallel for simd
17307 for (int i = 0; i < 10; ++i) {
17308 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17309 ++a;
17310 }
17311 #pragma omp target teams distribute parallel for simd
17312 for (int i = 0; i < 10; ++i) {
17313 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17314 ++a;
17315 }
17316 #pragma omp target teams distribute parallel for simd
17317 for (int i = 0; i < 10; ++i) {
17318 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17319 ++a;
17320 }
17321 #pragma omp target teams distribute parallel for simd
17322 for (int i = 0; i < 10; ++i) {
17323 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17324 for (int i = 0; i < 10; ++i)
17325 ++a;
17326 }
17327 #pragma omp target teams distribute parallel for simd
17328 for (int i = 0; i < 10; ++i) {
17329 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17330 for (int i = 0; i < 10; ++i)
17331 ++a;
17332 }
17333 #pragma omp target teams distribute parallel for simd
17334 for (int i = 0; i < 10; ++i) {
17335 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17336 for (int i = 0; i < 10; ++i)
17337 ++a;
17338 }
17339 #pragma omp target teams distribute parallel for simd
17340 for (int i = 0; i < 10; ++i) {
17341 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17342 for (int i = 0; i < 10; ++i)
17343 ++a;
17344 }
17345 #pragma omp target teams distribute parallel for simd
17346 for (int i = 0; i < 10; ++i) {
17347 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17348 for (int i = 0; i < 10; ++i)
17349 ++a;
17350 }
17351 #pragma omp target teams distribute parallel for simd
17352 for (int i = 0; i < 10; ++i) {
17353 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17354 for (int i = 0; i < 10; ++i)
17355 ;
17356 }
17357 #pragma omp target teams distribute parallel for simd
17358 for (int i = 0; i < 10; ++i) {
17359 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17360 a++;
17361 }
17362 #pragma omp target teams distribute parallel for simd
17363 for (int i = 0; i < 10; ++i) {
17364 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17365 for (int i = 0; i < 10; ++i)
17366 ;
17367 }
17368 #pragma omp target teams distribute parallel for simd
17369 for (int i = 0; i < 10; ++i) {
17370 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17371 for (int i = 0; i < 10; ++i)
17372 ;
17373 }
17374 #pragma omp target teams distribute parallel for simd
17375 for (int i = 0; i < 10; ++i) {
17376 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17377 for (int i = 0; i < 10; ++i)
17378 ;
17379 }
17380 #pragma omp target teams distribute parallel for simd
17381 for (int i = 0; i < 10; ++i) {
17382 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17383 for (int i = 0; i < 10; ++i)
17384 ;
17385 }
17386
17387 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE
17388 #pragma omp target teams distribute simd // OK
17389 for (int i = 0; i < 10; ++i)
17390 ;
17391 #pragma omp target teams distribute simd
17392 for (int i = 0; i < 10; ++i) {
17393 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17394 for (int i = 0; i < 10; ++i)
17395 ;
17396 }
17397 #pragma omp target teams distribute simd
17398 for (int i = 0; i < 10; ++i) {
17399 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17400 for (int i = 0; i < 10; ++i)
17401 ;
17402 }
17403 #pragma omp target teams distribute simd
17404 for (int i = 0; i < 10; ++i) {
17405 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17406 for (int i = 0; i < 10; ++i)
17407 ;
17408 }
17409 #pragma omp target teams distribute simd
17410 for (int i = 0; i < 10; ++i) {
17411 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
17412 for (int i = 0; i < 10; ++i)
17413 ;
17414 }
17415 #pragma omp target teams distribute simd
17416 for (int i = 0; i < 10; ++i) {
17417 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17418 for (int i = 0; i < 10; ++i)
17419 ;
17420 }
17421 #pragma omp target teams distribute simd
17422 for (int i = 0; i < 10; ++i) {
17423 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17424 for (int i = 0; i < 10; ++i)
17425 ;
17426 }
17427 #pragma omp target teams distribute simd
17428 for (int i = 0; i < 10; ++i) {
17429 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17430 {
17431 bar();
17432 }
17433 }
17434 #pragma omp target teams distribute simd
17435 for (int i = 0; i < 10; ++i) {
17436 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17437 {
17438 bar();
17439 }
17440 }
17441 #pragma omp target teams distribute simd
17442 for (int i = 0; i < 10; ++i) {
17443 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17444 {
17445 bar();
17446 }
17447 }
17448 #pragma omp target teams distribute simd
17449 for (int i = 0; i < 10; ++i) {
17450 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17451 {
17452 bar();
17453 }
17454 }
17455 #pragma omp target teams distribute simd
17456 for (int i = 0; i < 10; ++i) {
17457 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17458 {
17459 bar();
17460 }
17461 }
17462 #pragma omp target teams distribute simd
17463 for (int i = 0; i < 10; ++i) {
17464 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17465 {
17466 #pragma omp single
17467 {
17468 bar();
17469 }
17470 }
17471 }
17472 #pragma omp target teams distribute simd
17473 for (int i = 0; i < 10; ++i) {
17474 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17475 for (int i = 0; i < 10; ++i)
17476 ;
17477 }
17478 #pragma omp target teams distribute simd
17479 for (int i = 0; i < 10; ++i) {
17480 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17481 for (int i = 0; i < 10; ++i)
17482 ;
17483 }
17484 #pragma omp target teams distribute simd
17485 for (int i = 0; i < 10; ++i) {
17486 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17487 {
17488 bar();
17489 }
17490 }
17491 #pragma omp target teams distribute simd
17492 for (int i = 0; i < 10; ++i) {
17493 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17494 {
17495 bar();
17496 }
17497 }
17498 #pragma omp target teams distribute simd
17499 for (int i = 0; i < 10; ++i) {
17500 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17501 bar();
17502 }
17503 #pragma omp target teams distribute simd
17504 for (int i = 0; i < 10; ++i) {
17505 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17506 bar();
17507 }
17508 #pragma omp target teams distribute simd
17509 for (int i = 0; i < 10; ++i) {
17510 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17511 bar();
17512 }
17513 #pragma omp target teams distribute simd
17514 for (int i = 0; i < 10; ++i) {
17515 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17516 bar();
17517 }
17518 #pragma omp target teams distribute simd
17519 for (int i = 0; i < 10; ++i) {
17520 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17521 bar();
17522 }
17523 #pragma omp target teams distribute simd
17524 for (int i = 0; i < 10; ++i) {
17525 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
17526 ++a;
17527 }
17528 #pragma omp target teams distribute simd
17529 for (int i = 0; i < 10; ++i) {
17530 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17531 ++a;
17532 }
17533 #pragma omp target teams distribute simd
17534 for (int i = 0; i < 10; ++i) {
17535 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17536 ++a;
17537 }
17538 #pragma omp target teams distribute simd
17539 for (int i = 0; i < 10; ++i) {
17540 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17541 for (int i = 0; i < 10; ++i)
17542 ;
17543 }
17544 #pragma omp target teams distribute simd
17545 for (int i = 0; i < 10; ++i) {
17546 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17547 ++a;
17548 }
17549 #pragma omp target teams distribute simd
17550 for (int i = 0; i < 10; ++i) {
17551 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17552 ++a;
17553 }
17554 #pragma omp target teams distribute simd
17555 for (int i = 0; i < 10; ++i) {
17556 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17557 ++a;
17558 }
17559 #pragma omp target teams distribute simd
17560 for (int i = 0; i < 10; ++i) {
17561 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17562 ++a;
17563 }
17564 #pragma omp target teams distribute simd
17565 for (int i = 0; i < 10; ++i) {
17566 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17567 for (int i = 0; i < 10; ++i)
17568 ++a;
17569 }
17570 #pragma omp target teams distribute simd
17571 for (int i = 0; i < 10; ++i) {
17572 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17573 for (int i = 0; i < 10; ++i)
17574 ++a;
17575 }
17576 #pragma omp target teams distribute simd
17577 for (int i = 0; i < 10; ++i) {
17578 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17579 for (int i = 0; i < 10; ++i)
17580 ++a;
17581 }
17582 #pragma omp target teams distribute simd
17583 for (int i = 0; i < 10; ++i) {
17584 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17585 for (int i = 0; i < 10; ++i)
17586 ++a;
17587 }
17588 #pragma omp target teams distribute simd
17589 for (int i = 0; i < 10; ++i) {
17590 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17591 for (int i = 0; i < 10; ++i)
17592 ++a;
17593 }
17594 #pragma omp target teams distribute simd
17595 for (int i = 0; i < 10; ++i) {
17596 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17597 for (int i = 0; i < 10; ++i)
17598 ;
17599 }
17600 #pragma omp target teams distribute simd
17601 for (int i = 0; i < 10; ++i) {
17602 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17603 a++;
17604 }
17605 #pragma omp target teams distribute simd
17606 for (int i = 0; i < 10; ++i) {
17607 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17608 for (int i = 0; i < 10; ++i)
17609 ;
17610 }
17611 #pragma omp target teams distribute simd
17612 for (int i = 0; i < 10; ++i) {
17613 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17614 for (int i = 0; i < 10; ++i)
17615 ;
17616 }
17617 #pragma omp target teams distribute simd
17618 for (int i = 0; i < 10; ++i) {
17619 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17620 for (int i = 0; i < 10; ++i)
17621 ;
17622 }
17623 #pragma omp target teams distribute simd
17624 for (int i = 0; i < 10; ++i) {
17625 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17626 for (int i = 0; i < 10; ++i)
17627 ;
17628 }
17629
17630 return foo<int>();
17631 }
17632
17633