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 #pragma omp teams // expected-note {{directive outside teams construct here}}
4084 ++a;
4085 #pragma omp teams // expected-note {{nested teams construct here}}
4086 ++a;
4087 }
4088 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4089 {
4090 ++a; // expected-note {{statement outside teams construct here}}
4091 #pragma omp teams // expected-note {{nested teams construct here}}
4092 ++a;
4093 }
4094 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
4095 {
4096 while (0) // expected-note {{statement outside teams construct here}}
4097 #pragma omp teams // expected-note {{nested teams construct here}}
4098 ++a;
4099 }
4100 #pragma omp target
4101 {
4102 #pragma omp taskloop
4103 for (int i = 0; i < 10; ++i)
4104 ++a;
4105 }
4106 #pragma omp target
4107 {
4108 #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?}}
4109 for (int i = 0; i < 10; ++i)
4110 ;
4111 }
4112 #pragma omp target
4113 {
4114 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
4115 }
4116 #pragma omp target
4117 {
4118 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
4119 }
4120 #pragma omp target
4121 {
4122 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
4123 }
4124 #pragma omp target
4125 {
4126 #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?}}
4127 for (int i = 0; i < 10; ++i)
4128 ;
4129 }
4130 #pragma omp target
4131 {
4132 #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?}}
4133 for (int i = 0; i < 10; ++i)
4134 ;
4135 }
4136 #pragma omp target
4137 {
4138 #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?}}
4139 for (int i = 0; i < 10; ++i)
4140 ;
4141 }
4142 #pragma omp target
4143 {
4144 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
4145 for (int i = 0; i < 10; ++i)
4146 ;
4147 }
4148 #pragma omp target
4149 {
4150 #pragma omp teams distribute // OK
4151 for (int i = 0; i < 10; ++i)
4152 ;
4153 }
4154 #pragma omp target
4155 {
4156 #pragma omp teams distribute simd // OK
4157 for (int i = 0; i < 10; ++i)
4158 ;
4159 }
4160 #pragma omp target
4161 {
4162 #pragma omp teams distribute parallel for simd // OK
4163 for (int i = 0; i < 10; ++i)
4164 ;
4165 }
4166 #pragma omp target
4167 {
4168 #pragma omp teams distribute parallel for // OK
4169 for (int i = 0; i < 10; ++i)
4170 ;
4171 }
4172 #pragma omp target
4173 {
4174 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
4175 for (int i = 0; i < 10; ++i)
4176 ;
4177 }
4178 #pragma omp target
4179 {
4180 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
4181 for (int i = 0; i < 10; ++i)
4182 ;
4183 }
4184 #pragma omp target
4185 {
4186 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
4187 for (int i = 0; i < 10; ++i)
4188 ;
4189 }
4190 #pragma omp target
4191 {
4192 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
4193 for (int i = 0; i < 10; ++i)
4194 ;
4195 }
4196 #pragma omp target
4197 {
4198 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
4199 for (int i = 0; i < 10; ++i)
4200 ;
4201 }
4202
4203 // TARGET PARALLEL DIRECTIVE
4204 #pragma omp target parallel
4205 #pragma omp parallel
4206 bar();
4207 #pragma omp target parallel
4208 #pragma omp for
4209 for (int i = 0; i < 10; ++i)
4210 ;
4211 #pragma omp target parallel
4212 #pragma omp simd
4213 for (int i = 0; i < 10; ++i)
4214 ;
4215 #pragma omp target parallel
4216 #pragma omp for simd
4217 for (int i = 0; i < 10; ++i)
4218 ;
4219 #pragma omp target parallel
4220 #pragma omp sections
4221 {
4222 bar();
4223 }
4224 #pragma omp target parallel
4225 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
4226 {
4227 bar();
4228 }
4229 #pragma omp target parallel
4230 #pragma omp single
4231 bar();
4232
4233 #pragma omp target parallel
4234 #pragma omp master
4235 {
4236 bar();
4237 }
4238 #pragma omp target parallel
4239 #pragma omp critical
4240 {
4241 bar();
4242 }
4243 #pragma omp target parallel
4244 #pragma omp parallel for
4245 for (int i = 0; i < 10; ++i)
4246 ;
4247 #pragma omp target parallel
4248 #pragma omp parallel for simd
4249 for (int i = 0; i < 10; ++i)
4250 ;
4251 #pragma omp target parallel
4252 #pragma omp parallel sections
4253 {
4254 bar();
4255 }
4256 #pragma omp target parallel
4257 #pragma omp task
4258 {
4259 bar();
4260 }
4261 #pragma omp target parallel
4262 {
4263 #pragma omp taskyield
4264 bar();
4265 }
4266 #pragma omp target parallel
4267 {
4268 #pragma omp barrier
4269 bar();
4270 }
4271 #pragma omp target parallel
4272 {
4273 #pragma omp taskwait
4274 bar();
4275 }
4276 #pragma omp target parallel
4277 {
4278 #pragma omp flush
4279 bar();
4280 }
4281 #pragma omp target parallel
4282 {
4283 #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?}}
4284 bar();
4285 }
4286 #pragma omp target parallel
4287 {
4288 #pragma omp atomic
4289 ++a;
4290 }
4291 #pragma omp target parallel
4292 {
4293 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}
4294 ++a;
4295 }
4296 #pragma omp target parallel
4297 {
4298 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}
4299 ++a;
4300 }
4301 #pragma omp target parallel
4302 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
4303 for (int i = 0; i < 10; ++i)
4304 ;
4305 #pragma omp target parallel
4306 {
4307 #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?}}
4308 ++a;
4309 }
4310 #pragma omp target parallel
4311 {
4312 ++a;
4313 #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?}}
4314 ++a;
4315 }
4316 #pragma omp target parallel
4317 {
4318 #pragma omp taskloop
4319 for (int i = 0; i < 10; ++i)
4320 ++a;
4321 }
4322 #pragma omp target parallel
4323 {
4324 #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?}}
4325 for (int i = 0; i < 10; ++i)
4326 ;
4327 }
4328 #pragma omp target parallel
4329 {
4330 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4331 }
4332 #pragma omp target parallel
4333 {
4334 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4335 }
4336 #pragma omp target parallel
4337 {
4338 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}
4339 }
4340 #pragma omp target parallel
4341 {
4342 #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?}}
4343 for (int i = 0; i < 10; ++i)
4344 ;
4345 }
4346 #pragma omp target parallel
4347 {
4348 #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?}}
4349 for (int i = 0; i < 10; ++i)
4350 ;
4351 }
4352 #pragma omp target parallel
4353 {
4354 #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?}}
4355 for (int i = 0; i < 10; ++i)
4356 ;
4357 }
4358 #pragma omp target parallel
4359 {
4360 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4361 for (int i = 0; i < 10; ++i)
4362 ;
4363 }
4364 #pragma omp target parallel
4365 {
4366 #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?}}
4367 for (int i = 0; i < 10; ++i)
4368 ;
4369 }
4370 #pragma omp target parallel
4371 {
4372 #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?}}
4373 for (int i = 0; i < 10; ++i)
4374 ;
4375 }
4376 #pragma omp target parallel
4377 {
4378 #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?}}
4379 for (int i = 0; i < 10; ++i)
4380 ;
4381 }
4382 #pragma omp target parallel
4383 {
4384 #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?}}
4385 for (int i = 0; i < 10; ++i)
4386 ;
4387 }
4388 #pragma omp target parallel
4389 {
4390 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}
4391 a++;
4392 }
4393 #pragma omp target parallel
4394 {
4395 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}
4396 for (int i = 0; i < 10; ++i)
4397 ;
4398 }
4399 #pragma omp target parallel
4400 {
4401 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
4402 for (int i = 0; i < 10; ++i)
4403 ;
4404 }
4405 #pragma omp target parallel
4406 {
4407 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4408 for (int i = 0; i < 10; ++i)
4409 ;
4410 }
4411 #pragma omp target parallel
4412 {
4413 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}
4414 for (int i = 0; i < 10; ++i)
4415 ;
4416 }
4417
4418 // TARGET PARALLEL FOR DIRECTIVE
4419 #pragma omp target parallel for
4420 for (int i = 0; i < 10; ++i) {
4421 #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?}}
4422 for (int i = 0; i < 10; ++i)
4423 ;
4424 }
4425 #pragma omp target parallel for
4426 for (int i = 0; i < 10; ++i) {
4427 #pragma omp simd
4428 for (int i = 0; i < 10; ++i)
4429 ;
4430 }
4431 #pragma omp target parallel for
4432 for (int i = 0; i < 10; ++i) {
4433 #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?}}
4434 for (int i = 0; i < 10; ++i)
4435 ;
4436 }
4437 #pragma omp target parallel for
4438 for (int i = 0; i < 10; ++i) {
4439 #pragma omp parallel
4440 for (int i = 0; i < 10; ++i)
4441 ;
4442 }
4443 #pragma omp target parallel for
4444 for (int i = 0; i < 10; ++i) {
4445 #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?}}
4446 {
4447 bar();
4448 }
4449 }
4450 #pragma omp target parallel for
4451 for (int i = 0; i < 10; ++i) {
4452 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}
4453 {
4454 bar();
4455 }
4456 }
4457 #pragma omp target parallel for
4458 for (int i = 0; i < 10; ++i) {
4459 #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?}}
4460 {
4461 bar();
4462 }
4463 }
4464
4465 #pragma omp target parallel for
4466 for (int i = 0; i < 10; ++i) {
4467 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
4468 {
4469 bar();
4470 }
4471 }
4472
4473 #pragma omp target parallel for
4474 for (int i = 0; i < 10; ++i) {
4475 #pragma omp critical
4476 {
4477 bar();
4478 }
4479 }
4480
4481 #pragma omp target parallel for
4482 for (int i = 0; i < 10; ++i) {
4483 #pragma omp parallel
4484 {
4485 #pragma omp single // OK
4486 {
4487 bar();
4488 }
4489 #pragma omp for // OK
4490 for (int i = 0; i < 10; ++i)
4491 ;
4492 #pragma omp for simd // OK
4493 for (int i = 0; i < 10; ++i)
4494 ;
4495 #pragma omp sections // OK
4496 {
4497 bar();
4498 }
4499 }
4500 }
4501 #pragma omp target parallel for
4502 for (int i = 0; i < 10; ++i) {
4503 #pragma omp parallel for
4504 for (int i = 0; i < 10; ++i)
4505 ;
4506 }
4507 #pragma omp target parallel for
4508 for (int i = 0; i < 10; ++i) {
4509 #pragma omp parallel for simd
4510 for (int i = 0; i < 10; ++i)
4511 ;
4512 }
4513 #pragma omp target parallel for
4514 for (int i = 0; i < 10; ++i) {
4515 #pragma omp parallel sections
4516 {
4517 bar();
4518 }
4519 }
4520 #pragma omp target parallel for
4521 for (int i = 0; i < 10; ++i) {
4522 #pragma omp task
4523 {
4524 bar();
4525 }
4526 }
4527 #pragma omp target parallel for
4528 for (int i = 0; i < 10; ++i) {
4529 #pragma omp taskyield
4530 bar();
4531 }
4532 #pragma omp target parallel for
4533 for (int i = 0; i < 10; ++i) {
4534 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
4535 bar();
4536 }
4537 #pragma omp target parallel for
4538 for (int i = 0; i < 10; ++i) {
4539 #pragma omp taskwait
4540 bar();
4541 }
4542 #pragma omp target parallel for
4543 for (int i = 0; i < 10; ++i) {
4544 #pragma omp flush
4545 bar();
4546 }
4547 #pragma omp target parallel for
4548 for (int i = 0; i < 10; ++i) {
4549 #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?}}
4550 bar();
4551 }
4552 #pragma omp target parallel for ordered
4553 for (int i = 0; i < 10; ++i) {
4554 #pragma omp ordered // OK
4555 bar();
4556 }
4557 #pragma omp target parallel for
4558 for (int i = 0; i < 10; ++i) {
4559 #pragma omp atomic
4560 ++a;
4561 }
4562 #pragma omp target parallel for
4563 for (int i = 0; i < 10; ++i) {
4564 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}
4565 ++a;
4566 }
4567 #pragma omp target parallel for
4568 for (int i = 0; i < 10; ++i) {
4569 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}
4570 ++a;
4571 }
4572 #pragma omp target parallel for
4573 for (int i = 0; i < 10; ++i) {
4574 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
4575 for (int i = 0; i < 10; ++i)
4576 ;
4577 }
4578 #pragma omp target parallel for
4579 for (int i = 0; i < 10; ++i) {
4580 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
4581 ++a;
4582 }
4583 #pragma omp target parallel for
4584 for (int i = 0; i < 10; ++i) {
4585 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
4586 ++a;
4587 }
4588 #pragma omp target parallel for
4589 for (int i = 0; i < 10; ++i) {
4590 #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?}}
4591 ++a;
4592 }
4593 #pragma omp target parallel for
4594 for (int i = 0; i < 10; ++i) {
4595 #pragma omp taskloop
4596 for (int i = 0; i < 10; ++i)
4597 ++a;
4598 }
4599 #pragma omp target parallel for
4600 for (int i = 0; i < 10; ++i) {
4601 #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?}}
4602 for (int j = 0; j < 10; ++j)
4603 ;
4604 }
4605 #pragma omp target parallel for
4606 for (int i = 0; i < 10; ++i) {
4607 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
4608 }
4609 #pragma omp target parallel for
4610 for (int i = 0; i < 10; ++i) {
4611 #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?}}
4612 for (int j = 0; j < 10; ++j)
4613 ;
4614 }
4615 #pragma omp target parallel for
4616 for (int i = 0; i < 10; ++i) {
4617 #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?}}
4618 for (int j = 0; j < 10; ++j)
4619 ;
4620 }
4621 #pragma omp target parallel for
4622 for (int i = 0; i < 10; ++i) {
4623 #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?}}
4624 for (int j = 0; j < 10; ++j)
4625 ;
4626 }
4627 #pragma omp target parallel for
4628 for (int i = 0; i < 10; ++i) {
4629 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
4630 for (int j = 0; j < 10; ++j)
4631 ;
4632 }
4633 #pragma omp target parallel for
4634 for (int i = 0; i < 10; ++i) {
4635 #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?}}
4636 for (int j = 0; j < 10; ++j)
4637 ;
4638 }
4639 #pragma omp target parallel for
4640 for (int i = 0; i < 10; ++i) {
4641 #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?}}
4642 for (int j = 0; j < 10; ++j)
4643 ;
4644 }
4645 #pragma omp target parallel for
4646 for (int i = 0; i < 10; ++i) {
4647 #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?}}
4648 for (int j = 0; j < 10; ++j)
4649 ;
4650 }
4651 #pragma omp target parallel for
4652 for (int i = 0; i < 10; ++i) {
4653 #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?}}
4654 for (int j = 0; j < 10; ++j)
4655 ;
4656 }
4657 #pragma omp target parallel for
4658 for (int i = 0; i < 10; ++i) {
4659 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}
4660 a++;
4661 }
4662 #pragma omp target parallel for
4663 for (int i = 0; i < 10; ++i) {
4664 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}
4665 for (int j = 0; j < 10; ++j)
4666 ;
4667 }
4668 #pragma omp target parallel for
4669 for (int i = 0; i < 10; ++i) {
4670 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
4671 for (int j = 0; j < 10; ++j)
4672 ;
4673 }
4674 #pragma omp target parallel for
4675 for (int i = 0; i < 10; ++i) {
4676 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
4677 for (int j = 0; j < 10; ++j)
4678 ;
4679 }
4680 #pragma omp target parallel for
4681 for (int i = 0; i < 10; ++i) {
4682 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
4683 for (int j = 0; j < 10; ++j)
4684 ;
4685 }
4686
4687 // TEAMS DIRECTIVE
4688 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
4689 bar();
4690 #pragma omp target
4691 #pragma omp teams
4692 #pragma omp parallel
4693 bar();
4694 #pragma omp target
4695 #pragma omp teams
4696 #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?}}
4697 for (int i = 0; i < 10; ++i)
4698 ;
4699 #pragma omp target
4700 #pragma omp teams
4701 #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?}}
4702 for (int i = 0; i < 10; ++i)
4703 ;
4704 #pragma omp target
4705 #pragma omp teams
4706 #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?}}
4707 for (int i = 0; i < 10; ++i)
4708 ;
4709 #pragma omp target
4710 #pragma omp teams
4711 #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?}}
4712 {
4713 bar();
4714 }
4715 #pragma omp target
4716 #pragma omp teams
4717 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}
4718 {
4719 bar();
4720 }
4721 #pragma omp target
4722 #pragma omp teams
4723 #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?}}
4724 bar();
4725
4726 #pragma omp target
4727 #pragma omp teams
4728 #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?}}
4729 {
4730 bar();
4731 }
4732 #pragma omp target
4733 #pragma omp teams
4734 #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?}}
4735 {
4736 bar();
4737 }
4738 #pragma omp target
4739 #pragma omp teams
4740 #pragma omp parallel for
4741 for (int i = 0; i < 10; ++i)
4742 ;
4743 #pragma omp target
4744 #pragma omp teams
4745 #pragma omp parallel for simd
4746 for (int i = 0; i < 10; ++i)
4747 ;
4748 #pragma omp target
4749 #pragma omp teams
4750 #pragma omp parallel sections
4751 {
4752 bar();
4753 }
4754 #pragma omp target
4755 #pragma omp teams
4756 #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?}}
4757 {
4758 bar();
4759 }
4760 #pragma omp target
4761 #pragma omp teams
4762 {
4763 #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?}}
4764 bar();
4765 }
4766 #pragma omp target
4767 #pragma omp teams
4768 {
4769 #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?}}
4770 bar();
4771 }
4772 #pragma omp target
4773 #pragma omp teams
4774 {
4775 #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?}}
4776 bar();
4777 }
4778 #pragma omp target
4779 #pragma omp teams
4780 {
4781 #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?}}
4782 bar();
4783 }
4784 #pragma omp target
4785 #pragma omp teams
4786 {
4787 #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?}}
4788 bar();
4789 }
4790 #pragma omp target
4791 #pragma omp teams
4792 {
4793 #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?}}
4794 ++a;
4795 }
4796 #pragma omp target
4797 #pragma omp teams
4798 {
4799 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
4800 ++a;
4801 }
4802 #pragma omp target
4803 #pragma omp teams
4804 {
4805 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
4806 ++a;
4807 }
4808 #pragma omp target
4809 #pragma omp teams
4810 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
4811 for (int i = 0; i < 10; ++i)
4812 ;
4813 #pragma omp target
4814 #pragma omp teams
4815 {
4816 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
4817 ++a;
4818 }
4819 #pragma omp target
4820 #pragma omp teams
4821 {
4822 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
4823 ++a;
4824 }
4825 #pragma omp target
4826 #pragma omp teams
4827 {
4828 #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?}}
4829 ++a;
4830 }
4831 #pragma omp target
4832 #pragma omp teams
4833 {
4834 #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?}}
4835 for (int i = 0; i < 10; ++i)
4836 ++a;
4837 }
4838 #pragma omp target
4839 #pragma omp teams
4840 #pragma omp distribute
4841 for (int i = 0; i < 10; ++i)
4842 ;
4843 #pragma omp target
4844 #pragma omp teams
4845 #pragma omp distribute
4846 for (int i = 0; i < 10; ++i)
4847 ;
4848 #pragma omp distribute
4849 for (int j = 0; j < 10; ++j)
4850 ;
4851 #pragma omp target
4852 #pragma omp teams
4853 {
4854 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
4855 }
4856 #pragma omp target
4857 #pragma omp teams
4858 {
4859 #pragma omp distribute parallel for
4860 for (int i = 0; i < 10; ++i)
4861 ;
4862 #pragma omp distribute parallel for
4863 for (int j = 0; j < 10; ++j)
4864 ;
4865 }
4866 #pragma omp target
4867 #pragma omp teams
4868 {
4869 #pragma omp distribute parallel for simd
4870 for (int i = 0; i < 10; ++i)
4871 ;
4872 #pragma omp distribute parallel for simd
4873 for (int j = 0; j < 10; ++j)
4874 ;
4875 }
4876 #pragma omp target
4877 #pragma omp teams
4878 {
4879 #pragma omp distribute simd
4880 for (int i = 0; i < 10; ++i)
4881 ;
4882 #pragma omp distribute simd
4883 for (int j = 0; j < 10; ++j)
4884 ;
4885 }
4886 #pragma omp target
4887 #pragma omp teams
4888 {
4889 #pragma omp target simd // expected-error {{region cannot be nested inside '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 // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' 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 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?}}
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 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?}}
4911 for (int i = 0; i < 10; ++i)
4912 ;
4913 }
4914 #pragma omp target
4915 #pragma omp teams
4916 {
4917 #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?}}
4918 for (int i = 0; i < 10; ++i)
4919 ;
4920 }
4921 #pragma omp target
4922 #pragma omp teams
4923 {
4924 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
4925 a++;
4926 }
4927 #pragma omp target
4928 #pragma omp teams
4929 {
4930 #pragma omp target teams distribute // 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 // 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 parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
4945 for (int i = 0; i < 10; ++i)
4946 ;
4947 }
4948 #pragma omp target
4949 #pragma omp teams
4950 {
4951 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
4952 for (int i = 0; i < 10; ++i)
4953 ;
4954 }
4955
4956 // TASKLOOP DIRECTIVE
4957 #pragma omp taskloop
4958 for (int i = 0; i < 10; ++i) {
4959 #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?}}
4960 for (int i = 0; i < 10; ++i)
4961 ;
4962 }
4963 #pragma omp taskloop
4964 for (int i = 0; i < 10; ++i) {
4965 #pragma omp simd
4966 for (int i = 0; i < 10; ++i)
4967 ;
4968 }
4969 #pragma omp taskloop
4970 for (int i = 0; i < 10; ++i) {
4971 #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?}}
4972 for (int i = 0; i < 10; ++i)
4973 ;
4974 }
4975 #pragma omp taskloop
4976 for (int i = 0; i < 10; ++i) {
4977 #pragma omp parallel
4978 for (int i = 0; i < 10; ++i)
4979 ;
4980 }
4981 #pragma omp taskloop
4982 for (int i = 0; i < 10; ++i) {
4983 #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?}}
4984 {
4985 bar();
4986 }
4987 }
4988 #pragma omp taskloop
4989 for (int i = 0; i < 10; ++i) {
4990 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}
4991 {
4992 bar();
4993 }
4994 }
4995 #pragma omp taskloop
4996 for (int i = 0; i < 10; ++i) {
4997 #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?}}
4998 {
4999 bar();
5000 }
5001 }
5002
5003 #pragma omp taskloop
5004 for (int i = 0; i < 10; ++i) {
5005 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5006 {
5007 bar();
5008 }
5009 }
5010 #pragma omp taskloop
5011 for (int i = 0; i < 10; ++i) {
5012 #pragma omp critical
5013 {
5014 bar();
5015 }
5016 }
5017 #pragma omp taskloop
5018 for (int i = 0; i < 10; ++i) {
5019 #pragma omp parallel
5020 {
5021 #pragma omp single // OK
5022 {
5023 bar();
5024 }
5025 #pragma omp for // OK
5026 for (int i = 0; i < 10; ++i)
5027 ;
5028 #pragma omp sections // OK
5029 {
5030 bar();
5031 }
5032 }
5033 }
5034 #pragma omp taskloop
5035 for (int i = 0; i < 10; ++i) {
5036 #pragma omp parallel for
5037 for (int i = 0; i < 10; ++i)
5038 ;
5039 }
5040 #pragma omp taskloop
5041 for (int i = 0; i < 10; ++i) {
5042 #pragma omp parallel for simd
5043 for (int i = 0; i < 10; ++i)
5044 ;
5045 }
5046 #pragma omp taskloop
5047 for (int i = 0; i < 10; ++i) {
5048 #pragma omp parallel sections
5049 {
5050 bar();
5051 }
5052 }
5053 #pragma omp taskloop
5054 for (int i = 0; i < 10; ++i) {
5055 #pragma omp task
5056 {
5057 bar();
5058 }
5059 }
5060 #pragma omp taskloop
5061 for (int i = 0; i < 10; ++i) {
5062 #pragma omp taskyield
5063 bar();
5064 }
5065 #pragma omp taskloop
5066 for (int i = 0; i < 10; ++i) {
5067 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}
5068 bar();
5069 }
5070 #pragma omp taskloop
5071 for (int i = 0; i < 10; ++i) {
5072 #pragma omp taskwait
5073 bar();
5074 }
5075 #pragma omp taskloop
5076 for (int i = 0; i < 10; ++i) {
5077 #pragma omp flush
5078 bar();
5079 }
5080 #pragma omp taskloop
5081 for (int i = 0; i < 10; ++i) {
5082 #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?}}
5083 bar();
5084 }
5085 #pragma omp taskloop
5086 for (int i = 0; i < 10; ++i) {
5087 #pragma omp atomic
5088 ++a;
5089 }
5090 #pragma omp taskloop
5091 for (int i = 0; i < 10; ++i) {
5092 #pragma omp target
5093 ++a;
5094 }
5095 #pragma omp taskloop
5096 for (int i = 0; i < 10; ++i) {
5097 #pragma omp target parallel
5098 ++a;
5099 }
5100 #pragma omp taskloop
5101 for (int i = 0; i < 10; ++i) {
5102 #pragma omp target parallel for
5103 for (int i = 0; i < 10; ++i)
5104 ;
5105 }
5106 #pragma omp taskloop
5107 for (int i = 0; i < 10; ++i) {
5108 #pragma omp target enter data map(to: a)
5109 ++a;
5110 }
5111 #pragma omp taskloop
5112 for (int i = 0; i < 10; ++i) {
5113 #pragma omp target exit data map(from: a)
5114 ++a;
5115 }
5116 #pragma omp taskloop
5117 for (int i = 0; i < 10; ++i) {
5118 #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?}}
5119 ++a;
5120 }
5121 #pragma omp taskloop
5122 for (int i = 0; i < 10; ++i) {
5123 #pragma omp taskloop
5124 for (int i = 0; i < 10; ++i)
5125 ++a;
5126 }
5127 #pragma omp taskloop
5128 for (int i = 0; i < 10; ++i) {
5129 #pragma omp target update to(a)
5130 bar();
5131 }
5132 #pragma omp taskloop
5133 for (int i = 0; i < 10; ++i) {
5134 #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?}}
5135 for (int j = 0; j < 10; ++j)
5136 ++a;
5137 }
5138 #pragma omp taskloop
5139 for (int i = 0; i < 10; ++i) {
5140 #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?}}
5141 for (int j = 0; j < 10; ++j)
5142 ++a;
5143 }
5144 #pragma omp taskloop
5145 for (int i = 0; i < 10; ++i) {
5146 #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?}}
5147 for (int j = 0; j < 10; ++j)
5148 ++a;
5149 }
5150 #pragma omp taskloop
5151 for (int i = 0; i < 10; ++i) {
5152 #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?}}
5153 for (int j = 0; j < 10; ++j)
5154 ++a;
5155 }
5156 #pragma omp taskloop
5157 for (int i = 0; i < 10; ++i) {
5158 #pragma omp target simd // OK
5159 for (int j = 0; j < 10; ++j)
5160 ++a;
5161 }
5162 #pragma omp taskloop
5163 for (int i = 0; i < 10; ++i) {
5164 #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?}}
5165 for (int j = 0; j < 10; ++j)
5166 ++a;
5167 }
5168 #pragma omp taskloop
5169 for (int i = 0; i < 10; ++i) {
5170 #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?}}
5171 for (int j = 0; j < 10; ++j)
5172 ++a;
5173 }
5174 #pragma omp taskloop
5175 for (int i = 0; i < 10; ++i) {
5176 #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?}}
5177 for (int j = 0; j < 10; ++j)
5178 ++a;
5179 }
5180 #pragma omp taskloop
5181 for (int i = 0; i < 10; ++i) {
5182 #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?}}
5183 for (int j = 0; j < 10; ++j)
5184 ++a;
5185 }
5186 #pragma omp taskloop
5187 for (int i = 0; i < 10; ++i) {
5188 #pragma omp target teams // OK
5189 ++a;
5190 }
5191 #pragma omp taskloop
5192 for (int i = 0; i < 10; ++i) {
5193 #pragma omp target teams distribute // OK
5194 for (int j = 0; j < 10; ++j)
5195 ++a;
5196 }
5197 #pragma omp taskloop
5198 for (int i = 0; i < 10; ++i) {
5199 #pragma omp target teams distribute parallel for // OK
5200 for (int j = 0; j < 10; ++j)
5201 ++a;
5202 }
5203 #pragma omp taskloop
5204 for (int i = 0; i < 10; ++i) {
5205 #pragma omp target teams distribute parallel for simd // OK
5206 for (int j = 0; j < 10; ++j)
5207 ++a;
5208 }
5209 #pragma omp taskloop
5210 for (int i = 0; i < 10; ++i) {
5211 #pragma omp target teams distribute simd // OK
5212 for (int j = 0; j < 10; ++j)
5213 ++a;
5214 }
5215
5216 // DISTRIBUTE DIRECTIVE
5217 #pragma omp target
5218 #pragma omp teams
5219 #pragma omp distribute
5220 for (int i = 0; i < 10; ++i) {
5221 #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?}}
5222 for (int i = 0; i < 10; ++i)
5223 ;
5224 }
5225 #pragma omp target
5226 #pragma omp teams
5227 #pragma omp distribute
5228 for (int i = 0; i < 10; ++i) {
5229 #pragma omp for
5230 for (int i = 0; i < 10; ++i)
5231 ;
5232 }
5233 #pragma omp target
5234 #pragma omp teams
5235 #pragma omp distribute
5236 for (int i = 0; i < 10; ++i) {
5237 #pragma omp simd
5238 for (int i = 0; i < 10; ++i)
5239 ;
5240 }
5241 #pragma omp target
5242 #pragma omp teams
5243 #pragma omp distribute
5244 for (int i = 0; i < 10; ++i) {
5245 #pragma omp for simd
5246 for (int i = 0; i < 10; ++i)
5247 ;
5248 }
5249 #pragma omp target
5250 #pragma omp teams
5251 #pragma omp distribute
5252 for (int i = 0; i < 10; ++i) {
5253 #pragma omp parallel
5254 for (int i = 0; i < 10; ++i)
5255 ;
5256 }
5257 #pragma omp target
5258 #pragma omp teams
5259 #pragma omp distribute
5260 for (int i = 0; i < 10; ++i) {
5261 #pragma omp sections
5262 {
5263 bar();
5264 }
5265 }
5266 #pragma omp target
5267 #pragma omp teams
5268 #pragma omp distribute
5269 for (int i = 0; i < 10; ++i) {
5270 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}
5271 {
5272 bar();
5273 }
5274 }
5275 #pragma omp target
5276 #pragma omp teams
5277 #pragma omp distribute
5278 for (int i = 0; i < 10; ++i) {
5279 #pragma omp single
5280 {
5281 bar();
5282 }
5283 }
5284 #pragma omp target
5285 #pragma omp teams
5286 #pragma omp distribute
5287 for (int i = 0; i < 10; ++i) {
5288 #pragma omp master
5289 {
5290 bar();
5291 }
5292 }
5293 #pragma omp target
5294 #pragma omp teams
5295 #pragma omp distribute
5296 for (int i = 0; i < 10; ++i) {
5297 #pragma omp critical
5298 {
5299 bar();
5300 }
5301 }
5302 #pragma omp target
5303 #pragma omp teams
5304 #pragma omp distribute
5305 for (int i = 0; i < 10; ++i) {
5306 #pragma omp parallel
5307 {
5308 #pragma omp single
5309 {
5310 bar();
5311 }
5312 }
5313 }
5314 #pragma omp target
5315 #pragma omp teams
5316 #pragma omp distribute
5317 for (int i = 0; i < 10; ++i) {
5318 #pragma omp parallel for
5319 for (int i = 0; i < 10; ++i)
5320 ;
5321 }
5322 #pragma omp target
5323 #pragma omp teams
5324 #pragma omp distribute
5325 for (int i = 0; i < 10; ++i) {
5326 #pragma omp parallel for simd
5327 for (int i = 0; i < 10; ++i)
5328 ;
5329 }
5330 #pragma omp target
5331 #pragma omp teams
5332 #pragma omp distribute
5333 for (int i = 0; i < 10; ++i) {
5334 #pragma omp parallel sections
5335 {
5336 bar();
5337 }
5338 }
5339 #pragma omp target
5340 #pragma omp teams
5341 #pragma omp distribute
5342 for (int i = 0; i < 10; ++i) {
5343 #pragma omp task
5344 {
5345 bar();
5346 }
5347 }
5348 #pragma omp target
5349 #pragma omp teams
5350 #pragma omp distribute
5351 for (int i = 0; i < 10; ++i) {
5352 #pragma omp taskyield
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 barrier
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 taskwait
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 flush
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 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?}}
5381 bar();
5382 }
5383 #pragma omp target
5384 #pragma omp teams
5385 #pragma omp distribute
5386 for (int i = 0; i < 10; ++i) {
5387 #pragma omp atomic
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 // 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 // expected-error {{region cannot be nested inside 'target' region}}
5402 ++a;
5403 }
5404 #pragma omp target
5405 #pragma omp teams
5406 #pragma omp distribute
5407 for (int i = 0; i < 10; ++i) {
5408 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
5409 for (int i = 0; i < 10; ++i)
5410 ;
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 enter data map(to: 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 target exit data map(from: a) // expected-error {{region cannot be nested inside '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 teams // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams' directive into a 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 update to(a) // expected-error {{region cannot be nested inside 'target' region}}
5438 ++a;
5439 }
5440 #pragma omp target
5441 #pragma omp teams
5442 #pragma omp distribute
5443 for (int i = 0; i < 10; ++i) {
5444 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
5445 for (int j = 0; j < 10; ++j)
5446 ;
5447 }
5448 #pragma omp target
5449 #pragma omp teams
5450 #pragma omp distribute
5451 for (int i = 0; i < 10; ++i) {
5452 #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?}}
5453 for (int j = 0; j < 10; ++j)
5454 ;
5455 }
5456 #pragma omp target
5457 #pragma omp teams
5458 #pragma omp distribute
5459 for (int i = 0; i < 10; ++i) {
5460 #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?}}
5461 for (int j = 0; j < 10; ++j)
5462 ;
5463 }
5464 #pragma omp target
5465 #pragma omp teams
5466 #pragma omp distribute
5467 for (int i = 0; i < 10; ++i) {
5468 #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?}}
5469 for (int j = 0; j < 10; ++j)
5470 ;
5471 }
5472 #pragma omp target
5473 #pragma omp teams
5474 #pragma omp distribute
5475 for (int i = 0; i < 10; ++i) {
5476 #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?}}
5477 for (int j = 0; j < 10; ++j)
5478 ;
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 // expected-error {{region cannot be nested inside 'target' region}}
5485 a++;
5486 }
5487 #pragma omp target
5488 #pragma omp teams
5489 #pragma omp distribute
5490 for (int i = 0; i < 10; ++i) {
5491 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
5492 for (int j = 0; j < 10; ++j)
5493 ;
5494 }
5495 #pragma omp target
5496 #pragma omp teams
5497 #pragma omp distribute
5498 for (int i = 0; i < 10; ++i) {
5499 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
5500 for (int j = 0; j < 10; ++j)
5501 ;
5502 }
5503 #pragma omp target
5504 #pragma omp teams
5505 #pragma omp distribute
5506 for (int i = 0; i < 10; ++i) {
5507 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
5508 for (int j = 0; j < 10; ++j)
5509 ;
5510 }
5511 #pragma omp target
5512 #pragma omp teams
5513 #pragma omp distribute
5514 for (int i = 0; i < 10; ++i) {
5515 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
5516 for (int j = 0; j < 10; ++j)
5517 ;
5518 }
5519
5520 // DISTRIBUTE PARALLEL FOR DIRECTIVE
5521 #pragma omp target
5522 #pragma omp teams
5523 #pragma omp distribute parallel for
5524 for (int i = 0; i < 10; ++i) {
5525 #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?}}
5526 for (int i = 0; i < 10; ++i)
5527 ;
5528 }
5529 #pragma omp target
5530 #pragma omp teams
5531 #pragma omp distribute parallel for
5532 for (int i = 0; i < 10; ++i) {
5533 #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?}}
5534 for (int i = 0; i < 10; ++i)
5535 ;
5536 }
5537 #pragma omp target
5538 #pragma omp teams
5539 #pragma omp distribute parallel for
5540 for (int i = 0; i < 10; ++i) {
5541 #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?}}
5542 for (int i = 0; i < 10; ++i)
5543 ;
5544 }
5545 #pragma omp target
5546 #pragma omp teams
5547 #pragma omp distribute parallel for
5548 for (int i = 0; i < 10; ++i) {
5549 #pragma omp simd
5550 for (int i = 0; i < 10; ++i)
5551 ;
5552 }
5553 #pragma omp target
5554 #pragma omp teams
5555 #pragma omp distribute parallel for
5556 for (int i = 0; i < 10; ++i) {
5557 #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?}}
5558 for (int i = 0; i < 10; ++i)
5559 ;
5560 }
5561 #pragma omp target
5562 #pragma omp teams
5563 #pragma omp distribute parallel for
5564 for (int i = 0; i < 10; ++i) {
5565 #pragma omp parallel
5566 for (int i = 0; i < 10; ++i)
5567 ;
5568 }
5569 #pragma omp target
5570 #pragma omp teams
5571 #pragma omp distribute parallel for
5572 for (int i = 0; i < 10; ++i) {
5573 #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?}}
5574 {
5575 bar();
5576 }
5577 }
5578 #pragma omp target
5579 #pragma omp teams
5580 #pragma omp distribute parallel for
5581 for (int i = 0; i < 10; ++i) {
5582 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}
5583 {
5584 bar();
5585 }
5586 }
5587 #pragma omp target
5588 #pragma omp teams
5589 #pragma omp distribute parallel for
5590 for (int i = 0; i < 10; ++i) {
5591 #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?}}
5592 {
5593 bar();
5594 }
5595 }
5596 #pragma omp target
5597 #pragma omp teams
5598 #pragma omp distribute parallel for
5599 for (int i = 0; i < 10; ++i) {
5600 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
5601 {
5602 bar();
5603 }
5604 }
5605 #pragma omp target
5606 #pragma omp teams
5607 #pragma omp distribute parallel for
5608 for (int i = 0; i < 10; ++i) {
5609 #pragma omp critical
5610 {
5611 bar();
5612 }
5613 }
5614 #pragma omp target
5615 #pragma omp teams
5616 #pragma omp distribute parallel for
5617 for (int i = 0; i < 10; ++i) {
5618 #pragma omp parallel
5619 {
5620 #pragma omp single
5621 {
5622 bar();
5623 }
5624 }
5625 }
5626 #pragma omp target
5627 #pragma omp teams
5628 #pragma omp distribute parallel for
5629 for (int i = 0; i < 10; ++i) {
5630 #pragma omp parallel for
5631 for (int i = 0; i < 10; ++i)
5632 ;
5633 }
5634 #pragma omp target
5635 #pragma omp teams
5636 #pragma omp distribute parallel for
5637 for (int i = 0; i < 10; ++i) {
5638 #pragma omp parallel for simd
5639 for (int i = 0; i < 10; ++i)
5640 ;
5641 }
5642 #pragma omp target
5643 #pragma omp teams
5644 #pragma omp distribute parallel for
5645 for (int i = 0; i < 10; ++i) {
5646 #pragma omp parallel sections
5647 {
5648 bar();
5649 }
5650 }
5651 #pragma omp target
5652 #pragma omp teams
5653 #pragma omp distribute parallel for
5654 for (int i = 0; i < 10; ++i) {
5655 #pragma omp task
5656 {
5657 bar();
5658 }
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 taskyield
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 barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
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 taskwait
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 flush
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 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?}}
5693 bar();
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 atomic
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 // 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 // expected-error {{region cannot be nested inside 'target' region}}
5714 ++a;
5715 }
5716 #pragma omp target
5717 #pragma omp teams
5718 #pragma omp distribute parallel for
5719 for (int i = 0; i < 10; ++i) {
5720 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
5721 for (int i = 0; i < 10; ++i)
5722 ;
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 enter data map(to: 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 target exit data map(from: a) // expected-error {{region cannot be nested inside '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 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?}}
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 target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
5750 ++a;
5751 }
5752 #pragma omp target
5753 #pragma omp teams
5754 #pragma omp distribute parallel for
5755 for (int i = 0; i < 10; ++i) {
5756 #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?}}
5757 for (int i = 0; i < 10; ++i)
5758 ;
5759 }
5760 #pragma omp target
5761 #pragma omp teams
5762 #pragma omp distribute parallel for
5763 for (int i = 0; i < 10; ++i) {
5764 #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?}}
5765 for (int i = 0; i < 10; ++i)
5766 ;
5767 }
5768 #pragma omp target
5769 #pragma omp teams
5770 #pragma omp distribute parallel for
5771 for (int i = 0; i < 10; ++i) {
5772 #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?}}
5773 for (int i = 0; i < 10; ++i)
5774 ;
5775 }
5776 #pragma omp target
5777 #pragma omp teams
5778 #pragma omp distribute parallel for
5779 for (int i = 0; i < 10; ++i) {
5780 #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?}}
5781 for (int i = 0; i < 10; ++i)
5782 ;
5783 }
5784 #pragma omp target
5785 #pragma omp teams
5786 #pragma omp distribute parallel for
5787 for (int i = 0; i < 10; ++i) {
5788 #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?}}
5789 for (int i = 0; i < 10; ++i)
5790 ;
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 // expected-error {{region cannot be nested inside 'target' region}}
5797 a++;
5798 }
5799 #pragma omp target
5800 #pragma omp teams
5801 #pragma omp distribute parallel for
5802 for (int i = 0; i < 10; ++i) {
5803 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
5804 for (int i = 0; i < 10; ++i)
5805 ;
5806 }
5807 #pragma omp target
5808 #pragma omp teams
5809 #pragma omp distribute parallel for
5810 for (int i = 0; i < 10; ++i) {
5811 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
5812 for (int i = 0; i < 10; ++i)
5813 ;
5814 }
5815 #pragma omp target
5816 #pragma omp teams
5817 #pragma omp distribute parallel for
5818 for (int i = 0; i < 10; ++i) {
5819 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
5820 for (int i = 0; i < 10; ++i)
5821 ;
5822 }
5823 #pragma omp target
5824 #pragma omp teams
5825 #pragma omp distribute parallel for
5826 for (int i = 0; i < 10; ++i) {
5827 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
5828 for (int i = 0; i < 10; ++i)
5829 ;
5830 }
5831
5832 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
5833 #pragma omp target
5834 #pragma omp teams
5835 #pragma omp distribute parallel for simd
5836 for (int i = 0; i < 10; ++i) {
5837 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5838 for (int i = 0; i < 10; ++i)
5839 ;
5840 }
5841 #pragma omp target
5842 #pragma omp teams
5843 #pragma omp distribute parallel for simd
5844 for (int i = 0; i < 10; ++i) {
5845 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5846 for (int i = 0; i < 10; ++i)
5847 ;
5848 }
5849 #pragma omp target
5850 #pragma omp teams
5851 #pragma omp distribute parallel for simd
5852 for (int i = 0; i < 10; ++i) {
5853 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5854 for (int i = 0; i < 10; ++i)
5855 ;
5856 }
5857 #pragma omp target
5858 #pragma omp teams
5859 #pragma omp distribute parallel for simd
5860 for (int i = 0; i < 10; ++i) {
5861 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
5862 for (int i = 0; i < 10; ++i)
5863 ;
5864 }
5865 #pragma omp target
5866 #pragma omp teams
5867 #pragma omp distribute parallel for simd
5868 for (int i = 0; i < 10; ++i) {
5869 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5870 for (int i = 0; i < 10; ++i)
5871 ;
5872 }
5873 #pragma omp target
5874 #pragma omp teams
5875 #pragma omp distribute parallel for simd
5876 for (int i = 0; i < 10; ++i) {
5877 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5878 for (int i = 0; i < 10; ++i)
5879 ;
5880 }
5881 #pragma omp target
5882 #pragma omp teams
5883 #pragma omp distribute parallel for simd
5884 for (int i = 0; i < 10; ++i) {
5885 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5886 {
5887 bar();
5888 }
5889 }
5890 #pragma omp target
5891 #pragma omp teams
5892 #pragma omp distribute parallel for simd
5893 for (int i = 0; i < 10; ++i) {
5894 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5895 {
5896 bar();
5897 }
5898 }
5899 #pragma omp target
5900 #pragma omp teams
5901 #pragma omp distribute parallel for simd
5902 for (int i = 0; i < 10; ++i) {
5903 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5904 {
5905 bar();
5906 }
5907 }
5908 #pragma omp target
5909 #pragma omp teams
5910 #pragma omp distribute parallel for simd
5911 for (int i = 0; i < 10; ++i) {
5912 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5913 {
5914 bar();
5915 }
5916 }
5917 #pragma omp target
5918 #pragma omp teams
5919 #pragma omp distribute parallel for simd
5920 for (int i = 0; i < 10; ++i) {
5921 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5922 {
5923 bar();
5924 }
5925 }
5926 #pragma omp target
5927 #pragma omp teams
5928 #pragma omp distribute parallel for simd
5929 for (int i = 0; i < 10; ++i) {
5930 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5931 {
5932 #pragma omp single
5933 {
5934 bar();
5935 }
5936 }
5937 }
5938 #pragma omp target
5939 #pragma omp teams
5940 #pragma omp distribute parallel for simd
5941 for (int i = 0; i < 10; ++i) {
5942 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5943 for (int i = 0; i < 10; ++i)
5944 ;
5945 }
5946 #pragma omp target
5947 #pragma omp teams
5948 #pragma omp distribute parallel for simd
5949 for (int i = 0; i < 10; ++i) {
5950 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5951 for (int i = 0; i < 10; ++i)
5952 ;
5953 }
5954 #pragma omp target
5955 #pragma omp teams
5956 #pragma omp distribute parallel for simd
5957 for (int i = 0; i < 10; ++i) {
5958 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5959 {
5960 bar();
5961 }
5962 }
5963 #pragma omp target
5964 #pragma omp teams
5965 #pragma omp distribute parallel for simd
5966 for (int i = 0; i < 10; ++i) {
5967 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
5968 {
5969 bar();
5970 }
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 taskyield // 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 barrier // 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 taskwait // 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 flush // 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 ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6005 bar();
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 atomic // 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 // 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 // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6026 ++a;
6027 }
6028 #pragma omp target
6029 #pragma omp teams
6030 #pragma omp distribute parallel for simd
6031 for (int i = 0; i < 10; ++i) {
6032 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6033 for (int i = 0; i < 10; ++i)
6034 ;
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 enter data map(to: 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 target exit data map(from: a) // 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 teams // 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 target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6062 ++a;
6063 }
6064 #pragma omp target
6065 #pragma omp teams
6066 #pragma omp distribute parallel for simd
6067 for (int i = 0; i < 10; ++i) {
6068 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6069 for (int i = 0; i < 10; ++i)
6070 ++a;
6071 }
6072 #pragma omp target
6073 #pragma omp teams
6074 #pragma omp distribute parallel for simd
6075 for (int i = 0; i < 10; ++i) {
6076 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6077 for (int i = 0; i < 10; ++i)
6078 ++a;
6079 }
6080 #pragma omp target
6081 #pragma omp teams
6082 #pragma omp distribute parallel for simd
6083 for (int i = 0; i < 10; ++i) {
6084 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6085 for (int i = 0; i < 10; ++i)
6086 ++a;
6087 }
6088 #pragma omp target
6089 #pragma omp teams
6090 #pragma omp distribute parallel for simd
6091 for (int i = 0; i < 10; ++i) {
6092 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6093 for (int i = 0; i < 10; ++i)
6094 ++a;
6095 }
6096 #pragma omp target
6097 #pragma omp teams
6098 #pragma omp distribute parallel for simd
6099 for (int i = 0; i < 10; ++i) {
6100 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6101 for (int i = 0; i < 10; ++i)
6102 ++a;
6103 }
6104 #pragma omp target
6105 #pragma omp teams
6106 #pragma omp distribute parallel for simd
6107 for (int i = 0; i < 10; ++i) {
6108 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6109 for (int i = 0; i < 10; ++i)
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 // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6117 ++a;
6118 }
6119 #pragma omp target
6120 #pragma omp teams
6121 #pragma omp distribute parallel for simd
6122 for (int i = 0; i < 10; ++i) {
6123 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6124 for (int i = 0; i < 10; ++i)
6125 ++a;
6126 }
6127 #pragma omp target
6128 #pragma omp teams
6129 #pragma omp distribute parallel for simd
6130 for (int i = 0; i < 10; ++i) {
6131 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6132 for (int i = 0; i < 10; ++i)
6133 ++a;
6134 }
6135 #pragma omp target
6136 #pragma omp teams
6137 #pragma omp distribute parallel for simd
6138 for (int i = 0; i < 10; ++i) {
6139 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6140 for (int i = 0; i < 10; ++i)
6141 ++a;
6142 }
6143 #pragma omp target
6144 #pragma omp teams
6145 #pragma omp distribute parallel for simd
6146 for (int i = 0; i < 10; ++i) {
6147 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6148 for (int i = 0; i < 10; ++i)
6149 ++a;
6150 }
6151
6152 // TARGET SIMD DIRECTIVE
6153 #pragma omp target simd
6154 for (int i = 0; i < 10; ++i) {
6155 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6156 for (int i = 0; i < 10; ++i)
6157 ;
6158 }
6159 #pragma omp target simd
6160 for (int i = 0; i < 10; ++i) {
6161 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6162 for (int i = 0; i < 10; ++i)
6163 ;
6164 }
6165 #pragma omp target simd
6166 for (int i = 0; i < 10; ++i) {
6167 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6168 for (int i = 0; i < 10; ++i)
6169 ;
6170 }
6171 #pragma omp target simd
6172 for (int i = 0; i < 10; ++i) {
6173 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
6174 for (int i = 0; i < 10; ++i)
6175 ;
6176 }
6177 #pragma omp target simd
6178 for (int i = 0; i < 10; ++i) {
6179 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6180 for (int i = 0; i < 10; ++i)
6181 ;
6182 }
6183 #pragma omp target simd
6184 for (int i = 0; i < 10; ++i) {
6185 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6186 for (int i = 0; i < 10; ++i)
6187 ;
6188 }
6189 #pragma omp target simd
6190 for (int i = 0; i < 10; ++i) {
6191 #pragma omp sections // 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 section // 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 single // 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 master // 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 critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6220 {
6221 bar();
6222 }
6223 }
6224 #pragma omp target simd
6225 for (int i = 0; i < 10; ++i) {
6226 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6227 {
6228 #pragma omp single
6229 {
6230 bar();
6231 }
6232 }
6233 }
6234 #pragma omp target simd
6235 for (int i = 0; i < 10; ++i) {
6236 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6237 for (int i = 0; i < 10; ++i)
6238 ;
6239 }
6240 #pragma omp target simd
6241 for (int i = 0; i < 10; ++i) {
6242 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6243 for (int i = 0; i < 10; ++i)
6244 ;
6245 }
6246 #pragma omp target simd
6247 for (int i = 0; i < 10; ++i) {
6248 #pragma omp parallel sections // 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6256 {
6257 bar();
6258 }
6259 }
6260 #pragma omp target simd
6261 for (int i = 0; i < 10; ++i) {
6262 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6263 bar();
6264 }
6265 #pragma omp target simd
6266 for (int i = 0; i < 10; ++i) {
6267 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6268 bar();
6269 }
6270 #pragma omp target simd
6271 for (int i = 0; i < 10; ++i) {
6272 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6273 bar();
6274 }
6275 #pragma omp target simd
6276 for (int i = 0; i < 10; ++i) {
6277 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6278 bar();
6279 }
6280 #pragma omp target simd
6281 for (int i = 0; i < 10; ++i) {
6282 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6283 bar();
6284 }
6285 #pragma omp target simd
6286 for (int i = 0; i < 10; ++i) {
6287 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6288 ++a;
6289 }
6290 #pragma omp target simd
6291 for (int i = 0; i < 10; ++i) {
6292 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6293 ++a;
6294 }
6295 #pragma omp target simd
6296 for (int i = 0; i < 10; ++i) {
6297 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6298 ++a;
6299 }
6300 #pragma omp target simd
6301 for (int i = 0; i < 10; ++i) {
6302 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6303 for (int i = 0; i < 10; ++i)
6304 ;
6305 }
6306 #pragma omp target simd
6307 for (int i = 0; i < 10; ++i) {
6308 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6309 ++a;
6310 }
6311 #pragma omp target simd
6312 for (int i = 0; i < 10; ++i) {
6313 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6314 ++a;
6315 }
6316 #pragma omp target simd
6317 for (int i = 0; i < 10; ++i) {
6318 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6319 ++a;
6320 }
6321 #pragma omp target simd
6322 for (int i = 0; i < 10; ++i) {
6323 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6324 ++a;
6325 }
6326 #pragma omp target simd
6327 for (int i = 0; i < 10; ++i) {
6328 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6329 for (int i = 0; i < 10; ++i)
6330 ++a;
6331 }
6332 #pragma omp target simd
6333 for (int i = 0; i < 10; ++i) {
6334 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6335 for (int i = 0; i < 10; ++i)
6336 ++a;
6337 }
6338 #pragma omp target simd
6339 for (int i = 0; i < 10; ++i) {
6340 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6341 for (int i = 0; i < 10; ++i)
6342 ++a;
6343 }
6344 #pragma omp target simd
6345 for (int i = 0; i < 10; ++i) {
6346 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6347 for (int i = 0; i < 10; ++i)
6348 ++a;
6349 }
6350 #pragma omp target simd
6351 for (int i = 0; i < 10; ++i) {
6352 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6353 for (int i = 0; i < 10; ++i)
6354 ++a;
6355 }
6356 #pragma omp target simd
6357 for (int i = 0; i < 10; ++i) {
6358 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6359 for (int i = 0; i < 10; ++i)
6360 ++a;
6361 }
6362 #pragma omp target simd
6363 for (int i = 0; i < 10; ++i) {
6364 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6365 for (int i = 0; i < 10; ++i)
6366 ++a;
6367 }
6368 #pragma omp target simd
6369 for (int i = 0; i < 10; ++i) {
6370 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6371 for (int i = 0; i < 10; ++i)
6372 ++a;
6373 }
6374
6375 // TEAMS DISTRIBUTE DIRECTIVE
6376 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
6377 for (int i = 0; i < 10; ++i)
6378 ;
6379 #pragma omp target
6380 #pragma omp teams distribute
6381 for (int i = 0; i < 10; ++i) {
6382 #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?}}
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 distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
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 for // 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 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 for simd // 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 parallel // OK
6418 for (int i = 0; i < 10; ++i)
6419 ;
6420 }
6421 #pragma omp target
6422 #pragma omp teams distribute
6423 for (int i = 0; i < 10; ++i) {
6424 #pragma omp sections // OK
6425 {
6426 bar();
6427 }
6428 }
6429 #pragma omp target
6430 #pragma omp teams distribute
6431 for (int i = 0; i < 10; ++i) {
6432 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
6433 {
6434 bar();
6435 }
6436 }
6437 #pragma omp target
6438 #pragma omp teams distribute
6439 for (int i = 0; i < 10; ++i) {
6440 #pragma omp single // OK
6441 {
6442 bar();
6443 }
6444 }
6445 #pragma omp target
6446 #pragma omp teams distribute
6447 for (int i = 0; i < 10; ++i) {
6448 #pragma omp master // OK
6449 {
6450 bar();
6451 }
6452 }
6453 #pragma omp target
6454 #pragma omp teams distribute
6455 for (int i = 0; i < 10; ++i) {
6456 #pragma omp critical // OK
6457 {
6458 bar();
6459 }
6460 }
6461 #pragma omp target
6462 #pragma omp teams distribute
6463 for (int i = 0; i < 10; ++i) {
6464 #pragma omp parallel // OK
6465 {
6466 #pragma omp single
6467 {
6468 bar();
6469 }
6470 }
6471 }
6472 #pragma omp target
6473 #pragma omp teams distribute
6474 for (int i = 0; i < 10; ++i) {
6475 #pragma omp parallel for // 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 for simd // OK
6483 for (int i = 0; i < 10; ++i)
6484 ;
6485 }
6486 #pragma omp target
6487 #pragma omp teams distribute
6488 for (int i = 0; i < 10; ++i) {
6489 #pragma omp parallel sections // OK
6490 {
6491 bar();
6492 }
6493 }
6494 #pragma omp target
6495 #pragma omp teams distribute
6496 for (int i = 0; i < 10; ++i) {
6497 #pragma omp task // OK
6498 {
6499 bar();
6500 }
6501 }
6502 #pragma omp target
6503 #pragma omp teams distribute
6504 for (int i = 0; i < 10; ++i) {
6505 #pragma omp taskyield // OK
6506 bar();
6507 }
6508 #pragma omp target
6509 #pragma omp teams distribute
6510 for (int i = 0; i < 10; ++i) {
6511 #pragma omp barrier // OK
6512 bar();
6513 }
6514 #pragma omp target
6515 #pragma omp teams distribute
6516 for (int i = 0; i < 10; ++i) {
6517 #pragma omp taskwait // OK
6518 bar();
6519 }
6520 #pragma omp target
6521 #pragma omp teams distribute
6522 for (int i = 0; i < 10; ++i) {
6523 #pragma omp flush // OK
6524 bar();
6525 }
6526 #pragma omp target
6527 #pragma omp teams distribute
6528 for (int i = 0; i < 10; ++i) {
6529 #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?}}
6530 bar();
6531 }
6532 #pragma omp target
6533 #pragma omp teams distribute
6534 for (int i = 0; i < 10; ++i) {
6535 #pragma omp atomic // OK
6536 ++a;
6537 }
6538 #pragma omp target
6539 #pragma omp teams distribute
6540 for (int i = 0; i < 10; ++i) {
6541 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
6542 ++a;
6543 }
6544 #pragma omp target
6545 #pragma omp teams distribute
6546 for (int i = 0; i < 10; ++i) {
6547 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
6548 ++a;
6549 }
6550 #pragma omp target
6551 #pragma omp teams distribute
6552 for (int i = 0; i < 10; ++i) {
6553 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
6554 for (int i = 0; i < 10; ++i)
6555 ;
6556 }
6557 #pragma omp target
6558 #pragma omp teams distribute
6559 for (int i = 0; i < 10; ++i) {
6560 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
6561 ++a;
6562 }
6563 #pragma omp target
6564 #pragma omp teams distribute
6565 for (int i = 0; i < 10; ++i) {
6566 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
6567 ++a;
6568 }
6569 #pragma omp target
6570 #pragma omp teams distribute
6571 for (int i = 0; i < 10; ++i) {
6572 #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?}}
6573 ++a;
6574 }
6575 #pragma omp target
6576 #pragma omp teams distribute
6577 for (int i = 0; i < 10; ++i) {
6578 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
6579 ++a;
6580 }
6581 #pragma omp target
6582 #pragma omp teams distribute
6583 for (int i = 0; i < 10; ++i) {
6584 #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?}}
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 target simd // expected-error {{region cannot be nested inside '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 // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' 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 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?}}
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 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?}}
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 // 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 parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
6627 for (int i = 0; i < 10; ++i)
6628 ++a;
6629 }
6630 #pragma omp target
6631 #pragma omp teams distribute
6632 for (int i = 0; i < 10; ++i) {
6633 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
6634 for (int i = 0; i < 10; ++i)
6635 ++a;
6636 }
6637
6638 // TEAMS DISTRIBUTE DIRECTIVE
6639 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
6640 for (int i = 0; i < 10; ++i)
6641 ;
6642 #pragma omp target
6643 #pragma omp teams distribute
6644 for (int i = 0; i < 10; ++i) {
6645 #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?}}
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 distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
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 for // 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 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 for simd // 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 parallel // OK
6681 for (int i = 0; i < 10; ++i)
6682 ;
6683 }
6684 #pragma omp target
6685 #pragma omp teams distribute
6686 for (int i = 0; i < 10; ++i) {
6687 #pragma omp sections // OK
6688 {
6689 bar();
6690 }
6691 }
6692 #pragma omp target
6693 #pragma omp teams distribute
6694 for (int i = 0; i < 10; ++i) {
6695 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
6696 {
6697 bar();
6698 }
6699 }
6700 #pragma omp target
6701 #pragma omp teams distribute
6702 for (int i = 0; i < 10; ++i) {
6703 #pragma omp single // OK
6704 {
6705 bar();
6706 }
6707 }
6708 #pragma omp target
6709 #pragma omp teams distribute
6710 for (int i = 0; i < 10; ++i) {
6711 #pragma omp master // OK
6712 {
6713 bar();
6714 }
6715 }
6716 #pragma omp target
6717 #pragma omp teams distribute
6718 for (int i = 0; i < 10; ++i) {
6719 #pragma omp critical // OK
6720 {
6721 bar();
6722 }
6723 }
6724 #pragma omp target
6725 #pragma omp teams distribute
6726 for (int i = 0; i < 10; ++i) {
6727 #pragma omp parallel // OK
6728 {
6729 #pragma omp single
6730 {
6731 bar();
6732 }
6733 }
6734 }
6735 #pragma omp target
6736 #pragma omp teams distribute
6737 for (int i = 0; i < 10; ++i) {
6738 #pragma omp parallel for // 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 for simd // OK
6746 for (int i = 0; i < 10; ++i)
6747 ;
6748 }
6749 #pragma omp target
6750 #pragma omp teams distribute
6751 for (int i = 0; i < 10; ++i) {
6752 #pragma omp parallel sections // OK
6753 {
6754 bar();
6755 }
6756 }
6757 #pragma omp target
6758 #pragma omp teams distribute
6759 for (int i = 0; i < 10; ++i) {
6760 #pragma omp task // OK
6761 {
6762 bar();
6763 }
6764 }
6765 #pragma omp target
6766 #pragma omp teams distribute
6767 for (int i = 0; i < 10; ++i) {
6768 #pragma omp taskyield // OK
6769 bar();
6770 }
6771 #pragma omp target
6772 #pragma omp teams distribute
6773 for (int i = 0; i < 10; ++i) {
6774 #pragma omp barrier // OK
6775 bar();
6776 }
6777 #pragma omp target
6778 #pragma omp teams distribute
6779 for (int i = 0; i < 10; ++i) {
6780 #pragma omp taskwait // OK
6781 bar();
6782 }
6783 #pragma omp target
6784 #pragma omp teams distribute
6785 for (int i = 0; i < 10; ++i) {
6786 #pragma omp flush // OK
6787 bar();
6788 }
6789 #pragma omp target
6790 #pragma omp teams distribute
6791 for (int i = 0; i < 10; ++i) {
6792 #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?}}
6793 bar();
6794 }
6795 #pragma omp target
6796 #pragma omp teams distribute
6797 for (int i = 0; i < 10; ++i) {
6798 #pragma omp atomic // OK
6799 ++a;
6800 }
6801 #pragma omp target
6802 #pragma omp teams distribute
6803 for (int i = 0; i < 10; ++i) {
6804 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
6805 ++a;
6806 }
6807 #pragma omp target
6808 #pragma omp teams distribute
6809 for (int i = 0; i < 10; ++i) {
6810 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
6811 ++a;
6812 }
6813 #pragma omp target
6814 #pragma omp teams distribute
6815 for (int i = 0; i < 10; ++i) {
6816 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
6817 for (int i = 0; i < 10; ++i)
6818 ;
6819 }
6820 #pragma omp target
6821 #pragma omp teams distribute
6822 for (int i = 0; i < 10; ++i) {
6823 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
6824 ++a;
6825 }
6826 #pragma omp target
6827 #pragma omp teams distribute
6828 for (int i = 0; i < 10; ++i) {
6829 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
6830 ++a;
6831 }
6832 #pragma omp target
6833 #pragma omp teams distribute
6834 for (int i = 0; i < 10; ++i) {
6835 #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?}}
6836 ++a;
6837 }
6838 #pragma omp target
6839 #pragma omp teams distribute
6840 for (int i = 0; i < 10; ++i) {
6841 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
6842 ++a;
6843 }
6844 #pragma omp target
6845 #pragma omp teams distribute
6846 for (int i = 0; i < 10; ++i) {
6847 #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?}}
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 target simd // expected-error {{region cannot be nested inside '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 // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' 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 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?}}
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 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?}}
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 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?}}
6883 for (int i = 0; i < 10; ++i)
6884 ++a;
6885 }
6886 #pragma omp target
6887 #pragma omp teams distribute
6888 for (int i = 0; i < 10; ++i) {
6889 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
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 // 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 // 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 parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
6910 for (int i = 0; i < 10; ++i)
6911 ++a;
6912 }
6913 #pragma omp target
6914 #pragma omp teams distribute
6915 for (int i = 0; i < 10; ++i) {
6916 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
6917 for (int i = 0; i < 10; ++i)
6918 ++a;
6919 }
6920
6921 // TEAMS DISTRIBUTE SIMD DIRECTIVE
6922 #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?}}
6923 for (int i = 0; i < 10; ++i)
6924 ;
6925 #pragma omp target
6926 #pragma omp teams distribute simd
6927 for (int i = 0; i < 10; ++i) {
6928 #pragma omp distribute parallel for simd // 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 distribute // 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 for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
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 for simd // 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 parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6964 for (int i = 0; i < 10; ++i)
6965 ;
6966 }
6967 #pragma omp target
6968 #pragma omp teams distribute simd
6969 for (int i = 0; i < 10; ++i) {
6970 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6971 {
6972 bar();
6973 }
6974 }
6975 #pragma omp target
6976 #pragma omp teams distribute simd
6977 for (int i = 0; i < 10; ++i) {
6978 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6979 {
6980 bar();
6981 }
6982 }
6983 #pragma omp target
6984 #pragma omp teams distribute simd
6985 for (int i = 0; i < 10; ++i) {
6986 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6987 {
6988 bar();
6989 }
6990 }
6991 #pragma omp target
6992 #pragma omp teams distribute simd
6993 for (int i = 0; i < 10; ++i) {
6994 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
6995 {
6996 bar();
6997 }
6998 }
6999 #pragma omp target
7000 #pragma omp teams distribute simd
7001 for (int i = 0; i < 10; ++i) {
7002 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7003 {
7004 bar();
7005 }
7006 }
7007 #pragma omp target
7008 #pragma omp teams distribute simd
7009 for (int i = 0; i < 10; ++i) {
7010 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7011 {
7012 #pragma omp single
7013 {
7014 bar();
7015 }
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 // 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 for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7029 for (int i = 0; i < 10; ++i)
7030 ;
7031 }
7032 #pragma omp target
7033 #pragma omp teams distribute simd
7034 for (int i = 0; i < 10; ++i) {
7035 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7036 {
7037 bar();
7038 }
7039 }
7040 #pragma omp target
7041 #pragma omp teams distribute simd
7042 for (int i = 0; i < 10; ++i) {
7043 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7044 {
7045 bar();
7046 }
7047 }
7048 #pragma omp target
7049 #pragma omp teams distribute simd
7050 for (int i = 0; i < 10; ++i) {
7051 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7052 bar();
7053 }
7054 #pragma omp target
7055 #pragma omp teams distribute simd
7056 for (int i = 0; i < 10; ++i) {
7057 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7058 bar();
7059 }
7060 #pragma omp target
7061 #pragma omp teams distribute simd
7062 for (int i = 0; i < 10; ++i) {
7063 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7064 bar();
7065 }
7066 #pragma omp target
7067 #pragma omp teams distribute simd
7068 for (int i = 0; i < 10; ++i) {
7069 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7070 bar();
7071 }
7072 #pragma omp target
7073 #pragma omp teams distribute simd
7074 for (int i = 0; i < 10; ++i) {
7075 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7076 bar();
7077 }
7078 #pragma omp target
7079 #pragma omp teams distribute simd
7080 for (int i = 0; i < 10; ++i) {
7081 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7082 ++a;
7083 }
7084 #pragma omp target
7085 #pragma omp teams distribute simd
7086 for (int i = 0; i < 10; ++i) {
7087 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7088 ++a;
7089 }
7090 #pragma omp target
7091 #pragma omp teams distribute simd
7092 for (int i = 0; i < 10; ++i) {
7093 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7094 ++a;
7095 }
7096 #pragma omp target
7097 #pragma omp teams distribute simd
7098 for (int i = 0; i < 10; ++i) {
7099 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7100 for (int i = 0; i < 10; ++i)
7101 ;
7102 }
7103 #pragma omp target
7104 #pragma omp teams distribute simd
7105 for (int i = 0; i < 10; ++i) {
7106 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7107 ++a;
7108 }
7109 #pragma omp target
7110 #pragma omp teams distribute simd
7111 for (int i = 0; i < 10; ++i) {
7112 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7113 ++a;
7114 }
7115 #pragma omp target
7116 #pragma omp teams distribute simd
7117 for (int i = 0; i < 10; ++i) {
7118 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7119 ++a;
7120 }
7121 #pragma omp target
7122 #pragma omp teams distribute simd
7123 for (int i = 0; i < 10; ++i) {
7124 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7125 ++a;
7126 }
7127 #pragma omp target
7128 #pragma omp teams distribute simd
7129 for (int i = 0; i < 10; ++i) {
7130 #pragma omp distribute 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 target simd // 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 // 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 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 simd // 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 teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7166 for (int i = 0; i < 10; ++i)
7167 ++a;
7168 }
7169 #pragma omp target
7170 #pragma omp teams distribute simd
7171 for (int i = 0; i < 10; ++i) {
7172 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 // 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 // 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 parallel for 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 #pragma omp target
7197 #pragma omp teams distribute simd
7198 for (int i = 0; i < 10; ++i) {
7199 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7200 for (int i = 0; i < 10; ++i)
7201 ++a;
7202 }
7203
7204 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
7205 #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?}}
7206 for (int i = 0; i < 10; ++i)
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 parallel for simd // 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 distribute // 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 for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
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 for simd // 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 parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7247 for (int i = 0; i < 10; ++i)
7248 ;
7249 }
7250 #pragma omp target
7251 #pragma omp teams distribute parallel for simd
7252 for (int i = 0; i < 10; ++i) {
7253 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7254 {
7255 bar();
7256 }
7257 }
7258 #pragma omp target
7259 #pragma omp teams distribute parallel for simd
7260 for (int i = 0; i < 10; ++i) {
7261 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7262 {
7263 bar();
7264 }
7265 }
7266 #pragma omp target
7267 #pragma omp teams distribute parallel for simd
7268 for (int i = 0; i < 10; ++i) {
7269 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7270 {
7271 bar();
7272 }
7273 }
7274 #pragma omp target
7275 #pragma omp teams distribute parallel for simd
7276 for (int i = 0; i < 10; ++i) {
7277 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7278 {
7279 bar();
7280 }
7281 }
7282 #pragma omp target
7283 #pragma omp teams distribute parallel for simd
7284 for (int i = 0; i < 10; ++i) {
7285 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7286 {
7287 bar();
7288 }
7289 }
7290 #pragma omp target
7291 #pragma omp teams distribute parallel for simd
7292 for (int i = 0; i < 10; ++i) {
7293 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7294 {
7295 #pragma omp single
7296 {
7297 bar();
7298 }
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 // 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 for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7312 for (int i = 0; i < 10; ++i)
7313 ;
7314 }
7315 #pragma omp target
7316 #pragma omp teams distribute parallel for simd
7317 for (int i = 0; i < 10; ++i) {
7318 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7319 {
7320 bar();
7321 }
7322 }
7323 #pragma omp target
7324 #pragma omp teams distribute parallel for simd
7325 for (int i = 0; i < 10; ++i) {
7326 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7327 {
7328 bar();
7329 }
7330 }
7331 #pragma omp target
7332 #pragma omp teams distribute parallel for simd
7333 for (int i = 0; i < 10; ++i) {
7334 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7335 bar();
7336 }
7337 #pragma omp target
7338 #pragma omp teams distribute parallel for simd
7339 for (int i = 0; i < 10; ++i) {
7340 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7341 bar();
7342 }
7343 #pragma omp target
7344 #pragma omp teams distribute parallel for simd
7345 for (int i = 0; i < 10; ++i) {
7346 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7347 bar();
7348 }
7349 #pragma omp target
7350 #pragma omp teams distribute parallel for simd
7351 for (int i = 0; i < 10; ++i) {
7352 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7353 bar();
7354 }
7355 #pragma omp target
7356 #pragma omp teams distribute parallel for simd
7357 for (int i = 0; i < 10; ++i) {
7358 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7359 bar();
7360 }
7361 #pragma omp target
7362 #pragma omp teams distribute parallel for simd
7363 for (int i = 0; i < 10; ++i) {
7364 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7365 ++a;
7366 }
7367 #pragma omp target
7368 #pragma omp teams distribute parallel for simd
7369 for (int i = 0; i < 10; ++i) {
7370 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7371 ++a;
7372 }
7373 #pragma omp target
7374 #pragma omp teams distribute parallel for simd
7375 for (int i = 0; i < 10; ++i) {
7376 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7377 ++a;
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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7383 for (int i = 0; i < 10; ++i)
7384 ;
7385 }
7386 #pragma omp target
7387 #pragma omp teams distribute parallel for simd
7388 for (int i = 0; i < 10; ++i) {
7389 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7390 ++a;
7391 }
7392 #pragma omp target
7393 #pragma omp teams distribute parallel for simd
7394 for (int i = 0; i < 10; ++i) {
7395 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7396 ++a;
7397 }
7398 #pragma omp target
7399 #pragma omp teams distribute parallel for simd
7400 for (int i = 0; i < 10; ++i) {
7401 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7402 ++a;
7403 }
7404 #pragma omp target
7405 #pragma omp teams distribute parallel for simd
7406 for (int i = 0; i < 10; ++i) {
7407 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 distribute 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 target simd // 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 // 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 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 simd // 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 teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7449 for (int i = 0; i < 10; ++i)
7450 ++a;
7451 }
7452 #pragma omp target
7453 #pragma omp teams distribute parallel for simd
7454 for (int i = 0; i < 10; ++i) {
7455 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 // 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 // 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 parallel for 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 #pragma omp target
7480 #pragma omp teams distribute parallel for simd
7481 for (int i = 0; i < 10; ++i) {
7482 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
7483 for (int i = 0; i < 10; ++i)
7484 ++a;
7485 }
7486
7487 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
7488 #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?}}
7489 for (int i = 0; i < 10; ++i)
7490 ;
7491 #pragma omp target
7492 #pragma omp teams distribute parallel for
7493 for (int i = 0; i < 10; ++i) {
7494 #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?}}
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 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?}}
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 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?}}
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 simd // OK
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 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?}}
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 parallel // OK
7530 for (int i = 0; i < 10; ++i)
7531 ;
7532 }
7533 #pragma omp target
7534 #pragma omp teams distribute parallel for
7535 for (int i = 0; i < 10; ++i) {
7536 #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?}}
7537 {
7538 bar();
7539 }
7540 }
7541 #pragma omp target
7542 #pragma omp teams distribute parallel for
7543 for (int i = 0; i < 10; ++i) {
7544 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}
7545 {
7546 bar();
7547 }
7548 }
7549 #pragma omp target
7550 #pragma omp teams distribute parallel for
7551 for (int i = 0; i < 10; ++i) {
7552 #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?}}
7553 {
7554 bar();
7555 }
7556 }
7557 #pragma omp target
7558 #pragma omp teams distribute parallel for
7559 for (int i = 0; i < 10; ++i) {
7560 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
7561 {
7562 bar();
7563 }
7564 }
7565 #pragma omp target
7566 #pragma omp teams distribute parallel for
7567 for (int i = 0; i < 10; ++i) {
7568 #pragma omp critical // OK
7569 {
7570 bar();
7571 }
7572 }
7573 #pragma omp target
7574 #pragma omp teams distribute parallel for
7575 for (int i = 0; i < 10; ++i) {
7576 #pragma omp parallel // OK
7577 {
7578 #pragma omp single
7579 {
7580 bar();
7581 }
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 // 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 for simd // OK
7595 for (int i = 0; i < 10; ++i)
7596 ;
7597 }
7598 #pragma omp target
7599 #pragma omp teams distribute parallel for
7600 for (int i = 0; i < 10; ++i) {
7601 #pragma omp parallel sections // OK
7602 {
7603 bar();
7604 }
7605 }
7606 #pragma omp target
7607 #pragma omp teams distribute parallel for
7608 for (int i = 0; i < 10; ++i) {
7609 #pragma omp task // OK
7610 {
7611 bar();
7612 }
7613 }
7614 #pragma omp target
7615 #pragma omp teams distribute parallel for
7616 for (int i = 0; i < 10; ++i) {
7617 #pragma omp taskyield // OK
7618 bar();
7619 }
7620 #pragma omp target
7621 #pragma omp teams distribute parallel for
7622 for (int i = 0; i < 10; ++i) {
7623 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
7624 bar();
7625 }
7626 #pragma omp target
7627 #pragma omp teams distribute parallel for
7628 for (int i = 0; i < 10; ++i) {
7629 #pragma omp taskwait // OK
7630 bar();
7631 }
7632 #pragma omp target
7633 #pragma omp teams distribute parallel for
7634 for (int i = 0; i < 10; ++i) {
7635 #pragma omp flush // OK
7636 bar();
7637 }
7638 #pragma omp target
7639 #pragma omp teams distribute parallel for
7640 for (int i = 0; i < 10; ++i) {
7641 #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?}}
7642 bar();
7643 }
7644 #pragma omp target
7645 #pragma omp teams distribute parallel for
7646 for (int i = 0; i < 10; ++i) {
7647 #pragma omp atomic // OK
7648 ++a;
7649 }
7650 #pragma omp target
7651 #pragma omp teams distribute parallel for
7652 for (int i = 0; i < 10; ++i) {
7653 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
7654 ++a;
7655 }
7656 #pragma omp target
7657 #pragma omp teams distribute parallel for
7658 for (int i = 0; i < 10; ++i) {
7659 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
7660 ++a;
7661 }
7662 #pragma omp target
7663 #pragma omp teams distribute parallel for
7664 for (int i = 0; i < 10; ++i) {
7665 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
7666 for (int i = 0; i < 10; ++i)
7667 ;
7668 }
7669 #pragma omp target
7670 #pragma omp teams distribute parallel for
7671 for (int i = 0; i < 10; ++i) {
7672 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
7673 ++a;
7674 }
7675 #pragma omp target
7676 #pragma omp teams distribute parallel for
7677 for (int i = 0; i < 10; ++i) {
7678 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
7679 ++a;
7680 }
7681 #pragma omp target
7682 #pragma omp teams distribute parallel for
7683 for (int i = 0; i < 10; ++i) {
7684 #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?}}
7685 ++a;
7686 }
7687 #pragma omp target
7688 #pragma omp teams distribute parallel for
7689 for (int i = 0; i < 10; ++i) {
7690 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
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 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?}}
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 target simd // expected-error {{region cannot be nested inside '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 // 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?}}
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 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?}}
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 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?}}
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 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?}}
7732 for (int i = 0; i < 10; ++i)
7733 ++a;
7734 }
7735 #pragma omp target
7736 #pragma omp teams distribute parallel for
7737 for (int i = 0; i < 10; ++i) {
7738 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
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 // 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 // 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 parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
7759 for (int i = 0; i < 10; ++i)
7760 ++a;
7761 }
7762 #pragma omp target
7763 #pragma omp teams distribute parallel for
7764 for (int i = 0; i < 10; ++i) {
7765 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
7766 for (int i = 0; i < 10; ++i)
7767 ++a;
7768 }
7769
7770 // TARGET TEAMS DIRECTIVE
7771 #pragma omp target teams
7772 #pragma omp parallel
7773 bar();
7774 #pragma omp target teams
7775 #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?}}
7776 for (int i = 0; i < 10; ++i)
7777 ;
7778 #pragma omp target teams
7779 #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?}}
7780 for (int i = 0; i < 10; ++i)
7781 ;
7782 #pragma omp target teams
7783 #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?}}
7784 for (int i = 0; i < 10; ++i)
7785 ;
7786 #pragma omp target teams
7787 #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?}}
7788 {
7789 bar();
7790 }
7791 #pragma omp target teams
7792 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}
7793 {
7794 bar();
7795 }
7796 #pragma omp target teams
7797 #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?}}
7798 bar();
7799
7800 #pragma omp target teams
7801 #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?}}
7802 {
7803 bar();
7804 }
7805 #pragma omp target teams
7806 #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?}}
7807 {
7808 bar();
7809 }
7810 #pragma omp target teams
7811 #pragma omp parallel for
7812 for (int i = 0; i < 10; ++i)
7813 ;
7814 #pragma omp target teams
7815 #pragma omp parallel for simd
7816 for (int i = 0; i < 10; ++i)
7817 ;
7818 #pragma omp target teams
7819 #pragma omp parallel sections
7820 {
7821 bar();
7822 }
7823 #pragma omp target teams
7824 #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?}}
7825 {
7826 bar();
7827 }
7828 #pragma omp target teams
7829 {
7830 #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?}}
7831 bar();
7832 }
7833 #pragma omp target teams
7834 {
7835 #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?}}
7836 bar();
7837 }
7838 #pragma omp target teams
7839 {
7840 #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?}}
7841 bar();
7842 }
7843 #pragma omp target teams
7844 {
7845 #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?}}
7846 bar();
7847 }
7848 #pragma omp target teams
7849 {
7850 #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?}}
7851 bar();
7852 }
7853 #pragma omp target teams
7854 {
7855 #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?}}
7856 ++a;
7857 }
7858 #pragma omp target teams
7859 {
7860 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}
7861 ++a;
7862 }
7863 #pragma omp target teams
7864 {
7865 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}
7866 ++a;
7867 }
7868 #pragma omp target teams
7869 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
7870 for (int i = 0; i < 10; ++i)
7871 ;
7872 #pragma omp target teams
7873 {
7874 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}
7875 }
7876 #pragma omp target teams
7877 {
7878 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}
7879 }
7880 #pragma omp target teams
7881 {
7882 #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?}}
7883 ++a;
7884 }
7885 #pragma omp target teams
7886 {
7887 #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?}}
7888 for (int i = 0; i < 10; ++i)
7889 ++a;
7890 }
7891 #pragma omp target teams
7892 #pragma omp distribute
7893 for (int i = 0; i < 10; ++i)
7894 ;
7895 #pragma omp target teams
7896 {
7897 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}
7898 ++a;
7899 }
7900 #pragma omp target teams
7901 #pragma omp distribute parallel for
7902 for (int i = 0; i < 10; ++i)
7903 ;
7904 #pragma omp target teams
7905 {
7906 #pragma omp distribute parallel for
7907 for (int i = 0; i < 10; ++i)
7908 ;
7909 #pragma omp distribute parallel for
7910 for (int j = 0; j < 10; ++j)
7911 ;
7912 }
7913 #pragma omp target teams
7914 {
7915 #pragma omp distribute parallel for simd
7916 for (int i = 0; i < 10; ++i)
7917 ;
7918 #pragma omp distribute parallel for simd
7919 for (int j = 0; j < 10; ++j)
7920 ;
7921 }
7922 #pragma omp target teams
7923 {
7924 #pragma omp distribute simd
7925 for (int i = 0; i < 10; ++i)
7926 ;
7927 #pragma omp distribute simd
7928 for (int j = 0; j < 10; ++j)
7929 ;
7930 }
7931 #pragma omp target teams
7932 {
7933 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}
7934 for (int i = 0; i < 10; ++i)
7935 ;
7936 }
7937 #pragma omp target teams
7938 {
7939 #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?}}
7940 for (int i = 0; i < 10; ++i)
7941 ;
7942 }
7943 #pragma omp target teams
7944 {
7945 #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?}}
7946 for (int i = 0; i < 10; ++i)
7947 ;
7948 }
7949 #pragma omp target teams
7950 {
7951 #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?}}
7952 for (int i = 0; i < 10; ++i)
7953 ;
7954 }
7955 #pragma omp target teams
7956 {
7957 #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?}}
7958 for (int i = 0; i < 10; ++i)
7959 ;
7960 }
7961 #pragma omp target teams
7962 {
7963 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}
7964 a++;
7965 }
7966 #pragma omp target teams
7967 {
7968 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}
7969 for (int i = 0; i < 10; ++i)
7970 ;
7971 }
7972 #pragma omp target teams
7973 {
7974 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
7975 for (int i = 0; i < 10; ++i)
7976 ;
7977 }
7978 #pragma omp target teams
7979 {
7980 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}
7981 for (int i = 0; i < 10; ++i)
7982 ;
7983 }
7984 #pragma omp target teams
7985 {
7986 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}
7987 for (int i = 0; i < 10; ++i)
7988 ;
7989 }
7990
7991 // TARGET TEAMS DISTRIBUTE DIRECTIVE
7992 #pragma omp target teams distribute // OK
7993 for (int i = 0; i < 10; ++i)
7994 ;
7995 #pragma omp target teams distribute
7996 for (int i = 0; i < 10; ++i) {
7997 #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?}}
7998 for (int i = 0; i < 10; ++i)
7999 ;
8000 }
8001 #pragma omp target teams distribute
8002 for (int i = 0; i < 10; ++i) {
8003 #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?}}
8004 for (int i = 0; i < 10; ++i)
8005 ;
8006 }
8007 #pragma omp target teams distribute
8008 for (int i = 0; i < 10; ++i) {
8009 #pragma omp for // OK
8010 for (int i = 0; i < 10; ++i)
8011 ;
8012 }
8013 #pragma omp target teams distribute
8014 for (int i = 0; i < 10; ++i) {
8015 #pragma omp simd // OK
8016 for (int i = 0; i < 10; ++i)
8017 ;
8018 }
8019 #pragma omp target teams distribute
8020 for (int i = 0; i < 10; ++i) {
8021 #pragma omp for simd // OK
8022 for (int i = 0; i < 10; ++i)
8023 ;
8024 }
8025 #pragma omp target teams distribute
8026 for (int i = 0; i < 10; ++i) {
8027 #pragma omp parallel // OK
8028 for (int i = 0; i < 10; ++i)
8029 ;
8030 }
8031 #pragma omp target teams distribute
8032 for (int i = 0; i < 10; ++i) {
8033 #pragma omp sections // OK
8034 {
8035 bar();
8036 }
8037 }
8038 #pragma omp target teams distribute
8039 for (int i = 0; i < 10; ++i) {
8040 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}
8041 {
8042 bar();
8043 }
8044 }
8045 #pragma omp target teams distribute
8046 for (int i = 0; i < 10; ++i) {
8047 #pragma omp single // OK
8048 {
8049 bar();
8050 }
8051 }
8052 #pragma omp target teams distribute
8053 for (int i = 0; i < 10; ++i) {
8054 #pragma omp master // OK
8055 {
8056 bar();
8057 }
8058 }
8059 #pragma omp target teams distribute
8060 for (int i = 0; i < 10; ++i) {
8061 #pragma omp critical // OK
8062 {
8063 bar();
8064 }
8065 }
8066 #pragma omp target teams distribute
8067 for (int i = 0; i < 10; ++i) {
8068 #pragma omp parallel // OK
8069 {
8070 #pragma omp single
8071 {
8072 bar();
8073 }
8074 }
8075 }
8076 #pragma omp target teams distribute
8077 for (int i = 0; i < 10; ++i) {
8078 #pragma omp parallel for // OK
8079 for (int i = 0; i < 10; ++i)
8080 ;
8081 }
8082 #pragma omp target teams distribute
8083 for (int i = 0; i < 10; ++i) {
8084 #pragma omp parallel for simd // OK
8085 for (int i = 0; i < 10; ++i)
8086 ;
8087 }
8088 #pragma omp target teams distribute
8089 for (int i = 0; i < 10; ++i) {
8090 #pragma omp parallel sections // OK
8091 {
8092 bar();
8093 }
8094 }
8095 #pragma omp target teams distribute
8096 for (int i = 0; i < 10; ++i) {
8097 #pragma omp task // OK
8098 {
8099 bar();
8100 }
8101 }
8102 #pragma omp target teams distribute
8103 for (int i = 0; i < 10; ++i) {
8104 #pragma omp taskyield // OK
8105 bar();
8106 }
8107 #pragma omp target teams distribute
8108 for (int i = 0; i < 10; ++i) {
8109 #pragma omp barrier // OK
8110 bar();
8111 }
8112 #pragma omp target teams distribute
8113 for (int i = 0; i < 10; ++i) {
8114 #pragma omp taskwait // OK
8115 bar();
8116 }
8117 #pragma omp target teams distribute
8118 for (int i = 0; i < 10; ++i) {
8119 #pragma omp flush // OK
8120 bar();
8121 }
8122 #pragma omp target teams distribute
8123 for (int i = 0; i < 10; ++i) {
8124 #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?}}
8125 bar();
8126 }
8127 #pragma omp target teams distribute
8128 for (int i = 0; i < 10; ++i) {
8129 #pragma omp atomic // OK
8130 ++a;
8131 }
8132 #pragma omp target teams distribute
8133 for (int i = 0; i < 10; ++i) {
8134 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8135 ++a;
8136 }
8137 #pragma omp target teams distribute
8138 for (int i = 0; i < 10; ++i) {
8139 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8140 ++a;
8141 }
8142 #pragma omp target teams distribute
8143 for (int i = 0; i < 10; ++i) {
8144 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8145 for (int i = 0; i < 10; ++i)
8146 ;
8147 }
8148 #pragma omp target teams distribute
8149 for (int i = 0; i < 10; ++i) {
8150 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8151 ++a;
8152 }
8153 #pragma omp target teams distribute
8154 for (int i = 0; i < 10; ++i) {
8155 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8156 ++a;
8157 }
8158 #pragma omp target teams distribute
8159 for (int i = 0; i < 10; ++i) {
8160 #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?}}
8161 ++a;
8162 }
8163 #pragma omp target teams distribute
8164 for (int i = 0; i < 10; ++i) {
8165 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8166 ++a;
8167 }
8168 #pragma omp target teams distribute
8169 for (int i = 0; i < 10; ++i) {
8170 #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?}}
8171 for (int i = 0; i < 10; ++i)
8172 ++a;
8173 }
8174 #pragma omp target teams distribute
8175 for (int i = 0; i < 10; ++i) {
8176 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8177 for (int i = 0; i < 10; ++i)
8178 ++a;
8179 }
8180 #pragma omp target teams distribute
8181 for (int i = 0; i < 10; ++i) {
8182 #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?}}
8183 for (int i = 0; i < 10; ++i)
8184 ++a;
8185 }
8186 #pragma omp target teams distribute
8187 for (int i = 0; i < 10; ++i) {
8188 #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?}}
8189 for (int i = 0; i < 10; ++i)
8190 ++a;
8191 }
8192 #pragma omp target teams distribute
8193 for (int i = 0; i < 10; ++i) {
8194 #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?}}
8195 for (int i = 0; i < 10; ++i)
8196 ++a;
8197 }
8198 #pragma omp target teams distribute
8199 for (int i = 0; i < 10; ++i) {
8200 #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?}}
8201 for (int i = 0; i < 10; ++i)
8202 ;
8203 }
8204 #pragma omp target teams distribute
8205 for (int i = 0; i < 10; ++i) {
8206 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8207 a++;
8208 }
8209 #pragma omp target teams distribute
8210 for (int i = 0; i < 10; ++i) {
8211 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8212 for (int i = 0; i < 10; ++i)
8213 ;
8214 }
8215 #pragma omp target teams distribute
8216 for (int i = 0; i < 10; ++i) {
8217 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8218 for (int i = 0; i < 10; ++i)
8219 ;
8220 }
8221 #pragma omp target teams distribute
8222 for (int i = 0; i < 10; ++i) {
8223 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8224 for (int i = 0; i < 10; ++i)
8225 ;
8226 }
8227 #pragma omp target teams distribute
8228 for (int i = 0; i < 10; ++i) {
8229 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
8230 for (int i = 0; i < 10; ++i)
8231 ;
8232 }
8233
8234 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
8235 #pragma omp target teams distribute parallel for // OK
8236 for (int i = 0; i < 10; ++i)
8237 ;
8238 #pragma omp target teams distribute parallel for
8239 for (int i = 0; i < 10; ++i) {
8240 #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?}}
8241 for (int i = 0; i < 10; ++i)
8242 ;
8243 }
8244 #pragma omp target teams distribute parallel for
8245 for (int i = 0; i < 10; ++i) {
8246 #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?}}
8247 for (int i = 0; i < 10; ++i)
8248 ;
8249 }
8250 #pragma omp target teams distribute parallel for
8251 for (int i = 0; i < 10; ++i) {
8252 #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?}}
8253 for (int i = 0; i < 10; ++i)
8254 ;
8255 }
8256 #pragma omp target teams distribute parallel for
8257 for (int i = 0; i < 10; ++i) {
8258 #pragma omp simd // OK
8259 for (int i = 0; i < 10; ++i)
8260 ;
8261 }
8262 #pragma omp target teams distribute parallel for
8263 for (int i = 0; i < 10; ++i) {
8264 #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?}}
8265 for (int i = 0; i < 10; ++i)
8266 ;
8267 }
8268 #pragma omp target teams distribute parallel for
8269 for (int i = 0; i < 10; ++i) {
8270 #pragma omp parallel // OK
8271 for (int i = 0; i < 10; ++i)
8272 ;
8273 }
8274 #pragma omp target teams distribute parallel for
8275 for (int i = 0; i < 10; ++i) {
8276 #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?}}
8277 {
8278 bar();
8279 }
8280 }
8281 #pragma omp target teams distribute parallel for
8282 for (int i = 0; i < 10; ++i) {
8283 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for 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 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?}}
8291 {
8292 bar();
8293 }
8294 }
8295 #pragma omp target teams distribute parallel for
8296 for (int i = 0; i < 10; ++i) {
8297 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8298 {
8299 bar();
8300 }
8301 }
8302 #pragma omp target teams distribute parallel for
8303 for (int i = 0; i < 10; ++i) {
8304 #pragma omp critical // OK
8305 {
8306 bar();
8307 }
8308 }
8309 #pragma omp target teams distribute parallel for
8310 for (int i = 0; i < 10; ++i) {
8311 #pragma omp parallel // OK
8312 {
8313 #pragma omp single
8314 {
8315 bar();
8316 }
8317 }
8318 }
8319 #pragma omp target teams distribute parallel for
8320 for (int i = 0; i < 10; ++i) {
8321 #pragma omp parallel for // OK
8322 for (int i = 0; i < 10; ++i)
8323 ;
8324 }
8325 #pragma omp target teams distribute parallel for
8326 for (int i = 0; i < 10; ++i) {
8327 #pragma omp parallel for simd // OK
8328 for (int i = 0; i < 10; ++i)
8329 ;
8330 }
8331 #pragma omp target teams distribute parallel for
8332 for (int i = 0; i < 10; ++i) {
8333 #pragma omp parallel sections // 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 task // OK
8341 {
8342 bar();
8343 }
8344 }
8345 #pragma omp target teams distribute parallel for
8346 for (int i = 0; i < 10; ++i) {
8347 #pragma omp taskyield // OK
8348 bar();
8349 }
8350 #pragma omp target teams distribute parallel for
8351 for (int i = 0; i < 10; ++i) {
8352 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
8353 bar();
8354 }
8355 #pragma omp target teams distribute parallel for
8356 for (int i = 0; i < 10; ++i) {
8357 #pragma omp taskwait // OK
8358 bar();
8359 }
8360 #pragma omp target teams distribute parallel for
8361 for (int i = 0; i < 10; ++i) {
8362 #pragma omp flush // OK
8363 bar();
8364 }
8365 #pragma omp target teams distribute parallel for
8366 for (int i = 0; i < 10; ++i) {
8367 #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?}}
8368 bar();
8369 }
8370 #pragma omp target teams distribute parallel for
8371 for (int i = 0; i < 10; ++i) {
8372 #pragma omp atomic // OK
8373 ++a;
8374 }
8375 #pragma omp target teams distribute parallel for
8376 for (int i = 0; i < 10; ++i) {
8377 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8378 ++a;
8379 }
8380 #pragma omp target teams distribute parallel for
8381 for (int i = 0; i < 10; ++i) {
8382 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8383 ++a;
8384 }
8385 #pragma omp target teams distribute parallel for
8386 for (int i = 0; i < 10; ++i) {
8387 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8388 for (int i = 0; i < 10; ++i)
8389 ;
8390 }
8391 #pragma omp target teams distribute parallel for
8392 for (int i = 0; i < 10; ++i) {
8393 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8394 ++a;
8395 }
8396 #pragma omp target teams distribute parallel for
8397 for (int i = 0; i < 10; ++i) {
8398 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8399 ++a;
8400 }
8401 #pragma omp target teams distribute parallel for
8402 for (int i = 0; i < 10; ++i) {
8403 #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?}}
8404 ++a;
8405 }
8406 #pragma omp target teams distribute parallel for
8407 for (int i = 0; i < 10; ++i) {
8408 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8409 ++a;
8410 }
8411 #pragma omp target teams distribute parallel for
8412 for (int i = 0; i < 10; ++i) {
8413 #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?}}
8414 for (int i = 0; i < 10; ++i)
8415 ++a;
8416 }
8417 #pragma omp target teams distribute parallel for
8418 for (int i = 0; i < 10; ++i) {
8419 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8420 for (int i = 0; i < 10; ++i)
8421 ++a;
8422 }
8423 #pragma omp target teams distribute parallel for
8424 for (int i = 0; i < 10; ++i) {
8425 #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?}}
8426 for (int i = 0; i < 10; ++i)
8427 ++a;
8428 }
8429 #pragma omp target teams distribute parallel for
8430 for (int i = 0; i < 10; ++i) {
8431 #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?}}
8432 for (int i = 0; i < 10; ++i)
8433 ++a;
8434 }
8435 #pragma omp target teams distribute parallel for
8436 for (int i = 0; i < 10; ++i) {
8437 #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?}}
8438 for (int i = 0; i < 10; ++i)
8439 ++a;
8440 }
8441 #pragma omp target teams distribute parallel for
8442 for (int i = 0; i < 10; ++i) {
8443 #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?}}
8444 for (int i = 0; i < 10; ++i)
8445 ;
8446 }
8447 #pragma omp target teams distribute parallel for
8448 for (int i = 0; i < 10; ++i) {
8449 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8450 a++;
8451 }
8452 #pragma omp target teams distribute parallel for
8453 for (int i = 0; i < 10; ++i) {
8454 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8455 for (int i = 0; i < 10; ++i)
8456 ;
8457 }
8458 #pragma omp target teams distribute parallel for
8459 for (int i = 0; i < 10; ++i) {
8460 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8461 for (int i = 0; i < 10; ++i)
8462 ;
8463 }
8464 #pragma omp target teams distribute parallel for
8465 for (int i = 0; i < 10; ++i) {
8466 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8467 for (int i = 0; i < 10; ++i)
8468 ;
8469 }
8470 #pragma omp target teams distribute parallel for
8471 for (int i = 0; i < 10; ++i) {
8472 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
8473 for (int i = 0; i < 10; ++i)
8474 ;
8475 }
8476
8477 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
8478 #pragma omp target teams distribute parallel for simd // OK
8479 for (int i = 0; i < 10; ++i)
8480 ;
8481 #pragma omp target teams distribute parallel for simd
8482 for (int i = 0; i < 10; ++i) {
8483 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8484 for (int i = 0; i < 10; ++i)
8485 ;
8486 }
8487 #pragma omp target teams distribute parallel for simd
8488 for (int i = 0; i < 10; ++i) {
8489 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8490 for (int i = 0; i < 10; ++i)
8491 ;
8492 }
8493 #pragma omp target teams distribute parallel for simd
8494 for (int i = 0; i < 10; ++i) {
8495 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8496 for (int i = 0; i < 10; ++i)
8497 ;
8498 }
8499 #pragma omp target teams distribute parallel for simd
8500 for (int i = 0; i < 10; ++i) {
8501 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
8502 for (int i = 0; i < 10; ++i)
8503 ;
8504 }
8505 #pragma omp target teams distribute parallel for simd
8506 for (int i = 0; i < 10; ++i) {
8507 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8508 for (int i = 0; i < 10; ++i)
8509 ;
8510 }
8511 #pragma omp target teams distribute parallel for simd
8512 for (int i = 0; i < 10; ++i) {
8513 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8514 for (int i = 0; i < 10; ++i)
8515 ;
8516 }
8517 #pragma omp target teams distribute parallel for simd
8518 for (int i = 0; i < 10; ++i) {
8519 #pragma omp sections // 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 section // 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 single // 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 master // 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 critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8548 {
8549 bar();
8550 }
8551 }
8552 #pragma omp target teams distribute parallel for simd
8553 for (int i = 0; i < 10; ++i) {
8554 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8555 {
8556 #pragma omp single
8557 {
8558 bar();
8559 }
8560 }
8561 }
8562 #pragma omp target teams distribute parallel for simd
8563 for (int i = 0; i < 10; ++i) {
8564 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8565 for (int i = 0; i < 10; ++i)
8566 ;
8567 }
8568 #pragma omp target teams distribute parallel for simd
8569 for (int i = 0; i < 10; ++i) {
8570 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8571 for (int i = 0; i < 10; ++i)
8572 ;
8573 }
8574 #pragma omp target teams distribute parallel for simd
8575 for (int i = 0; i < 10; ++i) {
8576 #pragma omp parallel sections // 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8584 {
8585 bar();
8586 }
8587 }
8588 #pragma omp target teams distribute parallel for simd
8589 for (int i = 0; i < 10; ++i) {
8590 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8591 bar();
8592 }
8593 #pragma omp target teams distribute parallel for simd
8594 for (int i = 0; i < 10; ++i) {
8595 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8596 bar();
8597 }
8598 #pragma omp target teams distribute parallel for simd
8599 for (int i = 0; i < 10; ++i) {
8600 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8601 bar();
8602 }
8603 #pragma omp target teams distribute parallel for simd
8604 for (int i = 0; i < 10; ++i) {
8605 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8606 bar();
8607 }
8608 #pragma omp target teams distribute parallel for simd
8609 for (int i = 0; i < 10; ++i) {
8610 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8611 bar();
8612 }
8613 #pragma omp target teams distribute parallel for simd
8614 for (int i = 0; i < 10; ++i) {
8615 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
8616 ++a;
8617 }
8618 #pragma omp target teams distribute parallel for simd
8619 for (int i = 0; i < 10; ++i) {
8620 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8621 ++a;
8622 }
8623 #pragma omp target teams distribute parallel for simd
8624 for (int i = 0; i < 10; ++i) {
8625 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8626 ++a;
8627 }
8628 #pragma omp target teams distribute parallel for simd
8629 for (int i = 0; i < 10; ++i) {
8630 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8631 for (int i = 0; i < 10; ++i)
8632 ;
8633 }
8634 #pragma omp target teams distribute parallel for simd
8635 for (int i = 0; i < 10; ++i) {
8636 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8637 ++a;
8638 }
8639 #pragma omp target teams distribute parallel for simd
8640 for (int i = 0; i < 10; ++i) {
8641 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8642 ++a;
8643 }
8644 #pragma omp target teams distribute parallel for simd
8645 for (int i = 0; i < 10; ++i) {
8646 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8647 ++a;
8648 }
8649 #pragma omp target teams distribute parallel for simd
8650 for (int i = 0; i < 10; ++i) {
8651 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8652 ++a;
8653 }
8654 #pragma omp target teams distribute parallel for simd
8655 for (int i = 0; i < 10; ++i) {
8656 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8657 for (int i = 0; i < 10; ++i)
8658 ++a;
8659 }
8660 #pragma omp target teams distribute parallel for simd
8661 for (int i = 0; i < 10; ++i) {
8662 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8663 for (int i = 0; i < 10; ++i)
8664 ++a;
8665 }
8666 #pragma omp target teams distribute parallel for simd
8667 for (int i = 0; i < 10; ++i) {
8668 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8669 for (int i = 0; i < 10; ++i)
8670 ++a;
8671 }
8672 #pragma omp target teams distribute parallel for simd
8673 for (int i = 0; i < 10; ++i) {
8674 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8675 for (int i = 0; i < 10; ++i)
8676 ++a;
8677 }
8678 #pragma omp target teams distribute parallel for simd
8679 for (int i = 0; i < 10; ++i) {
8680 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8681 for (int i = 0; i < 10; ++i)
8682 ++a;
8683 }
8684 #pragma omp target teams distribute parallel for simd
8685 for (int i = 0; i < 10; ++i) {
8686 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8687 for (int i = 0; i < 10; ++i)
8688 ;
8689 }
8690 #pragma omp target teams distribute parallel for simd
8691 for (int i = 0; i < 10; ++i) {
8692 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8693 a++;
8694 }
8695 #pragma omp target teams distribute parallel for simd
8696 for (int i = 0; i < 10; ++i) {
8697 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8698 for (int i = 0; i < 10; ++i)
8699 ;
8700 }
8701 #pragma omp target teams distribute parallel for simd
8702 for (int i = 0; i < 10; ++i) {
8703 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8704 for (int i = 0; i < 10; ++i)
8705 ;
8706 }
8707 #pragma omp target teams distribute parallel for simd
8708 for (int i = 0; i < 10; ++i) {
8709 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8710 for (int i = 0; i < 10; ++i)
8711 ;
8712 }
8713 #pragma omp target teams distribute parallel for simd
8714 for (int i = 0; i < 10; ++i) {
8715 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8716 for (int i = 0; i < 10; ++i)
8717 ;
8718 }
8719
8720 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE
8721 #pragma omp target teams distribute simd // OK
8722 for (int i = 0; i < 10; ++i)
8723 ;
8724 #pragma omp target teams distribute simd
8725 for (int i = 0; i < 10; ++i) {
8726 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8727 for (int i = 0; i < 10; ++i)
8728 ;
8729 }
8730 #pragma omp target teams distribute simd
8731 for (int i = 0; i < 10; ++i) {
8732 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8733 for (int i = 0; i < 10; ++i)
8734 ;
8735 }
8736 #pragma omp target teams distribute simd
8737 for (int i = 0; i < 10; ++i) {
8738 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8739 for (int i = 0; i < 10; ++i)
8740 ;
8741 }
8742 #pragma omp target teams distribute simd
8743 for (int i = 0; i < 10; ++i) {
8744 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
8745 for (int i = 0; i < 10; ++i)
8746 ;
8747 }
8748 #pragma omp target teams distribute simd
8749 for (int i = 0; i < 10; ++i) {
8750 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8751 for (int i = 0; i < 10; ++i)
8752 ;
8753 }
8754 #pragma omp target teams distribute simd
8755 for (int i = 0; i < 10; ++i) {
8756 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8757 for (int i = 0; i < 10; ++i)
8758 ;
8759 }
8760 #pragma omp target teams distribute simd
8761 for (int i = 0; i < 10; ++i) {
8762 #pragma omp sections // 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 section // 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 single // 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 master // 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 critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8791 {
8792 bar();
8793 }
8794 }
8795 #pragma omp target teams distribute simd
8796 for (int i = 0; i < 10; ++i) {
8797 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8798 {
8799 #pragma omp single
8800 {
8801 bar();
8802 }
8803 }
8804 }
8805 #pragma omp target teams distribute simd
8806 for (int i = 0; i < 10; ++i) {
8807 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8808 for (int i = 0; i < 10; ++i)
8809 ;
8810 }
8811 #pragma omp target teams distribute simd
8812 for (int i = 0; i < 10; ++i) {
8813 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8814 for (int i = 0; i < 10; ++i)
8815 ;
8816 }
8817 #pragma omp target teams distribute simd
8818 for (int i = 0; i < 10; ++i) {
8819 #pragma omp parallel sections // 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8827 {
8828 bar();
8829 }
8830 }
8831 #pragma omp target teams distribute simd
8832 for (int i = 0; i < 10; ++i) {
8833 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8834 bar();
8835 }
8836 #pragma omp target teams distribute simd
8837 for (int i = 0; i < 10; ++i) {
8838 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8839 bar();
8840 }
8841 #pragma omp target teams distribute simd
8842 for (int i = 0; i < 10; ++i) {
8843 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8844 bar();
8845 }
8846 #pragma omp target teams distribute simd
8847 for (int i = 0; i < 10; ++i) {
8848 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8849 bar();
8850 }
8851 #pragma omp target teams distribute simd
8852 for (int i = 0; i < 10; ++i) {
8853 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8854 bar();
8855 }
8856 #pragma omp target teams distribute simd
8857 for (int i = 0; i < 10; ++i) {
8858 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
8859 ++a;
8860 }
8861 #pragma omp target teams distribute simd
8862 for (int i = 0; i < 10; ++i) {
8863 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8864 ++a;
8865 }
8866 #pragma omp target teams distribute simd
8867 for (int i = 0; i < 10; ++i) {
8868 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8869 ++a;
8870 }
8871 #pragma omp target teams distribute simd
8872 for (int i = 0; i < 10; ++i) {
8873 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8874 for (int i = 0; i < 10; ++i)
8875 ;
8876 }
8877 #pragma omp target teams distribute simd
8878 for (int i = 0; i < 10; ++i) {
8879 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8880 ++a;
8881 }
8882 #pragma omp target teams distribute simd
8883 for (int i = 0; i < 10; ++i) {
8884 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8885 ++a;
8886 }
8887 #pragma omp target teams distribute simd
8888 for (int i = 0; i < 10; ++i) {
8889 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8890 ++a;
8891 }
8892 #pragma omp target teams distribute simd
8893 for (int i = 0; i < 10; ++i) {
8894 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8895 ++a;
8896 }
8897 #pragma omp target teams distribute simd
8898 for (int i = 0; i < 10; ++i) {
8899 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8900 for (int i = 0; i < 10; ++i)
8901 ++a;
8902 }
8903 #pragma omp target teams distribute simd
8904 for (int i = 0; i < 10; ++i) {
8905 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8906 for (int i = 0; i < 10; ++i)
8907 ++a;
8908 }
8909 #pragma omp target teams distribute simd
8910 for (int i = 0; i < 10; ++i) {
8911 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8912 for (int i = 0; i < 10; ++i)
8913 ++a;
8914 }
8915 #pragma omp target teams distribute simd
8916 for (int i = 0; i < 10; ++i) {
8917 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8918 for (int i = 0; i < 10; ++i)
8919 ++a;
8920 }
8921 #pragma omp target teams distribute simd
8922 for (int i = 0; i < 10; ++i) {
8923 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8924 for (int i = 0; i < 10; ++i)
8925 ++a;
8926 }
8927 #pragma omp target teams distribute simd
8928 for (int i = 0; i < 10; ++i) {
8929 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8930 for (int i = 0; i < 10; ++i)
8931 ;
8932 }
8933 #pragma omp target teams distribute simd
8934 for (int i = 0; i < 10; ++i) {
8935 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8936 a++;
8937 }
8938 #pragma omp target teams distribute simd
8939 for (int i = 0; i < 10; ++i) {
8940 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8941 for (int i = 0; i < 10; ++i)
8942 ;
8943 }
8944 #pragma omp target teams distribute simd
8945 for (int i = 0; i < 10; ++i) {
8946 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8947 for (int i = 0; i < 10; ++i)
8948 ;
8949 }
8950 #pragma omp target teams distribute simd
8951 for (int i = 0; i < 10; ++i) {
8952 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8953 for (int i = 0; i < 10; ++i)
8954 ;
8955 }
8956 #pragma omp target teams distribute simd
8957 for (int i = 0; i < 10; ++i) {
8958 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
8959 for (int i = 0; i < 10; ++i)
8960 ;
8961 }
8962
8963 }
8964
foo()8965 void foo() {
8966 int a = 0;
8967 // PARALLEL DIRECTIVE
8968 #pragma omp parallel
8969 #pragma omp for
8970 for (int i = 0; i < 10; ++i)
8971 ;
8972 #pragma omp parallel
8973 #pragma omp simd
8974 for (int i = 0; i < 10; ++i)
8975 ;
8976 #pragma omp parallel
8977 #pragma omp for simd
8978 for (int i = 0; i < 10; ++i)
8979 ;
8980 #pragma omp parallel
8981 #pragma omp sections
8982 {
8983 bar();
8984 }
8985 #pragma omp parallel
8986 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}
8987 {
8988 bar();
8989 }
8990 #pragma omp parallel
8991 #pragma omp sections
8992 {
8993 bar();
8994 }
8995 #pragma omp parallel
8996 #pragma omp single
8997 bar();
8998 #pragma omp parallel
8999 #pragma omp master
9000 bar();
9001 #pragma omp parallel
9002 #pragma omp critical
9003 bar();
9004 #pragma omp parallel
9005 #pragma omp parallel for
9006 for (int i = 0; i < 10; ++i)
9007 ;
9008 #pragma omp parallel
9009 #pragma omp parallel for simd
9010 for (int i = 0; i < 10; ++i)
9011 ;
9012 #pragma omp parallel
9013 #pragma omp parallel sections
9014 {
9015 bar();
9016 }
9017 #pragma omp parallel
9018 #pragma omp task
9019 {
9020 bar();
9021 }
9022 #pragma omp parallel
9023 {
9024 #pragma omp taskyield
9025 bar();
9026 }
9027 #pragma omp parallel
9028 {
9029 #pragma omp barrier
9030 bar();
9031 }
9032 #pragma omp parallel
9033 {
9034 #pragma omp taskwait
9035 bar();
9036 }
9037 #pragma omp parallel
9038 {
9039 #pragma omp flush
9040 bar();
9041 }
9042 #pragma omp parallel
9043 {
9044 #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?}}
9045 bar();
9046 }
9047 #pragma omp parallel
9048 {
9049 #pragma omp atomic
9050 ++a;
9051 }
9052 #pragma omp parallel
9053 {
9054 #pragma omp target
9055 ++a;
9056 }
9057 #pragma omp parallel
9058 {
9059 #pragma omp target parallel
9060 ++a;
9061 }
9062 #pragma omp parallel
9063 #pragma omp target parallel for
9064 for (int i = 0; i < 10; ++i)
9065 ;
9066 #pragma omp parallel
9067 {
9068 #pragma omp target enter data map(to: a)
9069 ++a;
9070 }
9071 #pragma omp parallel
9072 {
9073 #pragma omp target exit data map(from: a)
9074 ++a;
9075 }
9076 #pragma omp parallel
9077 {
9078 #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?}}
9079 ++a;
9080 }
9081 #pragma omp parallel
9082 {
9083 #pragma omp taskloop
9084 for (int i = 0; i < 10; ++i)
9085 ++a;
9086 }
9087 #pragma omp parallel
9088 {
9089 #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?}}
9090 for (int i = 0; i < 10; ++i)
9091 ;
9092 }
9093 #pragma omp parallel
9094 {
9095 #pragma omp target update to(a)
9096 a++;
9097 }
9098 #pragma omp parallel
9099 {
9100 #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?}}
9101 for (int i = 0; i < 10; ++i)
9102 ;
9103 }
9104 #pragma omp parallel
9105 {
9106 #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?}}
9107 for (int i = 0; i < 10; ++i)
9108 ;
9109 }
9110 #pragma omp parallel
9111 {
9112 #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?}}
9113 for (int i = 0; i < 10; ++i)
9114 ;
9115 }
9116 #pragma omp parallel
9117 {
9118 #pragma omp target simd // OK
9119 for (int i = 0; i < 10; ++i)
9120 ;
9121 }
9122 #pragma omp parallel
9123 {
9124 #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?}}
9125 for (int i = 0; i < 10; ++i)
9126 ;
9127 }
9128 #pragma omp parallel
9129 {
9130 #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?}}
9131 for (int i = 0; i < 10; ++i)
9132 ;
9133 }
9134 #pragma omp parallel
9135 {
9136 #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?}}
9137 for (int i = 0; i < 10; ++i)
9138 ;
9139 }
9140 #pragma omp parallel
9141 {
9142 #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?}}
9143 for (int i = 0; i < 10; ++i)
9144 ;
9145 }
9146 #pragma omp parallel
9147 {
9148 #pragma omp target teams // OK
9149 a++;
9150 }
9151 #pragma omp parallel
9152 {
9153 #pragma omp target teams distribute // OK
9154 for (int i = 0; i < 10; ++i)
9155 ;
9156 }
9157 #pragma omp parallel
9158 {
9159 #pragma omp target teams distribute parallel for // OK
9160 for (int i = 0; i < 10; ++i)
9161 ;
9162 }
9163 #pragma omp parallel
9164 {
9165 #pragma omp target teams distribute parallel for simd // OK
9166 for (int i = 0; i < 10; ++i)
9167 ;
9168 }
9169 #pragma omp parallel
9170 {
9171 #pragma omp target teams distribute simd // OK
9172 for (int i = 0; i < 10; ++i)
9173 ;
9174 }
9175
9176 // SIMD DIRECTIVE
9177 #pragma omp simd
9178 for (int i = 0; i < 10; ++i) {
9179 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9180 for (int i = 0; i < 10; ++i)
9181 ;
9182 }
9183 #pragma omp simd
9184 for (int i = 0; i < 10; ++i) {
9185 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9186 for (int i = 0; i < 10; ++i)
9187 ;
9188 }
9189 #pragma omp simd
9190 for (int i = 0; i < 10; ++i) {
9191 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9192 for (int i = 0; i < 10; ++i)
9193 ;
9194 }
9195 #pragma omp simd
9196 for (int i = 0; i < 10; ++i) {
9197 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9198 for (int i = 0; i < 10; ++i)
9199 ;
9200 }
9201 #pragma omp simd
9202 for (int i = 0; i < 10; ++i) {
9203 #pragma omp sections // 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 section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9211 {
9212 bar();
9213 }
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 master // 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 single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9225 bar();
9226 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9227 bar();
9228 }
9229 #pragma omp simd
9230 for (int i = 0; i < 10; ++i) {
9231 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9232 for (int i = 0; i < 10; ++i)
9233 ;
9234 }
9235 #pragma omp simd
9236 for (int i = 0; i < 10; ++i) {
9237 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9238 for (int i = 0; i < 10; ++i)
9239 ;
9240 }
9241 #pragma omp simd
9242 for (int i = 0; i < 10; ++i) {
9243 #pragma omp parallel sections // 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9251 {
9252 bar();
9253 }
9254 }
9255 #pragma omp simd
9256 for (int i = 0; i < 10; ++i) {
9257 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9258 bar();
9259 }
9260 #pragma omp simd
9261 for (int i = 0; i < 10; ++i) {
9262 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9263 bar();
9264 }
9265 #pragma omp simd
9266 for (int i = 0; i < 10; ++i) {
9267 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9268 bar();
9269 }
9270 #pragma omp simd
9271 for (int i = 0; i < 10; ++i) {
9272 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9273 bar();
9274 }
9275 #pragma omp simd
9276 for (int i = 0; i < 10; ++i) {
9277 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9278 bar();
9279 }
9280 #pragma omp simd
9281 for (int i = 0; i < 10; ++i) {
9282 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9283 ++a;
9284 }
9285 #pragma omp simd
9286 for (int i = 0; i < 10; ++i) {
9287 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9288 ++a;
9289 }
9290 #pragma omp simd
9291 for (int i = 0; i < 10; ++i) {
9292 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9293 ++a;
9294 }
9295 #pragma omp simd
9296 for (int i = 0; i < 10; ++i) {
9297 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9298 for (int i = 0; i < 10; ++i)
9299 ;
9300 }
9301 #pragma omp simd
9302 for (int i = 0; i < 10; ++i) {
9303 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9304 ++a;
9305 }
9306 #pragma omp simd
9307 for (int i = 0; i < 10; ++i) {
9308 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9309 ++a;
9310 }
9311 #pragma omp simd
9312 for (int i = 0; i < 10; ++i) {
9313 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9314 ++a;
9315 }
9316 #pragma omp simd
9317 for (int i = 0; i < 10; ++i) {
9318 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9319 for (int i = 0; i < 10; ++i)
9320 ++a;
9321 }
9322 #pragma omp simd
9323 for (int i = 0; i < 10; ++i) {
9324 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9325 for (int j = 0; j < 10; ++j)
9326 ;
9327 }
9328 #pragma omp simd
9329 for (int i = 0; i < 10; ++i) {
9330 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9331 a++;
9332 }
9333 #pragma omp simd
9334 for (int i = 0; i < 10; ++i) {
9335 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9336 for (int j = 0; j < 10; ++j)
9337 ;
9338 }
9339 #pragma omp simd
9340 for (int i = 0; i < 10; ++i) {
9341 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9342 for (int j = 0; j < 10; ++j)
9343 ;
9344 }
9345 #pragma omp simd
9346 for (int i = 0; i < 10; ++i) {
9347 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9348 for (int j = 0; j < 10; ++j)
9349 ;
9350 }
9351 #pragma omp simd
9352 for (int i = 0; i < 10; ++i) {
9353 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9354 for (int j = 0; j < 10; ++j)
9355 ;
9356 }
9357 #pragma omp simd
9358 for (int i = 0; i < 10; ++i) {
9359 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9360 for (int j = 0; j < 10; ++j)
9361 ;
9362 }
9363 #pragma omp simd
9364 for (int i = 0; i < 10; ++i) {
9365 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9366 for (int j = 0; j < 10; ++j)
9367 ;
9368 }
9369 #pragma omp simd
9370 for (int i = 0; i < 10; ++i) {
9371 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9372 for (int j = 0; j < 10; ++j)
9373 ;
9374 }
9375 #pragma omp simd
9376 for (int i = 0; i < 10; ++i) {
9377 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9378 for (int j = 0; j < 10; ++j)
9379 ;
9380 }
9381 #pragma omp simd
9382 for (int i = 0; i < 10; ++i) {
9383 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9384 a++;
9385 }
9386 #pragma omp simd
9387 for (int i = 0; i < 10; ++i) {
9388 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9389 for (int j = 0; j < 10; ++j)
9390 ;
9391 }
9392 #pragma omp simd
9393 for (int i = 0; i < 10; ++i) {
9394 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9395 for (int j = 0; j < 10; ++j)
9396 ;
9397 }
9398 #pragma omp simd
9399 for (int i = 0; i < 10; ++i) {
9400 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9401 for (int j = 0; j < 10; ++j)
9402 ;
9403 }
9404 #pragma omp simd
9405 for (int i = 0; i < 10; ++i) {
9406 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9407 for (int j = 0; j < 10; ++j)
9408 ;
9409 }
9410
9411 // FOR DIRECTIVE
9412 #pragma omp for
9413 for (int i = 0; i < 10; ++i) {
9414 #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?}}
9415 for (int i = 0; i < 10; ++i)
9416 ;
9417 }
9418 #pragma omp for
9419 for (int i = 0; i < 10; ++i) {
9420 #pragma omp simd
9421 for (int i = 0; i < 10; ++i)
9422 ;
9423 }
9424 #pragma omp for
9425 for (int i = 0; i < 10; ++i) {
9426 #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?}}
9427 for (int i = 0; i < 10; ++i)
9428 ;
9429 }
9430 #pragma omp for
9431 for (int i = 0; i < 10; ++i) {
9432 #pragma omp parallel
9433 for (int i = 0; i < 10; ++i)
9434 ;
9435 }
9436 #pragma omp for
9437 for (int i = 0; i < 10; ++i) {
9438 #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?}}
9439 {
9440 bar();
9441 }
9442 }
9443 #pragma omp for
9444 for (int i = 0; i < 10; ++i) {
9445 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}
9446 {
9447 bar();
9448 }
9449 }
9450 #pragma omp for
9451 for (int i = 0; i < 10; ++i) {
9452 #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?}}
9453 bar();
9454 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
9455 bar();
9456 #pragma omp critical
9457 bar();
9458 }
9459 #pragma omp for
9460 for (int i = 0; i < 10; ++i) {
9461 #pragma omp parallel
9462 {
9463 #pragma omp single // OK
9464 {
9465 bar();
9466 }
9467 #pragma omp for // OK
9468 for (int i = 0; i < 10; ++i)
9469 ;
9470 #pragma omp for simd // OK
9471 for (int i = 0; i < 10; ++i)
9472 ;
9473 #pragma omp sections // OK
9474 {
9475 bar();
9476 }
9477 }
9478 }
9479 #pragma omp for
9480 for (int i = 0; i < 10; ++i) {
9481 #pragma omp parallel for
9482 for (int i = 0; i < 10; ++i)
9483 ;
9484 }
9485 #pragma omp for
9486 for (int i = 0; i < 10; ++i) {
9487 #pragma omp parallel for simd
9488 for (int i = 0; i < 10; ++i)
9489 ;
9490 }
9491 #pragma omp for
9492 for (int i = 0; i < 10; ++i) {
9493 #pragma omp parallel sections
9494 {
9495 bar();
9496 }
9497 }
9498 #pragma omp for
9499 for (int i = 0; i < 10; ++i) {
9500 #pragma omp task
9501 {
9502 bar();
9503 }
9504 }
9505 #pragma omp for
9506 for (int i = 0; i < 10; ++i) {
9507 #pragma omp taskyield
9508 bar();
9509 }
9510 #pragma omp for
9511 for (int i = 0; i < 10; ++i) {
9512 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}
9513 bar();
9514 }
9515 #pragma omp for
9516 for (int i = 0; i < 10; ++i) {
9517 #pragma omp taskwait
9518 bar();
9519 }
9520 #pragma omp for
9521 for (int i = 0; i < 10; ++i) {
9522 #pragma omp flush
9523 bar();
9524 }
9525 #pragma omp for
9526 for (int i = 0; i < 10; ++i) {
9527 #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?}}
9528 bar();
9529 }
9530 #pragma omp for ordered
9531 for (int i = 0; i < 10; ++i) {
9532 #pragma omp ordered // OK
9533 bar();
9534 }
9535 #pragma omp for
9536 for (int i = 0; i < 10; ++i) {
9537 #pragma omp atomic
9538 ++a;
9539 }
9540 #pragma omp for
9541 for (int i = 0; i < 10; ++i) {
9542 #pragma omp target
9543 ++a;
9544 }
9545 #pragma omp for
9546 for (int i = 0; i < 10; ++i) {
9547 #pragma omp target parallel
9548 ++a;
9549 }
9550 #pragma omp for
9551 for (int i = 0; i < 10; ++i) {
9552 #pragma omp target parallel for
9553 for (int i = 0; i < 10; ++i)
9554 ;
9555 }
9556 #pragma omp for
9557 for (int i = 0; i < 10; ++i) {
9558 #pragma omp target enter data map(to: a)
9559 ++a;
9560 }
9561 #pragma omp for
9562 for (int i = 0; i < 10; ++i) {
9563 #pragma omp target exit data map(from: a)
9564 ++a;
9565 }
9566 #pragma omp for
9567 for (int i = 0; i < 10; ++i) {
9568 #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?}}
9569 ++a;
9570 }
9571 #pragma omp for
9572 for (int i = 0; i < 10; ++i) {
9573 #pragma omp taskloop
9574 for (int i = 0; i < 10; ++i)
9575 ++a;
9576 }
9577 #pragma omp for
9578 for (int i = 0; i < 10; ++i) {
9579 #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?}}
9580 for (int j = 0; j < 10; ++j)
9581 ;
9582 }
9583 #pragma omp for
9584 for (int i = 0; i < 10; ++i) {
9585 #pragma omp target update to(a)
9586 ++a;
9587 }
9588 #pragma omp for
9589 for (int i = 0; i < 10; ++i) {
9590 #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?}}
9591 for (int j = 0; j < 10; ++j)
9592 ;
9593 }
9594 #pragma omp for
9595 for (int i = 0; i < 10; ++i) {
9596 #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?}}
9597 for (int j = 0; j < 10; ++j)
9598 ;
9599 }
9600 #pragma omp for
9601 for (int i = 0; i < 10; ++i) {
9602 #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?}}
9603 for (int j = 0; j < 10; ++j)
9604 ;
9605 }
9606 #pragma omp for
9607 for (int i = 0; i < 10; ++i) {
9608 #pragma omp target simd // OK
9609 for (int j = 0; j < 10; ++j)
9610 ;
9611 }
9612 #pragma omp for
9613 for (int i = 0; i < 10; ++i) {
9614 #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?}}
9615 for (int j = 0; j < 10; ++j)
9616 ;
9617 }
9618 #pragma omp for
9619 for (int i = 0; i < 10; ++i) {
9620 #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?}}
9621 for (int j = 0; j < 10; ++j)
9622 ;
9623 }
9624 #pragma omp for
9625 for (int i = 0; i < 10; ++i) {
9626 #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?}}
9627 for (int j = 0; j < 10; ++j)
9628 ;
9629 }
9630 #pragma omp for
9631 for (int i = 0; i < 10; ++i) {
9632 #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?}}
9633 for (int j = 0; j < 10; ++j)
9634 ;
9635 }
9636 #pragma omp for
9637 for (int i = 0; i < 10; ++i) {
9638 #pragma omp target teams // OK
9639 a++;
9640 }
9641 #pragma omp for
9642 for (int i = 0; i < 10; ++i) {
9643 #pragma omp target teams distribute // OK
9644 for (int j = 0; j < 10; ++j)
9645 ;
9646 }
9647 #pragma omp for
9648 for (int i = 0; i < 10; ++i) {
9649 #pragma omp target teams distribute parallel for // OK
9650 for (int j = 0; j < 10; ++j)
9651 ;
9652 }
9653 #pragma omp for
9654 for (int i = 0; i < 10; ++i) {
9655 #pragma omp target teams distribute parallel for simd // OK
9656 for (int j = 0; j < 10; ++j)
9657 ;
9658 }
9659 #pragma omp for
9660 for (int i = 0; i < 10; ++i) {
9661 #pragma omp target teams distribute simd // OK
9662 for (int j = 0; j < 10; ++j)
9663 ;
9664 }
9665
9666 // FOR SIMD DIRECTIVE
9667 #pragma omp for simd
9668 for (int i = 0; i < 10; ++i) {
9669 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9670 for (int i = 0; i < 10; ++i)
9671 ;
9672 }
9673 #pragma omp for simd
9674 for (int i = 0; i < 10; ++i) {
9675 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
9676 for (int i = 0; i < 10; ++i)
9677 ;
9678 }
9679 #pragma omp for simd
9680 for (int i = 0; i < 10; ++i) {
9681 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9682 for (int i = 0; i < 10; ++i)
9683 ;
9684 }
9685 #pragma omp for simd
9686 for (int i = 0; i < 10; ++i) {
9687 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9688 for (int i = 0; i < 10; ++i)
9689 ;
9690 }
9691 #pragma omp for simd
9692 for (int i = 0; i < 10; ++i) {
9693 #pragma omp sections // 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 section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9701 {
9702 bar();
9703 }
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 master // 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 single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9715 bar();
9716 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9717 bar();
9718 }
9719 #pragma omp for simd
9720 for (int i = 0; i < 10; ++i) {
9721 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9722 for (int i = 0; i < 10; ++i)
9723 ;
9724 }
9725 #pragma omp for simd
9726 for (int i = 0; i < 10; ++i) {
9727 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9728 for (int i = 0; i < 10; ++i)
9729 ;
9730 }
9731 #pragma omp for simd
9732 for (int i = 0; i < 10; ++i) {
9733 #pragma omp parallel sections // 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9741 {
9742 bar();
9743 }
9744 }
9745 #pragma omp for simd
9746 for (int i = 0; i < 10; ++i) {
9747 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9748 bar();
9749 }
9750 #pragma omp for simd
9751 for (int i = 0; i < 10; ++i) {
9752 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9753 bar();
9754 }
9755 #pragma omp for simd
9756 for (int i = 0; i < 10; ++i) {
9757 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9758 bar();
9759 }
9760 #pragma omp for simd
9761 for (int i = 0; i < 10; ++i) {
9762 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9763 bar();
9764 }
9765 #pragma omp for simd
9766 for (int i = 0; i < 10; ++i) {
9767 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9768 bar();
9769 }
9770 #pragma omp for simd
9771 for (int i = 0; i < 10; ++i) {
9772 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9773 ++a;
9774 }
9775 #pragma omp for simd
9776 for (int i = 0; i < 10; ++i) {
9777 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9778 ++a;
9779 }
9780 #pragma omp for simd
9781 for (int i = 0; i < 10; ++i) {
9782 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9783 ++a;
9784 }
9785 #pragma omp for simd
9786 for (int i = 0; i < 10; ++i) {
9787 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9788 for (int i = 0; i < 10; ++i)
9789 ;
9790 }
9791 #pragma omp for simd
9792 for (int i = 0; i < 10; ++i) {
9793 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9794 ++a;
9795 }
9796 #pragma omp for simd
9797 for (int i = 0; i < 10; ++i) {
9798 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9799 ++a;
9800 }
9801 #pragma omp for simd
9802 for (int i = 0; i < 10; ++i) {
9803 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9804 ++a;
9805 }
9806 #pragma omp for simd
9807 for (int i = 0; i < 10; ++i) {
9808 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9809 for (int i = 0; i < 10; ++i)
9810 ++a;
9811 }
9812 #pragma omp for simd
9813 for (int i = 0; i < 10; ++i) {
9814 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9815 for (int j = 0; j < 10; ++j)
9816 ;
9817 }
9818 #pragma omp for simd
9819 for (int i = 0; i < 10; ++i) {
9820 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9821 ++a;
9822 }
9823 #pragma omp for simd
9824 for (int i = 0; i < 10; ++i) {
9825 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9826 for (int j = 0; j < 10; ++j)
9827 ;
9828 }
9829 #pragma omp for simd
9830 for (int i = 0; i < 10; ++i) {
9831 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9832 for (int j = 0; j < 10; ++j)
9833 ;
9834 }
9835 #pragma omp for simd
9836 for (int i = 0; i < 10; ++i) {
9837 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9838 for (int j = 0; j < 10; ++j)
9839 ;
9840 }
9841 #pragma omp for simd
9842 for (int i = 0; i < 10; ++i) {
9843 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9844 for (int j = 0; j < 10; ++j)
9845 ;
9846 }
9847 #pragma omp for simd
9848 for (int i = 0; i < 10; ++i) {
9849 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9850 for (int j = 0; j < 10; ++j)
9851 ;
9852 }
9853 #pragma omp for simd
9854 for (int i = 0; i < 10; ++i) {
9855 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9856 for (int j = 0; j < 10; ++j)
9857 ;
9858 }
9859 #pragma omp for simd
9860 for (int i = 0; i < 10; ++i) {
9861 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9862 for (int j = 0; j < 10; ++j)
9863 ;
9864 }
9865 #pragma omp for simd
9866 for (int i = 0; i < 10; ++i) {
9867 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9868 for (int j = 0; j < 10; ++j)
9869 ;
9870 }
9871 #pragma omp for simd
9872 for (int i = 0; i < 10; ++i) {
9873 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9874 a++;
9875 }
9876 #pragma omp for simd
9877 for (int i = 0; i < 10; ++i) {
9878 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9879 for (int j = 0; j < 10; ++j)
9880 ;
9881 }
9882 #pragma omp for simd
9883 for (int i = 0; i < 10; ++i) {
9884 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9885 for (int j = 0; j < 10; ++j)
9886 ;
9887 }
9888 #pragma omp for simd
9889 for (int i = 0; i < 10; ++i) {
9890 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9891 for (int j = 0; j < 10; ++j)
9892 ;
9893 }
9894 #pragma omp for simd
9895 for (int i = 0; i < 10; ++i) {
9896 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
9897 for (int j = 0; j < 10; ++j)
9898 ;
9899 }
9900
9901 // SECTIONS DIRECTIVE
9902 #pragma omp sections
9903 {
9904 #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?}}
9905 for (int i = 0; i < 10; ++i)
9906 ;
9907 }
9908 #pragma omp sections
9909 {
9910 #pragma omp simd
9911 for (int i = 0; i < 10; ++i)
9912 ;
9913 }
9914 #pragma omp sections
9915 {
9916 #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?}}
9917 for (int i = 0; i < 10; ++i)
9918 ;
9919 }
9920 #pragma omp sections
9921 {
9922 #pragma omp parallel
9923 for (int i = 0; i < 10; ++i)
9924 ;
9925 }
9926 #pragma omp sections
9927 {
9928 #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?}}
9929 {
9930 bar();
9931 }
9932 }
9933 #pragma omp sections
9934 {
9935 #pragma omp section
9936 {
9937 bar();
9938 }
9939 }
9940 #pragma omp sections
9941 {
9942 #pragma omp critical
9943 bar();
9944 #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?}}
9945 bar();
9946 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}
9947 bar();
9948 }
9949 #pragma omp sections
9950 {
9951 #pragma omp parallel
9952 {
9953 #pragma omp single // OK
9954 {
9955 bar();
9956 }
9957 #pragma omp for // OK
9958 for (int i = 0; i < 10; ++i)
9959 ;
9960 #pragma omp for simd // OK
9961 for (int i = 0; i < 10; ++i)
9962 ;
9963 #pragma omp sections // OK
9964 {
9965 bar();
9966 }
9967 }
9968 }
9969 #pragma omp sections
9970 {
9971 #pragma omp parallel for
9972 for (int i = 0; i < 10; ++i)
9973 ;
9974 }
9975 #pragma omp sections
9976 {
9977 #pragma omp parallel for simd
9978 for (int i = 0; i < 10; ++i)
9979 ;
9980 }
9981 #pragma omp sections
9982 {
9983 #pragma omp parallel sections
9984 {
9985 bar();
9986 }
9987 }
9988 #pragma omp sections
9989 {
9990 #pragma omp task
9991 {
9992 bar();
9993 }
9994 }
9995 #pragma omp sections
9996 {
9997 #pragma omp taskyield
9998 }
9999 #pragma omp sections
10000 {
10001 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}
10002 bar();
10003 }
10004 #pragma omp sections
10005 {
10006 #pragma omp taskwait
10007 }
10008 #pragma omp sections
10009 {
10010 #pragma omp flush
10011 }
10012 #pragma omp sections
10013 {
10014 #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?}}
10015 bar();
10016 }
10017 #pragma omp sections
10018 {
10019 #pragma omp atomic
10020 ++a;
10021 }
10022 #pragma omp sections
10023 {
10024 #pragma omp target
10025 ++a;
10026 }
10027 #pragma omp sections
10028 {
10029 #pragma omp target parallel
10030 ++a;
10031 }
10032 #pragma omp sections
10033 {
10034 #pragma omp target parallel for
10035 for (int i = 0; i < 10; ++i)
10036 ;
10037 }
10038 #pragma omp sections
10039 {
10040 #pragma omp target enter data map(to: a)
10041 }
10042 #pragma omp sections
10043 {
10044 #pragma omp target exit data map(from: a)
10045 }
10046 #pragma omp sections
10047 {
10048 #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?}}
10049 ++a;
10050 }
10051 #pragma omp sections
10052 {
10053 #pragma omp taskloop
10054 for (int i = 0; i < 10; ++i)
10055 ++a;
10056 }
10057 #pragma omp sections
10058 {
10059 #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?}}
10060 for (int i = 0; i < 10; ++i)
10061 ;
10062 }
10063 #pragma omp sections
10064 {
10065 #pragma omp target update to(a)
10066 }
10067 #pragma omp sections
10068 {
10069 #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?}}
10070 for (int i = 0; i < 10; ++i)
10071 ;
10072 }
10073 #pragma omp sections
10074 {
10075 #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?}}
10076 for (int i = 0; i < 10; ++i)
10077 ;
10078 }
10079 #pragma omp sections
10080 {
10081 #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?}}
10082 for (int i = 0; i < 10; ++i)
10083 ;
10084 }
10085 #pragma omp sections
10086 {
10087 #pragma omp target simd // OK
10088 for (int i = 0; i < 10; ++i)
10089 ;
10090 }
10091 #pragma omp sections
10092 {
10093 #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?}}
10094 for (int i = 0; i < 10; ++i)
10095 ;
10096 }
10097 #pragma omp sections
10098 {
10099 #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?}}
10100 for (int i = 0; i < 10; ++i)
10101 ;
10102 }
10103 #pragma omp sections
10104 {
10105 #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?}}
10106 for (int i = 0; i < 10; ++i)
10107 ;
10108 }
10109 #pragma omp sections
10110 {
10111 #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?}}
10112 for (int i = 0; i < 10; ++i)
10113 ;
10114 }
10115 #pragma omp sections
10116 {
10117 #pragma omp target teams // OK
10118 a++;
10119 }
10120 #pragma omp sections
10121 {
10122 #pragma omp target teams distribute // OK
10123 for (int i = 0; i < 10; ++i)
10124 ;
10125 }
10126 #pragma omp sections
10127 {
10128 #pragma omp target teams distribute parallel for // OK
10129 for (int i = 0; i < 10; ++i)
10130 ;
10131 }
10132 #pragma omp sections
10133 {
10134 #pragma omp target teams distribute parallel for simd // OK
10135 for (int i = 0; i < 10; ++i)
10136 ;
10137 }
10138 #pragma omp sections
10139 {
10140 #pragma omp target teams distribute simd // OK
10141 for (int i = 0; i < 10; ++i)
10142 ;
10143 }
10144
10145 // SECTION DIRECTIVE
10146 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}
10147 {
10148 bar();
10149 }
10150 #pragma omp sections
10151 {
10152 #pragma omp section
10153 {
10154 #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?}}
10155 for (int i = 0; i < 10; ++i)
10156 ;
10157 }
10158 }
10159 #pragma omp sections
10160 {
10161 #pragma omp section
10162 {
10163 #pragma omp simd
10164 for (int i = 0; i < 10; ++i)
10165 ;
10166 }
10167 }
10168 #pragma omp sections
10169 {
10170 #pragma omp section
10171 {
10172 #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?}}
10173 for (int i = 0; i < 10; ++i)
10174 ;
10175 }
10176 }
10177 #pragma omp sections
10178 {
10179 #pragma omp section
10180 {
10181 #pragma omp parallel
10182 for (int i = 0; i < 10; ++i)
10183 ;
10184 }
10185 }
10186 #pragma omp sections
10187 {
10188 #pragma omp section
10189 {
10190 #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?}}
10191 {
10192 bar();
10193 }
10194 }
10195 }
10196 #pragma omp sections
10197 {
10198 #pragma omp section
10199 {
10200 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}
10201 {
10202 bar();
10203 }
10204 }
10205 }
10206 #pragma omp sections
10207 {
10208 #pragma omp section
10209 {
10210 #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?}}
10211 bar();
10212 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
10213 bar();
10214 #pragma omp critical
10215 bar();
10216 }
10217 }
10218 #pragma omp sections
10219 {
10220 #pragma omp section
10221 {
10222 #pragma omp parallel
10223 {
10224 #pragma omp single // OK
10225 {
10226 bar();
10227 }
10228 #pragma omp for // OK
10229 for (int i = 0; i < 10; ++i)
10230 ;
10231 #pragma omp for simd // OK
10232 for (int i = 0; i < 10; ++i)
10233 ;
10234 #pragma omp sections // OK
10235 {
10236 bar();
10237 }
10238 }
10239 }
10240 }
10241 #pragma omp sections
10242 {
10243 #pragma omp section
10244 {
10245 #pragma omp parallel for
10246 for (int i = 0; i < 10; ++i)
10247 ;
10248 }
10249 }
10250 #pragma omp sections
10251 {
10252 #pragma omp section
10253 {
10254 #pragma omp parallel for simd
10255 for (int i = 0; i < 10; ++i)
10256 ;
10257 }
10258 }
10259 #pragma omp sections
10260 {
10261 #pragma omp section
10262 {
10263 #pragma omp parallel sections
10264 {
10265 bar();
10266 }
10267 }
10268 }
10269 #pragma omp sections
10270 {
10271 #pragma omp section
10272 {
10273 #pragma omp task
10274 {
10275 bar();
10276 }
10277 }
10278 }
10279 #pragma omp sections
10280 {
10281 #pragma omp section
10282 {
10283 #pragma omp taskyield
10284 bar();
10285 }
10286 }
10287 #pragma omp sections
10288 {
10289 #pragma omp section
10290 {
10291 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}
10292 bar();
10293 }
10294 }
10295 #pragma omp sections
10296 {
10297 #pragma omp section
10298 {
10299 #pragma omp taskwait
10300 bar();
10301 }
10302 }
10303 #pragma omp sections
10304 {
10305 #pragma omp section
10306 {
10307 #pragma omp flush
10308 bar();
10309 }
10310 }
10311 #pragma omp sections
10312 {
10313 #pragma omp section
10314 {
10315 #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?}}
10316 bar();
10317 }
10318 }
10319 #pragma omp sections
10320 {
10321 #pragma omp section
10322 {
10323 #pragma omp atomic
10324 ++a;
10325 }
10326 }
10327 #pragma omp sections
10328 {
10329 #pragma omp section
10330 {
10331 #pragma omp target
10332 ++a;
10333 }
10334 }
10335 #pragma omp sections
10336 {
10337 #pragma omp section
10338 {
10339 #pragma omp target parallel
10340 ++a;
10341 }
10342 }
10343 #pragma omp sections
10344 {
10345 #pragma omp section
10346 {
10347 #pragma omp target parallel for
10348 for (int i = 0; i < 10; ++i)
10349 ;
10350 }
10351 }
10352 #pragma omp sections
10353 {
10354 #pragma omp section
10355 {
10356 #pragma omp target enter data map(to: a)
10357 ++a;
10358 }
10359 }
10360 #pragma omp sections
10361 {
10362 #pragma omp section
10363 {
10364 #pragma omp target exit data map(from: a)
10365 ++a;
10366 }
10367 }
10368 #pragma omp sections
10369 {
10370 #pragma omp section
10371 {
10372 #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?}}
10373 ++a;
10374 }
10375 }
10376 #pragma omp sections
10377 {
10378 #pragma omp section
10379 {
10380 #pragma omp taskloop
10381 for (int i = 0; i < 10; ++i)
10382 ++a;
10383 }
10384 }
10385 #pragma omp sections
10386 {
10387 #pragma omp section
10388 #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?}}
10389 for (int i = 0; i < 10; ++i)
10390 ;
10391 }
10392 #pragma omp sections
10393 {
10394 #pragma omp section
10395 {
10396 #pragma omp target update to(a)
10397 a++;
10398 }
10399 }
10400 #pragma omp sections
10401 {
10402 #pragma omp section
10403 #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?}}
10404 for (int i = 0; i < 10; ++i)
10405 ;
10406 }
10407 #pragma omp sections
10408 {
10409 #pragma omp section
10410 #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?}}
10411 for (int i = 0; i < 10; ++i)
10412 ;
10413 }
10414 #pragma omp sections
10415 {
10416 #pragma omp section
10417 #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?}}
10418 for (int i = 0; i < 10; ++i)
10419 ;
10420 }
10421 #pragma omp sections
10422 {
10423 #pragma omp section
10424 #pragma omp target simd // OK
10425 for (int i = 0; i < 10; ++i)
10426 ;
10427 }
10428 #pragma omp sections
10429 {
10430 #pragma omp section
10431 #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?}}
10432 for (int i = 0; i < 10; ++i)
10433 ;
10434 }
10435 #pragma omp sections
10436 {
10437 #pragma omp section
10438 #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?}}
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 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?}}
10446 for (int i = 0; i < 10; ++i)
10447 ;
10448 }
10449 #pragma omp sections
10450 {
10451 #pragma omp section
10452 #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?}}
10453 for (int i = 0; i < 10; ++i)
10454 ;
10455 }
10456 #pragma omp sections
10457 {
10458 #pragma omp section
10459 #pragma omp target teams // OK
10460 a++;
10461 }
10462 #pragma omp sections
10463 {
10464 #pragma omp section
10465 #pragma omp target teams distribute // 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 // 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 parallel for simd // OK
10480 for (int i = 0; i < 10; ++i)
10481 ;
10482 }
10483 #pragma omp sections
10484 {
10485 #pragma omp section
10486 #pragma omp target teams distribute simd // OK
10487 for (int i = 0; i < 10; ++i)
10488 ;
10489 }
10490
10491 // SINGLE DIRECTIVE
10492 #pragma omp single
10493 {
10494 #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?}}
10495 for (int i = 0; i < 10; ++i)
10496 ;
10497 }
10498 #pragma omp single
10499 {
10500 #pragma omp simd
10501 for (int i = 0; i < 10; ++i)
10502 ;
10503 }
10504 #pragma omp single
10505 {
10506 #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?}}
10507 for (int i = 0; i < 10; ++i)
10508 ;
10509 }
10510 #pragma omp single
10511 {
10512 #pragma omp parallel
10513 for (int i = 0; i < 10; ++i)
10514 ;
10515 }
10516 #pragma omp single
10517 {
10518 #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?}}
10519 {
10520 bar();
10521 }
10522 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}
10523 bar();
10524 #pragma omp critical
10525 bar();
10526 }
10527 #pragma omp single
10528 {
10529 #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?}}
10530 {
10531 bar();
10532 }
10533 }
10534 #pragma omp single
10535 {
10536 #pragma omp parallel
10537 {
10538 #pragma omp single // OK
10539 {
10540 bar();
10541 }
10542 #pragma omp for // OK
10543 for (int i = 0; i < 10; ++i)
10544 ;
10545 #pragma omp for simd // OK
10546 for (int i = 0; i < 10; ++i)
10547 ;
10548 #pragma omp sections // OK
10549 {
10550 bar();
10551 }
10552 }
10553 }
10554 #pragma omp single
10555 {
10556 #pragma omp parallel for
10557 for (int i = 0; i < 10; ++i)
10558 ;
10559 }
10560 #pragma omp single
10561 {
10562 #pragma omp parallel for simd
10563 for (int i = 0; i < 10; ++i)
10564 ;
10565 }
10566 #pragma omp single
10567 {
10568 #pragma omp parallel sections
10569 {
10570 bar();
10571 }
10572 }
10573 #pragma omp single
10574 {
10575 #pragma omp task
10576 {
10577 bar();
10578 }
10579 }
10580 #pragma omp single
10581 {
10582 #pragma omp taskyield
10583 bar();
10584 }
10585 #pragma omp single
10586 {
10587 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}
10588 bar();
10589 }
10590 #pragma omp single
10591 {
10592 #pragma omp taskwait
10593 bar();
10594 }
10595 #pragma omp single
10596 {
10597 #pragma omp flush
10598 bar();
10599 }
10600 #pragma omp single
10601 {
10602 #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?}}
10603 bar();
10604 }
10605 #pragma omp single
10606 {
10607 #pragma omp atomic
10608 ++a;
10609 }
10610 #pragma omp single
10611 {
10612 #pragma omp target
10613 ++a;
10614 }
10615 #pragma omp single
10616 {
10617 #pragma omp target parallel
10618 ++a;
10619 }
10620 #pragma omp single
10621 {
10622 #pragma omp target parallel for
10623 for (int i = 0; i < 10; ++i)
10624 ;
10625 }
10626 #pragma omp single
10627 {
10628 #pragma omp target enter data map(to: a)
10629 ++a;
10630 }
10631 #pragma omp single
10632 {
10633 #pragma omp target exit data map(from: a)
10634 ++a;
10635 }
10636 #pragma omp single
10637 {
10638 #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?}}
10639 ++a;
10640 }
10641 #pragma omp single
10642 {
10643 #pragma omp taskloop
10644 for (int i = 0; i < 10; ++i)
10645 ++a;
10646 }
10647 #pragma omp single
10648 {
10649 #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?}}
10650 for (int i = 0; i < 10; ++i)
10651 ;
10652 }
10653 #pragma omp single
10654 {
10655 #pragma omp target update to(a)
10656 a++;
10657 }
10658 #pragma omp single
10659 {
10660 #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?}}
10661 for (int i = 0; i < 10; ++i)
10662 ;
10663 }
10664 #pragma omp single
10665 {
10666 #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?}}
10667 for (int i = 0; i < 10; ++i)
10668 ;
10669 }
10670 #pragma omp single
10671 {
10672 #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?}}
10673 for (int i = 0; i < 10; ++i)
10674 ;
10675 }
10676 #pragma omp single
10677 {
10678 #pragma omp target simd // OK
10679 for (int i = 0; i < 10; ++i)
10680 ;
10681 }
10682 #pragma omp single
10683 {
10684 #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?}}
10685 for (int i = 0; i < 10; ++i)
10686 ;
10687 }
10688 #pragma omp single
10689 {
10690 #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?}}
10691 for (int i = 0; i < 10; ++i)
10692 ;
10693 }
10694 #pragma omp single
10695 {
10696 #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?}}
10697 for (int i = 0; i < 10; ++i)
10698 ;
10699 }
10700 #pragma omp single
10701 {
10702 #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?}}
10703 for (int i = 0; i < 10; ++i)
10704 ;
10705 }
10706 #pragma omp single
10707 {
10708 #pragma omp target teams // oK
10709 a++;
10710 }
10711 #pragma omp single
10712 {
10713 #pragma omp target teams distribute // OK
10714 for (int i = 0; i < 10; ++i)
10715 ;
10716 }
10717 #pragma omp single
10718 {
10719 #pragma omp target teams distribute parallel for // OK
10720 for (int i = 0; i < 10; ++i)
10721 ;
10722 }
10723 #pragma omp single
10724 {
10725 #pragma omp target teams distribute parallel for simd // OK
10726 for (int i = 0; i < 10; ++i)
10727 ;
10728 }
10729 #pragma omp single
10730 {
10731 #pragma omp target teams distribute simd // OK
10732 for (int i = 0; i < 10; ++i)
10733 ;
10734 }
10735
10736 // MASTER DIRECTIVE
10737 #pragma omp master
10738 {
10739 #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?}}
10740 for (int i = 0; i < 10; ++i)
10741 ;
10742 }
10743 #pragma omp master
10744 {
10745 #pragma omp simd
10746 for (int i = 0; i < 10; ++i)
10747 ;
10748 }
10749 #pragma omp master
10750 {
10751 #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?}}
10752 for (int i = 0; i < 10; ++i)
10753 ;
10754 }
10755 #pragma omp master
10756 {
10757 #pragma omp parallel
10758 for (int i = 0; i < 10; ++i)
10759 ;
10760 }
10761 #pragma omp master
10762 {
10763 #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?}}
10764 {
10765 bar();
10766 }
10767 }
10768 #pragma omp master
10769 {
10770 #pragma omp master // OK, though second 'master' is redundant
10771 {
10772 bar();
10773 }
10774 }
10775 #pragma omp master
10776 {
10777 #pragma omp critical
10778 {
10779 bar();
10780 }
10781 }
10782 #pragma omp master
10783 {
10784 #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?}}
10785 {
10786 bar();
10787 }
10788 }
10789 #pragma omp master
10790 {
10791 #pragma omp parallel
10792 {
10793 #pragma omp master // OK
10794 {
10795 bar();
10796 }
10797 #pragma omp for // OK
10798 for (int i = 0; i < 10; ++i)
10799 ;
10800 #pragma omp for simd // OK
10801 for (int i = 0; i < 10; ++i)
10802 ;
10803 #pragma omp sections // OK
10804 {
10805 bar();
10806 }
10807 }
10808 }
10809 #pragma omp master
10810 {
10811 #pragma omp parallel for
10812 for (int i = 0; i < 10; ++i)
10813 ;
10814 }
10815 #pragma omp master
10816 {
10817 #pragma omp parallel for simd
10818 for (int i = 0; i < 10; ++i)
10819 ;
10820 }
10821 #pragma omp master
10822 {
10823 #pragma omp parallel sections
10824 {
10825 bar();
10826 }
10827 }
10828 #pragma omp master
10829 {
10830 #pragma omp task
10831 {
10832 bar();
10833 }
10834 }
10835 #pragma omp master
10836 {
10837 #pragma omp taskyield
10838 bar();
10839 }
10840 #pragma omp master
10841 {
10842 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}
10843 bar();
10844 }
10845 #pragma omp master
10846 {
10847 #pragma omp taskwait
10848 bar();
10849 }
10850 #pragma omp master
10851 {
10852 #pragma omp flush
10853 bar();
10854 }
10855 #pragma omp master
10856 {
10857 #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?}}
10858 bar();
10859 }
10860 #pragma omp master
10861 {
10862 #pragma omp atomic
10863 ++a;
10864 }
10865 #pragma omp master
10866 {
10867 #pragma omp target
10868 ++a;
10869 }
10870 #pragma omp master
10871 {
10872 #pragma omp target parallel
10873 ++a;
10874 }
10875 #pragma omp master
10876 {
10877 #pragma omp target parallel for
10878 for (int i = 0; i < 10; ++i)
10879 ;
10880 }
10881 #pragma omp master
10882 {
10883 #pragma omp target enter data map(to: a)
10884 ++a;
10885 }
10886 #pragma omp master
10887 {
10888 #pragma omp target exit data map(from: a)
10889 ++a;
10890 }
10891 #pragma omp master
10892 {
10893 #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?}}
10894 ++a;
10895 }
10896 #pragma omp master
10897 {
10898 #pragma omp taskloop
10899 for (int i = 0; i < 10; ++i)
10900 ++a;
10901 }
10902 #pragma omp master
10903 {
10904 #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?}}
10905 for (int i = 0; i < 10; ++i)
10906 ;
10907 }
10908 #pragma omp master
10909 {
10910 #pragma omp target update to(a)
10911 ++a;
10912 }
10913 #pragma omp master
10914 {
10915 #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?}}
10916 for (int i = 0; i < 10; ++i)
10917 ;
10918 }
10919 #pragma omp master
10920 {
10921 #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?}}
10922 for (int i = 0; i < 10; ++i)
10923 ;
10924 }
10925 #pragma omp master
10926 {
10927 #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?}}
10928 for (int i = 0; i < 10; ++i)
10929 ;
10930 }
10931 #pragma omp master
10932 {
10933 #pragma omp target simd // OK
10934 for (int i = 0; i < 10; ++i)
10935 ;
10936 }
10937 #pragma omp master
10938 {
10939 #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?}}
10940 for (int i = 0; i < 10; ++i)
10941 ;
10942 }
10943 #pragma omp master
10944 {
10945 #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?}}
10946 for (int i = 0; i < 10; ++i)
10947 ;
10948 }
10949 #pragma omp master
10950 {
10951 #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?}}
10952 for (int i = 0; i < 10; ++i)
10953 ;
10954 }
10955 #pragma omp master
10956 {
10957 #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?}}
10958 for (int i = 0; i < 10; ++i)
10959 ;
10960 }
10961 #pragma omp master
10962 {
10963 #pragma omp target teams // OK
10964 a++;
10965 }
10966 #pragma omp master
10967 {
10968 #pragma omp target teams distribute // OK
10969 for (int i = 0; i < 10; ++i)
10970 ;
10971 }
10972 #pragma omp master
10973 {
10974 #pragma omp target teams distribute parallel for // OK
10975 for (int i = 0; i < 10; ++i)
10976 ;
10977 }
10978 #pragma omp master
10979 {
10980 #pragma omp target teams distribute parallel for simd // OK
10981 for (int i = 0; i < 10; ++i)
10982 ;
10983 }
10984 #pragma omp master
10985 {
10986 #pragma omp target teams distribute simd // OK
10987 for (int i = 0; i < 10; ++i)
10988 ;
10989 }
10990
10991 // CRITICAL DIRECTIVE
10992 #pragma omp critical
10993 {
10994 #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?}}
10995 for (int i = 0; i < 10; ++i)
10996 ;
10997 }
10998 #pragma omp critical
10999 {
11000 #pragma omp simd
11001 for (int i = 0; i < 10; ++i)
11002 ;
11003 }
11004 #pragma omp critical
11005 {
11006 #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?}}
11007 for (int i = 0; i < 10; ++i)
11008 ;
11009 }
11010 #pragma omp critical
11011 {
11012 #pragma omp parallel
11013 for (int i = 0; i < 10; ++i)
11014 ;
11015 }
11016 #pragma omp critical
11017 {
11018 #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?}}
11019 {
11020 bar();
11021 }
11022 }
11023 #pragma omp critical
11024 {
11025 #pragma omp master // OK, though second 'master' is redundant
11026 {
11027 bar();
11028 }
11029 }
11030 #pragma omp critical
11031 {
11032 #pragma omp critical
11033 {
11034 bar();
11035 }
11036 }
11037 #pragma omp critical
11038 {
11039 #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?}}
11040 {
11041 bar();
11042 }
11043 }
11044 #pragma omp critical
11045 {
11046 #pragma omp parallel
11047 {
11048 #pragma omp master // OK
11049 {
11050 bar();
11051 }
11052 #pragma omp for // OK
11053 for (int i = 0; i < 10; ++i)
11054 ;
11055 #pragma omp for simd // OK
11056 for (int i = 0; i < 10; ++i)
11057 ;
11058 #pragma omp sections // OK
11059 {
11060 bar();
11061 }
11062 }
11063 }
11064 #pragma omp critical
11065 {
11066 #pragma omp parallel for
11067 for (int i = 0; i < 10; ++i)
11068 ;
11069 }
11070 #pragma omp critical
11071 {
11072 #pragma omp parallel for simd
11073 for (int i = 0; i < 10; ++i)
11074 ;
11075 }
11076 #pragma omp critical
11077 {
11078 #pragma omp parallel sections
11079 {
11080 bar();
11081 }
11082 }
11083 #pragma omp critical
11084 {
11085 #pragma omp task
11086 {
11087 bar();
11088 }
11089 }
11090 #pragma omp critical
11091 {
11092 #pragma omp taskyield
11093 bar();
11094 }
11095 #pragma omp critical
11096 {
11097 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}
11098 bar();
11099 }
11100 #pragma omp critical
11101 {
11102 #pragma omp taskwait
11103 bar();
11104 }
11105 #pragma omp critical(Belka)
11106 {
11107 #pragma omp critical(Strelka)
11108 bar();
11109 }
11110 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}}
11111 {
11112 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}}
11113 {
11114 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}}
11115 {
11116 #pragma omp parallel
11117 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}}
11118 {
11119 bar();
11120 }
11121 }
11122 }
11123 }
11124 #pragma omp critical
11125 {
11126 #pragma omp flush
11127 bar();
11128 }
11129 #pragma omp critical
11130 {
11131 #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?}}
11132 bar();
11133 }
11134 #pragma omp critical
11135 {
11136 #pragma omp atomic
11137 ++a;
11138 }
11139 #pragma omp critical
11140 {
11141 #pragma omp target
11142 ++a;
11143 }
11144 #pragma omp critical
11145 {
11146 #pragma omp target parallel
11147 ++a;
11148 }
11149 #pragma omp critical
11150 {
11151 #pragma omp target parallel for
11152 for (int i = 0; i < 10; ++i)
11153 ;
11154 }
11155 #pragma omp critical
11156 {
11157 #pragma omp target enter data map(to: a)
11158 ++a;
11159 }
11160 #pragma omp critical
11161 {
11162 #pragma omp target exit data map(from: a)
11163 ++a;
11164 }
11165 #pragma omp critical
11166 {
11167 #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?}}
11168 ++a;
11169 }
11170 #pragma omp critical
11171 {
11172 #pragma omp taskloop
11173 for (int i = 0; i < 10; ++i)
11174 ++a;
11175 }
11176 #pragma omp critical
11177 {
11178 #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?}}
11179 for (int i = 0; i < 10; ++i)
11180 ;
11181 }
11182 #pragma omp critical
11183 {
11184 #pragma omp target update to(a)
11185 a++;
11186 }
11187 #pragma omp critical
11188 {
11189 #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?}}
11190 for (int i = 0; i < 10; ++i)
11191 ;
11192 }
11193 #pragma omp critical
11194 {
11195 #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?}}
11196 for (int i = 0; i < 10; ++i)
11197 ;
11198 }
11199 #pragma omp critical
11200 {
11201 #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?}}
11202 for (int i = 0; i < 10; ++i)
11203 ;
11204 }
11205 #pragma omp critical
11206 {
11207 #pragma omp target simd // OK
11208 for (int i = 0; i < 10; ++i)
11209 ;
11210 }
11211 #pragma omp critical
11212 {
11213 #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?}}
11214 for (int i = 0; i < 10; ++i)
11215 ;
11216 }
11217 #pragma omp critical
11218 {
11219 #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?}}
11220 for (int i = 0; i < 10; ++i)
11221 ;
11222 }
11223 #pragma omp critical
11224 {
11225 #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?}}
11226 for (int i = 0; i < 10; ++i)
11227 ;
11228 }
11229 #pragma omp critical
11230 {
11231 #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?}}
11232 for (int i = 0; i < 10; ++i)
11233 ;
11234 }
11235 #pragma omp critical
11236 {
11237 #pragma omp target teams // OK
11238 a++;
11239 }
11240 #pragma omp critical
11241 {
11242 #pragma omp target teams distribute // OK
11243 for (int i = 0; i < 10; ++i)
11244 ;
11245 }
11246 #pragma omp critical
11247 {
11248 #pragma omp target teams distribute parallel for // OK
11249 for (int i = 0; i < 10; ++i)
11250 ;
11251 }
11252 #pragma omp critical
11253 {
11254 #pragma omp target teams distribute parallel for simd // OK
11255 for (int i = 0; i < 10; ++i)
11256 ;
11257 }
11258 #pragma omp critical
11259 {
11260 #pragma omp target teams distribute simd // OK
11261 for (int i = 0; i < 10; ++i)
11262 ;
11263 }
11264
11265 // PARALLEL FOR DIRECTIVE
11266 #pragma omp parallel for
11267 for (int i = 0; i < 10; ++i) {
11268 #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?}}
11269 for (int i = 0; i < 10; ++i)
11270 ;
11271 }
11272 #pragma omp parallel for
11273 for (int i = 0; i < 10; ++i) {
11274 #pragma omp simd
11275 for (int i = 0; i < 10; ++i)
11276 ;
11277 }
11278 #pragma omp parallel for
11279 for (int i = 0; i < 10; ++i) {
11280 #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?}}
11281 for (int i = 0; i < 10; ++i)
11282 ;
11283 }
11284
11285 #pragma omp parallel for
11286 for (int i = 0; i < 10; ++i) {
11287 #pragma omp parallel
11288 for (int i = 0; i < 10; ++i)
11289 ;
11290 }
11291 #pragma omp parallel for
11292 for (int i = 0; i < 10; ++i) {
11293 #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?}}
11294 {
11295 bar();
11296 }
11297 }
11298 #pragma omp parallel for
11299 for (int i = 0; i < 10; ++i) {
11300 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}
11301 {
11302 bar();
11303 }
11304 }
11305 #pragma omp parallel for
11306 for (int i = 0; i < 10; ++i) {
11307 #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?}}
11308 {
11309 bar();
11310 }
11311 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}
11312 {
11313 bar();
11314 }
11315 #pragma omp critical
11316 {
11317 bar();
11318 }
11319 }
11320 #pragma omp parallel for
11321 for (int i = 0; i < 10; ++i) {
11322 #pragma omp parallel
11323 {
11324 #pragma omp single // OK
11325 {
11326 bar();
11327 }
11328 #pragma omp master // OK
11329 {
11330 bar();
11331 }
11332 #pragma omp critical // OK
11333 {
11334 bar();
11335 }
11336 #pragma omp for // OK
11337 for (int i = 0; i < 10; ++i)
11338 ;
11339 #pragma omp for simd // OK
11340 for (int i = 0; i < 10; ++i)
11341 ;
11342 #pragma omp sections // OK
11343 {
11344 bar();
11345 }
11346 }
11347 }
11348 #pragma omp parallel for
11349 for (int i = 0; i < 10; ++i) {
11350 #pragma omp parallel for
11351 for (int i = 0; i < 10; ++i)
11352 ;
11353 }
11354 #pragma omp parallel for
11355 for (int i = 0; i < 10; ++i) {
11356 #pragma omp parallel for simd
11357 for (int i = 0; i < 10; ++i)
11358 ;
11359 }
11360 #pragma omp parallel for
11361 for (int i = 0; i < 10; ++i) {
11362 #pragma omp parallel sections
11363 {
11364 bar();
11365 }
11366 }
11367 #pragma omp parallel for
11368 for (int i = 0; i < 10; ++i) {
11369 #pragma omp task
11370 {
11371 bar();
11372 }
11373 }
11374 #pragma omp parallel for
11375 for (int i = 0; i < 10; ++i) {
11376 #pragma omp taskyield
11377 bar();
11378 }
11379 #pragma omp parallel for
11380 for (int i = 0; i < 10; ++i) {
11381 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}
11382 bar();
11383 }
11384 #pragma omp parallel for
11385 for (int i = 0; i < 10; ++i) {
11386 #pragma omp taskwait
11387 bar();
11388 }
11389 #pragma omp parallel for
11390 for (int i = 0; i < 10; ++i) {
11391 #pragma omp flush
11392 bar();
11393 }
11394 #pragma omp parallel for
11395 for (int i = 0; i < 10; ++i) {
11396 #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?}}
11397 bar();
11398 }
11399 #pragma omp parallel for ordered
11400 for (int i = 0; i < 10; ++i) {
11401 #pragma omp ordered // OK
11402 bar();
11403 }
11404 #pragma omp parallel for
11405 for (int i = 0; i < 10; ++i) {
11406 #pragma omp atomic
11407 ++a;
11408 }
11409 #pragma omp parallel for
11410 for (int i = 0; i < 10; ++i) {
11411 #pragma omp target
11412 ++a;
11413 }
11414 #pragma omp parallel for
11415 for (int i = 0; i < 10; ++i) {
11416 #pragma omp target parallel
11417 ++a;
11418 }
11419 #pragma omp parallel for
11420 for (int i = 0; i < 10; ++i) {
11421 #pragma omp target parallel for
11422 for (int i = 0; i < 10; ++i)
11423 ;
11424 }
11425 #pragma omp parallel for
11426 for (int i = 0; i < 10; ++i) {
11427 #pragma omp target enter data map(to: a)
11428 ++a;
11429 }
11430 #pragma omp parallel for
11431 for (int i = 0; i < 10; ++i) {
11432 #pragma omp target exit data map(from: a)
11433 ++a;
11434 }
11435 #pragma omp parallel for
11436 for (int i = 0; i < 10; ++i) {
11437 #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?}}
11438 ++a;
11439 }
11440 #pragma omp parallel for
11441 for (int i = 0; i < 10; ++i) {
11442 #pragma omp taskloop
11443 for (int i = 0; i < 10; ++i)
11444 ++a;
11445 }
11446 #pragma omp parallel for
11447 for (int i = 0; i < 10; ++i) {
11448 #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?}}
11449 for (int j = 0; j < 10; ++j)
11450 ;
11451 }
11452 #pragma omp parallel for
11453 for (int i = 0; i < 10; ++i) {
11454 #pragma omp target update to(a)
11455 a++;
11456 }
11457 #pragma omp parallel for
11458 for (int i = 0; i < 10; ++i) {
11459 #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?}}
11460 for (int j = 0; j < 10; ++j)
11461 ;
11462 }
11463 #pragma omp parallel for
11464 for (int i = 0; i < 10; ++i) {
11465 #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?}}
11466 for (int j = 0; j < 10; ++j)
11467 ;
11468 }
11469 #pragma omp parallel for
11470 for (int i = 0; i < 10; ++i) {
11471 #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?}}
11472 for (int j = 0; j < 10; ++j)
11473 ;
11474 }
11475 #pragma omp parallel for
11476 for (int i = 0; i < 10; ++i) {
11477 #pragma omp target simd // OK
11478 for (int j = 0; j < 10; ++j)
11479 ;
11480 }
11481 #pragma omp parallel for
11482 for (int i = 0; i < 10; ++i) {
11483 #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?}}
11484 for (int j = 0; j < 10; ++j)
11485 ;
11486 }
11487 #pragma omp parallel for
11488 for (int i = 0; i < 10; ++i) {
11489 #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?}}
11490 for (int j = 0; j < 10; ++j)
11491 ;
11492 }
11493 #pragma omp parallel for
11494 for (int i = 0; i < 10; ++i) {
11495 #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?}}
11496 for (int j = 0; j < 10; ++j)
11497 ;
11498 }
11499 #pragma omp parallel for
11500 for (int i = 0; i < 10; ++i) {
11501 #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?}}
11502 for (int j = 0; j < 10; ++j)
11503 ;
11504 }
11505 #pragma omp parallel for
11506 for (int i = 0; i < 10; ++i) {
11507 #pragma omp target teams // OK
11508 a++;
11509 }
11510 #pragma omp parallel for
11511 for (int i = 0; i < 10; ++i) {
11512 #pragma omp target teams distribute // OK
11513 for (int j = 0; j < 10; ++j)
11514 ;
11515 }
11516 #pragma omp parallel for
11517 for (int i = 0; i < 10; ++i) {
11518 #pragma omp target teams distribute parallel for // OK
11519 for (int j = 0; j < 10; ++j)
11520 ;
11521 }
11522 #pragma omp parallel for
11523 for (int i = 0; i < 10; ++i) {
11524 #pragma omp target teams distribute parallel for simd // OK
11525 for (int j = 0; j < 10; ++j)
11526 ;
11527 }
11528 #pragma omp parallel for
11529 for (int i = 0; i < 10; ++i) {
11530 #pragma omp target teams distribute simd // OK
11531 for (int j = 0; j < 10; ++j)
11532 ;
11533 }
11534
11535 // PARALLEL FOR SIMD DIRECTIVE
11536 #pragma omp parallel for simd
11537 for (int i = 0; i < 10; ++i) {
11538 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11539 for (int i = 0; i < 10; ++i)
11540 ;
11541 }
11542 #pragma omp parallel for simd
11543 for (int i = 0; i < 10; ++i) {
11544 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
11545 for (int i = 0; i < 10; ++i)
11546 ;
11547 }
11548 #pragma omp parallel for simd
11549 for (int i = 0; i < 10; ++i) {
11550 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11551 for (int i = 0; i < 10; ++i)
11552 ;
11553 }
11554 #pragma omp parallel for simd
11555 for (int i = 0; i < 10; ++i) {
11556 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11557 for (int i = 0; i < 10; ++i)
11558 ;
11559 }
11560 #pragma omp parallel for simd
11561 for (int i = 0; i < 10; ++i) {
11562 #pragma omp sections // 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 section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11570 {
11571 bar();
11572 }
11573 }
11574 #pragma omp parallel for simd
11575 for (int i = 0; i < 10; ++i) {
11576 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11577 {
11578 bar();
11579 }
11580 }
11581
11582 #pragma omp parallel for simd
11583 for (int i = 0; i < 10; ++i) {
11584 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11585 {
11586 bar();
11587 }
11588 }
11589
11590 #pragma omp parallel for simd
11591 for (int i = 0; i < 10; ++i) {
11592 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11593 {
11594 bar();
11595 }
11596 }
11597
11598 #pragma omp parallel for simd
11599 for (int i = 0; i < 10; ++i) {
11600 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11601 {
11602 #pragma omp single
11603 {
11604 bar();
11605 }
11606 #pragma omp for
11607 for (int i = 0; i < 10; ++i)
11608 ;
11609 #pragma omp for simd
11610 for (int i = 0; i < 10; ++i)
11611 ;
11612 #pragma omp sections
11613 {
11614 bar();
11615 }
11616 }
11617 }
11618 #pragma omp parallel for simd
11619 for (int i = 0; i < 10; ++i) {
11620 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11621 for (int i = 0; i < 10; ++i)
11622 ;
11623 }
11624 #pragma omp parallel for simd
11625 for (int i = 0; i < 10; ++i) {
11626 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}
11627 for (int i = 0; i < 10; ++i)
11628 ;
11629 }
11630 #pragma omp parallel for simd
11631 for (int i = 0; i < 10; ++i) {
11632 #pragma omp parallel sections // 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11640 {
11641 bar();
11642 }
11643 }
11644 #pragma omp parallel for simd
11645 for (int i = 0; i < 10; ++i) {
11646 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11647 bar();
11648 }
11649 #pragma omp parallel for simd
11650 for (int i = 0; i < 10; ++i) {
11651 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11652 bar();
11653 }
11654 #pragma omp parallel for simd
11655 for (int i = 0; i < 10; ++i) {
11656 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11657 bar();
11658 }
11659 #pragma omp parallel for simd
11660 for (int i = 0; i < 10; ++i) {
11661 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11662 bar();
11663 }
11664 #pragma omp parallel for simd
11665 for (int i = 0; i < 10; ++i) {
11666 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11667 bar();
11668 }
11669 #pragma omp parallel for simd
11670 for (int i = 0; i < 10; ++i) {
11671 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11672 bar();
11673 }
11674 #pragma omp parallel for simd
11675 for (int i = 0; i < 10; ++i) {
11676 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11677 ++a;
11678 }
11679 #pragma omp parallel for simd
11680 for (int i = 0; i < 10; ++i) {
11681 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11682 ++a;
11683 }
11684 #pragma omp parallel for simd
11685 for (int i = 0; i < 10; ++i) {
11686 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11687 ++a;
11688 }
11689 #pragma omp parallel for simd
11690 for (int i = 0; i < 10; ++i) {
11691 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11692 for (int i = 0; i < 10; ++i)
11693 ;
11694 }
11695 #pragma omp parallel for simd
11696 for (int i = 0; i < 10; ++i) {
11697 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11698 ++a;
11699 }
11700 #pragma omp parallel for simd
11701 for (int i = 0; i < 10; ++i) {
11702 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11703 ++a;
11704 }
11705 #pragma omp parallel for simd
11706 for (int i = 0; i < 10; ++i) {
11707 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11708 ++a;
11709 }
11710 #pragma omp parallel for simd
11711 for (int i = 0; i < 10; ++i) {
11712 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11713 for (int i = 0; i < 10; ++i)
11714 ++a;
11715 }
11716 #pragma omp parallel for simd
11717 for (int i = 0; i < 10; ++i) {
11718 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11719 for (int j = 0; j < 10; ++j)
11720 ;
11721 }
11722 #pragma omp parallel for simd
11723 for (int i = 0; i < 10; ++i) {
11724 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11725 a++;
11726 }
11727 #pragma omp parallel for simd
11728 for (int i = 0; i < 10; ++i) {
11729 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11730 for (int j = 0; j < 10; ++j)
11731 ;
11732 }
11733 #pragma omp parallel for simd
11734 for (int i = 0; i < 10; ++i) {
11735 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11736 for (int j = 0; j < 10; ++j)
11737 ;
11738 }
11739 #pragma omp parallel for simd
11740 for (int i = 0; i < 10; ++i) {
11741 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11742 for (int j = 0; j < 10; ++j)
11743 ;
11744 }
11745 #pragma omp parallel for simd
11746 for (int i = 0; i < 10; ++i) {
11747 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11748 for (int j = 0; j < 10; ++j)
11749 ;
11750 }
11751 #pragma omp parallel for simd
11752 for (int i = 0; i < 10; ++i) {
11753 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11754 for (int j = 0; j < 10; ++j)
11755 ;
11756 }
11757 #pragma omp parallel for simd
11758 for (int i = 0; i < 10; ++i) {
11759 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11760 for (int j = 0; j < 10; ++j)
11761 ;
11762 }
11763 #pragma omp parallel for simd
11764 for (int i = 0; i < 10; ++i) {
11765 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11766 for (int j = 0; j < 10; ++j)
11767 ;
11768 }
11769 #pragma omp parallel for simd
11770 for (int i = 0; i < 10; ++i) {
11771 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11772 for (int j = 0; j < 10; ++j)
11773 ;
11774 }
11775 #pragma omp parallel for simd
11776 for (int i = 0; i < 10; ++i) {
11777 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11778 a++;
11779 }
11780 #pragma omp parallel for simd
11781 for (int i = 0; i < 10; ++i) {
11782 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11783 for (int j = 0; j < 10; ++j)
11784 ;
11785 }
11786 #pragma omp parallel for simd
11787 for (int i = 0; i < 10; ++i) {
11788 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11789 for (int j = 0; j < 10; ++j)
11790 ;
11791 }
11792 #pragma omp parallel for simd
11793 for (int i = 0; i < 10; ++i) {
11794 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11795 for (int j = 0; j < 10; ++j)
11796 ;
11797 }
11798 #pragma omp parallel for simd
11799 for (int i = 0; i < 10; ++i) {
11800 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
11801 for (int j = 0; j < 10; ++j)
11802 ;
11803 }
11804
11805 // PARALLEL SECTIONS DIRECTIVE
11806 #pragma omp parallel sections
11807 {
11808 #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?}}
11809 for (int i = 0; i < 10; ++i)
11810 ;
11811 }
11812 #pragma omp parallel sections
11813 {
11814 #pragma omp simd
11815 for (int i = 0; i < 10; ++i)
11816 ;
11817 }
11818 #pragma omp parallel sections
11819 {
11820 #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?}}
11821 for (int i = 0; i < 10; ++i)
11822 ;
11823 }
11824 #pragma omp parallel sections
11825 {
11826 #pragma omp parallel
11827 for (int i = 0; i < 10; ++i)
11828 ;
11829 }
11830 #pragma omp parallel sections
11831 {
11832 #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?}}
11833 {
11834 bar();
11835 }
11836 }
11837 #pragma omp parallel sections
11838 {
11839 #pragma omp section
11840 {
11841 bar();
11842 }
11843 }
11844 #pragma omp parallel sections
11845 {
11846 #pragma omp section
11847 {
11848 #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?}}
11849 bar();
11850 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}
11851 bar();
11852 #pragma omp critical
11853 bar();
11854 }
11855 }
11856 #pragma omp parallel sections
11857 {
11858 #pragma omp parallel
11859 {
11860 #pragma omp single // OK
11861 {
11862 bar();
11863 }
11864 #pragma omp master // OK
11865 {
11866 bar();
11867 }
11868 #pragma omp critical // OK
11869 {
11870 bar();
11871 }
11872 #pragma omp for // OK
11873 for (int i = 0; i < 10; ++i)
11874 ;
11875 #pragma omp for simd // OK
11876 for (int i = 0; i < 10; ++i)
11877 ;
11878 #pragma omp sections // OK
11879 {
11880 bar();
11881 }
11882 }
11883 }
11884 #pragma omp parallel sections
11885 {
11886 #pragma omp parallel for
11887 for (int i = 0; i < 10; ++i)
11888 ;
11889 }
11890 #pragma omp parallel sections
11891 {
11892 #pragma omp parallel for simd
11893 for (int i = 0; i < 10; ++i)
11894 ;
11895 }
11896 #pragma omp parallel sections
11897 {
11898 #pragma omp parallel sections
11899 {
11900 bar();
11901 }
11902 }
11903 #pragma omp parallel sections
11904 {
11905 #pragma omp task
11906 {
11907 bar();
11908 }
11909 }
11910 #pragma omp parallel sections
11911 {
11912 #pragma omp taskyield
11913 }
11914 #pragma omp parallel sections
11915 {
11916 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}
11917 }
11918 #pragma omp parallel sections
11919 {
11920 #pragma omp taskwait
11921 }
11922 #pragma omp parallel sections
11923 {
11924 #pragma omp flush
11925 }
11926 #pragma omp parallel sections
11927 {
11928 #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?}}
11929 bar();
11930 }
11931 #pragma omp parallel sections
11932 {
11933 #pragma omp atomic
11934 ++a;
11935 }
11936 #pragma omp parallel sections
11937 {
11938 #pragma omp target
11939 ++a;
11940 }
11941 #pragma omp parallel sections
11942 {
11943 #pragma omp target parallel
11944 ++a;
11945 }
11946 #pragma omp parallel sections
11947 {
11948 #pragma omp target parallel for
11949 for (int i = 0; i < 10; ++i)
11950 ;
11951 }
11952 #pragma omp parallel sections
11953 {
11954 #pragma omp target enter data map(to: a)
11955 }
11956 #pragma omp parallel sections
11957 {
11958 #pragma omp target exit data map(from: a)
11959 }
11960 #pragma omp parallel sections
11961 {
11962 #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?}}
11963 ++a;
11964 }
11965 #pragma omp parallel sections
11966 {
11967 #pragma omp taskloop
11968 for (int i = 0; i < 10; ++i)
11969 ++a;
11970 }
11971 #pragma omp parallel sections
11972 {
11973 #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?}}
11974 for (int i = 0; i < 10; ++i)
11975 ;
11976 }
11977 #pragma omp parallel sections
11978 {
11979 #pragma omp target update to(a)
11980 }
11981 #pragma omp parallel sections
11982 {
11983 #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?}}
11984 for (int i = 0; i < 10; ++i)
11985 ;
11986 }
11987 #pragma omp parallel sections
11988 {
11989 #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?}}
11990 for (int i = 0; i < 10; ++i)
11991 ;
11992 }
11993 #pragma omp parallel sections
11994 {
11995 #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?}}
11996 for (int i = 0; i < 10; ++i)
11997 ;
11998 }
11999 #pragma omp parallel sections
12000 {
12001 #pragma omp target simd // OK
12002 for (int i = 0; i < 10; ++i)
12003 ;
12004 }
12005 #pragma omp parallel sections
12006 {
12007 #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?}}
12008 for (int i = 0; i < 10; ++i)
12009 ;
12010 }
12011 #pragma omp parallel sections
12012 {
12013 #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?}}
12014 for (int i = 0; i < 10; ++i)
12015 ;
12016 }
12017 #pragma omp parallel sections
12018 {
12019 #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?}}
12020 for (int i = 0; i < 10; ++i)
12021 ;
12022 }
12023 #pragma omp parallel sections
12024 {
12025 #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?}}
12026 for (int i = 0; i < 10; ++i)
12027 ;
12028 }
12029 #pragma omp parallel sections
12030 {
12031 #pragma omp target teams // OK
12032 a++;
12033 }
12034 #pragma omp parallel sections
12035 {
12036 #pragma omp target teams distribute // OK
12037 for (int i = 0; i < 10; ++i)
12038 ;
12039 }
12040 #pragma omp parallel sections
12041 {
12042 #pragma omp target teams distribute parallel for // OK
12043 for (int i = 0; i < 10; ++i)
12044 ;
12045 }
12046 #pragma omp parallel sections
12047 {
12048 #pragma omp target teams distribute parallel for simd // OK
12049 for (int i = 0; i < 10; ++i)
12050 ;
12051 }
12052 #pragma omp parallel sections
12053 {
12054 #pragma omp target teams distribute simd // OK
12055 for (int i = 0; i < 10; ++i)
12056 ;
12057 }
12058
12059 // TASK DIRECTIVE
12060 #pragma omp task
12061 #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?}}
12062 for (int i = 0; i < 10; ++i)
12063 ;
12064 #pragma omp task
12065 #pragma omp simd
12066 for (int i = 0; i < 10; ++i)
12067 ;
12068 #pragma omp task
12069 #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?}}
12070 for (int i = 0; i < 10; ++i)
12071 ;
12072 #pragma omp task
12073 #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?}}
12074 {
12075 bar();
12076 }
12077 #pragma omp task
12078 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}
12079 {
12080 bar();
12081 }
12082 #pragma omp task
12083 #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?}}
12084 bar();
12085 #pragma omp task
12086 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}
12087 bar();
12088 #pragma omp task
12089 #pragma omp critical
12090 bar();
12091 #pragma omp task
12092 #pragma omp parallel for
12093 for (int i = 0; i < 10; ++i)
12094 ;
12095 #pragma omp task
12096 #pragma omp parallel for simd
12097 for (int i = 0; i < 10; ++i)
12098 ;
12099 #pragma omp task
12100 #pragma omp parallel sections
12101 {
12102 bar();
12103 }
12104 #pragma omp task
12105 #pragma omp task
12106 {
12107 bar();
12108 }
12109 #pragma omp task
12110 {
12111 #pragma omp taskyield
12112 bar();
12113 }
12114 #pragma omp task
12115 {
12116 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}
12117 bar();
12118 }
12119 #pragma omp task
12120 {
12121 #pragma omp taskwait
12122 bar();
12123 }
12124 #pragma omp task
12125 {
12126 #pragma omp flush
12127 bar();
12128 }
12129 #pragma omp task
12130 {
12131 #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?}}
12132 bar();
12133 }
12134 #pragma omp task
12135 {
12136 #pragma omp atomic
12137 ++a;
12138 }
12139 #pragma omp task
12140 {
12141 #pragma omp target
12142 ++a;
12143 }
12144 #pragma omp task
12145 {
12146 #pragma omp target parallel
12147 ++a;
12148 }
12149 #pragma omp task
12150 #pragma omp target parallel for
12151 for (int i = 0; i < 10; ++i)
12152 ;
12153 #pragma omp task
12154 {
12155 #pragma omp target enter data map(to: a)
12156 ++a;
12157 }
12158 #pragma omp task
12159 {
12160 #pragma omp target exit data map(from: a)
12161 ++a;
12162 }
12163 #pragma omp task
12164 {
12165 #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?}}
12166 ++a;
12167 }
12168 #pragma omp task
12169 {
12170 #pragma omp taskloop
12171 for (int i = 0; i < 10; ++i)
12172 ++a;
12173 }
12174 #pragma omp task
12175 {
12176 #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?}}
12177 for (int i = 0; i < 10; ++i)
12178 ;
12179 }
12180 #pragma omp task
12181 {
12182 #pragma omp target update to(a)
12183 a++;
12184 }
12185 #pragma omp task
12186 {
12187 #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?}}
12188 for (int i = 0; i < 10; ++i)
12189 ;
12190 }
12191 #pragma omp task
12192 {
12193 #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?}}
12194 for (int i = 0; i < 10; ++i)
12195 ;
12196 }
12197 #pragma omp task
12198 {
12199 #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?}}
12200 for (int i = 0; i < 10; ++i)
12201 ;
12202 }
12203 #pragma omp task
12204 {
12205 #pragma omp target simd // OK
12206 for (int i = 0; i < 10; ++i)
12207 ;
12208 }
12209 #pragma omp task
12210 {
12211 #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?}}
12212 for (int i = 0; i < 10; ++i)
12213 ;
12214 }
12215 #pragma omp task
12216 {
12217 #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?}}
12218 for (int i = 0; i < 10; ++i)
12219 ;
12220 }
12221 #pragma omp task
12222 {
12223 #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?}}
12224 for (int i = 0; i < 10; ++i)
12225 ;
12226 }
12227 #pragma omp task
12228 {
12229 #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?}}
12230 for (int i = 0; i < 10; ++i)
12231 ;
12232 }
12233 #pragma omp task
12234 {
12235 #pragma omp target teams // OK
12236 a++;
12237 }
12238 #pragma omp task
12239 {
12240 #pragma omp target teams distribute // OK
12241 for (int i = 0; i < 10; ++i)
12242 ;
12243 }
12244 #pragma omp task
12245 {
12246 #pragma omp target teams distribute parallel for // OK
12247 for (int i = 0; i < 10; ++i)
12248 ;
12249 }
12250 #pragma omp task
12251 {
12252 #pragma omp target teams distribute parallel for simd // OK
12253 for (int i = 0; i < 10; ++i)
12254 ;
12255 }
12256 #pragma omp task
12257 {
12258 #pragma omp target teams distribute simd // OK
12259 for (int i = 0; i < 10; ++i)
12260 ;
12261 }
12262
12263 // ATOMIC DIRECTIVE
12264 #pragma omp atomic
12265 // 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}}
12266 // expected-note@+1 {{expected an expression statement}}
12267 {
12268 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12269 for (int i = 0; i < 10; ++i)
12270 ;
12271 }
12272 #pragma omp atomic
12273 // 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}}
12274 // expected-note@+1 {{expected an expression statement}}
12275 {
12276 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12277 for (int i = 0; i < 10; ++i)
12278 ;
12279 }
12280 #pragma omp atomic
12281 // 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}}
12282 // expected-note@+1 {{expected an expression statement}}
12283 {
12284 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12285 for (int i = 0; i < 10; ++i)
12286 ;
12287 }
12288 #pragma omp atomic
12289 // 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}}
12290 // expected-note@+1 {{expected an expression statement}}
12291 {
12292 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12293 for (int i = 0; i < 10; ++i)
12294 ;
12295 }
12296 #pragma omp atomic
12297 // 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}}
12298 // expected-note@+1 {{expected an expression statement}}
12299 {
12300 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12301 {
12302 bar();
12303 }
12304 }
12305 #pragma omp atomic
12306 // 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}}
12307 // expected-note@+1 {{expected an expression statement}}
12308 {
12309 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12310 {
12311 bar();
12312 }
12313 }
12314 #pragma omp atomic
12315 // 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}}
12316 // expected-note@+1 {{expected an expression statement}}
12317 {
12318 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12319 {
12320 bar();
12321 }
12322 }
12323 #pragma omp atomic
12324 // 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}}
12325 // expected-note@+1 {{expected an expression statement}}
12326 {
12327 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12328 {
12329 bar();
12330 }
12331 }
12332 #pragma omp atomic
12333 // 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}}
12334 // expected-note@+1 {{expected an expression statement}}
12335 {
12336 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12337 {
12338 bar();
12339 }
12340 }
12341 #pragma omp atomic
12342 // 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}}
12343 // expected-note@+1 {{expected an expression statement}}
12344 {
12345 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12346 for (int i = 0; i < 10; ++i)
12347 ;
12348 }
12349 #pragma omp atomic
12350 // 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}}
12351 // expected-note@+1 {{expected an expression statement}}
12352 {
12353 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12354 for (int i = 0; i < 10; ++i)
12355 ;
12356 }
12357 #pragma omp atomic
12358 // 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}}
12359 // expected-note@+1 {{expected an expression statement}}
12360 {
12361 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12362 {
12363 bar();
12364 }
12365 }
12366 #pragma omp atomic
12367 // 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}}
12368 // expected-note@+1 {{expected an expression statement}}
12369 {
12370 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12371 {
12372 bar();
12373 }
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 taskyield // 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 barrier // 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 taskwait // 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 flush // 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 ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12408 bar();
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 atomic // 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 // 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 // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12429 ++a;
12430 }
12431 #pragma omp atomic
12432 // 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}}
12433 // expected-note@+1 {{expected an expression statement}}
12434 {
12435 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12436 for (int i = 0; i < 10; ++i)
12437 ;
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 enter data map(to: 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 target exit data map(from: a) // 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 teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12458 ++a;
12459 }
12460 #pragma omp atomic
12461 // 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}}
12462 // expected-note@+1 {{expected an expression statement}}
12463 {
12464 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12465 for (int i = 0; i < 10; ++i)
12466 ++a;
12467 }
12468 #pragma omp atomic
12469 // 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}}
12470 // expected-note@+1 {{expected an expression statement}}
12471 {
12472 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12473 for (int i = 0; i < 10; ++i)
12474 ;
12475 }
12476 #pragma omp atomic
12477 // 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}}
12478 // expected-note@+1 {{expected an expression statement}}
12479 {
12480 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12481 }
12482 #pragma omp atomic
12483 // 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}}
12484 // expected-note@+1 {{expected an expression statement}}
12485 {
12486 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12487 for (int i = 0; i < 10; ++i)
12488 ;
12489 }
12490 #pragma omp atomic
12491 // 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}}
12492 // expected-note@+1 {{expected an expression statement}}
12493 {
12494 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12495 for (int i = 0; i < 10; ++i)
12496 ;
12497 }
12498 #pragma omp atomic
12499 // 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}}
12500 // expected-note@+1 {{expected an expression statement}}
12501 {
12502 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12503 for (int i = 0; i < 10; ++i)
12504 ;
12505 }
12506 #pragma omp atomic
12507 // 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}}
12508 // expected-note@+1 {{expected an expression statement}}
12509 {
12510 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12511 for (int i = 0; i < 10; ++i)
12512 ;
12513 }
12514 #pragma omp atomic
12515 // 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}}
12516 // expected-note@+1 {{expected an expression statement}}
12517 {
12518 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12519 for (int i = 0; i < 10; ++i)
12520 ;
12521 }
12522 #pragma omp atomic
12523 // 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}}
12524 // expected-note@+1 {{expected an expression statement}}
12525 {
12526 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12527 for (int i = 0; i < 10; ++i)
12528 ;
12529 }
12530 #pragma omp atomic
12531 // 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}}
12532 // expected-note@+1 {{expected an expression statement}}
12533 {
12534 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12535 for (int i = 0; i < 10; ++i)
12536 ;
12537 }
12538 #pragma omp atomic
12539 // 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}}
12540 // expected-note@+1 {{expected an expression statement}}
12541 {
12542 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12543 for (int i = 0; i < 10; ++i)
12544 ;
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 // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12551 a++;
12552 }
12553 #pragma omp atomic
12554 // 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}}
12555 // expected-note@+1 {{expected an expression statement}}
12556 {
12557 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12558 for (int i = 0; i < 10; ++i)
12559 ;
12560 }
12561 #pragma omp atomic
12562 // 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}}
12563 // expected-note@+1 {{expected an expression statement}}
12564 {
12565 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12566 for (int i = 0; i < 10; ++i)
12567 ;
12568 }
12569 #pragma omp atomic
12570 // 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}}
12571 // expected-note@+1 {{expected an expression statement}}
12572 {
12573 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12574 for (int i = 0; i < 10; ++i)
12575 ;
12576 }
12577 #pragma omp atomic
12578 // 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}}
12579 // expected-note@+1 {{expected an expression statement}}
12580 {
12581 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12582 for (int i = 0; i < 10; ++i)
12583 ;
12584 }
12585
12586 // TARGET DIRECTIVE
12587 #pragma omp target
12588 #pragma omp parallel
12589 bar();
12590 #pragma omp target
12591 #pragma omp for
12592 for (int i = 0; i < 10; ++i)
12593 ;
12594 #pragma omp target
12595 #pragma omp simd
12596 for (int i = 0; i < 10; ++i)
12597 ;
12598 #pragma omp target
12599 #pragma omp for simd
12600 for (int i = 0; i < 10; ++i)
12601 ;
12602 #pragma omp target
12603 #pragma omp sections
12604 {
12605 bar();
12606 }
12607 #pragma omp target
12608 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}
12609 {
12610 bar();
12611 }
12612 #pragma omp target
12613 #pragma omp single
12614 bar();
12615
12616 #pragma omp target
12617 #pragma omp master
12618 {
12619 bar();
12620 }
12621 #pragma omp target
12622 #pragma omp critical
12623 {
12624 bar();
12625 }
12626 #pragma omp target
12627 #pragma omp parallel for
12628 for (int i = 0; i < 10; ++i)
12629 ;
12630 #pragma omp target
12631 #pragma omp parallel for simd
12632 for (int i = 0; i < 10; ++i)
12633 ;
12634 #pragma omp target
12635 #pragma omp parallel sections
12636 {
12637 bar();
12638 }
12639 #pragma omp target
12640 #pragma omp task
12641 {
12642 bar();
12643 }
12644 #pragma omp target
12645 {
12646 #pragma omp taskyield
12647 bar();
12648 }
12649 #pragma omp target
12650 {
12651 #pragma omp barrier
12652 bar();
12653 }
12654 #pragma omp target
12655 {
12656 #pragma omp taskwait
12657 bar();
12658 }
12659 #pragma omp target
12660 {
12661 #pragma omp flush
12662 bar();
12663 }
12664 #pragma omp target
12665 {
12666 #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?}}
12667 bar();
12668 }
12669 #pragma omp target
12670 {
12671 #pragma omp atomic
12672 ++a;
12673 }
12674 #pragma omp target
12675 {
12676 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
12677 ++a;
12678 }
12679 #pragma omp target
12680 {
12681 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
12682 ++a;
12683 }
12684 #pragma omp target
12685 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
12686 for (int i = 0; i < 10; ++i)
12687 ;
12688 #pragma omp target
12689 {
12690 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
12691 }
12692 #pragma omp target
12693 {
12694 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
12695 }
12696 #pragma omp target
12697 {
12698 #pragma omp teams
12699 ++a;
12700 }
12701 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
12702 {
12703 #pragma omp teams // expected-note {{directive outside teams construct here}}
12704 ++a;
12705 #pragma omp teams // expected-note {{nested teams construct here}}
12706 ++a;
12707 }
12708 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}
12709 {
12710 ++a; // expected-note {{statement outside teams construct here}}
12711 #pragma omp teams // expected-note {{nested teams construct here}}
12712 ++a;
12713 }
12714 #pragma omp target
12715 {
12716 #pragma omp taskloop
12717 for (int i = 0; i < 10; ++i)
12718 ++a;
12719 }
12720 #pragma omp target
12721 {
12722 #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?}}
12723 for (int i = 0; i < 10; ++i)
12724 ;
12725 }
12726 #pragma omp atomic
12727 // 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}}
12728 // expected-note@+1 {{expected an expression statement}}
12729 {
12730 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
12731 a++;
12732 }
12733 #pragma omp target
12734 {
12735 #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?}}
12736 for (int i = 0; i < 10; ++i)
12737 ;
12738 }
12739 #pragma omp target
12740 {
12741 #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?}}
12742 for (int i = 0; i < 10; ++i)
12743 ;
12744 }
12745 #pragma omp target
12746 {
12747 #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?}}
12748 for (int i = 0; i < 10; ++i)
12749 ;
12750 }
12751 #pragma omp target
12752 {
12753 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
12754 for (int i = 0; i < 10; ++i)
12755 ;
12756 }
12757 #pragma omp target
12758 {
12759 #pragma omp teams distribute // OK
12760 for (int i = 0; i < 10; ++i)
12761 ;
12762 }
12763 #pragma omp target
12764 {
12765 #pragma omp teams distribute simd // OK
12766 for (int i = 0; i < 10; ++i)
12767 ;
12768 }
12769 #pragma omp target
12770 {
12771 #pragma omp teams distribute parallel for simd // OK
12772 for (int i = 0; i < 10; ++i)
12773 ;
12774 }
12775 #pragma omp target
12776 {
12777 #pragma omp teams distribute parallel for // OK
12778 for (int i = 0; i < 10; ++i)
12779 ;
12780 }
12781 #pragma omp target
12782 {
12783 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
12784 a++;
12785 }
12786 #pragma omp target
12787 {
12788 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
12789 for (int i = 0; i < 10; ++i)
12790 ;
12791 }
12792 #pragma omp target
12793 {
12794 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
12795 for (int i = 0; i < 10; ++i)
12796 ;
12797 }
12798 #pragma omp target
12799 {
12800 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
12801 for (int i = 0; i < 10; ++i)
12802 ;
12803 }
12804 #pragma omp target
12805 {
12806 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
12807 for (int i = 0; i < 10; ++i)
12808 ;
12809 }
12810
12811 // TARGET PARALLEL DIRECTIVE
12812 #pragma omp target parallel
12813 #pragma omp parallel
12814 bar();
12815 #pragma omp target parallel
12816 #pragma omp for
12817 for (int i = 0; i < 10; ++i)
12818 ;
12819 #pragma omp target parallel
12820 #pragma omp simd
12821 for (int i = 0; i < 10; ++i)
12822 ;
12823 #pragma omp target parallel
12824 #pragma omp for simd
12825 for (int i = 0; i < 10; ++i)
12826 ;
12827 #pragma omp target parallel
12828 #pragma omp sections
12829 {
12830 bar();
12831 }
12832 #pragma omp target parallel
12833 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
12834 {
12835 bar();
12836 }
12837 #pragma omp target parallel
12838 #pragma omp single
12839 bar();
12840
12841 #pragma omp target parallel
12842 #pragma omp master
12843 {
12844 bar();
12845 }
12846 #pragma omp target parallel
12847 #pragma omp critical
12848 {
12849 bar();
12850 }
12851 #pragma omp target parallel
12852 #pragma omp parallel for
12853 for (int i = 0; i < 10; ++i)
12854 ;
12855 #pragma omp target parallel
12856 #pragma omp parallel for simd
12857 for (int i = 0; i < 10; ++i)
12858 ;
12859 #pragma omp target parallel
12860 #pragma omp parallel sections
12861 {
12862 bar();
12863 }
12864 #pragma omp target parallel
12865 #pragma omp task
12866 {
12867 bar();
12868 }
12869 #pragma omp target parallel
12870 {
12871 #pragma omp taskyield
12872 bar();
12873 }
12874 #pragma omp target parallel
12875 {
12876 #pragma omp barrier
12877 bar();
12878 }
12879 #pragma omp target parallel
12880 {
12881 #pragma omp taskwait
12882 bar();
12883 }
12884 #pragma omp target parallel
12885 {
12886 #pragma omp flush
12887 bar();
12888 }
12889 #pragma omp target parallel
12890 {
12891 #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?}}
12892 bar();
12893 }
12894 #pragma omp target parallel
12895 {
12896 #pragma omp atomic
12897 ++a;
12898 }
12899 #pragma omp target parallel
12900 {
12901 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}
12902 ++a;
12903 }
12904 #pragma omp target parallel
12905 {
12906 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}
12907 ++a;
12908 }
12909 #pragma omp target parallel
12910 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
12911 for (int i = 0; i < 10; ++i)
12912 ;
12913 #pragma omp target parallel
12914 {
12915 #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?}}
12916 ++a;
12917 }
12918 #pragma omp target parallel
12919 {
12920 ++a;
12921 #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?}}
12922 ++a;
12923 }
12924 #pragma omp target parallel
12925 {
12926 #pragma omp taskloop
12927 for (int i = 0; i < 10; ++i)
12928 ++a;
12929 }
12930 #pragma omp target parallel
12931 {
12932 #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?}}
12933 for (int i = 0; i < 10; ++i)
12934 ;
12935 }
12936 #pragma omp target parallel
12937 {
12938 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
12939 }
12940 #pragma omp target parallel
12941 {
12942 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}
12943 }
12944 #pragma omp target parallel
12945 {
12946 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}
12947 }
12948 #pragma omp target parallel
12949 {
12950 #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?}}
12951 for (int i = 0; i < 10; ++i)
12952 ;
12953 }
12954 #pragma omp target parallel
12955 {
12956 #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?}}
12957 for (int i = 0; i < 10; ++i)
12958 ;
12959 }
12960 #pragma omp target parallel
12961 {
12962 #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?}}
12963 for (int i = 0; i < 10; ++i)
12964 ;
12965 }
12966 #pragma omp target parallel
12967 {
12968 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}}
12969 for (int i = 0; i < 10; ++i)
12970 ;
12971 }
12972 #pragma omp target parallel
12973 {
12974 #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?}}
12975 for (int i = 0; i < 10; ++i)
12976 ;
12977 }
12978 #pragma omp target parallel
12979 {
12980 #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?}}
12981 for (int i = 0; i < 10; ++i)
12982 ;
12983 }
12984 #pragma omp target parallel
12985 {
12986 #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?}}
12987 for (int i = 0; i < 10; ++i)
12988 ;
12989 }
12990 #pragma omp target parallel
12991 {
12992 #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?}}
12993 for (int i = 0; i < 10; ++i)
12994 ;
12995 }
12996 #pragma omp target parallel
12997 {
12998 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}
12999 a++;
13000 }
13001 #pragma omp target parallel
13002 {
13003 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}
13004 for (int i = 0; i < 10; ++i)
13005 ;
13006 }
13007 #pragma omp target parallel
13008 {
13009 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}
13010 for (int i = 0; i < 10; ++i)
13011 ;
13012 }
13013 #pragma omp target parallel
13014 {
13015 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}
13016 for (int i = 0; i < 10; ++i)
13017 ;
13018 }
13019 #pragma omp target parallel
13020 {
13021 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}
13022 for (int i = 0; i < 10; ++i)
13023 ;
13024 }
13025
13026 // TARGET PARALLEL FOR DIRECTIVE
13027 #pragma omp target parallel for
13028 for (int i = 0; i < 10; ++i) {
13029 #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?}}
13030 for (int i = 0; i < 10; ++i)
13031 ;
13032 }
13033 #pragma omp target parallel for
13034 for (int i = 0; i < 10; ++i) {
13035 #pragma omp simd
13036 for (int i = 0; i < 10; ++i)
13037 ;
13038 }
13039 #pragma omp target parallel for
13040 for (int i = 0; i < 10; ++i) {
13041 #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?}}
13042 for (int i = 0; i < 10; ++i)
13043 ;
13044 }
13045 #pragma omp target parallel for
13046 for (int i = 0; i < 10; ++i) {
13047 #pragma omp parallel
13048 for (int i = 0; i < 10; ++i)
13049 ;
13050 }
13051 #pragma omp target parallel for
13052 for (int i = 0; i < 10; ++i) {
13053 #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?}}
13054 {
13055 bar();
13056 }
13057 }
13058 #pragma omp target parallel for
13059 for (int i = 0; i < 10; ++i) {
13060 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}
13061 {
13062 bar();
13063 }
13064 }
13065 #pragma omp target parallel for
13066 for (int i = 0; i < 10; ++i) {
13067 #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?}}
13068 {
13069 bar();
13070 }
13071 }
13072
13073 #pragma omp target parallel for
13074 for (int i = 0; i < 10; ++i) {
13075 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13076 {
13077 bar();
13078 }
13079 }
13080
13081 #pragma omp target parallel for
13082 for (int i = 0; i < 10; ++i) {
13083 #pragma omp critical
13084 {
13085 bar();
13086 }
13087 }
13088
13089 #pragma omp target parallel for
13090 for (int i = 0; i < 10; ++i) {
13091 #pragma omp parallel
13092 {
13093 #pragma omp single // OK
13094 {
13095 bar();
13096 }
13097 #pragma omp for // OK
13098 for (int i = 0; i < 10; ++i)
13099 ;
13100 #pragma omp for simd // OK
13101 for (int i = 0; i < 10; ++i)
13102 ;
13103 #pragma omp sections // OK
13104 {
13105 bar();
13106 }
13107 }
13108 }
13109 #pragma omp target parallel for
13110 for (int i = 0; i < 10; ++i) {
13111 #pragma omp parallel for
13112 for (int i = 0; i < 10; ++i)
13113 ;
13114 }
13115 #pragma omp target parallel for
13116 for (int i = 0; i < 10; ++i) {
13117 #pragma omp parallel for simd
13118 for (int i = 0; i < 10; ++i)
13119 ;
13120 }
13121 #pragma omp target parallel for
13122 for (int i = 0; i < 10; ++i) {
13123 #pragma omp parallel sections
13124 {
13125 bar();
13126 }
13127 }
13128 #pragma omp target parallel for
13129 for (int i = 0; i < 10; ++i) {
13130 #pragma omp task
13131 {
13132 bar();
13133 }
13134 }
13135 #pragma omp target parallel for
13136 for (int i = 0; i < 10; ++i) {
13137 #pragma omp taskyield
13138 bar();
13139 }
13140 #pragma omp target parallel for
13141 for (int i = 0; i < 10; ++i) {
13142 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}
13143 bar();
13144 }
13145 #pragma omp target parallel for
13146 for (int i = 0; i < 10; ++i) {
13147 #pragma omp taskwait
13148 bar();
13149 }
13150 #pragma omp target parallel for
13151 for (int i = 0; i < 10; ++i) {
13152 #pragma omp flush
13153 bar();
13154 }
13155 #pragma omp target parallel for
13156 for (int i = 0; i < 10; ++i) {
13157 #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?}}
13158 bar();
13159 }
13160 #pragma omp target parallel for ordered
13161 for (int i = 0; i < 10; ++i) {
13162 #pragma omp ordered // OK
13163 bar();
13164 }
13165 #pragma omp target parallel for
13166 for (int i = 0; i < 10; ++i) {
13167 #pragma omp atomic
13168 ++a;
13169 }
13170 #pragma omp target parallel for
13171 for (int i = 0; i < 10; ++i) {
13172 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}
13173 ++a;
13174 }
13175 #pragma omp target parallel for
13176 for (int i = 0; i < 10; ++i) {
13177 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}
13178 ++a;
13179 }
13180 #pragma omp target parallel for
13181 for (int i = 0; i < 10; ++i) {
13182 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
13183 for (int i = 0; i < 10; ++i)
13184 ;
13185 }
13186 #pragma omp target parallel for
13187 for (int i = 0; i < 10; ++i) {
13188 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13189 ++a;
13190 }
13191 #pragma omp target parallel for
13192 for (int i = 0; i < 10; ++i) {
13193 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13194 ++a;
13195 }
13196 #pragma omp target parallel for
13197 for (int i = 0; i < 10; ++i) {
13198 #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?}}
13199 ++a;
13200 }
13201 #pragma omp target parallel for
13202 for (int i = 0; i < 10; ++i) {
13203 #pragma omp taskloop
13204 for (int i = 0; i < 10; ++i)
13205 ++a;
13206 }
13207 #pragma omp target parallel for
13208 for (int i = 0; i < 10; ++i) {
13209 #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?}}
13210 for (int j = 0; j < 10; ++j)
13211 ;
13212 }
13213 #pragma omp target parallel for
13214 for (int i = 0; i < 10; ++i) {
13215 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}
13216 a++;
13217 }
13218 #pragma omp target parallel for
13219 for (int i = 0; i < 10; ++i) {
13220 #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?}}
13221 for (int j = 0; j < 10; ++j)
13222 ;
13223 }
13224 #pragma omp target parallel for
13225 for (int i = 0; i < 10; ++i) {
13226 #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?}}
13227 for (int j = 0; j < 10; ++j)
13228 ;
13229 }
13230 #pragma omp target parallel for
13231 for (int i = 0; i < 10; ++i) {
13232 #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?}}
13233 for (int j = 0; j < 10; ++j)
13234 ;
13235 }
13236 #pragma omp target parallel for
13237 for (int i = 0; i < 10; ++i) {
13238 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13239 for (int j = 0; j < 10; ++j)
13240 ;
13241 }
13242 #pragma omp target parallel for
13243 for (int i = 0; i < 10; ++i) {
13244 #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?}}
13245 for (int j = 0; j < 10; ++j)
13246 ;
13247 }
13248 #pragma omp target parallel for
13249 for (int i = 0; i < 10; ++i) {
13250 #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?}}
13251 for (int j = 0; j < 10; ++j)
13252 ;
13253 }
13254 #pragma omp target parallel for
13255 for (int i = 0; i < 10; ++i) {
13256 #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?}}
13257 for (int j = 0; j < 10; ++j)
13258 ;
13259 }
13260 #pragma omp target parallel for
13261 for (int i = 0; i < 10; ++i) {
13262 #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?}}
13263 for (int j = 0; j < 10; ++j)
13264 ;
13265 }
13266 #pragma omp target parallel for
13267 for (int i = 0; i < 10; ++i) {
13268 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}
13269 a++;
13270 }
13271 #pragma omp target parallel for
13272 for (int i = 0; i < 10; ++i) {
13273 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}
13274 for (int j = 0; j < 10; ++j)
13275 ;
13276 }
13277 #pragma omp target parallel for
13278 for (int i = 0; i < 10; ++i) {
13279 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}
13280 for (int j = 0; j < 10; ++j)
13281 ;
13282 }
13283 #pragma omp target parallel for
13284 for (int i = 0; i < 10; ++i) {
13285 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13286 for (int j = 0; j < 10; ++j)
13287 ;
13288 }
13289 #pragma omp target parallel for
13290 for (int i = 0; i < 10; ++i) {
13291 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}
13292 for (int j = 0; j < 10; ++j)
13293 ;
13294 }
13295
13296 // TEAMS DIRECTIVE
13297 #pragma omp target
13298 #pragma omp teams
13299 #pragma omp parallel
13300 bar();
13301 #pragma omp target
13302 #pragma omp teams
13303 #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?}}
13304 for (int i = 0; i < 10; ++i)
13305 ;
13306 #pragma omp target
13307 #pragma omp teams
13308 #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?}}
13309 for (int i = 0; i < 10; ++i)
13310 ;
13311 #pragma omp target
13312 #pragma omp teams
13313 #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?}}
13314 for (int i = 0; i < 10; ++i)
13315 ;
13316 #pragma omp target
13317 #pragma omp teams
13318 #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?}}
13319 {
13320 bar();
13321 }
13322 #pragma omp target
13323 #pragma omp teams
13324 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}
13325 {
13326 bar();
13327 }
13328 #pragma omp target
13329 #pragma omp teams
13330 #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?}}
13331 bar();
13332
13333 #pragma omp target
13334 #pragma omp teams
13335 #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?}}
13336 {
13337 bar();
13338 }
13339 #pragma omp target
13340 #pragma omp teams
13341 #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?}}
13342 {
13343 bar();
13344 }
13345 #pragma omp target
13346 #pragma omp teams
13347 #pragma omp parallel for
13348 for (int i = 0; i < 10; ++i)
13349 ;
13350 #pragma omp target
13351 #pragma omp teams
13352 #pragma omp parallel for simd
13353 for (int i = 0; i < 10; ++i)
13354 ;
13355 #pragma omp target
13356 #pragma omp teams
13357 #pragma omp parallel sections
13358 {
13359 bar();
13360 }
13361 #pragma omp target
13362 #pragma omp teams
13363 #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?}}
13364 {
13365 bar();
13366 }
13367 #pragma omp target
13368 #pragma omp teams
13369 {
13370 #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?}}
13371 bar();
13372 }
13373 #pragma omp target
13374 #pragma omp teams
13375 {
13376 #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?}}
13377 bar();
13378 }
13379 #pragma omp target
13380 #pragma omp teams
13381 {
13382 #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?}}
13383 bar();
13384 }
13385 #pragma omp target
13386 #pragma omp teams
13387 {
13388 #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?}}
13389 bar();
13390 }
13391 #pragma omp target
13392 #pragma omp teams
13393 {
13394 #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?}}
13395 bar();
13396 }
13397 #pragma omp target
13398 #pragma omp teams
13399 {
13400 #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?}}
13401 ++a;
13402 }
13403 #pragma omp target
13404 #pragma omp teams
13405 {
13406 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
13407 ++a;
13408 }
13409 #pragma omp target
13410 #pragma omp teams
13411 {
13412 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
13413 ++a;
13414 }
13415 #pragma omp target
13416 #pragma omp teams
13417 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
13418 for (int i = 0; i < 10; ++i)
13419 ;
13420 #pragma omp target
13421 #pragma omp teams
13422 {
13423 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
13424 }
13425 #pragma omp target
13426 #pragma omp teams
13427 {
13428 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
13429 }
13430 #pragma omp target
13431 #pragma omp teams
13432 {
13433 #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?}}
13434 ++a;
13435 }
13436 #pragma omp target
13437 #pragma omp teams
13438 {
13439 #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?}}
13440 for (int i = 0; i < 10; ++i)
13441 ++a;
13442 }
13443 #pragma omp target
13444 #pragma omp teams
13445 #pragma omp distribute
13446 for (int i = 0; i < 10; ++i)
13447 ;
13448 #pragma omp target
13449 #pragma omp teams
13450 #pragma omp distribute
13451 for (int i = 0; i < 10; ++i)
13452 ;
13453 #pragma omp distribute
13454 for (int j = 0; j < 10; ++j)
13455 ;
13456 #pragma omp target
13457 #pragma omp teams
13458 {
13459 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
13460 ++a;
13461 }
13462 #pragma omp target
13463 #pragma omp teams
13464 #pragma omp distribute parallel for
13465 for (int i = 0; i < 10; ++i)
13466 ;
13467 #pragma omp target
13468 #pragma omp teams
13469 {
13470 #pragma omp distribute parallel for
13471 for (int i = 0; i < 10; ++i)
13472 ;
13473 #pragma omp distribute parallel for
13474 for (int j = 0; j < 10; ++j)
13475 ;
13476 }
13477 #pragma omp target
13478 #pragma omp teams
13479 {
13480 #pragma omp distribute parallel for simd
13481 for (int i = 0; i < 10; ++i)
13482 ;
13483 #pragma omp distribute parallel for simd
13484 for (int j = 0; j < 10; ++j)
13485 ;
13486 }
13487 #pragma omp target
13488 #pragma omp teams
13489 {
13490 #pragma omp distribute simd
13491 for (int i = 0; i < 10; ++i)
13492 ;
13493 #pragma omp distribute simd
13494 for (int j = 0; j < 10; ++j)
13495 ;
13496 }
13497 #pragma omp target
13498 #pragma omp teams
13499 {
13500 #pragma omp target simd // expected-error {{region cannot be nested inside '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 // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' 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 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?}}
13515 for (int i = 0; i < 10; ++i)
13516 ;
13517 }
13518 #pragma omp target
13519 #pragma omp teams
13520 {
13521 #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?}}
13522 for (int i = 0; i < 10; ++i)
13523 ;
13524 }
13525 #pragma omp target
13526 #pragma omp teams
13527 {
13528 #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?}}
13529 for (int i = 0; i < 10; ++i)
13530 ;
13531 }
13532 #pragma omp target
13533 #pragma omp teams
13534 {
13535 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
13536 a++;
13537 }
13538 #pragma omp target
13539 #pragma omp teams
13540 {
13541 #pragma omp target teams distribute // 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 parallel for // expected-error {{region cannot be nested inside 'target' region}}
13549 for (int i = 0; i < 10; ++i)
13550 ;
13551 }
13552 #pragma omp target
13553 #pragma omp teams
13554 {
13555 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
13556 for (int i = 0; i < 10; ++i)
13557 ;
13558 }
13559 #pragma omp target
13560 #pragma omp teams
13561 {
13562 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
13563 for (int i = 0; i < 10; ++i)
13564 ;
13565 }
13566
13567 // TASKLOOP DIRECTIVE
13568 #pragma omp taskloop
13569 for (int i = 0; i < 10; ++i) {
13570 #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?}}
13571 for (int i = 0; i < 10; ++i)
13572 ;
13573 }
13574 #pragma omp taskloop
13575 for (int i = 0; i < 10; ++i) {
13576 #pragma omp simd
13577 for (int i = 0; i < 10; ++i)
13578 ;
13579 }
13580 #pragma omp taskloop
13581 for (int i = 0; i < 10; ++i) {
13582 #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?}}
13583 for (int i = 0; i < 10; ++i)
13584 ;
13585 }
13586 #pragma omp taskloop
13587 for (int i = 0; i < 10; ++i) {
13588 #pragma omp parallel
13589 for (int i = 0; i < 10; ++i)
13590 ;
13591 }
13592 #pragma omp taskloop
13593 for (int i = 0; i < 10; ++i) {
13594 #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?}}
13595 {
13596 bar();
13597 }
13598 }
13599 #pragma omp taskloop
13600 for (int i = 0; i < 10; ++i) {
13601 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}
13602 {
13603 bar();
13604 }
13605 }
13606 #pragma omp taskloop
13607 for (int i = 0; i < 10; ++i) {
13608 #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?}}
13609 {
13610 bar();
13611 }
13612 }
13613
13614 #pragma omp taskloop
13615 for (int i = 0; i < 10; ++i) {
13616 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}
13617 {
13618 bar();
13619 }
13620 }
13621 #pragma omp taskloop
13622 for (int i = 0; i < 10; ++i) {
13623 #pragma omp critical
13624 {
13625 bar();
13626 }
13627 }
13628 #pragma omp taskloop
13629 for (int i = 0; i < 10; ++i) {
13630 #pragma omp parallel
13631 {
13632 #pragma omp single // OK
13633 {
13634 bar();
13635 }
13636 #pragma omp for // OK
13637 for (int i = 0; i < 10; ++i)
13638 ;
13639 #pragma omp sections // OK
13640 {
13641 bar();
13642 }
13643 }
13644 }
13645 #pragma omp taskloop
13646 for (int i = 0; i < 10; ++i) {
13647 #pragma omp parallel for
13648 for (int i = 0; i < 10; ++i)
13649 ;
13650 }
13651 #pragma omp taskloop
13652 for (int i = 0; i < 10; ++i) {
13653 #pragma omp parallel for simd
13654 for (int i = 0; i < 10; ++i)
13655 ;
13656 }
13657 #pragma omp taskloop
13658 for (int i = 0; i < 10; ++i) {
13659 #pragma omp parallel sections
13660 {
13661 bar();
13662 }
13663 }
13664 #pragma omp taskloop
13665 for (int i = 0; i < 10; ++i) {
13666 #pragma omp task
13667 {
13668 bar();
13669 }
13670 }
13671 #pragma omp taskloop
13672 for (int i = 0; i < 10; ++i) {
13673 #pragma omp taskyield
13674 bar();
13675 }
13676 #pragma omp taskloop
13677 for (int i = 0; i < 10; ++i) {
13678 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}
13679 bar();
13680 }
13681 #pragma omp taskloop
13682 for (int i = 0; i < 10; ++i) {
13683 #pragma omp taskwait
13684 bar();
13685 }
13686 #pragma omp taskloop
13687 for (int i = 0; i < 10; ++i) {
13688 #pragma omp flush
13689 bar();
13690 }
13691 #pragma omp taskloop
13692 for (int i = 0; i < 10; ++i) {
13693 #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?}}
13694 bar();
13695 }
13696 #pragma omp taskloop
13697 for (int i = 0; i < 10; ++i) {
13698 #pragma omp atomic
13699 ++a;
13700 }
13701 #pragma omp taskloop
13702 for (int i = 0; i < 10; ++i) {
13703 #pragma omp target
13704 ++a;
13705 }
13706 #pragma omp taskloop
13707 for (int i = 0; i < 10; ++i) {
13708 #pragma omp target parallel
13709 ++a;
13710 }
13711 #pragma omp taskloop
13712 for (int i = 0; i < 10; ++i) {
13713 #pragma omp target parallel for
13714 for (int i = 0; i < 10; ++i)
13715 ;
13716 }
13717 #pragma omp taskloop
13718 for (int i = 0; i < 10; ++i) {
13719 #pragma omp target enter data map(to: a)
13720 ++a;
13721 }
13722 #pragma omp taskloop
13723 for (int i = 0; i < 10; ++i) {
13724 #pragma omp target exit data map(from: a)
13725 ++a;
13726 }
13727 #pragma omp taskloop
13728 for (int i = 0; i < 10; ++i) {
13729 #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?}}
13730 ++a;
13731 }
13732 #pragma omp taskloop
13733 for (int i = 0; i < 10; ++i) {
13734 #pragma omp taskloop
13735 for (int i = 0; i < 10; ++i)
13736 ++a;
13737 }
13738 #pragma omp taskloop
13739 for (int i = 0; i < 10; ++i) {
13740 #pragma omp target update to(a)
13741 ++a;
13742 }
13743 #pragma omp taskloop
13744 for (int i = 0; i < 10; ++i) {
13745 #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?}}
13746 for (int i = 0; i < 10; ++i)
13747 ;
13748 }
13749 #pragma omp taskloop
13750 for (int i = 0; i < 10; ++i) {
13751 #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?}}
13752 for (int i = 0; i < 10; ++i)
13753 ;
13754 }
13755 #pragma omp taskloop
13756 for (int i = 0; i < 10; ++i) {
13757 #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?}}
13758 for (int i = 0; i < 10; ++i)
13759 ;
13760 }
13761 #pragma omp taskloop
13762 for (int i = 0; i < 10; ++i) {
13763 #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?}}
13764 for (int i = 0; i < 10; ++i)
13765 ;
13766 }
13767 #pragma omp taskloop
13768 for (int i = 0; i < 10; ++i) {
13769 #pragma omp target simd // OK
13770 for (int i = 0; i < 10; ++i)
13771 ;
13772 }
13773 #pragma omp taskloop
13774 for (int i = 0; i < 10; ++i) {
13775 #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?}}
13776 for (int i = 0; i < 10; ++i)
13777 ;
13778 }
13779 #pragma omp taskloop
13780 for (int i = 0; i < 10; ++i) {
13781 #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?}}
13782 for (int i = 0; i < 10; ++i)
13783 ;
13784 }
13785 #pragma omp taskloop
13786 for (int i = 0; i < 10; ++i) {
13787 #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?}}
13788 for (int i = 0; i < 10; ++i)
13789 ;
13790 }
13791 #pragma omp taskloop
13792 for (int i = 0; i < 10; ++i) {
13793 #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?}}
13794 for (int i = 0; i < 10; ++i)
13795 ;
13796 }
13797 #pragma omp taskloop
13798 for (int i = 0; i < 10; ++i) {
13799 #pragma omp target teams // OK
13800 a++;
13801 }
13802 #pragma omp taskloop
13803 for (int i = 0; i < 10; ++i) {
13804 #pragma omp target teams distribute // OK
13805 for (int i = 0; i < 10; ++i)
13806 ;
13807 }
13808 #pragma omp taskloop
13809 for (int i = 0; i < 10; ++i) {
13810 #pragma omp target teams distribute parallel for // OK
13811 for (int i = 0; i < 10; ++i)
13812 ;
13813 }
13814 #pragma omp taskloop
13815 for (int i = 0; i < 10; ++i) {
13816 #pragma omp target teams distribute parallel for simd // OK
13817 for (int i = 0; i < 10; ++i)
13818 ;
13819 }
13820 #pragma omp taskloop
13821 for (int i = 0; i < 10; ++i) {
13822 #pragma omp target teams distribute simd // OK
13823 for (int i = 0; i < 10; ++i)
13824 ;
13825 }
13826
13827 // DISTRIBUTE DIRECTIVE
13828 #pragma omp target
13829 #pragma omp teams
13830 #pragma omp distribute
13831 for (int i = 0; i < 10; ++i) {
13832 #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?}}
13833 for (int i = 0; i < 10; ++i)
13834 ;
13835 }
13836 #pragma omp target
13837 #pragma omp teams
13838 #pragma omp distribute
13839 for (int i = 0; i < 10; ++i) {
13840 #pragma omp for
13841 for (int i = 0; i < 10; ++i)
13842 ;
13843 }
13844 #pragma omp target
13845 #pragma omp teams
13846 #pragma omp distribute
13847 for (int i = 0; i < 10; ++i) {
13848 #pragma omp simd
13849 for (int i = 0; i < 10; ++i)
13850 ;
13851 }
13852 #pragma omp target
13853 #pragma omp teams
13854 #pragma omp distribute
13855 for (int i = 0; i < 10; ++i) {
13856 #pragma omp for simd
13857 for (int i = 0; i < 10; ++i)
13858 ;
13859 }
13860 #pragma omp target
13861 #pragma omp teams
13862 #pragma omp distribute
13863 for (int i = 0; i < 10; ++i) {
13864 #pragma omp parallel
13865 for (int i = 0; i < 10; ++i)
13866 ;
13867 }
13868 #pragma omp target
13869 #pragma omp teams
13870 #pragma omp distribute
13871 for (int i = 0; i < 10; ++i) {
13872 #pragma omp sections
13873 {
13874 bar();
13875 }
13876 }
13877 #pragma omp target
13878 #pragma omp teams
13879 #pragma omp distribute
13880 for (int i = 0; i < 10; ++i) {
13881 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}
13882 {
13883 bar();
13884 }
13885 }
13886 #pragma omp target
13887 #pragma omp teams
13888 #pragma omp distribute
13889 for (int i = 0; i < 10; ++i) {
13890 #pragma omp single
13891 {
13892 bar();
13893 }
13894 }
13895 #pragma omp target
13896 #pragma omp teams
13897 #pragma omp distribute
13898 for (int i = 0; i < 10; ++i) {
13899 #pragma omp master
13900 {
13901 bar();
13902 }
13903 }
13904 #pragma omp target
13905 #pragma omp teams
13906 #pragma omp distribute
13907 for (int i = 0; i < 10; ++i) {
13908 #pragma omp critical
13909 {
13910 bar();
13911 }
13912 }
13913 #pragma omp target
13914 #pragma omp teams
13915 #pragma omp distribute
13916 for (int i = 0; i < 10; ++i) {
13917 #pragma omp parallel
13918 {
13919 #pragma omp single
13920 {
13921 bar();
13922 }
13923 }
13924 }
13925 #pragma omp target
13926 #pragma omp teams
13927 #pragma omp distribute
13928 for (int i = 0; i < 10; ++i) {
13929 #pragma omp parallel for
13930 for (int i = 0; i < 10; ++i)
13931 ;
13932 }
13933 #pragma omp target
13934 #pragma omp teams
13935 #pragma omp distribute
13936 for (int i = 0; i < 10; ++i) {
13937 #pragma omp parallel for simd
13938 for (int i = 0; i < 10; ++i)
13939 ;
13940 }
13941 #pragma omp target
13942 #pragma omp teams
13943 #pragma omp distribute
13944 for (int i = 0; i < 10; ++i) {
13945 #pragma omp parallel sections
13946 {
13947 bar();
13948 }
13949 }
13950 #pragma omp target
13951 #pragma omp teams
13952 #pragma omp distribute
13953 for (int i = 0; i < 10; ++i) {
13954 #pragma omp task
13955 {
13956 bar();
13957 }
13958 }
13959 #pragma omp target
13960 #pragma omp teams
13961 #pragma omp distribute
13962 for (int i = 0; i < 10; ++i) {
13963 #pragma omp taskyield
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 barrier
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 taskwait
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 flush
13985 bar();
13986 }
13987 #pragma omp target
13988 #pragma omp teams
13989 #pragma omp distribute
13990 for (int i = 0; i < 10; ++i) {
13991 #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?}}
13992 bar();
13993 }
13994 #pragma omp target
13995 #pragma omp teams
13996 #pragma omp distribute
13997 for (int i = 0; i < 10; ++i) {
13998 #pragma omp atomic
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 // expected-error {{region cannot be nested inside 'target' region}}
14006 ++a;
14007 }
14008 #pragma omp target
14009 #pragma omp teams
14010 #pragma omp distribute
14011 for (int i = 0; i < 10; ++i) {
14012 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
14013 ++a;
14014 }
14015 #pragma omp target
14016 #pragma omp teams
14017 #pragma omp distribute
14018 for (int i = 0; i < 10; ++i) {
14019 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14020 for (int i = 0; i < 10; ++i)
14021 ;
14022 }
14023 #pragma omp target
14024 #pragma omp teams
14025 #pragma omp distribute
14026 for (int i = 0; i < 10; ++i) {
14027 #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?}}
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 enter data map(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 target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
14042 ++a;
14043 }
14044 #pragma omp target
14045 #pragma omp teams
14046 #pragma omp distribute
14047 for (int i = 0; i < 10; ++i) {
14048 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
14049 ++a;
14050 }
14051 #pragma omp target
14052 #pragma omp teams
14053 #pragma omp distribute
14054 for (int i = 0; i < 10; ++i) {
14055 #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?}}
14056 for (int i = 0; i < 10; ++i)
14057 ++a;
14058 }
14059 #pragma omp target
14060 #pragma omp teams
14061 #pragma omp distribute
14062 for (int i = 0; i < 10; ++i) {
14063 #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?}}
14064 for (int i = 0; i < 10; ++i)
14065 ++a;
14066 }
14067 #pragma omp target
14068 #pragma omp teams
14069 #pragma omp distribute
14070 for (int i = 0; i < 10; ++i) {
14071 #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?}}
14072 for (int i = 0; i < 10; ++i)
14073 ++a;
14074 }
14075 #pragma omp target
14076 #pragma omp teams
14077 #pragma omp distribute
14078 for (int i = 0; i < 10; ++i) {
14079 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
14080 for (int i = 0; i < 10; ++i)
14081 ++a;
14082 }
14083 #pragma omp target
14084 #pragma omp teams
14085 #pragma omp distribute
14086 for (int i = 0; i < 10; ++i) {
14087 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14088 for (int i = 0; i < 10; ++i)
14089 ++a;
14090 }
14091 #pragma omp target
14092 #pragma omp teams
14093 #pragma omp distribute
14094 for (int i = 0; i < 10; ++i) {
14095 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14096 for (int i = 0; i < 10; ++i)
14097 ++a;
14098 }
14099 #pragma omp target
14100 #pragma omp teams
14101 #pragma omp distribute
14102 for (int i = 0; i < 10; ++i) {
14103 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
14104 for (int i = 0; i < 10; ++i)
14105 ++a;
14106 }
14107 #pragma omp target
14108 #pragma omp teams
14109 #pragma omp distribute
14110 for (int i = 0; i < 10; ++i) {
14111 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
14112 for (int i = 0; i < 10; ++i)
14113 ++a;
14114 }
14115 #pragma omp target
14116 #pragma omp teams
14117 #pragma omp distribute
14118 for (int i = 0; i < 10; ++i) {
14119 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
14120 for (int i = 0; i < 10; ++i)
14121 ++a;
14122 }
14123 #pragma omp target
14124 #pragma omp teams
14125 #pragma omp distribute
14126 for (int i = 0; i < 10; ++i) {
14127 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14128 for (int i = 0; i < 10; ++i)
14129 ++a;
14130 }
14131 #pragma omp target
14132 #pragma omp teams
14133 #pragma omp distribute
14134 for (int i = 0; i < 10; ++i) {
14135 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
14136 for (int i = 0; i < 10; ++i)
14137 ++a;
14138 }
14139
14140 // DISTRIBUTE PARALLEL FOR DIRECTIVE
14141 #pragma omp target
14142 #pragma omp teams
14143 #pragma omp distribute parallel for
14144 for (int i = 0; i < 10; ++i) {
14145 #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?}}
14146 for (int i = 0; i < 10; ++i)
14147 ;
14148 }
14149
14150 #pragma omp target
14151 #pragma omp teams
14152 #pragma omp distribute parallel for
14153 for (int i = 0; i < 10; ++i) {
14154 #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?}}
14155 for (int i = 0; i < 10; ++i)
14156 ;
14157 }
14158 #pragma omp target
14159 #pragma omp teams
14160 #pragma omp distribute parallel for
14161 for (int i = 0; i < 10; ++i) {
14162 #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?}}
14163 for (int i = 0; i < 10; ++i)
14164 ;
14165 }
14166 #pragma omp target
14167 #pragma omp teams
14168 #pragma omp distribute parallel for
14169 for (int i = 0; i < 10; ++i) {
14170 #pragma omp simd
14171 for (int i = 0; i < 10; ++i)
14172 ;
14173 }
14174 #pragma omp target
14175 #pragma omp teams
14176 #pragma omp distribute parallel for
14177 for (int i = 0; i < 10; ++i) {
14178 #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?}}
14179 for (int i = 0; i < 10; ++i)
14180 ;
14181 }
14182 #pragma omp target
14183 #pragma omp teams
14184 #pragma omp distribute parallel for
14185 for (int i = 0; i < 10; ++i) {
14186 #pragma omp parallel
14187 for (int i = 0; i < 10; ++i)
14188 ;
14189 }
14190 #pragma omp target
14191 #pragma omp teams
14192 #pragma omp distribute parallel for
14193 for (int i = 0; i < 10; ++i) {
14194 #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?}}
14195 {
14196 bar();
14197 }
14198 }
14199 #pragma omp target
14200 #pragma omp teams
14201 #pragma omp distribute parallel for
14202 for (int i = 0; i < 10; ++i) {
14203 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}
14204 {
14205 bar();
14206 }
14207 }
14208 #pragma omp target
14209 #pragma omp teams
14210 #pragma omp distribute parallel for
14211 for (int i = 0; i < 10; ++i) {
14212 #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?}}
14213 {
14214 bar();
14215 }
14216 }
14217 #pragma omp target
14218 #pragma omp teams
14219 #pragma omp distribute parallel for
14220 for (int i = 0; i < 10; ++i) {
14221 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
14222 {
14223 bar();
14224 }
14225 }
14226 #pragma omp target
14227 #pragma omp teams
14228 #pragma omp distribute parallel for
14229 for (int i = 0; i < 10; ++i) {
14230 #pragma omp critical
14231 {
14232 bar();
14233 }
14234 }
14235 #pragma omp target
14236 #pragma omp teams
14237 #pragma omp distribute parallel for
14238 for (int i = 0; i < 10; ++i) {
14239 #pragma omp parallel
14240 {
14241 #pragma omp single
14242 {
14243 bar();
14244 }
14245 }
14246 }
14247 #pragma omp target
14248 #pragma omp teams
14249 #pragma omp distribute parallel for
14250 for (int i = 0; i < 10; ++i) {
14251 #pragma omp parallel for
14252 for (int i = 0; i < 10; ++i)
14253 ;
14254 }
14255 #pragma omp target
14256 #pragma omp teams
14257 #pragma omp distribute parallel for
14258 for (int i = 0; i < 10; ++i) {
14259 #pragma omp parallel for simd
14260 for (int i = 0; i < 10; ++i)
14261 ;
14262 }
14263 #pragma omp target
14264 #pragma omp teams
14265 #pragma omp distribute parallel for
14266 for (int i = 0; i < 10; ++i) {
14267 #pragma omp parallel sections
14268 {
14269 bar();
14270 }
14271 }
14272 #pragma omp target
14273 #pragma omp teams
14274 #pragma omp distribute parallel for
14275 for (int i = 0; i < 10; ++i) {
14276 #pragma omp task
14277 {
14278 bar();
14279 }
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 taskyield
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 barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}
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 taskwait
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 flush
14307 bar();
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 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?}}
14314 bar();
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 atomic
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 // expected-error {{region cannot be nested inside 'target' region}}
14328 ++a;
14329 }
14330 #pragma omp target
14331 #pragma omp teams
14332 #pragma omp distribute parallel for
14333 for (int i = 0; i < 10; ++i) {
14334 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
14335 ++a;
14336 }
14337 #pragma omp target
14338 #pragma omp teams
14339 #pragma omp distribute parallel for
14340 for (int i = 0; i < 10; ++i) {
14341 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
14342 for (int i = 0; i < 10; ++i)
14343 ;
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 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?}}
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 enter data map(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 target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
14364 ++a;
14365 }
14366 #pragma omp target
14367 #pragma omp teams
14368 #pragma omp distribute parallel for
14369 for (int i = 0; i < 10; ++i) {
14370 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
14371 ++a;
14372 }
14373 #pragma omp target
14374 #pragma omp teams
14375 #pragma omp distribute parallel for
14376 for (int i = 0; i < 10; ++i) {
14377 #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?}}
14378 for (int i = 0; i < 10; ++i)
14379 ++a;
14380 }
14381 #pragma omp target
14382 #pragma omp teams
14383 #pragma omp distribute parallel for
14384 for (int i = 0; i < 10; ++i) {
14385 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}
14386 for (int i = 0; i < 10; ++i)
14387 ++a;
14388 }
14389 #pragma omp target
14390 #pragma omp teams
14391 #pragma omp distribute parallel for
14392 for (int i = 0; i < 10; ++i) {
14393 #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?}}
14394 for (int i = 0; i < 10; ++i)
14395 ++a;
14396 }
14397 #pragma omp target
14398 #pragma omp teams
14399 #pragma omp distribute parallel for
14400 for (int i = 0; i < 10; ++i) {
14401 #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?}}
14402 for (int i = 0; i < 10; ++i)
14403 ++a;
14404 }
14405 #pragma omp target
14406 #pragma omp teams
14407 #pragma omp distribute parallel for
14408 for (int i = 0; i < 10; ++i) {
14409 #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?}}
14410 for (int i = 0; i < 10; ++i)
14411 ++a;
14412 }
14413 #pragma omp target
14414 #pragma omp teams
14415 #pragma omp distribute parallel for
14416 for (int i = 0; i < 10; ++i) {
14417 #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?}}
14418 for (int i = 0; i < 10; ++i)
14419 ++a;
14420 }
14421 #pragma omp target
14422 #pragma omp teams
14423 #pragma omp distribute parallel for
14424 for (int i = 0; i < 10; ++i) {
14425 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
14426 ++a;
14427 }
14428 #pragma omp target
14429 #pragma omp teams
14430 #pragma omp distribute parallel for
14431 for (int i = 0; i < 10; ++i) {
14432 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}
14433 for (int i = 0; i < 10; ++i)
14434 ++a;
14435 }
14436 #pragma omp target
14437 #pragma omp teams
14438 #pragma omp distribute parallel for
14439 for (int i = 0; i < 10; ++i) {
14440 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}
14441 for (int i = 0; i < 10; ++i)
14442 ++a;
14443 }
14444 #pragma omp target
14445 #pragma omp teams
14446 #pragma omp distribute parallel for
14447 for (int i = 0; i < 10; ++i) {
14448 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
14449 for (int i = 0; i < 10; ++i)
14450 ++a;
14451 }
14452 #pragma omp target
14453 #pragma omp teams
14454 #pragma omp distribute parallel for
14455 for (int i = 0; i < 10; ++i) {
14456 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
14457 for (int i = 0; i < 10; ++i)
14458 ++a;
14459 }
14460
14461 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
14462 #pragma omp target
14463 #pragma omp teams
14464 #pragma omp distribute parallel for simd
14465 for (int i = 0; i < 10; ++i) {
14466 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14467 for (int i = 0; i < 10; ++i)
14468 ;
14469 }
14470 #pragma omp target
14471 #pragma omp teams
14472 #pragma omp distribute parallel for simd
14473 for (int i = 0; i < 10; ++i) {
14474 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14475 for (int i = 0; i < 10; ++i)
14476 ;
14477 }
14478 #pragma omp target
14479 #pragma omp teams
14480 #pragma omp distribute parallel for simd
14481 for (int i = 0; i < 10; ++i) {
14482 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14483 for (int i = 0; i < 10; ++i)
14484 ;
14485 }
14486 #pragma omp target
14487 #pragma omp teams
14488 #pragma omp distribute parallel for simd
14489 for (int i = 0; i < 10; ++i) {
14490 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
14491 for (int i = 0; i < 10; ++i)
14492 ;
14493 }
14494 #pragma omp target
14495 #pragma omp teams
14496 #pragma omp distribute parallel for simd
14497 for (int i = 0; i < 10; ++i) {
14498 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14499 for (int i = 0; i < 10; ++i)
14500 ;
14501 }
14502 #pragma omp target
14503 #pragma omp teams
14504 #pragma omp distribute parallel for simd
14505 for (int i = 0; i < 10; ++i) {
14506 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14507 for (int i = 0; i < 10; ++i)
14508 ;
14509 }
14510 #pragma omp target
14511 #pragma omp teams
14512 #pragma omp distribute parallel for simd
14513 for (int i = 0; i < 10; ++i) {
14514 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14515 {
14516 bar();
14517 }
14518 }
14519 #pragma omp target
14520 #pragma omp teams
14521 #pragma omp distribute parallel for simd
14522 for (int i = 0; i < 10; ++i) {
14523 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14524 {
14525 bar();
14526 }
14527 }
14528 #pragma omp target
14529 #pragma omp teams
14530 #pragma omp distribute parallel for simd
14531 for (int i = 0; i < 10; ++i) {
14532 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14533 {
14534 bar();
14535 }
14536 }
14537 #pragma omp target
14538 #pragma omp teams
14539 #pragma omp distribute parallel for simd
14540 for (int i = 0; i < 10; ++i) {
14541 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14542 {
14543 bar();
14544 }
14545 }
14546 #pragma omp target
14547 #pragma omp teams
14548 #pragma omp distribute parallel for simd
14549 for (int i = 0; i < 10; ++i) {
14550 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14551 {
14552 bar();
14553 }
14554 }
14555 #pragma omp target
14556 #pragma omp teams
14557 #pragma omp distribute parallel for simd
14558 for (int i = 0; i < 10; ++i) {
14559 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14560 {
14561 #pragma omp single
14562 {
14563 bar();
14564 }
14565 }
14566 }
14567 #pragma omp target
14568 #pragma omp teams
14569 #pragma omp distribute parallel for simd
14570 for (int i = 0; i < 10; ++i) {
14571 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14572 for (int i = 0; i < 10; ++i)
14573 ;
14574 }
14575 #pragma omp target
14576 #pragma omp teams
14577 #pragma omp distribute parallel for simd
14578 for (int i = 0; i < 10; ++i) {
14579 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14580 for (int i = 0; i < 10; ++i)
14581 ;
14582 }
14583 #pragma omp target
14584 #pragma omp teams
14585 #pragma omp distribute parallel for simd
14586 for (int i = 0; i < 10; ++i) {
14587 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14588 {
14589 bar();
14590 }
14591 }
14592 #pragma omp target
14593 #pragma omp teams
14594 #pragma omp distribute parallel for simd
14595 for (int i = 0; i < 10; ++i) {
14596 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14597 {
14598 bar();
14599 }
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 taskyield // 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 barrier // 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 taskwait // 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 flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14627 bar();
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 ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14634 bar();
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 atomic // 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 target // 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 parallel // 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 teams // 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 enter data map(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 target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14676 ++a;
14677 }
14678 #pragma omp target
14679 #pragma omp teams
14680 #pragma omp distribute parallel for simd
14681 for (int i = 0; i < 10; ++i) {
14682 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14683 ++a;
14684 }
14685 #pragma omp target
14686 #pragma omp teams
14687 #pragma omp distribute parallel for simd
14688 for (int i = 0; i < 10; ++i) {
14689 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14690 for (int i = 0; i < 10; ++i)
14691 ;
14692 }
14693 #pragma omp target
14694 #pragma omp teams
14695 #pragma omp distribute parallel for simd
14696 for (int i = 0; i < 10; ++i) {
14697 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14698 for (int i = 0; i < 10; ++i)
14699 ;
14700 }
14701 #pragma omp target
14702 #pragma omp teams
14703 #pragma omp distribute parallel for simd
14704 for (int i = 0; i < 10; ++i) {
14705 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14706 for (int i = 0; i < 10; ++i)
14707 ;
14708 }
14709 #pragma omp target
14710 #pragma omp teams
14711 #pragma omp distribute parallel for simd
14712 for (int i = 0; i < 10; ++i) {
14713 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14714 for (int i = 0; i < 10; ++i)
14715 ;
14716 }
14717 #pragma omp target
14718 #pragma omp teams
14719 #pragma omp distribute parallel for simd
14720 for (int i = 0; i < 10; ++i) {
14721 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14722 for (int i = 0; i < 10; ++i)
14723 ;
14724 }
14725 #pragma omp target
14726 #pragma omp teams
14727 #pragma omp distribute parallel for simd
14728 for (int i = 0; i < 10; ++i) {
14729 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14730 for (int i = 0; i < 10; ++i)
14731 ;
14732 }
14733 #pragma omp target
14734 #pragma omp teams
14735 #pragma omp distribute parallel for simd
14736 for (int i = 0; i < 10; ++i) {
14737 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14738 a++;
14739 }
14740 #pragma omp target
14741 #pragma omp teams
14742 #pragma omp distribute parallel for simd
14743 for (int i = 0; i < 10; ++i) {
14744 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14745 for (int i = 0; i < 10; ++i)
14746 ;
14747 }
14748 #pragma omp target
14749 #pragma omp teams
14750 #pragma omp distribute parallel for simd
14751 for (int i = 0; i < 10; ++i) {
14752 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14753 for (int i = 0; i < 10; ++i)
14754 ;
14755 }
14756 #pragma omp target
14757 #pragma omp teams
14758 #pragma omp distribute parallel for simd
14759 for (int i = 0; i < 10; ++i) {
14760 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14761 for (int i = 0; i < 10; ++i)
14762 ;
14763 }
14764 #pragma omp target
14765 #pragma omp teams
14766 #pragma omp distribute parallel for simd
14767 for (int i = 0; i < 10; ++i) {
14768 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14769 for (int i = 0; i < 10; ++i)
14770 ;
14771 }
14772
14773 // DISTRIBUTE SIMD DIRECTIVE
14774 #pragma omp target
14775 #pragma omp teams
14776 #pragma omp distribute simd
14777 for (int i = 0; i < 10; ++i) {
14778 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14779 for (int i = 0; i < 10; ++i)
14780 ;
14781 }
14782 #pragma omp target
14783 #pragma omp teams
14784 #pragma omp distribute simd
14785 for (int i = 0; i < 10; ++i) {
14786 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14787 for (int i = 0; i < 10; ++i)
14788 ;
14789 }
14790 #pragma omp target
14791 #pragma omp teams
14792 #pragma omp distribute simd
14793 for (int i = 0; i < 10; ++i) {
14794 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14795 for (int i = 0; i < 10; ++i)
14796 ;
14797 }
14798 #pragma omp target
14799 #pragma omp teams
14800 #pragma omp distribute simd
14801 for (int i = 0; i < 10; ++i) {
14802 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
14803 for (int i = 0; i < 10; ++i)
14804 ;
14805 }
14806 #pragma omp target
14807 #pragma omp teams
14808 #pragma omp distribute simd
14809 for (int i = 0; i < 10; ++i) {
14810 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14811 for (int i = 0; i < 10; ++i)
14812 ;
14813 }
14814 #pragma omp target
14815 #pragma omp teams
14816 #pragma omp distribute simd
14817 for (int i = 0; i < 10; ++i) {
14818 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14819 for (int i = 0; i < 10; ++i)
14820 ;
14821 }
14822 #pragma omp target
14823 #pragma omp teams
14824 #pragma omp distribute simd
14825 for (int i = 0; i < 10; ++i) {
14826 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14827 {
14828 bar();
14829 }
14830 }
14831 #pragma omp target
14832 #pragma omp teams
14833 #pragma omp distribute simd
14834 for (int i = 0; i < 10; ++i) {
14835 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14836 {
14837 bar();
14838 }
14839 }
14840 #pragma omp target
14841 #pragma omp teams
14842 #pragma omp distribute simd
14843 for (int i = 0; i < 10; ++i) {
14844 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14845 {
14846 bar();
14847 }
14848 }
14849 #pragma omp target
14850 #pragma omp teams
14851 #pragma omp distribute simd
14852 for (int i = 0; i < 10; ++i) {
14853 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14854 {
14855 bar();
14856 }
14857 }
14858 #pragma omp target
14859 #pragma omp teams
14860 #pragma omp distribute simd
14861 for (int i = 0; i < 10; ++i) {
14862 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14863 {
14864 bar();
14865 }
14866 }
14867 #pragma omp target
14868 #pragma omp teams
14869 #pragma omp distribute simd
14870 for (int i = 0; i < 10; ++i) {
14871 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14872 {
14873 #pragma omp single
14874 {
14875 bar();
14876 }
14877 }
14878 }
14879 #pragma omp target
14880 #pragma omp teams
14881 #pragma omp distribute simd
14882 for (int i = 0; i < 10; ++i) {
14883 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14884 for (int i = 0; i < 10; ++i)
14885 ;
14886 }
14887 #pragma omp target
14888 #pragma omp teams
14889 #pragma omp distribute simd
14890 for (int i = 0; i < 10; ++i) {
14891 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14892 for (int i = 0; i < 10; ++i)
14893 ;
14894 }
14895 #pragma omp target
14896 #pragma omp teams
14897 #pragma omp distribute simd
14898 for (int i = 0; i < 10; ++i) {
14899 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14900 {
14901 bar();
14902 }
14903 }
14904 #pragma omp target
14905 #pragma omp teams
14906 #pragma omp distribute simd
14907 for (int i = 0; i < 10; ++i) {
14908 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14909 {
14910 bar();
14911 }
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 taskyield // 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 barrier // 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 taskwait // 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 flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14939 bar();
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 ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14946 bar();
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 atomic // 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 target // 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 parallel // 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 teams // 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 enter data map(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 target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14988 ++a;
14989 }
14990 #pragma omp target
14991 #pragma omp teams
14992 #pragma omp distribute simd
14993 for (int i = 0; i < 10; ++i) {
14994 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
14995 ++a;
14996 }
14997 #pragma omp target
14998 #pragma omp teams
14999 #pragma omp distribute simd
15000 for (int i = 0; i < 10; ++i) {
15001 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15002 for (int i = 0; i < 10; ++i)
15003 ;
15004 }
15005 #pragma omp target
15006 #pragma omp teams
15007 #pragma omp distribute simd
15008 for (int i = 0; i < 10; ++i) {
15009 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15010 for (int i = 0; i < 10; ++i)
15011 ;
15012 }
15013 #pragma omp target
15014 #pragma omp teams
15015 #pragma omp distribute simd
15016 for (int i = 0; i < 10; ++i) {
15017 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15018 for (int i = 0; i < 10; ++i)
15019 ;
15020 }
15021 #pragma omp target
15022 #pragma omp teams
15023 #pragma omp distribute simd
15024 for (int i = 0; i < 10; ++i) {
15025 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15026 for (int i = 0; i < 10; ++i)
15027 ;
15028 }
15029 #pragma omp target
15030 #pragma omp teams
15031 #pragma omp distribute simd
15032 for (int i = 0; i < 10; ++i) {
15033 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15034 for (int i = 0; i < 10; ++i)
15035 ;
15036 }
15037 #pragma omp target
15038 #pragma omp teams
15039 #pragma omp distribute simd
15040 for (int i = 0; i < 10; ++i) {
15041 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15042 for (int i = 0; i < 10; ++i)
15043 ;
15044 }
15045 #pragma omp target
15046 #pragma omp teams
15047 #pragma omp distribute simd
15048 for (int i = 0; i < 10; ++i) {
15049 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15050 a++;
15051 }
15052 #pragma omp target
15053 #pragma omp teams
15054 #pragma omp distribute simd
15055 for (int i = 0; i < 10; ++i) {
15056 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15057 for (int i = 0; i < 10; ++i)
15058 ;
15059 }
15060 #pragma omp target
15061 #pragma omp teams
15062 #pragma omp distribute simd
15063 for (int i = 0; i < 10; ++i) {
15064 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15065 for (int i = 0; i < 10; ++i)
15066 ;
15067 }
15068 #pragma omp target
15069 #pragma omp teams
15070 #pragma omp distribute simd
15071 for (int i = 0; i < 10; ++i) {
15072 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15073 for (int i = 0; i < 10; ++i)
15074 ;
15075 }
15076 #pragma omp target
15077 #pragma omp teams
15078 #pragma omp distribute simd
15079 for (int i = 0; i < 10; ++i) {
15080 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15081 for (int i = 0; i < 10; ++i)
15082 ;
15083 }
15084
15085 // TARGET SIMD DIRECTIVE
15086 #pragma omp target simd
15087 for (int i = 0; i < 10; ++i) {
15088 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15089 for (int i = 0; i < 10; ++i)
15090 ;
15091 }
15092 #pragma omp target simd
15093 for (int i = 0; i < 10; ++i) {
15094 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15095 for (int i = 0; i < 10; ++i)
15096 ;
15097 }
15098 #pragma omp target simd
15099 for (int i = 0; i < 10; ++i) {
15100 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15101 for (int i = 0; i < 10; ++i)
15102 ;
15103 }
15104 #pragma omp target simd
15105 for (int i = 0; i < 10; ++i) {
15106 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
15107 for (int i = 0; i < 10; ++i)
15108 ;
15109 }
15110 #pragma omp target simd
15111 for (int i = 0; i < 10; ++i) {
15112 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15113 for (int i = 0; i < 10; ++i)
15114 ;
15115 }
15116 #pragma omp target simd
15117 for (int i = 0; i < 10; ++i) {
15118 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15119 for (int i = 0; i < 10; ++i)
15120 ;
15121 }
15122 #pragma omp target simd
15123 for (int i = 0; i < 10; ++i) {
15124 #pragma omp sections // 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 section // 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 single // 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 master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15146 {
15147 bar();
15148 }
15149 }
15150 #pragma omp target simd
15151 for (int i = 0; i < 10; ++i) {
15152 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15153 {
15154 bar();
15155 }
15156 }
15157 #pragma omp target simd
15158 for (int i = 0; i < 10; ++i) {
15159 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15160 {
15161 #pragma omp single
15162 {
15163 bar();
15164 }
15165 }
15166 }
15167 #pragma omp target simd
15168 for (int i = 0; i < 10; ++i) {
15169 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15170 for (int i = 0; i < 10; ++i)
15171 ;
15172 }
15173 #pragma omp target simd
15174 for (int i = 0; i < 10; ++i) {
15175 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15176 for (int i = 0; i < 10; ++i)
15177 ;
15178 }
15179 #pragma omp target simd
15180 for (int i = 0; i < 10; ++i) {
15181 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15182 {
15183 bar();
15184 }
15185 }
15186 #pragma omp target simd
15187 for (int i = 0; i < 10; ++i) {
15188 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15189 {
15190 bar();
15191 }
15192 }
15193 #pragma omp target simd
15194 for (int i = 0; i < 10; ++i) {
15195 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15196 bar();
15197 }
15198 #pragma omp target simd
15199 for (int i = 0; i < 10; ++i) {
15200 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15201 bar();
15202 }
15203 #pragma omp target simd
15204 for (int i = 0; i < 10; ++i) {
15205 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15206 bar();
15207 }
15208 #pragma omp target simd
15209 for (int i = 0; i < 10; ++i) {
15210 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15211 bar();
15212 }
15213 #pragma omp target simd
15214 for (int i = 0; i < 10; ++i) {
15215 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15216 bar();
15217 }
15218 #pragma omp target simd
15219 for (int i = 0; i < 10; ++i) {
15220 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15221 ++a;
15222 }
15223 #pragma omp target simd
15224 for (int i = 0; i < 10; ++i) {
15225 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15226 ++a;
15227 }
15228 #pragma omp target simd
15229 for (int i = 0; i < 10; ++i) {
15230 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15231 ++a;
15232 }
15233 #pragma omp target simd
15234 for (int i = 0; i < 10; ++i) {
15235 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15236 ++a;
15237 }
15238 #pragma omp target simd
15239 for (int i = 0; i < 10; ++i) {
15240 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15241 ++a;
15242 }
15243 #pragma omp target simd
15244 for (int i = 0; i < 10; ++i) {
15245 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15246 ++a;
15247 }
15248 #pragma omp target simd
15249 for (int i = 0; i < 10; ++i) {
15250 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15251 ++a;
15252 }
15253 #pragma omp target simd
15254 for (int i = 0; i < 10; ++i) {
15255 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15256 for (int i = 0; i < 10; ++i)
15257 ;
15258 }
15259 #pragma omp target simd
15260 for (int i = 0; i < 10; ++i) {
15261 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15262 for (int i = 0; i < 10; ++i)
15263 ;
15264 }
15265 #pragma omp target simd
15266 for (int i = 0; i < 10; ++i) {
15267 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15268 for (int i = 0; i < 10; ++i)
15269 ;
15270 }
15271 #pragma omp target simd
15272 for (int i = 0; i < 10; ++i) {
15273 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15274 for (int i = 0; i < 10; ++i)
15275 ;
15276 }
15277 #pragma omp target simd
15278 for (int i = 0; i < 10; ++i) {
15279 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15280 for (int i = 0; i < 10; ++i)
15281 ;
15282 }
15283 #pragma omp target simd
15284 for (int i = 0; i < 10; ++i) {
15285 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15286 for (int i = 0; i < 10; ++i)
15287 ;
15288 }
15289 #pragma omp target simd
15290 for (int i = 0; i < 10; ++i) {
15291 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15292 a++;
15293 }
15294 #pragma omp target simd
15295 for (int i = 0; i < 10; ++i) {
15296 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15297 for (int i = 0; i < 10; ++i)
15298 ;
15299 }
15300 #pragma omp target simd
15301 for (int i = 0; i < 10; ++i) {
15302 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15303 for (int i = 0; i < 10; ++i)
15304 ;
15305 }
15306 #pragma omp target simd
15307 for (int i = 0; i < 10; ++i) {
15308 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15309 for (int i = 0; i < 10; ++i)
15310 ;
15311 }
15312 #pragma omp target simd
15313 for (int i = 0; i < 10; ++i) {
15314 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15315 for (int i = 0; i < 10; ++i)
15316 ;
15317 }
15318
15319 // TEAMS DISTRIBUTE DIRECTIVE
15320 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}
15321 for (int i = 0; i < 10; ++i)
15322 ;
15323 #pragma omp target
15324 #pragma omp teams distribute
15325 for (int i = 0; i < 10; ++i) {
15326 #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?}}
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 distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
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 // 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 simd // 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 for simd // OK
15355 for (int i = 0; i < 10; ++i)
15356 ;
15357 }
15358 #pragma omp target
15359 #pragma omp teams distribute
15360 for (int i = 0; i < 10; ++i) {
15361 #pragma omp parallel // OK
15362 for (int i = 0; i < 10; ++i)
15363 ;
15364 }
15365 #pragma omp target
15366 #pragma omp teams distribute
15367 for (int i = 0; i < 10; ++i) {
15368 #pragma omp sections // OK
15369 {
15370 bar();
15371 }
15372 }
15373 #pragma omp target
15374 #pragma omp teams distribute
15375 for (int i = 0; i < 10; ++i) {
15376 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}
15377 {
15378 bar();
15379 }
15380 }
15381 #pragma omp target
15382 #pragma omp teams distribute
15383 for (int i = 0; i < 10; ++i) {
15384 #pragma omp single // OK
15385 {
15386 bar();
15387 }
15388 }
15389 #pragma omp target
15390 #pragma omp teams distribute
15391 for (int i = 0; i < 10; ++i) {
15392 #pragma omp master // OK
15393 {
15394 bar();
15395 }
15396 }
15397 #pragma omp target
15398 #pragma omp teams distribute
15399 for (int i = 0; i < 10; ++i) {
15400 #pragma omp critical // OK
15401 {
15402 bar();
15403 }
15404 }
15405 #pragma omp target
15406 #pragma omp teams distribute
15407 for (int i = 0; i < 10; ++i) {
15408 #pragma omp parallel // OK
15409 {
15410 #pragma omp single
15411 {
15412 bar();
15413 }
15414 }
15415 }
15416 #pragma omp target
15417 #pragma omp teams distribute
15418 for (int i = 0; i < 10; ++i) {
15419 #pragma omp parallel for // OK
15420 for (int i = 0; i < 10; ++i)
15421 ;
15422 }
15423 #pragma omp target
15424 #pragma omp teams distribute
15425 for (int i = 0; i < 10; ++i) {
15426 #pragma omp parallel for simd // OK
15427 for (int i = 0; i < 10; ++i)
15428 ;
15429 }
15430 #pragma omp target
15431 #pragma omp teams distribute
15432 for (int i = 0; i < 10; ++i) {
15433 #pragma omp parallel sections // OK
15434 {
15435 bar();
15436 }
15437 }
15438 #pragma omp target
15439 #pragma omp teams distribute
15440 for (int i = 0; i < 10; ++i) {
15441 #pragma omp task // OK
15442 {
15443 bar();
15444 }
15445 }
15446 #pragma omp target
15447 #pragma omp teams distribute
15448 for (int i = 0; i < 10; ++i) {
15449 #pragma omp taskyield // OK
15450 bar();
15451 }
15452 #pragma omp target
15453 #pragma omp teams distribute
15454 for (int i = 0; i < 10; ++i) {
15455 #pragma omp barrier // OK
15456 bar();
15457 }
15458 #pragma omp target
15459 #pragma omp teams distribute
15460 for (int i = 0; i < 10; ++i) {
15461 #pragma omp taskwait // OK
15462 bar();
15463 }
15464 #pragma omp target
15465 #pragma omp teams distribute
15466 for (int i = 0; i < 10; ++i) {
15467 #pragma omp flush // OK
15468 bar();
15469 }
15470 #pragma omp target
15471 #pragma omp teams distribute
15472 for (int i = 0; i < 10; ++i) {
15473 #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?}}
15474 bar();
15475 }
15476 #pragma omp target
15477 #pragma omp teams distribute
15478 for (int i = 0; i < 10; ++i) {
15479 #pragma omp atomic // OK
15480 ++a;
15481 }
15482 #pragma omp target
15483 #pragma omp teams distribute
15484 for (int i = 0; i < 10; ++i) {
15485 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
15486 ++a;
15487 }
15488 #pragma omp target
15489 #pragma omp teams distribute
15490 for (int i = 0; i < 10; ++i) {
15491 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
15492 ++a;
15493 }
15494 #pragma omp target
15495 #pragma omp teams distribute
15496 for (int i = 0; i < 10; ++i) {
15497 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
15498 for (int i = 0; i < 10; ++i)
15499 ;
15500 }
15501 #pragma omp target
15502 #pragma omp teams distribute
15503 for (int i = 0; i < 10; ++i) {
15504 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
15505 ++a;
15506 }
15507 #pragma omp target
15508 #pragma omp teams distribute
15509 for (int i = 0; i < 10; ++i) {
15510 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
15511 ++a;
15512 }
15513 #pragma omp target
15514 #pragma omp teams distribute
15515 for (int i = 0; i < 10; ++i) {
15516 #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?}}
15517 ++a;
15518 }
15519 #pragma omp target
15520 #pragma omp teams distribute
15521 for (int i = 0; i < 10; ++i) {
15522 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
15523 ++a;
15524 }
15525 #pragma omp target
15526 #pragma omp teams distribute
15527 for (int i = 0; i < 10; ++i) {
15528 #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?}}
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 target simd // expected-error {{region cannot be nested inside '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 // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' 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 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?}}
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 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?}}
15557 for (int i = 0; i < 10; ++i)
15558 ++a;
15559 }
15560 #pragma omp target
15561 #pragma omp teams distribute
15562 for (int i = 0; i < 10; ++i) {
15563 #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?}}
15564 for (int i = 0; i < 10; ++i)
15565 ++a;
15566 }
15567 #pragma omp target
15568 #pragma omp teams distribute
15569 for (int i = 0; i < 10; ++i) {
15570 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
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 // 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 parallel for // expected-error {{region cannot be nested inside 'target' region}}
15584 for (int i = 0; i < 10; ++i)
15585 ++a;
15586 }
15587 #pragma omp target
15588 #pragma omp teams distribute
15589 for (int i = 0; i < 10; ++i) {
15590 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
15591 for (int i = 0; i < 10; ++i)
15592 ++a;
15593 }
15594 #pragma omp target
15595 #pragma omp teams distribute
15596 for (int i = 0; i < 10; ++i) {
15597 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
15598 for (int i = 0; i < 10; ++i)
15599 ++a;
15600 }
15601
15602 // TEAMS DISTRIBUTE SIMD DIRECTIVE
15603 #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?}}
15604 for (int i = 0; i < 10; ++i)
15605 ;
15606 #pragma omp target
15607 #pragma omp teams distribute simd
15608 for (int i = 0; i < 10; ++i) {
15609 #pragma omp distribute parallel for simd // 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 distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15617 for (int i = 0; i < 10; ++i)
15618 ;
15619 }
15620 #pragma omp target
15621 #pragma omp teams distribute simd
15622 for (int i = 0; i < 10; ++i) {
15623 #pragma omp for // 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 simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
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 for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15638 for (int i = 0; i < 10; ++i)
15639 ;
15640 }
15641 #pragma omp target
15642 #pragma omp teams distribute simd
15643 for (int i = 0; i < 10; ++i) {
15644 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15645 for (int i = 0; i < 10; ++i)
15646 ;
15647 }
15648 #pragma omp target
15649 #pragma omp teams distribute simd
15650 for (int i = 0; i < 10; ++i) {
15651 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15652 {
15653 bar();
15654 }
15655 }
15656 #pragma omp target
15657 #pragma omp teams distribute simd
15658 for (int i = 0; i < 10; ++i) {
15659 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15660 {
15661 bar();
15662 }
15663 }
15664 #pragma omp target
15665 #pragma omp teams distribute simd
15666 for (int i = 0; i < 10; ++i) {
15667 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15668 {
15669 bar();
15670 }
15671 }
15672 #pragma omp target
15673 #pragma omp teams distribute simd
15674 for (int i = 0; i < 10; ++i) {
15675 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15676 {
15677 bar();
15678 }
15679 }
15680 #pragma omp target
15681 #pragma omp teams distribute simd
15682 for (int i = 0; i < 10; ++i) {
15683 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15684 {
15685 bar();
15686 }
15687 }
15688 #pragma omp target
15689 #pragma omp teams distribute simd
15690 for (int i = 0; i < 10; ++i) {
15691 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15692 {
15693 #pragma omp single
15694 {
15695 bar();
15696 }
15697 }
15698 }
15699 #pragma omp target
15700 #pragma omp teams distribute simd
15701 for (int i = 0; i < 10; ++i) {
15702 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15703 for (int i = 0; i < 10; ++i)
15704 ;
15705 }
15706 #pragma omp target
15707 #pragma omp teams distribute simd
15708 for (int i = 0; i < 10; ++i) {
15709 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15710 for (int i = 0; i < 10; ++i)
15711 ;
15712 }
15713 #pragma omp target
15714 #pragma omp teams distribute simd
15715 for (int i = 0; i < 10; ++i) {
15716 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15717 {
15718 bar();
15719 }
15720 }
15721 #pragma omp target
15722 #pragma omp teams distribute simd
15723 for (int i = 0; i < 10; ++i) {
15724 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15725 {
15726 bar();
15727 }
15728 }
15729 #pragma omp target
15730 #pragma omp teams distribute simd
15731 for (int i = 0; i < 10; ++i) {
15732 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15733 bar();
15734 }
15735 #pragma omp target
15736 #pragma omp teams distribute simd
15737 for (int i = 0; i < 10; ++i) {
15738 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15739 bar();
15740 }
15741 #pragma omp target
15742 #pragma omp teams distribute simd
15743 for (int i = 0; i < 10; ++i) {
15744 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15745 bar();
15746 }
15747 #pragma omp target
15748 #pragma omp teams distribute simd
15749 for (int i = 0; i < 10; ++i) {
15750 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15751 bar();
15752 }
15753 #pragma omp target
15754 #pragma omp teams distribute simd
15755 for (int i = 0; i < 10; ++i) {
15756 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15757 bar();
15758 }
15759 #pragma omp target
15760 #pragma omp teams distribute simd
15761 for (int i = 0; i < 10; ++i) {
15762 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15763 ++a;
15764 }
15765 #pragma omp target
15766 #pragma omp teams distribute simd
15767 for (int i = 0; i < 10; ++i) {
15768 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15769 ++a;
15770 }
15771 #pragma omp target
15772 #pragma omp teams distribute simd
15773 for (int i = 0; i < 10; ++i) {
15774 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15775 ++a;
15776 }
15777 #pragma omp target
15778 #pragma omp teams distribute simd
15779 for (int i = 0; i < 10; ++i) {
15780 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15781 for (int i = 0; i < 10; ++i)
15782 ;
15783 }
15784 #pragma omp target
15785 #pragma omp teams distribute simd
15786 for (int i = 0; i < 10; ++i) {
15787 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15788 ++a;
15789 }
15790 #pragma omp target
15791 #pragma omp teams distribute simd
15792 for (int i = 0; i < 10; ++i) {
15793 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15794 ++a;
15795 }
15796 #pragma omp target
15797 #pragma omp teams distribute simd
15798 for (int i = 0; i < 10; ++i) {
15799 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15800 ++a;
15801 }
15802 #pragma omp target
15803 #pragma omp teams distribute simd
15804 for (int i = 0; i < 10; ++i) {
15805 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15806 ++a;
15807 }
15808 #pragma omp target
15809 #pragma omp teams distribute simd
15810 for (int i = 0; i < 10; ++i) {
15811 #pragma omp distribute simd // 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 target 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 // 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 simd // 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 teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15840 for (int i = 0; i < 10; ++i)
15841 ++a;
15842 }
15843 #pragma omp target
15844 #pragma omp teams distribute simd
15845 for (int i = 0; i < 10; ++i) {
15846 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15847 for (int i = 0; i < 10; ++i)
15848 ++a;
15849 }
15850 #pragma omp target
15851 #pragma omp teams distribute simd
15852 for (int i = 0; i < 10; ++i) {
15853 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15867 for (int i = 0; i < 10; ++i)
15868 ++a;
15869 }
15870 #pragma omp target
15871 #pragma omp teams distribute simd
15872 for (int i = 0; i < 10; ++i) {
15873 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15874 for (int i = 0; i < 10; ++i)
15875 ++a;
15876 }
15877 #pragma omp target
15878 #pragma omp teams distribute simd
15879 for (int i = 0; i < 10; ++i) {
15880 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15881 for (int i = 0; i < 10; ++i)
15882 ++a;
15883 }
15884
15885 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
15886 #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?}}
15887 for (int i = 0; i < 10; ++i)
15888 ;
15889 #pragma omp target
15890 #pragma omp teams distribute parallel for simd
15891 for (int i = 0; i < 10; ++i) {
15892 #pragma omp distribute parallel for simd // 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 distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 // 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 simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
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 for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15921 for (int i = 0; i < 10; ++i)
15922 ;
15923 }
15924 #pragma omp target
15925 #pragma omp teams distribute parallel for simd
15926 for (int i = 0; i < 10; ++i) {
15927 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15928 for (int i = 0; i < 10; ++i)
15929 ;
15930 }
15931 #pragma omp target
15932 #pragma omp teams distribute parallel for simd
15933 for (int i = 0; i < 10; ++i) {
15934 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15935 {
15936 bar();
15937 }
15938 }
15939 #pragma omp target
15940 #pragma omp teams distribute parallel for simd
15941 for (int i = 0; i < 10; ++i) {
15942 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15943 {
15944 bar();
15945 }
15946 }
15947 #pragma omp target
15948 #pragma omp teams distribute parallel for simd
15949 for (int i = 0; i < 10; ++i) {
15950 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15951 {
15952 bar();
15953 }
15954 }
15955 #pragma omp target
15956 #pragma omp teams distribute parallel for simd
15957 for (int i = 0; i < 10; ++i) {
15958 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15959 {
15960 bar();
15961 }
15962 }
15963 #pragma omp target
15964 #pragma omp teams distribute parallel for simd
15965 for (int i = 0; i < 10; ++i) {
15966 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15967 {
15968 bar();
15969 }
15970 }
15971 #pragma omp target
15972 #pragma omp teams distribute parallel for simd
15973 for (int i = 0; i < 10; ++i) {
15974 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15975 {
15976 #pragma omp single
15977 {
15978 bar();
15979 }
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 for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15986 for (int i = 0; i < 10; ++i)
15987 ;
15988 }
15989 #pragma omp target
15990 #pragma omp teams distribute parallel for simd
15991 for (int i = 0; i < 10; ++i) {
15992 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
15993 for (int i = 0; i < 10; ++i)
15994 ;
15995 }
15996 #pragma omp target
15997 #pragma omp teams distribute parallel for simd
15998 for (int i = 0; i < 10; ++i) {
15999 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16000 {
16001 bar();
16002 }
16003 }
16004 #pragma omp target
16005 #pragma omp teams distribute parallel for simd
16006 for (int i = 0; i < 10; ++i) {
16007 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16008 {
16009 bar();
16010 }
16011 }
16012 #pragma omp target
16013 #pragma omp teams distribute parallel for simd
16014 for (int i = 0; i < 10; ++i) {
16015 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16016 bar();
16017 }
16018 #pragma omp target
16019 #pragma omp teams distribute parallel for simd
16020 for (int i = 0; i < 10; ++i) {
16021 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16022 bar();
16023 }
16024 #pragma omp target
16025 #pragma omp teams distribute parallel for simd
16026 for (int i = 0; i < 10; ++i) {
16027 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16028 bar();
16029 }
16030 #pragma omp target
16031 #pragma omp teams distribute parallel for simd
16032 for (int i = 0; i < 10; ++i) {
16033 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16034 bar();
16035 }
16036 #pragma omp target
16037 #pragma omp teams distribute parallel for simd
16038 for (int i = 0; i < 10; ++i) {
16039 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16040 bar();
16041 }
16042 #pragma omp target
16043 #pragma omp teams distribute parallel for simd
16044 for (int i = 0; i < 10; ++i) {
16045 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16046 ++a;
16047 }
16048 #pragma omp target
16049 #pragma omp teams distribute parallel for simd
16050 for (int i = 0; i < 10; ++i) {
16051 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16052 ++a;
16053 }
16054 #pragma omp target
16055 #pragma omp teams distribute parallel for simd
16056 for (int i = 0; i < 10; ++i) {
16057 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16058 ++a;
16059 }
16060 #pragma omp target
16061 #pragma omp teams distribute parallel for simd
16062 for (int i = 0; i < 10; ++i) {
16063 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16064 for (int i = 0; i < 10; ++i)
16065 ;
16066 }
16067 #pragma omp target
16068 #pragma omp teams distribute parallel for simd
16069 for (int i = 0; i < 10; ++i) {
16070 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16071 ++a;
16072 }
16073 #pragma omp target
16074 #pragma omp teams distribute parallel for simd
16075 for (int i = 0; i < 10; ++i) {
16076 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16077 ++a;
16078 }
16079 #pragma omp target
16080 #pragma omp teams distribute parallel for simd
16081 for (int i = 0; i < 10; ++i) {
16082 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16083 ++a;
16084 }
16085 #pragma omp target
16086 #pragma omp teams distribute parallel for simd
16087 for (int i = 0; i < 10; ++i) {
16088 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 distribute simd // 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 target 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 // 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 simd // 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 teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16123 for (int i = 0; i < 10; ++i)
16124 ++a;
16125 }
16126 #pragma omp target
16127 #pragma omp teams distribute parallel for simd
16128 for (int i = 0; i < 10; ++i) {
16129 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16130 for (int i = 0; i < 10; ++i)
16131 ++a;
16132 }
16133 #pragma omp target
16134 #pragma omp teams distribute parallel for simd
16135 for (int i = 0; i < 10; ++i) {
16136 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
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 // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16150 for (int i = 0; i < 10; ++i)
16151 ++a;
16152 }
16153 #pragma omp target
16154 #pragma omp teams distribute parallel for simd
16155 for (int i = 0; i < 10; ++i) {
16156 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16157 for (int i = 0; i < 10; ++i)
16158 ++a;
16159 }
16160 #pragma omp target
16161 #pragma omp teams distribute parallel for simd
16162 for (int i = 0; i < 10; ++i) {
16163 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
16164 for (int i = 0; i < 10; ++i)
16165 ++a;
16166 }
16167
16168 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
16169 #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?}}
16170 for (int i = 0; i < 10; ++i)
16171 ;
16172 #pragma omp target
16173 #pragma omp teams distribute parallel for
16174 for (int i = 0; i < 10; ++i) {
16175 #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?}}
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 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?}}
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 // 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?}}
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 simd // 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 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?}}
16204 for (int i = 0; i < 10; ++i)
16205 ;
16206 }
16207 #pragma omp target
16208 #pragma omp teams distribute parallel for
16209 for (int i = 0; i < 10; ++i) {
16210 #pragma omp parallel // OK
16211 for (int i = 0; i < 10; ++i)
16212 ;
16213 }
16214 #pragma omp target
16215 #pragma omp teams distribute parallel for
16216 for (int i = 0; i < 10; ++i) {
16217 #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?}}
16218 {
16219 bar();
16220 }
16221 }
16222 #pragma omp target
16223 #pragma omp teams distribute parallel for
16224 for (int i = 0; i < 10; ++i) {
16225 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}
16226 {
16227 bar();
16228 }
16229 }
16230 #pragma omp target
16231 #pragma omp teams distribute parallel for
16232 for (int i = 0; i < 10; ++i) {
16233 #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?}}
16234 {
16235 bar();
16236 }
16237 }
16238 #pragma omp target
16239 #pragma omp teams distribute parallel for
16240 for (int i = 0; i < 10; ++i) {
16241 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
16242 {
16243 bar();
16244 }
16245 }
16246 #pragma omp target
16247 #pragma omp teams distribute parallel for
16248 for (int i = 0; i < 10; ++i) {
16249 #pragma omp critical // OK
16250 {
16251 bar();
16252 }
16253 }
16254 #pragma omp target
16255 #pragma omp teams distribute parallel for
16256 for (int i = 0; i < 10; ++i) {
16257 #pragma omp parallel // OK
16258 {
16259 #pragma omp single
16260 {
16261 bar();
16262 }
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 for // OK
16269 for (int i = 0; i < 10; ++i)
16270 ;
16271 }
16272 #pragma omp target
16273 #pragma omp teams distribute parallel for
16274 for (int i = 0; i < 10; ++i) {
16275 #pragma omp parallel for simd // OK
16276 for (int i = 0; i < 10; ++i)
16277 ;
16278 }
16279 #pragma omp target
16280 #pragma omp teams distribute parallel for
16281 for (int i = 0; i < 10; ++i) {
16282 #pragma omp parallel sections // OK
16283 {
16284 bar();
16285 }
16286 }
16287 #pragma omp target
16288 #pragma omp teams distribute parallel for
16289 for (int i = 0; i < 10; ++i) {
16290 #pragma omp task // OK
16291 {
16292 bar();
16293 }
16294 }
16295 #pragma omp target
16296 #pragma omp teams distribute parallel for
16297 for (int i = 0; i < 10; ++i) {
16298 #pragma omp taskyield // OK
16299 bar();
16300 }
16301 #pragma omp target
16302 #pragma omp teams distribute parallel for
16303 for (int i = 0; i < 10; ++i) {
16304 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}
16305 bar();
16306 }
16307 #pragma omp target
16308 #pragma omp teams distribute parallel for
16309 for (int i = 0; i < 10; ++i) {
16310 #pragma omp taskwait // OK
16311 bar();
16312 }
16313 #pragma omp target
16314 #pragma omp teams distribute parallel for
16315 for (int i = 0; i < 10; ++i) {
16316 #pragma omp flush // OK
16317 bar();
16318 }
16319 #pragma omp target
16320 #pragma omp teams distribute parallel for
16321 for (int i = 0; i < 10; ++i) {
16322 #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?}}
16323 bar();
16324 }
16325 #pragma omp target
16326 #pragma omp teams distribute parallel for
16327 for (int i = 0; i < 10; ++i) {
16328 #pragma omp atomic // OK
16329 ++a;
16330 }
16331 #pragma omp target
16332 #pragma omp teams distribute parallel for
16333 for (int i = 0; i < 10; ++i) {
16334 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}}
16335 ++a;
16336 }
16337 #pragma omp target
16338 #pragma omp teams distribute parallel for
16339 for (int i = 0; i < 10; ++i) {
16340 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}
16341 ++a;
16342 }
16343 #pragma omp target
16344 #pragma omp teams distribute parallel for
16345 for (int i = 0; i < 10; ++i) {
16346 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}
16347 for (int i = 0; i < 10; ++i)
16348 ;
16349 }
16350 #pragma omp target
16351 #pragma omp teams distribute parallel for
16352 for (int i = 0; i < 10; ++i) {
16353 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}
16354 ++a;
16355 }
16356 #pragma omp target
16357 #pragma omp teams distribute parallel for
16358 for (int i = 0; i < 10; ++i) {
16359 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}
16360 ++a;
16361 }
16362 #pragma omp target
16363 #pragma omp teams distribute parallel for
16364 for (int i = 0; i < 10; ++i) {
16365 #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?}}
16366 ++a;
16367 }
16368 #pragma omp target
16369 #pragma omp teams distribute parallel for
16370 for (int i = 0; i < 10; ++i) {
16371 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}
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 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?}}
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 target simd // expected-error {{region cannot be nested inside '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 // 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?}}
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 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?}}
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 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?}}
16406 for (int i = 0; i < 10; ++i)
16407 ++a;
16408 }
16409 #pragma omp target
16410 #pragma omp teams distribute parallel for
16411 for (int i = 0; i < 10; ++i) {
16412 #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?}}
16413 for (int i = 0; i < 10; ++i)
16414 ++a;
16415 }
16416 #pragma omp target
16417 #pragma omp teams distribute parallel for
16418 for (int i = 0; i < 10; ++i) {
16419 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}
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 // 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 parallel for // expected-error {{region cannot be nested inside 'target' region}}
16433 for (int i = 0; i < 10; ++i)
16434 ++a;
16435 }
16436 #pragma omp target
16437 #pragma omp teams distribute parallel for
16438 for (int i = 0; i < 10; ++i) {
16439 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}
16440 for (int i = 0; i < 10; ++i)
16441 ++a;
16442 }
16443 #pragma omp target
16444 #pragma omp teams distribute parallel for
16445 for (int i = 0; i < 10; ++i) {
16446 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}
16447 for (int i = 0; i < 10; ++i)
16448 ++a;
16449 }
16450
16451 // TARGET TEAMS DIRECTIVE
16452 #pragma omp target teams
16453 #pragma omp parallel
16454 bar();
16455 #pragma omp target teams
16456 #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?}}
16457 for (int i = 0; i < 10; ++i)
16458 ;
16459 #pragma omp target teams
16460 #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?}}
16461 for (int i = 0; i < 10; ++i)
16462 ;
16463 #pragma omp target teams
16464 #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?}}
16465 for (int i = 0; i < 10; ++i)
16466 ;
16467 #pragma omp target teams
16468 #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?}}
16469 {
16470 bar();
16471 }
16472 #pragma omp target teams
16473 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}
16474 {
16475 bar();
16476 }
16477 #pragma omp target teams
16478 #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?}}
16479 bar();
16480
16481 #pragma omp target teams
16482 #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?}}
16483 {
16484 bar();
16485 }
16486 #pragma omp target teams
16487 #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?}}
16488 {
16489 bar();
16490 }
16491 #pragma omp target teams
16492 #pragma omp parallel for
16493 for (int i = 0; i < 10; ++i)
16494 ;
16495 #pragma omp target teams
16496 #pragma omp parallel for simd
16497 for (int i = 0; i < 10; ++i)
16498 ;
16499 #pragma omp target teams
16500 #pragma omp parallel sections
16501 {
16502 bar();
16503 }
16504 #pragma omp target teams
16505 #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?}}
16506 {
16507 bar();
16508 }
16509 #pragma omp target teams
16510 {
16511 #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?}}
16512 bar();
16513 }
16514 #pragma omp target teams
16515 {
16516 #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?}}
16517 bar();
16518 }
16519 #pragma omp target teams
16520 {
16521 #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?}}
16522 bar();
16523 }
16524 #pragma omp target teams
16525 {
16526 #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?}}
16527 bar();
16528 }
16529 #pragma omp target teams
16530 {
16531 #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?}}
16532 bar();
16533 }
16534 #pragma omp target teams
16535 {
16536 #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?}}
16537 ++a;
16538 }
16539 #pragma omp target teams
16540 {
16541 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}
16542 ++a;
16543 }
16544 #pragma omp target teams
16545 {
16546 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}
16547 ++a;
16548 }
16549 #pragma omp target teams
16550 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
16551 for (int i = 0; i < 10; ++i)
16552 ;
16553 #pragma omp target teams
16554 {
16555 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}
16556 }
16557 #pragma omp target teams
16558 {
16559 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}
16560 }
16561 #pragma omp target teams
16562 {
16563 #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?}}
16564 ++a;
16565 }
16566 #pragma omp target teams
16567 {
16568 #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?}}
16569 for (int i = 0; i < 10; ++i)
16570 ++a;
16571 }
16572 #pragma omp target teams
16573 #pragma omp distribute
16574 for (int i = 0; i < 10; ++i)
16575 ;
16576 #pragma omp target teams
16577 {
16578 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}
16579 ++a;
16580 }
16581 #pragma omp target teams
16582 #pragma omp distribute parallel for
16583 for (int i = 0; i < 10; ++i)
16584 ;
16585 #pragma omp target teams
16586 {
16587 #pragma omp distribute parallel for
16588 for (int i = 0; i < 10; ++i)
16589 ;
16590 #pragma omp distribute parallel for
16591 for (int j = 0; j < 10; ++j)
16592 ;
16593 }
16594 #pragma omp target teams
16595 {
16596 #pragma omp distribute parallel for simd
16597 for (int i = 0; i < 10; ++i)
16598 ;
16599 #pragma omp distribute parallel for simd
16600 for (int j = 0; j < 10; ++j)
16601 ;
16602 }
16603 #pragma omp target teams
16604 {
16605 #pragma omp distribute simd
16606 for (int i = 0; i < 10; ++i)
16607 ;
16608 #pragma omp distribute simd
16609 for (int j = 0; j < 10; ++j)
16610 ;
16611 }
16612 #pragma omp target teams
16613 {
16614 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}
16615 for (int i = 0; i < 10; ++i)
16616 ;
16617 }
16618 #pragma omp target teams
16619 {
16620 #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?}}
16621 for (int i = 0; i < 10; ++i)
16622 ;
16623 }
16624 #pragma omp target teams
16625 {
16626 #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?}}
16627 for (int i = 0; i < 10; ++i)
16628 ;
16629 }
16630 #pragma omp target teams
16631 {
16632 #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?}}
16633 for (int i = 0; i < 10; ++i)
16634 ;
16635 }
16636 #pragma omp target teams
16637 {
16638 #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?}}
16639 for (int i = 0; i < 10; ++i)
16640 ;
16641 }
16642 #pragma omp target teams
16643 {
16644 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}
16645 a++;
16646 }
16647 #pragma omp target teams
16648 {
16649 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}
16650 for (int i = 0; i < 10; ++i)
16651 ;
16652 }
16653 #pragma omp target teams
16654 {
16655 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}
16656 for (int i = 0; i < 10; ++i)
16657 ;
16658 }
16659 #pragma omp target teams
16660 {
16661 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}
16662 for (int i = 0; i < 10; ++i)
16663 ;
16664 }
16665 #pragma omp target teams
16666 {
16667 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}
16668 for (int i = 0; i < 10; ++i)
16669 ;
16670 }
16671
16672 // TARGET TEAMS DISTRIBUTE DIRECTIVE
16673 #pragma omp target teams distribute // OK
16674 for (int i = 0; i < 10; ++i)
16675 ;
16676 #pragma omp target teams distribute
16677 for (int i = 0; i < 10; ++i) {
16678 #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?}}
16679 for (int i = 0; i < 10; ++i)
16680 ;
16681 }
16682 #pragma omp target teams distribute
16683 for (int i = 0; i < 10; ++i) {
16684 #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?}}
16685 for (int i = 0; i < 10; ++i)
16686 ;
16687 }
16688 #pragma omp target teams distribute
16689 for (int i = 0; i < 10; ++i) {
16690 #pragma omp for // OK
16691 for (int i = 0; i < 10; ++i)
16692 ;
16693 }
16694 #pragma omp target teams distribute
16695 for (int i = 0; i < 10; ++i) {
16696 #pragma omp simd // OK
16697 for (int i = 0; i < 10; ++i)
16698 ;
16699 }
16700 #pragma omp target teams distribute
16701 for (int i = 0; i < 10; ++i) {
16702 #pragma omp for simd // OK
16703 for (int i = 0; i < 10; ++i)
16704 ;
16705 }
16706 #pragma omp target teams distribute
16707 for (int i = 0; i < 10; ++i) {
16708 #pragma omp parallel // OK
16709 for (int i = 0; i < 10; ++i)
16710 ;
16711 }
16712 #pragma omp target teams distribute
16713 for (int i = 0; i < 10; ++i) {
16714 #pragma omp sections // OK
16715 {
16716 bar();
16717 }
16718 }
16719 #pragma omp target teams distribute
16720 for (int i = 0; i < 10; ++i) {
16721 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}
16722 {
16723 bar();
16724 }
16725 }
16726 #pragma omp target teams distribute
16727 for (int i = 0; i < 10; ++i) {
16728 #pragma omp single // OK
16729 {
16730 bar();
16731 }
16732 }
16733 #pragma omp target teams distribute
16734 for (int i = 0; i < 10; ++i) {
16735 #pragma omp master // OK
16736 {
16737 bar();
16738 }
16739 }
16740 #pragma omp target teams distribute
16741 for (int i = 0; i < 10; ++i) {
16742 #pragma omp critical // OK
16743 {
16744 bar();
16745 }
16746 }
16747 #pragma omp target teams distribute
16748 for (int i = 0; i < 10; ++i) {
16749 #pragma omp parallel // OK
16750 {
16751 #pragma omp single
16752 {
16753 bar();
16754 }
16755 }
16756 }
16757 #pragma omp target teams distribute
16758 for (int i = 0; i < 10; ++i) {
16759 #pragma omp parallel for // OK
16760 for (int i = 0; i < 10; ++i)
16761 ;
16762 }
16763 #pragma omp target teams distribute
16764 for (int i = 0; i < 10; ++i) {
16765 #pragma omp parallel for simd // OK
16766 for (int i = 0; i < 10; ++i)
16767 ;
16768 }
16769 #pragma omp target teams distribute
16770 for (int i = 0; i < 10; ++i) {
16771 #pragma omp parallel sections // OK
16772 {
16773 bar();
16774 }
16775 }
16776 #pragma omp target teams distribute
16777 for (int i = 0; i < 10; ++i) {
16778 #pragma omp task // OK
16779 {
16780 bar();
16781 }
16782 }
16783 #pragma omp target teams distribute
16784 for (int i = 0; i < 10; ++i) {
16785 #pragma omp taskyield // OK
16786 bar();
16787 }
16788 #pragma omp target teams distribute
16789 for (int i = 0; i < 10; ++i) {
16790 #pragma omp barrier // OK
16791 bar();
16792 }
16793 #pragma omp target teams distribute
16794 for (int i = 0; i < 10; ++i) {
16795 #pragma omp taskwait // OK
16796 bar();
16797 }
16798 #pragma omp target teams distribute
16799 for (int i = 0; i < 10; ++i) {
16800 #pragma omp flush // OK
16801 bar();
16802 }
16803 #pragma omp target teams distribute
16804 for (int i = 0; i < 10; ++i) {
16805 #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?}}
16806 bar();
16807 }
16808 #pragma omp target teams distribute
16809 for (int i = 0; i < 10; ++i) {
16810 #pragma omp atomic // OK
16811 ++a;
16812 }
16813 #pragma omp target teams distribute
16814 for (int i = 0; i < 10; ++i) {
16815 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16816 ++a;
16817 }
16818 #pragma omp target teams distribute
16819 for (int i = 0; i < 10; ++i) {
16820 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16821 ++a;
16822 }
16823 #pragma omp target teams distribute
16824 for (int i = 0; i < 10; ++i) {
16825 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16826 for (int i = 0; i < 10; ++i)
16827 ;
16828 }
16829 #pragma omp target teams distribute
16830 for (int i = 0; i < 10; ++i) {
16831 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16832 ++a;
16833 }
16834 #pragma omp target teams distribute
16835 for (int i = 0; i < 10; ++i) {
16836 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16837 ++a;
16838 }
16839 #pragma omp target teams distribute
16840 for (int i = 0; i < 10; ++i) {
16841 #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?}}
16842 ++a;
16843 }
16844 #pragma omp target teams distribute
16845 for (int i = 0; i < 10; ++i) {
16846 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16847 ++a;
16848 }
16849 #pragma omp target teams distribute
16850 for (int i = 0; i < 10; ++i) {
16851 #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?}}
16852 for (int i = 0; i < 10; ++i)
16853 ++a;
16854 }
16855 #pragma omp target teams distribute
16856 for (int i = 0; i < 10; ++i) {
16857 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16858 for (int i = 0; i < 10; ++i)
16859 ++a;
16860 }
16861 #pragma omp target teams distribute
16862 for (int i = 0; i < 10; ++i) {
16863 #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?}}
16864 for (int i = 0; i < 10; ++i)
16865 ++a;
16866 }
16867 #pragma omp target teams distribute
16868 for (int i = 0; i < 10; ++i) {
16869 #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?}}
16870 for (int i = 0; i < 10; ++i)
16871 ++a;
16872 }
16873 #pragma omp target teams distribute
16874 for (int i = 0; i < 10; ++i) {
16875 #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?}}
16876 for (int i = 0; i < 10; ++i)
16877 ++a;
16878 }
16879 #pragma omp target teams distribute
16880 for (int i = 0; i < 10; ++i) {
16881 #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?}}
16882 for (int i = 0; i < 10; ++i)
16883 ++a;
16884 }
16885 #pragma omp target teams distribute
16886 for (int i = 0; i < 10; ++i) {
16887 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16888 ++a;
16889 }
16890 #pragma omp target teams distribute
16891 for (int i = 0; i < 10; ++i) {
16892 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16893 for (int i = 0; i < 10; ++i)
16894 ++a;
16895 }
16896 #pragma omp target teams distribute
16897 for (int i = 0; i < 10; ++i) {
16898 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16899 for (int i = 0; i < 10; ++i)
16900 ++a;
16901 }
16902 #pragma omp target teams distribute
16903 for (int i = 0; i < 10; ++i) {
16904 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16905 for (int i = 0; i < 10; ++i)
16906 ++a;
16907 }
16908 #pragma omp target teams distribute
16909 for (int i = 0; i < 10; ++i) {
16910 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}
16911 for (int i = 0; i < 10; ++i)
16912 ++a;
16913 }
16914
16915 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE
16916 #pragma omp target teams distribute parallel for // OK
16917 for (int i = 0; i < 10; ++i)
16918 ;
16919 #pragma omp target teams distribute parallel for
16920 for (int i = 0; i < 10; ++i) {
16921 #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?}}
16922 for (int i = 0; i < 10; ++i)
16923 ;
16924 }
16925 #pragma omp target teams distribute parallel for
16926 for (int i = 0; i < 10; ++i) {
16927 #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?}}
16928 for (int i = 0; i < 10; ++i)
16929 ;
16930 }
16931 #pragma omp target teams distribute parallel for
16932 for (int i = 0; i < 10; ++i) {
16933 #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?}}
16934 for (int i = 0; i < 10; ++i)
16935 ;
16936 }
16937 #pragma omp target teams distribute parallel for
16938 for (int i = 0; i < 10; ++i) {
16939 #pragma omp simd // OK
16940 for (int i = 0; i < 10; ++i)
16941 ;
16942 }
16943 #pragma omp target teams distribute parallel for
16944 for (int i = 0; i < 10; ++i) {
16945 #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?}}
16946 for (int i = 0; i < 10; ++i)
16947 ;
16948 }
16949 #pragma omp target teams distribute parallel for
16950 for (int i = 0; i < 10; ++i) {
16951 #pragma omp parallel // OK
16952 for (int i = 0; i < 10; ++i)
16953 ;
16954 }
16955 #pragma omp target teams distribute parallel for
16956 for (int i = 0; i < 10; ++i) {
16957 #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?}}
16958 {
16959 bar();
16960 }
16961 }
16962 #pragma omp target teams distribute parallel for
16963 for (int i = 0; i < 10; ++i) {
16964 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a 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 single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
16972 {
16973 bar();
16974 }
16975 }
16976 #pragma omp target teams distribute parallel for
16977 for (int i = 0; i < 10; ++i) {
16978 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
16979 {
16980 bar();
16981 }
16982 }
16983 #pragma omp target teams distribute parallel for
16984 for (int i = 0; i < 10; ++i) {
16985 #pragma omp critical // OK
16986 {
16987 bar();
16988 }
16989 }
16990 #pragma omp target teams distribute parallel for
16991 for (int i = 0; i < 10; ++i) {
16992 #pragma omp parallel // OK
16993 {
16994 #pragma omp single
16995 {
16996 bar();
16997 }
16998 }
16999 }
17000 #pragma omp target teams distribute parallel for
17001 for (int i = 0; i < 10; ++i) {
17002 #pragma omp parallel for // OK
17003 for (int i = 0; i < 10; ++i)
17004 ;
17005 }
17006 #pragma omp target teams distribute parallel for
17007 for (int i = 0; i < 10; ++i) {
17008 #pragma omp parallel for simd // OK
17009 for (int i = 0; i < 10; ++i)
17010 ;
17011 }
17012 #pragma omp target teams distribute parallel for
17013 for (int i = 0; i < 10; ++i) {
17014 #pragma omp parallel sections // OK
17015 {
17016 bar();
17017 }
17018 }
17019 #pragma omp target teams distribute parallel for
17020 for (int i = 0; i < 10; ++i) {
17021 #pragma omp task // OK
17022 {
17023 bar();
17024 }
17025 }
17026 #pragma omp target teams distribute parallel for
17027 for (int i = 0; i < 10; ++i) {
17028 #pragma omp taskyield // OK
17029 bar();
17030 }
17031 #pragma omp target teams distribute parallel for
17032 for (int i = 0; i < 10; ++i) {
17033 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}
17034 bar();
17035 }
17036 #pragma omp target teams distribute parallel for
17037 for (int i = 0; i < 10; ++i) {
17038 #pragma omp taskwait // OK
17039 bar();
17040 }
17041 #pragma omp target teams distribute parallel for
17042 for (int i = 0; i < 10; ++i) {
17043 #pragma omp flush // OK
17044 bar();
17045 }
17046 #pragma omp target teams distribute parallel for
17047 for (int i = 0; i < 10; ++i) {
17048 #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?}}
17049 bar();
17050 }
17051 #pragma omp target teams distribute parallel for
17052 for (int i = 0; i < 10; ++i) {
17053 #pragma omp atomic // OK
17054 ++a;
17055 }
17056 #pragma omp target teams distribute parallel for
17057 for (int i = 0; i < 10; ++i) {
17058 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17059 ++a;
17060 }
17061 #pragma omp target teams distribute parallel for
17062 for (int i = 0; i < 10; ++i) {
17063 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17064 ++a;
17065 }
17066 #pragma omp target teams distribute parallel for
17067 for (int i = 0; i < 10; ++i) {
17068 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17069 for (int i = 0; i < 10; ++i)
17070 ;
17071 }
17072 #pragma omp target teams distribute parallel for
17073 for (int i = 0; i < 10; ++i) {
17074 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17075 ++a;
17076 }
17077 #pragma omp target teams distribute parallel for
17078 for (int i = 0; i < 10; ++i) {
17079 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17080 ++a;
17081 }
17082 #pragma omp target teams distribute parallel for
17083 for (int i = 0; i < 10; ++i) {
17084 #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?}}
17085 ++a;
17086 }
17087 #pragma omp target teams distribute parallel for
17088 for (int i = 0; i < 10; ++i) {
17089 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17090 ++a;
17091 }
17092 #pragma omp target teams distribute parallel for
17093 for (int i = 0; i < 10; ++i) {
17094 #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?}}
17095 for (int i = 0; i < 10; ++i)
17096 ++a;
17097 }
17098 #pragma omp target teams distribute parallel for
17099 for (int i = 0; i < 10; ++i) {
17100 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17101 for (int i = 0; i < 10; ++i)
17102 ++a;
17103 }
17104 #pragma omp target teams distribute parallel for
17105 for (int i = 0; i < 10; ++i) {
17106 #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?}}
17107 for (int i = 0; i < 10; ++i)
17108 ++a;
17109 }
17110 #pragma omp target teams distribute parallel for
17111 for (int i = 0; i < 10; ++i) {
17112 #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?}}
17113 for (int i = 0; i < 10; ++i)
17114 ++a;
17115 }
17116 #pragma omp target teams distribute parallel for
17117 for (int i = 0; i < 10; ++i) {
17118 #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?}}
17119 for (int i = 0; i < 10; ++i)
17120 ++a;
17121 }
17122 #pragma omp target teams distribute parallel for
17123 for (int i = 0; i < 10; ++i) {
17124 #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?}}
17125 for (int i = 0; i < 10; ++i)
17126 ++a;
17127 }
17128 #pragma omp target teams distribute parallel for
17129 for (int i = 0; i < 10; ++i) {
17130 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17131 ++a;
17132 }
17133 #pragma omp target teams distribute parallel for
17134 for (int i = 0; i < 10; ++i) {
17135 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17136 for (int i = 0; i < 10; ++i)
17137 ++a;
17138 }
17139 #pragma omp target teams distribute parallel for
17140 for (int i = 0; i < 10; ++i) {
17141 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17142 for (int i = 0; i < 10; ++i)
17143 ++a;
17144 }
17145 #pragma omp target teams distribute parallel for
17146 for (int i = 0; i < 10; ++i) {
17147 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17148 for (int i = 0; i < 10; ++i)
17149 ++a;
17150 }
17151 #pragma omp target teams distribute parallel for
17152 for (int i = 0; i < 10; ++i) {
17153 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}
17154 for (int i = 0; i < 10; ++i)
17155 ++a;
17156 }
17157
17158 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE
17159 #pragma omp target teams distribute parallel for simd // OK
17160 for (int i = 0; i < 10; ++i)
17161 ;
17162 #pragma omp target teams distribute parallel for simd
17163 for (int i = 0; i < 10; ++i) {
17164 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17165 for (int i = 0; i < 10; ++i)
17166 ;
17167 }
17168 #pragma omp target teams distribute parallel for simd
17169 for (int i = 0; i < 10; ++i) {
17170 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17171 for (int i = 0; i < 10; ++i)
17172 ;
17173 }
17174 #pragma omp target teams distribute parallel for simd
17175 for (int i = 0; i < 10; ++i) {
17176 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17177 for (int i = 0; i < 10; ++i)
17178 ;
17179 }
17180 #pragma omp target teams distribute parallel for simd
17181 for (int i = 0; i < 10; ++i) {
17182 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
17183 for (int i = 0; i < 10; ++i)
17184 ;
17185 }
17186 #pragma omp target teams distribute parallel for simd
17187 for (int i = 0; i < 10; ++i) {
17188 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17189 for (int i = 0; i < 10; ++i)
17190 ;
17191 }
17192 #pragma omp target teams distribute parallel for simd
17193 for (int i = 0; i < 10; ++i) {
17194 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17195 for (int i = 0; i < 10; ++i)
17196 ;
17197 }
17198 #pragma omp target teams distribute parallel for simd
17199 for (int i = 0; i < 10; ++i) {
17200 #pragma omp sections // 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 section // 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 single // 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 master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17222 {
17223 bar();
17224 }
17225 }
17226 #pragma omp target teams distribute parallel for simd
17227 for (int i = 0; i < 10; ++i) {
17228 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17229 {
17230 bar();
17231 }
17232 }
17233 #pragma omp target teams distribute parallel for simd
17234 for (int i = 0; i < 10; ++i) {
17235 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17236 {
17237 #pragma omp single
17238 {
17239 bar();
17240 }
17241 }
17242 }
17243 #pragma omp target teams distribute parallel for simd
17244 for (int i = 0; i < 10; ++i) {
17245 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17246 for (int i = 0; i < 10; ++i)
17247 ;
17248 }
17249 #pragma omp target teams distribute parallel for simd
17250 for (int i = 0; i < 10; ++i) {
17251 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17252 for (int i = 0; i < 10; ++i)
17253 ;
17254 }
17255 #pragma omp target teams distribute parallel for simd
17256 for (int i = 0; i < 10; ++i) {
17257 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17258 {
17259 bar();
17260 }
17261 }
17262 #pragma omp target teams distribute parallel for simd
17263 for (int i = 0; i < 10; ++i) {
17264 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17265 {
17266 bar();
17267 }
17268 }
17269 #pragma omp target teams distribute parallel for simd
17270 for (int i = 0; i < 10; ++i) {
17271 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17272 bar();
17273 }
17274 #pragma omp target teams distribute parallel for simd
17275 for (int i = 0; i < 10; ++i) {
17276 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17277 bar();
17278 }
17279 #pragma omp target teams distribute parallel for simd
17280 for (int i = 0; i < 10; ++i) {
17281 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17282 bar();
17283 }
17284 #pragma omp target teams distribute parallel for simd
17285 for (int i = 0; i < 10; ++i) {
17286 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17287 bar();
17288 }
17289 #pragma omp target teams distribute parallel for simd
17290 for (int i = 0; i < 10; ++i) {
17291 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17292 bar();
17293 }
17294 #pragma omp target teams distribute parallel for simd
17295 for (int i = 0; i < 10; ++i) {
17296 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
17297 ++a;
17298 }
17299 #pragma omp target teams distribute parallel for simd
17300 for (int i = 0; i < 10; ++i) {
17301 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17302 ++a;
17303 }
17304 #pragma omp target teams distribute parallel for simd
17305 for (int i = 0; i < 10; ++i) {
17306 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17307 ++a;
17308 }
17309 #pragma omp target teams distribute parallel for simd
17310 for (int i = 0; i < 10; ++i) {
17311 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17312 for (int i = 0; i < 10; ++i)
17313 ;
17314 }
17315 #pragma omp target teams distribute parallel for simd
17316 for (int i = 0; i < 10; ++i) {
17317 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17318 ++a;
17319 }
17320 #pragma omp target teams distribute parallel for simd
17321 for (int i = 0; i < 10; ++i) {
17322 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17323 ++a;
17324 }
17325 #pragma omp target teams distribute parallel for simd
17326 for (int i = 0; i < 10; ++i) {
17327 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17328 ++a;
17329 }
17330 #pragma omp target teams distribute parallel for simd
17331 for (int i = 0; i < 10; ++i) {
17332 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17333 ++a;
17334 }
17335 #pragma omp target teams distribute parallel for simd
17336 for (int i = 0; i < 10; ++i) {
17337 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17338 for (int i = 0; i < 10; ++i)
17339 ++a;
17340 }
17341 #pragma omp target teams distribute parallel for simd
17342 for (int i = 0; i < 10; ++i) {
17343 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17344 for (int i = 0; i < 10; ++i)
17345 ++a;
17346 }
17347 #pragma omp target teams distribute parallel for simd
17348 for (int i = 0; i < 10; ++i) {
17349 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17350 for (int i = 0; i < 10; ++i)
17351 ++a;
17352 }
17353 #pragma omp target teams distribute parallel for simd
17354 for (int i = 0; i < 10; ++i) {
17355 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17356 for (int i = 0; i < 10; ++i)
17357 ++a;
17358 }
17359 #pragma omp target teams distribute parallel for simd
17360 for (int i = 0; i < 10; ++i) {
17361 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17362 for (int i = 0; i < 10; ++i)
17363 ++a;
17364 }
17365 #pragma omp target teams distribute parallel for simd
17366 for (int i = 0; i < 10; ++i) {
17367 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17368 for (int i = 0; i < 10; ++i)
17369 ;
17370 }
17371 #pragma omp target teams distribute parallel for simd
17372 for (int i = 0; i < 10; ++i) {
17373 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17374 a++;
17375 }
17376 #pragma omp target teams distribute parallel for simd
17377 for (int i = 0; i < 10; ++i) {
17378 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17379 for (int i = 0; i < 10; ++i)
17380 ;
17381 }
17382 #pragma omp target teams distribute parallel for simd
17383 for (int i = 0; i < 10; ++i) {
17384 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17385 for (int i = 0; i < 10; ++i)
17386 ;
17387 }
17388 #pragma omp target teams distribute parallel for simd
17389 for (int i = 0; i < 10; ++i) {
17390 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17391 for (int i = 0; i < 10; ++i)
17392 ;
17393 }
17394 #pragma omp target teams distribute parallel for simd
17395 for (int i = 0; i < 10; ++i) {
17396 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17397 for (int i = 0; i < 10; ++i)
17398 ;
17399 }
17400
17401 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE
17402 #pragma omp target teams distribute simd // OK
17403 for (int i = 0; i < 10; ++i)
17404 ;
17405 #pragma omp target teams distribute simd
17406 for (int i = 0; i < 10; ++i) {
17407 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17408 for (int i = 0; i < 10; ++i)
17409 ;
17410 }
17411 #pragma omp target teams distribute simd
17412 for (int i = 0; i < 10; ++i) {
17413 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17414 for (int i = 0; i < 10; ++i)
17415 ;
17416 }
17417 #pragma omp target teams distribute simd
17418 for (int i = 0; i < 10; ++i) {
17419 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17420 for (int i = 0; i < 10; ++i)
17421 ;
17422 }
17423 #pragma omp target teams distribute simd
17424 for (int i = 0; i < 10; ++i) {
17425 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}
17426 for (int i = 0; i < 10; ++i)
17427 ;
17428 }
17429 #pragma omp target teams distribute simd
17430 for (int i = 0; i < 10; ++i) {
17431 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17432 for (int i = 0; i < 10; ++i)
17433 ;
17434 }
17435 #pragma omp target teams distribute simd
17436 for (int i = 0; i < 10; ++i) {
17437 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17438 for (int i = 0; i < 10; ++i)
17439 ;
17440 }
17441 #pragma omp target teams distribute simd
17442 for (int i = 0; i < 10; ++i) {
17443 #pragma omp sections // 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 section // 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 single // 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 master // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17465 {
17466 bar();
17467 }
17468 }
17469 #pragma omp target teams distribute simd
17470 for (int i = 0; i < 10; ++i) {
17471 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17472 {
17473 bar();
17474 }
17475 }
17476 #pragma omp target teams distribute simd
17477 for (int i = 0; i < 10; ++i) {
17478 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17479 {
17480 #pragma omp single
17481 {
17482 bar();
17483 }
17484 }
17485 }
17486 #pragma omp target teams distribute simd
17487 for (int i = 0; i < 10; ++i) {
17488 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17489 for (int i = 0; i < 10; ++i)
17490 ;
17491 }
17492 #pragma omp target teams distribute simd
17493 for (int i = 0; i < 10; ++i) {
17494 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17495 for (int i = 0; i < 10; ++i)
17496 ;
17497 }
17498 #pragma omp target teams distribute simd
17499 for (int i = 0; i < 10; ++i) {
17500 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17501 {
17502 bar();
17503 }
17504 }
17505 #pragma omp target teams distribute simd
17506 for (int i = 0; i < 10; ++i) {
17507 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17508 {
17509 bar();
17510 }
17511 }
17512 #pragma omp target teams distribute simd
17513 for (int i = 0; i < 10; ++i) {
17514 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17515 bar();
17516 }
17517 #pragma omp target teams distribute simd
17518 for (int i = 0; i < 10; ++i) {
17519 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17520 bar();
17521 }
17522 #pragma omp target teams distribute simd
17523 for (int i = 0; i < 10; ++i) {
17524 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17525 bar();
17526 }
17527 #pragma omp target teams distribute simd
17528 for (int i = 0; i < 10; ++i) {
17529 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17530 bar();
17531 }
17532 #pragma omp target teams distribute simd
17533 for (int i = 0; i < 10; ++i) {
17534 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17535 bar();
17536 }
17537 #pragma omp target teams distribute simd
17538 for (int i = 0; i < 10; ++i) {
17539 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK
17540 ++a;
17541 }
17542 #pragma omp target teams distribute simd
17543 for (int i = 0; i < 10; ++i) {
17544 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17545 ++a;
17546 }
17547 #pragma omp target teams distribute simd
17548 for (int i = 0; i < 10; ++i) {
17549 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17550 ++a;
17551 }
17552 #pragma omp target teams distribute simd
17553 for (int i = 0; i < 10; ++i) {
17554 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17555 for (int i = 0; i < 10; ++i)
17556 ;
17557 }
17558 #pragma omp target teams distribute simd
17559 for (int i = 0; i < 10; ++i) {
17560 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17561 ++a;
17562 }
17563 #pragma omp target teams distribute simd
17564 for (int i = 0; i < 10; ++i) {
17565 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17566 ++a;
17567 }
17568 #pragma omp target teams distribute simd
17569 for (int i = 0; i < 10; ++i) {
17570 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17571 ++a;
17572 }
17573 #pragma omp target teams distribute simd
17574 for (int i = 0; i < 10; ++i) {
17575 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17576 ++a;
17577 }
17578 #pragma omp target teams distribute simd
17579 for (int i = 0; i < 10; ++i) {
17580 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17581 for (int i = 0; i < 10; ++i)
17582 ++a;
17583 }
17584 #pragma omp target teams distribute simd
17585 for (int i = 0; i < 10; ++i) {
17586 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17587 for (int i = 0; i < 10; ++i)
17588 ++a;
17589 }
17590 #pragma omp target teams distribute simd
17591 for (int i = 0; i < 10; ++i) {
17592 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17593 for (int i = 0; i < 10; ++i)
17594 ++a;
17595 }
17596 #pragma omp target teams distribute simd
17597 for (int i = 0; i < 10; ++i) {
17598 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17599 for (int i = 0; i < 10; ++i)
17600 ++a;
17601 }
17602 #pragma omp target teams distribute simd
17603 for (int i = 0; i < 10; ++i) {
17604 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17605 for (int i = 0; i < 10; ++i)
17606 ++a;
17607 }
17608 #pragma omp target teams distribute simd
17609 for (int i = 0; i < 10; ++i) {
17610 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17611 for (int i = 0; i < 10; ++i)
17612 ;
17613 }
17614 #pragma omp target teams distribute simd
17615 for (int i = 0; i < 10; ++i) {
17616 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17617 a++;
17618 }
17619 #pragma omp target teams distribute simd
17620 for (int i = 0; i < 10; ++i) {
17621 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17622 for (int i = 0; i < 10; ++i)
17623 ;
17624 }
17625 #pragma omp target teams distribute simd
17626 for (int i = 0; i < 10; ++i) {
17627 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17628 for (int i = 0; i < 10; ++i)
17629 ;
17630 }
17631 #pragma omp target teams distribute simd
17632 for (int i = 0; i < 10; ++i) {
17633 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17634 for (int i = 0; i < 10; ++i)
17635 ;
17636 }
17637 #pragma omp target teams distribute simd
17638 for (int i = 0; i < 10; ++i) {
17639 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}
17640 for (int i = 0; i < 10; ++i)
17641 ;
17642 }
17643
17644 return foo<int>();
17645 }
17646
17647