1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -fno-openmp-extensions -verify=expected,omp45,omp45warn,omp %s 2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fno-openmp-extensions -verify=expected,omp50,omp %s 3 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-extensions -verify=expected,omp50 %s 4 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45,omp -fno-openmp-extensions -Wno-openmp %s 5 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45,omp -fno-openmp-extensions -Wno-source-uses-openmp %s 6 7 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -fno-openmp-extensions -verify=expected,omp45,omp45warn,omp %s 8 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp50,omp -fno-openmp-extensions %s 9 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 10 11 void bar(); 12 13 template <class T> 14 void foo() { 15 T a = T(); 16 // PARALLEL DIRECTIVE 17 #pragma omp parallel 18 #pragma omp for 19 for (int i = 0; i < 10; ++i) 20 ; 21 #pragma omp parallel 22 #pragma omp simd 23 for (int i = 0; i < 10; ++i) 24 ; 25 #pragma omp parallel 26 #pragma omp for simd 27 for (int i = 0; i < 10; ++i) 28 ; 29 #pragma omp parallel 30 #pragma omp sections 31 { 32 bar(); 33 } 34 #pragma omp parallel 35 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 36 { 37 bar(); 38 } 39 #pragma omp parallel 40 #pragma omp single 41 bar(); 42 43 #pragma omp parallel 44 #pragma omp master 45 { 46 bar(); 47 } 48 #pragma omp parallel 49 #pragma omp critical 50 { 51 bar(); 52 } 53 #pragma omp parallel 54 #pragma omp parallel for 55 for (int i = 0; i < 10; ++i) 56 ; 57 #pragma omp parallel 58 #pragma omp parallel for simd 59 for (int i = 0; i < 10; ++i) 60 ; 61 #pragma omp parallel 62 #pragma omp parallel sections 63 { 64 bar(); 65 } 66 #pragma omp parallel 67 #pragma omp parallel master 68 { 69 bar(); 70 } 71 #pragma omp parallel 72 #pragma omp parallel masked 73 { 74 bar(); 75 } 76 #pragma omp parallel 77 #pragma omp task 78 { 79 bar(); 80 } 81 #pragma omp parallel 82 { 83 #pragma omp taskyield 84 bar(); 85 } 86 #pragma omp parallel 87 { 88 #pragma omp barrier 89 bar(); 90 } 91 #pragma omp parallel 92 { 93 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 94 bar(); 95 } 96 #pragma omp parallel 97 { 98 #pragma omp taskwait 99 bar(); 100 } 101 #pragma omp parallel 102 { 103 #pragma omp flush 104 bar(); 105 } 106 #pragma omp parallel 107 { 108 #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?}} 109 bar(); 110 } 111 #pragma omp parallel 112 { 113 #pragma omp atomic 114 ++a; 115 } 116 #pragma omp parallel 117 { 118 #pragma omp target 119 ++a; 120 } 121 #pragma omp parallel 122 { 123 #pragma omp target parallel 124 ++a; 125 } 126 #pragma omp parallel 127 { 128 #pragma omp target parallel for 129 for (int i = 0; i < 10; ++i) 130 ; 131 } 132 #pragma omp parallel 133 { 134 #pragma omp target enter data map(to: a) 135 ++a; 136 } 137 #pragma omp parallel 138 { 139 #pragma omp target exit data map(from: a) 140 ++a; 141 } 142 #pragma omp parallel 143 { 144 #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?}} 145 ++a; 146 } 147 #pragma omp parallel 148 { 149 #pragma omp taskloop 150 for (int i = 0; i < 10; ++i) 151 ++a; 152 } 153 #pragma omp parallel 154 { 155 #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?}} 156 for (int i = 0; i < 10; ++i) 157 ; 158 } 159 #pragma omp parallel 160 { 161 #pragma omp target update to(a) 162 } 163 #pragma omp parallel 164 { 165 #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?}} 166 for (int i = 0; i < 10; ++i) 167 ; 168 } 169 #pragma omp parallel 170 { 171 #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?}} 172 for (int i = 0; i < 10; ++i) 173 ; 174 } 175 #pragma omp parallel 176 { 177 #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?}} 178 for (int i = 0; i < 10; ++i) 179 ; 180 } 181 #pragma omp parallel 182 { 183 #pragma omp target simd // OK 184 for (int i = 0; i < 10; ++i) 185 ; 186 } 187 #pragma omp parallel 188 { 189 #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?}} 190 for (int i = 0; i < 10; ++i) 191 ; 192 } 193 #pragma omp parallel 194 { 195 #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?}} 196 for (int i = 0; i < 10; ++i) 197 ; 198 } 199 #pragma omp parallel 200 { 201 #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?}} 202 for (int i = 0; i < 10; ++i) 203 ; 204 } 205 #pragma omp parallel 206 { 207 #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?}} 208 for (int i = 0; i < 10; ++i) 209 ; 210 } 211 #pragma omp parallel 212 { 213 #pragma omp target teams // OK 214 ++a; 215 } 216 #pragma omp parallel 217 { 218 #pragma omp target teams distribute // OK 219 for (int i = 0; i < 10; ++i) 220 ; 221 } 222 #pragma omp parallel 223 { 224 #pragma omp target teams distribute parallel for // OK 225 for (int i = 0; i < 10; ++i) 226 ; 227 } 228 #pragma omp parallel 229 { 230 #pragma omp target teams distribute parallel for simd // OK 231 for (int i = 0; i < 10; ++i) 232 ; 233 } 234 #pragma omp parallel 235 { 236 #pragma omp target teams distribute simd // OK 237 for (int i = 0; i < 10; ++i) 238 ; 239 } 240 241 // SIMD DIRECTIVE 242 #pragma omp simd 243 for (int i = 0; i < 10; ++i) { 244 #pragma omp for // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{OpenMP constructs may not be nested inside a simd region except for ordered simd, simd, scan, or atomic directive}} 245 for (int i = 0; i < 10; ++i) 246 ; 247 } 248 #pragma omp simd 249 for (int i = 0; i < 10; ++i) { 250 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 251 for (int i = 0; i < 10; ++i) 252 ; 253 } 254 #pragma omp simd 255 for (int i = 0; i < 10; ++i) { 256 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 257 for (int i = 0; i < 10; ++i) 258 ; 259 } 260 #pragma omp simd 261 for (int i = 0; i < 10; ++i) { 262 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 263 for (int i = 0; i < 10; ++i) 264 ; 265 } 266 #pragma omp simd 267 for (int i = 0; i < 10; ++i) { 268 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 269 { 270 bar(); 271 } 272 } 273 #pragma omp simd 274 for (int i = 0; i < 10; ++i) { 275 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 276 { 277 bar(); 278 } 279 } 280 #pragma omp simd 281 for (int i = 0; i < 10; ++i) { 282 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 283 { 284 bar(); 285 } 286 } 287 #pragma omp simd 288 for (int i = 0; i < 10; ++i) { 289 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 290 { 291 bar(); 292 } 293 } 294 #pragma omp simd 295 for (int i = 0; i < 10; ++i) { 296 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 297 { 298 bar(); 299 } 300 } 301 #pragma omp simd 302 for (int i = 0; i < 10; ++i) { 303 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 304 for (int i = 0; i < 10; ++i) 305 ; 306 } 307 #pragma omp simd 308 for (int i = 0; i < 10; ++i) { 309 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 310 for (int i = 0; i < 10; ++i) 311 ; 312 } 313 #pragma omp simd 314 for (int i = 0; i < 10; ++i) { 315 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 316 { 317 bar(); 318 } 319 } 320 #pragma omp simd 321 for (int i = 0; i < 10; ++i) { 322 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 323 { 324 bar(); 325 } 326 } 327 #pragma omp simd 328 for (int i = 0; i < 10; ++i) { 329 #pragma omp parallel masked // expected-error {{OpenMP constructs may not be nested inside a simd region}} 330 { 331 bar(); 332 } 333 } 334 #pragma omp simd 335 for (int i = 0; i < 10; ++i) { 336 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 337 { 338 bar(); 339 } 340 } 341 #pragma omp simd 342 for (int i = 0; i < 10; ++i) { 343 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 344 bar(); 345 } 346 #pragma omp simd 347 for (int i = 0; i < 10; ++i) { 348 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 349 bar(); 350 } 351 #pragma omp simd 352 for (int i = 0; i < 10; ++i) { 353 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 354 bar(); 355 } 356 #pragma omp simd 357 for (int i = 0; i < 10; ++i) { 358 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 359 bar(); 360 } 361 #pragma omp simd 362 for (int i = 0; i < 10; ++i) { 363 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 364 bar(); 365 } 366 #pragma omp simd 367 for (int i = 0; i < 10; ++i) { 368 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 369 bar(); 370 } 371 #pragma omp simd 372 for (int i = 0; i < 10; ++i) { 373 #pragma omp ordered simd // OK 374 bar(); 375 } 376 #pragma omp simd 377 for (int i = 0; i < 10; ++i) { 378 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 379 bar(); 380 } 381 #pragma omp simd 382 for (int i = 0; i < 10; ++i) { 383 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 384 ++a; 385 } 386 #pragma omp simd 387 for (int i = 0; i < 10; ++i) { 388 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 389 ++a; 390 } 391 #pragma omp simd 392 for (int i = 0; i < 10; ++i) { 393 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 394 ++a; 395 } 396 #pragma omp simd 397 for (int i = 0; i < 10; ++i) { 398 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 399 for (int i = 0; i < 10; ++i) 400 ; 401 } 402 #pragma omp simd 403 for (int i = 0; i < 10; ++i) { 404 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 405 ++a; 406 } 407 #pragma omp simd 408 for (int i = 0; i < 10; ++i) { 409 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 410 ++a; 411 } 412 #pragma omp simd 413 for (int i = 0; i < 10; ++i) { 414 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 415 ++a; 416 } 417 #pragma omp simd 418 for (int i = 0; i < 10; ++i) { 419 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 420 for (int i = 0; i < 10; ++i) 421 ++a; 422 } 423 #pragma omp simd 424 for (int i = 0; i < 10; ++i) { 425 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 426 for (int j = 0; j < 10; ++j) 427 ; 428 } 429 #pragma omp simd 430 for (int i = 0; i < 10; ++i) { 431 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 432 } 433 #pragma omp simd 434 for (int i = 0; i < 10; ++i) { 435 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 436 for (int j = 0; j < 10; ++j) 437 ; 438 } 439 #pragma omp simd 440 for (int i = 0; i < 10; ++i) { 441 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 442 for (int j = 0; j < 10; ++j) 443 ; 444 } 445 #pragma omp simd 446 for (int i = 0; i < 10; ++i) { 447 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 448 for (int j = 0; j < 10; ++j) 449 ; 450 } 451 #pragma omp simd 452 for (int i = 0; i < 10; ++i) { 453 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 454 for (int j = 0; j < 10; ++j) 455 ; 456 } 457 #pragma omp simd 458 for (int i = 0; i < 10; ++i) { 459 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 460 for (int j = 0; j < 10; ++j) 461 ; 462 } 463 #pragma omp simd 464 for (int i = 0; i < 10; ++i) { 465 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 466 for (int j = 0; j < 10; ++j) 467 ; 468 } 469 #pragma omp simd 470 for (int i = 0; i < 10; ++i) { 471 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 472 for (int j = 0; j < 10; ++j) 473 ; 474 } 475 #pragma omp simd 476 for (int i = 0; i < 10; ++i) { 477 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 478 for (int j = 0; j < 10; ++j) 479 ; 480 } 481 #pragma omp simd 482 for (int i = 0; i < 10; ++i) { 483 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 484 ++a; 485 } 486 #pragma omp simd 487 for (int i = 0; i < 10; ++i) { 488 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 489 for (int j = 0; j < 10; ++j) 490 ; 491 } 492 #pragma omp simd 493 for (int i = 0; i < 10; ++i) { 494 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 495 for (int j = 0; j < 10; ++j) 496 ; 497 } 498 #pragma omp simd 499 for (int i = 0; i < 10; ++i) { 500 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 501 for (int j = 0; j < 10; ++j) 502 ; 503 } 504 #pragma omp simd 505 for (int i = 0; i < 10; ++i) { 506 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 507 for (int j = 0; j < 10; ++j) 508 ; 509 } 510 511 // FOR DIRECTIVE 512 #pragma omp for 513 for (int i = 0; i < 10; ++i) { 514 #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?}} 515 for (int i = 0; i < 10; ++i) 516 ; 517 } 518 #pragma omp for 519 for (int i = 0; i < 10; ++i) { 520 #pragma omp simd 521 for (int i = 0; i < 10; ++i) 522 ; 523 } 524 #pragma omp for 525 for (int i = 0; i < 10; ++i) { 526 #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?}} 527 for (int i = 0; i < 10; ++i) 528 ; 529 } 530 #pragma omp for 531 for (int i = 0; i < 10; ++i) { 532 #pragma omp parallel 533 for (int i = 0; i < 10; ++i) 534 ; 535 } 536 #pragma omp for 537 for (int i = 0; i < 10; ++i) { 538 #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?}} 539 { 540 bar(); 541 } 542 } 543 #pragma omp for 544 for (int i = 0; i < 10; ++i) { 545 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 546 { 547 bar(); 548 } 549 } 550 #pragma omp for 551 for (int i = 0; i < 10; ++i) { 552 #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?}} 553 { 554 bar(); 555 } 556 } 557 558 #pragma omp for 559 for (int i = 0; i < 10; ++i) { 560 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 561 { 562 bar(); 563 } 564 } 565 #pragma omp for 566 for (int i = 0; i < 10; ++i) { 567 #pragma omp critical 568 { 569 bar(); 570 } 571 } 572 #pragma omp for 573 for (int i = 0; i < 10; ++i) { 574 #pragma omp parallel 575 { 576 #pragma omp single // OK 577 { 578 bar(); 579 } 580 #pragma omp for // OK 581 for (int i = 0; i < 10; ++i) 582 ; 583 #pragma omp sections // OK 584 { 585 bar(); 586 } 587 } 588 } 589 #pragma omp for 590 for (int i = 0; i < 10; ++i) { 591 #pragma omp parallel for 592 for (int i = 0; i < 10; ++i) 593 ; 594 } 595 #pragma omp for 596 for (int i = 0; i < 10; ++i) { 597 #pragma omp parallel for simd 598 for (int i = 0; i < 10; ++i) 599 ; 600 } 601 #pragma omp for 602 for (int i = 0; i < 10; ++i) { 603 #pragma omp parallel master 604 { 605 bar(); 606 } 607 } 608 #pragma omp for 609 for (int i = 0; i < 10; ++i) { 610 #pragma omp parallel masked 611 { 612 bar(); 613 } 614 } 615 #pragma omp for 616 for (int i = 0; i < 10; ++i) { 617 #pragma omp parallel sections 618 { 619 bar(); 620 } 621 } 622 #pragma omp for 623 for (int i = 0; i < 10; ++i) { 624 #pragma omp task 625 { 626 bar(); 627 } 628 } 629 #pragma omp for 630 for (int i = 0; i < 10; ++i) { 631 #pragma omp taskyield 632 bar(); 633 } 634 #pragma omp for 635 for (int i = 0; i < 10; ++i) { 636 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 637 bar(); 638 } 639 #pragma omp for 640 for (int i = 0; i < 10; ++i) { 641 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 642 bar(); 643 } 644 #pragma omp for 645 for (int i = 0; i < 10; ++i) { 646 #pragma omp taskwait 647 bar(); 648 } 649 #pragma omp for 650 for (int i = 0; i < 10; ++i) { 651 #pragma omp flush 652 bar(); 653 } 654 #pragma omp for 655 for (int i = 0; i < 10; ++i) { 656 #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?}} 657 bar(); 658 } 659 #pragma omp for ordered 660 for (int i = 0; i < 10; ++i) { 661 #pragma omp ordered // OK 662 bar(); 663 } 664 #pragma omp for 665 for (int i = 0; i < 10; ++i) { 666 #pragma omp atomic 667 ++a; 668 } 669 #pragma omp for 670 for (int i = 0; i < 10; ++i) { 671 #pragma omp target 672 ++a; 673 } 674 #pragma omp for 675 for (int i = 0; i < 10; ++i) { 676 #pragma omp target parallel 677 ++a; 678 } 679 #pragma omp for 680 for (int i = 0; i < 10; ++i) { 681 #pragma omp target parallel for 682 for (int i = 0; i < 10; ++i) 683 ; 684 } 685 #pragma omp for 686 for (int i = 0; i < 10; ++i) { 687 #pragma omp target enter data map(to: a) 688 ++a; 689 } 690 #pragma omp for 691 for (int i = 0; i < 10; ++i) { 692 #pragma omp target exit data map(from: a) 693 ++a; 694 } 695 #pragma omp for 696 for (int i = 0; i < 10; ++i) { 697 #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?}} 698 ++a; 699 } 700 #pragma omp for 701 for (int i = 0; i < 10; ++i) { 702 #pragma omp taskloop 703 for (int i = 0; i < 10; ++i) 704 ++a; 705 } 706 #pragma omp for 707 for (int i = 0; i < 10; ++i) { 708 #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?}} 709 for (int j = 0; j < 10; ++j) 710 ; 711 } 712 #pragma omp for 713 for (int i = 0; i < 10; ++i) { 714 #pragma omp target update to(a) 715 } 716 #pragma omp for 717 for (int i = 0; i < 10; ++i) { 718 #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?}} 719 for (int j = 0; j < 10; ++j) 720 ; 721 } 722 #pragma omp for 723 for (int i = 0; i < 10; ++i) { 724 #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?}} 725 for (int j = 0; j < 10; ++j) 726 ; 727 } 728 #pragma omp for 729 for (int i = 0; i < 10; ++i) { 730 #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?}} 731 for (int j = 0; j < 10; ++j) 732 ; 733 } 734 #pragma omp for 735 for (int i = 0; i < 10; ++i) { 736 #pragma omp target simd // OK 737 for (int j = 0; j < 10; ++j) 738 ; 739 } 740 #pragma omp for 741 for (int i = 0; i < 10; ++i) { 742 #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?}} 743 for (int j = 0; j < 10; ++j) 744 ; 745 } 746 #pragma omp for 747 for (int i = 0; i < 10; ++i) { 748 #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?}} 749 for (int j = 0; j < 10; ++j) 750 ; 751 } 752 #pragma omp for 753 for (int i = 0; i < 10; ++i) { 754 #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?}} 755 for (int j = 0; j < 10; ++j) 756 ; 757 } 758 #pragma omp for 759 for (int i = 0; i < 10; ++i) { 760 #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?}} 761 for (int j = 0; j < 10; ++j) 762 ; 763 } 764 #pragma omp for 765 for (int i = 0; i < 10; ++i) { 766 #pragma omp target teams // OK 767 ++a; 768 } 769 #pragma omp for 770 for (int i = 0; i < 10; ++i) { 771 #pragma omp target teams distribute // OK 772 for (int j = 0; j < 10; ++j) 773 ; 774 } 775 #pragma omp for 776 for (int i = 0; i < 10; ++i) { 777 #pragma omp target teams distribute parallel for // OK 778 for (int j = 0; j < 10; ++j) 779 ; 780 } 781 #pragma omp for 782 for (int i = 0; i < 10; ++i) { 783 #pragma omp target teams distribute parallel for simd // OK 784 for (int j = 0; j < 10; ++j) 785 ; 786 } 787 #pragma omp for 788 for (int i = 0; i < 10; ++i) { 789 #pragma omp target teams distribute simd // OK 790 for (int j = 0; j < 10; ++j) 791 ; 792 } 793 794 // FOR SIMD DIRECTIVE 795 #pragma omp for simd 796 for (int i = 0; i < 10; ++i) { 797 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 798 for (int i = 0; i < 10; ++i) 799 ; 800 } 801 #pragma omp for simd 802 for (int i = 0; i < 10; ++i) { 803 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 804 for (int i = 0; i < 10; ++i) 805 ; 806 } 807 #pragma omp for simd 808 for (int i = 0; i < 10; ++i) { 809 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 810 for (int i = 0; i < 10; ++i) 811 ; 812 } 813 #pragma omp for simd 814 for (int i = 0; i < 10; ++i) { 815 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 816 for (int i = 0; i < 10; ++i) 817 ; 818 } 819 #pragma omp for simd 820 for (int i = 0; i < 10; ++i) { 821 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 822 { 823 bar(); 824 } 825 } 826 #pragma omp for simd 827 for (int i = 0; i < 10; ++i) { 828 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 829 { 830 bar(); 831 } 832 } 833 #pragma omp for simd 834 for (int i = 0; i < 10; ++i) { 835 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 836 { 837 bar(); 838 } 839 } 840 #pragma omp for simd 841 for (int i = 0; i < 10; ++i) { 842 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 843 { 844 bar(); 845 } 846 } 847 #pragma omp for simd 848 for (int i = 0; i < 10; ++i) { 849 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 850 { 851 bar(); 852 } 853 } 854 #pragma omp for simd 855 for (int i = 0; i < 10; ++i) { 856 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 857 for (int i = 0; i < 10; ++i) 858 ; 859 } 860 #pragma omp for simd 861 for (int i = 0; i < 10; ++i) { 862 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 863 for (int i = 0; i < 10; ++i) 864 ; 865 } 866 #pragma omp for simd 867 for (int i = 0; i < 10; ++i) { 868 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 869 { 870 bar(); 871 } 872 } 873 #pragma omp for simd 874 for (int i = 0; i < 10; ++i) { 875 #pragma omp parallel masked // expected-error {{OpenMP constructs may not be nested inside a simd region}} 876 { 877 bar(); 878 } 879 } 880 #pragma omp for simd 881 for (int i = 0; i < 10; ++i) { 882 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 883 { 884 bar(); 885 } 886 } 887 #pragma omp for simd 888 for (int i = 0; i < 10; ++i) { 889 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 890 { 891 bar(); 892 } 893 } 894 #pragma omp for simd 895 for (int i = 0; i < 10; ++i) { 896 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 897 bar(); 898 } 899 #pragma omp for simd 900 for (int i = 0; i < 10; ++i) { 901 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 902 bar(); 903 } 904 #pragma omp for simd 905 for (int i = 0; i < 10; ++i) { 906 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 907 bar(); 908 } 909 #pragma omp for simd 910 for (int i = 0; i < 10; ++i) { 911 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 912 bar(); 913 } 914 #pragma omp for simd 915 for (int i = 0; i < 10; ++i) { 916 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 917 bar(); 918 } 919 #pragma omp for simd 920 for (int i = 0; i < 10; ++i) { 921 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 922 bar(); 923 } 924 #pragma omp for simd 925 for (int i = 0; i < 10; ++i) { 926 #pragma omp ordered simd // OK 927 bar(); 928 } 929 #pragma omp for simd 930 for (int i = 0; i < 10; ++i) { 931 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 932 bar(); 933 } 934 #pragma omp for simd 935 for (int i = 0; i < 10; ++i) { 936 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 937 ++a; 938 } 939 #pragma omp for simd 940 for (int i = 0; i < 10; ++i) { 941 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 942 ++a; 943 } 944 #pragma omp for simd 945 for (int i = 0; i < 10; ++i) { 946 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 947 ++a; 948 } 949 #pragma omp for simd 950 for (int i = 0; i < 10; ++i) { 951 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 952 for (int i = 0; i < 10; ++i) 953 ; 954 } 955 #pragma omp for simd 956 for (int i = 0; i < 10; ++i) { 957 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 958 ++a; 959 } 960 #pragma omp for simd 961 for (int i = 0; i < 10; ++i) { 962 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 963 ++a; 964 } 965 #pragma omp for simd 966 for (int i = 0; i < 10; ++i) { 967 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 968 ++a; 969 } 970 #pragma omp for simd 971 for (int i = 0; i < 10; ++i) { 972 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 973 for (int i = 0; i < 10; ++i) 974 ++a; 975 } 976 #pragma omp for simd 977 for (int i = 0; i < 10; ++i) { 978 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 979 for (int j = 0; j < 10; ++j) 980 ; 981 } 982 #pragma omp for simd 983 for (int i = 0; i < 10; ++i) { 984 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 985 bar(); 986 } 987 #pragma omp for simd 988 for (int i = 0; i < 10; ++i) { 989 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 990 for (int j = 0; j < 10; ++j) 991 ; 992 } 993 #pragma omp for simd 994 for (int i = 0; i < 10; ++i) { 995 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 996 for (int j = 0; j < 10; ++j) 997 ; 998 } 999 #pragma omp for simd 1000 for (int i = 0; i < 10; ++i) { 1001 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1002 for (int j = 0; j < 10; ++j) 1003 ; 1004 } 1005 #pragma omp for simd 1006 for (int i = 0; i < 10; ++i) { 1007 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1008 for (int j = 0; j < 10; ++j) 1009 ; 1010 } 1011 #pragma omp for simd 1012 for (int i = 0; i < 10; ++i) { 1013 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1014 for (int j = 0; j < 10; ++j) 1015 ; 1016 } 1017 #pragma omp for simd 1018 for (int i = 0; i < 10; ++i) { 1019 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1020 for (int j = 0; j < 10; ++j) 1021 ; 1022 } 1023 #pragma omp for simd 1024 for (int i = 0; i < 10; ++i) { 1025 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1026 for (int j = 0; j < 10; ++j) 1027 ; 1028 } 1029 #pragma omp for simd 1030 for (int i = 0; i < 10; ++i) { 1031 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1032 for (int j = 0; j < 10; ++j) 1033 ; 1034 } 1035 #pragma omp for simd 1036 for (int i = 0; i < 10; ++i) { 1037 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1038 a++; 1039 } 1040 #pragma omp for simd 1041 for (int i = 0; i < 10; ++i) { 1042 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1043 for (int j = 0; j < 10; ++j) 1044 ; 1045 } 1046 #pragma omp for simd 1047 for (int i = 0; i < 10; ++i) { 1048 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1049 for (int j = 0; j < 10; ++j) 1050 ; 1051 } 1052 #pragma omp for simd 1053 for (int i = 0; i < 10; ++i) { 1054 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1055 for (int j = 0; j < 10; ++j) 1056 ; 1057 } 1058 #pragma omp for simd 1059 for (int i = 0; i < 10; ++i) { 1060 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1061 for (int j = 0; j < 10; ++j) 1062 ; 1063 } 1064 1065 // SECTIONS DIRECTIVE 1066 #pragma omp sections 1067 { 1068 #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?}} 1069 for (int i = 0; i < 10; ++i) 1070 ; 1071 } 1072 #pragma omp sections 1073 { 1074 #pragma omp simd 1075 for (int i = 0; i < 10; ++i) 1076 ; 1077 } 1078 #pragma omp sections 1079 { 1080 #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?}} 1081 for (int i = 0; i < 10; ++i) 1082 ; 1083 } 1084 #pragma omp sections 1085 { 1086 #pragma omp parallel 1087 for (int i = 0; i < 10; ++i) 1088 ; 1089 } 1090 #pragma omp sections 1091 { 1092 #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?}} 1093 { 1094 bar(); 1095 } 1096 } 1097 #pragma omp sections 1098 { 1099 #pragma omp section 1100 { 1101 bar(); 1102 } 1103 } 1104 #pragma omp sections 1105 { 1106 #pragma omp parallel 1107 { 1108 #pragma omp single // OK 1109 { 1110 bar(); 1111 } 1112 #pragma omp for // OK 1113 for (int i = 0; i < 10; ++i) 1114 ; 1115 #pragma omp sections // OK 1116 { 1117 bar(); 1118 } 1119 } 1120 } 1121 #pragma omp sections 1122 { 1123 #pragma omp parallel master 1124 { 1125 bar(); 1126 } 1127 } 1128 #pragma omp sections 1129 { 1130 #pragma omp parallel masked 1131 { 1132 bar(); 1133 } 1134 } 1135 #pragma omp sections 1136 { 1137 #pragma omp parallel 1138 { 1139 #pragma omp master // OK 1140 { 1141 bar(); 1142 } 1143 #pragma omp for // OK 1144 for (int i = 0; i < 10; ++i) 1145 ; 1146 #pragma omp master // OK 1147 { 1148 bar(); 1149 } 1150 } 1151 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1152 bar(); 1153 } 1154 #pragma omp sections 1155 { 1156 #pragma omp parallel 1157 { 1158 #pragma omp critical(A) // OK 1159 { 1160 bar(); 1161 } 1162 #pragma omp for // OK 1163 for (int i = 0; i < 10; ++i) 1164 ; 1165 #pragma omp critical // OK 1166 { 1167 bar(); 1168 } 1169 } 1170 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1171 bar(); 1172 } 1173 #pragma omp sections 1174 { 1175 #pragma omp parallel for 1176 for (int i = 0; i < 10; ++i) 1177 ; 1178 } 1179 #pragma omp sections 1180 { 1181 #pragma omp parallel for simd 1182 for (int i = 0; i < 10; ++i) 1183 ; 1184 } 1185 #pragma omp sections 1186 { 1187 #pragma omp parallel sections 1188 { 1189 bar(); 1190 } 1191 } 1192 #pragma omp sections 1193 { 1194 #pragma omp task 1195 { 1196 bar(); 1197 } 1198 } 1199 #pragma omp sections 1200 { 1201 #pragma omp taskyield 1202 } 1203 #pragma omp sections 1204 { 1205 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1206 } 1207 #pragma omp sections 1208 { 1209 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}} 1210 } 1211 #pragma omp sections 1212 { 1213 #pragma omp taskwait 1214 } 1215 #pragma omp sections 1216 { 1217 #pragma omp flush 1218 } 1219 #pragma omp sections 1220 { 1221 #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?}} 1222 bar(); 1223 } 1224 #pragma omp sections 1225 { 1226 #pragma omp atomic 1227 ++a; 1228 } 1229 #pragma omp sections 1230 { 1231 #pragma omp target 1232 ++a; 1233 } 1234 #pragma omp sections 1235 { 1236 #pragma omp target parallel 1237 ++a; 1238 } 1239 #pragma omp sections 1240 { 1241 #pragma omp target parallel for 1242 for (int i = 0; i < 10; ++i) 1243 ; 1244 } 1245 #pragma omp sections 1246 { 1247 #pragma omp target enter data map(to: a) 1248 } 1249 #pragma omp sections 1250 { 1251 #pragma omp target exit data map(from: a) 1252 } 1253 #pragma omp sections 1254 { 1255 #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?}} 1256 ++a; 1257 } 1258 #pragma omp sections 1259 { 1260 #pragma omp taskloop 1261 for (int i = 0; i < 10; ++i) 1262 ++a; 1263 } 1264 #pragma omp sections 1265 { 1266 #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?}} 1267 for (int i = 0; i < 10; ++i) 1268 ; 1269 } 1270 #pragma omp sections 1271 { 1272 #pragma omp target update to(a) 1273 } 1274 #pragma omp sections 1275 { 1276 #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?}} 1277 for (int i = 0; i < 10; ++i) 1278 ; 1279 } 1280 #pragma omp sections 1281 { 1282 #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?}} 1283 for (int i = 0; i < 10; ++i) 1284 ; 1285 } 1286 #pragma omp sections 1287 { 1288 #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?}} 1289 for (int i = 0; i < 10; ++i) 1290 ; 1291 } 1292 #pragma omp sections 1293 { 1294 #pragma omp target simd // OK 1295 for (int i = 0; i < 10; ++i) 1296 ; 1297 } 1298 #pragma omp sections 1299 { 1300 #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?}} 1301 for (int i = 0; i < 10; ++i) 1302 ; 1303 } 1304 #pragma omp sections 1305 { 1306 #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?}} 1307 for (int i = 0; i < 10; ++i) 1308 ; 1309 } 1310 #pragma omp sections 1311 { 1312 #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?}} 1313 for (int i = 0; i < 10; ++i) 1314 ; 1315 } 1316 #pragma omp sections 1317 { 1318 #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?}} 1319 for (int i = 0; i < 10; ++i) 1320 ; 1321 } 1322 #pragma omp sections 1323 { 1324 #pragma omp target teams // OK 1325 ++a; 1326 } 1327 #pragma omp sections 1328 { 1329 #pragma omp target teams distribute // OK 1330 for (int i = 0; i < 10; ++i) 1331 ; 1332 } 1333 #pragma omp sections 1334 { 1335 #pragma omp target teams distribute parallel for // OK 1336 for (int i = 0; i < 10; ++i) 1337 ; 1338 } 1339 #pragma omp sections 1340 { 1341 #pragma omp target teams distribute parallel for simd // OK 1342 for (int i = 0; i < 10; ++i) 1343 ; 1344 } 1345 #pragma omp sections 1346 { 1347 #pragma omp target teams distribute simd // OK 1348 for (int i = 0; i < 10; ++i) 1349 ; 1350 } 1351 1352 // SECTION DIRECTIVE 1353 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1354 { 1355 bar(); 1356 } 1357 #pragma omp sections 1358 { 1359 #pragma omp section 1360 { 1361 #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?}} 1362 for (int i = 0; i < 10; ++i) 1363 ; 1364 } 1365 } 1366 #pragma omp sections 1367 { 1368 #pragma omp section 1369 { 1370 #pragma omp simd 1371 for (int i = 0; i < 10; ++i) 1372 ; 1373 } 1374 } 1375 #pragma omp sections 1376 { 1377 #pragma omp section 1378 { 1379 #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?}} 1380 for (int i = 0; i < 10; ++i) 1381 ; 1382 } 1383 } 1384 #pragma omp sections 1385 { 1386 #pragma omp section 1387 { 1388 #pragma omp parallel 1389 for (int i = 0; i < 10; ++i) 1390 ; 1391 } 1392 } 1393 #pragma omp sections 1394 { 1395 #pragma omp section 1396 { 1397 #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?}} 1398 { 1399 bar(); 1400 } 1401 } 1402 } 1403 #pragma omp sections 1404 { 1405 #pragma omp section 1406 { 1407 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1408 { 1409 bar(); 1410 } 1411 } 1412 } 1413 #pragma omp sections 1414 { 1415 #pragma omp section 1416 { 1417 #pragma omp parallel master 1418 bar(); 1419 #pragma omp critical 1420 bar(); 1421 } 1422 } 1423 #pragma omp sections 1424 { 1425 #pragma omp section 1426 { 1427 #pragma omp parallel masked 1428 bar(); 1429 #pragma omp critical 1430 bar(); 1431 } 1432 } 1433 #pragma omp sections 1434 { 1435 #pragma omp section 1436 { 1437 #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?}} 1438 bar(); 1439 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1440 bar(); 1441 #pragma omp critical 1442 bar(); 1443 } 1444 } 1445 #pragma omp sections 1446 { 1447 #pragma omp section 1448 { 1449 #pragma omp parallel 1450 { 1451 #pragma omp single // OK 1452 { 1453 bar(); 1454 } 1455 #pragma omp for // OK 1456 for (int i = 0; i < 10; ++i) 1457 ; 1458 #pragma omp for simd // OK 1459 for (int i = 0; i < 10; ++i) 1460 ; 1461 #pragma omp sections // OK 1462 { 1463 bar(); 1464 } 1465 } 1466 } 1467 } 1468 #pragma omp sections 1469 { 1470 #pragma omp section 1471 { 1472 #pragma omp parallel for 1473 for (int i = 0; i < 10; ++i) 1474 ; 1475 } 1476 } 1477 #pragma omp sections 1478 { 1479 #pragma omp section 1480 { 1481 #pragma omp parallel for simd 1482 for (int i = 0; i < 10; ++i) 1483 ; 1484 } 1485 } 1486 #pragma omp sections 1487 { 1488 #pragma omp section 1489 { 1490 #pragma omp parallel sections 1491 { 1492 bar(); 1493 } 1494 } 1495 } 1496 #pragma omp sections 1497 { 1498 #pragma omp section 1499 { 1500 #pragma omp task 1501 { 1502 bar(); 1503 } 1504 } 1505 } 1506 #pragma omp sections 1507 { 1508 #pragma omp section 1509 { 1510 #pragma omp taskyield 1511 bar(); 1512 } 1513 } 1514 #pragma omp sections 1515 { 1516 #pragma omp section 1517 { 1518 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1519 bar(); 1520 } 1521 } 1522 #pragma omp sections 1523 { 1524 #pragma omp section 1525 { 1526 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}} 1527 bar(); 1528 } 1529 } 1530 #pragma omp sections 1531 { 1532 #pragma omp section 1533 { 1534 #pragma omp taskwait 1535 bar(); 1536 } 1537 } 1538 #pragma omp sections 1539 { 1540 #pragma omp section 1541 { 1542 #pragma omp flush 1543 bar(); 1544 } 1545 } 1546 #pragma omp sections 1547 { 1548 #pragma omp section 1549 { 1550 #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?}} 1551 bar(); 1552 } 1553 } 1554 #pragma omp sections 1555 { 1556 #pragma omp section 1557 #pragma omp atomic 1558 ++a; 1559 } 1560 #pragma omp sections 1561 { 1562 #pragma omp section 1563 #pragma omp target 1564 ++a; 1565 } 1566 #pragma omp sections 1567 { 1568 #pragma omp section 1569 #pragma omp target parallel 1570 ++a; 1571 } 1572 #pragma omp sections 1573 { 1574 #pragma omp section 1575 { 1576 #pragma omp target parallel for 1577 for (int i = 0; i < 10; ++i) 1578 ; 1579 } 1580 } 1581 #pragma omp sections 1582 { 1583 #pragma omp section 1584 { 1585 #pragma omp target enter data map(to: a) 1586 ++a; 1587 } 1588 } 1589 #pragma omp sections 1590 { 1591 #pragma omp section 1592 { 1593 #pragma omp target exit data map(from: a) 1594 ++a; 1595 } 1596 } 1597 #pragma omp sections 1598 { 1599 #pragma omp section 1600 #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?}} 1601 ++a; 1602 } 1603 #pragma omp sections 1604 { 1605 #pragma omp section 1606 #pragma omp taskloop 1607 for (int i = 0; i < 10; ++i) 1608 ++a; 1609 } 1610 #pragma omp sections 1611 { 1612 #pragma omp section 1613 #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?}} 1614 for (int i = 0; i < 10; ++i) 1615 ; 1616 } 1617 #pragma omp sections 1618 { 1619 #pragma omp section 1620 { 1621 bar(); 1622 #pragma omp target update to(a) 1623 } 1624 } 1625 #pragma omp sections 1626 { 1627 #pragma omp section 1628 #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?}} 1629 for (int i = 0; i < 10; ++i) 1630 ; 1631 } 1632 #pragma omp sections 1633 { 1634 #pragma omp section 1635 #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?}} 1636 for (int i = 0; i < 10; ++i) 1637 ; 1638 } 1639 #pragma omp sections 1640 { 1641 #pragma omp section 1642 #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?}} 1643 for (int i = 0; i < 10; ++i) 1644 ; 1645 } 1646 #pragma omp sections 1647 { 1648 #pragma omp section 1649 #pragma omp target simd // OK 1650 for (int i = 0; i < 10; ++i) 1651 ; 1652 } 1653 #pragma omp sections 1654 { 1655 #pragma omp section 1656 #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?}} 1657 for (int i = 0; i < 10; ++i) 1658 ; 1659 } 1660 #pragma omp sections 1661 { 1662 #pragma omp section 1663 #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?}} 1664 for (int i = 0; i < 10; ++i) 1665 ; 1666 } 1667 #pragma omp sections 1668 { 1669 #pragma omp section 1670 #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?}} 1671 for (int i = 0; i < 10; ++i) 1672 ; 1673 } 1674 #pragma omp sections 1675 { 1676 #pragma omp section 1677 #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?}} 1678 for (int i = 0; i < 10; ++i) 1679 ; 1680 } 1681 #pragma omp sections 1682 { 1683 #pragma omp section 1684 #pragma omp target teams // OK 1685 ++a; 1686 } 1687 #pragma omp sections 1688 { 1689 #pragma omp section 1690 #pragma omp target teams distribute // OK 1691 for (int i = 0; i < 10; ++i) 1692 ; 1693 } 1694 #pragma omp sections 1695 { 1696 #pragma omp section 1697 #pragma omp target teams distribute parallel for // OK 1698 for (int i = 0; i < 10; ++i) 1699 ; 1700 } 1701 #pragma omp sections 1702 { 1703 #pragma omp section 1704 #pragma omp target teams distribute parallel for simd // OK 1705 for (int i = 0; i < 10; ++i) 1706 ; 1707 } 1708 #pragma omp sections 1709 { 1710 #pragma omp section 1711 #pragma omp target teams distribute simd // OK 1712 for (int i = 0; i < 10; ++i) 1713 ; 1714 } 1715 1716 // SINGLE DIRECTIVE 1717 #pragma omp single 1718 { 1719 #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?}} 1720 for (int i = 0; i < 10; ++i) 1721 ; 1722 } 1723 #pragma omp single 1724 { 1725 #pragma omp simd 1726 for (int i = 0; i < 10; ++i) 1727 ; 1728 } 1729 #pragma omp single 1730 { 1731 #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?}} 1732 for (int i = 0; i < 10; ++i) 1733 ; 1734 } 1735 #pragma omp single 1736 { 1737 #pragma omp parallel 1738 for (int i = 0; i < 10; ++i) 1739 ; 1740 } 1741 #pragma omp single 1742 { 1743 #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?}} 1744 { 1745 bar(); 1746 } 1747 } 1748 #pragma omp single 1749 { 1750 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1751 { 1752 bar(); 1753 } 1754 } 1755 #pragma omp single 1756 { 1757 #pragma omp parallel master 1758 { 1759 bar(); 1760 } 1761 } 1762 #pragma omp single 1763 { 1764 #pragma omp parallel masked 1765 { 1766 bar(); 1767 } 1768 } 1769 #pragma omp single 1770 { 1771 #pragma omp critical 1772 { 1773 bar(); 1774 } 1775 } 1776 #pragma omp single 1777 { 1778 #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?}} 1779 { 1780 bar(); 1781 } 1782 } 1783 #pragma omp single 1784 { 1785 #pragma omp parallel 1786 { 1787 #pragma omp single // OK 1788 { 1789 bar(); 1790 } 1791 #pragma omp for // OK 1792 for (int i = 0; i < 10; ++i) 1793 ; 1794 #pragma omp for simd // OK 1795 for (int i = 0; i < 10; ++i) 1796 ; 1797 #pragma omp sections // OK 1798 { 1799 bar(); 1800 } 1801 } 1802 } 1803 #pragma omp single 1804 { 1805 #pragma omp parallel for 1806 for (int i = 0; i < 10; ++i) 1807 ; 1808 } 1809 #pragma omp single 1810 { 1811 #pragma omp parallel for simd 1812 for (int i = 0; i < 10; ++i) 1813 ; 1814 } 1815 #pragma omp single 1816 { 1817 #pragma omp parallel sections 1818 { 1819 bar(); 1820 } 1821 } 1822 #pragma omp single 1823 { 1824 #pragma omp task 1825 { 1826 bar(); 1827 } 1828 } 1829 #pragma omp single 1830 { 1831 #pragma omp taskyield 1832 bar(); 1833 } 1834 #pragma omp single 1835 { 1836 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1837 bar(); 1838 } 1839 #pragma omp single 1840 { 1841 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}} 1842 bar(); 1843 } 1844 #pragma omp single 1845 { 1846 #pragma omp taskwait 1847 bar(); 1848 } 1849 #pragma omp single 1850 { 1851 #pragma omp flush 1852 bar(); 1853 } 1854 #pragma omp single 1855 { 1856 #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?}} 1857 bar(); 1858 } 1859 #pragma omp single 1860 { 1861 #pragma omp atomic 1862 ++a; 1863 } 1864 #pragma omp single 1865 { 1866 #pragma omp target 1867 ++a; 1868 } 1869 #pragma omp single 1870 { 1871 #pragma omp target parallel 1872 ++a; 1873 } 1874 #pragma omp single 1875 { 1876 #pragma omp target parallel for 1877 for (int i = 0; i < 10; ++i) 1878 ; 1879 } 1880 #pragma omp single 1881 { 1882 #pragma omp target enter data map(to: a) 1883 ++a; 1884 } 1885 #pragma omp single 1886 { 1887 #pragma omp target exit data map(from: a) 1888 ++a; 1889 } 1890 #pragma omp single 1891 { 1892 #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?}} 1893 ++a; 1894 } 1895 #pragma omp single 1896 { 1897 #pragma omp taskloop 1898 for (int i = 0; i < 10; ++i) 1899 ++a; 1900 } 1901 #pragma omp single 1902 { 1903 #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?}} 1904 for (int i = 0; i < 10; ++i) 1905 ; 1906 } 1907 #pragma omp single 1908 { 1909 #pragma omp target update to(a) 1910 bar(); 1911 } 1912 #pragma omp single 1913 { 1914 #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?}} 1915 for (int i = 0; i < 10; ++i) 1916 ; 1917 } 1918 #pragma omp single 1919 { 1920 #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?}} 1921 for (int i = 0; i < 10; ++i) 1922 ; 1923 } 1924 #pragma omp single 1925 { 1926 #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?}} 1927 for (int i = 0; i < 10; ++i) 1928 ; 1929 } 1930 #pragma omp single 1931 { 1932 #pragma omp target simd // OK 1933 for (int i = 0; i < 10; ++i) 1934 ; 1935 } 1936 #pragma omp single 1937 { 1938 #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?}} 1939 for (int i = 0; i < 10; ++i) 1940 ; 1941 } 1942 #pragma omp single 1943 { 1944 #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?}} 1945 for (int i = 0; i < 10; ++i) 1946 ; 1947 } 1948 #pragma omp single 1949 { 1950 #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?}} 1951 for (int i = 0; i < 10; ++i) 1952 ; 1953 } 1954 #pragma omp single 1955 { 1956 #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?}} 1957 for (int i = 0; i < 10; ++i) 1958 ; 1959 } 1960 #pragma omp single 1961 { 1962 #pragma omp target teams // OK 1963 ++a; 1964 } 1965 #pragma omp single 1966 { 1967 #pragma omp target teams distribute // OK 1968 for (int i = 0; i < 10; ++i) 1969 ; 1970 } 1971 #pragma omp single 1972 { 1973 #pragma omp target teams distribute parallel for // OK 1974 for (int i = 0; i < 10; ++i) 1975 ; 1976 } 1977 #pragma omp single 1978 { 1979 #pragma omp target teams distribute parallel for simd // OK 1980 for (int i = 0; i < 10; ++i) 1981 ; 1982 } 1983 #pragma omp single 1984 { 1985 #pragma omp target teams distribute simd // OK 1986 for (int i = 0; i < 10; ++i) 1987 ; 1988 } 1989 1990 // MASTER DIRECTIVE 1991 #pragma omp master 1992 { 1993 #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?}} 1994 for (int i = 0; i < 10; ++i) 1995 ; 1996 } 1997 #pragma omp master 1998 { 1999 #pragma omp simd 2000 for (int i = 0; i < 10; ++i) 2001 ; 2002 } 2003 #pragma omp master 2004 { 2005 #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?}} 2006 for (int i = 0; i < 10; ++i) 2007 ; 2008 } 2009 #pragma omp master 2010 { 2011 #pragma omp parallel 2012 for (int i = 0; i < 10; ++i) 2013 ; 2014 } 2015 #pragma omp master 2016 { 2017 #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?}} 2018 { 2019 bar(); 2020 } 2021 } 2022 #pragma omp master 2023 { 2024 #pragma omp master // OK, though second 'master' is redundant 2025 { 2026 bar(); 2027 } 2028 } 2029 #pragma omp master 2030 { 2031 #pragma omp critical 2032 { 2033 bar(); 2034 } 2035 } 2036 #pragma omp master 2037 { 2038 #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?}} 2039 { 2040 bar(); 2041 } 2042 } 2043 #pragma omp master 2044 { 2045 #pragma omp parallel 2046 { 2047 #pragma omp master // OK 2048 { 2049 bar(); 2050 } 2051 #pragma omp for // OK 2052 for (int i = 0; i < 10; ++i) 2053 ; 2054 #pragma omp for simd // OK 2055 for (int i = 0; i < 10; ++i) 2056 ; 2057 #pragma omp sections // OK 2058 { 2059 bar(); 2060 } 2061 } 2062 } 2063 #pragma omp master 2064 { 2065 #pragma omp parallel master // OK 2066 { 2067 bar(); 2068 } 2069 #pragma omp parallel 2070 { 2071 #pragma omp for // OK 2072 for (int i = 0; i < 10; ++i) 2073 ; 2074 #pragma omp for simd // OK 2075 for (int i = 0; i < 10; ++i) 2076 ; 2077 #pragma omp sections // OK 2078 { 2079 bar(); 2080 } 2081 } 2082 } 2083 #pragma omp master 2084 { 2085 #pragma omp parallel for 2086 for (int i = 0; i < 10; ++i) 2087 ; 2088 } 2089 #pragma omp master 2090 { 2091 #pragma omp parallel for simd 2092 for (int i = 0; i < 10; ++i) 2093 ; 2094 } 2095 #pragma omp master 2096 { 2097 #pragma omp parallel sections 2098 { 2099 bar(); 2100 } 2101 } 2102 #pragma omp master 2103 { 2104 #pragma omp task 2105 { 2106 bar(); 2107 } 2108 } 2109 #pragma omp master 2110 { 2111 #pragma omp taskyield 2112 bar(); 2113 } 2114 #pragma omp master 2115 { 2116 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 2117 bar(); 2118 } 2119 #pragma omp master 2120 { 2121 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}} 2122 bar(); 2123 } 2124 #pragma omp master 2125 { 2126 #pragma omp taskwait 2127 bar(); 2128 } 2129 #pragma omp master 2130 { 2131 #pragma omp flush 2132 bar(); 2133 } 2134 #pragma omp master 2135 { 2136 #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?}} 2137 bar(); 2138 } 2139 #pragma omp master 2140 { 2141 #pragma omp atomic 2142 ++a; 2143 } 2144 #pragma omp master 2145 { 2146 #pragma omp target 2147 ++a; 2148 } 2149 #pragma omp master 2150 { 2151 #pragma omp target parallel 2152 ++a; 2153 } 2154 #pragma omp master 2155 { 2156 #pragma omp target parallel for 2157 for (int i = 0; i < 10; ++i) 2158 ; 2159 } 2160 #pragma omp master 2161 { 2162 #pragma omp target enter data map(to: a) 2163 ++a; 2164 } 2165 #pragma omp master 2166 { 2167 #pragma omp target exit data map(from: a) 2168 ++a; 2169 } 2170 #pragma omp master 2171 { 2172 #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?}} 2173 ++a; 2174 } 2175 #pragma omp master 2176 { 2177 #pragma omp taskloop 2178 for (int i = 0; i < 10; ++i) 2179 ++a; 2180 } 2181 #pragma omp master 2182 { 2183 #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?}} 2184 for (int i = 0; i < 10; ++i) 2185 ; 2186 } 2187 #pragma omp master 2188 { 2189 #pragma omp target update to(a) 2190 bar(); 2191 } 2192 #pragma omp master 2193 { 2194 #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?}} 2195 for (int i = 0; i < 10; ++i) 2196 ; 2197 } 2198 #pragma omp master 2199 { 2200 #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?}} 2201 for (int i = 0; i < 10; ++i) 2202 ; 2203 } 2204 #pragma omp master 2205 { 2206 #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?}} 2207 for (int i = 0; i < 10; ++i) 2208 ; 2209 } 2210 #pragma omp master 2211 { 2212 #pragma omp target simd // OK 2213 for (int i = 0; i < 10; ++i) 2214 ; 2215 } 2216 #pragma omp master 2217 { 2218 #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?}} 2219 for (int i = 0; i < 10; ++i) 2220 ; 2221 } 2222 #pragma omp master 2223 { 2224 #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?}} 2225 for (int i = 0; i < 10; ++i) 2226 ; 2227 } 2228 #pragma omp master 2229 { 2230 #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?}} 2231 for (int i = 0; i < 10; ++i) 2232 ; 2233 } 2234 #pragma omp master 2235 { 2236 #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?}} 2237 for (int i = 0; i < 10; ++i) 2238 ; 2239 } 2240 #pragma omp master 2241 { 2242 #pragma omp target teams // OK 2243 a++; 2244 } 2245 #pragma omp master 2246 { 2247 #pragma omp target teams distribute // OK 2248 for (int i = 0; i < 10; ++i) 2249 ; 2250 } 2251 #pragma omp master 2252 { 2253 #pragma omp target teams distribute parallel for // OK 2254 for (int i = 0; i < 10; ++i) 2255 ; 2256 } 2257 #pragma omp master 2258 { 2259 #pragma omp target teams distribute parallel for simd // OK 2260 for (int i = 0; i < 10; ++i) 2261 ; 2262 } 2263 #pragma omp master 2264 { 2265 #pragma omp target teams distribute simd // OK 2266 for (int i = 0; i < 10; ++i) 2267 ; 2268 } 2269 2270 // CRITICAL DIRECTIVE 2271 #pragma omp critical 2272 { 2273 #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?}} 2274 for (int i = 0; i < 10; ++i) 2275 ; 2276 } 2277 #pragma omp critical 2278 { 2279 #pragma omp simd 2280 for (int i = 0; i < 10; ++i) 2281 ; 2282 } 2283 #pragma omp critical 2284 { 2285 #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?}} 2286 for (int i = 0; i < 10; ++i) 2287 ; 2288 } 2289 #pragma omp critical 2290 { 2291 #pragma omp parallel 2292 for (int i = 0; i < 10; ++i) 2293 ; 2294 } 2295 #pragma omp critical 2296 { 2297 #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?}} 2298 { 2299 bar(); 2300 } 2301 } 2302 #pragma omp critical 2303 { 2304 #pragma omp master // OK, though second 'master' is redundant 2305 { 2306 bar(); 2307 } 2308 } 2309 #pragma omp critical 2310 { 2311 #pragma omp critical 2312 { 2313 bar(); 2314 } 2315 } 2316 #pragma omp critical 2317 { 2318 #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?}} 2319 { 2320 bar(); 2321 } 2322 } 2323 #pragma omp critical 2324 { 2325 #pragma omp parallel 2326 { 2327 #pragma omp master // OK 2328 { 2329 bar(); 2330 } 2331 #pragma omp for // OK 2332 for (int i = 0; i < 10; ++i) 2333 ; 2334 #pragma omp for simd // OK 2335 for (int i = 0; i < 10; ++i) 2336 ; 2337 #pragma omp sections // OK 2338 { 2339 bar(); 2340 } 2341 } 2342 } 2343 #pragma omp critical 2344 { 2345 #pragma omp parallel master 2346 { 2347 bar(); 2348 } 2349 } 2350 #pragma omp critical 2351 { 2352 #pragma omp parallel masked 2353 { 2354 bar(); 2355 } 2356 } 2357 #pragma omp critical 2358 { 2359 #pragma omp parallel for 2360 for (int i = 0; i < 10; ++i) 2361 ; 2362 } 2363 #pragma omp critical 2364 { 2365 #pragma omp parallel for simd 2366 for (int i = 0; i < 10; ++i) 2367 ; 2368 } 2369 #pragma omp critical 2370 { 2371 #pragma omp parallel sections 2372 { 2373 bar(); 2374 } 2375 } 2376 #pragma omp critical 2377 { 2378 #pragma omp task 2379 { 2380 bar(); 2381 } 2382 } 2383 #pragma omp critical 2384 { 2385 #pragma omp taskyield 2386 bar(); 2387 } 2388 #pragma omp critical 2389 { 2390 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2391 bar(); 2392 } 2393 #pragma omp critical 2394 { 2395 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}} 2396 bar(); 2397 } 2398 #pragma omp critical 2399 { 2400 #pragma omp taskwait 2401 bar(); 2402 } 2403 #pragma omp critical(Tuzik) 2404 { 2405 #pragma omp critical(grelka) 2406 bar(); 2407 } 2408 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2409 { 2410 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2411 { 2412 #pragma omp critical(Tuzik) 2413 { 2414 #pragma omp parallel 2415 #pragma omp critical(grelka) 2416 { 2417 bar(); 2418 } 2419 } 2420 } 2421 } 2422 #pragma omp critical 2423 { 2424 #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?}} 2425 bar(); 2426 } 2427 #pragma omp critical 2428 { 2429 #pragma omp atomic 2430 ++a; 2431 } 2432 #pragma omp critical 2433 { 2434 #pragma omp target 2435 ++a; 2436 } 2437 #pragma omp critical 2438 { 2439 #pragma omp target parallel 2440 ++a; 2441 } 2442 #pragma omp critical 2443 { 2444 #pragma omp target parallel for 2445 for (int i = 0; i < 10; ++i) 2446 ; 2447 } 2448 #pragma omp critical 2449 { 2450 #pragma omp target enter data map(to: a) 2451 ++a; 2452 } 2453 #pragma omp critical 2454 { 2455 #pragma omp target exit data map(from: a) 2456 ++a; 2457 } 2458 #pragma omp critical 2459 { 2460 #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?}} 2461 ++a; 2462 } 2463 #pragma omp critical 2464 { 2465 #pragma omp taskloop 2466 for (int i = 0; i < 10; ++i) 2467 ++a; 2468 } 2469 #pragma omp critical 2470 { 2471 #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?}} 2472 for (int i = 0; i < 10; ++i) 2473 ; 2474 } 2475 #pragma omp critical 2476 { 2477 #pragma omp target update to(a) 2478 bar(); 2479 } 2480 #pragma omp critical 2481 { 2482 #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?}} 2483 for (int i = 0; i < 10; ++i) 2484 ; 2485 } 2486 #pragma omp critical 2487 { 2488 #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?}} 2489 for (int i = 0; i < 10; ++i) 2490 ; 2491 } 2492 #pragma omp critical 2493 { 2494 #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?}} 2495 for (int i = 0; i < 10; ++i) 2496 ; 2497 } 2498 #pragma omp critical 2499 { 2500 #pragma omp target simd // OK 2501 for (int i = 0; i < 10; ++i) 2502 ; 2503 } 2504 #pragma omp critical 2505 { 2506 #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?}} 2507 for (int i = 0; i < 10; ++i) 2508 ; 2509 } 2510 #pragma omp critical 2511 { 2512 #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?}} 2513 for (int i = 0; i < 10; ++i) 2514 ; 2515 } 2516 #pragma omp critical 2517 { 2518 #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?}} 2519 for (int i = 0; i < 10; ++i) 2520 ; 2521 } 2522 #pragma omp critical 2523 { 2524 #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?}} 2525 for (int i = 0; i < 10; ++i) 2526 ; 2527 } 2528 #pragma omp critical 2529 { 2530 #pragma omp target teams // OK 2531 a++; 2532 } 2533 #pragma omp critical 2534 { 2535 #pragma omp target teams distribute // OK 2536 for (int i = 0; i < 10; ++i) 2537 ; 2538 } 2539 #pragma omp critical 2540 { 2541 #pragma omp target teams distribute parallel for // OK 2542 for (int i = 0; i < 10; ++i) 2543 ; 2544 } 2545 #pragma omp critical 2546 { 2547 #pragma omp target teams distribute parallel for simd // OK 2548 for (int i = 0; i < 10; ++i) 2549 ; 2550 } 2551 #pragma omp critical 2552 { 2553 #pragma omp target teams distribute simd // OK 2554 for (int i = 0; i < 10; ++i) 2555 ; 2556 } 2557 2558 // PARALLEL FOR DIRECTIVE 2559 #pragma omp parallel for 2560 for (int i = 0; i < 10; ++i) { 2561 #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?}} 2562 for (int i = 0; i < 10; ++i) 2563 ; 2564 } 2565 #pragma omp parallel for 2566 for (int i = 0; i < 10; ++i) { 2567 #pragma omp simd 2568 for (int i = 0; i < 10; ++i) 2569 ; 2570 } 2571 #pragma omp parallel for 2572 for (int i = 0; i < 10; ++i) { 2573 #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?}} 2574 for (int i = 0; i < 10; ++i) 2575 ; 2576 } 2577 #pragma omp parallel for 2578 for (int i = 0; i < 10; ++i) { 2579 #pragma omp parallel 2580 for (int i = 0; i < 10; ++i) 2581 ; 2582 } 2583 #pragma omp parallel for 2584 for (int i = 0; i < 10; ++i) { 2585 #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?}} 2586 { 2587 bar(); 2588 } 2589 } 2590 #pragma omp parallel for 2591 for (int i = 0; i < 10; ++i) { 2592 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2593 { 2594 bar(); 2595 } 2596 } 2597 #pragma omp parallel for 2598 for (int i = 0; i < 10; ++i) { 2599 #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?}} 2600 { 2601 bar(); 2602 } 2603 } 2604 2605 #pragma omp parallel for 2606 for (int i = 0; i < 10; ++i) { 2607 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2608 { 2609 bar(); 2610 } 2611 } 2612 2613 #pragma omp parallel for 2614 for (int i = 0; i < 10; ++i) { 2615 #pragma omp critical 2616 { 2617 bar(); 2618 } 2619 } 2620 2621 #pragma omp parallel for 2622 for (int i = 0; i < 10; ++i) { 2623 #pragma omp parallel 2624 { 2625 #pragma omp single // OK 2626 { 2627 bar(); 2628 } 2629 #pragma omp for // OK 2630 for (int i = 0; i < 10; ++i) 2631 ; 2632 #pragma omp for simd // OK 2633 for (int i = 0; i < 10; ++i) 2634 ; 2635 #pragma omp sections // OK 2636 { 2637 bar(); 2638 } 2639 } 2640 } 2641 #pragma omp parallel for 2642 for (int i = 0; i < 10; ++i) { 2643 #pragma omp parallel for 2644 for (int i = 0; i < 10; ++i) 2645 ; 2646 } 2647 #pragma omp parallel for 2648 for (int i = 0; i < 10; ++i) { 2649 #pragma omp parallel for simd 2650 for (int i = 0; i < 10; ++i) 2651 ; 2652 } 2653 #pragma omp parallel for 2654 for (int i = 0; i < 10; ++i) { 2655 #pragma omp parallel sections 2656 { 2657 bar(); 2658 } 2659 } 2660 #pragma omp parallel for 2661 for (int i = 0; i < 10; ++i) { 2662 #pragma omp task 2663 { 2664 bar(); 2665 } 2666 } 2667 #pragma omp parallel for 2668 for (int i = 0; i < 10; ++i) { 2669 #pragma omp taskyield 2670 bar(); 2671 } 2672 #pragma omp parallel for 2673 for (int i = 0; i < 10; ++i) { 2674 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2675 bar(); 2676 } 2677 #pragma omp parallel for 2678 for (int i = 0; i < 10; ++i) { 2679 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 2680 bar(); 2681 } 2682 #pragma omp parallel for 2683 for (int i = 0; i < 10; ++i) { 2684 #pragma omp taskwait 2685 bar(); 2686 } 2687 #pragma omp parallel for 2688 for (int i = 0; i < 10; ++i) { 2689 #pragma omp flush 2690 bar(); 2691 } 2692 #pragma omp parallel for 2693 for (int i = 0; i < 10; ++i) { 2694 #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?}} 2695 bar(); 2696 } 2697 #pragma omp parallel for ordered 2698 for (int i = 0; i < 10; ++i) { 2699 #pragma omp ordered // OK 2700 bar(); 2701 } 2702 #pragma omp parallel for 2703 for (int i = 0; i < 10; ++i) { 2704 #pragma omp atomic 2705 ++a; 2706 } 2707 #pragma omp parallel for 2708 for (int i = 0; i < 10; ++i) { 2709 #pragma omp target 2710 ++a; 2711 } 2712 #pragma omp parallel for 2713 for (int i = 0; i < 10; ++i) { 2714 #pragma omp target parallel 2715 ++a; 2716 } 2717 #pragma omp parallel for 2718 for (int i = 0; i < 10; ++i) { 2719 #pragma omp target parallel for 2720 for (int i = 0; i < 10; ++i) 2721 ; 2722 } 2723 #pragma omp parallel for 2724 for (int i = 0; i < 10; ++i) { 2725 #pragma omp target enter data map(to: a) 2726 ++a; 2727 } 2728 #pragma omp parallel for 2729 for (int i = 0; i < 10; ++i) { 2730 #pragma omp target exit data map(from: a) 2731 ++a; 2732 } 2733 #pragma omp parallel for 2734 for (int i = 0; i < 10; ++i) { 2735 #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?}} 2736 ++a; 2737 } 2738 #pragma omp parallel for 2739 for (int i = 0; i < 10; ++i) { 2740 #pragma omp taskloop 2741 for (int i = 0; i < 10; ++i) 2742 ++a; 2743 } 2744 #pragma omp parallel for 2745 for (int i = 0; i < 10; ++i) { 2746 #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?}} 2747 for (int j = 0; j < 10; ++j) 2748 ; 2749 } 2750 #pragma omp parallel for 2751 for (int i = 0; i < 10; ++i) { 2752 #pragma omp target update to(a) 2753 } 2754 #pragma omp parallel for 2755 for (int i = 0; i < 10; ++i) { 2756 #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?}} 2757 for (int j = 0; j < 10; ++j) 2758 ; 2759 } 2760 #pragma omp parallel for 2761 for (int i = 0; i < 10; ++i) { 2762 #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?}} 2763 for (int j = 0; j < 10; ++j) 2764 ; 2765 } 2766 #pragma omp parallel for 2767 for (int i = 0; i < 10; ++i) { 2768 #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?}} 2769 for (int j = 0; j < 10; ++j) 2770 ; 2771 } 2772 #pragma omp parallel for 2773 for (int i = 0; i < 10; ++i) { 2774 #pragma omp target simd // OK 2775 for (int j = 0; j < 10; ++j) 2776 ; 2777 } 2778 #pragma omp parallel for 2779 for (int i = 0; i < 10; ++i) { 2780 #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?}} 2781 for (int j = 0; j < 10; ++j) 2782 ; 2783 } 2784 #pragma omp parallel for 2785 for (int i = 0; i < 10; ++i) { 2786 #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?}} 2787 for (int j = 0; j < 10; ++j) 2788 ; 2789 } 2790 #pragma omp parallel for 2791 for (int i = 0; i < 10; ++i) { 2792 #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?}} 2793 for (int j = 0; j < 10; ++j) 2794 ; 2795 } 2796 #pragma omp parallel for 2797 for (int i = 0; i < 10; ++i) { 2798 #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?}} 2799 for (int j = 0; j < 10; ++j) 2800 ; 2801 } 2802 #pragma omp parallel for 2803 for (int i = 0; i < 10; ++i) { 2804 #pragma omp target teams // OK 2805 a++; 2806 } 2807 #pragma omp parallel for 2808 for (int i = 0; i < 10; ++i) { 2809 #pragma omp target teams distribute // OK 2810 for (int j = 0; j < 10; ++j) 2811 ; 2812 } 2813 #pragma omp parallel for 2814 for (int i = 0; i < 10; ++i) { 2815 #pragma omp target teams distribute parallel for // OK 2816 for (int j = 0; j < 10; ++j) 2817 ; 2818 } 2819 #pragma omp parallel for 2820 for (int i = 0; i < 10; ++i) { 2821 #pragma omp target teams distribute parallel for simd // OK 2822 for (int j = 0; j < 10; ++j) 2823 ; 2824 } 2825 #pragma omp parallel for 2826 for (int i = 0; i < 10; ++i) { 2827 #pragma omp target teams distribute simd // OK 2828 for (int j = 0; j < 10; ++j) 2829 ; 2830 } 2831 2832 // PARALLEL FOR SIMD DIRECTIVE 2833 #pragma omp parallel for simd 2834 for (int i = 0; i < 10; ++i) { 2835 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2836 for (int i = 0; i < 10; ++i) 2837 ; 2838 } 2839 #pragma omp parallel for simd 2840 for (int i = 0; i < 10; ++i) { 2841 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2842 for (int i = 0; i < 10; ++i) 2843 ; 2844 } 2845 #pragma omp parallel for simd 2846 for (int i = 0; i < 10; ++i) { 2847 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2848 for (int i = 0; i < 10; ++i) 2849 ; 2850 } 2851 #pragma omp parallel for simd 2852 for (int i = 0; i < 10; ++i) { 2853 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2854 for (int i = 0; i < 10; ++i) 2855 ; 2856 } 2857 #pragma omp parallel for simd 2858 for (int i = 0; i < 10; ++i) { 2859 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2860 { 2861 bar(); 2862 } 2863 } 2864 #pragma omp parallel for simd 2865 for (int i = 0; i < 10; ++i) { 2866 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2867 { 2868 bar(); 2869 } 2870 } 2871 #pragma omp parallel for simd 2872 for (int i = 0; i < 10; ++i) { 2873 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2874 { 2875 bar(); 2876 } 2877 } 2878 2879 #pragma omp parallel for simd 2880 for (int i = 0; i < 10; ++i) { 2881 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2882 { 2883 bar(); 2884 } 2885 } 2886 2887 #pragma omp parallel for simd 2888 for (int i = 0; i < 10; ++i) { 2889 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2890 { 2891 bar(); 2892 } 2893 } 2894 2895 #pragma omp parallel for simd 2896 for (int i = 0; i < 10; ++i) { 2897 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2898 { 2899 #pragma omp single 2900 { 2901 bar(); 2902 } 2903 #pragma omp for 2904 for (int i = 0; i < 10; ++i) 2905 ; 2906 #pragma omp for simd 2907 for (int i = 0; i < 10; ++i) 2908 ; 2909 #pragma omp sections 2910 { 2911 bar(); 2912 } 2913 } 2914 } 2915 #pragma omp parallel for simd 2916 for (int i = 0; i < 10; ++i) { 2917 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2918 for (int i = 0; i < 10; ++i) 2919 ; 2920 } 2921 #pragma omp parallel for simd 2922 for (int i = 0; i < 10; ++i) { 2923 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2924 for (int i = 0; i < 10; ++i) 2925 ; 2926 } 2927 #pragma omp parallel for simd 2928 for (int i = 0; i < 10; ++i) { 2929 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2930 { 2931 bar(); 2932 } 2933 } 2934 #pragma omp parallel for simd 2935 for (int i = 0; i < 10; ++i) { 2936 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2937 { 2938 bar(); 2939 } 2940 } 2941 #pragma omp parallel for simd 2942 for (int i = 0; i < 10; ++i) { 2943 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2944 bar(); 2945 } 2946 #pragma omp parallel for simd 2947 for (int i = 0; i < 10; ++i) { 2948 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2949 bar(); 2950 } 2951 #pragma omp parallel for simd 2952 for (int i = 0; i < 10; ++i) { 2953 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 2954 bar(); 2955 } 2956 #pragma omp parallel for simd 2957 for (int i = 0; i < 10; ++i) { 2958 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2959 bar(); 2960 } 2961 #pragma omp parallel for simd 2962 for (int i = 0; i < 10; ++i) { 2963 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2964 bar(); 2965 } 2966 #pragma omp parallel for simd 2967 for (int i = 0; i < 10; ++i) { 2968 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2969 bar(); 2970 } 2971 #pragma omp parallel for simd 2972 for (int i = 0; i < 10; ++i) { 2973 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2974 bar(); 2975 } 2976 #pragma omp parallel for simd 2977 for (int i = 0; i < 10; ++i) { 2978 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 2979 ++a; 2980 } 2981 #pragma omp parallel for simd 2982 for (int i = 0; i < 10; ++i) { 2983 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2984 ++a; 2985 } 2986 #pragma omp parallel for simd 2987 for (int i = 0; i < 10; ++i) { 2988 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2989 ++a; 2990 } 2991 #pragma omp parallel for simd 2992 for (int i = 0; i < 10; ++i) { 2993 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2994 for (int i = 0; i < 10; ++i) 2995 ; 2996 } 2997 #pragma omp parallel for simd 2998 for (int i = 0; i < 10; ++i) { 2999 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3000 ++a; 3001 } 3002 #pragma omp parallel for simd 3003 for (int i = 0; i < 10; ++i) { 3004 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3005 ++a; 3006 } 3007 #pragma omp parallel for simd 3008 for (int i = 0; i < 10; ++i) { 3009 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3010 ++a; 3011 } 3012 #pragma omp parallel for simd 3013 for (int i = 0; i < 10; ++i) { 3014 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3015 for (int i = 0; i < 10; ++i) 3016 ++a; 3017 } 3018 #pragma omp parallel for simd 3019 for (int i = 0; i < 10; ++i) { 3020 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3021 for (int j = 0; j < 10; ++j) 3022 ; 3023 } 3024 #pragma omp parallel for simd 3025 for (int i = 0; i < 10; ++i) { 3026 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3027 bar(); 3028 } 3029 #pragma omp parallel for simd 3030 for (int i = 0; i < 10; ++i) { 3031 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3032 for (int j = 0; j < 10; ++j) 3033 ; 3034 } 3035 #pragma omp parallel for simd 3036 for (int i = 0; i < 10; ++i) { 3037 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3038 for (int j = 0; j < 10; ++j) 3039 ; 3040 } 3041 #pragma omp parallel for simd 3042 for (int i = 0; i < 10; ++i) { 3043 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3044 for (int j = 0; j < 10; ++j) 3045 ; 3046 } 3047 #pragma omp parallel for simd 3048 for (int i = 0; i < 10; ++i) { 3049 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3050 for (int j = 0; j < 10; ++j) 3051 ; 3052 } 3053 #pragma omp parallel for simd 3054 for (int i = 0; i < 10; ++i) { 3055 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3056 for (int j = 0; j < 10; ++j) 3057 ; 3058 } 3059 #pragma omp parallel for simd 3060 for (int i = 0; i < 10; ++i) { 3061 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3062 for (int j = 0; j < 10; ++j) 3063 ; 3064 } 3065 #pragma omp parallel for simd 3066 for (int i = 0; i < 10; ++i) { 3067 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3068 for (int j = 0; j < 10; ++j) 3069 ; 3070 } 3071 #pragma omp parallel for simd 3072 for (int i = 0; i < 10; ++i) { 3073 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3074 for (int j = 0; j < 10; ++j) 3075 ; 3076 } 3077 #pragma omp parallel for simd 3078 for (int i = 0; i < 10; ++i) { 3079 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3080 a++; 3081 } 3082 #pragma omp parallel for simd 3083 for (int i = 0; i < 10; ++i) { 3084 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3085 for (int j = 0; j < 10; ++j) 3086 ; 3087 } 3088 #pragma omp parallel for simd 3089 for (int i = 0; i < 10; ++i) { 3090 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3091 for (int j = 0; j < 10; ++j) 3092 ; 3093 } 3094 #pragma omp parallel for simd 3095 for (int i = 0; i < 10; ++i) { 3096 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3097 for (int j = 0; j < 10; ++j) 3098 ; 3099 } 3100 #pragma omp parallel for simd 3101 for (int i = 0; i < 10; ++i) { 3102 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3103 for (int j = 0; j < 10; ++j) 3104 ; 3105 } 3106 3107 // PARALLEL MASTER DIRECTIVE 3108 #pragma omp parallel master 3109 { 3110 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3111 for (int i = 0; i < 10; ++i) 3112 ; 3113 } 3114 #pragma omp parallel master 3115 { 3116 #pragma omp simd 3117 for (int i = 0; i < 10; ++i) 3118 ; 3119 } 3120 #pragma omp parallel master 3121 { 3122 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3123 for (int i = 0; i < 10; ++i) 3124 ; 3125 } 3126 #pragma omp parallel master 3127 { 3128 #pragma omp parallel 3129 for (int i = 0; i < 10; ++i) 3130 ; 3131 } 3132 #pragma omp parallel master 3133 { 3134 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3135 { 3136 bar(); 3137 } 3138 } 3139 #pragma omp parallel master 3140 { 3141 #pragma omp master // OK, though second 'master' is redundant 3142 { 3143 bar(); 3144 } 3145 } 3146 #pragma omp parallel master 3147 { 3148 #pragma omp critical 3149 { 3150 bar(); 3151 } 3152 } 3153 #pragma omp parallel master 3154 { 3155 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3156 { 3157 bar(); 3158 } 3159 } 3160 #pragma omp parallel master 3161 { 3162 #pragma omp parallel 3163 { 3164 #pragma omp parallel master // OK 3165 { 3166 bar(); 3167 } 3168 #pragma omp for // OK 3169 for (int i = 0; i < 10; ++i) 3170 ; 3171 #pragma omp for simd // OK 3172 for (int i = 0; i < 10; ++i) 3173 ; 3174 #pragma omp sections // OK 3175 { 3176 bar(); 3177 } 3178 } 3179 } 3180 #pragma omp parallel master 3181 { 3182 #pragma omp parallel master // OK 3183 { 3184 bar(); 3185 } 3186 #pragma omp parallel 3187 { 3188 #pragma omp for // OK 3189 for (int i = 0; i < 10; ++i) 3190 ; 3191 #pragma omp for simd // OK 3192 for (int i = 0; i < 10; ++i) 3193 ; 3194 #pragma omp sections // OK 3195 { 3196 bar(); 3197 } 3198 } 3199 } 3200 #pragma omp parallel master 3201 { 3202 #pragma omp parallel for 3203 for (int i = 0; i < 10; ++i) 3204 ; 3205 } 3206 #pragma omp parallel master 3207 { 3208 #pragma omp parallel for simd 3209 for (int i = 0; i < 10; ++i) 3210 ; 3211 } 3212 #pragma omp parallel master 3213 { 3214 #pragma omp parallel sections 3215 { 3216 bar(); 3217 } 3218 } 3219 #pragma omp parallel master 3220 { 3221 #pragma omp task 3222 { 3223 bar(); 3224 } 3225 } 3226 #pragma omp parallel master 3227 { 3228 #pragma omp taskyield 3229 bar(); 3230 } 3231 #pragma omp parallel master 3232 { 3233 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3234 bar(); 3235 } 3236 #pragma omp parallel master 3237 { 3238 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3239 bar(); 3240 } 3241 #pragma omp parallel master 3242 { 3243 #pragma omp taskwait 3244 bar(); 3245 } 3246 #pragma omp parallel master 3247 { 3248 #pragma omp flush 3249 bar(); 3250 } 3251 #pragma omp parallel master 3252 { 3253 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3254 bar(); 3255 } 3256 #pragma omp parallel master 3257 { 3258 #pragma omp atomic 3259 ++a; 3260 } 3261 #pragma omp parallel master 3262 { 3263 #pragma omp target 3264 ++a; 3265 } 3266 #pragma omp parallel master 3267 { 3268 #pragma omp target parallel 3269 ++a; 3270 } 3271 #pragma omp parallel master 3272 { 3273 #pragma omp target parallel for 3274 for (int i = 0; i < 10; ++i) 3275 ; 3276 } 3277 #pragma omp parallel master 3278 { 3279 #pragma omp target enter data map(to: a) 3280 ++a; 3281 } 3282 #pragma omp parallel master 3283 { 3284 #pragma omp target exit data map(from: a) 3285 ++a; 3286 } 3287 #pragma omp parallel master 3288 { 3289 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3290 ++a; 3291 } 3292 #pragma omp parallel master 3293 { 3294 #pragma omp taskloop 3295 for (int i = 0; i < 10; ++i) 3296 ++a; 3297 } 3298 #pragma omp parallel master 3299 { 3300 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3301 for (int i = 0; i < 10; ++i) 3302 ; 3303 } 3304 #pragma omp parallel master 3305 { 3306 #pragma omp target update to(a) 3307 bar(); 3308 } 3309 #pragma omp parallel master 3310 { 3311 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3312 for (int i = 0; i < 10; ++i) 3313 ; 3314 } 3315 #pragma omp parallel master 3316 { 3317 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3318 for (int i = 0; i < 10; ++i) 3319 ; 3320 } 3321 #pragma omp parallel master 3322 { 3323 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3324 for (int i = 0; i < 10; ++i) 3325 ; 3326 } 3327 #pragma omp parallel master 3328 { 3329 #pragma omp target simd // OK 3330 for (int i = 0; i < 10; ++i) 3331 ; 3332 } 3333 #pragma omp parallel master 3334 { 3335 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3336 for (int i = 0; i < 10; ++i) 3337 ; 3338 } 3339 #pragma omp parallel master 3340 { 3341 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3342 for (int i = 0; i < 10; ++i) 3343 ; 3344 } 3345 #pragma omp parallel master 3346 { 3347 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3348 for (int i = 0; i < 10; ++i) 3349 ; 3350 } 3351 #pragma omp parallel master 3352 { 3353 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3354 for (int i = 0; i < 10; ++i) 3355 ; 3356 } 3357 #pragma omp parallel master 3358 { 3359 #pragma omp target teams // OK 3360 a++; 3361 } 3362 #pragma omp parallel master 3363 { 3364 #pragma omp target teams distribute // OK 3365 for (int i = 0; i < 10; ++i) 3366 ; 3367 } 3368 #pragma omp parallel master 3369 { 3370 #pragma omp target teams distribute parallel for // OK 3371 for (int i = 0; i < 10; ++i) 3372 ; 3373 } 3374 #pragma omp parallel master 3375 { 3376 #pragma omp target teams distribute parallel for simd // OK 3377 for (int i = 0; i < 10; ++i) 3378 ; 3379 } 3380 #pragma omp parallel master 3381 { 3382 #pragma omp target teams distribute simd // OK 3383 for (int i = 0; i < 10; ++i) 3384 ; 3385 } 3386 3387 // PARALLEL MASKED DIRECTIVE 3388 #pragma omp parallel masked 3389 { 3390 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3391 for (int i = 0; i < 10; ++i) 3392 ; 3393 } 3394 #pragma omp parallel masked 3395 { 3396 #pragma omp simd 3397 for (int i = 0; i < 10; ++i) 3398 ; 3399 } 3400 #pragma omp parallel masked 3401 { 3402 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3403 for (int i = 0; i < 10; ++i) 3404 ; 3405 } 3406 #pragma omp parallel masked 3407 { 3408 #pragma omp parallel 3409 for (int i = 0; i < 10; ++i) 3410 ; 3411 } 3412 #pragma omp parallel masked 3413 { 3414 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3415 { 3416 bar(); 3417 } 3418 } 3419 #pragma omp parallel masked 3420 { 3421 #pragma omp master // OK, though second 'master' is redundant 3422 { 3423 bar(); 3424 } 3425 } 3426 #pragma omp parallel masked 3427 { 3428 #pragma omp critical 3429 { 3430 bar(); 3431 } 3432 } 3433 #pragma omp parallel masked 3434 { 3435 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3436 { 3437 bar(); 3438 } 3439 } 3440 #pragma omp parallel master 3441 { 3442 #pragma omp parallel 3443 { 3444 #pragma omp parallel master // OK 3445 { 3446 bar(); 3447 } 3448 #pragma omp for // OK 3449 for (int i = 0; i < 10; ++i) 3450 ; 3451 #pragma omp for simd // OK 3452 for (int i = 0; i < 10; ++i) 3453 ; 3454 #pragma omp sections // OK 3455 { 3456 bar(); 3457 } 3458 } 3459 } 3460 #pragma omp parallel master 3461 { 3462 #pragma omp parallel master // OK 3463 { 3464 bar(); 3465 } 3466 #pragma omp parallel 3467 { 3468 #pragma omp for // OK 3469 for (int i = 0; i < 10; ++i) 3470 ; 3471 #pragma omp for simd // OK 3472 for (int i = 0; i < 10; ++i) 3473 ; 3474 #pragma omp sections // OK 3475 { 3476 bar(); 3477 } 3478 } 3479 } 3480 #pragma omp parallel master 3481 { 3482 #pragma omp parallel for 3483 for (int i = 0; i < 10; ++i) 3484 ; 3485 } 3486 #pragma omp parallel master 3487 { 3488 #pragma omp parallel for simd 3489 for (int i = 0; i < 10; ++i) 3490 ; 3491 } 3492 #pragma omp parallel master 3493 { 3494 #pragma omp parallel sections 3495 { 3496 bar(); 3497 } 3498 } 3499 #pragma omp parallel master 3500 { 3501 #pragma omp task 3502 { 3503 bar(); 3504 } 3505 } 3506 #pragma omp parallel master 3507 { 3508 #pragma omp taskyield 3509 bar(); 3510 } 3511 #pragma omp parallel master 3512 { 3513 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3514 bar(); 3515 } 3516 #pragma omp parallel master 3517 { 3518 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3519 bar(); 3520 } 3521 #pragma omp parallel master 3522 { 3523 #pragma omp taskwait 3524 bar(); 3525 } 3526 #pragma omp parallel master 3527 { 3528 #pragma omp flush 3529 bar(); 3530 } 3531 #pragma omp parallel master 3532 { 3533 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3534 bar(); 3535 } 3536 #pragma omp parallel master 3537 { 3538 #pragma omp atomic 3539 ++a; 3540 } 3541 #pragma omp parallel master 3542 { 3543 #pragma omp target 3544 ++a; 3545 } 3546 #pragma omp parallel master 3547 { 3548 #pragma omp target parallel 3549 ++a; 3550 } 3551 #pragma omp parallel master 3552 { 3553 #pragma omp target parallel for 3554 for (int i = 0; i < 10; ++i) 3555 ; 3556 } 3557 #pragma omp parallel master 3558 { 3559 #pragma omp target enter data map(to: a) 3560 ++a; 3561 } 3562 #pragma omp parallel master 3563 { 3564 #pragma omp target exit data map(from: a) 3565 ++a; 3566 } 3567 #pragma omp parallel master 3568 { 3569 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3570 ++a; 3571 } 3572 #pragma omp parallel master 3573 { 3574 #pragma omp taskloop 3575 for (int i = 0; i < 10; ++i) 3576 ++a; 3577 } 3578 #pragma omp parallel master 3579 { 3580 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3581 for (int i = 0; i < 10; ++i) 3582 ; 3583 } 3584 #pragma omp parallel master 3585 { 3586 #pragma omp target update to(a) 3587 bar(); 3588 } 3589 #pragma omp parallel master 3590 { 3591 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3592 for (int i = 0; i < 10; ++i) 3593 ; 3594 } 3595 #pragma omp parallel master 3596 { 3597 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3598 for (int i = 0; i < 10; ++i) 3599 ; 3600 } 3601 #pragma omp parallel master 3602 { 3603 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3604 for (int i = 0; i < 10; ++i) 3605 ; 3606 } 3607 #pragma omp parallel master 3608 { 3609 #pragma omp target simd // OK 3610 for (int i = 0; i < 10; ++i) 3611 ; 3612 } 3613 #pragma omp parallel master 3614 { 3615 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3616 for (int i = 0; i < 10; ++i) 3617 ; 3618 } 3619 #pragma omp parallel master 3620 { 3621 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3622 for (int i = 0; i < 10; ++i) 3623 ; 3624 } 3625 #pragma omp parallel master 3626 { 3627 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3628 for (int i = 0; i < 10; ++i) 3629 ; 3630 } 3631 #pragma omp parallel master 3632 { 3633 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3634 for (int i = 0; i < 10; ++i) 3635 ; 3636 } 3637 #pragma omp parallel master 3638 { 3639 #pragma omp target teams // OK 3640 a++; 3641 } 3642 #pragma omp parallel master 3643 { 3644 #pragma omp target teams distribute // OK 3645 for (int i = 0; i < 10; ++i) 3646 ; 3647 } 3648 #pragma omp parallel master 3649 { 3650 #pragma omp target teams distribute parallel for // OK 3651 for (int i = 0; i < 10; ++i) 3652 ; 3653 } 3654 #pragma omp parallel master 3655 { 3656 #pragma omp target teams distribute parallel for simd // OK 3657 for (int i = 0; i < 10; ++i) 3658 ; 3659 } 3660 #pragma omp parallel master 3661 { 3662 #pragma omp target teams distribute simd // OK 3663 for (int i = 0; i < 10; ++i) 3664 ; 3665 } 3666 // PARALLEL SECTIONS DIRECTIVE 3667 #pragma omp parallel sections 3668 { 3669 #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?}} 3670 for (int i = 0; i < 10; ++i) 3671 ; 3672 } 3673 #pragma omp parallel sections 3674 { 3675 #pragma omp simd 3676 for (int i = 0; i < 10; ++i) 3677 ; 3678 } 3679 #pragma omp parallel sections 3680 { 3681 #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?}} 3682 for (int i = 0; i < 10; ++i) 3683 ; 3684 } 3685 #pragma omp parallel sections 3686 { 3687 #pragma omp parallel 3688 for (int i = 0; i < 10; ++i) 3689 ; 3690 } 3691 #pragma omp parallel sections 3692 { 3693 #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?}} 3694 { 3695 bar(); 3696 } 3697 } 3698 #pragma omp parallel sections 3699 { 3700 #pragma omp section 3701 { 3702 bar(); 3703 } 3704 } 3705 #pragma omp parallel sections 3706 { 3707 #pragma omp section 3708 { 3709 #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?}} 3710 bar(); 3711 } 3712 } 3713 #pragma omp parallel sections 3714 { 3715 #pragma omp section 3716 { 3717 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 3718 bar(); 3719 } 3720 } 3721 #pragma omp parallel sections 3722 { 3723 #pragma omp section 3724 { 3725 #pragma omp critical 3726 bar(); 3727 } 3728 } 3729 #pragma omp parallel sections 3730 { 3731 #pragma omp parallel 3732 { 3733 #pragma omp single // OK 3734 { 3735 bar(); 3736 } 3737 #pragma omp for // OK 3738 for (int i = 0; i < 10; ++i) 3739 ; 3740 #pragma omp for simd // OK 3741 for (int i = 0; i < 10; ++i) 3742 ; 3743 #pragma omp sections // OK 3744 { 3745 bar(); 3746 } 3747 } 3748 } 3749 #pragma omp parallel sections 3750 { 3751 #pragma omp parallel for 3752 for (int i = 0; i < 10; ++i) 3753 ; 3754 } 3755 #pragma omp parallel sections 3756 { 3757 #pragma omp parallel for simd 3758 for (int i = 0; i < 10; ++i) 3759 ; 3760 } 3761 #pragma omp parallel sections 3762 { 3763 #pragma omp parallel sections 3764 { 3765 bar(); 3766 } 3767 } 3768 #pragma omp parallel sections 3769 { 3770 #pragma omp task 3771 { 3772 bar(); 3773 } 3774 } 3775 #pragma omp parallel sections 3776 { 3777 #pragma omp taskyield 3778 } 3779 #pragma omp parallel sections 3780 { 3781 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3782 } 3783 #pragma omp parallel sections 3784 { 3785 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3786 } 3787 #pragma omp parallel sections 3788 { 3789 #pragma omp taskwait 3790 } 3791 #pragma omp parallel sections 3792 { 3793 #pragma omp flush 3794 } 3795 #pragma omp parallel sections 3796 { 3797 #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?}} 3798 bar(); 3799 } 3800 #pragma omp parallel sections 3801 { 3802 #pragma omp atomic 3803 ++a; 3804 } 3805 #pragma omp parallel sections 3806 { 3807 #pragma omp target 3808 ++a; 3809 } 3810 #pragma omp parallel sections 3811 { 3812 #pragma omp target parallel 3813 ++a; 3814 } 3815 #pragma omp parallel sections 3816 { 3817 #pragma omp target parallel for 3818 for (int i = 0; i < 10; ++i) 3819 ; 3820 } 3821 #pragma omp parallel sections 3822 { 3823 #pragma omp target enter data map(to: a) 3824 } 3825 #pragma omp parallel sections 3826 { 3827 #pragma omp target exit data map(from: a) 3828 } 3829 #pragma omp parallel sections 3830 { 3831 #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?}} 3832 ++a; 3833 } 3834 #pragma omp parallel sections 3835 { 3836 #pragma omp taskloop 3837 for (int i = 0; i < 10; ++i) 3838 ++a; 3839 } 3840 #pragma omp parallel sections 3841 { 3842 #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?}} 3843 for (int i = 0; i < 10; ++i) 3844 ; 3845 } 3846 #pragma omp parallel sections 3847 { 3848 #pragma omp target update to(a) 3849 } 3850 #pragma omp parallel sections 3851 { 3852 #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?}} 3853 for (int i = 0; i < 10; ++i) 3854 ; 3855 } 3856 #pragma omp parallel sections 3857 { 3858 #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?}} 3859 for (int i = 0; i < 10; ++i) 3860 ; 3861 } 3862 #pragma omp parallel sections 3863 { 3864 #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?}} 3865 for (int i = 0; i < 10; ++i) 3866 ; 3867 } 3868 #pragma omp parallel sections 3869 { 3870 #pragma omp target simd // OK 3871 for (int i = 0; i < 10; ++i) 3872 ; 3873 } 3874 #pragma omp parallel sections 3875 { 3876 #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?}} 3877 for (int i = 0; i < 10; ++i) 3878 ; 3879 } 3880 #pragma omp parallel sections 3881 { 3882 #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?}} 3883 for (int i = 0; i < 10; ++i) 3884 ; 3885 } 3886 #pragma omp parallel sections 3887 { 3888 #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?}} 3889 for (int i = 0; i < 10; ++i) 3890 ; 3891 } 3892 #pragma omp parallel sections 3893 { 3894 #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?}} 3895 for (int i = 0; i < 10; ++i) 3896 ; 3897 } 3898 #pragma omp parallel sections 3899 { 3900 #pragma omp target teams // OK 3901 a++; 3902 } 3903 #pragma omp parallel sections 3904 { 3905 #pragma omp target teams distribute // OK 3906 for (int i = 0; i < 10; ++i) 3907 ; 3908 } 3909 #pragma omp parallel sections 3910 { 3911 #pragma omp target teams distribute parallel for // OK 3912 for (int i = 0; i < 10; ++i) 3913 ; 3914 } 3915 #pragma omp parallel sections 3916 { 3917 #pragma omp target teams distribute parallel for simd // OK 3918 for (int i = 0; i < 10; ++i) 3919 ; 3920 } 3921 #pragma omp parallel sections 3922 { 3923 #pragma omp target teams distribute simd // OK 3924 for (int i = 0; i < 10; ++i) 3925 ; 3926 } 3927 3928 // TASK DIRECTIVE 3929 #pragma omp task 3930 #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?}} 3931 for (int i = 0; i < 10; ++i) 3932 ; 3933 #pragma omp task 3934 #pragma omp simd 3935 for (int i = 0; i < 10; ++i) 3936 ; 3937 #pragma omp task 3938 #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?}} 3939 for (int i = 0; i < 10; ++i) 3940 ; 3941 #pragma omp task 3942 #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?}} 3943 { 3944 bar(); 3945 } 3946 #pragma omp task 3947 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3948 { 3949 bar(); 3950 } 3951 #pragma omp task 3952 #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?}} 3953 bar(); 3954 #pragma omp task 3955 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3956 bar(); 3957 #pragma omp task 3958 #pragma omp critical 3959 bar(); 3960 3961 #pragma omp task 3962 #pragma omp parallel for 3963 for (int i = 0; i < 10; ++i) 3964 ; 3965 #pragma omp task 3966 #pragma omp parallel for simd 3967 for (int i = 0; i < 10; ++i) 3968 ; 3969 #pragma omp task 3970 #pragma omp parallel sections 3971 { 3972 bar(); 3973 } 3974 #pragma omp task 3975 #pragma omp task 3976 { 3977 bar(); 3978 } 3979 #pragma omp task 3980 { 3981 #pragma omp taskyield 3982 bar(); 3983 } 3984 #pragma omp task 3985 { 3986 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3987 bar(); 3988 } 3989 #pragma omp task 3990 { 3991 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}} 3992 bar(); 3993 } 3994 #pragma omp task 3995 { 3996 #pragma omp taskwait 3997 bar(); 3998 } 3999 #pragma omp task 4000 { 4001 #pragma omp flush 4002 bar(); 4003 } 4004 #pragma omp task 4005 { 4006 #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?}} 4007 bar(); 4008 } 4009 #pragma omp task 4010 { 4011 #pragma omp atomic 4012 ++a; 4013 } 4014 #pragma omp task 4015 { 4016 #pragma omp target 4017 ++a; 4018 } 4019 #pragma omp task 4020 { 4021 #pragma omp target parallel 4022 ++a; 4023 } 4024 #pragma omp task 4025 #pragma omp target parallel for 4026 for (int i = 0; i < 10; ++i) 4027 ; 4028 #pragma omp task 4029 { 4030 #pragma omp target enter data map(to: a) 4031 ++a; 4032 } 4033 #pragma omp task 4034 { 4035 #pragma omp target exit data map(from: a) 4036 ++a; 4037 } 4038 #pragma omp task 4039 { 4040 #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?}} 4041 ++a; 4042 } 4043 #pragma omp task 4044 { 4045 #pragma omp taskloop 4046 for (int i = 0; i < 10; ++i) 4047 ++a; 4048 } 4049 #pragma omp task 4050 { 4051 #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?}} 4052 for (int i = 0; i < 10; ++i) 4053 ; 4054 } 4055 #pragma omp task 4056 { 4057 #pragma omp target update to(a) 4058 bar(); 4059 } 4060 #pragma omp task 4061 { 4062 #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?}} 4063 for (int i = 0; i < 10; ++i) 4064 ; 4065 } 4066 #pragma omp task 4067 { 4068 #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?}} 4069 for (int i = 0; i < 10; ++i) 4070 ; 4071 } 4072 #pragma omp task 4073 { 4074 #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?}} 4075 for (int i = 0; i < 10; ++i) 4076 ; 4077 } 4078 #pragma omp task 4079 { 4080 #pragma omp target simd // OK 4081 for (int i = 0; i < 10; ++i) 4082 ; 4083 } 4084 #pragma omp task 4085 { 4086 #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?}} 4087 for (int i = 0; i < 10; ++i) 4088 ; 4089 } 4090 #pragma omp task 4091 { 4092 #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?}} 4093 for (int i = 0; i < 10; ++i) 4094 ; 4095 } 4096 #pragma omp task 4097 { 4098 #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?}} 4099 for (int i = 0; i < 10; ++i) 4100 ; 4101 } 4102 #pragma omp task 4103 { 4104 #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?}} 4105 for (int i = 0; i < 10; ++i) 4106 ; 4107 } 4108 #pragma omp task 4109 { 4110 #pragma omp target teams // OK 4111 a++; 4112 } 4113 #pragma omp task 4114 { 4115 #pragma omp target teams distribute // OK 4116 for (int i = 0; i < 10; ++i) 4117 ; 4118 } 4119 #pragma omp task 4120 { 4121 #pragma omp target teams distribute parallel for // OK 4122 for (int i = 0; i < 10; ++i) 4123 ; 4124 } 4125 #pragma omp task 4126 { 4127 #pragma omp target teams distribute parallel for simd // OK 4128 for (int i = 0; i < 10; ++i) 4129 ; 4130 } 4131 #pragma omp task 4132 { 4133 #pragma omp target teams distribute simd // OK 4134 for (int i = 0; i < 10; ++i) 4135 ; 4136 } 4137 4138 // ORDERED DIRECTIVE 4139 #pragma omp ordered 4140 { 4141 #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?}} 4142 for (int i = 0; i < 10; ++i) 4143 ; 4144 } 4145 #pragma omp ordered 4146 { 4147 #pragma omp simd 4148 for (int i = 0; i < 10; ++i) 4149 ; 4150 } 4151 #pragma omp ordered 4152 { 4153 #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?}} 4154 for (int i = 0; i < 10; ++i) 4155 ; 4156 } 4157 #pragma omp ordered 4158 { 4159 #pragma omp parallel 4160 for (int i = 0; i < 10; ++i) 4161 ; 4162 } 4163 #pragma omp ordered 4164 { 4165 #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?}} 4166 { 4167 bar(); 4168 } 4169 } 4170 #pragma omp ordered 4171 { 4172 #pragma omp master // OK, though second 'ordered' is redundant 4173 { 4174 bar(); 4175 } 4176 } 4177 #pragma omp ordered 4178 { 4179 #pragma omp critical 4180 { 4181 bar(); 4182 } 4183 } 4184 #pragma omp ordered 4185 { 4186 #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?}} 4187 { 4188 bar(); 4189 } 4190 } 4191 #pragma omp ordered 4192 { 4193 #pragma omp parallel for ordered 4194 for (int j = 0; j < 10; ++j) { 4195 #pragma omp ordered // OK 4196 { 4197 bar(); 4198 } 4199 } 4200 } 4201 #pragma omp ordered 4202 { 4203 #pragma omp parallel for simd ordered 4204 for (int j = 0; j < 10; ++j) { 4205 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4206 { 4207 bar(); 4208 } 4209 } 4210 } 4211 #pragma omp ordered 4212 { 4213 #pragma omp parallel for simd ordered 4214 for (int j = 0; j < 10; ++j) { 4215 #pragma omp ordered simd 4216 { 4217 bar(); 4218 } 4219 } 4220 } 4221 #pragma omp ordered 4222 { 4223 #pragma omp parallel for 4224 for (int i = 0; i < 10; ++i) 4225 ; 4226 } 4227 #pragma omp ordered 4228 { 4229 #pragma omp parallel for simd 4230 for (int i = 0; i < 10; ++i) 4231 ; 4232 } 4233 #pragma omp ordered 4234 { 4235 #pragma omp parallel sections 4236 { 4237 bar(); 4238 } 4239 } 4240 #pragma omp ordered 4241 { 4242 #pragma omp task 4243 { 4244 bar(); 4245 } 4246 } 4247 #pragma omp ordered 4248 { 4249 #pragma omp taskyield 4250 bar(); 4251 } 4252 #pragma omp ordered 4253 { 4254 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 4255 bar(); 4256 } 4257 #pragma omp ordered 4258 { 4259 #pragma omp scan // expected-error {{region cannot be closely nested inside 'ordered' region}} 4260 bar(); 4261 } 4262 #pragma omp ordered 4263 { 4264 #pragma omp taskwait 4265 bar(); 4266 } 4267 #pragma omp ordered 4268 { 4269 #pragma omp flush 4270 bar(); 4271 } 4272 #pragma omp ordered 4273 { 4274 #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?}} 4275 bar(); 4276 } 4277 #pragma omp ordered 4278 { 4279 #pragma omp atomic 4280 ++a; 4281 } 4282 #pragma omp ordered 4283 { 4284 #pragma omp target 4285 ++a; 4286 } 4287 #pragma omp ordered 4288 { 4289 #pragma omp target parallel 4290 ++a; 4291 } 4292 #pragma omp ordered 4293 { 4294 #pragma omp target parallel for ordered 4295 for (int j = 0; j < 10; ++j) { 4296 #pragma omp ordered // OK 4297 { 4298 bar(); 4299 } 4300 } 4301 } 4302 #pragma omp ordered 4303 { 4304 #pragma omp target parallel for 4305 for (int i = 0; i < 10; ++i) 4306 ; 4307 } 4308 #pragma omp ordered 4309 { 4310 #pragma omp target enter data map(to: a) 4311 ++a; 4312 } 4313 #pragma omp ordered 4314 { 4315 #pragma omp target exit data map(from: a) 4316 ++a; 4317 } 4318 #pragma omp ordered 4319 { 4320 #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?}} 4321 ++a; 4322 } 4323 #pragma omp ordered 4324 { 4325 #pragma omp taskloop 4326 for (int i = 0; i < 10; ++i) 4327 ++a; 4328 } 4329 #pragma omp ordered 4330 { 4331 #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?}} 4332 for (int i = 0; i < 10; ++i) 4333 ; 4334 } 4335 #pragma omp ordered 4336 { 4337 bar(); 4338 #pragma omp target update to(a) 4339 bar(); 4340 } 4341 #pragma omp ordered 4342 { 4343 #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?}} 4344 for (int i = 0; i < 10; ++i) 4345 ; 4346 } 4347 #pragma omp ordered 4348 { 4349 #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?}} 4350 for (int i = 0; i < 10; ++i) 4351 ; 4352 } 4353 #pragma omp ordered 4354 { 4355 #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?}} 4356 for (int i = 0; i < 10; ++i) 4357 ; 4358 } 4359 #pragma omp ordered 4360 { 4361 #pragma omp target simd // OK 4362 for (int i = 0; i < 10; ++i) 4363 ; 4364 } 4365 #pragma omp ordered 4366 { 4367 #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?}} 4368 for (int i = 0; i < 10; ++i) 4369 ; 4370 } 4371 #pragma omp ordered 4372 { 4373 #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?}} 4374 for (int i = 0; i < 10; ++i) 4375 ; 4376 } 4377 #pragma omp ordered 4378 { 4379 #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?}} 4380 for (int i = 0; i < 10; ++i) 4381 ; 4382 } 4383 #pragma omp ordered 4384 { 4385 #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?}} 4386 for (int i = 0; i < 10; ++i) 4387 ; 4388 } 4389 #pragma omp ordered 4390 { 4391 #pragma omp target teams // OK 4392 a++; 4393 } 4394 #pragma omp ordered 4395 { 4396 #pragma omp target teams distribute // OK 4397 for (int i = 0; i < 10; ++i) 4398 ; 4399 } 4400 #pragma omp ordered 4401 { 4402 #pragma omp target teams distribute parallel for // OK 4403 for (int i = 0; i < 10; ++i) 4404 ; 4405 } 4406 #pragma omp ordered 4407 { 4408 #pragma omp target teams distribute parallel for simd // OK 4409 for (int i = 0; i < 10; ++i) 4410 ; 4411 } 4412 #pragma omp ordered 4413 { 4414 #pragma omp target teams distribute simd // OK 4415 for (int i = 0; i < 10; ++i) 4416 ; 4417 } 4418 4419 // ATOMIC DIRECTIVE 4420 #pragma omp atomic 4421 // 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 lvalue expression with scalar type}} 4422 // expected-note@+1 {{expected an expression statement}} 4423 { 4424 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4425 for (int i = 0; i < 10; ++i) 4426 ; 4427 } 4428 #pragma omp atomic 4429 // 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 lvalue expression with scalar type}} 4430 // expected-note@+1 {{expected an expression statement}} 4431 { 4432 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4433 for (int i = 0; i < 10; ++i) 4434 ; 4435 } 4436 #pragma omp atomic 4437 // 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 lvalue expression with scalar type}} 4438 // expected-note@+1 {{expected an expression statement}} 4439 { 4440 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4441 for (int i = 0; i < 10; ++i) 4442 ; 4443 } 4444 #pragma omp atomic 4445 // 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 lvalue expression with scalar type}} 4446 // expected-note@+1 {{expected an expression statement}} 4447 { 4448 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4449 for (int i = 0; i < 10; ++i) 4450 ; 4451 } 4452 #pragma omp atomic 4453 // 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 lvalue expression with scalar type}} 4454 // expected-note@+1 {{expected an expression statement}} 4455 { 4456 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4457 { 4458 bar(); 4459 } 4460 } 4461 #pragma omp atomic 4462 // 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 lvalue expression with scalar type}} 4463 // expected-note@+1 {{expected an expression statement}} 4464 { 4465 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4466 { 4467 bar(); 4468 } 4469 } 4470 #pragma omp atomic 4471 // 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 lvalue expression with scalar type}} 4472 // expected-note@+1 {{expected an expression statement}} 4473 { 4474 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4475 { 4476 bar(); 4477 } 4478 } 4479 #pragma omp atomic 4480 // 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 lvalue expression with scalar type}} 4481 // expected-note@+1 {{expected an expression statement}} 4482 { 4483 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4484 { 4485 bar(); 4486 } 4487 } 4488 #pragma omp atomic 4489 // 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 lvalue expression with scalar type}} 4490 // expected-note@+1 {{expected an expression statement}} 4491 { 4492 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4493 { 4494 bar(); 4495 } 4496 } 4497 #pragma omp atomic 4498 // 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 lvalue expression with scalar type}} 4499 // expected-note@+1 {{expected an expression statement}} 4500 { 4501 #pragma omp parallel masked // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4502 { 4503 bar(); 4504 } 4505 } 4506 #pragma omp atomic 4507 // 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 lvalue expression with scalar type}} 4508 // expected-note@+1 {{expected an expression statement}} 4509 { 4510 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4511 { 4512 bar(); 4513 } 4514 } 4515 #pragma omp atomic 4516 // 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 lvalue expression with scalar type}} 4517 // expected-note@+1 {{expected an expression statement}} 4518 { 4519 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4520 for (int i = 0; i < 10; ++i) 4521 ; 4522 } 4523 #pragma omp atomic 4524 // 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 lvalue expression with scalar type}} 4525 // expected-note@+1 {{expected an expression statement}} 4526 { 4527 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4528 for (int i = 0; i < 10; ++i) 4529 ; 4530 } 4531 #pragma omp atomic 4532 // 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 lvalue expression with scalar type}} 4533 // expected-note@+1 {{expected an expression statement}} 4534 { 4535 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4536 { 4537 bar(); 4538 } 4539 } 4540 #pragma omp atomic 4541 // 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 lvalue expression with scalar type}} 4542 // expected-note@+1 {{expected an expression statement}} 4543 { 4544 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4545 { 4546 bar(); 4547 } 4548 } 4549 #pragma omp atomic 4550 // 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 lvalue expression with scalar type}} 4551 // expected-note@+1 {{expected an expression statement}} 4552 { 4553 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4554 bar(); 4555 } 4556 #pragma omp atomic 4557 // 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 lvalue expression with scalar type}} 4558 // expected-note@+1 {{expected an expression statement}} 4559 { 4560 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4561 bar(); 4562 } 4563 #pragma omp atomic 4564 // 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 lvalue expression with scalar type}} 4565 // expected-note@+1 {{expected an expression statement}} 4566 { 4567 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4568 bar(); 4569 } 4570 #pragma omp atomic 4571 // 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 lvalue expression with scalar type}} 4572 // expected-note@+1 {{expected an expression statement}} 4573 { 4574 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4575 bar(); 4576 } 4577 #pragma omp atomic 4578 // 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 lvalue expression with scalar type}} 4579 // expected-note@+1 {{expected an expression statement}} 4580 { 4581 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4582 bar(); 4583 } 4584 #pragma omp atomic 4585 // 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 lvalue expression with scalar type}} 4586 // expected-note@+1 {{expected an expression statement}} 4587 { 4588 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4589 bar(); 4590 } 4591 #pragma omp atomic 4592 // 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 lvalue expression with scalar type}} 4593 // expected-note@+1 {{expected an expression statement}} 4594 { 4595 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4596 ++a; 4597 } 4598 #pragma omp atomic 4599 // 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 lvalue expression with scalar type}} 4600 // expected-note@+1 {{expected an expression statement}} 4601 { 4602 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4603 ++a; 4604 } 4605 #pragma omp atomic 4606 // 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 lvalue expression with scalar type}} 4607 // expected-note@+1 {{expected an expression statement}} 4608 { 4609 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4610 ++a; 4611 } 4612 #pragma omp atomic 4613 // 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 lvalue expression with scalar type}} 4614 // expected-note@+1 {{expected an expression statement}} 4615 { 4616 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4617 for (int i = 0; i < 10; ++i) 4618 ; 4619 } 4620 #pragma omp atomic 4621 // 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 lvalue expression with scalar type}} 4622 // expected-note@+1 {{expected an expression statement}} 4623 { 4624 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4625 ++a; 4626 } 4627 #pragma omp atomic 4628 // 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 lvalue expression with scalar type}} 4629 // expected-note@+1 {{expected an expression statement}} 4630 { 4631 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4632 ++a; 4633 } 4634 #pragma omp atomic 4635 // 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 lvalue expression with scalar type}} 4636 // expected-note@+1 {{expected an expression statement}} 4637 { 4638 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4639 ++a; 4640 } 4641 #pragma omp atomic 4642 // 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 lvalue expression with scalar type}} 4643 // expected-note@+1 {{expected an expression statement}} 4644 { 4645 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4646 for (int i = 0; i < 10; ++i) 4647 ++a; 4648 } 4649 #pragma omp atomic 4650 // 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 lvalue expression with scalar type}} 4651 // expected-note@+1 {{expected an expression statement}} 4652 { 4653 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4654 for (int i = 0; i < 10; ++i) 4655 ; 4656 } 4657 #pragma omp atomic 4658 // 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 lvalue expression with scalar type}} 4659 // expected-note@+1 {{expected an expression statement}} 4660 { 4661 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4662 bar(); 4663 } 4664 #pragma omp atomic 4665 // 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 lvalue expression with scalar type}} 4666 // expected-note@+1 {{expected an expression statement}} 4667 { 4668 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4669 for (int i = 0; i < 10; ++i) 4670 ; 4671 } 4672 #pragma omp atomic 4673 // 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 lvalue expression with scalar type}} 4674 // expected-note@+1 {{expected an expression statement}} 4675 { 4676 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4677 for (int i = 0; i < 10; ++i) 4678 ; 4679 } 4680 #pragma omp atomic 4681 // 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 lvalue expression with scalar type}} 4682 // expected-note@+1 {{expected an expression statement}} 4683 { 4684 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4685 for (int i = 0; i < 10; ++i) 4686 ; 4687 } 4688 #pragma omp atomic 4689 // 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 lvalue expression with scalar type}} 4690 // expected-note@+1 {{expected an expression statement}} 4691 { 4692 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4693 for (int i = 0; i < 10; ++i) 4694 ; 4695 } 4696 #pragma omp atomic 4697 // 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 lvalue expression with scalar type}} 4698 // expected-note@+1 {{expected an expression statement}} 4699 { 4700 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4701 for (int i = 0; i < 10; ++i) 4702 ; 4703 } 4704 #pragma omp atomic 4705 // 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 lvalue expression with scalar type}} 4706 // expected-note@+1 {{expected an expression statement}} 4707 { 4708 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4709 for (int i = 0; i < 10; ++i) 4710 ; 4711 } 4712 #pragma omp atomic 4713 // 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 lvalue expression with scalar type}} 4714 // expected-note@+1 {{expected an expression statement}} 4715 { 4716 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4717 for (int i = 0; i < 10; ++i) 4718 ; 4719 } 4720 #pragma omp atomic 4721 // 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 lvalue expression with scalar type}} 4722 // expected-note@+1 {{expected an expression statement}} 4723 { 4724 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4725 for (int i = 0; i < 10; ++i) 4726 ; 4727 } 4728 #pragma omp atomic 4729 // 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 lvalue expression with scalar type}} 4730 // expected-note@+1 {{expected an expression statement}} 4731 { 4732 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4733 a++; 4734 } 4735 #pragma omp atomic 4736 // 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 lvalue expression with scalar type}} 4737 // expected-note@+1 {{expected an expression statement}} 4738 { 4739 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4740 for (int i = 0; i < 10; ++i) 4741 ; 4742 } 4743 #pragma omp atomic 4744 // 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 lvalue expression with scalar type}} 4745 // expected-note@+1 {{expected an expression statement}} 4746 { 4747 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4748 for (int i = 0; i < 10; ++i) 4749 ; 4750 } 4751 #pragma omp atomic 4752 // 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 lvalue expression with scalar type}} 4753 // expected-note@+1 {{expected an expression statement}} 4754 { 4755 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4756 for (int i = 0; i < 10; ++i) 4757 ; 4758 } 4759 #pragma omp atomic 4760 // 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 lvalue expression with scalar type}} 4761 // expected-note@+1 {{expected an expression statement}} 4762 { 4763 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4764 for (int i = 0; i < 10; ++i) 4765 ; 4766 } 4767 4768 // TARGET DIRECTIVE 4769 #pragma omp target 4770 #pragma omp parallel 4771 bar(); 4772 #pragma omp target 4773 #pragma omp for 4774 for (int i = 0; i < 10; ++i) 4775 ; 4776 #pragma omp target 4777 #pragma omp simd 4778 for (int i = 0; i < 10; ++i) 4779 ; 4780 #pragma omp target 4781 #pragma omp for simd 4782 for (int i = 0; i < 10; ++i) 4783 ; 4784 #pragma omp target 4785 #pragma omp sections 4786 { 4787 bar(); 4788 } 4789 #pragma omp target 4790 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 4791 { 4792 bar(); 4793 } 4794 #pragma omp target 4795 #pragma omp single 4796 bar(); 4797 4798 #pragma omp target 4799 #pragma omp master 4800 { 4801 bar(); 4802 } 4803 #pragma omp target 4804 #pragma omp critical 4805 { 4806 bar(); 4807 } 4808 #pragma omp target 4809 #pragma omp parallel for 4810 for (int i = 0; i < 10; ++i) 4811 ; 4812 #pragma omp target 4813 #pragma omp parallel for simd 4814 for (int i = 0; i < 10; ++i) 4815 ; 4816 #pragma omp target 4817 #pragma omp parallel sections 4818 { 4819 bar(); 4820 } 4821 #pragma omp target 4822 #pragma omp task 4823 { 4824 bar(); 4825 } 4826 #pragma omp target 4827 { 4828 #pragma omp taskyield 4829 bar(); 4830 } 4831 #pragma omp target 4832 { 4833 #pragma omp barrier 4834 bar(); 4835 } 4836 #pragma omp target 4837 { 4838 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 4839 bar(); 4840 } 4841 #pragma omp target 4842 { 4843 #pragma omp taskwait 4844 bar(); 4845 } 4846 #pragma omp target 4847 { 4848 #pragma omp flush 4849 bar(); 4850 } 4851 #pragma omp target 4852 { 4853 #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?}} 4854 bar(); 4855 } 4856 #pragma omp target 4857 { 4858 #pragma omp atomic 4859 ++a; 4860 } 4861 #pragma omp target 4862 { 4863 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4864 ++a; 4865 } 4866 #pragma omp target 4867 { 4868 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4869 ++a; 4870 } 4871 #pragma omp target 4872 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4873 for (int i = 0; i < 10; ++i) 4874 ; 4875 #pragma omp target 4876 { 4877 #pragma omp teams 4878 ++a; 4879 } 4880 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4881 { 4882 #pragma omp teams // expected-note {{directive outside teams construct here}} 4883 ++a; 4884 #pragma omp teams // expected-note {{nested teams construct here}} 4885 ++a; 4886 } 4887 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4888 { 4889 ++a; // expected-note {{statement outside teams construct here}} 4890 #pragma omp teams // expected-note {{nested teams construct here}} 4891 ++a; 4892 } 4893 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4894 { 4895 while (0) // expected-note {{statement outside teams construct here}} 4896 #pragma omp teams // expected-note {{nested teams construct here}} 4897 ++a; 4898 } 4899 #pragma omp target 4900 { 4901 #pragma omp taskloop 4902 for (int i = 0; i < 10; ++i) 4903 ++a; 4904 } 4905 #pragma omp target 4906 { 4907 #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?}} 4908 for (int i = 0; i < 10; ++i) 4909 ; 4910 } 4911 #pragma omp target 4912 { 4913 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4914 } 4915 #pragma omp target 4916 { 4917 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4918 } 4919 #pragma omp target 4920 { 4921 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4922 } 4923 #pragma omp target 4924 { 4925 #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?}} 4926 for (int i = 0; i < 10; ++i) 4927 ; 4928 } 4929 #pragma omp target 4930 { 4931 #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?}} 4932 for (int i = 0; i < 10; ++i) 4933 ; 4934 } 4935 #pragma omp target 4936 { 4937 #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?}} 4938 for (int i = 0; i < 10; ++i) 4939 ; 4940 } 4941 #pragma omp target 4942 { 4943 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4944 for (int i = 0; i < 10; ++i) 4945 ; 4946 } 4947 #pragma omp target 4948 { 4949 #pragma omp teams distribute // OK 4950 for (int i = 0; i < 10; ++i) 4951 ; 4952 } 4953 #pragma omp target 4954 { 4955 #pragma omp teams distribute simd // OK 4956 for (int i = 0; i < 10; ++i) 4957 ; 4958 } 4959 #pragma omp target 4960 { 4961 #pragma omp teams distribute parallel for simd // OK 4962 for (int i = 0; i < 10; ++i) 4963 ; 4964 } 4965 #pragma omp target 4966 { 4967 #pragma omp teams distribute parallel for // OK 4968 for (int i = 0; i < 10; ++i) 4969 ; 4970 } 4971 #pragma omp target 4972 { 4973 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4974 for (int i = 0; i < 10; ++i) 4975 ; 4976 } 4977 #pragma omp target 4978 { 4979 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4980 for (int i = 0; i < 10; ++i) 4981 ; 4982 } 4983 #pragma omp target 4984 { 4985 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4986 for (int i = 0; i < 10; ++i) 4987 ; 4988 } 4989 #pragma omp target 4990 { 4991 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4992 for (int i = 0; i < 10; ++i) 4993 ; 4994 } 4995 #pragma omp target 4996 { 4997 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4998 for (int i = 0; i < 10; ++i) 4999 ; 5000 } 5001 5002 // TARGET PARALLEL DIRECTIVE 5003 #pragma omp target parallel 5004 #pragma omp parallel 5005 bar(); 5006 #pragma omp target parallel 5007 #pragma omp for 5008 for (int i = 0; i < 10; ++i) 5009 ; 5010 #pragma omp target parallel 5011 #pragma omp simd 5012 for (int i = 0; i < 10; ++i) 5013 ; 5014 #pragma omp target parallel 5015 #pragma omp for simd 5016 for (int i = 0; i < 10; ++i) 5017 ; 5018 #pragma omp target parallel 5019 #pragma omp sections 5020 { 5021 bar(); 5022 } 5023 #pragma omp target parallel 5024 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 5025 { 5026 bar(); 5027 } 5028 #pragma omp target parallel 5029 #pragma omp single 5030 bar(); 5031 5032 #pragma omp target parallel 5033 #pragma omp master 5034 { 5035 bar(); 5036 } 5037 #pragma omp target 5038 #pragma omp parallel master 5039 { 5040 bar(); 5041 } 5042 #pragma omp target 5043 #pragma omp parallel masked 5044 { 5045 bar(); 5046 } 5047 #pragma omp target parallel 5048 #pragma omp critical 5049 { 5050 bar(); 5051 } 5052 #pragma omp target parallel 5053 #pragma omp parallel for 5054 for (int i = 0; i < 10; ++i) 5055 ; 5056 #pragma omp target parallel 5057 #pragma omp parallel for simd 5058 for (int i = 0; i < 10; ++i) 5059 ; 5060 #pragma omp target parallel 5061 #pragma omp parallel sections 5062 { 5063 bar(); 5064 } 5065 #pragma omp target parallel 5066 #pragma omp task 5067 { 5068 bar(); 5069 } 5070 #pragma omp target parallel 5071 { 5072 #pragma omp taskyield 5073 bar(); 5074 } 5075 #pragma omp target parallel 5076 { 5077 #pragma omp barrier 5078 bar(); 5079 } 5080 #pragma omp target parallel 5081 { 5082 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 5083 bar(); 5084 } 5085 #pragma omp target parallel 5086 { 5087 #pragma omp taskwait 5088 bar(); 5089 } 5090 #pragma omp target parallel 5091 { 5092 #pragma omp flush 5093 bar(); 5094 } 5095 #pragma omp target parallel 5096 { 5097 #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?}} 5098 bar(); 5099 } 5100 #pragma omp target parallel 5101 { 5102 #pragma omp atomic 5103 ++a; 5104 } 5105 #pragma omp target parallel 5106 { 5107 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 5108 ++a; 5109 } 5110 #pragma omp target parallel 5111 { 5112 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 5113 ++a; 5114 } 5115 #pragma omp target parallel 5116 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 5117 for (int i = 0; i < 10; ++i) 5118 ; 5119 #pragma omp target parallel 5120 { 5121 #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?}} 5122 ++a; 5123 } 5124 #pragma omp target parallel 5125 { 5126 ++a; 5127 #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?}} 5128 ++a; 5129 } 5130 #pragma omp target parallel 5131 { 5132 #pragma omp taskloop 5133 for (int i = 0; i < 10; ++i) 5134 ++a; 5135 } 5136 #pragma omp target parallel 5137 { 5138 #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?}} 5139 for (int i = 0; i < 10; ++i) 5140 ; 5141 } 5142 #pragma omp target parallel 5143 { 5144 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 5145 } 5146 #pragma omp target parallel 5147 { 5148 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 5149 } 5150 #pragma omp target parallel 5151 { 5152 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 5153 } 5154 #pragma omp target parallel 5155 { 5156 #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?}} 5157 for (int i = 0; i < 10; ++i) 5158 ; 5159 } 5160 #pragma omp target parallel 5161 { 5162 #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?}} 5163 for (int i = 0; i < 10; ++i) 5164 ; 5165 } 5166 #pragma omp target parallel 5167 { 5168 #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?}} 5169 for (int i = 0; i < 10; ++i) 5170 ; 5171 } 5172 #pragma omp target parallel 5173 { 5174 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 5175 for (int i = 0; i < 10; ++i) 5176 ; 5177 } 5178 #pragma omp target parallel 5179 { 5180 #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?}} 5181 for (int i = 0; i < 10; ++i) 5182 ; 5183 } 5184 #pragma omp target parallel 5185 { 5186 #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?}} 5187 for (int i = 0; i < 10; ++i) 5188 ; 5189 } 5190 #pragma omp target parallel 5191 { 5192 #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?}} 5193 for (int i = 0; i < 10; ++i) 5194 ; 5195 } 5196 #pragma omp target parallel 5197 { 5198 #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?}} 5199 for (int i = 0; i < 10; ++i) 5200 ; 5201 } 5202 #pragma omp target parallel 5203 { 5204 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 5205 a++; 5206 } 5207 #pragma omp target parallel 5208 { 5209 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 5210 for (int i = 0; i < 10; ++i) 5211 ; 5212 } 5213 #pragma omp target parallel 5214 { 5215 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 5216 for (int i = 0; i < 10; ++i) 5217 ; 5218 } 5219 #pragma omp target parallel 5220 { 5221 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 5222 for (int i = 0; i < 10; ++i) 5223 ; 5224 } 5225 #pragma omp target parallel 5226 { 5227 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 5228 for (int i = 0; i < 10; ++i) 5229 ; 5230 } 5231 5232 // TARGET PARALLEL FOR DIRECTIVE 5233 #pragma omp target parallel for 5234 for (int i = 0; i < 10; ++i) { 5235 #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?}} 5236 for (int i = 0; i < 10; ++i) 5237 ; 5238 } 5239 #pragma omp target parallel for 5240 for (int i = 0; i < 10; ++i) { 5241 #pragma omp simd 5242 for (int i = 0; i < 10; ++i) 5243 ; 5244 } 5245 #pragma omp target parallel for 5246 for (int i = 0; i < 10; ++i) { 5247 #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?}} 5248 for (int i = 0; i < 10; ++i) 5249 ; 5250 } 5251 #pragma omp target parallel for 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 parallel for 5258 for (int i = 0; i < 10; ++i) { 5259 #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?}} 5260 { 5261 bar(); 5262 } 5263 } 5264 #pragma omp target parallel for 5265 for (int i = 0; i < 10; ++i) { 5266 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 5267 { 5268 bar(); 5269 } 5270 } 5271 #pragma omp target parallel for 5272 for (int i = 0; i < 10; ++i) { 5273 #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?}} 5274 { 5275 bar(); 5276 } 5277 } 5278 5279 #pragma omp target parallel for 5280 for (int i = 0; i < 10; ++i) { 5281 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 5282 { 5283 bar(); 5284 } 5285 } 5286 5287 #pragma omp target parallel for 5288 for (int i = 0; i < 10; ++i) { 5289 #pragma omp critical 5290 { 5291 bar(); 5292 } 5293 } 5294 5295 #pragma omp target parallel for 5296 for (int i = 0; i < 10; ++i) { 5297 #pragma omp parallel 5298 { 5299 #pragma omp single // OK 5300 { 5301 bar(); 5302 } 5303 #pragma omp for // OK 5304 for (int i = 0; i < 10; ++i) 5305 ; 5306 #pragma omp for simd // OK 5307 for (int i = 0; i < 10; ++i) 5308 ; 5309 #pragma omp sections // OK 5310 { 5311 bar(); 5312 } 5313 } 5314 } 5315 #pragma omp target parallel for 5316 for (int i = 0; i < 10; ++i) { 5317 #pragma omp parallel for 5318 for (int i = 0; i < 10; ++i) 5319 ; 5320 } 5321 #pragma omp target parallel for 5322 for (int i = 0; i < 10; ++i) { 5323 #pragma omp parallel for simd 5324 for (int i = 0; i < 10; ++i) 5325 ; 5326 } 5327 #pragma omp target parallel for 5328 for (int i = 0; i < 10; ++i) { 5329 #pragma omp parallel sections 5330 { 5331 bar(); 5332 } 5333 } 5334 #pragma omp target parallel for 5335 for (int i = 0; i < 10; ++i) { 5336 #pragma omp task 5337 { 5338 bar(); 5339 } 5340 } 5341 #pragma omp target parallel for 5342 for (int i = 0; i < 10; ++i) { 5343 #pragma omp taskyield 5344 bar(); 5345 } 5346 #pragma omp target parallel for 5347 for (int i = 0; i < 10; ++i) { 5348 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 5349 bar(); 5350 } 5351 #pragma omp target parallel for 5352 for (int i = 0; i < 10; ++i) { 5353 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 5354 bar(); 5355 } 5356 #pragma omp target parallel for 5357 for (int i = 0; i < 10; ++i) { 5358 #pragma omp taskwait 5359 bar(); 5360 } 5361 #pragma omp target parallel for 5362 for (int i = 0; i < 10; ++i) { 5363 #pragma omp flush 5364 bar(); 5365 } 5366 #pragma omp target parallel for 5367 for (int i = 0; i < 10; ++i) { 5368 #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?}} 5369 bar(); 5370 } 5371 #pragma omp target parallel for ordered 5372 for (int i = 0; i < 10; ++i) { 5373 #pragma omp ordered // OK 5374 bar(); 5375 } 5376 #pragma omp target parallel for 5377 for (int i = 0; i < 10; ++i) { 5378 #pragma omp atomic 5379 ++a; 5380 } 5381 #pragma omp target parallel for 5382 for (int i = 0; i < 10; ++i) { 5383 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 5384 ++a; 5385 } 5386 #pragma omp target parallel for 5387 for (int i = 0; i < 10; ++i) { 5388 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 5389 ++a; 5390 } 5391 #pragma omp target parallel for 5392 for (int i = 0; i < 10; ++i) { 5393 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5394 for (int i = 0; i < 10; ++i) 5395 ; 5396 } 5397 #pragma omp target parallel for 5398 for (int i = 0; i < 10; ++i) { 5399 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5400 ++a; 5401 } 5402 #pragma omp target parallel for 5403 for (int i = 0; i < 10; ++i) { 5404 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5405 ++a; 5406 } 5407 #pragma omp target parallel for 5408 for (int i = 0; i < 10; ++i) { 5409 #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?}} 5410 ++a; 5411 } 5412 #pragma omp target parallel for 5413 for (int i = 0; i < 10; ++i) { 5414 #pragma omp taskloop 5415 for (int i = 0; i < 10; ++i) 5416 ++a; 5417 } 5418 #pragma omp target parallel for 5419 for (int i = 0; i < 10; ++i) { 5420 #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?}} 5421 for (int j = 0; j < 10; ++j) 5422 ; 5423 } 5424 #pragma omp target parallel for 5425 for (int i = 0; i < 10; ++i) { 5426 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5427 } 5428 #pragma omp target parallel for 5429 for (int i = 0; i < 10; ++i) { 5430 #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?}} 5431 for (int j = 0; j < 10; ++j) 5432 ; 5433 } 5434 #pragma omp target parallel for 5435 for (int i = 0; i < 10; ++i) { 5436 #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?}} 5437 for (int j = 0; j < 10; ++j) 5438 ; 5439 } 5440 #pragma omp target parallel for 5441 for (int i = 0; i < 10; ++i) { 5442 #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?}} 5443 for (int j = 0; j < 10; ++j) 5444 ; 5445 } 5446 #pragma omp target parallel for 5447 for (int i = 0; i < 10; ++i) { 5448 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5449 for (int j = 0; j < 10; ++j) 5450 ; 5451 } 5452 #pragma omp target parallel for 5453 for (int i = 0; i < 10; ++i) { 5454 #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?}} 5455 for (int j = 0; j < 10; ++j) 5456 ; 5457 } 5458 #pragma omp target parallel for 5459 for (int i = 0; i < 10; ++i) { 5460 #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?}} 5461 for (int j = 0; j < 10; ++j) 5462 ; 5463 } 5464 #pragma omp target parallel for 5465 for (int i = 0; i < 10; ++i) { 5466 #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?}} 5467 for (int j = 0; j < 10; ++j) 5468 ; 5469 } 5470 #pragma omp target parallel for 5471 for (int i = 0; i < 10; ++i) { 5472 #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?}} 5473 for (int j = 0; j < 10; ++j) 5474 ; 5475 } 5476 #pragma omp target parallel for 5477 for (int i = 0; i < 10; ++i) { 5478 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 5479 a++; 5480 } 5481 #pragma omp target parallel for 5482 for (int i = 0; i < 10; ++i) { 5483 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 5484 for (int j = 0; j < 10; ++j) 5485 ; 5486 } 5487 #pragma omp target parallel for 5488 for (int i = 0; i < 10; ++i) { 5489 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5490 for (int j = 0; j < 10; ++j) 5491 ; 5492 } 5493 #pragma omp target parallel for 5494 for (int i = 0; i < 10; ++i) { 5495 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5496 for (int j = 0; j < 10; ++j) 5497 ; 5498 } 5499 #pragma omp target parallel for 5500 for (int i = 0; i < 10; ++i) { 5501 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5502 for (int j = 0; j < 10; ++j) 5503 ; 5504 } 5505 5506 // TEAMS DIRECTIVE 5507 #pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5508 bar(); 5509 #pragma omp target 5510 #pragma omp teams 5511 #pragma omp parallel 5512 bar(); 5513 #pragma omp target 5514 #pragma omp teams 5515 #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?}} 5516 for (int i = 0; i < 10; ++i) 5517 ; 5518 #pragma omp target 5519 #pragma omp teams 5520 #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?}} 5521 for (int i = 0; i < 10; ++i) 5522 ; 5523 #pragma omp target 5524 #pragma omp teams 5525 #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?}} 5526 for (int i = 0; i < 10; ++i) 5527 ; 5528 #pragma omp target 5529 #pragma omp teams 5530 #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?}} 5531 { 5532 bar(); 5533 } 5534 #pragma omp target 5535 #pragma omp teams 5536 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 5537 { 5538 bar(); 5539 } 5540 #pragma omp target 5541 #pragma omp teams 5542 #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?}} 5543 bar(); 5544 5545 #pragma omp target 5546 #pragma omp teams 5547 #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?}} 5548 { 5549 bar(); 5550 } 5551 #pragma omp target 5552 #pragma omp teams 5553 #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?}} 5554 { 5555 bar(); 5556 } 5557 #pragma omp target 5558 #pragma omp teams 5559 #pragma omp parallel for 5560 for (int i = 0; i < 10; ++i) 5561 ; 5562 #pragma omp target 5563 #pragma omp teams 5564 #pragma omp parallel for simd 5565 for (int i = 0; i < 10; ++i) 5566 ; 5567 #pragma omp target 5568 #pragma omp teams 5569 #pragma omp parallel sections 5570 { 5571 bar(); 5572 } 5573 #pragma omp target 5574 #pragma omp teams 5575 #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?}} 5576 { 5577 bar(); 5578 } 5579 #pragma omp target 5580 #pragma omp teams 5581 { 5582 #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?}} 5583 bar(); 5584 } 5585 #pragma omp target 5586 #pragma omp teams 5587 { 5588 #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?}} 5589 bar(); 5590 } 5591 #pragma omp target 5592 #pragma omp teams 5593 { 5594 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 5595 bar(); 5596 } 5597 #pragma omp target 5598 #pragma omp teams 5599 { 5600 #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?}} 5601 bar(); 5602 } 5603 #pragma omp target 5604 #pragma omp teams 5605 { 5606 #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?}} 5607 bar(); 5608 } 5609 #pragma omp target 5610 #pragma omp teams 5611 { 5612 #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?}} 5613 bar(); 5614 } 5615 #pragma omp target 5616 #pragma omp teams 5617 { 5618 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 5619 ++a; 5620 } 5621 #pragma omp target 5622 #pragma omp teams 5623 { 5624 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5625 ++a; 5626 } 5627 #pragma omp target 5628 #pragma omp teams 5629 { 5630 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5631 ++a; 5632 } 5633 #pragma omp target 5634 #pragma omp teams 5635 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5636 for (int i = 0; i < 10; ++i) 5637 ; 5638 #pragma omp target 5639 #pragma omp teams 5640 { 5641 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5642 ++a; 5643 } 5644 #pragma omp target 5645 #pragma omp teams 5646 { 5647 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5648 ++a; 5649 } 5650 #pragma omp target 5651 #pragma omp teams 5652 { 5653 #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?}} 5654 ++a; 5655 } 5656 #pragma omp target 5657 #pragma omp teams 5658 { 5659 #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?}} 5660 for (int i = 0; i < 10; ++i) 5661 ++a; 5662 } 5663 #pragma omp target 5664 #pragma omp teams 5665 #pragma omp distribute 5666 for (int i = 0; i < 10; ++i) 5667 ; 5668 #pragma omp target 5669 #pragma omp teams 5670 #pragma omp distribute 5671 for (int i = 0; i < 10; ++i) 5672 ; 5673 #pragma omp distribute 5674 for (int j = 0; j < 10; ++j) 5675 ; 5676 #pragma omp target 5677 #pragma omp teams 5678 { 5679 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5680 } 5681 #pragma omp target 5682 #pragma omp teams 5683 { 5684 #pragma omp distribute parallel for 5685 for (int i = 0; i < 10; ++i) 5686 ; 5687 #pragma omp distribute parallel for 5688 for (int j = 0; j < 10; ++j) 5689 ; 5690 } 5691 #pragma omp target 5692 #pragma omp teams 5693 { 5694 #pragma omp distribute parallel for simd 5695 for (int i = 0; i < 10; ++i) 5696 ; 5697 #pragma omp distribute parallel for simd 5698 for (int j = 0; j < 10; ++j) 5699 ; 5700 } 5701 #pragma omp target 5702 #pragma omp teams 5703 { 5704 #pragma omp distribute simd 5705 for (int i = 0; i < 10; ++i) 5706 ; 5707 #pragma omp distribute simd 5708 for (int j = 0; j < 10; ++j) 5709 ; 5710 } 5711 #pragma omp target 5712 #pragma omp teams 5713 { 5714 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5715 for (int i = 0; i < 10; ++i) 5716 ; 5717 } 5718 #pragma omp target 5719 #pragma omp teams 5720 { 5721 #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?}} 5722 for (int i = 0; i < 10; ++i) 5723 ; 5724 } 5725 #pragma omp target 5726 #pragma omp teams 5727 { 5728 #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?}} 5729 for (int i = 0; i < 10; ++i) 5730 ; 5731 } 5732 #pragma omp target 5733 #pragma omp teams 5734 { 5735 #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?}} 5736 for (int i = 0; i < 10; ++i) 5737 ; 5738 } 5739 #pragma omp target 5740 #pragma omp teams 5741 { 5742 #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?}} 5743 for (int i = 0; i < 10; ++i) 5744 ; 5745 } 5746 #pragma omp target 5747 #pragma omp teams 5748 { 5749 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5750 a++; 5751 } 5752 #pragma omp target 5753 #pragma omp teams 5754 { 5755 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5756 for (int i = 0; i < 10; ++i) 5757 ; 5758 } 5759 #pragma omp target 5760 #pragma omp teams 5761 { 5762 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5763 for (int i = 0; i < 10; ++i) 5764 ; 5765 } 5766 #pragma omp target 5767 #pragma omp teams 5768 { 5769 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5770 for (int i = 0; i < 10; ++i) 5771 ; 5772 } 5773 #pragma omp target 5774 #pragma omp teams 5775 { 5776 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5777 for (int i = 0; i < 10; ++i) 5778 ; 5779 } 5780 5781 // TASKLOOP DIRECTIVE 5782 #pragma omp taskloop 5783 for (int i = 0; i < 10; ++i) { 5784 #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?}} 5785 for (int i = 0; i < 10; ++i) 5786 ; 5787 } 5788 #pragma omp taskloop 5789 for (int i = 0; i < 10; ++i) { 5790 #pragma omp simd 5791 for (int i = 0; i < 10; ++i) 5792 ; 5793 } 5794 #pragma omp taskloop 5795 for (int i = 0; i < 10; ++i) { 5796 #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?}} 5797 for (int i = 0; i < 10; ++i) 5798 ; 5799 } 5800 #pragma omp taskloop 5801 for (int i = 0; i < 10; ++i) { 5802 #pragma omp parallel 5803 for (int i = 0; i < 10; ++i) 5804 ; 5805 } 5806 #pragma omp taskloop 5807 for (int i = 0; i < 10; ++i) { 5808 #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?}} 5809 { 5810 bar(); 5811 } 5812 } 5813 #pragma omp taskloop 5814 for (int i = 0; i < 10; ++i) { 5815 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 5816 { 5817 bar(); 5818 } 5819 } 5820 #pragma omp taskloop 5821 for (int i = 0; i < 10; ++i) { 5822 #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?}} 5823 { 5824 bar(); 5825 } 5826 } 5827 5828 #pragma omp taskloop 5829 for (int i = 0; i < 10; ++i) { 5830 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5831 { 5832 bar(); 5833 } 5834 } 5835 #pragma omp taskloop 5836 for (int i = 0; i < 10; ++i) { 5837 #pragma omp critical 5838 { 5839 bar(); 5840 } 5841 } 5842 #pragma omp taskloop 5843 for (int i = 0; i < 10; ++i) { 5844 #pragma omp parallel 5845 { 5846 #pragma omp single // OK 5847 { 5848 bar(); 5849 } 5850 #pragma omp for // OK 5851 for (int i = 0; i < 10; ++i) 5852 ; 5853 #pragma omp sections // OK 5854 { 5855 bar(); 5856 } 5857 } 5858 } 5859 #pragma omp taskloop 5860 for (int i = 0; i < 10; ++i) { 5861 #pragma omp parallel for 5862 for (int i = 0; i < 10; ++i) 5863 ; 5864 } 5865 #pragma omp taskloop 5866 for (int i = 0; i < 10; ++i) { 5867 #pragma omp parallel for simd 5868 for (int i = 0; i < 10; ++i) 5869 ; 5870 } 5871 #pragma omp taskloop 5872 for (int i = 0; i < 10; ++i) { 5873 #pragma omp parallel sections 5874 { 5875 bar(); 5876 } 5877 } 5878 #pragma omp taskloop 5879 for (int i = 0; i < 10; ++i) { 5880 #pragma omp task 5881 { 5882 bar(); 5883 } 5884 } 5885 #pragma omp taskloop 5886 for (int i = 0; i < 10; ++i) { 5887 #pragma omp taskyield 5888 bar(); 5889 } 5890 #pragma omp taskloop 5891 for (int i = 0; i < 10; ++i) { 5892 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5893 bar(); 5894 } 5895 #pragma omp taskloop 5896 for (int i = 0; i < 10; ++i) { 5897 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5898 bar(); 5899 } 5900 #pragma omp taskloop 5901 for (int i = 0; i < 10; ++i) { 5902 #pragma omp taskwait 5903 bar(); 5904 } 5905 #pragma omp taskloop 5906 for (int i = 0; i < 10; ++i) { 5907 #pragma omp flush 5908 bar(); 5909 } 5910 #pragma omp taskloop 5911 for (int i = 0; i < 10; ++i) { 5912 #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?}} 5913 bar(); 5914 } 5915 #pragma omp taskloop 5916 for (int i = 0; i < 10; ++i) { 5917 #pragma omp atomic 5918 ++a; 5919 } 5920 #pragma omp taskloop 5921 for (int i = 0; i < 10; ++i) { 5922 #pragma omp target 5923 ++a; 5924 } 5925 #pragma omp taskloop 5926 for (int i = 0; i < 10; ++i) { 5927 #pragma omp target parallel 5928 ++a; 5929 } 5930 #pragma omp taskloop 5931 for (int i = 0; i < 10; ++i) { 5932 #pragma omp target parallel for 5933 for (int i = 0; i < 10; ++i) 5934 ; 5935 } 5936 #pragma omp taskloop 5937 for (int i = 0; i < 10; ++i) { 5938 #pragma omp target enter data map(to: a) 5939 ++a; 5940 } 5941 #pragma omp taskloop 5942 for (int i = 0; i < 10; ++i) { 5943 #pragma omp target exit data map(from: a) 5944 ++a; 5945 } 5946 #pragma omp taskloop 5947 for (int i = 0; i < 10; ++i) { 5948 #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?}} 5949 ++a; 5950 } 5951 #pragma omp taskloop 5952 for (int i = 0; i < 10; ++i) { 5953 #pragma omp taskloop 5954 for (int i = 0; i < 10; ++i) 5955 ++a; 5956 } 5957 #pragma omp taskloop 5958 for (int i = 0; i < 10; ++i) { 5959 #pragma omp target update to(a) 5960 bar(); 5961 } 5962 #pragma omp taskloop 5963 for (int i = 0; i < 10; ++i) { 5964 #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?}} 5965 for (int j = 0; j < 10; ++j) 5966 ++a; 5967 } 5968 #pragma omp taskloop 5969 for (int i = 0; i < 10; ++i) { 5970 #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?}} 5971 for (int j = 0; j < 10; ++j) 5972 ++a; 5973 } 5974 #pragma omp taskloop 5975 for (int i = 0; i < 10; ++i) { 5976 #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?}} 5977 for (int j = 0; j < 10; ++j) 5978 ++a; 5979 } 5980 #pragma omp taskloop 5981 for (int i = 0; i < 10; ++i) { 5982 #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?}} 5983 for (int j = 0; j < 10; ++j) 5984 ++a; 5985 } 5986 #pragma omp taskloop 5987 for (int i = 0; i < 10; ++i) { 5988 #pragma omp target simd // OK 5989 for (int j = 0; j < 10; ++j) 5990 ++a; 5991 } 5992 #pragma omp taskloop 5993 for (int i = 0; i < 10; ++i) { 5994 #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?}} 5995 for (int j = 0; j < 10; ++j) 5996 ++a; 5997 } 5998 #pragma omp taskloop 5999 for (int i = 0; i < 10; ++i) { 6000 #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?}} 6001 for (int j = 0; j < 10; ++j) 6002 ++a; 6003 } 6004 #pragma omp taskloop 6005 for (int i = 0; i < 10; ++i) { 6006 #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?}} 6007 for (int j = 0; j < 10; ++j) 6008 ++a; 6009 } 6010 #pragma omp taskloop 6011 for (int i = 0; i < 10; ++i) { 6012 #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?}} 6013 for (int j = 0; j < 10; ++j) 6014 ++a; 6015 } 6016 #pragma omp taskloop 6017 for (int i = 0; i < 10; ++i) { 6018 #pragma omp target teams // OK 6019 ++a; 6020 } 6021 #pragma omp taskloop 6022 for (int i = 0; i < 10; ++i) { 6023 #pragma omp target teams distribute // OK 6024 for (int j = 0; j < 10; ++j) 6025 ++a; 6026 } 6027 #pragma omp taskloop 6028 for (int i = 0; i < 10; ++i) { 6029 #pragma omp target teams distribute parallel for // OK 6030 for (int j = 0; j < 10; ++j) 6031 ++a; 6032 } 6033 #pragma omp taskloop 6034 for (int i = 0; i < 10; ++i) { 6035 #pragma omp target teams distribute parallel for simd // OK 6036 for (int j = 0; j < 10; ++j) 6037 ++a; 6038 } 6039 #pragma omp taskloop 6040 for (int i = 0; i < 10; ++i) { 6041 #pragma omp target teams distribute simd // OK 6042 for (int j = 0; j < 10; ++j) 6043 ++a; 6044 } 6045 #pragma omp taskloop 6046 for (int i = 0; i < 10; ++i) { 6047 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 6048 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 6049 } 6050 #pragma omp taskloop 6051 for (int i = 0; i < 10; ++i) { 6052 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 6053 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 6054 } 6055 #pragma omp master taskloop 6056 for (int i = 0; i < 10; ++i) { 6057 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 6058 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 6059 } 6060 #pragma omp master taskloop 6061 for (int i = 0; i < 10; ++i) { 6062 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 6063 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 6064 } 6065 #pragma omp parallel master taskloop 6066 for (int i = 0; i < 10; ++i) { 6067 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 6068 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 6069 } 6070 #pragma omp parallel master taskloop 6071 for (int i = 0; i < 10; ++i) { 6072 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 6073 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 6074 } 6075 6076 // DISTRIBUTE DIRECTIVE 6077 #pragma omp target 6078 #pragma omp teams 6079 #pragma omp distribute 6080 for (int i = 0; i < 10; ++i) { 6081 #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?}} 6082 for (int i = 0; i < 10; ++i) 6083 ; 6084 } 6085 #pragma omp target 6086 #pragma omp teams 6087 #pragma omp distribute 6088 for (int i = 0; i < 10; ++i) { 6089 #pragma omp for 6090 for (int i = 0; i < 10; ++i) 6091 ; 6092 } 6093 #pragma omp target 6094 #pragma omp teams 6095 #pragma omp distribute 6096 for (int i = 0; i < 10; ++i) { 6097 #pragma omp simd 6098 for (int i = 0; i < 10; ++i) 6099 ; 6100 } 6101 #pragma omp target 6102 #pragma omp teams 6103 #pragma omp distribute 6104 for (int i = 0; i < 10; ++i) { 6105 #pragma omp for simd 6106 for (int i = 0; i < 10; ++i) 6107 ; 6108 } 6109 #pragma omp target 6110 #pragma omp teams 6111 #pragma omp distribute 6112 for (int i = 0; i < 10; ++i) { 6113 #pragma omp parallel 6114 for (int i = 0; i < 10; ++i) 6115 ; 6116 } 6117 #pragma omp target 6118 #pragma omp teams 6119 #pragma omp distribute 6120 for (int i = 0; i < 10; ++i) { 6121 #pragma omp sections 6122 { 6123 bar(); 6124 } 6125 } 6126 #pragma omp target 6127 #pragma omp teams 6128 #pragma omp distribute 6129 for (int i = 0; i < 10; ++i) { 6130 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 6131 { 6132 bar(); 6133 } 6134 } 6135 #pragma omp target 6136 #pragma omp teams 6137 #pragma omp distribute 6138 for (int i = 0; i < 10; ++i) { 6139 #pragma omp single 6140 { 6141 bar(); 6142 } 6143 } 6144 #pragma omp target 6145 #pragma omp teams 6146 #pragma omp distribute 6147 for (int i = 0; i < 10; ++i) { 6148 #pragma omp master 6149 { 6150 bar(); 6151 } 6152 } 6153 #pragma omp target 6154 #pragma omp teams 6155 #pragma omp distribute 6156 for (int i = 0; i < 10; ++i) { 6157 #pragma omp critical 6158 { 6159 bar(); 6160 } 6161 } 6162 #pragma omp target 6163 #pragma omp teams 6164 #pragma omp distribute 6165 for (int i = 0; i < 10; ++i) { 6166 #pragma omp parallel 6167 { 6168 #pragma omp single 6169 { 6170 bar(); 6171 } 6172 } 6173 } 6174 #pragma omp target 6175 #pragma omp teams 6176 #pragma omp distribute 6177 for (int i = 0; i < 10; ++i) { 6178 #pragma omp parallel for 6179 for (int i = 0; i < 10; ++i) 6180 ; 6181 } 6182 #pragma omp target 6183 #pragma omp teams 6184 #pragma omp distribute 6185 for (int i = 0; i < 10; ++i) { 6186 #pragma omp parallel for simd 6187 for (int i = 0; i < 10; ++i) 6188 ; 6189 } 6190 #pragma omp target 6191 #pragma omp teams 6192 #pragma omp distribute 6193 for (int i = 0; i < 10; ++i) { 6194 #pragma omp parallel sections 6195 { 6196 bar(); 6197 } 6198 } 6199 #pragma omp target 6200 #pragma omp teams 6201 #pragma omp distribute 6202 for (int i = 0; i < 10; ++i) { 6203 #pragma omp task 6204 { 6205 bar(); 6206 } 6207 } 6208 #pragma omp target 6209 #pragma omp teams 6210 #pragma omp distribute 6211 for (int i = 0; i < 10; ++i) { 6212 #pragma omp taskyield 6213 bar(); 6214 } 6215 #pragma omp target 6216 #pragma omp teams 6217 #pragma omp distribute 6218 for (int i = 0; i < 10; ++i) { 6219 #pragma omp barrier 6220 bar(); 6221 } 6222 #pragma omp target 6223 #pragma omp teams 6224 #pragma omp distribute 6225 for (int i = 0; i < 10; ++i) { 6226 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 6227 bar(); 6228 } 6229 #pragma omp target 6230 #pragma omp teams 6231 #pragma omp distribute 6232 for (int i = 0; i < 10; ++i) { 6233 #pragma omp taskwait 6234 bar(); 6235 } 6236 #pragma omp target 6237 #pragma omp teams 6238 #pragma omp distribute 6239 for (int i = 0; i < 10; ++i) { 6240 #pragma omp flush 6241 bar(); 6242 } 6243 #pragma omp target 6244 #pragma omp teams 6245 #pragma omp distribute 6246 for (int i = 0; i < 10; ++i) { 6247 #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?}} 6248 bar(); 6249 } 6250 #pragma omp target 6251 #pragma omp teams 6252 #pragma omp distribute 6253 for (int i = 0; i < 10; ++i) { 6254 #pragma omp atomic 6255 ++a; 6256 } 6257 #pragma omp target 6258 #pragma omp teams 6259 #pragma omp distribute 6260 for (int i = 0; i < 10; ++i) { 6261 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6262 ++a; 6263 } 6264 #pragma omp target 6265 #pragma omp teams 6266 #pragma omp distribute 6267 for (int i = 0; i < 10; ++i) { 6268 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6269 ++a; 6270 } 6271 #pragma omp target 6272 #pragma omp teams 6273 #pragma omp distribute 6274 for (int i = 0; i < 10; ++i) { 6275 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6276 for (int i = 0; i < 10; ++i) 6277 ; 6278 } 6279 #pragma omp target 6280 #pragma omp teams 6281 #pragma omp distribute 6282 for (int i = 0; i < 10; ++i) { 6283 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6284 ++a; 6285 } 6286 #pragma omp target 6287 #pragma omp teams 6288 #pragma omp distribute 6289 for (int i = 0; i < 10; ++i) { 6290 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6291 ++a; 6292 } 6293 #pragma omp target 6294 #pragma omp teams 6295 #pragma omp distribute 6296 for (int i = 0; i < 10; ++i) { 6297 #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?}} 6298 ++a; 6299 } 6300 #pragma omp target 6301 #pragma omp teams 6302 #pragma omp distribute 6303 for (int i = 0; i < 10; ++i) { 6304 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6305 ++a; 6306 } 6307 #pragma omp target 6308 #pragma omp teams 6309 #pragma omp distribute 6310 for (int i = 0; i < 10; ++i) { 6311 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6312 for (int j = 0; j < 10; ++j) 6313 ; 6314 } 6315 #pragma omp target 6316 #pragma omp teams 6317 #pragma omp distribute 6318 for (int i = 0; i < 10; ++i) { 6319 #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?}} 6320 for (int j = 0; j < 10; ++j) 6321 ; 6322 } 6323 #pragma omp target 6324 #pragma omp teams 6325 #pragma omp distribute 6326 for (int i = 0; i < 10; ++i) { 6327 #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?}} 6328 for (int j = 0; j < 10; ++j) 6329 ; 6330 } 6331 #pragma omp target 6332 #pragma omp teams 6333 #pragma omp distribute 6334 for (int i = 0; i < 10; ++i) { 6335 #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?}} 6336 for (int j = 0; j < 10; ++j) 6337 ; 6338 } 6339 #pragma omp target 6340 #pragma omp teams 6341 #pragma omp distribute 6342 for (int i = 0; i < 10; ++i) { 6343 #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?}} 6344 for (int j = 0; j < 10; ++j) 6345 ; 6346 } 6347 #pragma omp target 6348 #pragma omp teams 6349 #pragma omp distribute 6350 for (int i = 0; i < 10; ++i) { 6351 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6352 a++; 6353 } 6354 #pragma omp target 6355 #pragma omp teams 6356 #pragma omp distribute 6357 for (int i = 0; i < 10; ++i) { 6358 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6359 for (int j = 0; j < 10; ++j) 6360 ; 6361 } 6362 #pragma omp target 6363 #pragma omp teams 6364 #pragma omp distribute 6365 for (int i = 0; i < 10; ++i) { 6366 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6367 for (int j = 0; j < 10; ++j) 6368 ; 6369 } 6370 #pragma omp target 6371 #pragma omp teams 6372 #pragma omp distribute 6373 for (int i = 0; i < 10; ++i) { 6374 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6375 for (int j = 0; j < 10; ++j) 6376 ; 6377 } 6378 #pragma omp target 6379 #pragma omp teams 6380 #pragma omp distribute 6381 for (int i = 0; i < 10; ++i) { 6382 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6383 for (int j = 0; j < 10; ++j) 6384 ; 6385 } 6386 6387 // DISTRIBUTE PARALLEL FOR DIRECTIVE 6388 #pragma omp target 6389 #pragma omp teams 6390 #pragma omp distribute parallel for 6391 for (int i = 0; i < 10; ++i) { 6392 #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?}} 6393 for (int i = 0; i < 10; ++i) 6394 ; 6395 } 6396 #pragma omp target 6397 #pragma omp teams 6398 #pragma omp distribute parallel for 6399 for (int i = 0; i < 10; ++i) { 6400 #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?}} 6401 for (int i = 0; i < 10; ++i) 6402 ; 6403 } 6404 #pragma omp target 6405 #pragma omp teams 6406 #pragma omp distribute parallel for 6407 for (int i = 0; i < 10; ++i) { 6408 #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?}} 6409 for (int i = 0; i < 10; ++i) 6410 ; 6411 } 6412 #pragma omp target 6413 #pragma omp teams 6414 #pragma omp distribute parallel for 6415 for (int i = 0; i < 10; ++i) { 6416 #pragma omp simd 6417 for (int i = 0; i < 10; ++i) 6418 ; 6419 } 6420 #pragma omp target 6421 #pragma omp teams 6422 #pragma omp distribute parallel for 6423 for (int i = 0; i < 10; ++i) { 6424 #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?}} 6425 for (int i = 0; i < 10; ++i) 6426 ; 6427 } 6428 #pragma omp target 6429 #pragma omp teams 6430 #pragma omp distribute parallel for 6431 for (int i = 0; i < 10; ++i) { 6432 #pragma omp parallel 6433 for (int i = 0; i < 10; ++i) 6434 ; 6435 } 6436 #pragma omp target 6437 #pragma omp teams 6438 #pragma omp distribute parallel for 6439 for (int i = 0; i < 10; ++i) { 6440 #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?}} 6441 { 6442 bar(); 6443 } 6444 } 6445 #pragma omp target 6446 #pragma omp teams 6447 #pragma omp distribute parallel for 6448 for (int i = 0; i < 10; ++i) { 6449 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 6450 { 6451 bar(); 6452 } 6453 } 6454 #pragma omp target 6455 #pragma omp teams 6456 #pragma omp distribute parallel for 6457 for (int i = 0; i < 10; ++i) { 6458 #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?}} 6459 { 6460 bar(); 6461 } 6462 } 6463 #pragma omp target 6464 #pragma omp teams 6465 #pragma omp distribute parallel for 6466 for (int i = 0; i < 10; ++i) { 6467 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6468 { 6469 bar(); 6470 } 6471 } 6472 #pragma omp target 6473 #pragma omp teams 6474 #pragma omp distribute parallel for 6475 for (int i = 0; i < 10; ++i) { 6476 #pragma omp critical 6477 { 6478 bar(); 6479 } 6480 } 6481 #pragma omp target 6482 #pragma omp teams 6483 #pragma omp distribute parallel for 6484 for (int i = 0; i < 10; ++i) { 6485 #pragma omp parallel 6486 { 6487 #pragma omp single 6488 { 6489 bar(); 6490 } 6491 } 6492 } 6493 #pragma omp target 6494 #pragma omp teams 6495 #pragma omp distribute parallel for 6496 for (int i = 0; i < 10; ++i) { 6497 #pragma omp parallel for 6498 for (int i = 0; i < 10; ++i) 6499 ; 6500 } 6501 #pragma omp target 6502 #pragma omp teams 6503 #pragma omp distribute parallel for 6504 for (int i = 0; i < 10; ++i) { 6505 #pragma omp parallel for simd 6506 for (int i = 0; i < 10; ++i) 6507 ; 6508 } 6509 #pragma omp target 6510 #pragma omp teams 6511 #pragma omp distribute parallel for 6512 for (int i = 0; i < 10; ++i) { 6513 #pragma omp parallel sections 6514 { 6515 bar(); 6516 } 6517 } 6518 #pragma omp target 6519 #pragma omp teams 6520 #pragma omp distribute parallel for 6521 for (int i = 0; i < 10; ++i) { 6522 #pragma omp task 6523 { 6524 bar(); 6525 } 6526 } 6527 #pragma omp target 6528 #pragma omp teams 6529 #pragma omp distribute parallel for 6530 for (int i = 0; i < 10; ++i) { 6531 #pragma omp taskyield 6532 bar(); 6533 } 6534 #pragma omp target 6535 #pragma omp teams 6536 #pragma omp distribute parallel for 6537 for (int i = 0; i < 10; ++i) { 6538 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6539 bar(); 6540 } 6541 #pragma omp target 6542 #pragma omp teams 6543 #pragma omp distribute parallel for 6544 for (int i = 0; i < 10; ++i) { 6545 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6546 bar(); 6547 } 6548 #pragma omp target 6549 #pragma omp teams 6550 #pragma omp distribute parallel for 6551 for (int i = 0; i < 10; ++i) { 6552 #pragma omp taskwait 6553 bar(); 6554 } 6555 #pragma omp target 6556 #pragma omp teams 6557 #pragma omp distribute parallel for 6558 for (int i = 0; i < 10; ++i) { 6559 #pragma omp flush 6560 bar(); 6561 } 6562 #pragma omp target 6563 #pragma omp teams 6564 #pragma omp distribute parallel for 6565 for (int i = 0; i < 10; ++i) { 6566 #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?}} 6567 bar(); 6568 } 6569 #pragma omp target 6570 #pragma omp teams 6571 #pragma omp distribute parallel for 6572 for (int i = 0; i < 10; ++i) { 6573 #pragma omp atomic 6574 ++a; 6575 } 6576 #pragma omp target 6577 #pragma omp teams 6578 #pragma omp distribute parallel for 6579 for (int i = 0; i < 10; ++i) { 6580 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6581 ++a; 6582 } 6583 #pragma omp target 6584 #pragma omp teams 6585 #pragma omp distribute parallel for 6586 for (int i = 0; i < 10; ++i) { 6587 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6588 ++a; 6589 } 6590 #pragma omp target 6591 #pragma omp teams 6592 #pragma omp distribute parallel for 6593 for (int i = 0; i < 10; ++i) { 6594 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6595 for (int i = 0; i < 10; ++i) 6596 ; 6597 } 6598 #pragma omp target 6599 #pragma omp teams 6600 #pragma omp distribute parallel for 6601 for (int i = 0; i < 10; ++i) { 6602 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6603 ++a; 6604 } 6605 #pragma omp target 6606 #pragma omp teams 6607 #pragma omp distribute parallel for 6608 for (int i = 0; i < 10; ++i) { 6609 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6610 ++a; 6611 } 6612 #pragma omp target 6613 #pragma omp teams 6614 #pragma omp distribute parallel for 6615 for (int i = 0; i < 10; ++i) { 6616 #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?}} 6617 ++a; 6618 } 6619 #pragma omp target 6620 #pragma omp teams 6621 #pragma omp distribute parallel for 6622 for (int i = 0; i < 10; ++i) { 6623 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6624 ++a; 6625 } 6626 #pragma omp target 6627 #pragma omp teams 6628 #pragma omp distribute parallel for 6629 for (int i = 0; i < 10; ++i) { 6630 #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?}} 6631 for (int i = 0; i < 10; ++i) 6632 ; 6633 } 6634 #pragma omp target 6635 #pragma omp teams 6636 #pragma omp distribute parallel for 6637 for (int i = 0; i < 10; ++i) { 6638 #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?}} 6639 for (int i = 0; i < 10; ++i) 6640 ; 6641 } 6642 #pragma omp target 6643 #pragma omp teams 6644 #pragma omp distribute parallel for 6645 for (int i = 0; i < 10; ++i) { 6646 #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?}} 6647 for (int i = 0; i < 10; ++i) 6648 ; 6649 } 6650 #pragma omp target 6651 #pragma omp teams 6652 #pragma omp distribute parallel for 6653 for (int i = 0; i < 10; ++i) { 6654 #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?}} 6655 for (int i = 0; i < 10; ++i) 6656 ; 6657 } 6658 #pragma omp target 6659 #pragma omp teams 6660 #pragma omp distribute parallel for 6661 for (int i = 0; i < 10; ++i) { 6662 #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?}} 6663 for (int i = 0; i < 10; ++i) 6664 ; 6665 } 6666 #pragma omp target 6667 #pragma omp teams 6668 #pragma omp distribute parallel for 6669 for (int i = 0; i < 10; ++i) { 6670 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6671 a++; 6672 } 6673 #pragma omp target 6674 #pragma omp teams 6675 #pragma omp distribute parallel for 6676 for (int i = 0; i < 10; ++i) { 6677 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6678 for (int i = 0; i < 10; ++i) 6679 ; 6680 } 6681 #pragma omp target 6682 #pragma omp teams 6683 #pragma omp distribute parallel for 6684 for (int i = 0; i < 10; ++i) { 6685 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6686 for (int i = 0; i < 10; ++i) 6687 ; 6688 } 6689 #pragma omp target 6690 #pragma omp teams 6691 #pragma omp distribute parallel for 6692 for (int i = 0; i < 10; ++i) { 6693 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6694 for (int i = 0; i < 10; ++i) 6695 ; 6696 } 6697 #pragma omp target 6698 #pragma omp teams 6699 #pragma omp distribute parallel for 6700 for (int i = 0; i < 10; ++i) { 6701 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6702 for (int i = 0; i < 10; ++i) 6703 ; 6704 } 6705 6706 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6707 #pragma omp target 6708 #pragma omp teams 6709 #pragma omp distribute parallel for simd 6710 for (int i = 0; i < 10; ++i) { 6711 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6712 for (int i = 0; i < 10; ++i) 6713 ; 6714 } 6715 #pragma omp target 6716 #pragma omp teams 6717 #pragma omp distribute parallel for simd 6718 for (int i = 0; i < 10; ++i) { 6719 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6720 for (int i = 0; i < 10; ++i) 6721 ; 6722 } 6723 #pragma omp target 6724 #pragma omp teams 6725 #pragma omp distribute parallel for simd 6726 for (int i = 0; i < 10; ++i) { 6727 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6728 for (int i = 0; i < 10; ++i) 6729 ; 6730 } 6731 #pragma omp target 6732 #pragma omp teams 6733 #pragma omp distribute parallel for simd 6734 for (int i = 0; i < 10; ++i) { 6735 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6736 for (int i = 0; i < 10; ++i) 6737 ; 6738 } 6739 #pragma omp target 6740 #pragma omp teams 6741 #pragma omp distribute parallel for simd 6742 for (int i = 0; i < 10; ++i) { 6743 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6744 for (int i = 0; i < 10; ++i) 6745 ; 6746 } 6747 #pragma omp target 6748 #pragma omp teams 6749 #pragma omp distribute parallel for simd 6750 for (int i = 0; i < 10; ++i) { 6751 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6752 for (int i = 0; i < 10; ++i) 6753 ; 6754 } 6755 #pragma omp target 6756 #pragma omp teams 6757 #pragma omp distribute parallel for simd 6758 for (int i = 0; i < 10; ++i) { 6759 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6760 { 6761 bar(); 6762 } 6763 } 6764 #pragma omp target 6765 #pragma omp teams 6766 #pragma omp distribute parallel for simd 6767 for (int i = 0; i < 10; ++i) { 6768 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6769 { 6770 bar(); 6771 } 6772 } 6773 #pragma omp target 6774 #pragma omp teams 6775 #pragma omp distribute parallel for simd 6776 for (int i = 0; i < 10; ++i) { 6777 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6778 { 6779 bar(); 6780 } 6781 } 6782 #pragma omp target 6783 #pragma omp teams 6784 #pragma omp distribute parallel for simd 6785 for (int i = 0; i < 10; ++i) { 6786 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6787 { 6788 bar(); 6789 } 6790 } 6791 #pragma omp target 6792 #pragma omp teams 6793 #pragma omp distribute parallel for simd 6794 for (int i = 0; i < 10; ++i) { 6795 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6796 { 6797 bar(); 6798 } 6799 } 6800 #pragma omp target 6801 #pragma omp teams 6802 #pragma omp distribute parallel for simd 6803 for (int i = 0; i < 10; ++i) { 6804 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6805 { 6806 #pragma omp single 6807 { 6808 bar(); 6809 } 6810 } 6811 } 6812 #pragma omp target 6813 #pragma omp teams 6814 #pragma omp distribute parallel for simd 6815 for (int i = 0; i < 10; ++i) { 6816 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6817 for (int i = 0; i < 10; ++i) 6818 ; 6819 } 6820 #pragma omp target 6821 #pragma omp teams 6822 #pragma omp distribute parallel for simd 6823 for (int i = 0; i < 10; ++i) { 6824 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6825 for (int i = 0; i < 10; ++i) 6826 ; 6827 } 6828 #pragma omp target 6829 #pragma omp teams 6830 #pragma omp distribute parallel for simd 6831 for (int i = 0; i < 10; ++i) { 6832 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6833 { 6834 bar(); 6835 } 6836 } 6837 #pragma omp target 6838 #pragma omp teams 6839 #pragma omp distribute parallel for simd 6840 for (int i = 0; i < 10; ++i) { 6841 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6842 { 6843 bar(); 6844 } 6845 } 6846 #pragma omp target 6847 #pragma omp teams 6848 #pragma omp distribute parallel for simd 6849 for (int i = 0; i < 10; ++i) { 6850 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6851 bar(); 6852 } 6853 #pragma omp target 6854 #pragma omp teams 6855 #pragma omp distribute parallel for simd 6856 for (int i = 0; i < 10; ++i) { 6857 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6858 bar(); 6859 } 6860 #pragma omp target 6861 #pragma omp teams 6862 #pragma omp distribute parallel for simd 6863 for (int i = 0; i < 10; ++i) { 6864 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 6865 bar(); 6866 } 6867 #pragma omp target 6868 #pragma omp teams 6869 #pragma omp distribute parallel for simd 6870 for (int i = 0; i < 10; ++i) { 6871 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6872 bar(); 6873 } 6874 #pragma omp target 6875 #pragma omp teams 6876 #pragma omp distribute parallel for simd 6877 for (int i = 0; i < 10; ++i) { 6878 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6879 bar(); 6880 } 6881 #pragma omp target 6882 #pragma omp teams 6883 #pragma omp distribute parallel for simd 6884 for (int i = 0; i < 10; ++i) { 6885 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6886 bar(); 6887 } 6888 #pragma omp target 6889 #pragma omp teams 6890 #pragma omp distribute parallel for simd 6891 for (int i = 0; i < 10; ++i) { 6892 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6893 ++a; 6894 } 6895 #pragma omp target 6896 #pragma omp teams 6897 #pragma omp distribute parallel for simd 6898 for (int i = 0; i < 10; ++i) { 6899 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6900 ++a; 6901 } 6902 #pragma omp target 6903 #pragma omp teams 6904 #pragma omp distribute parallel for simd 6905 for (int i = 0; i < 10; ++i) { 6906 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6907 ++a; 6908 } 6909 #pragma omp target 6910 #pragma omp teams 6911 #pragma omp distribute parallel for simd 6912 for (int i = 0; i < 10; ++i) { 6913 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6914 for (int i = 0; i < 10; ++i) 6915 ; 6916 } 6917 #pragma omp target 6918 #pragma omp teams 6919 #pragma omp distribute parallel for simd 6920 for (int i = 0; i < 10; ++i) { 6921 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6922 ++a; 6923 } 6924 #pragma omp target 6925 #pragma omp teams 6926 #pragma omp distribute parallel for simd 6927 for (int i = 0; i < 10; ++i) { 6928 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6929 ++a; 6930 } 6931 #pragma omp target 6932 #pragma omp teams 6933 #pragma omp distribute parallel for simd 6934 for (int i = 0; i < 10; ++i) { 6935 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6936 ++a; 6937 } 6938 #pragma omp target 6939 #pragma omp teams 6940 #pragma omp distribute parallel for simd 6941 for (int i = 0; i < 10; ++i) { 6942 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6943 ++a; 6944 } 6945 #pragma omp target 6946 #pragma omp teams 6947 #pragma omp distribute parallel for simd 6948 for (int i = 0; i < 10; ++i) { 6949 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6950 for (int i = 0; i < 10; ++i) 6951 ++a; 6952 } 6953 #pragma omp target 6954 #pragma omp teams 6955 #pragma omp distribute parallel for simd 6956 for (int i = 0; i < 10; ++i) { 6957 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6958 for (int i = 0; i < 10; ++i) 6959 ++a; 6960 } 6961 #pragma omp target 6962 #pragma omp teams 6963 #pragma omp distribute parallel for simd 6964 for (int i = 0; i < 10; ++i) { 6965 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6966 for (int i = 0; i < 10; ++i) 6967 ++a; 6968 } 6969 #pragma omp target 6970 #pragma omp teams 6971 #pragma omp distribute parallel for simd 6972 for (int i = 0; i < 10; ++i) { 6973 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6974 for (int i = 0; i < 10; ++i) 6975 ++a; 6976 } 6977 #pragma omp target 6978 #pragma omp teams 6979 #pragma omp distribute parallel for simd 6980 for (int i = 0; i < 10; ++i) { 6981 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6982 for (int i = 0; i < 10; ++i) 6983 ++a; 6984 } 6985 #pragma omp target 6986 #pragma omp teams 6987 #pragma omp distribute parallel for simd 6988 for (int i = 0; i < 10; ++i) { 6989 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6990 for (int i = 0; i < 10; ++i) 6991 ++a; 6992 } 6993 #pragma omp target 6994 #pragma omp teams 6995 #pragma omp distribute parallel for simd 6996 for (int i = 0; i < 10; ++i) { 6997 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6998 ++a; 6999 } 7000 #pragma omp target 7001 #pragma omp teams 7002 #pragma omp distribute parallel for simd 7003 for (int i = 0; i < 10; ++i) { 7004 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7005 for (int i = 0; i < 10; ++i) 7006 ++a; 7007 } 7008 #pragma omp target 7009 #pragma omp teams 7010 #pragma omp distribute parallel for simd 7011 for (int i = 0; i < 10; ++i) { 7012 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7013 for (int i = 0; i < 10; ++i) 7014 ++a; 7015 } 7016 #pragma omp target 7017 #pragma omp teams 7018 #pragma omp distribute parallel for simd 7019 for (int i = 0; i < 10; ++i) { 7020 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7021 for (int i = 0; i < 10; ++i) 7022 ++a; 7023 } 7024 #pragma omp target 7025 #pragma omp teams 7026 #pragma omp distribute parallel for simd 7027 for (int i = 0; i < 10; ++i) { 7028 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7029 for (int i = 0; i < 10; ++i) 7030 ++a; 7031 } 7032 7033 // TARGET SIMD DIRECTIVE 7034 #pragma omp target simd 7035 for (int i = 0; i < 10; ++i) { 7036 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7037 for (int i = 0; i < 10; ++i) 7038 ; 7039 } 7040 #pragma omp target simd 7041 for (int i = 0; i < 10; ++i) { 7042 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7043 for (int i = 0; i < 10; ++i) 7044 ; 7045 } 7046 #pragma omp target simd 7047 for (int i = 0; i < 10; ++i) { 7048 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7049 for (int i = 0; i < 10; ++i) 7050 ; 7051 } 7052 #pragma omp target simd 7053 for (int i = 0; i < 10; ++i) { 7054 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7055 for (int i = 0; i < 10; ++i) 7056 ; 7057 } 7058 #pragma omp target simd 7059 for (int i = 0; i < 10; ++i) { 7060 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7061 for (int i = 0; i < 10; ++i) 7062 ; 7063 } 7064 #pragma omp target simd 7065 for (int i = 0; i < 10; ++i) { 7066 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7067 for (int i = 0; i < 10; ++i) 7068 ; 7069 } 7070 #pragma omp target simd 7071 for (int i = 0; i < 10; ++i) { 7072 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7073 { 7074 bar(); 7075 } 7076 } 7077 #pragma omp target simd 7078 for (int i = 0; i < 10; ++i) { 7079 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7080 { 7081 bar(); 7082 } 7083 } 7084 #pragma omp target simd 7085 for (int i = 0; i < 10; ++i) { 7086 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7087 { 7088 bar(); 7089 } 7090 } 7091 #pragma omp target simd 7092 for (int i = 0; i < 10; ++i) { 7093 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7094 { 7095 bar(); 7096 } 7097 } 7098 #pragma omp target simd 7099 for (int i = 0; i < 10; ++i) { 7100 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7101 { 7102 bar(); 7103 } 7104 } 7105 #pragma omp target simd 7106 for (int i = 0; i < 10; ++i) { 7107 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7108 { 7109 #pragma omp single 7110 { 7111 bar(); 7112 } 7113 } 7114 } 7115 #pragma omp target simd 7116 for (int i = 0; i < 10; ++i) { 7117 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7118 for (int i = 0; i < 10; ++i) 7119 ; 7120 } 7121 #pragma omp target simd 7122 for (int i = 0; i < 10; ++i) { 7123 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7124 for (int i = 0; i < 10; ++i) 7125 ; 7126 } 7127 #pragma omp target simd 7128 for (int i = 0; i < 10; ++i) { 7129 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7130 { 7131 bar(); 7132 } 7133 } 7134 #pragma omp target simd 7135 for (int i = 0; i < 10; ++i) { 7136 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7137 { 7138 bar(); 7139 } 7140 } 7141 #pragma omp target simd 7142 for (int i = 0; i < 10; ++i) { 7143 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7144 bar(); 7145 } 7146 #pragma omp target simd 7147 for (int i = 0; i < 10; ++i) { 7148 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7149 bar(); 7150 } 7151 #pragma omp target simd 7152 for (int i = 0; i < 10; ++i) { 7153 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7154 bar(); 7155 } 7156 #pragma omp target simd 7157 for (int i = 0; i < 10; ++i) { 7158 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7159 bar(); 7160 } 7161 #pragma omp target simd 7162 for (int i = 0; i < 10; ++i) { 7163 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7164 bar(); 7165 } 7166 #pragma omp target simd 7167 for (int i = 0; i < 10; ++i) { 7168 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7169 bar(); 7170 } 7171 #pragma omp target simd 7172 for (int i = 0; i < 10; ++i) { 7173 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7174 ++a; 7175 } 7176 #pragma omp target simd 7177 for (int i = 0; i < 10; ++i) { 7178 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7179 ++a; 7180 } 7181 #pragma omp target simd 7182 for (int i = 0; i < 10; ++i) { 7183 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7184 ++a; 7185 } 7186 #pragma omp target simd 7187 for (int i = 0; i < 10; ++i) { 7188 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7189 for (int i = 0; i < 10; ++i) 7190 ; 7191 } 7192 #pragma omp target simd 7193 for (int i = 0; i < 10; ++i) { 7194 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7195 ++a; 7196 } 7197 #pragma omp target simd 7198 for (int i = 0; i < 10; ++i) { 7199 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7200 ++a; 7201 } 7202 #pragma omp target simd 7203 for (int i = 0; i < 10; ++i) { 7204 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7205 ++a; 7206 } 7207 #pragma omp target simd 7208 for (int i = 0; i < 10; ++i) { 7209 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7210 ++a; 7211 } 7212 #pragma omp target simd 7213 for (int i = 0; i < 10; ++i) { 7214 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7215 for (int i = 0; i < 10; ++i) 7216 ++a; 7217 } 7218 #pragma omp target simd 7219 for (int i = 0; i < 10; ++i) { 7220 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7221 for (int i = 0; i < 10; ++i) 7222 ++a; 7223 } 7224 #pragma omp target simd 7225 for (int i = 0; i < 10; ++i) { 7226 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7227 for (int i = 0; i < 10; ++i) 7228 ++a; 7229 } 7230 #pragma omp target simd 7231 for (int i = 0; i < 10; ++i) { 7232 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7233 for (int i = 0; i < 10; ++i) 7234 ++a; 7235 } 7236 #pragma omp target simd 7237 for (int i = 0; i < 10; ++i) { 7238 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7239 for (int i = 0; i < 10; ++i) 7240 ++a; 7241 } 7242 #pragma omp target simd 7243 for (int i = 0; i < 10; ++i) { 7244 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7245 for (int i = 0; i < 10; ++i) 7246 ++a; 7247 } 7248 #pragma omp target simd 7249 for (int i = 0; i < 10; ++i) { 7250 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7251 for (int i = 0; i < 10; ++i) 7252 ++a; 7253 } 7254 #pragma omp target simd 7255 for (int i = 0; i < 10; ++i) { 7256 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7257 for (int i = 0; i < 10; ++i) 7258 ++a; 7259 } 7260 7261 // TEAMS DISTRIBUTE DIRECTIVE 7262 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7263 for (int i = 0; i < 10; ++i) 7264 ; 7265 #pragma omp target 7266 #pragma omp teams distribute 7267 for (int i = 0; i < 10; ++i) { 7268 #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?}} 7269 for (int i = 0; i < 10; ++i) 7270 ; 7271 } 7272 #pragma omp target 7273 #pragma omp teams distribute 7274 for (int i = 0; i < 10; ++i) { 7275 #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?}} 7276 for (int i = 0; i < 10; ++i) 7277 ; 7278 } 7279 #pragma omp target 7280 #pragma omp teams distribute 7281 for (int i = 0; i < 10; ++i) { 7282 #pragma omp for // OK 7283 for (int i = 0; i < 10; ++i) 7284 ; 7285 } 7286 #pragma omp target 7287 #pragma omp teams distribute 7288 for (int i = 0; i < 10; ++i) { 7289 #pragma omp simd // OK 7290 for (int i = 0; i < 10; ++i) 7291 ; 7292 } 7293 #pragma omp target 7294 #pragma omp teams distribute 7295 for (int i = 0; i < 10; ++i) { 7296 #pragma omp for simd // OK 7297 for (int i = 0; i < 10; ++i) 7298 ; 7299 } 7300 #pragma omp target 7301 #pragma omp teams distribute 7302 for (int i = 0; i < 10; ++i) { 7303 #pragma omp parallel // OK 7304 for (int i = 0; i < 10; ++i) 7305 ; 7306 } 7307 #pragma omp target 7308 #pragma omp teams distribute 7309 for (int i = 0; i < 10; ++i) { 7310 #pragma omp sections // OK 7311 { 7312 bar(); 7313 } 7314 } 7315 #pragma omp target 7316 #pragma omp teams distribute 7317 for (int i = 0; i < 10; ++i) { 7318 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 7319 { 7320 bar(); 7321 } 7322 } 7323 #pragma omp target 7324 #pragma omp teams distribute 7325 for (int i = 0; i < 10; ++i) { 7326 #pragma omp single // OK 7327 { 7328 bar(); 7329 } 7330 } 7331 #pragma omp target 7332 #pragma omp teams distribute 7333 for (int i = 0; i < 10; ++i) { 7334 #pragma omp master // OK 7335 { 7336 bar(); 7337 } 7338 } 7339 #pragma omp target 7340 #pragma omp teams distribute 7341 for (int i = 0; i < 10; ++i) { 7342 #pragma omp critical // OK 7343 { 7344 bar(); 7345 } 7346 } 7347 #pragma omp target 7348 #pragma omp teams distribute 7349 for (int i = 0; i < 10; ++i) { 7350 #pragma omp parallel // OK 7351 { 7352 #pragma omp single 7353 { 7354 bar(); 7355 } 7356 } 7357 } 7358 #pragma omp target 7359 #pragma omp teams distribute 7360 for (int i = 0; i < 10; ++i) { 7361 #pragma omp parallel for // OK 7362 for (int i = 0; i < 10; ++i) 7363 ; 7364 } 7365 #pragma omp target 7366 #pragma omp teams distribute 7367 for (int i = 0; i < 10; ++i) { 7368 #pragma omp parallel for simd // OK 7369 for (int i = 0; i < 10; ++i) 7370 ; 7371 } 7372 #pragma omp target 7373 #pragma omp teams distribute 7374 for (int i = 0; i < 10; ++i) { 7375 #pragma omp parallel sections // OK 7376 { 7377 bar(); 7378 } 7379 } 7380 #pragma omp target 7381 #pragma omp teams distribute 7382 for (int i = 0; i < 10; ++i) { 7383 #pragma omp task // OK 7384 { 7385 bar(); 7386 } 7387 } 7388 #pragma omp target 7389 #pragma omp teams distribute 7390 for (int i = 0; i < 10; ++i) { 7391 #pragma omp taskyield // OK 7392 bar(); 7393 } 7394 #pragma omp target 7395 #pragma omp teams distribute 7396 for (int i = 0; i < 10; ++i) { 7397 #pragma omp barrier // OK 7398 bar(); 7399 } 7400 #pragma omp target 7401 #pragma omp teams distribute 7402 for (int i = 0; i < 10; ++i) { 7403 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7404 bar(); 7405 } 7406 #pragma omp target 7407 #pragma omp teams distribute 7408 for (int i = 0; i < 10; ++i) { 7409 #pragma omp taskwait // OK 7410 bar(); 7411 } 7412 #pragma omp target 7413 #pragma omp teams distribute 7414 for (int i = 0; i < 10; ++i) { 7415 #pragma omp flush // OK 7416 bar(); 7417 } 7418 #pragma omp target 7419 #pragma omp teams distribute 7420 for (int i = 0; i < 10; ++i) { 7421 #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?}} 7422 bar(); 7423 } 7424 #pragma omp target 7425 #pragma omp teams distribute 7426 for (int i = 0; i < 10; ++i) { 7427 #pragma omp atomic // OK 7428 ++a; 7429 } 7430 #pragma omp target 7431 #pragma omp teams distribute 7432 for (int i = 0; i < 10; ++i) { 7433 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7434 ++a; 7435 } 7436 #pragma omp target 7437 #pragma omp teams distribute 7438 for (int i = 0; i < 10; ++i) { 7439 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7440 ++a; 7441 } 7442 #pragma omp target 7443 #pragma omp teams distribute 7444 for (int i = 0; i < 10; ++i) { 7445 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7446 for (int i = 0; i < 10; ++i) 7447 ; 7448 } 7449 #pragma omp target 7450 #pragma omp teams distribute 7451 for (int i = 0; i < 10; ++i) { 7452 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7453 ++a; 7454 } 7455 #pragma omp target 7456 #pragma omp teams distribute 7457 for (int i = 0; i < 10; ++i) { 7458 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7459 ++a; 7460 } 7461 #pragma omp target 7462 #pragma omp teams distribute 7463 for (int i = 0; i < 10; ++i) { 7464 #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?}} 7465 ++a; 7466 } 7467 #pragma omp target 7468 #pragma omp teams distribute 7469 for (int i = 0; i < 10; ++i) { 7470 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7471 ++a; 7472 } 7473 #pragma omp target 7474 #pragma omp teams distribute 7475 for (int i = 0; i < 10; ++i) { 7476 #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?}} 7477 for (int i = 0; i < 10; ++i) 7478 ++a; 7479 } 7480 #pragma omp target 7481 #pragma omp teams distribute 7482 for (int i = 0; i < 10; ++i) { 7483 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7484 for (int i = 0; i < 10; ++i) 7485 ++a; 7486 } 7487 #pragma omp target 7488 #pragma omp teams distribute 7489 for (int i = 0; i < 10; ++i) { 7490 #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?}} 7491 for (int i = 0; i < 10; ++i) 7492 ++a; 7493 } 7494 #pragma omp target 7495 #pragma omp teams distribute 7496 for (int i = 0; i < 10; ++i) { 7497 #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?}} 7498 for (int i = 0; i < 10; ++i) 7499 ++a; 7500 } 7501 #pragma omp target 7502 #pragma omp teams distribute 7503 for (int i = 0; i < 10; ++i) { 7504 #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?}} 7505 for (int i = 0; i < 10; ++i) 7506 ++a; 7507 } 7508 #pragma omp target 7509 #pragma omp teams distribute 7510 for (int i = 0; i < 10; ++i) { 7511 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7512 for (int i = 0; i < 10; ++i) 7513 ++a; 7514 } 7515 #pragma omp target 7516 #pragma omp teams distribute 7517 for (int i = 0; i < 10; ++i) { 7518 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7519 for (int i = 0; i < 10; ++i) 7520 ++a; 7521 } 7522 #pragma omp target 7523 #pragma omp teams distribute 7524 for (int i = 0; i < 10; ++i) { 7525 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7526 for (int i = 0; i < 10; ++i) 7527 ++a; 7528 } 7529 7530 // TEAMS DISTRIBUTE DIRECTIVE 7531 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7532 for (int i = 0; i < 10; ++i) 7533 ; 7534 #pragma omp target 7535 #pragma omp teams distribute 7536 for (int i = 0; i < 10; ++i) { 7537 #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?}} 7538 for (int i = 0; i < 10; ++i) 7539 ; 7540 } 7541 #pragma omp target 7542 #pragma omp teams distribute 7543 for (int i = 0; i < 10; ++i) { 7544 #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?}} 7545 for (int i = 0; i < 10; ++i) 7546 ; 7547 } 7548 #pragma omp target 7549 #pragma omp teams distribute 7550 for (int i = 0; i < 10; ++i) { 7551 #pragma omp for // OK 7552 for (int i = 0; i < 10; ++i) 7553 ; 7554 } 7555 #pragma omp target 7556 #pragma omp teams distribute 7557 for (int i = 0; i < 10; ++i) { 7558 #pragma omp simd // OK 7559 for (int i = 0; i < 10; ++i) 7560 ; 7561 } 7562 #pragma omp target 7563 #pragma omp teams distribute 7564 for (int i = 0; i < 10; ++i) { 7565 #pragma omp for simd // OK 7566 for (int i = 0; i < 10; ++i) 7567 ; 7568 } 7569 #pragma omp target 7570 #pragma omp teams distribute 7571 for (int i = 0; i < 10; ++i) { 7572 #pragma omp parallel // OK 7573 for (int i = 0; i < 10; ++i) 7574 ; 7575 } 7576 #pragma omp target 7577 #pragma omp teams distribute 7578 for (int i = 0; i < 10; ++i) { 7579 #pragma omp sections // OK 7580 { 7581 bar(); 7582 } 7583 } 7584 #pragma omp target 7585 #pragma omp teams distribute 7586 for (int i = 0; i < 10; ++i) { 7587 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 7588 { 7589 bar(); 7590 } 7591 } 7592 #pragma omp target 7593 #pragma omp teams distribute 7594 for (int i = 0; i < 10; ++i) { 7595 #pragma omp single // OK 7596 { 7597 bar(); 7598 } 7599 } 7600 #pragma omp target 7601 #pragma omp teams distribute 7602 for (int i = 0; i < 10; ++i) { 7603 #pragma omp master // OK 7604 { 7605 bar(); 7606 } 7607 } 7608 #pragma omp target 7609 #pragma omp teams distribute 7610 for (int i = 0; i < 10; ++i) { 7611 #pragma omp critical // OK 7612 { 7613 bar(); 7614 } 7615 } 7616 #pragma omp target 7617 #pragma omp teams distribute 7618 for (int i = 0; i < 10; ++i) { 7619 #pragma omp parallel // OK 7620 { 7621 #pragma omp single 7622 { 7623 bar(); 7624 } 7625 } 7626 } 7627 #pragma omp target 7628 #pragma omp teams distribute 7629 for (int i = 0; i < 10; ++i) { 7630 #pragma omp parallel for // OK 7631 for (int i = 0; i < 10; ++i) 7632 ; 7633 } 7634 #pragma omp target 7635 #pragma omp teams distribute 7636 for (int i = 0; i < 10; ++i) { 7637 #pragma omp parallel for simd // OK 7638 for (int i = 0; i < 10; ++i) 7639 ; 7640 } 7641 #pragma omp target 7642 #pragma omp teams distribute 7643 for (int i = 0; i < 10; ++i) { 7644 #pragma omp parallel sections // OK 7645 { 7646 bar(); 7647 } 7648 } 7649 #pragma omp target 7650 #pragma omp teams distribute 7651 for (int i = 0; i < 10; ++i) { 7652 #pragma omp task // OK 7653 { 7654 bar(); 7655 } 7656 } 7657 #pragma omp target 7658 #pragma omp teams distribute 7659 for (int i = 0; i < 10; ++i) { 7660 #pragma omp taskyield // OK 7661 bar(); 7662 } 7663 #pragma omp target 7664 #pragma omp teams distribute 7665 for (int i = 0; i < 10; ++i) { 7666 #pragma omp barrier // OK 7667 bar(); 7668 } 7669 #pragma omp target 7670 #pragma omp teams distribute 7671 for (int i = 0; i < 10; ++i) { 7672 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7673 bar(); 7674 } 7675 #pragma omp target 7676 #pragma omp teams distribute 7677 for (int i = 0; i < 10; ++i) { 7678 #pragma omp taskwait // OK 7679 bar(); 7680 } 7681 #pragma omp target 7682 #pragma omp teams distribute 7683 for (int i = 0; i < 10; ++i) { 7684 #pragma omp flush // OK 7685 bar(); 7686 } 7687 #pragma omp target 7688 #pragma omp teams distribute 7689 for (int i = 0; i < 10; ++i) { 7690 #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?}} 7691 bar(); 7692 } 7693 #pragma omp target 7694 #pragma omp teams distribute 7695 for (int i = 0; i < 10; ++i) { 7696 #pragma omp atomic // OK 7697 ++a; 7698 } 7699 #pragma omp target 7700 #pragma omp teams distribute 7701 for (int i = 0; i < 10; ++i) { 7702 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7703 ++a; 7704 } 7705 #pragma omp target 7706 #pragma omp teams distribute 7707 for (int i = 0; i < 10; ++i) { 7708 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7709 ++a; 7710 } 7711 #pragma omp target 7712 #pragma omp teams distribute 7713 for (int i = 0; i < 10; ++i) { 7714 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7715 for (int i = 0; i < 10; ++i) 7716 ; 7717 } 7718 #pragma omp target 7719 #pragma omp teams distribute 7720 for (int i = 0; i < 10; ++i) { 7721 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7722 ++a; 7723 } 7724 #pragma omp target 7725 #pragma omp teams distribute 7726 for (int i = 0; i < 10; ++i) { 7727 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7728 ++a; 7729 } 7730 #pragma omp target 7731 #pragma omp teams distribute 7732 for (int i = 0; i < 10; ++i) { 7733 #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?}} 7734 ++a; 7735 } 7736 #pragma omp target 7737 #pragma omp teams distribute 7738 for (int i = 0; i < 10; ++i) { 7739 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7740 ++a; 7741 } 7742 #pragma omp target 7743 #pragma omp teams distribute 7744 for (int i = 0; i < 10; ++i) { 7745 #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?}} 7746 for (int i = 0; i < 10; ++i) 7747 ++a; 7748 } 7749 #pragma omp target 7750 #pragma omp teams distribute 7751 for (int i = 0; i < 10; ++i) { 7752 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7753 for (int i = 0; i < 10; ++i) 7754 ++a; 7755 } 7756 #pragma omp target 7757 #pragma omp teams distribute 7758 for (int i = 0; i < 10; ++i) { 7759 #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?}} 7760 for (int i = 0; i < 10; ++i) 7761 ++a; 7762 } 7763 #pragma omp target 7764 #pragma omp teams distribute 7765 for (int i = 0; i < 10; ++i) { 7766 #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?}} 7767 for (int i = 0; i < 10; ++i) 7768 ++a; 7769 } 7770 #pragma omp target 7771 #pragma omp teams distribute 7772 for (int i = 0; i < 10; ++i) { 7773 #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?}} 7774 for (int i = 0; i < 10; ++i) 7775 ++a; 7776 } 7777 #pragma omp target 7778 #pragma omp teams distribute 7779 for (int i = 0; i < 10; ++i) { 7780 #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?}} 7781 for (int i = 0; i < 10; ++i) 7782 ++a; 7783 } 7784 #pragma omp target 7785 #pragma omp teams distribute 7786 for (int i = 0; i < 10; ++i) { 7787 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7788 ++a; 7789 } 7790 #pragma omp target 7791 #pragma omp teams distribute 7792 for (int i = 0; i < 10; ++i) { 7793 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7794 for (int i = 0; i < 10; ++i) 7795 ++a; 7796 } 7797 #pragma omp target 7798 #pragma omp teams distribute 7799 for (int i = 0; i < 10; ++i) { 7800 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7801 for (int i = 0; i < 10; ++i) 7802 ++a; 7803 } 7804 #pragma omp target 7805 #pragma omp teams distribute 7806 for (int i = 0; i < 10; ++i) { 7807 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7808 for (int i = 0; i < 10; ++i) 7809 ++a; 7810 } 7811 #pragma omp target 7812 #pragma omp teams distribute 7813 for (int i = 0; i < 10; ++i) { 7814 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7815 for (int i = 0; i < 10; ++i) 7816 ++a; 7817 } 7818 7819 // TEAMS DISTRIBUTE SIMD DIRECTIVE 7820 #pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7821 for (int i = 0; i < 10; ++i) 7822 ; 7823 #pragma omp target 7824 #pragma omp teams distribute simd 7825 for (int i = 0; i < 10; ++i) { 7826 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7827 for (int i = 0; i < 10; ++i) 7828 ; 7829 } 7830 #pragma omp target 7831 #pragma omp teams distribute simd 7832 for (int i = 0; i < 10; ++i) { 7833 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7834 for (int i = 0; i < 10; ++i) 7835 ; 7836 } 7837 #pragma omp target 7838 #pragma omp teams distribute simd 7839 for (int i = 0; i < 10; ++i) { 7840 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7841 for (int i = 0; i < 10; ++i) 7842 ; 7843 } 7844 #pragma omp target 7845 #pragma omp teams distribute simd 7846 for (int i = 0; i < 10; ++i) { 7847 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7848 for (int i = 0; i < 10; ++i) 7849 ; 7850 } 7851 #pragma omp target 7852 #pragma omp teams distribute simd 7853 for (int i = 0; i < 10; ++i) { 7854 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7855 for (int i = 0; i < 10; ++i) 7856 ; 7857 } 7858 #pragma omp target 7859 #pragma omp teams distribute simd 7860 for (int i = 0; i < 10; ++i) { 7861 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7862 for (int i = 0; i < 10; ++i) 7863 ; 7864 } 7865 #pragma omp target 7866 #pragma omp teams distribute simd 7867 for (int i = 0; i < 10; ++i) { 7868 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7869 { 7870 bar(); 7871 } 7872 } 7873 #pragma omp target 7874 #pragma omp teams distribute simd 7875 for (int i = 0; i < 10; ++i) { 7876 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7877 { 7878 bar(); 7879 } 7880 } 7881 #pragma omp target 7882 #pragma omp teams distribute simd 7883 for (int i = 0; i < 10; ++i) { 7884 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7885 { 7886 bar(); 7887 } 7888 } 7889 #pragma omp target 7890 #pragma omp teams distribute simd 7891 for (int i = 0; i < 10; ++i) { 7892 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7893 { 7894 bar(); 7895 } 7896 } 7897 #pragma omp target 7898 #pragma omp teams distribute simd 7899 for (int i = 0; i < 10; ++i) { 7900 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7901 { 7902 bar(); 7903 } 7904 } 7905 #pragma omp target 7906 #pragma omp teams distribute simd 7907 for (int i = 0; i < 10; ++i) { 7908 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7909 { 7910 #pragma omp single 7911 { 7912 bar(); 7913 } 7914 } 7915 } 7916 #pragma omp target 7917 #pragma omp teams distribute simd 7918 for (int i = 0; i < 10; ++i) { 7919 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7920 for (int i = 0; i < 10; ++i) 7921 ; 7922 } 7923 #pragma omp target 7924 #pragma omp teams distribute simd 7925 for (int i = 0; i < 10; ++i) { 7926 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7927 for (int i = 0; i < 10; ++i) 7928 ; 7929 } 7930 #pragma omp target 7931 #pragma omp teams distribute simd 7932 for (int i = 0; i < 10; ++i) { 7933 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7934 { 7935 bar(); 7936 } 7937 } 7938 #pragma omp target 7939 #pragma omp teams distribute simd 7940 for (int i = 0; i < 10; ++i) { 7941 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7942 { 7943 bar(); 7944 } 7945 } 7946 #pragma omp target 7947 #pragma omp teams distribute simd 7948 for (int i = 0; i < 10; ++i) { 7949 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7950 bar(); 7951 } 7952 #pragma omp target 7953 #pragma omp teams distribute simd 7954 for (int i = 0; i < 10; ++i) { 7955 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7956 bar(); 7957 } 7958 #pragma omp target 7959 #pragma omp teams distribute simd 7960 for (int i = 0; i < 10; ++i) { 7961 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7962 bar(); 7963 } 7964 #pragma omp target 7965 #pragma omp teams distribute simd 7966 for (int i = 0; i < 10; ++i) { 7967 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7968 bar(); 7969 } 7970 #pragma omp target 7971 #pragma omp teams distribute simd 7972 for (int i = 0; i < 10; ++i) { 7973 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7974 bar(); 7975 } 7976 #pragma omp target 7977 #pragma omp teams distribute simd 7978 for (int i = 0; i < 10; ++i) { 7979 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7980 bar(); 7981 } 7982 #pragma omp target 7983 #pragma omp teams distribute simd 7984 for (int i = 0; i < 10; ++i) { 7985 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7986 ++a; 7987 } 7988 #pragma omp target 7989 #pragma omp teams distribute simd 7990 for (int i = 0; i < 10; ++i) { 7991 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7992 ++a; 7993 } 7994 #pragma omp target 7995 #pragma omp teams distribute simd 7996 for (int i = 0; i < 10; ++i) { 7997 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7998 ++a; 7999 } 8000 #pragma omp target 8001 #pragma omp teams distribute simd 8002 for (int i = 0; i < 10; ++i) { 8003 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8004 for (int i = 0; i < 10; ++i) 8005 ; 8006 } 8007 #pragma omp target 8008 #pragma omp teams distribute simd 8009 for (int i = 0; i < 10; ++i) { 8010 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8011 ++a; 8012 } 8013 #pragma omp target 8014 #pragma omp teams distribute simd 8015 for (int i = 0; i < 10; ++i) { 8016 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8017 ++a; 8018 } 8019 #pragma omp target 8020 #pragma omp teams distribute simd 8021 for (int i = 0; i < 10; ++i) { 8022 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8023 ++a; 8024 } 8025 #pragma omp target 8026 #pragma omp teams distribute simd 8027 for (int i = 0; i < 10; ++i) { 8028 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8029 ++a; 8030 } 8031 #pragma omp target 8032 #pragma omp teams distribute simd 8033 for (int i = 0; i < 10; ++i) { 8034 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8035 for (int i = 0; i < 10; ++i) 8036 ++a; 8037 } 8038 #pragma omp target 8039 #pragma omp teams distribute simd 8040 for (int i = 0; i < 10; ++i) { 8041 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8042 for (int i = 0; i < 10; ++i) 8043 ++a; 8044 } 8045 #pragma omp target 8046 #pragma omp teams distribute simd 8047 for (int i = 0; i < 10; ++i) { 8048 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8049 for (int i = 0; i < 10; ++i) 8050 ++a; 8051 } 8052 #pragma omp target 8053 #pragma omp teams distribute simd 8054 for (int i = 0; i < 10; ++i) { 8055 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8056 for (int i = 0; i < 10; ++i) 8057 ++a; 8058 } 8059 #pragma omp target 8060 #pragma omp teams distribute simd 8061 for (int i = 0; i < 10; ++i) { 8062 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8063 for (int i = 0; i < 10; ++i) 8064 ++a; 8065 } 8066 #pragma omp target 8067 #pragma omp teams distribute simd 8068 for (int i = 0; i < 10; ++i) { 8069 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8070 for (int i = 0; i < 10; ++i) 8071 ++a; 8072 } 8073 #pragma omp target 8074 #pragma omp teams distribute simd 8075 for (int i = 0; i < 10; ++i) { 8076 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8077 ++a; 8078 } 8079 #pragma omp target 8080 #pragma omp teams distribute simd 8081 for (int i = 0; i < 10; ++i) { 8082 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8083 for (int i = 0; i < 10; ++i) 8084 ++a; 8085 } 8086 #pragma omp target 8087 #pragma omp teams distribute simd 8088 for (int i = 0; i < 10; ++i) { 8089 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8090 for (int i = 0; i < 10; ++i) 8091 ++a; 8092 } 8093 #pragma omp target 8094 #pragma omp teams distribute simd 8095 for (int i = 0; i < 10; ++i) { 8096 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8097 for (int i = 0; i < 10; ++i) 8098 ++a; 8099 } 8100 #pragma omp target 8101 #pragma omp teams distribute simd 8102 for (int i = 0; i < 10; ++i) { 8103 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8104 for (int i = 0; i < 10; ++i) 8105 ++a; 8106 } 8107 8108 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 8109 #pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 8110 for (int i = 0; i < 10; ++i) 8111 ; 8112 #pragma omp target 8113 #pragma omp teams distribute parallel for simd 8114 for (int i = 0; i < 10; ++i) { 8115 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8116 for (int i = 0; i < 10; ++i) 8117 ; 8118 } 8119 #pragma omp target 8120 #pragma omp teams distribute parallel for simd 8121 for (int i = 0; i < 10; ++i) { 8122 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8123 for (int i = 0; i < 10; ++i) 8124 ; 8125 } 8126 #pragma omp target 8127 #pragma omp teams distribute parallel for simd 8128 for (int i = 0; i < 10; ++i) { 8129 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8130 for (int i = 0; i < 10; ++i) 8131 ; 8132 } 8133 #pragma omp target 8134 #pragma omp teams distribute parallel for simd 8135 for (int i = 0; i < 10; ++i) { 8136 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8137 for (int i = 0; i < 10; ++i) 8138 ; 8139 } 8140 #pragma omp target 8141 #pragma omp teams distribute parallel for simd 8142 for (int i = 0; i < 10; ++i) { 8143 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8144 for (int i = 0; i < 10; ++i) 8145 ; 8146 } 8147 #pragma omp target 8148 #pragma omp teams distribute parallel for simd 8149 for (int i = 0; i < 10; ++i) { 8150 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8151 for (int i = 0; i < 10; ++i) 8152 ; 8153 } 8154 #pragma omp target 8155 #pragma omp teams distribute parallel for simd 8156 for (int i = 0; i < 10; ++i) { 8157 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8158 { 8159 bar(); 8160 } 8161 } 8162 #pragma omp target 8163 #pragma omp teams distribute parallel for simd 8164 for (int i = 0; i < 10; ++i) { 8165 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8166 { 8167 bar(); 8168 } 8169 } 8170 #pragma omp target 8171 #pragma omp teams distribute parallel for simd 8172 for (int i = 0; i < 10; ++i) { 8173 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8174 { 8175 bar(); 8176 } 8177 } 8178 #pragma omp target 8179 #pragma omp teams distribute parallel for simd 8180 for (int i = 0; i < 10; ++i) { 8181 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8182 { 8183 bar(); 8184 } 8185 } 8186 #pragma omp target 8187 #pragma omp teams distribute parallel for simd 8188 for (int i = 0; i < 10; ++i) { 8189 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8190 { 8191 bar(); 8192 } 8193 } 8194 #pragma omp target 8195 #pragma omp teams distribute parallel for simd 8196 for (int i = 0; i < 10; ++i) { 8197 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8198 { 8199 #pragma omp single 8200 { 8201 bar(); 8202 } 8203 } 8204 } 8205 #pragma omp target 8206 #pragma omp teams distribute parallel for simd 8207 for (int i = 0; i < 10; ++i) { 8208 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8209 for (int i = 0; i < 10; ++i) 8210 ; 8211 } 8212 #pragma omp target 8213 #pragma omp teams distribute parallel for simd 8214 for (int i = 0; i < 10; ++i) { 8215 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8216 for (int i = 0; i < 10; ++i) 8217 ; 8218 } 8219 #pragma omp target 8220 #pragma omp teams distribute parallel for simd 8221 for (int i = 0; i < 10; ++i) { 8222 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8223 { 8224 bar(); 8225 } 8226 } 8227 #pragma omp target 8228 #pragma omp teams distribute parallel for simd 8229 for (int i = 0; i < 10; ++i) { 8230 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8231 { 8232 bar(); 8233 } 8234 } 8235 #pragma omp target 8236 #pragma omp teams distribute parallel for simd 8237 for (int i = 0; i < 10; ++i) { 8238 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8239 bar(); 8240 } 8241 #pragma omp target 8242 #pragma omp teams distribute parallel for simd 8243 for (int i = 0; i < 10; ++i) { 8244 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8245 bar(); 8246 } 8247 #pragma omp target 8248 #pragma omp teams distribute parallel for simd 8249 for (int i = 0; i < 10; ++i) { 8250 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 8251 bar(); 8252 } 8253 #pragma omp target 8254 #pragma omp teams distribute parallel for simd 8255 for (int i = 0; i < 10; ++i) { 8256 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8257 bar(); 8258 } 8259 #pragma omp target 8260 #pragma omp teams distribute parallel for simd 8261 for (int i = 0; i < 10; ++i) { 8262 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8263 bar(); 8264 } 8265 #pragma omp target 8266 #pragma omp teams distribute parallel for simd 8267 for (int i = 0; i < 10; ++i) { 8268 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8269 bar(); 8270 } 8271 #pragma omp target 8272 #pragma omp teams distribute parallel for simd 8273 for (int i = 0; i < 10; ++i) { 8274 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 8275 ++a; 8276 } 8277 #pragma omp target 8278 #pragma omp teams distribute parallel for simd 8279 for (int i = 0; i < 10; ++i) { 8280 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8281 ++a; 8282 } 8283 #pragma omp target 8284 #pragma omp teams distribute parallel for simd 8285 for (int i = 0; i < 10; ++i) { 8286 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8287 ++a; 8288 } 8289 #pragma omp target 8290 #pragma omp teams distribute parallel for simd 8291 for (int i = 0; i < 10; ++i) { 8292 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8293 for (int i = 0; i < 10; ++i) 8294 ; 8295 } 8296 #pragma omp target 8297 #pragma omp teams distribute parallel for simd 8298 for (int i = 0; i < 10; ++i) { 8299 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8300 ++a; 8301 } 8302 #pragma omp target 8303 #pragma omp teams distribute parallel for simd 8304 for (int i = 0; i < 10; ++i) { 8305 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8306 ++a; 8307 } 8308 #pragma omp target 8309 #pragma omp teams distribute parallel for simd 8310 for (int i = 0; i < 10; ++i) { 8311 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8312 ++a; 8313 } 8314 #pragma omp target 8315 #pragma omp teams distribute parallel for simd 8316 for (int i = 0; i < 10; ++i) { 8317 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8318 ++a; 8319 } 8320 #pragma omp target 8321 #pragma omp teams distribute parallel for simd 8322 for (int i = 0; i < 10; ++i) { 8323 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8324 for (int i = 0; i < 10; ++i) 8325 ++a; 8326 } 8327 #pragma omp target 8328 #pragma omp teams distribute parallel for simd 8329 for (int i = 0; i < 10; ++i) { 8330 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8331 for (int i = 0; i < 10; ++i) 8332 ++a; 8333 } 8334 #pragma omp target 8335 #pragma omp teams distribute parallel for simd 8336 for (int i = 0; i < 10; ++i) { 8337 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8338 for (int i = 0; i < 10; ++i) 8339 ++a; 8340 } 8341 #pragma omp target 8342 #pragma omp teams distribute parallel for simd 8343 for (int i = 0; i < 10; ++i) { 8344 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8345 for (int i = 0; i < 10; ++i) 8346 ++a; 8347 } 8348 #pragma omp target 8349 #pragma omp teams distribute parallel for simd 8350 for (int i = 0; i < 10; ++i) { 8351 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8352 for (int i = 0; i < 10; ++i) 8353 ++a; 8354 } 8355 #pragma omp target 8356 #pragma omp teams distribute parallel for simd 8357 for (int i = 0; i < 10; ++i) { 8358 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8359 for (int i = 0; i < 10; ++i) 8360 ++a; 8361 } 8362 #pragma omp target 8363 #pragma omp teams distribute parallel for simd 8364 for (int i = 0; i < 10; ++i) { 8365 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8366 ++a; 8367 } 8368 #pragma omp target 8369 #pragma omp teams distribute parallel for simd 8370 for (int i = 0; i < 10; ++i) { 8371 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8372 for (int i = 0; i < 10; ++i) 8373 ++a; 8374 } 8375 #pragma omp target 8376 #pragma omp teams distribute parallel for simd 8377 for (int i = 0; i < 10; ++i) { 8378 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8379 for (int i = 0; i < 10; ++i) 8380 ++a; 8381 } 8382 #pragma omp target 8383 #pragma omp teams distribute parallel for simd 8384 for (int i = 0; i < 10; ++i) { 8385 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8386 for (int i = 0; i < 10; ++i) 8387 ++a; 8388 } 8389 #pragma omp target 8390 #pragma omp teams distribute parallel for simd 8391 for (int i = 0; i < 10; ++i) { 8392 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8393 for (int i = 0; i < 10; ++i) 8394 ++a; 8395 } 8396 8397 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8398 #pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 8399 for (int i = 0; i < 10; ++i) 8400 ; 8401 #pragma omp target 8402 #pragma omp teams distribute parallel for 8403 for (int i = 0; i < 10; ++i) { 8404 #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?}} 8405 for (int i = 0; i < 10; ++i) 8406 ; 8407 } 8408 #pragma omp target 8409 #pragma omp teams distribute parallel for 8410 for (int i = 0; i < 10; ++i) { 8411 #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?}} 8412 for (int i = 0; i < 10; ++i) 8413 ; 8414 } 8415 #pragma omp target 8416 #pragma omp teams distribute parallel for 8417 for (int i = 0; i < 10; ++i) { 8418 #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?}} 8419 for (int i = 0; i < 10; ++i) 8420 ; 8421 } 8422 #pragma omp target 8423 #pragma omp teams distribute parallel for 8424 for (int i = 0; i < 10; ++i) { 8425 #pragma omp simd // OK 8426 for (int i = 0; i < 10; ++i) 8427 ; 8428 } 8429 #pragma omp target 8430 #pragma omp teams distribute parallel for 8431 for (int i = 0; i < 10; ++i) { 8432 #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?}} 8433 for (int i = 0; i < 10; ++i) 8434 ; 8435 } 8436 #pragma omp target 8437 #pragma omp teams distribute parallel for 8438 for (int i = 0; i < 10; ++i) { 8439 #pragma omp parallel // OK 8440 for (int i = 0; i < 10; ++i) 8441 ; 8442 } 8443 #pragma omp target 8444 #pragma omp teams distribute parallel for 8445 for (int i = 0; i < 10; ++i) { 8446 #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?}} 8447 { 8448 bar(); 8449 } 8450 } 8451 #pragma omp target 8452 #pragma omp teams distribute parallel for 8453 for (int i = 0; i < 10; ++i) { 8454 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 8455 { 8456 bar(); 8457 } 8458 } 8459 #pragma omp target 8460 #pragma omp teams distribute parallel for 8461 for (int i = 0; i < 10; ++i) { 8462 #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?}} 8463 { 8464 bar(); 8465 } 8466 } 8467 #pragma omp target 8468 #pragma omp teams distribute parallel for 8469 for (int i = 0; i < 10; ++i) { 8470 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8471 { 8472 bar(); 8473 } 8474 } 8475 #pragma omp target 8476 #pragma omp teams distribute parallel for 8477 for (int i = 0; i < 10; ++i) { 8478 #pragma omp critical // OK 8479 { 8480 bar(); 8481 } 8482 } 8483 #pragma omp target 8484 #pragma omp teams distribute parallel for 8485 for (int i = 0; i < 10; ++i) { 8486 #pragma omp parallel // OK 8487 { 8488 #pragma omp single 8489 { 8490 bar(); 8491 } 8492 } 8493 } 8494 #pragma omp target 8495 #pragma omp teams distribute parallel for 8496 for (int i = 0; i < 10; ++i) { 8497 #pragma omp parallel for // OK 8498 for (int i = 0; i < 10; ++i) 8499 ; 8500 } 8501 #pragma omp target 8502 #pragma omp teams distribute parallel for 8503 for (int i = 0; i < 10; ++i) { 8504 #pragma omp parallel for simd // OK 8505 for (int i = 0; i < 10; ++i) 8506 ; 8507 } 8508 #pragma omp target 8509 #pragma omp teams distribute parallel for 8510 for (int i = 0; i < 10; ++i) { 8511 #pragma omp parallel sections // OK 8512 { 8513 bar(); 8514 } 8515 } 8516 #pragma omp target 8517 #pragma omp teams distribute parallel for 8518 for (int i = 0; i < 10; ++i) { 8519 #pragma omp task // OK 8520 { 8521 bar(); 8522 } 8523 } 8524 #pragma omp target 8525 #pragma omp teams distribute parallel for 8526 for (int i = 0; i < 10; ++i) { 8527 #pragma omp taskyield // OK 8528 bar(); 8529 } 8530 #pragma omp target 8531 #pragma omp teams distribute parallel for 8532 for (int i = 0; i < 10; ++i) { 8533 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8534 bar(); 8535 } 8536 #pragma omp target 8537 #pragma omp teams distribute parallel for 8538 for (int i = 0; i < 10; ++i) { 8539 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8540 bar(); 8541 } 8542 #pragma omp target 8543 #pragma omp teams distribute parallel for 8544 for (int i = 0; i < 10; ++i) { 8545 #pragma omp taskwait // OK 8546 bar(); 8547 } 8548 #pragma omp target 8549 #pragma omp teams distribute parallel for 8550 for (int i = 0; i < 10; ++i) { 8551 #pragma omp flush // OK 8552 bar(); 8553 } 8554 #pragma omp target 8555 #pragma omp teams distribute parallel for 8556 for (int i = 0; i < 10; ++i) { 8557 #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?}} 8558 bar(); 8559 } 8560 #pragma omp target 8561 #pragma omp teams distribute parallel for 8562 for (int i = 0; i < 10; ++i) { 8563 #pragma omp atomic // OK 8564 ++a; 8565 } 8566 #pragma omp target 8567 #pragma omp teams distribute parallel for 8568 for (int i = 0; i < 10; ++i) { 8569 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 8570 ++a; 8571 } 8572 #pragma omp target 8573 #pragma omp teams distribute parallel for 8574 for (int i = 0; i < 10; ++i) { 8575 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 8576 ++a; 8577 } 8578 #pragma omp target 8579 #pragma omp teams distribute parallel for 8580 for (int i = 0; i < 10; ++i) { 8581 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 8582 for (int i = 0; i < 10; ++i) 8583 ; 8584 } 8585 #pragma omp target 8586 #pragma omp teams distribute parallel for 8587 for (int i = 0; i < 10; ++i) { 8588 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 8589 ++a; 8590 } 8591 #pragma omp target 8592 #pragma omp teams distribute parallel for 8593 for (int i = 0; i < 10; ++i) { 8594 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 8595 ++a; 8596 } 8597 #pragma omp target 8598 #pragma omp teams distribute parallel for 8599 for (int i = 0; i < 10; ++i) { 8600 #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?}} 8601 ++a; 8602 } 8603 #pragma omp target 8604 #pragma omp teams distribute parallel for 8605 for (int i = 0; i < 10; ++i) { 8606 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 8607 ++a; 8608 } 8609 #pragma omp target 8610 #pragma omp teams distribute parallel for 8611 for (int i = 0; i < 10; ++i) { 8612 #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?}} 8613 for (int i = 0; i < 10; ++i) 8614 ++a; 8615 } 8616 #pragma omp target 8617 #pragma omp teams distribute parallel for 8618 for (int i = 0; i < 10; ++i) { 8619 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 8620 for (int i = 0; i < 10; ++i) 8621 ++a; 8622 } 8623 #pragma omp target 8624 #pragma omp teams distribute parallel for 8625 for (int i = 0; i < 10; ++i) { 8626 #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?}} 8627 for (int i = 0; i < 10; ++i) 8628 ++a; 8629 } 8630 #pragma omp target 8631 #pragma omp teams distribute parallel for 8632 for (int i = 0; i < 10; ++i) { 8633 #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?}} 8634 for (int i = 0; i < 10; ++i) 8635 ++a; 8636 } 8637 #pragma omp target 8638 #pragma omp teams distribute parallel for 8639 for (int i = 0; i < 10; ++i) { 8640 #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?}} 8641 for (int i = 0; i < 10; ++i) 8642 ++a; 8643 } 8644 #pragma omp target 8645 #pragma omp teams distribute parallel for 8646 for (int i = 0; i < 10; ++i) { 8647 #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?}} 8648 for (int i = 0; i < 10; ++i) 8649 ++a; 8650 } 8651 #pragma omp target 8652 #pragma omp teams distribute parallel for 8653 for (int i = 0; i < 10; ++i) { 8654 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 8655 ++a; 8656 } 8657 #pragma omp target 8658 #pragma omp teams distribute parallel for 8659 for (int i = 0; i < 10; ++i) { 8660 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 8661 for (int i = 0; i < 10; ++i) 8662 ++a; 8663 } 8664 #pragma omp target 8665 #pragma omp teams distribute parallel for 8666 for (int i = 0; i < 10; ++i) { 8667 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 8668 for (int i = 0; i < 10; ++i) 8669 ++a; 8670 } 8671 #pragma omp target 8672 #pragma omp teams distribute parallel for 8673 for (int i = 0; i < 10; ++i) { 8674 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 8675 for (int i = 0; i < 10; ++i) 8676 ++a; 8677 } 8678 #pragma omp target 8679 #pragma omp teams distribute parallel for 8680 for (int i = 0; i < 10; ++i) { 8681 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 8682 for (int i = 0; i < 10; ++i) 8683 ++a; 8684 } 8685 8686 // TARGET TEAMS DIRECTIVE 8687 #pragma omp target teams 8688 #pragma omp parallel 8689 bar(); 8690 #pragma omp target teams 8691 #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?}} 8692 for (int i = 0; i < 10; ++i) 8693 ; 8694 #pragma omp target teams 8695 #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?}} 8696 for (int i = 0; i < 10; ++i) 8697 ; 8698 #pragma omp target teams 8699 #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?}} 8700 for (int i = 0; i < 10; ++i) 8701 ; 8702 #pragma omp target teams 8703 #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?}} 8704 { 8705 bar(); 8706 } 8707 #pragma omp target teams 8708 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 8709 { 8710 bar(); 8711 } 8712 #pragma omp target teams 8713 #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?}} 8714 bar(); 8715 8716 #pragma omp target teams 8717 #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?}} 8718 { 8719 bar(); 8720 } 8721 #pragma omp target teams 8722 #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?}} 8723 { 8724 bar(); 8725 } 8726 #pragma omp target teams 8727 #pragma omp parallel for 8728 for (int i = 0; i < 10; ++i) 8729 ; 8730 #pragma omp target teams 8731 #pragma omp parallel for simd 8732 for (int i = 0; i < 10; ++i) 8733 ; 8734 #pragma omp target teams 8735 #pragma omp parallel sections 8736 { 8737 bar(); 8738 } 8739 #pragma omp target teams 8740 #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?}} 8741 { 8742 bar(); 8743 } 8744 #pragma omp target teams 8745 { 8746 #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?}} 8747 bar(); 8748 } 8749 #pragma omp target teams 8750 { 8751 #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?}} 8752 bar(); 8753 } 8754 #pragma omp target teams 8755 { 8756 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 8757 bar(); 8758 } 8759 #pragma omp target teams 8760 { 8761 #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?}} 8762 bar(); 8763 } 8764 #pragma omp target teams 8765 { 8766 #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?}} 8767 bar(); 8768 } 8769 #pragma omp target teams 8770 { 8771 #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?}} 8772 bar(); 8773 } 8774 #pragma omp target teams 8775 { 8776 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 8777 ++a; 8778 } 8779 #pragma omp target teams 8780 { 8781 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 8782 ++a; 8783 } 8784 #pragma omp target teams 8785 { 8786 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 8787 ++a; 8788 } 8789 #pragma omp target teams 8790 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8791 for (int i = 0; i < 10; ++i) 8792 ; 8793 #pragma omp target teams 8794 { 8795 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8796 } 8797 #pragma omp target teams 8798 { 8799 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8800 } 8801 #pragma omp target teams 8802 { 8803 #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?}} 8804 ++a; 8805 } 8806 #pragma omp target teams 8807 { 8808 #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?}} 8809 for (int i = 0; i < 10; ++i) 8810 ++a; 8811 } 8812 #pragma omp target teams 8813 #pragma omp distribute 8814 for (int i = 0; i < 10; ++i) 8815 ; 8816 #pragma omp target teams 8817 { 8818 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 8819 ++a; 8820 } 8821 #pragma omp target teams 8822 #pragma omp distribute parallel for 8823 for (int i = 0; i < 10; ++i) 8824 ; 8825 #pragma omp target teams 8826 { 8827 #pragma omp distribute parallel for 8828 for (int i = 0; i < 10; ++i) 8829 ; 8830 #pragma omp distribute parallel for 8831 for (int j = 0; j < 10; ++j) 8832 ; 8833 } 8834 #pragma omp target teams 8835 { 8836 #pragma omp distribute parallel for simd 8837 for (int i = 0; i < 10; ++i) 8838 ; 8839 #pragma omp distribute parallel for simd 8840 for (int j = 0; j < 10; ++j) 8841 ; 8842 } 8843 #pragma omp target teams 8844 { 8845 #pragma omp distribute simd 8846 for (int i = 0; i < 10; ++i) 8847 ; 8848 #pragma omp distribute simd 8849 for (int j = 0; j < 10; ++j) 8850 ; 8851 } 8852 #pragma omp target teams 8853 { 8854 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 8855 for (int i = 0; i < 10; ++i) 8856 ; 8857 } 8858 #pragma omp target teams 8859 { 8860 #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?}} 8861 for (int i = 0; i < 10; ++i) 8862 ; 8863 } 8864 #pragma omp target teams 8865 { 8866 #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?}} 8867 for (int i = 0; i < 10; ++i) 8868 ; 8869 } 8870 #pragma omp target teams 8871 { 8872 #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?}} 8873 for (int i = 0; i < 10; ++i) 8874 ; 8875 } 8876 #pragma omp target teams 8877 { 8878 #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?}} 8879 for (int i = 0; i < 10; ++i) 8880 ; 8881 } 8882 #pragma omp target teams 8883 { 8884 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 8885 a++; 8886 } 8887 #pragma omp target teams 8888 { 8889 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 8890 for (int i = 0; i < 10; ++i) 8891 ; 8892 } 8893 #pragma omp target teams 8894 { 8895 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8896 for (int i = 0; i < 10; ++i) 8897 ; 8898 } 8899 #pragma omp target teams 8900 { 8901 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 8902 for (int i = 0; i < 10; ++i) 8903 ; 8904 } 8905 #pragma omp target teams 8906 { 8907 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 8908 for (int i = 0; i < 10; ++i) 8909 ; 8910 } 8911 8912 // TARGET TEAMS DISTRIBUTE DIRECTIVE 8913 #pragma omp target teams distribute // OK 8914 for (int i = 0; i < 10; ++i) 8915 ; 8916 #pragma omp target teams distribute 8917 for (int i = 0; i < 10; ++i) { 8918 #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?}} 8919 for (int i = 0; i < 10; ++i) 8920 ; 8921 } 8922 #pragma omp target teams distribute 8923 for (int i = 0; i < 10; ++i) { 8924 #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?}} 8925 for (int i = 0; i < 10; ++i) 8926 ; 8927 } 8928 #pragma omp target teams distribute 8929 for (int i = 0; i < 10; ++i) { 8930 #pragma omp for // OK 8931 for (int i = 0; i < 10; ++i) 8932 ; 8933 } 8934 #pragma omp target teams distribute 8935 for (int i = 0; i < 10; ++i) { 8936 #pragma omp simd // OK 8937 for (int i = 0; i < 10; ++i) 8938 ; 8939 } 8940 #pragma omp target teams distribute 8941 for (int i = 0; i < 10; ++i) { 8942 #pragma omp for simd // OK 8943 for (int i = 0; i < 10; ++i) 8944 ; 8945 } 8946 #pragma omp target teams distribute 8947 for (int i = 0; i < 10; ++i) { 8948 #pragma omp parallel // OK 8949 for (int i = 0; i < 10; ++i) 8950 ; 8951 } 8952 #pragma omp target teams distribute 8953 for (int i = 0; i < 10; ++i) { 8954 #pragma omp sections // OK 8955 { 8956 bar(); 8957 } 8958 } 8959 #pragma omp target teams distribute 8960 for (int i = 0; i < 10; ++i) { 8961 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8962 { 8963 bar(); 8964 } 8965 } 8966 #pragma omp target teams distribute 8967 for (int i = 0; i < 10; ++i) { 8968 #pragma omp single // OK 8969 { 8970 bar(); 8971 } 8972 } 8973 #pragma omp target teams distribute 8974 for (int i = 0; i < 10; ++i) { 8975 #pragma omp master // OK 8976 { 8977 bar(); 8978 } 8979 } 8980 #pragma omp target teams distribute 8981 for (int i = 0; i < 10; ++i) { 8982 #pragma omp critical // OK 8983 { 8984 bar(); 8985 } 8986 } 8987 #pragma omp target teams distribute 8988 for (int i = 0; i < 10; ++i) { 8989 #pragma omp parallel // OK 8990 { 8991 #pragma omp single 8992 { 8993 bar(); 8994 } 8995 } 8996 } 8997 #pragma omp target teams distribute 8998 for (int i = 0; i < 10; ++i) { 8999 #pragma omp parallel for // OK 9000 for (int i = 0; i < 10; ++i) 9001 ; 9002 } 9003 #pragma omp target teams distribute 9004 for (int i = 0; i < 10; ++i) { 9005 #pragma omp parallel for simd // OK 9006 for (int i = 0; i < 10; ++i) 9007 ; 9008 } 9009 #pragma omp target teams distribute 9010 for (int i = 0; i < 10; ++i) { 9011 #pragma omp parallel sections // OK 9012 { 9013 bar(); 9014 } 9015 } 9016 #pragma omp target teams distribute 9017 for (int i = 0; i < 10; ++i) { 9018 #pragma omp task // OK 9019 { 9020 bar(); 9021 } 9022 } 9023 #pragma omp target teams distribute 9024 for (int i = 0; i < 10; ++i) { 9025 #pragma omp taskyield // OK 9026 bar(); 9027 } 9028 #pragma omp target teams distribute 9029 for (int i = 0; i < 10; ++i) { 9030 #pragma omp barrier // OK 9031 bar(); 9032 } 9033 #pragma omp target teams distribute 9034 for (int i = 0; i < 10; ++i) { 9035 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9036 bar(); 9037 } 9038 #pragma omp target teams distribute 9039 for (int i = 0; i < 10; ++i) { 9040 #pragma omp taskwait // OK 9041 bar(); 9042 } 9043 #pragma omp target teams distribute 9044 for (int i = 0; i < 10; ++i) { 9045 #pragma omp flush // OK 9046 bar(); 9047 } 9048 #pragma omp target teams distribute 9049 for (int i = 0; i < 10; ++i) { 9050 #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?}} 9051 bar(); 9052 } 9053 #pragma omp target teams distribute 9054 for (int i = 0; i < 10; ++i) { 9055 #pragma omp atomic // OK 9056 ++a; 9057 } 9058 #pragma omp target teams distribute 9059 for (int i = 0; i < 10; ++i) { 9060 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9061 ++a; 9062 } 9063 #pragma omp target teams distribute 9064 for (int i = 0; i < 10; ++i) { 9065 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9066 ++a; 9067 } 9068 #pragma omp target teams distribute 9069 for (int i = 0; i < 10; ++i) { 9070 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9071 for (int i = 0; i < 10; ++i) 9072 ; 9073 } 9074 #pragma omp target teams distribute 9075 for (int i = 0; i < 10; ++i) { 9076 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9077 ++a; 9078 } 9079 #pragma omp target teams distribute 9080 for (int i = 0; i < 10; ++i) { 9081 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9082 ++a; 9083 } 9084 #pragma omp target teams distribute 9085 for (int i = 0; i < 10; ++i) { 9086 #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?}} 9087 ++a; 9088 } 9089 #pragma omp target teams distribute 9090 for (int i = 0; i < 10; ++i) { 9091 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9092 ++a; 9093 } 9094 #pragma omp target teams distribute 9095 for (int i = 0; i < 10; ++i) { 9096 #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?}} 9097 for (int i = 0; i < 10; ++i) 9098 ++a; 9099 } 9100 #pragma omp target teams distribute 9101 for (int i = 0; i < 10; ++i) { 9102 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9103 for (int i = 0; i < 10; ++i) 9104 ++a; 9105 } 9106 #pragma omp target teams distribute 9107 for (int i = 0; i < 10; ++i) { 9108 #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?}} 9109 for (int i = 0; i < 10; ++i) 9110 ++a; 9111 } 9112 #pragma omp target teams distribute 9113 for (int i = 0; i < 10; ++i) { 9114 #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?}} 9115 for (int i = 0; i < 10; ++i) 9116 ++a; 9117 } 9118 #pragma omp target teams distribute 9119 for (int i = 0; i < 10; ++i) { 9120 #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?}} 9121 for (int i = 0; i < 10; ++i) 9122 ++a; 9123 } 9124 #pragma omp target teams distribute 9125 for (int i = 0; i < 10; ++i) { 9126 #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?}} 9127 for (int i = 0; i < 10; ++i) 9128 ; 9129 } 9130 #pragma omp target teams distribute 9131 for (int i = 0; i < 10; ++i) { 9132 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9133 a++; 9134 } 9135 #pragma omp target teams distribute 9136 for (int i = 0; i < 10; ++i) { 9137 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9138 for (int i = 0; i < 10; ++i) 9139 ; 9140 } 9141 #pragma omp target teams distribute 9142 for (int i = 0; i < 10; ++i) { 9143 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9144 for (int i = 0; i < 10; ++i) 9145 ; 9146 } 9147 #pragma omp target teams distribute 9148 for (int i = 0; i < 10; ++i) { 9149 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9150 for (int i = 0; i < 10; ++i) 9151 ; 9152 } 9153 #pragma omp target teams distribute 9154 for (int i = 0; i < 10; ++i) { 9155 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 9156 for (int i = 0; i < 10; ++i) 9157 ; 9158 } 9159 9160 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 9161 #pragma omp target teams distribute parallel for // OK 9162 for (int i = 0; i < 10; ++i) 9163 ; 9164 #pragma omp target teams distribute parallel for 9165 for (int i = 0; i < 10; ++i) { 9166 #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?}} 9167 for (int i = 0; i < 10; ++i) 9168 ; 9169 } 9170 #pragma omp target teams distribute parallel for 9171 for (int i = 0; i < 10; ++i) { 9172 #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?}} 9173 for (int i = 0; i < 10; ++i) 9174 ; 9175 } 9176 #pragma omp target teams distribute parallel for 9177 for (int i = 0; i < 10; ++i) { 9178 #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?}} 9179 for (int i = 0; i < 10; ++i) 9180 ; 9181 } 9182 #pragma omp target teams distribute parallel for 9183 for (int i = 0; i < 10; ++i) { 9184 #pragma omp simd // OK 9185 for (int i = 0; i < 10; ++i) 9186 ; 9187 } 9188 #pragma omp target teams distribute parallel for 9189 for (int i = 0; i < 10; ++i) { 9190 #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?}} 9191 for (int i = 0; i < 10; ++i) 9192 ; 9193 } 9194 #pragma omp target teams distribute parallel for 9195 for (int i = 0; i < 10; ++i) { 9196 #pragma omp parallel // OK 9197 for (int i = 0; i < 10; ++i) 9198 ; 9199 } 9200 #pragma omp target teams distribute parallel for 9201 for (int i = 0; i < 10; ++i) { 9202 #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?}} 9203 { 9204 bar(); 9205 } 9206 } 9207 #pragma omp target teams distribute parallel for 9208 for (int i = 0; i < 10; ++i) { 9209 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 9210 { 9211 bar(); 9212 } 9213 } 9214 #pragma omp target teams distribute parallel for 9215 for (int i = 0; i < 10; ++i) { 9216 #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?}} 9217 { 9218 bar(); 9219 } 9220 } 9221 #pragma omp target teams distribute parallel for 9222 for (int i = 0; i < 10; ++i) { 9223 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 9224 { 9225 bar(); 9226 } 9227 } 9228 #pragma omp target teams distribute parallel for 9229 for (int i = 0; i < 10; ++i) { 9230 #pragma omp critical // OK 9231 { 9232 bar(); 9233 } 9234 } 9235 #pragma omp target teams distribute parallel for 9236 for (int i = 0; i < 10; ++i) { 9237 #pragma omp parallel // OK 9238 { 9239 #pragma omp single 9240 { 9241 bar(); 9242 } 9243 } 9244 } 9245 #pragma omp target teams distribute parallel for 9246 for (int i = 0; i < 10; ++i) { 9247 #pragma omp parallel for // OK 9248 for (int i = 0; i < 10; ++i) 9249 ; 9250 } 9251 #pragma omp target teams distribute parallel for 9252 for (int i = 0; i < 10; ++i) { 9253 #pragma omp parallel for simd // OK 9254 for (int i = 0; i < 10; ++i) 9255 ; 9256 } 9257 #pragma omp target teams distribute parallel for 9258 for (int i = 0; i < 10; ++i) { 9259 #pragma omp parallel sections // OK 9260 { 9261 bar(); 9262 } 9263 } 9264 #pragma omp target teams distribute parallel for 9265 for (int i = 0; i < 10; ++i) { 9266 #pragma omp task // OK 9267 { 9268 bar(); 9269 } 9270 } 9271 #pragma omp target teams distribute parallel for 9272 for (int i = 0; i < 10; ++i) { 9273 #pragma omp taskyield // OK 9274 bar(); 9275 } 9276 #pragma omp target teams distribute parallel for 9277 for (int i = 0; i < 10; ++i) { 9278 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 9279 bar(); 9280 } 9281 #pragma omp target teams distribute parallel for 9282 for (int i = 0; i < 10; ++i) { 9283 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 9284 bar(); 9285 } 9286 #pragma omp target teams distribute parallel for 9287 for (int i = 0; i < 10; ++i) { 9288 #pragma omp taskwait // OK 9289 bar(); 9290 } 9291 #pragma omp target teams distribute parallel for 9292 for (int i = 0; i < 10; ++i) { 9293 #pragma omp flush // OK 9294 bar(); 9295 } 9296 #pragma omp target teams distribute parallel for 9297 for (int i = 0; i < 10; ++i) { 9298 #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?}} 9299 bar(); 9300 } 9301 #pragma omp target teams distribute parallel for 9302 for (int i = 0; i < 10; ++i) { 9303 #pragma omp atomic // OK 9304 ++a; 9305 } 9306 #pragma omp target teams distribute parallel for 9307 for (int i = 0; i < 10; ++i) { 9308 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9309 ++a; 9310 } 9311 #pragma omp target teams distribute parallel for 9312 for (int i = 0; i < 10; ++i) { 9313 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9314 ++a; 9315 } 9316 #pragma omp target teams distribute parallel for 9317 for (int i = 0; i < 10; ++i) { 9318 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9319 for (int i = 0; i < 10; ++i) 9320 ; 9321 } 9322 #pragma omp target teams distribute parallel for 9323 for (int i = 0; i < 10; ++i) { 9324 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9325 ++a; 9326 } 9327 #pragma omp target teams distribute parallel for 9328 for (int i = 0; i < 10; ++i) { 9329 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9330 ++a; 9331 } 9332 #pragma omp target teams distribute parallel for 9333 for (int i = 0; i < 10; ++i) { 9334 #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?}} 9335 ++a; 9336 } 9337 #pragma omp target teams distribute parallel for 9338 for (int i = 0; i < 10; ++i) { 9339 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9340 ++a; 9341 } 9342 #pragma omp target teams distribute parallel for 9343 for (int i = 0; i < 10; ++i) { 9344 #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?}} 9345 for (int i = 0; i < 10; ++i) 9346 ++a; 9347 } 9348 #pragma omp target teams distribute parallel for 9349 for (int i = 0; i < 10; ++i) { 9350 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9351 for (int i = 0; i < 10; ++i) 9352 ++a; 9353 } 9354 #pragma omp target teams distribute parallel for 9355 for (int i = 0; i < 10; ++i) { 9356 #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?}} 9357 for (int i = 0; i < 10; ++i) 9358 ++a; 9359 } 9360 #pragma omp target teams distribute parallel for 9361 for (int i = 0; i < 10; ++i) { 9362 #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?}} 9363 for (int i = 0; i < 10; ++i) 9364 ++a; 9365 } 9366 #pragma omp target teams distribute parallel for 9367 for (int i = 0; i < 10; ++i) { 9368 #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?}} 9369 for (int i = 0; i < 10; ++i) 9370 ++a; 9371 } 9372 #pragma omp target teams distribute parallel for 9373 for (int i = 0; i < 10; ++i) { 9374 #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?}} 9375 for (int i = 0; i < 10; ++i) 9376 ; 9377 } 9378 #pragma omp target teams distribute parallel for 9379 for (int i = 0; i < 10; ++i) { 9380 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9381 a++; 9382 } 9383 #pragma omp target teams distribute parallel for 9384 for (int i = 0; i < 10; ++i) { 9385 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9386 for (int i = 0; i < 10; ++i) 9387 ; 9388 } 9389 #pragma omp target teams distribute parallel for 9390 for (int i = 0; i < 10; ++i) { 9391 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9392 for (int i = 0; i < 10; ++i) 9393 ; 9394 } 9395 #pragma omp target teams distribute parallel for 9396 for (int i = 0; i < 10; ++i) { 9397 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9398 for (int i = 0; i < 10; ++i) 9399 ; 9400 } 9401 #pragma omp target teams distribute parallel for 9402 for (int i = 0; i < 10; ++i) { 9403 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9404 for (int i = 0; i < 10; ++i) 9405 ; 9406 } 9407 9408 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 9409 #pragma omp target teams distribute parallel for simd // OK 9410 for (int i = 0; i < 10; ++i) 9411 ; 9412 #pragma omp target teams distribute parallel for simd 9413 for (int i = 0; i < 10; ++i) { 9414 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9415 for (int i = 0; i < 10; ++i) 9416 ; 9417 } 9418 #pragma omp target teams distribute parallel for simd 9419 for (int i = 0; i < 10; ++i) { 9420 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9421 for (int i = 0; i < 10; ++i) 9422 ; 9423 } 9424 #pragma omp target teams distribute parallel for simd 9425 for (int i = 0; i < 10; ++i) { 9426 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9427 for (int i = 0; i < 10; ++i) 9428 ; 9429 } 9430 #pragma omp target teams distribute parallel for simd 9431 for (int i = 0; i < 10; ++i) { 9432 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9433 for (int i = 0; i < 10; ++i) 9434 ; 9435 } 9436 #pragma omp target teams distribute parallel for simd 9437 for (int i = 0; i < 10; ++i) { 9438 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9439 for (int i = 0; i < 10; ++i) 9440 ; 9441 } 9442 #pragma omp target teams distribute parallel for simd 9443 for (int i = 0; i < 10; ++i) { 9444 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9445 for (int i = 0; i < 10; ++i) 9446 ; 9447 } 9448 #pragma omp target teams distribute parallel for simd 9449 for (int i = 0; i < 10; ++i) { 9450 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9451 { 9452 bar(); 9453 } 9454 } 9455 #pragma omp target teams distribute parallel for simd 9456 for (int i = 0; i < 10; ++i) { 9457 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9458 { 9459 bar(); 9460 } 9461 } 9462 #pragma omp target teams distribute parallel for simd 9463 for (int i = 0; i < 10; ++i) { 9464 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9465 { 9466 bar(); 9467 } 9468 } 9469 #pragma omp target teams distribute parallel for simd 9470 for (int i = 0; i < 10; ++i) { 9471 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9472 { 9473 bar(); 9474 } 9475 } 9476 #pragma omp target teams distribute parallel for simd 9477 for (int i = 0; i < 10; ++i) { 9478 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9479 { 9480 bar(); 9481 } 9482 } 9483 #pragma omp target teams distribute parallel for simd 9484 for (int i = 0; i < 10; ++i) { 9485 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9486 { 9487 #pragma omp single 9488 { 9489 bar(); 9490 } 9491 } 9492 } 9493 #pragma omp target teams distribute parallel for simd 9494 for (int i = 0; i < 10; ++i) { 9495 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9496 for (int i = 0; i < 10; ++i) 9497 ; 9498 } 9499 #pragma omp target teams distribute parallel for simd 9500 for (int i = 0; i < 10; ++i) { 9501 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9502 for (int i = 0; i < 10; ++i) 9503 ; 9504 } 9505 #pragma omp target teams distribute parallel for simd 9506 for (int i = 0; i < 10; ++i) { 9507 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9508 { 9509 bar(); 9510 } 9511 } 9512 #pragma omp target teams distribute parallel for simd 9513 for (int i = 0; i < 10; ++i) { 9514 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9515 { 9516 bar(); 9517 } 9518 } 9519 #pragma omp target teams distribute parallel for simd 9520 for (int i = 0; i < 10; ++i) { 9521 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9522 bar(); 9523 } 9524 #pragma omp target teams distribute parallel for simd 9525 for (int i = 0; i < 10; ++i) { 9526 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9527 bar(); 9528 } 9529 #pragma omp target teams distribute parallel for simd 9530 for (int i = 0; i < 10; ++i) { 9531 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9532 bar(); 9533 } 9534 #pragma omp target teams distribute parallel for simd 9535 for (int i = 0; i < 10; ++i) { 9536 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9537 bar(); 9538 } 9539 #pragma omp target teams distribute parallel for simd 9540 for (int i = 0; i < 10; ++i) { 9541 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9542 bar(); 9543 } 9544 #pragma omp target teams distribute parallel for simd 9545 for (int i = 0; i < 10; ++i) { 9546 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9547 bar(); 9548 } 9549 #pragma omp target teams distribute parallel for simd 9550 for (int i = 0; i < 10; ++i) { 9551 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9552 ++a; 9553 } 9554 #pragma omp target teams distribute parallel for simd 9555 for (int i = 0; i < 10; ++i) { 9556 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9557 ++a; 9558 } 9559 #pragma omp target teams distribute parallel for simd 9560 for (int i = 0; i < 10; ++i) { 9561 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9562 ++a; 9563 } 9564 #pragma omp target teams distribute parallel for simd 9565 for (int i = 0; i < 10; ++i) { 9566 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9567 for (int i = 0; i < 10; ++i) 9568 ; 9569 } 9570 #pragma omp target teams distribute parallel for simd 9571 for (int i = 0; i < 10; ++i) { 9572 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9573 ++a; 9574 } 9575 #pragma omp target teams distribute parallel for simd 9576 for (int i = 0; i < 10; ++i) { 9577 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9578 ++a; 9579 } 9580 #pragma omp target teams distribute parallel for simd 9581 for (int i = 0; i < 10; ++i) { 9582 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9583 ++a; 9584 } 9585 #pragma omp target teams distribute parallel for simd 9586 for (int i = 0; i < 10; ++i) { 9587 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9588 ++a; 9589 } 9590 #pragma omp target teams distribute parallel for simd 9591 for (int i = 0; i < 10; ++i) { 9592 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9593 for (int i = 0; i < 10; ++i) 9594 ++a; 9595 } 9596 #pragma omp target teams distribute parallel for simd 9597 for (int i = 0; i < 10; ++i) { 9598 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9599 for (int i = 0; i < 10; ++i) 9600 ++a; 9601 } 9602 #pragma omp target teams distribute parallel for simd 9603 for (int i = 0; i < 10; ++i) { 9604 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9605 for (int i = 0; i < 10; ++i) 9606 ++a; 9607 } 9608 #pragma omp target teams distribute parallel for simd 9609 for (int i = 0; i < 10; ++i) { 9610 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9611 for (int i = 0; i < 10; ++i) 9612 ++a; 9613 } 9614 #pragma omp target teams distribute parallel for simd 9615 for (int i = 0; i < 10; ++i) { 9616 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9617 for (int i = 0; i < 10; ++i) 9618 ++a; 9619 } 9620 #pragma omp target teams distribute parallel for simd 9621 for (int i = 0; i < 10; ++i) { 9622 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9623 for (int i = 0; i < 10; ++i) 9624 ; 9625 } 9626 #pragma omp target teams distribute parallel for simd 9627 for (int i = 0; i < 10; ++i) { 9628 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9629 a++; 9630 } 9631 #pragma omp target teams distribute parallel for simd 9632 for (int i = 0; i < 10; ++i) { 9633 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9634 for (int i = 0; i < 10; ++i) 9635 ; 9636 } 9637 #pragma omp target teams distribute parallel for simd 9638 for (int i = 0; i < 10; ++i) { 9639 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9640 for (int i = 0; i < 10; ++i) 9641 ; 9642 } 9643 #pragma omp target teams distribute parallel for simd 9644 for (int i = 0; i < 10; ++i) { 9645 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9646 for (int i = 0; i < 10; ++i) 9647 ; 9648 } 9649 #pragma omp target teams distribute parallel for simd 9650 for (int i = 0; i < 10; ++i) { 9651 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9652 for (int i = 0; i < 10; ++i) 9653 ; 9654 } 9655 9656 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 9657 #pragma omp target teams distribute simd // OK 9658 for (int i = 0; i < 10; ++i) 9659 ; 9660 #pragma omp target teams distribute simd 9661 for (int i = 0; i < 10; ++i) { 9662 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9663 for (int i = 0; i < 10; ++i) 9664 ; 9665 } 9666 #pragma omp target teams distribute simd 9667 for (int i = 0; i < 10; ++i) { 9668 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9669 for (int i = 0; i < 10; ++i) 9670 ; 9671 } 9672 #pragma omp target teams distribute simd 9673 for (int i = 0; i < 10; ++i) { 9674 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9675 for (int i = 0; i < 10; ++i) 9676 ; 9677 } 9678 #pragma omp target teams distribute simd 9679 for (int i = 0; i < 10; ++i) { 9680 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9681 for (int i = 0; i < 10; ++i) 9682 ; 9683 } 9684 #pragma omp target teams distribute simd 9685 for (int i = 0; i < 10; ++i) { 9686 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9687 for (int i = 0; i < 10; ++i) 9688 ; 9689 } 9690 #pragma omp target teams distribute simd 9691 for (int i = 0; i < 10; ++i) { 9692 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9693 for (int i = 0; i < 10; ++i) 9694 ; 9695 } 9696 #pragma omp target teams distribute simd 9697 for (int i = 0; i < 10; ++i) { 9698 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9699 { 9700 bar(); 9701 } 9702 } 9703 #pragma omp target teams distribute simd 9704 for (int i = 0; i < 10; ++i) { 9705 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9706 { 9707 bar(); 9708 } 9709 } 9710 #pragma omp target teams distribute simd 9711 for (int i = 0; i < 10; ++i) { 9712 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9713 { 9714 bar(); 9715 } 9716 } 9717 #pragma omp target teams distribute simd 9718 for (int i = 0; i < 10; ++i) { 9719 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9720 { 9721 bar(); 9722 } 9723 } 9724 #pragma omp target teams distribute simd 9725 for (int i = 0; i < 10; ++i) { 9726 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9727 { 9728 bar(); 9729 } 9730 } 9731 #pragma omp target teams distribute simd 9732 for (int i = 0; i < 10; ++i) { 9733 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9734 { 9735 #pragma omp single 9736 { 9737 bar(); 9738 } 9739 } 9740 } 9741 #pragma omp target teams distribute simd 9742 for (int i = 0; i < 10; ++i) { 9743 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9744 for (int i = 0; i < 10; ++i) 9745 ; 9746 } 9747 #pragma omp target teams distribute simd 9748 for (int i = 0; i < 10; ++i) { 9749 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9750 for (int i = 0; i < 10; ++i) 9751 ; 9752 } 9753 #pragma omp target teams distribute simd 9754 for (int i = 0; i < 10; ++i) { 9755 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9756 { 9757 bar(); 9758 } 9759 } 9760 #pragma omp target teams distribute simd 9761 for (int i = 0; i < 10; ++i) { 9762 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9763 { 9764 bar(); 9765 } 9766 } 9767 #pragma omp target teams distribute simd 9768 for (int i = 0; i < 10; ++i) { 9769 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9770 bar(); 9771 } 9772 #pragma omp target teams distribute simd 9773 for (int i = 0; i < 10; ++i) { 9774 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9775 bar(); 9776 } 9777 #pragma omp target teams distribute simd 9778 for (int i = 0; i < 10; ++i) { 9779 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9780 bar(); 9781 } 9782 #pragma omp target teams distribute simd 9783 for (int i = 0; i < 10; ++i) { 9784 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9785 bar(); 9786 } 9787 #pragma omp target teams distribute simd 9788 for (int i = 0; i < 10; ++i) { 9789 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9790 bar(); 9791 } 9792 #pragma omp target teams distribute simd 9793 for (int i = 0; i < 10; ++i) { 9794 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9795 bar(); 9796 } 9797 #pragma omp target teams distribute simd 9798 for (int i = 0; i < 10; ++i) { 9799 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9800 ++a; 9801 } 9802 #pragma omp target teams distribute simd 9803 for (int i = 0; i < 10; ++i) { 9804 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9805 ++a; 9806 } 9807 #pragma omp target teams distribute simd 9808 for (int i = 0; i < 10; ++i) { 9809 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9810 ++a; 9811 } 9812 #pragma omp target teams distribute simd 9813 for (int i = 0; i < 10; ++i) { 9814 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9815 for (int i = 0; i < 10; ++i) 9816 ; 9817 } 9818 #pragma omp target teams distribute simd 9819 for (int i = 0; i < 10; ++i) { 9820 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9821 ++a; 9822 } 9823 #pragma omp target teams distribute simd 9824 for (int i = 0; i < 10; ++i) { 9825 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9826 ++a; 9827 } 9828 #pragma omp target teams distribute simd 9829 for (int i = 0; i < 10; ++i) { 9830 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9831 ++a; 9832 } 9833 #pragma omp target teams distribute simd 9834 for (int i = 0; i < 10; ++i) { 9835 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9836 ++a; 9837 } 9838 #pragma omp target teams distribute simd 9839 for (int i = 0; i < 10; ++i) { 9840 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9841 for (int i = 0; i < 10; ++i) 9842 ++a; 9843 } 9844 #pragma omp target teams distribute simd 9845 for (int i = 0; i < 10; ++i) { 9846 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9847 for (int i = 0; i < 10; ++i) 9848 ++a; 9849 } 9850 #pragma omp target teams distribute simd 9851 for (int i = 0; i < 10; ++i) { 9852 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9853 for (int i = 0; i < 10; ++i) 9854 ++a; 9855 } 9856 #pragma omp target teams distribute simd 9857 for (int i = 0; i < 10; ++i) { 9858 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9859 for (int i = 0; i < 10; ++i) 9860 ++a; 9861 } 9862 #pragma omp target teams distribute simd 9863 for (int i = 0; i < 10; ++i) { 9864 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9865 for (int i = 0; i < 10; ++i) 9866 ++a; 9867 } 9868 #pragma omp target teams distribute simd 9869 for (int i = 0; i < 10; ++i) { 9870 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9871 for (int i = 0; i < 10; ++i) 9872 ; 9873 } 9874 #pragma omp target teams distribute simd 9875 for (int i = 0; i < 10; ++i) { 9876 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9877 a++; 9878 } 9879 #pragma omp target teams distribute simd 9880 for (int i = 0; i < 10; ++i) { 9881 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9882 for (int i = 0; i < 10; ++i) 9883 ; 9884 } 9885 #pragma omp target teams distribute simd 9886 for (int i = 0; i < 10; ++i) { 9887 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9888 for (int i = 0; i < 10; ++i) 9889 ; 9890 } 9891 #pragma omp target teams distribute simd 9892 for (int i = 0; i < 10; ++i) { 9893 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9894 for (int i = 0; i < 10; ++i) 9895 ; 9896 } 9897 #pragma omp target teams distribute simd 9898 for (int i = 0; i < 10; ++i) { 9899 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9900 for (int i = 0; i < 10; ++i) 9901 ; 9902 } 9903 9904 } 9905 9906 void foo() { 9907 int a = 0; 9908 // PARALLEL DIRECTIVE 9909 #pragma omp parallel 9910 #pragma omp for 9911 for (int i = 0; i < 10; ++i) 9912 ; 9913 #pragma omp parallel 9914 #pragma omp simd 9915 for (int i = 0; i < 10; ++i) 9916 ; 9917 #pragma omp parallel 9918 #pragma omp for simd 9919 for (int i = 0; i < 10; ++i) 9920 ; 9921 #pragma omp parallel 9922 #pragma omp sections 9923 { 9924 bar(); 9925 } 9926 #pragma omp parallel 9927 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 9928 { 9929 bar(); 9930 } 9931 #pragma omp parallel 9932 #pragma omp sections 9933 { 9934 bar(); 9935 } 9936 #pragma omp parallel 9937 #pragma omp single 9938 bar(); 9939 #pragma omp parallel 9940 #pragma omp master 9941 bar(); 9942 #pragma omp parallel master 9943 bar(); 9944 #pragma omp parallel masked 9945 bar(); 9946 #pragma omp parallel 9947 #pragma omp critical 9948 bar(); 9949 #pragma omp parallel 9950 #pragma omp parallel for 9951 for (int i = 0; i < 10; ++i) 9952 ; 9953 #pragma omp parallel 9954 #pragma omp parallel for simd 9955 for (int i = 0; i < 10; ++i) 9956 ; 9957 #pragma omp parallel 9958 #pragma omp parallel sections 9959 { 9960 bar(); 9961 } 9962 #pragma omp parallel 9963 #pragma omp task 9964 { 9965 bar(); 9966 } 9967 #pragma omp parallel 9968 { 9969 #pragma omp taskyield 9970 bar(); 9971 } 9972 #pragma omp parallel 9973 { 9974 #pragma omp barrier 9975 bar(); 9976 } 9977 #pragma omp parallel 9978 { 9979 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9980 bar(); 9981 } 9982 #pragma omp parallel 9983 { 9984 #pragma omp taskwait 9985 bar(); 9986 } 9987 #pragma omp parallel 9988 { 9989 #pragma omp flush 9990 bar(); 9991 } 9992 #pragma omp parallel 9993 { 9994 #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?}} 9995 bar(); 9996 } 9997 #pragma omp parallel 9998 { 9999 #pragma omp atomic 10000 ++a; 10001 } 10002 #pragma omp parallel 10003 { 10004 #pragma omp target 10005 ++a; 10006 } 10007 #pragma omp parallel 10008 { 10009 #pragma omp target parallel 10010 ++a; 10011 } 10012 #pragma omp parallel 10013 #pragma omp target parallel for 10014 for (int i = 0; i < 10; ++i) 10015 ; 10016 #pragma omp parallel 10017 { 10018 #pragma omp target enter data map(to: a) 10019 ++a; 10020 } 10021 #pragma omp parallel 10022 { 10023 #pragma omp target exit data map(from: a) 10024 ++a; 10025 } 10026 #pragma omp parallel 10027 { 10028 #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?}} 10029 ++a; 10030 } 10031 #pragma omp parallel 10032 { 10033 #pragma omp taskloop 10034 for (int i = 0; i < 10; ++i) 10035 ++a; 10036 } 10037 #pragma omp parallel 10038 { 10039 #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?}} 10040 for (int i = 0; i < 10; ++i) 10041 ; 10042 } 10043 #pragma omp parallel 10044 { 10045 #pragma omp target update to(a) 10046 a++; 10047 } 10048 #pragma omp parallel 10049 { 10050 #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?}} 10051 for (int i = 0; i < 10; ++i) 10052 ; 10053 } 10054 #pragma omp parallel 10055 { 10056 #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?}} 10057 for (int i = 0; i < 10; ++i) 10058 ; 10059 } 10060 #pragma omp parallel 10061 { 10062 #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?}} 10063 for (int i = 0; i < 10; ++i) 10064 ; 10065 } 10066 #pragma omp parallel 10067 { 10068 #pragma omp target simd // OK 10069 for (int i = 0; i < 10; ++i) 10070 ; 10071 } 10072 #pragma omp parallel 10073 { 10074 #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?}} 10075 for (int i = 0; i < 10; ++i) 10076 ; 10077 } 10078 #pragma omp parallel 10079 { 10080 #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?}} 10081 for (int i = 0; i < 10; ++i) 10082 ; 10083 } 10084 #pragma omp parallel 10085 { 10086 #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?}} 10087 for (int i = 0; i < 10; ++i) 10088 ; 10089 } 10090 #pragma omp parallel 10091 { 10092 #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?}} 10093 for (int i = 0; i < 10; ++i) 10094 ; 10095 } 10096 #pragma omp parallel 10097 { 10098 #pragma omp target teams // OK 10099 a++; 10100 } 10101 #pragma omp parallel 10102 { 10103 #pragma omp target teams distribute // OK 10104 for (int i = 0; i < 10; ++i) 10105 ; 10106 } 10107 #pragma omp parallel 10108 { 10109 #pragma omp target teams distribute parallel for // OK 10110 for (int i = 0; i < 10; ++i) 10111 ; 10112 } 10113 #pragma omp parallel 10114 { 10115 #pragma omp target teams distribute parallel for simd // OK 10116 for (int i = 0; i < 10; ++i) 10117 ; 10118 } 10119 #pragma omp parallel 10120 { 10121 #pragma omp target teams distribute simd // OK 10122 for (int i = 0; i < 10; ++i) 10123 ; 10124 } 10125 10126 // SIMD DIRECTIVE 10127 #pragma omp simd 10128 for (int i = 0; i < 10; ++i) { 10129 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10130 for (int i = 0; i < 10; ++i) 10131 ; 10132 } 10133 #pragma omp simd 10134 for (int i = 0; i < 10; ++i) { 10135 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10136 for (int i = 0; i < 10; ++i) 10137 ; 10138 } 10139 #pragma omp simd 10140 for (int i = 0; i < 10; ++i) { 10141 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10142 for (int i = 0; i < 10; ++i) 10143 ; 10144 } 10145 #pragma omp simd 10146 for (int i = 0; i < 10; ++i) { 10147 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10148 for (int i = 0; i < 10; ++i) 10149 ; 10150 } 10151 #pragma omp simd 10152 for (int i = 0; i < 10; ++i) { 10153 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10154 { 10155 bar(); 10156 } 10157 } 10158 #pragma omp simd 10159 for (int i = 0; i < 10; ++i) { 10160 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10161 { 10162 bar(); 10163 } 10164 } 10165 #pragma omp simd 10166 for (int i = 0; i < 10; ++i) { 10167 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10168 bar(); 10169 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10170 bar(); 10171 } 10172 #pragma omp simd 10173 for (int i = 0; i < 10; ++i) { 10174 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10175 bar(); 10176 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10177 bar(); 10178 } 10179 #pragma omp simd 10180 for (int i = 0; i < 10; ++i) { 10181 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10182 for (int i = 0; i < 10; ++i) 10183 ; 10184 } 10185 #pragma omp simd 10186 for (int i = 0; i < 10; ++i) { 10187 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10188 for (int i = 0; i < 10; ++i) 10189 ; 10190 } 10191 #pragma omp simd 10192 for (int i = 0; i < 10; ++i) { 10193 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10194 { 10195 bar(); 10196 } 10197 } 10198 #pragma omp simd 10199 for (int i = 0; i < 10; ++i) { 10200 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10201 { 10202 bar(); 10203 } 10204 } 10205 #pragma omp simd 10206 for (int i = 0; i < 10; ++i) { 10207 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10208 bar(); 10209 } 10210 #pragma omp simd 10211 for (int i = 0; i < 10; ++i) { 10212 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10213 bar(); 10214 } 10215 #pragma omp simd 10216 for (int i = 0; i < 10; ++i) { 10217 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10218 bar(); 10219 } 10220 #pragma omp simd 10221 for (int i = 0; i < 10; ++i) { 10222 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10223 bar(); 10224 } 10225 #pragma omp simd 10226 for (int i = 0; i < 10; ++i) { 10227 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10228 bar(); 10229 } 10230 #pragma omp simd 10231 for (int i = 0; i < 10; ++i) { 10232 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10233 bar(); 10234 } 10235 #pragma omp simd 10236 for (int i = 0; i < 10; ++i) { 10237 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 10238 ++a; 10239 } 10240 #pragma omp simd 10241 for (int i = 0; i < 10; ++i) { 10242 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10243 ++a; 10244 } 10245 #pragma omp simd 10246 for (int i = 0; i < 10; ++i) { 10247 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10248 ++a; 10249 } 10250 #pragma omp simd 10251 for (int i = 0; i < 10; ++i) { 10252 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10253 for (int i = 0; i < 10; ++i) 10254 ; 10255 } 10256 #pragma omp simd 10257 for (int i = 0; i < 10; ++i) { 10258 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10259 ++a; 10260 } 10261 #pragma omp simd 10262 for (int i = 0; i < 10; ++i) { 10263 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10264 ++a; 10265 } 10266 #pragma omp simd 10267 for (int i = 0; i < 10; ++i) { 10268 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10269 ++a; 10270 } 10271 #pragma omp simd 10272 for (int i = 0; i < 10; ++i) { 10273 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10274 for (int i = 0; i < 10; ++i) 10275 ++a; 10276 } 10277 #pragma omp simd 10278 for (int i = 0; i < 10; ++i) { 10279 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10280 for (int j = 0; j < 10; ++j) 10281 ; 10282 } 10283 #pragma omp simd 10284 for (int i = 0; i < 10; ++i) { 10285 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10286 a++; 10287 } 10288 #pragma omp simd 10289 for (int i = 0; i < 10; ++i) { 10290 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10291 for (int j = 0; j < 10; ++j) 10292 ; 10293 } 10294 #pragma omp simd 10295 for (int i = 0; i < 10; ++i) { 10296 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10297 for (int j = 0; j < 10; ++j) 10298 ; 10299 } 10300 #pragma omp simd 10301 for (int i = 0; i < 10; ++i) { 10302 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10303 for (int j = 0; j < 10; ++j) 10304 ; 10305 } 10306 #pragma omp simd 10307 for (int i = 0; i < 10; ++i) { 10308 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10309 for (int j = 0; j < 10; ++j) 10310 ; 10311 } 10312 #pragma omp simd 10313 for (int i = 0; i < 10; ++i) { 10314 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10315 for (int j = 0; j < 10; ++j) 10316 ; 10317 } 10318 #pragma omp simd 10319 for (int i = 0; i < 10; ++i) { 10320 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10321 for (int j = 0; j < 10; ++j) 10322 ; 10323 } 10324 #pragma omp simd 10325 for (int i = 0; i < 10; ++i) { 10326 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10327 for (int j = 0; j < 10; ++j) 10328 ; 10329 } 10330 #pragma omp simd 10331 for (int i = 0; i < 10; ++i) { 10332 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10333 for (int j = 0; j < 10; ++j) 10334 ; 10335 } 10336 #pragma omp simd 10337 for (int i = 0; i < 10; ++i) { 10338 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10339 a++; 10340 } 10341 #pragma omp simd 10342 for (int i = 0; i < 10; ++i) { 10343 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10344 for (int j = 0; j < 10; ++j) 10345 ; 10346 } 10347 #pragma omp simd 10348 for (int i = 0; i < 10; ++i) { 10349 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10350 for (int j = 0; j < 10; ++j) 10351 ; 10352 } 10353 #pragma omp simd 10354 for (int i = 0; i < 10; ++i) { 10355 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10356 for (int j = 0; j < 10; ++j) 10357 ; 10358 } 10359 #pragma omp simd 10360 for (int i = 0; i < 10; ++i) { 10361 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10362 for (int j = 0; j < 10; ++j) 10363 ; 10364 } 10365 10366 // FOR DIRECTIVE 10367 #pragma omp for 10368 for (int i = 0; i < 10; ++i) { 10369 #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?}} 10370 for (int i = 0; i < 10; ++i) 10371 ; 10372 } 10373 #pragma omp for 10374 for (int i = 0; i < 10; ++i) { 10375 #pragma omp simd 10376 for (int i = 0; i < 10; ++i) 10377 ; 10378 } 10379 #pragma omp for 10380 for (int i = 0; i < 10; ++i) { 10381 #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?}} 10382 for (int i = 0; i < 10; ++i) 10383 ; 10384 } 10385 #pragma omp for 10386 for (int i = 0; i < 10; ++i) { 10387 #pragma omp parallel 10388 for (int i = 0; i < 10; ++i) 10389 ; 10390 } 10391 #pragma omp for 10392 for (int i = 0; i < 10; ++i) { 10393 #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?}} 10394 { 10395 bar(); 10396 } 10397 } 10398 #pragma omp for 10399 for (int i = 0; i < 10; ++i) { 10400 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 10401 { 10402 bar(); 10403 } 10404 } 10405 #pragma omp for 10406 for (int i = 0; i < 10; ++i) { 10407 #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?}} 10408 bar(); 10409 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 10410 bar(); 10411 #pragma omp critical 10412 bar(); 10413 } 10414 #pragma omp for 10415 for (int i = 0; i < 10; ++i) { 10416 #pragma omp parallel 10417 { 10418 #pragma omp single // OK 10419 { 10420 bar(); 10421 } 10422 #pragma omp for // OK 10423 for (int i = 0; i < 10; ++i) 10424 ; 10425 #pragma omp for simd // OK 10426 for (int i = 0; i < 10; ++i) 10427 ; 10428 #pragma omp sections // OK 10429 { 10430 bar(); 10431 } 10432 } 10433 } 10434 #pragma omp for 10435 for (int i = 0; i < 10; ++i) { 10436 #pragma omp parallel for 10437 for (int i = 0; i < 10; ++i) 10438 ; 10439 } 10440 #pragma omp for 10441 for (int i = 0; i < 10; ++i) { 10442 #pragma omp parallel for simd 10443 for (int i = 0; i < 10; ++i) 10444 ; 10445 } 10446 #pragma omp for 10447 for (int i = 0; i < 10; ++i) { 10448 #pragma omp parallel sections 10449 { 10450 bar(); 10451 } 10452 } 10453 #pragma omp for 10454 for (int i = 0; i < 10; ++i) { 10455 #pragma omp task 10456 { 10457 bar(); 10458 } 10459 } 10460 #pragma omp for 10461 for (int i = 0; i < 10; ++i) { 10462 #pragma omp taskyield 10463 bar(); 10464 } 10465 #pragma omp for 10466 for (int i = 0; i < 10; ++i) { 10467 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 10468 bar(); 10469 } 10470 #pragma omp for 10471 for (int i = 0; i < 10; ++i) { 10472 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10473 bar(); 10474 } 10475 #pragma omp for 10476 for (int i = 0; i < 10; ++i) { 10477 #pragma omp taskwait 10478 bar(); 10479 } 10480 #pragma omp for 10481 for (int i = 0; i < 10; ++i) { 10482 #pragma omp flush 10483 bar(); 10484 } 10485 #pragma omp for 10486 for (int i = 0; i < 10; ++i) { 10487 #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?}} 10488 bar(); 10489 } 10490 #pragma omp for ordered 10491 for (int i = 0; i < 10; ++i) { 10492 #pragma omp ordered // OK 10493 bar(); 10494 } 10495 #pragma omp for 10496 for (int i = 0; i < 10; ++i) { 10497 #pragma omp atomic 10498 ++a; 10499 } 10500 #pragma omp for 10501 for (int i = 0; i < 10; ++i) { 10502 #pragma omp target 10503 ++a; 10504 } 10505 #pragma omp for 10506 for (int i = 0; i < 10; ++i) { 10507 #pragma omp target parallel 10508 ++a; 10509 } 10510 #pragma omp for 10511 for (int i = 0; i < 10; ++i) { 10512 #pragma omp target parallel for 10513 for (int i = 0; i < 10; ++i) 10514 ; 10515 } 10516 #pragma omp for 10517 for (int i = 0; i < 10; ++i) { 10518 #pragma omp target enter data map(to: a) 10519 ++a; 10520 } 10521 #pragma omp for 10522 for (int i = 0; i < 10; ++i) { 10523 #pragma omp target exit data map(from: a) 10524 ++a; 10525 } 10526 #pragma omp for 10527 for (int i = 0; i < 10; ++i) { 10528 #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?}} 10529 ++a; 10530 } 10531 #pragma omp for 10532 for (int i = 0; i < 10; ++i) { 10533 #pragma omp taskloop 10534 for (int i = 0; i < 10; ++i) 10535 ++a; 10536 } 10537 #pragma omp for 10538 for (int i = 0; i < 10; ++i) { 10539 #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?}} 10540 for (int j = 0; j < 10; ++j) 10541 ; 10542 } 10543 #pragma omp for 10544 for (int i = 0; i < 10; ++i) { 10545 #pragma omp target update to(a) 10546 ++a; 10547 } 10548 #pragma omp for 10549 for (int i = 0; i < 10; ++i) { 10550 #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?}} 10551 for (int j = 0; j < 10; ++j) 10552 ; 10553 } 10554 #pragma omp for 10555 for (int i = 0; i < 10; ++i) { 10556 #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?}} 10557 for (int j = 0; j < 10; ++j) 10558 ; 10559 } 10560 #pragma omp for 10561 for (int i = 0; i < 10; ++i) { 10562 #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?}} 10563 for (int j = 0; j < 10; ++j) 10564 ; 10565 } 10566 #pragma omp for 10567 for (int i = 0; i < 10; ++i) { 10568 #pragma omp target simd // OK 10569 for (int j = 0; j < 10; ++j) 10570 ; 10571 } 10572 #pragma omp for 10573 for (int i = 0; i < 10; ++i) { 10574 #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?}} 10575 for (int j = 0; j < 10; ++j) 10576 ; 10577 } 10578 #pragma omp for 10579 for (int i = 0; i < 10; ++i) { 10580 #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?}} 10581 for (int j = 0; j < 10; ++j) 10582 ; 10583 } 10584 #pragma omp for 10585 for (int i = 0; i < 10; ++i) { 10586 #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?}} 10587 for (int j = 0; j < 10; ++j) 10588 ; 10589 } 10590 #pragma omp for 10591 for (int i = 0; i < 10; ++i) { 10592 #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?}} 10593 for (int j = 0; j < 10; ++j) 10594 ; 10595 } 10596 #pragma omp for 10597 for (int i = 0; i < 10; ++i) { 10598 #pragma omp target teams // OK 10599 a++; 10600 } 10601 #pragma omp for 10602 for (int i = 0; i < 10; ++i) { 10603 #pragma omp target teams distribute // OK 10604 for (int j = 0; j < 10; ++j) 10605 ; 10606 } 10607 #pragma omp for 10608 for (int i = 0; i < 10; ++i) { 10609 #pragma omp target teams distribute parallel for // OK 10610 for (int j = 0; j < 10; ++j) 10611 ; 10612 } 10613 #pragma omp for 10614 for (int i = 0; i < 10; ++i) { 10615 #pragma omp target teams distribute parallel for simd // OK 10616 for (int j = 0; j < 10; ++j) 10617 ; 10618 } 10619 #pragma omp for 10620 for (int i = 0; i < 10; ++i) { 10621 #pragma omp target teams distribute simd // OK 10622 for (int j = 0; j < 10; ++j) 10623 ; 10624 } 10625 10626 // FOR SIMD DIRECTIVE 10627 #pragma omp for simd 10628 for (int i = 0; i < 10; ++i) { 10629 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10630 for (int i = 0; i < 10; ++i) 10631 ; 10632 } 10633 #pragma omp for simd 10634 for (int i = 0; i < 10; ++i) { 10635 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10636 for (int i = 0; i < 10; ++i) 10637 ; 10638 } 10639 #pragma omp for simd 10640 for (int i = 0; i < 10; ++i) { 10641 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10642 for (int i = 0; i < 10; ++i) 10643 ; 10644 } 10645 #pragma omp for simd 10646 for (int i = 0; i < 10; ++i) { 10647 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10648 for (int i = 0; i < 10; ++i) 10649 ; 10650 } 10651 #pragma omp for simd 10652 for (int i = 0; i < 10; ++i) { 10653 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10654 { 10655 bar(); 10656 } 10657 } 10658 #pragma omp for simd 10659 for (int i = 0; i < 10; ++i) { 10660 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10661 { 10662 bar(); 10663 } 10664 } 10665 #pragma omp for simd 10666 for (int i = 0; i < 10; ++i) { 10667 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10668 bar(); 10669 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10670 bar(); 10671 } 10672 #pragma omp for simd 10673 for (int i = 0; i < 10; ++i) { 10674 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10675 bar(); 10676 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10677 bar(); 10678 } 10679 #pragma omp for simd 10680 for (int i = 0; i < 10; ++i) { 10681 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10682 for (int i = 0; i < 10; ++i) 10683 ; 10684 } 10685 #pragma omp for simd 10686 for (int i = 0; i < 10; ++i) { 10687 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10688 for (int i = 0; i < 10; ++i) 10689 ; 10690 } 10691 #pragma omp for simd 10692 for (int i = 0; i < 10; ++i) { 10693 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10694 { 10695 bar(); 10696 } 10697 } 10698 #pragma omp for simd 10699 for (int i = 0; i < 10; ++i) { 10700 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10701 { 10702 bar(); 10703 } 10704 } 10705 #pragma omp for simd 10706 for (int i = 0; i < 10; ++i) { 10707 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10708 bar(); 10709 } 10710 #pragma omp for simd 10711 for (int i = 0; i < 10; ++i) { 10712 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10713 bar(); 10714 } 10715 #pragma omp for simd 10716 for (int i = 0; i < 10; ++i) { 10717 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10718 bar(); 10719 } 10720 #pragma omp for simd 10721 for (int i = 0; i < 10; ++i) { 10722 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10723 bar(); 10724 } 10725 #pragma omp for simd 10726 for (int i = 0; i < 10; ++i) { 10727 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10728 bar(); 10729 } 10730 #pragma omp for simd 10731 for (int i = 0; i < 10; ++i) { 10732 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10733 bar(); 10734 } 10735 #pragma omp for simd 10736 for (int i = 0; i < 10; ++i) { 10737 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 10738 ++a; 10739 } 10740 #pragma omp for simd 10741 for (int i = 0; i < 10; ++i) { 10742 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10743 ++a; 10744 } 10745 #pragma omp for simd 10746 for (int i = 0; i < 10; ++i) { 10747 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10748 ++a; 10749 } 10750 #pragma omp for simd 10751 for (int i = 0; i < 10; ++i) { 10752 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10753 for (int i = 0; i < 10; ++i) 10754 ; 10755 } 10756 #pragma omp for simd 10757 for (int i = 0; i < 10; ++i) { 10758 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10759 ++a; 10760 } 10761 #pragma omp for simd 10762 for (int i = 0; i < 10; ++i) { 10763 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10764 ++a; 10765 } 10766 #pragma omp for simd 10767 for (int i = 0; i < 10; ++i) { 10768 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10769 ++a; 10770 } 10771 #pragma omp for simd 10772 for (int i = 0; i < 10; ++i) { 10773 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10774 for (int i = 0; i < 10; ++i) 10775 ++a; 10776 } 10777 #pragma omp for simd 10778 for (int i = 0; i < 10; ++i) { 10779 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10780 for (int j = 0; j < 10; ++j) 10781 ; 10782 } 10783 #pragma omp for simd 10784 for (int i = 0; i < 10; ++i) { 10785 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10786 ++a; 10787 } 10788 #pragma omp for simd 10789 for (int i = 0; i < 10; ++i) { 10790 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10791 for (int j = 0; j < 10; ++j) 10792 ; 10793 } 10794 #pragma omp for simd 10795 for (int i = 0; i < 10; ++i) { 10796 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10797 for (int j = 0; j < 10; ++j) 10798 ; 10799 } 10800 #pragma omp for simd 10801 for (int i = 0; i < 10; ++i) { 10802 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10803 for (int j = 0; j < 10; ++j) 10804 ; 10805 } 10806 #pragma omp for simd 10807 for (int i = 0; i < 10; ++i) { 10808 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10809 for (int j = 0; j < 10; ++j) 10810 ; 10811 } 10812 #pragma omp for simd 10813 for (int i = 0; i < 10; ++i) { 10814 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10815 for (int j = 0; j < 10; ++j) 10816 ; 10817 } 10818 #pragma omp for simd 10819 for (int i = 0; i < 10; ++i) { 10820 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10821 for (int j = 0; j < 10; ++j) 10822 ; 10823 } 10824 #pragma omp for simd 10825 for (int i = 0; i < 10; ++i) { 10826 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10827 for (int j = 0; j < 10; ++j) 10828 ; 10829 } 10830 #pragma omp for simd 10831 for (int i = 0; i < 10; ++i) { 10832 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10833 for (int j = 0; j < 10; ++j) 10834 ; 10835 } 10836 #pragma omp for simd 10837 for (int i = 0; i < 10; ++i) { 10838 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10839 a++; 10840 } 10841 #pragma omp for simd 10842 for (int i = 0; i < 10; ++i) { 10843 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10844 for (int j = 0; j < 10; ++j) 10845 ; 10846 } 10847 #pragma omp for simd 10848 for (int i = 0; i < 10; ++i) { 10849 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10850 for (int j = 0; j < 10; ++j) 10851 ; 10852 } 10853 #pragma omp for simd 10854 for (int i = 0; i < 10; ++i) { 10855 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10856 for (int j = 0; j < 10; ++j) 10857 ; 10858 } 10859 #pragma omp for simd 10860 for (int i = 0; i < 10; ++i) { 10861 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10862 for (int j = 0; j < 10; ++j) 10863 ; 10864 } 10865 10866 // SECTIONS DIRECTIVE 10867 #pragma omp sections 10868 { 10869 #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?}} 10870 for (int i = 0; i < 10; ++i) 10871 ; 10872 } 10873 #pragma omp sections 10874 { 10875 #pragma omp simd 10876 for (int i = 0; i < 10; ++i) 10877 ; 10878 } 10879 #pragma omp sections 10880 { 10881 #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?}} 10882 for (int i = 0; i < 10; ++i) 10883 ; 10884 } 10885 #pragma omp sections 10886 { 10887 #pragma omp parallel 10888 for (int i = 0; i < 10; ++i) 10889 ; 10890 } 10891 #pragma omp sections 10892 { 10893 #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?}} 10894 { 10895 bar(); 10896 } 10897 } 10898 #pragma omp sections 10899 { 10900 #pragma omp section 10901 { 10902 bar(); 10903 } 10904 } 10905 #pragma omp sections 10906 { 10907 #pragma omp critical 10908 bar(); 10909 #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?}} 10910 bar(); 10911 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 10912 bar(); 10913 } 10914 #pragma omp sections 10915 { 10916 #pragma omp parallel 10917 { 10918 #pragma omp single // OK 10919 { 10920 bar(); 10921 } 10922 #pragma omp for // OK 10923 for (int i = 0; i < 10; ++i) 10924 ; 10925 #pragma omp for simd // OK 10926 for (int i = 0; i < 10; ++i) 10927 ; 10928 #pragma omp sections // OK 10929 { 10930 bar(); 10931 } 10932 } 10933 } 10934 #pragma omp sections 10935 { 10936 #pragma omp parallel for 10937 for (int i = 0; i < 10; ++i) 10938 ; 10939 } 10940 #pragma omp sections 10941 { 10942 #pragma omp parallel for simd 10943 for (int i = 0; i < 10; ++i) 10944 ; 10945 } 10946 #pragma omp sections 10947 { 10948 #pragma omp parallel sections 10949 { 10950 bar(); 10951 } 10952 } 10953 #pragma omp sections 10954 { 10955 #pragma omp task 10956 { 10957 bar(); 10958 } 10959 } 10960 #pragma omp sections 10961 { 10962 #pragma omp taskyield 10963 } 10964 #pragma omp sections 10965 { 10966 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 10967 bar(); 10968 } 10969 #pragma omp sections 10970 { 10971 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}} 10972 bar(); 10973 } 10974 #pragma omp sections 10975 { 10976 #pragma omp taskwait 10977 } 10978 #pragma omp sections 10979 { 10980 #pragma omp flush 10981 } 10982 #pragma omp sections 10983 { 10984 #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?}} 10985 bar(); 10986 } 10987 #pragma omp sections 10988 { 10989 #pragma omp atomic 10990 ++a; 10991 } 10992 #pragma omp sections 10993 { 10994 #pragma omp target 10995 ++a; 10996 } 10997 #pragma omp sections 10998 { 10999 #pragma omp target parallel 11000 ++a; 11001 } 11002 #pragma omp sections 11003 { 11004 #pragma omp target parallel for 11005 for (int i = 0; i < 10; ++i) 11006 ; 11007 } 11008 #pragma omp sections 11009 { 11010 #pragma omp target enter data map(to: a) 11011 } 11012 #pragma omp sections 11013 { 11014 #pragma omp target exit data map(from: a) 11015 } 11016 #pragma omp sections 11017 { 11018 #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?}} 11019 ++a; 11020 } 11021 #pragma omp sections 11022 { 11023 #pragma omp taskloop 11024 for (int i = 0; i < 10; ++i) 11025 ++a; 11026 } 11027 #pragma omp sections 11028 { 11029 #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?}} 11030 for (int i = 0; i < 10; ++i) 11031 ; 11032 } 11033 #pragma omp sections 11034 { 11035 #pragma omp target update to(a) 11036 } 11037 #pragma omp sections 11038 { 11039 #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?}} 11040 for (int i = 0; i < 10; ++i) 11041 ; 11042 } 11043 #pragma omp sections 11044 { 11045 #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?}} 11046 for (int i = 0; i < 10; ++i) 11047 ; 11048 } 11049 #pragma omp sections 11050 { 11051 #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?}} 11052 for (int i = 0; i < 10; ++i) 11053 ; 11054 } 11055 #pragma omp sections 11056 { 11057 #pragma omp target simd // OK 11058 for (int i = 0; i < 10; ++i) 11059 ; 11060 } 11061 #pragma omp sections 11062 { 11063 #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?}} 11064 for (int i = 0; i < 10; ++i) 11065 ; 11066 } 11067 #pragma omp sections 11068 { 11069 #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?}} 11070 for (int i = 0; i < 10; ++i) 11071 ; 11072 } 11073 #pragma omp sections 11074 { 11075 #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?}} 11076 for (int i = 0; i < 10; ++i) 11077 ; 11078 } 11079 #pragma omp sections 11080 { 11081 #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?}} 11082 for (int i = 0; i < 10; ++i) 11083 ; 11084 } 11085 #pragma omp sections 11086 { 11087 #pragma omp target teams // OK 11088 a++; 11089 } 11090 #pragma omp sections 11091 { 11092 #pragma omp target teams distribute // OK 11093 for (int i = 0; i < 10; ++i) 11094 ; 11095 } 11096 #pragma omp sections 11097 { 11098 #pragma omp target teams distribute parallel for // OK 11099 for (int i = 0; i < 10; ++i) 11100 ; 11101 } 11102 #pragma omp sections 11103 { 11104 #pragma omp target teams distribute parallel for simd // OK 11105 for (int i = 0; i < 10; ++i) 11106 ; 11107 } 11108 #pragma omp sections 11109 { 11110 #pragma omp target teams distribute simd // OK 11111 for (int i = 0; i < 10; ++i) 11112 ; 11113 } 11114 11115 // SECTION DIRECTIVE 11116 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 11117 { 11118 bar(); 11119 } 11120 #pragma omp sections 11121 { 11122 #pragma omp section 11123 { 11124 #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?}} 11125 for (int i = 0; i < 10; ++i) 11126 ; 11127 } 11128 } 11129 #pragma omp sections 11130 { 11131 #pragma omp section 11132 { 11133 #pragma omp simd 11134 for (int i = 0; i < 10; ++i) 11135 ; 11136 } 11137 } 11138 #pragma omp sections 11139 { 11140 #pragma omp section 11141 { 11142 #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?}} 11143 for (int i = 0; i < 10; ++i) 11144 ; 11145 } 11146 } 11147 #pragma omp sections 11148 { 11149 #pragma omp section 11150 { 11151 #pragma omp parallel 11152 for (int i = 0; i < 10; ++i) 11153 ; 11154 } 11155 } 11156 #pragma omp sections 11157 { 11158 #pragma omp section 11159 { 11160 #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?}} 11161 { 11162 bar(); 11163 } 11164 } 11165 } 11166 #pragma omp sections 11167 { 11168 #pragma omp section 11169 { 11170 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 11171 { 11172 bar(); 11173 } 11174 } 11175 } 11176 #pragma omp sections 11177 { 11178 #pragma omp section 11179 { 11180 #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?}} 11181 bar(); 11182 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 11183 bar(); 11184 #pragma omp critical 11185 bar(); 11186 } 11187 } 11188 #pragma omp sections 11189 { 11190 #pragma omp section 11191 { 11192 #pragma omp parallel 11193 { 11194 #pragma omp single // OK 11195 { 11196 bar(); 11197 } 11198 #pragma omp for // OK 11199 for (int i = 0; i < 10; ++i) 11200 ; 11201 #pragma omp for simd // OK 11202 for (int i = 0; i < 10; ++i) 11203 ; 11204 #pragma omp sections // OK 11205 { 11206 bar(); 11207 } 11208 } 11209 } 11210 } 11211 #pragma omp sections 11212 { 11213 #pragma omp section 11214 { 11215 #pragma omp parallel for 11216 for (int i = 0; i < 10; ++i) 11217 ; 11218 } 11219 } 11220 #pragma omp sections 11221 { 11222 #pragma omp section 11223 { 11224 #pragma omp parallel for simd 11225 for (int i = 0; i < 10; ++i) 11226 ; 11227 } 11228 } 11229 #pragma omp sections 11230 { 11231 #pragma omp section 11232 { 11233 #pragma omp parallel sections 11234 { 11235 bar(); 11236 } 11237 } 11238 } 11239 #pragma omp sections 11240 { 11241 #pragma omp section 11242 { 11243 #pragma omp task 11244 { 11245 bar(); 11246 } 11247 } 11248 } 11249 #pragma omp sections 11250 { 11251 #pragma omp section 11252 { 11253 #pragma omp taskyield 11254 bar(); 11255 } 11256 } 11257 #pragma omp sections 11258 { 11259 #pragma omp section 11260 { 11261 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 11262 bar(); 11263 } 11264 } 11265 #pragma omp sections 11266 { 11267 #pragma omp section 11268 { 11269 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}} 11270 bar(); 11271 } 11272 } 11273 #pragma omp sections 11274 { 11275 #pragma omp section 11276 { 11277 #pragma omp taskwait 11278 bar(); 11279 } 11280 } 11281 #pragma omp sections 11282 { 11283 #pragma omp section 11284 { 11285 #pragma omp flush 11286 bar(); 11287 } 11288 } 11289 #pragma omp sections 11290 { 11291 #pragma omp section 11292 { 11293 #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?}} 11294 bar(); 11295 } 11296 } 11297 #pragma omp sections 11298 { 11299 #pragma omp section 11300 { 11301 #pragma omp atomic 11302 ++a; 11303 } 11304 } 11305 #pragma omp sections 11306 { 11307 #pragma omp section 11308 { 11309 #pragma omp target 11310 ++a; 11311 } 11312 } 11313 #pragma omp sections 11314 { 11315 #pragma omp section 11316 { 11317 #pragma omp target parallel 11318 ++a; 11319 } 11320 } 11321 #pragma omp sections 11322 { 11323 #pragma omp section 11324 { 11325 #pragma omp target parallel for 11326 for (int i = 0; i < 10; ++i) 11327 ; 11328 } 11329 } 11330 #pragma omp sections 11331 { 11332 #pragma omp section 11333 { 11334 #pragma omp target enter data map(to: a) 11335 ++a; 11336 } 11337 } 11338 #pragma omp sections 11339 { 11340 #pragma omp section 11341 { 11342 #pragma omp target exit data map(from: a) 11343 ++a; 11344 } 11345 } 11346 #pragma omp sections 11347 { 11348 #pragma omp section 11349 { 11350 #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?}} 11351 ++a; 11352 } 11353 } 11354 #pragma omp sections 11355 { 11356 #pragma omp section 11357 { 11358 #pragma omp taskloop 11359 for (int i = 0; i < 10; ++i) 11360 ++a; 11361 } 11362 } 11363 #pragma omp sections 11364 { 11365 #pragma omp section 11366 #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?}} 11367 for (int i = 0; i < 10; ++i) 11368 ; 11369 } 11370 #pragma omp sections 11371 { 11372 #pragma omp section 11373 { 11374 #pragma omp target update to(a) 11375 a++; 11376 } 11377 } 11378 #pragma omp sections 11379 { 11380 #pragma omp section 11381 #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?}} 11382 for (int i = 0; i < 10; ++i) 11383 ; 11384 } 11385 #pragma omp sections 11386 { 11387 #pragma omp section 11388 #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?}} 11389 for (int i = 0; i < 10; ++i) 11390 ; 11391 } 11392 #pragma omp sections 11393 { 11394 #pragma omp section 11395 #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?}} 11396 for (int i = 0; i < 10; ++i) 11397 ; 11398 } 11399 #pragma omp sections 11400 { 11401 #pragma omp section 11402 #pragma omp target simd // OK 11403 for (int i = 0; i < 10; ++i) 11404 ; 11405 } 11406 #pragma omp sections 11407 { 11408 #pragma omp section 11409 #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?}} 11410 for (int i = 0; i < 10; ++i) 11411 ; 11412 } 11413 #pragma omp sections 11414 { 11415 #pragma omp section 11416 #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?}} 11417 for (int i = 0; i < 10; ++i) 11418 ; 11419 } 11420 #pragma omp sections 11421 { 11422 #pragma omp section 11423 #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?}} 11424 for (int i = 0; i < 10; ++i) 11425 ; 11426 } 11427 #pragma omp sections 11428 { 11429 #pragma omp section 11430 #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?}} 11431 for (int i = 0; i < 10; ++i) 11432 ; 11433 } 11434 #pragma omp sections 11435 { 11436 #pragma omp section 11437 #pragma omp target teams // OK 11438 a++; 11439 } 11440 #pragma omp sections 11441 { 11442 #pragma omp section 11443 #pragma omp target teams distribute // OK 11444 for (int i = 0; i < 10; ++i) 11445 ; 11446 } 11447 #pragma omp sections 11448 { 11449 #pragma omp section 11450 #pragma omp target teams distribute parallel for // OK 11451 for (int i = 0; i < 10; ++i) 11452 ; 11453 } 11454 #pragma omp sections 11455 { 11456 #pragma omp section 11457 #pragma omp target teams distribute parallel for simd // OK 11458 for (int i = 0; i < 10; ++i) 11459 ; 11460 } 11461 #pragma omp sections 11462 { 11463 #pragma omp section 11464 #pragma omp target teams distribute simd // OK 11465 for (int i = 0; i < 10; ++i) 11466 ; 11467 } 11468 11469 // SINGLE DIRECTIVE 11470 #pragma omp single 11471 { 11472 #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?}} 11473 for (int i = 0; i < 10; ++i) 11474 ; 11475 } 11476 #pragma omp single 11477 { 11478 #pragma omp simd 11479 for (int i = 0; i < 10; ++i) 11480 ; 11481 } 11482 #pragma omp single 11483 { 11484 #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?}} 11485 for (int i = 0; i < 10; ++i) 11486 ; 11487 } 11488 #pragma omp single 11489 { 11490 #pragma omp parallel 11491 for (int i = 0; i < 10; ++i) 11492 ; 11493 } 11494 #pragma omp single 11495 { 11496 #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?}} 11497 { 11498 bar(); 11499 } 11500 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 11501 bar(); 11502 #pragma omp critical 11503 bar(); 11504 } 11505 #pragma omp single 11506 { 11507 #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?}} 11508 { 11509 bar(); 11510 } 11511 } 11512 #pragma omp single 11513 { 11514 #pragma omp parallel 11515 { 11516 #pragma omp single // OK 11517 { 11518 bar(); 11519 } 11520 #pragma omp for // OK 11521 for (int i = 0; i < 10; ++i) 11522 ; 11523 #pragma omp for simd // OK 11524 for (int i = 0; i < 10; ++i) 11525 ; 11526 #pragma omp sections // OK 11527 { 11528 bar(); 11529 } 11530 } 11531 } 11532 #pragma omp single 11533 { 11534 #pragma omp parallel for 11535 for (int i = 0; i < 10; ++i) 11536 ; 11537 } 11538 #pragma omp single 11539 { 11540 #pragma omp parallel for simd 11541 for (int i = 0; i < 10; ++i) 11542 ; 11543 } 11544 #pragma omp single 11545 { 11546 #pragma omp parallel sections 11547 { 11548 bar(); 11549 } 11550 } 11551 #pragma omp single 11552 { 11553 #pragma omp task 11554 { 11555 bar(); 11556 } 11557 } 11558 #pragma omp single 11559 { 11560 #pragma omp taskyield 11561 bar(); 11562 } 11563 #pragma omp single 11564 { 11565 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 11566 bar(); 11567 } 11568 #pragma omp single 11569 { 11570 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}} 11571 bar(); 11572 } 11573 #pragma omp single 11574 { 11575 #pragma omp taskwait 11576 bar(); 11577 } 11578 #pragma omp single 11579 { 11580 #pragma omp flush 11581 bar(); 11582 } 11583 #pragma omp single 11584 { 11585 #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?}} 11586 bar(); 11587 } 11588 #pragma omp single 11589 { 11590 #pragma omp atomic 11591 ++a; 11592 } 11593 #pragma omp single 11594 { 11595 #pragma omp target 11596 ++a; 11597 } 11598 #pragma omp single 11599 { 11600 #pragma omp target parallel 11601 ++a; 11602 } 11603 #pragma omp single 11604 { 11605 #pragma omp target parallel for 11606 for (int i = 0; i < 10; ++i) 11607 ; 11608 } 11609 #pragma omp single 11610 { 11611 #pragma omp target enter data map(to: a) 11612 ++a; 11613 } 11614 #pragma omp single 11615 { 11616 #pragma omp target exit data map(from: a) 11617 ++a; 11618 } 11619 #pragma omp single 11620 { 11621 #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?}} 11622 ++a; 11623 } 11624 #pragma omp single 11625 { 11626 #pragma omp taskloop 11627 for (int i = 0; i < 10; ++i) 11628 ++a; 11629 } 11630 #pragma omp single 11631 { 11632 #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?}} 11633 for (int i = 0; i < 10; ++i) 11634 ; 11635 } 11636 #pragma omp single 11637 { 11638 #pragma omp target update to(a) 11639 a++; 11640 } 11641 #pragma omp single 11642 { 11643 #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?}} 11644 for (int i = 0; i < 10; ++i) 11645 ; 11646 } 11647 #pragma omp single 11648 { 11649 #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?}} 11650 for (int i = 0; i < 10; ++i) 11651 ; 11652 } 11653 #pragma omp single 11654 { 11655 #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?}} 11656 for (int i = 0; i < 10; ++i) 11657 ; 11658 } 11659 #pragma omp single 11660 { 11661 #pragma omp target simd // OK 11662 for (int i = 0; i < 10; ++i) 11663 ; 11664 } 11665 #pragma omp single 11666 { 11667 #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?}} 11668 for (int i = 0; i < 10; ++i) 11669 ; 11670 } 11671 #pragma omp single 11672 { 11673 #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?}} 11674 for (int i = 0; i < 10; ++i) 11675 ; 11676 } 11677 #pragma omp single 11678 { 11679 #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?}} 11680 for (int i = 0; i < 10; ++i) 11681 ; 11682 } 11683 #pragma omp single 11684 { 11685 #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?}} 11686 for (int i = 0; i < 10; ++i) 11687 ; 11688 } 11689 #pragma omp single 11690 { 11691 #pragma omp target teams // oK 11692 a++; 11693 } 11694 #pragma omp single 11695 { 11696 #pragma omp target teams distribute // OK 11697 for (int i = 0; i < 10; ++i) 11698 ; 11699 } 11700 #pragma omp single 11701 { 11702 #pragma omp target teams distribute parallel for // OK 11703 for (int i = 0; i < 10; ++i) 11704 ; 11705 } 11706 #pragma omp single 11707 { 11708 #pragma omp target teams distribute parallel for simd // OK 11709 for (int i = 0; i < 10; ++i) 11710 ; 11711 } 11712 #pragma omp single 11713 { 11714 #pragma omp target teams distribute simd // OK 11715 for (int i = 0; i < 10; ++i) 11716 ; 11717 } 11718 11719 // MASTER DIRECTIVE 11720 #pragma omp master 11721 { 11722 #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?}} 11723 for (int i = 0; i < 10; ++i) 11724 ; 11725 } 11726 #pragma omp master 11727 { 11728 #pragma omp simd 11729 for (int i = 0; i < 10; ++i) 11730 ; 11731 } 11732 #pragma omp master 11733 { 11734 #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?}} 11735 for (int i = 0; i < 10; ++i) 11736 ; 11737 } 11738 #pragma omp master 11739 { 11740 #pragma omp parallel 11741 for (int i = 0; i < 10; ++i) 11742 ; 11743 } 11744 #pragma omp parallel master 11745 { 11746 for (int i = 0; i < 10; ++i) 11747 ; 11748 } 11749 #pragma omp master 11750 { 11751 #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?}} 11752 { 11753 bar(); 11754 } 11755 } 11756 #pragma omp master 11757 { 11758 #pragma omp master // OK, though second 'master' is redundant 11759 { 11760 bar(); 11761 } 11762 } 11763 #pragma omp master 11764 { 11765 #pragma omp critical 11766 { 11767 bar(); 11768 } 11769 } 11770 #pragma omp master 11771 { 11772 #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?}} 11773 { 11774 bar(); 11775 } 11776 } 11777 #pragma omp master 11778 { 11779 #pragma omp parallel 11780 { 11781 #pragma omp master // OK 11782 { 11783 bar(); 11784 } 11785 #pragma omp for // OK 11786 for (int i = 0; i < 10; ++i) 11787 ; 11788 #pragma omp for simd // OK 11789 for (int i = 0; i < 10; ++i) 11790 ; 11791 #pragma omp sections // OK 11792 { 11793 bar(); 11794 } 11795 } 11796 } 11797 #pragma omp master 11798 { 11799 #pragma omp parallel master 11800 { 11801 bar(); 11802 } 11803 } 11804 #pragma omp master 11805 { 11806 #pragma omp parallel for 11807 for (int i = 0; i < 10; ++i) 11808 ; 11809 } 11810 #pragma omp master 11811 { 11812 #pragma omp parallel for simd 11813 for (int i = 0; i < 10; ++i) 11814 ; 11815 } 11816 #pragma omp master 11817 { 11818 #pragma omp parallel sections 11819 { 11820 bar(); 11821 } 11822 } 11823 #pragma omp master 11824 { 11825 #pragma omp task 11826 { 11827 bar(); 11828 } 11829 } 11830 #pragma omp master 11831 { 11832 #pragma omp taskyield 11833 bar(); 11834 } 11835 #pragma omp master 11836 { 11837 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 11838 bar(); 11839 } 11840 #pragma omp master 11841 { 11842 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}} 11843 bar(); 11844 } 11845 #pragma omp master 11846 { 11847 #pragma omp taskwait 11848 bar(); 11849 } 11850 #pragma omp master 11851 { 11852 #pragma omp flush 11853 bar(); 11854 } 11855 #pragma omp master 11856 { 11857 #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?}} 11858 bar(); 11859 } 11860 #pragma omp master 11861 { 11862 #pragma omp atomic 11863 ++a; 11864 } 11865 #pragma omp master 11866 { 11867 #pragma omp target 11868 ++a; 11869 } 11870 #pragma omp master 11871 { 11872 #pragma omp target parallel 11873 ++a; 11874 } 11875 #pragma omp master 11876 { 11877 #pragma omp target parallel for 11878 for (int i = 0; i < 10; ++i) 11879 ; 11880 } 11881 #pragma omp master 11882 { 11883 #pragma omp target enter data map(to: a) 11884 ++a; 11885 } 11886 #pragma omp master 11887 { 11888 #pragma omp target exit data map(from: a) 11889 ++a; 11890 } 11891 #pragma omp master 11892 { 11893 #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?}} 11894 ++a; 11895 } 11896 #pragma omp master 11897 { 11898 #pragma omp taskloop 11899 for (int i = 0; i < 10; ++i) 11900 ++a; 11901 } 11902 #pragma omp master 11903 { 11904 #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?}} 11905 for (int i = 0; i < 10; ++i) 11906 ; 11907 } 11908 #pragma omp master 11909 { 11910 #pragma omp target update to(a) 11911 ++a; 11912 } 11913 #pragma omp master 11914 { 11915 #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?}} 11916 for (int i = 0; i < 10; ++i) 11917 ; 11918 } 11919 #pragma omp master 11920 { 11921 #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?}} 11922 for (int i = 0; i < 10; ++i) 11923 ; 11924 } 11925 #pragma omp master 11926 { 11927 #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?}} 11928 for (int i = 0; i < 10; ++i) 11929 ; 11930 } 11931 #pragma omp master 11932 { 11933 #pragma omp target simd // OK 11934 for (int i = 0; i < 10; ++i) 11935 ; 11936 } 11937 #pragma omp master 11938 { 11939 #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?}} 11940 for (int i = 0; i < 10; ++i) 11941 ; 11942 } 11943 #pragma omp master 11944 { 11945 #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?}} 11946 for (int i = 0; i < 10; ++i) 11947 ; 11948 } 11949 #pragma omp master 11950 { 11951 #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?}} 11952 for (int i = 0; i < 10; ++i) 11953 ; 11954 } 11955 #pragma omp master 11956 { 11957 #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?}} 11958 for (int i = 0; i < 10; ++i) 11959 ; 11960 } 11961 #pragma omp master 11962 { 11963 #pragma omp target teams // OK 11964 a++; 11965 } 11966 #pragma omp master 11967 { 11968 #pragma omp target teams distribute // OK 11969 for (int i = 0; i < 10; ++i) 11970 ; 11971 } 11972 #pragma omp master 11973 { 11974 #pragma omp target teams distribute parallel for // OK 11975 for (int i = 0; i < 10; ++i) 11976 ; 11977 } 11978 #pragma omp master 11979 { 11980 #pragma omp target teams distribute parallel for simd // OK 11981 for (int i = 0; i < 10; ++i) 11982 ; 11983 } 11984 #pragma omp master 11985 { 11986 #pragma omp target teams distribute simd // OK 11987 for (int i = 0; i < 10; ++i) 11988 ; 11989 } 11990 11991 // CRITICAL DIRECTIVE 11992 #pragma omp critical 11993 { 11994 #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?}} 11995 for (int i = 0; i < 10; ++i) 11996 ; 11997 } 11998 #pragma omp critical 11999 { 12000 #pragma omp simd 12001 for (int i = 0; i < 10; ++i) 12002 ; 12003 } 12004 #pragma omp critical 12005 { 12006 #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?}} 12007 for (int i = 0; i < 10; ++i) 12008 ; 12009 } 12010 #pragma omp critical 12011 { 12012 #pragma omp parallel 12013 for (int i = 0; i < 10; ++i) 12014 ; 12015 } 12016 #pragma omp critical 12017 { 12018 #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?}} 12019 { 12020 bar(); 12021 } 12022 } 12023 #pragma omp critical 12024 { 12025 #pragma omp master // OK, though second 'master' is redundant 12026 { 12027 bar(); 12028 } 12029 } 12030 #pragma omp critical 12031 { 12032 #pragma omp critical 12033 { 12034 bar(); 12035 } 12036 } 12037 #pragma omp critical 12038 { 12039 #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?}} 12040 { 12041 bar(); 12042 } 12043 } 12044 #pragma omp critical 12045 { 12046 #pragma omp parallel 12047 { 12048 #pragma omp master // OK 12049 { 12050 bar(); 12051 } 12052 #pragma omp for // OK 12053 for (int i = 0; i < 10; ++i) 12054 ; 12055 #pragma omp for simd // OK 12056 for (int i = 0; i < 10; ++i) 12057 ; 12058 #pragma omp sections // OK 12059 { 12060 bar(); 12061 } 12062 } 12063 } 12064 #pragma omp critical 12065 { 12066 #pragma omp parallel for 12067 for (int i = 0; i < 10; ++i) 12068 ; 12069 } 12070 #pragma omp critical 12071 { 12072 #pragma omp parallel for simd 12073 for (int i = 0; i < 10; ++i) 12074 ; 12075 } 12076 #pragma omp critical 12077 { 12078 #pragma omp parallel sections 12079 { 12080 bar(); 12081 } 12082 } 12083 #pragma omp critical 12084 { 12085 #pragma omp task 12086 { 12087 bar(); 12088 } 12089 } 12090 #pragma omp critical 12091 { 12092 #pragma omp taskyield 12093 bar(); 12094 } 12095 #pragma omp critical 12096 { 12097 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 12098 bar(); 12099 } 12100 #pragma omp critical 12101 { 12102 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}} 12103 bar(); 12104 } 12105 #pragma omp critical 12106 { 12107 #pragma omp taskwait 12108 bar(); 12109 } 12110 #pragma omp critical(Belka) 12111 { 12112 #pragma omp critical(Strelka) 12113 bar(); 12114 } 12115 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 12116 { 12117 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 12118 { 12119 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 12120 { 12121 #pragma omp parallel 12122 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 12123 { 12124 bar(); 12125 } 12126 } 12127 } 12128 } 12129 #pragma omp critical 12130 { 12131 #pragma omp flush 12132 bar(); 12133 } 12134 #pragma omp critical 12135 { 12136 #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?}} 12137 bar(); 12138 } 12139 #pragma omp critical 12140 { 12141 #pragma omp atomic 12142 ++a; 12143 } 12144 #pragma omp critical 12145 { 12146 #pragma omp target 12147 ++a; 12148 } 12149 #pragma omp critical 12150 { 12151 #pragma omp target parallel 12152 ++a; 12153 } 12154 #pragma omp critical 12155 { 12156 #pragma omp target parallel for 12157 for (int i = 0; i < 10; ++i) 12158 ; 12159 } 12160 #pragma omp critical 12161 { 12162 #pragma omp target enter data map(to: a) 12163 ++a; 12164 } 12165 #pragma omp critical 12166 { 12167 #pragma omp target exit data map(from: a) 12168 ++a; 12169 } 12170 #pragma omp critical 12171 { 12172 #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?}} 12173 ++a; 12174 } 12175 #pragma omp critical 12176 { 12177 #pragma omp taskloop 12178 for (int i = 0; i < 10; ++i) 12179 ++a; 12180 } 12181 #pragma omp critical 12182 { 12183 #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?}} 12184 for (int i = 0; i < 10; ++i) 12185 ; 12186 } 12187 #pragma omp critical 12188 { 12189 #pragma omp target update to(a) 12190 a++; 12191 } 12192 #pragma omp critical 12193 { 12194 #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?}} 12195 for (int i = 0; i < 10; ++i) 12196 ; 12197 } 12198 #pragma omp critical 12199 { 12200 #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?}} 12201 for (int i = 0; i < 10; ++i) 12202 ; 12203 } 12204 #pragma omp critical 12205 { 12206 #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?}} 12207 for (int i = 0; i < 10; ++i) 12208 ; 12209 } 12210 #pragma omp critical 12211 { 12212 #pragma omp target simd // OK 12213 for (int i = 0; i < 10; ++i) 12214 ; 12215 } 12216 #pragma omp critical 12217 { 12218 #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?}} 12219 for (int i = 0; i < 10; ++i) 12220 ; 12221 } 12222 #pragma omp critical 12223 { 12224 #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?}} 12225 for (int i = 0; i < 10; ++i) 12226 ; 12227 } 12228 #pragma omp critical 12229 { 12230 #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?}} 12231 for (int i = 0; i < 10; ++i) 12232 ; 12233 } 12234 #pragma omp critical 12235 { 12236 #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?}} 12237 for (int i = 0; i < 10; ++i) 12238 ; 12239 } 12240 #pragma omp critical 12241 { 12242 #pragma omp target teams // OK 12243 a++; 12244 } 12245 #pragma omp critical 12246 { 12247 #pragma omp target teams distribute // OK 12248 for (int i = 0; i < 10; ++i) 12249 ; 12250 } 12251 #pragma omp critical 12252 { 12253 #pragma omp target teams distribute parallel for // OK 12254 for (int i = 0; i < 10; ++i) 12255 ; 12256 } 12257 #pragma omp critical 12258 { 12259 #pragma omp target teams distribute parallel for simd // OK 12260 for (int i = 0; i < 10; ++i) 12261 ; 12262 } 12263 #pragma omp critical 12264 { 12265 #pragma omp target teams distribute simd // OK 12266 for (int i = 0; i < 10; ++i) 12267 ; 12268 } 12269 12270 // PARALLEL FOR DIRECTIVE 12271 #pragma omp parallel for 12272 for (int i = 0; i < 10; ++i) { 12273 #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?}} 12274 for (int i = 0; i < 10; ++i) 12275 ; 12276 } 12277 #pragma omp parallel for 12278 for (int i = 0; i < 10; ++i) { 12279 #pragma omp simd 12280 for (int i = 0; i < 10; ++i) 12281 ; 12282 } 12283 #pragma omp parallel for 12284 for (int i = 0; i < 10; ++i) { 12285 #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?}} 12286 for (int i = 0; i < 10; ++i) 12287 ; 12288 } 12289 12290 #pragma omp parallel for 12291 for (int i = 0; i < 10; ++i) { 12292 #pragma omp parallel 12293 for (int i = 0; i < 10; ++i) 12294 ; 12295 } 12296 #pragma omp parallel for 12297 for (int i = 0; i < 10; ++i) { 12298 #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?}} 12299 { 12300 bar(); 12301 } 12302 } 12303 #pragma omp parallel for 12304 for (int i = 0; i < 10; ++i) { 12305 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 12306 { 12307 bar(); 12308 } 12309 } 12310 #pragma omp parallel for 12311 for (int i = 0; i < 10; ++i) { 12312 #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?}} 12313 { 12314 bar(); 12315 } 12316 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 12317 { 12318 bar(); 12319 } 12320 #pragma omp critical 12321 { 12322 bar(); 12323 } 12324 } 12325 #pragma omp parallel for 12326 for (int i = 0; i < 10; ++i) { 12327 #pragma omp parallel 12328 { 12329 #pragma omp single // OK 12330 { 12331 bar(); 12332 } 12333 #pragma omp master // OK 12334 { 12335 bar(); 12336 } 12337 #pragma omp critical // OK 12338 { 12339 bar(); 12340 } 12341 #pragma omp for // OK 12342 for (int i = 0; i < 10; ++i) 12343 ; 12344 #pragma omp for simd // OK 12345 for (int i = 0; i < 10; ++i) 12346 ; 12347 #pragma omp sections // OK 12348 { 12349 bar(); 12350 } 12351 } 12352 } 12353 #pragma omp parallel for 12354 for (int i = 0; i < 10; ++i) { 12355 #pragma omp parallel for 12356 for (int i = 0; i < 10; ++i) 12357 ; 12358 } 12359 #pragma omp parallel for 12360 for (int i = 0; i < 10; ++i) { 12361 #pragma omp parallel for simd 12362 for (int i = 0; i < 10; ++i) 12363 ; 12364 } 12365 #pragma omp parallel for 12366 for (int i = 0; i < 10; ++i) { 12367 #pragma omp parallel sections 12368 { 12369 bar(); 12370 } 12371 } 12372 #pragma omp parallel for 12373 for (int i = 0; i < 10; ++i) { 12374 #pragma omp task 12375 { 12376 bar(); 12377 } 12378 } 12379 #pragma omp parallel for 12380 for (int i = 0; i < 10; ++i) { 12381 #pragma omp taskyield 12382 bar(); 12383 } 12384 #pragma omp parallel for 12385 for (int i = 0; i < 10; ++i) { 12386 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 12387 bar(); 12388 } 12389 #pragma omp parallel for 12390 for (int i = 0; i < 10; ++i) { 12391 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 12392 bar(); 12393 } 12394 #pragma omp parallel for 12395 for (int i = 0; i < 10; ++i) { 12396 #pragma omp taskwait 12397 bar(); 12398 } 12399 #pragma omp parallel for 12400 for (int i = 0; i < 10; ++i) { 12401 #pragma omp flush 12402 bar(); 12403 } 12404 #pragma omp parallel for 12405 for (int i = 0; i < 10; ++i) { 12406 #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?}} 12407 bar(); 12408 } 12409 #pragma omp parallel for ordered 12410 for (int i = 0; i < 10; ++i) { 12411 #pragma omp ordered // OK 12412 bar(); 12413 } 12414 #pragma omp parallel for 12415 for (int i = 0; i < 10; ++i) { 12416 #pragma omp atomic 12417 ++a; 12418 } 12419 #pragma omp parallel for 12420 for (int i = 0; i < 10; ++i) { 12421 #pragma omp target 12422 ++a; 12423 } 12424 #pragma omp parallel for 12425 for (int i = 0; i < 10; ++i) { 12426 #pragma omp target parallel 12427 ++a; 12428 } 12429 #pragma omp parallel for 12430 for (int i = 0; i < 10; ++i) { 12431 #pragma omp target parallel for 12432 for (int i = 0; i < 10; ++i) 12433 ; 12434 } 12435 #pragma omp parallel for 12436 for (int i = 0; i < 10; ++i) { 12437 #pragma omp target enter data map(to: a) 12438 ++a; 12439 } 12440 #pragma omp parallel for 12441 for (int i = 0; i < 10; ++i) { 12442 #pragma omp target exit data map(from: a) 12443 ++a; 12444 } 12445 #pragma omp parallel for 12446 for (int i = 0; i < 10; ++i) { 12447 #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?}} 12448 ++a; 12449 } 12450 #pragma omp parallel for 12451 for (int i = 0; i < 10; ++i) { 12452 #pragma omp taskloop 12453 for (int i = 0; i < 10; ++i) 12454 ++a; 12455 } 12456 #pragma omp parallel for 12457 for (int i = 0; i < 10; ++i) { 12458 #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?}} 12459 for (int j = 0; j < 10; ++j) 12460 ; 12461 } 12462 #pragma omp parallel for 12463 for (int i = 0; i < 10; ++i) { 12464 #pragma omp target update to(a) 12465 a++; 12466 } 12467 #pragma omp parallel for 12468 for (int i = 0; i < 10; ++i) { 12469 #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?}} 12470 for (int j = 0; j < 10; ++j) 12471 ; 12472 } 12473 #pragma omp parallel for 12474 for (int i = 0; i < 10; ++i) { 12475 #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?}} 12476 for (int j = 0; j < 10; ++j) 12477 ; 12478 } 12479 #pragma omp parallel for 12480 for (int i = 0; i < 10; ++i) { 12481 #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?}} 12482 for (int j = 0; j < 10; ++j) 12483 ; 12484 } 12485 #pragma omp parallel for 12486 for (int i = 0; i < 10; ++i) { 12487 #pragma omp target simd // OK 12488 for (int j = 0; j < 10; ++j) 12489 ; 12490 } 12491 #pragma omp parallel for 12492 for (int i = 0; i < 10; ++i) { 12493 #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?}} 12494 for (int j = 0; j < 10; ++j) 12495 ; 12496 } 12497 #pragma omp parallel for 12498 for (int i = 0; i < 10; ++i) { 12499 #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?}} 12500 for (int j = 0; j < 10; ++j) 12501 ; 12502 } 12503 #pragma omp parallel for 12504 for (int i = 0; i < 10; ++i) { 12505 #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?}} 12506 for (int j = 0; j < 10; ++j) 12507 ; 12508 } 12509 #pragma omp parallel for 12510 for (int i = 0; i < 10; ++i) { 12511 #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?}} 12512 for (int j = 0; j < 10; ++j) 12513 ; 12514 } 12515 #pragma omp parallel for 12516 for (int i = 0; i < 10; ++i) { 12517 #pragma omp target teams // OK 12518 a++; 12519 } 12520 #pragma omp parallel for 12521 for (int i = 0; i < 10; ++i) { 12522 #pragma omp target teams distribute // OK 12523 for (int j = 0; j < 10; ++j) 12524 ; 12525 } 12526 #pragma omp parallel for 12527 for (int i = 0; i < 10; ++i) { 12528 #pragma omp target teams distribute parallel for // OK 12529 for (int j = 0; j < 10; ++j) 12530 ; 12531 } 12532 #pragma omp parallel for 12533 for (int i = 0; i < 10; ++i) { 12534 #pragma omp target teams distribute parallel for simd // OK 12535 for (int j = 0; j < 10; ++j) 12536 ; 12537 } 12538 #pragma omp parallel for 12539 for (int i = 0; i < 10; ++i) { 12540 #pragma omp target teams distribute simd // OK 12541 for (int j = 0; j < 10; ++j) 12542 ; 12543 } 12544 12545 // PARALLEL FOR SIMD DIRECTIVE 12546 #pragma omp parallel for simd 12547 for (int i = 0; i < 10; ++i) { 12548 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12549 for (int i = 0; i < 10; ++i) 12550 ; 12551 } 12552 #pragma omp parallel for simd 12553 for (int i = 0; i < 10; ++i) { 12554 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12555 for (int i = 0; i < 10; ++i) 12556 ; 12557 } 12558 #pragma omp parallel for simd 12559 for (int i = 0; i < 10; ++i) { 12560 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12561 for (int i = 0; i < 10; ++i) 12562 ; 12563 } 12564 #pragma omp parallel for simd 12565 for (int i = 0; i < 10; ++i) { 12566 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12567 for (int i = 0; i < 10; ++i) 12568 ; 12569 } 12570 #pragma omp parallel for simd 12571 for (int i = 0; i < 10; ++i) { 12572 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12573 { 12574 bar(); 12575 } 12576 } 12577 #pragma omp parallel for simd 12578 for (int i = 0; i < 10; ++i) { 12579 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12580 { 12581 bar(); 12582 } 12583 } 12584 #pragma omp parallel for simd 12585 for (int i = 0; i < 10; ++i) { 12586 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12587 { 12588 bar(); 12589 } 12590 } 12591 12592 #pragma omp parallel for simd 12593 for (int i = 0; i < 10; ++i) { 12594 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12595 { 12596 bar(); 12597 } 12598 } 12599 12600 #pragma omp parallel for simd 12601 for (int i = 0; i < 10; ++i) { 12602 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12603 { 12604 bar(); 12605 } 12606 } 12607 12608 #pragma omp parallel for simd 12609 for (int i = 0; i < 10; ++i) { 12610 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12611 { 12612 #pragma omp single 12613 { 12614 bar(); 12615 } 12616 #pragma omp for 12617 for (int i = 0; i < 10; ++i) 12618 ; 12619 #pragma omp for simd 12620 for (int i = 0; i < 10; ++i) 12621 ; 12622 #pragma omp sections 12623 { 12624 bar(); 12625 } 12626 } 12627 } 12628 #pragma omp parallel for simd 12629 for (int i = 0; i < 10; ++i) { 12630 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12631 for (int i = 0; i < 10; ++i) 12632 ; 12633 } 12634 #pragma omp parallel for simd 12635 for (int i = 0; i < 10; ++i) { 12636 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 12637 for (int i = 0; i < 10; ++i) 12638 ; 12639 } 12640 #pragma omp parallel for simd 12641 for (int i = 0; i < 10; ++i) { 12642 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12643 { 12644 bar(); 12645 } 12646 } 12647 #pragma omp parallel for simd 12648 for (int i = 0; i < 10; ++i) { 12649 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12650 { 12651 bar(); 12652 } 12653 } 12654 #pragma omp parallel for simd 12655 for (int i = 0; i < 10; ++i) { 12656 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12657 bar(); 12658 } 12659 #pragma omp parallel for simd 12660 for (int i = 0; i < 10; ++i) { 12661 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12662 bar(); 12663 } 12664 #pragma omp parallel for simd 12665 for (int i = 0; i < 10; ++i) { 12666 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 12667 bar(); 12668 } 12669 #pragma omp parallel for simd 12670 for (int i = 0; i < 10; ++i) { 12671 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12672 bar(); 12673 } 12674 #pragma omp parallel for simd 12675 for (int i = 0; i < 10; ++i) { 12676 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12677 bar(); 12678 } 12679 #pragma omp parallel for simd 12680 for (int i = 0; i < 10; ++i) { 12681 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12682 bar(); 12683 } 12684 #pragma omp parallel for simd 12685 for (int i = 0; i < 10; ++i) { 12686 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12687 bar(); 12688 } 12689 #pragma omp parallel for simd 12690 for (int i = 0; i < 10; ++i) { 12691 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 12692 ++a; 12693 } 12694 #pragma omp parallel for simd 12695 for (int i = 0; i < 10; ++i) { 12696 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12697 ++a; 12698 } 12699 #pragma omp parallel for simd 12700 for (int i = 0; i < 10; ++i) { 12701 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12702 ++a; 12703 } 12704 #pragma omp parallel for simd 12705 for (int i = 0; i < 10; ++i) { 12706 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12707 for (int i = 0; i < 10; ++i) 12708 ; 12709 } 12710 #pragma omp parallel for simd 12711 for (int i = 0; i < 10; ++i) { 12712 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12713 ++a; 12714 } 12715 #pragma omp parallel for simd 12716 for (int i = 0; i < 10; ++i) { 12717 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12718 ++a; 12719 } 12720 #pragma omp parallel for simd 12721 for (int i = 0; i < 10; ++i) { 12722 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12723 ++a; 12724 } 12725 #pragma omp parallel for simd 12726 for (int i = 0; i < 10; ++i) { 12727 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12728 for (int i = 0; i < 10; ++i) 12729 ++a; 12730 } 12731 #pragma omp parallel for simd 12732 for (int i = 0; i < 10; ++i) { 12733 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12734 for (int j = 0; j < 10; ++j) 12735 ; 12736 } 12737 #pragma omp parallel for simd 12738 for (int i = 0; i < 10; ++i) { 12739 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12740 a++; 12741 } 12742 #pragma omp parallel for simd 12743 for (int i = 0; i < 10; ++i) { 12744 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12745 for (int j = 0; j < 10; ++j) 12746 ; 12747 } 12748 #pragma omp parallel for simd 12749 for (int i = 0; i < 10; ++i) { 12750 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12751 for (int j = 0; j < 10; ++j) 12752 ; 12753 } 12754 #pragma omp parallel for simd 12755 for (int i = 0; i < 10; ++i) { 12756 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12757 for (int j = 0; j < 10; ++j) 12758 ; 12759 } 12760 #pragma omp parallel for simd 12761 for (int i = 0; i < 10; ++i) { 12762 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12763 for (int j = 0; j < 10; ++j) 12764 ; 12765 } 12766 #pragma omp parallel for simd 12767 for (int i = 0; i < 10; ++i) { 12768 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12769 for (int j = 0; j < 10; ++j) 12770 ; 12771 } 12772 #pragma omp parallel for simd 12773 for (int i = 0; i < 10; ++i) { 12774 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12775 for (int j = 0; j < 10; ++j) 12776 ; 12777 } 12778 #pragma omp parallel for simd 12779 for (int i = 0; i < 10; ++i) { 12780 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12781 for (int j = 0; j < 10; ++j) 12782 ; 12783 } 12784 #pragma omp parallel for simd 12785 for (int i = 0; i < 10; ++i) { 12786 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12787 for (int j = 0; j < 10; ++j) 12788 ; 12789 } 12790 #pragma omp parallel for simd 12791 for (int i = 0; i < 10; ++i) { 12792 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12793 a++; 12794 } 12795 #pragma omp parallel for simd 12796 for (int i = 0; i < 10; ++i) { 12797 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12798 for (int j = 0; j < 10; ++j) 12799 ; 12800 } 12801 #pragma omp parallel for simd 12802 for (int i = 0; i < 10; ++i) { 12803 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12804 for (int j = 0; j < 10; ++j) 12805 ; 12806 } 12807 #pragma omp parallel for simd 12808 for (int i = 0; i < 10; ++i) { 12809 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12810 for (int j = 0; j < 10; ++j) 12811 ; 12812 } 12813 #pragma omp parallel for simd 12814 for (int i = 0; i < 10; ++i) { 12815 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12816 for (int j = 0; j < 10; ++j) 12817 ; 12818 } 12819 12820 // PARALLEL SECTIONS DIRECTIVE 12821 #pragma omp parallel sections 12822 { 12823 #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?}} 12824 for (int i = 0; i < 10; ++i) 12825 ; 12826 } 12827 #pragma omp parallel sections 12828 { 12829 #pragma omp simd 12830 for (int i = 0; i < 10; ++i) 12831 ; 12832 } 12833 #pragma omp parallel sections 12834 { 12835 #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?}} 12836 for (int i = 0; i < 10; ++i) 12837 ; 12838 } 12839 #pragma omp parallel sections 12840 { 12841 #pragma omp parallel 12842 for (int i = 0; i < 10; ++i) 12843 ; 12844 } 12845 #pragma omp parallel sections 12846 { 12847 #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?}} 12848 { 12849 bar(); 12850 } 12851 } 12852 #pragma omp parallel sections 12853 { 12854 #pragma omp section 12855 { 12856 bar(); 12857 } 12858 } 12859 #pragma omp parallel sections 12860 { 12861 #pragma omp section 12862 { 12863 #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?}} 12864 bar(); 12865 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 12866 bar(); 12867 #pragma omp critical 12868 bar(); 12869 } 12870 } 12871 #pragma omp parallel sections 12872 { 12873 #pragma omp parallel 12874 { 12875 #pragma omp single // OK 12876 { 12877 bar(); 12878 } 12879 #pragma omp master // OK 12880 { 12881 bar(); 12882 } 12883 #pragma omp critical // OK 12884 { 12885 bar(); 12886 } 12887 #pragma omp for // OK 12888 for (int i = 0; i < 10; ++i) 12889 ; 12890 #pragma omp for simd // OK 12891 for (int i = 0; i < 10; ++i) 12892 ; 12893 #pragma omp sections // OK 12894 { 12895 bar(); 12896 } 12897 } 12898 } 12899 #pragma omp parallel sections 12900 { 12901 #pragma omp parallel for 12902 for (int i = 0; i < 10; ++i) 12903 ; 12904 } 12905 #pragma omp parallel sections 12906 { 12907 #pragma omp parallel for simd 12908 for (int i = 0; i < 10; ++i) 12909 ; 12910 } 12911 #pragma omp parallel sections 12912 { 12913 #pragma omp parallel sections 12914 { 12915 bar(); 12916 } 12917 } 12918 #pragma omp parallel sections 12919 { 12920 #pragma omp task 12921 { 12922 bar(); 12923 } 12924 } 12925 #pragma omp parallel sections 12926 { 12927 #pragma omp taskyield 12928 } 12929 #pragma omp parallel sections 12930 { 12931 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12932 } 12933 #pragma omp parallel sections 12934 { 12935 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12936 } 12937 #pragma omp parallel sections 12938 { 12939 #pragma omp taskwait 12940 } 12941 #pragma omp parallel sections 12942 { 12943 #pragma omp flush 12944 } 12945 #pragma omp parallel sections 12946 { 12947 #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?}} 12948 bar(); 12949 } 12950 #pragma omp parallel sections 12951 { 12952 #pragma omp atomic 12953 ++a; 12954 } 12955 #pragma omp parallel sections 12956 { 12957 #pragma omp target 12958 ++a; 12959 } 12960 #pragma omp parallel sections 12961 { 12962 #pragma omp target parallel 12963 ++a; 12964 } 12965 #pragma omp parallel sections 12966 { 12967 #pragma omp target parallel for 12968 for (int i = 0; i < 10; ++i) 12969 ; 12970 } 12971 #pragma omp parallel sections 12972 { 12973 #pragma omp target enter data map(to: a) 12974 } 12975 #pragma omp parallel sections 12976 { 12977 #pragma omp target exit data map(from: a) 12978 } 12979 #pragma omp parallel sections 12980 { 12981 #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?}} 12982 ++a; 12983 } 12984 #pragma omp parallel sections 12985 { 12986 #pragma omp taskloop 12987 for (int i = 0; i < 10; ++i) 12988 ++a; 12989 } 12990 #pragma omp parallel sections 12991 { 12992 #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?}} 12993 for (int i = 0; i < 10; ++i) 12994 ; 12995 } 12996 #pragma omp parallel sections 12997 { 12998 #pragma omp target update to(a) 12999 } 13000 #pragma omp parallel sections 13001 { 13002 #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?}} 13003 for (int i = 0; i < 10; ++i) 13004 ; 13005 } 13006 #pragma omp parallel sections 13007 { 13008 #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?}} 13009 for (int i = 0; i < 10; ++i) 13010 ; 13011 } 13012 #pragma omp parallel sections 13013 { 13014 #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?}} 13015 for (int i = 0; i < 10; ++i) 13016 ; 13017 } 13018 #pragma omp parallel sections 13019 { 13020 #pragma omp target simd // OK 13021 for (int i = 0; i < 10; ++i) 13022 ; 13023 } 13024 #pragma omp parallel sections 13025 { 13026 #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?}} 13027 for (int i = 0; i < 10; ++i) 13028 ; 13029 } 13030 #pragma omp parallel sections 13031 { 13032 #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?}} 13033 for (int i = 0; i < 10; ++i) 13034 ; 13035 } 13036 #pragma omp parallel sections 13037 { 13038 #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?}} 13039 for (int i = 0; i < 10; ++i) 13040 ; 13041 } 13042 #pragma omp parallel sections 13043 { 13044 #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?}} 13045 for (int i = 0; i < 10; ++i) 13046 ; 13047 } 13048 #pragma omp parallel sections 13049 { 13050 #pragma omp target teams // OK 13051 a++; 13052 } 13053 #pragma omp parallel sections 13054 { 13055 #pragma omp target teams distribute // OK 13056 for (int i = 0; i < 10; ++i) 13057 ; 13058 } 13059 #pragma omp parallel sections 13060 { 13061 #pragma omp target teams distribute parallel for // OK 13062 for (int i = 0; i < 10; ++i) 13063 ; 13064 } 13065 #pragma omp parallel sections 13066 { 13067 #pragma omp target teams distribute parallel for simd // OK 13068 for (int i = 0; i < 10; ++i) 13069 ; 13070 } 13071 #pragma omp parallel sections 13072 { 13073 #pragma omp target teams distribute simd // OK 13074 for (int i = 0; i < 10; ++i) 13075 ; 13076 } 13077 13078 // TASK DIRECTIVE 13079 #pragma omp task 13080 #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?}} 13081 for (int i = 0; i < 10; ++i) 13082 ; 13083 #pragma omp task 13084 #pragma omp simd 13085 for (int i = 0; i < 10; ++i) 13086 ; 13087 #pragma omp task 13088 #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?}} 13089 for (int i = 0; i < 10; ++i) 13090 ; 13091 #pragma omp task 13092 #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?}} 13093 { 13094 bar(); 13095 } 13096 #pragma omp task 13097 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 13098 { 13099 bar(); 13100 } 13101 #pragma omp task 13102 #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?}} 13103 bar(); 13104 #pragma omp task 13105 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 13106 bar(); 13107 #pragma omp task 13108 #pragma omp critical 13109 bar(); 13110 #pragma omp task 13111 #pragma omp parallel for 13112 for (int i = 0; i < 10; ++i) 13113 ; 13114 #pragma omp task 13115 #pragma omp parallel for simd 13116 for (int i = 0; i < 10; ++i) 13117 ; 13118 #pragma omp task 13119 #pragma omp parallel sections 13120 { 13121 bar(); 13122 } 13123 #pragma omp task 13124 #pragma omp task 13125 { 13126 bar(); 13127 } 13128 #pragma omp task 13129 { 13130 #pragma omp taskyield 13131 bar(); 13132 } 13133 #pragma omp task 13134 { 13135 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 13136 bar(); 13137 } 13138 #pragma omp task 13139 { 13140 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}} 13141 bar(); 13142 } 13143 #pragma omp task 13144 { 13145 #pragma omp taskwait 13146 bar(); 13147 } 13148 #pragma omp task 13149 { 13150 #pragma omp flush 13151 bar(); 13152 } 13153 #pragma omp task 13154 { 13155 #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?}} 13156 bar(); 13157 } 13158 #pragma omp task 13159 { 13160 #pragma omp atomic 13161 ++a; 13162 } 13163 #pragma omp task 13164 { 13165 #pragma omp target 13166 ++a; 13167 } 13168 #pragma omp task 13169 { 13170 #pragma omp target parallel 13171 ++a; 13172 } 13173 #pragma omp task 13174 #pragma omp target parallel for 13175 for (int i = 0; i < 10; ++i) 13176 ; 13177 #pragma omp task 13178 { 13179 #pragma omp target enter data map(to: a) 13180 ++a; 13181 } 13182 #pragma omp task 13183 { 13184 #pragma omp target exit data map(from: a) 13185 ++a; 13186 } 13187 #pragma omp task 13188 { 13189 #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?}} 13190 ++a; 13191 } 13192 #pragma omp task 13193 { 13194 #pragma omp taskloop 13195 for (int i = 0; i < 10; ++i) 13196 ++a; 13197 } 13198 #pragma omp task 13199 { 13200 #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?}} 13201 for (int i = 0; i < 10; ++i) 13202 ; 13203 } 13204 #pragma omp task 13205 { 13206 #pragma omp target update to(a) 13207 a++; 13208 } 13209 #pragma omp task 13210 { 13211 #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?}} 13212 for (int i = 0; i < 10; ++i) 13213 ; 13214 } 13215 #pragma omp task 13216 { 13217 #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?}} 13218 for (int i = 0; i < 10; ++i) 13219 ; 13220 } 13221 #pragma omp task 13222 { 13223 #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?}} 13224 for (int i = 0; i < 10; ++i) 13225 ; 13226 } 13227 #pragma omp task 13228 { 13229 #pragma omp target simd // OK 13230 for (int i = 0; i < 10; ++i) 13231 ; 13232 } 13233 #pragma omp task 13234 { 13235 #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?}} 13236 for (int i = 0; i < 10; ++i) 13237 ; 13238 } 13239 #pragma omp task 13240 { 13241 #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?}} 13242 for (int i = 0; i < 10; ++i) 13243 ; 13244 } 13245 #pragma omp task 13246 { 13247 #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?}} 13248 for (int i = 0; i < 10; ++i) 13249 ; 13250 } 13251 #pragma omp task 13252 { 13253 #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?}} 13254 for (int i = 0; i < 10; ++i) 13255 ; 13256 } 13257 #pragma omp task 13258 { 13259 #pragma omp target teams // OK 13260 a++; 13261 } 13262 #pragma omp task 13263 { 13264 #pragma omp target teams distribute // OK 13265 for (int i = 0; i < 10; ++i) 13266 ; 13267 } 13268 #pragma omp task 13269 { 13270 #pragma omp target teams distribute parallel for // OK 13271 for (int i = 0; i < 10; ++i) 13272 ; 13273 } 13274 #pragma omp task 13275 { 13276 #pragma omp target teams distribute parallel for simd // OK 13277 for (int i = 0; i < 10; ++i) 13278 ; 13279 } 13280 #pragma omp task 13281 { 13282 #pragma omp target teams distribute simd // OK 13283 for (int i = 0; i < 10; ++i) 13284 ; 13285 } 13286 13287 // ATOMIC DIRECTIVE 13288 #pragma omp atomic 13289 // 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 lvalue expression with scalar type}} 13290 // expected-note@+1 {{expected an expression statement}} 13291 { 13292 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13293 for (int i = 0; i < 10; ++i) 13294 ; 13295 } 13296 #pragma omp atomic 13297 // 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 lvalue expression with scalar type}} 13298 // expected-note@+1 {{expected an expression statement}} 13299 { 13300 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13301 for (int i = 0; i < 10; ++i) 13302 ; 13303 } 13304 #pragma omp atomic 13305 // 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 lvalue expression with scalar type}} 13306 // expected-note@+1 {{expected an expression statement}} 13307 { 13308 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13309 for (int i = 0; i < 10; ++i) 13310 ; 13311 } 13312 #pragma omp atomic 13313 // 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 lvalue expression with scalar type}} 13314 // expected-note@+1 {{expected an expression statement}} 13315 { 13316 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13317 for (int i = 0; i < 10; ++i) 13318 ; 13319 } 13320 #pragma omp atomic 13321 // 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 lvalue expression with scalar type}} 13322 // expected-note@+1 {{expected an expression statement}} 13323 { 13324 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13325 { 13326 bar(); 13327 } 13328 } 13329 #pragma omp atomic 13330 // 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 lvalue expression with scalar type}} 13331 // expected-note@+1 {{expected an expression statement}} 13332 { 13333 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13334 { 13335 bar(); 13336 } 13337 } 13338 #pragma omp atomic 13339 // 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 lvalue expression with scalar type}} 13340 // expected-note@+1 {{expected an expression statement}} 13341 { 13342 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13343 { 13344 bar(); 13345 } 13346 } 13347 #pragma omp atomic 13348 // 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 lvalue expression with scalar type}} 13349 // expected-note@+1 {{expected an expression statement}} 13350 { 13351 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13352 { 13353 bar(); 13354 } 13355 } 13356 #pragma omp atomic 13357 // 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 lvalue expression with scalar type}} 13358 // expected-note@+1 {{expected an expression statement}} 13359 { 13360 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13361 { 13362 bar(); 13363 } 13364 } 13365 #pragma omp atomic 13366 // 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 lvalue expression with scalar type}} 13367 // expected-note@+1 {{expected an expression statement}} 13368 { 13369 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13370 for (int i = 0; i < 10; ++i) 13371 ; 13372 } 13373 #pragma omp atomic 13374 // 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 lvalue expression with scalar type}} 13375 // expected-note@+1 {{expected an expression statement}} 13376 { 13377 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13378 for (int i = 0; i < 10; ++i) 13379 ; 13380 } 13381 #pragma omp atomic 13382 // 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 lvalue expression with scalar type}} 13383 // expected-note@+1 {{expected an expression statement}} 13384 { 13385 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13386 { 13387 bar(); 13388 } 13389 } 13390 #pragma omp atomic 13391 // 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 lvalue expression with scalar type}} 13392 // expected-note@+1 {{expected an expression statement}} 13393 { 13394 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13395 { 13396 bar(); 13397 } 13398 } 13399 #pragma omp atomic 13400 // 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 lvalue expression with scalar type}} 13401 // expected-note@+1 {{expected an expression statement}} 13402 { 13403 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13404 bar(); 13405 } 13406 #pragma omp atomic 13407 // 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 lvalue expression with scalar type}} 13408 // expected-note@+1 {{expected an expression statement}} 13409 { 13410 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13411 bar(); 13412 } 13413 #pragma omp atomic 13414 // 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 lvalue expression with scalar type}} 13415 // expected-note@+1 {{expected an expression statement}} 13416 { 13417 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13418 bar(); 13419 } 13420 #pragma omp atomic 13421 // 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 lvalue expression with scalar type}} 13422 // expected-note@+1 {{expected an expression statement}} 13423 { 13424 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13425 bar(); 13426 } 13427 #pragma omp atomic 13428 // 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 lvalue expression with scalar type}} 13429 // expected-note@+1 {{expected an expression statement}} 13430 { 13431 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13432 bar(); 13433 } 13434 #pragma omp atomic 13435 // 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 lvalue expression with scalar type}} 13436 // expected-note@+1 {{expected an expression statement}} 13437 { 13438 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13439 bar(); 13440 } 13441 #pragma omp atomic 13442 // 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 lvalue expression with scalar type}} 13443 // expected-note@+1 {{expected an expression statement}} 13444 { 13445 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13446 ++a; 13447 } 13448 #pragma omp atomic 13449 // 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 lvalue expression with scalar type}} 13450 // expected-note@+1 {{expected an expression statement}} 13451 { 13452 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13453 ++a; 13454 } 13455 #pragma omp atomic 13456 // 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 lvalue expression with scalar type}} 13457 // expected-note@+1 {{expected an expression statement}} 13458 { 13459 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13460 ++a; 13461 } 13462 #pragma omp atomic 13463 // 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 lvalue expression with scalar type}} 13464 // expected-note@+1 {{expected an expression statement}} 13465 { 13466 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13467 for (int i = 0; i < 10; ++i) 13468 ; 13469 } 13470 #pragma omp atomic 13471 // 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 lvalue expression with scalar type}} 13472 // expected-note@+1 {{expected an expression statement}} 13473 { 13474 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13475 ++a; 13476 } 13477 #pragma omp atomic 13478 // 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 lvalue expression with scalar type}} 13479 // expected-note@+1 {{expected an expression statement}} 13480 { 13481 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13482 ++a; 13483 } 13484 #pragma omp atomic 13485 // 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 lvalue expression with scalar type}} 13486 // expected-note@+1 {{expected an expression statement}} 13487 { 13488 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13489 ++a; 13490 } 13491 #pragma omp atomic 13492 // 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 lvalue expression with scalar type}} 13493 // expected-note@+1 {{expected an expression statement}} 13494 { 13495 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13496 for (int i = 0; i < 10; ++i) 13497 ++a; 13498 } 13499 #pragma omp atomic 13500 // 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 lvalue expression with scalar type}} 13501 // expected-note@+1 {{expected an expression statement}} 13502 { 13503 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13504 for (int i = 0; i < 10; ++i) 13505 ; 13506 } 13507 #pragma omp atomic 13508 // 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 lvalue expression with scalar type}} 13509 // expected-note@+1 {{expected an expression statement}} 13510 { 13511 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13512 } 13513 #pragma omp atomic 13514 // 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 lvalue expression with scalar type}} 13515 // expected-note@+1 {{expected an expression statement}} 13516 { 13517 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13518 for (int i = 0; i < 10; ++i) 13519 ; 13520 } 13521 #pragma omp atomic 13522 // 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 lvalue expression with scalar type}} 13523 // expected-note@+1 {{expected an expression statement}} 13524 { 13525 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13526 for (int i = 0; i < 10; ++i) 13527 ; 13528 } 13529 #pragma omp atomic 13530 // 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 lvalue expression with scalar type}} 13531 // expected-note@+1 {{expected an expression statement}} 13532 { 13533 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13534 for (int i = 0; i < 10; ++i) 13535 ; 13536 } 13537 #pragma omp atomic 13538 // 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 lvalue expression with scalar type}} 13539 // expected-note@+1 {{expected an expression statement}} 13540 { 13541 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13542 for (int i = 0; i < 10; ++i) 13543 ; 13544 } 13545 #pragma omp atomic 13546 // 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 lvalue expression with scalar type}} 13547 // expected-note@+1 {{expected an expression statement}} 13548 { 13549 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13550 for (int i = 0; i < 10; ++i) 13551 ; 13552 } 13553 #pragma omp atomic 13554 // 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 lvalue expression with scalar type}} 13555 // expected-note@+1 {{expected an expression statement}} 13556 { 13557 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13558 for (int i = 0; i < 10; ++i) 13559 ; 13560 } 13561 #pragma omp atomic 13562 // 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 lvalue expression with scalar type}} 13563 // expected-note@+1 {{expected an expression statement}} 13564 { 13565 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13566 for (int i = 0; i < 10; ++i) 13567 ; 13568 } 13569 #pragma omp atomic 13570 // 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 lvalue expression with scalar type}} 13571 // expected-note@+1 {{expected an expression statement}} 13572 { 13573 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13574 for (int i = 0; i < 10; ++i) 13575 ; 13576 } 13577 #pragma omp atomic 13578 // 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 lvalue expression with scalar type}} 13579 // expected-note@+1 {{expected an expression statement}} 13580 { 13581 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13582 a++; 13583 } 13584 #pragma omp atomic 13585 // 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 lvalue expression with scalar type}} 13586 // expected-note@+1 {{expected an expression statement}} 13587 { 13588 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13589 for (int i = 0; i < 10; ++i) 13590 ; 13591 } 13592 #pragma omp atomic 13593 // 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 lvalue expression with scalar type}} 13594 // expected-note@+1 {{expected an expression statement}} 13595 { 13596 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13597 for (int i = 0; i < 10; ++i) 13598 ; 13599 } 13600 #pragma omp atomic 13601 // 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 lvalue expression with scalar type}} 13602 // expected-note@+1 {{expected an expression statement}} 13603 { 13604 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13605 for (int i = 0; i < 10; ++i) 13606 ; 13607 } 13608 #pragma omp atomic 13609 // 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 lvalue expression with scalar type}} 13610 // expected-note@+1 {{expected an expression statement}} 13611 { 13612 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13613 for (int i = 0; i < 10; ++i) 13614 ; 13615 } 13616 13617 // TARGET DIRECTIVE 13618 #pragma omp target 13619 #pragma omp parallel 13620 bar(); 13621 #pragma omp target 13622 #pragma omp for 13623 for (int i = 0; i < 10; ++i) 13624 ; 13625 #pragma omp target 13626 #pragma omp simd 13627 for (int i = 0; i < 10; ++i) 13628 ; 13629 #pragma omp target 13630 #pragma omp for simd 13631 for (int i = 0; i < 10; ++i) 13632 ; 13633 #pragma omp target 13634 #pragma omp sections 13635 { 13636 bar(); 13637 } 13638 #pragma omp target 13639 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 13640 { 13641 bar(); 13642 } 13643 #pragma omp target 13644 #pragma omp single 13645 bar(); 13646 13647 #pragma omp target 13648 #pragma omp master 13649 { 13650 bar(); 13651 } 13652 #pragma omp target 13653 #pragma omp critical 13654 { 13655 bar(); 13656 } 13657 #pragma omp target 13658 #pragma omp parallel for 13659 for (int i = 0; i < 10; ++i) 13660 ; 13661 #pragma omp target 13662 #pragma omp parallel for simd 13663 for (int i = 0; i < 10; ++i) 13664 ; 13665 #pragma omp target 13666 #pragma omp parallel sections 13667 { 13668 bar(); 13669 } 13670 #pragma omp target 13671 #pragma omp task 13672 { 13673 bar(); 13674 } 13675 #pragma omp target 13676 { 13677 #pragma omp taskyield 13678 bar(); 13679 } 13680 #pragma omp target 13681 { 13682 #pragma omp barrier 13683 bar(); 13684 } 13685 #pragma omp target 13686 { 13687 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 13688 bar(); 13689 } 13690 #pragma omp target 13691 { 13692 #pragma omp taskwait 13693 bar(); 13694 } 13695 #pragma omp target 13696 { 13697 #pragma omp flush 13698 bar(); 13699 } 13700 #pragma omp target 13701 { 13702 #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?}} 13703 bar(); 13704 } 13705 #pragma omp target 13706 { 13707 #pragma omp atomic 13708 ++a; 13709 } 13710 #pragma omp target 13711 { 13712 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13713 ++a; 13714 } 13715 #pragma omp target 13716 { 13717 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13718 ++a; 13719 } 13720 #pragma omp target 13721 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13722 for (int i = 0; i < 10; ++i) 13723 ; 13724 #pragma omp target 13725 { 13726 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13727 } 13728 #pragma omp target 13729 { 13730 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13731 } 13732 #pragma omp target 13733 { 13734 #pragma omp teams 13735 ++a; 13736 } 13737 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13738 { 13739 #pragma omp teams // expected-note {{directive outside teams construct here}} 13740 ++a; 13741 #pragma omp teams // expected-note {{nested teams construct here}} 13742 ++a; 13743 } 13744 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13745 { 13746 ++a; // expected-note {{statement outside teams construct here}} 13747 #pragma omp teams // expected-note {{nested teams construct here}} 13748 ++a; 13749 } 13750 #pragma omp target 13751 { 13752 #pragma omp taskloop 13753 for (int i = 0; i < 10; ++i) 13754 ++a; 13755 } 13756 #pragma omp target 13757 { 13758 #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?}} 13759 for (int i = 0; i < 10; ++i) 13760 ; 13761 } 13762 #pragma omp atomic 13763 // 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 lvalue expression with scalar type}} 13764 // expected-note@+1 {{expected an expression statement}} 13765 { 13766 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13767 a++; 13768 } 13769 #pragma omp target 13770 { 13771 #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?}} 13772 for (int i = 0; i < 10; ++i) 13773 ; 13774 } 13775 #pragma omp target 13776 { 13777 #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?}} 13778 for (int i = 0; i < 10; ++i) 13779 ; 13780 } 13781 #pragma omp target 13782 { 13783 #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?}} 13784 for (int i = 0; i < 10; ++i) 13785 ; 13786 } 13787 #pragma omp target 13788 { 13789 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13790 for (int i = 0; i < 10; ++i) 13791 ; 13792 } 13793 #pragma omp target 13794 { 13795 #pragma omp teams distribute // OK 13796 for (int i = 0; i < 10; ++i) 13797 ; 13798 } 13799 #pragma omp target 13800 { 13801 #pragma omp teams distribute simd // OK 13802 for (int i = 0; i < 10; ++i) 13803 ; 13804 } 13805 #pragma omp target 13806 { 13807 #pragma omp teams distribute parallel for simd // OK 13808 for (int i = 0; i < 10; ++i) 13809 ; 13810 } 13811 #pragma omp target 13812 { 13813 #pragma omp teams distribute parallel for // OK 13814 for (int i = 0; i < 10; ++i) 13815 ; 13816 } 13817 #pragma omp target 13818 { 13819 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13820 a++; 13821 } 13822 #pragma omp target 13823 { 13824 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13825 for (int i = 0; i < 10; ++i) 13826 ; 13827 } 13828 #pragma omp target 13829 { 13830 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13831 for (int i = 0; i < 10; ++i) 13832 ; 13833 } 13834 #pragma omp target 13835 { 13836 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13837 for (int i = 0; i < 10; ++i) 13838 ; 13839 } 13840 #pragma omp target 13841 { 13842 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13843 for (int i = 0; i < 10; ++i) 13844 ; 13845 } 13846 13847 // TARGET PARALLEL DIRECTIVE 13848 #pragma omp target parallel 13849 #pragma omp parallel 13850 bar(); 13851 #pragma omp target parallel 13852 #pragma omp for 13853 for (int i = 0; i < 10; ++i) 13854 ; 13855 #pragma omp target parallel 13856 #pragma omp simd 13857 for (int i = 0; i < 10; ++i) 13858 ; 13859 #pragma omp target parallel 13860 #pragma omp for simd 13861 for (int i = 0; i < 10; ++i) 13862 ; 13863 #pragma omp target parallel 13864 #pragma omp sections 13865 { 13866 bar(); 13867 } 13868 #pragma omp target parallel 13869 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 13870 { 13871 bar(); 13872 } 13873 #pragma omp target parallel 13874 #pragma omp single 13875 bar(); 13876 13877 #pragma omp target parallel 13878 #pragma omp master 13879 { 13880 bar(); 13881 } 13882 #pragma omp target parallel 13883 #pragma omp critical 13884 { 13885 bar(); 13886 } 13887 #pragma omp target parallel 13888 #pragma omp parallel for 13889 for (int i = 0; i < 10; ++i) 13890 ; 13891 #pragma omp target parallel 13892 #pragma omp parallel for simd 13893 for (int i = 0; i < 10; ++i) 13894 ; 13895 #pragma omp target parallel 13896 #pragma omp parallel sections 13897 { 13898 bar(); 13899 } 13900 #pragma omp target parallel 13901 #pragma omp task 13902 { 13903 bar(); 13904 } 13905 #pragma omp target parallel 13906 { 13907 #pragma omp taskyield 13908 bar(); 13909 } 13910 #pragma omp target parallel 13911 { 13912 #pragma omp barrier 13913 bar(); 13914 } 13915 #pragma omp target parallel 13916 { 13917 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 13918 bar(); 13919 } 13920 #pragma omp target parallel 13921 { 13922 #pragma omp taskwait 13923 bar(); 13924 } 13925 #pragma omp target parallel 13926 { 13927 #pragma omp flush 13928 bar(); 13929 } 13930 #pragma omp target parallel 13931 { 13932 #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?}} 13933 bar(); 13934 } 13935 #pragma omp target parallel 13936 { 13937 #pragma omp atomic 13938 ++a; 13939 } 13940 #pragma omp target parallel 13941 { 13942 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 13943 ++a; 13944 } 13945 #pragma omp target parallel 13946 { 13947 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 13948 ++a; 13949 } 13950 #pragma omp target parallel 13951 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13952 for (int i = 0; i < 10; ++i) 13953 ; 13954 #pragma omp target parallel 13955 { 13956 #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?}} 13957 ++a; 13958 } 13959 #pragma omp target parallel 13960 { 13961 ++a; 13962 #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?}} 13963 ++a; 13964 } 13965 #pragma omp target parallel 13966 { 13967 #pragma omp taskloop 13968 for (int i = 0; i < 10; ++i) 13969 ++a; 13970 } 13971 #pragma omp target parallel 13972 { 13973 #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?}} 13974 for (int i = 0; i < 10; ++i) 13975 ; 13976 } 13977 #pragma omp target parallel 13978 { 13979 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13980 } 13981 #pragma omp target parallel 13982 { 13983 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13984 } 13985 #pragma omp target parallel 13986 { 13987 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13988 } 13989 #pragma omp target parallel 13990 { 13991 #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?}} 13992 for (int i = 0; i < 10; ++i) 13993 ; 13994 } 13995 #pragma omp target parallel 13996 { 13997 #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?}} 13998 for (int i = 0; i < 10; ++i) 13999 ; 14000 } 14001 #pragma omp target parallel 14002 { 14003 #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?}} 14004 for (int i = 0; i < 10; ++i) 14005 ; 14006 } 14007 #pragma omp target parallel 14008 { 14009 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 14010 for (int i = 0; i < 10; ++i) 14011 ; 14012 } 14013 #pragma omp target parallel 14014 { 14015 #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?}} 14016 for (int i = 0; i < 10; ++i) 14017 ; 14018 } 14019 #pragma omp target parallel 14020 { 14021 #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?}} 14022 for (int i = 0; i < 10; ++i) 14023 ; 14024 } 14025 #pragma omp target parallel 14026 { 14027 #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?}} 14028 for (int i = 0; i < 10; ++i) 14029 ; 14030 } 14031 #pragma omp target parallel 14032 { 14033 #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?}} 14034 for (int i = 0; i < 10; ++i) 14035 ; 14036 } 14037 #pragma omp target parallel 14038 { 14039 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 14040 a++; 14041 } 14042 #pragma omp target parallel 14043 { 14044 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 14045 for (int i = 0; i < 10; ++i) 14046 ; 14047 } 14048 #pragma omp target parallel 14049 { 14050 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 14051 for (int i = 0; i < 10; ++i) 14052 ; 14053 } 14054 #pragma omp target parallel 14055 { 14056 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 14057 for (int i = 0; i < 10; ++i) 14058 ; 14059 } 14060 #pragma omp target parallel 14061 { 14062 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 14063 for (int i = 0; i < 10; ++i) 14064 ; 14065 } 14066 14067 // TARGET PARALLEL FOR DIRECTIVE 14068 #pragma omp target parallel for 14069 for (int i = 0; i < 10; ++i) { 14070 #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?}} 14071 for (int i = 0; i < 10; ++i) 14072 ; 14073 } 14074 #pragma omp target parallel for 14075 for (int i = 0; i < 10; ++i) { 14076 #pragma omp simd 14077 for (int i = 0; i < 10; ++i) 14078 ; 14079 } 14080 #pragma omp target parallel for 14081 for (int i = 0; i < 10; ++i) { 14082 #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?}} 14083 for (int i = 0; i < 10; ++i) 14084 ; 14085 } 14086 #pragma omp target parallel for 14087 for (int i = 0; i < 10; ++i) { 14088 #pragma omp parallel 14089 for (int i = 0; i < 10; ++i) 14090 ; 14091 } 14092 #pragma omp target parallel for 14093 for (int i = 0; i < 10; ++i) { 14094 #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?}} 14095 { 14096 bar(); 14097 } 14098 } 14099 #pragma omp target parallel for 14100 for (int i = 0; i < 10; ++i) { 14101 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 14102 { 14103 bar(); 14104 } 14105 } 14106 #pragma omp target parallel for 14107 for (int i = 0; i < 10; ++i) { 14108 #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?}} 14109 { 14110 bar(); 14111 } 14112 } 14113 14114 #pragma omp target parallel for 14115 for (int i = 0; i < 10; ++i) { 14116 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 14117 { 14118 bar(); 14119 } 14120 } 14121 14122 #pragma omp target parallel for 14123 for (int i = 0; i < 10; ++i) { 14124 #pragma omp critical 14125 { 14126 bar(); 14127 } 14128 } 14129 14130 #pragma omp target parallel for 14131 for (int i = 0; i < 10; ++i) { 14132 #pragma omp parallel 14133 { 14134 #pragma omp single // OK 14135 { 14136 bar(); 14137 } 14138 #pragma omp for // OK 14139 for (int i = 0; i < 10; ++i) 14140 ; 14141 #pragma omp for simd // OK 14142 for (int i = 0; i < 10; ++i) 14143 ; 14144 #pragma omp sections // OK 14145 { 14146 bar(); 14147 } 14148 } 14149 } 14150 #pragma omp target parallel for 14151 for (int i = 0; i < 10; ++i) { 14152 #pragma omp parallel for 14153 for (int i = 0; i < 10; ++i) 14154 ; 14155 } 14156 #pragma omp target parallel for 14157 for (int i = 0; i < 10; ++i) { 14158 #pragma omp parallel for simd 14159 for (int i = 0; i < 10; ++i) 14160 ; 14161 } 14162 #pragma omp target parallel for 14163 for (int i = 0; i < 10; ++i) { 14164 #pragma omp parallel sections 14165 { 14166 bar(); 14167 } 14168 } 14169 #pragma omp target parallel for 14170 for (int i = 0; i < 10; ++i) { 14171 #pragma omp task 14172 { 14173 bar(); 14174 } 14175 } 14176 #pragma omp target parallel for 14177 for (int i = 0; i < 10; ++i) { 14178 #pragma omp taskyield 14179 bar(); 14180 } 14181 #pragma omp target parallel for 14182 for (int i = 0; i < 10; ++i) { 14183 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 14184 bar(); 14185 } 14186 #pragma omp target parallel for 14187 for (int i = 0; i < 10; ++i) { 14188 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 14189 bar(); 14190 } 14191 #pragma omp target parallel for 14192 for (int i = 0; i < 10; ++i) { 14193 #pragma omp taskwait 14194 bar(); 14195 } 14196 #pragma omp target parallel for 14197 for (int i = 0; i < 10; ++i) { 14198 #pragma omp flush 14199 bar(); 14200 } 14201 #pragma omp target parallel for 14202 for (int i = 0; i < 10; ++i) { 14203 #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?}} 14204 bar(); 14205 } 14206 #pragma omp target parallel for ordered 14207 for (int i = 0; i < 10; ++i) { 14208 #pragma omp ordered // OK 14209 bar(); 14210 } 14211 #pragma omp target parallel for 14212 for (int i = 0; i < 10; ++i) { 14213 #pragma omp atomic 14214 ++a; 14215 } 14216 #pragma omp target parallel for 14217 for (int i = 0; i < 10; ++i) { 14218 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 14219 ++a; 14220 } 14221 #pragma omp target parallel for 14222 for (int i = 0; i < 10; ++i) { 14223 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 14224 ++a; 14225 } 14226 #pragma omp target parallel for 14227 for (int i = 0; i < 10; ++i) { 14228 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 14229 for (int i = 0; i < 10; ++i) 14230 ; 14231 } 14232 #pragma omp target parallel for 14233 for (int i = 0; i < 10; ++i) { 14234 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 14235 ++a; 14236 } 14237 #pragma omp target parallel for 14238 for (int i = 0; i < 10; ++i) { 14239 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 14240 ++a; 14241 } 14242 #pragma omp target parallel for 14243 for (int i = 0; i < 10; ++i) { 14244 #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?}} 14245 ++a; 14246 } 14247 #pragma omp target parallel for 14248 for (int i = 0; i < 10; ++i) { 14249 #pragma omp taskloop 14250 for (int i = 0; i < 10; ++i) 14251 ++a; 14252 } 14253 #pragma omp target parallel for 14254 for (int i = 0; i < 10; ++i) { 14255 #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?}} 14256 for (int j = 0; j < 10; ++j) 14257 ; 14258 } 14259 #pragma omp target parallel for 14260 for (int i = 0; i < 10; ++i) { 14261 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 14262 a++; 14263 } 14264 #pragma omp target parallel for 14265 for (int i = 0; i < 10; ++i) { 14266 #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?}} 14267 for (int j = 0; j < 10; ++j) 14268 ; 14269 } 14270 #pragma omp target parallel for 14271 for (int i = 0; i < 10; ++i) { 14272 #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?}} 14273 for (int j = 0; j < 10; ++j) 14274 ; 14275 } 14276 #pragma omp target parallel for 14277 for (int i = 0; i < 10; ++i) { 14278 #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?}} 14279 for (int j = 0; j < 10; ++j) 14280 ; 14281 } 14282 #pragma omp target parallel for 14283 for (int i = 0; i < 10; ++i) { 14284 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 14285 for (int j = 0; j < 10; ++j) 14286 ; 14287 } 14288 #pragma omp target parallel for 14289 for (int i = 0; i < 10; ++i) { 14290 #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?}} 14291 for (int j = 0; j < 10; ++j) 14292 ; 14293 } 14294 #pragma omp target parallel for 14295 for (int i = 0; i < 10; ++i) { 14296 #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?}} 14297 for (int j = 0; j < 10; ++j) 14298 ; 14299 } 14300 #pragma omp target parallel for 14301 for (int i = 0; i < 10; ++i) { 14302 #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?}} 14303 for (int j = 0; j < 10; ++j) 14304 ; 14305 } 14306 #pragma omp target parallel for 14307 for (int i = 0; i < 10; ++i) { 14308 #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?}} 14309 for (int j = 0; j < 10; ++j) 14310 ; 14311 } 14312 #pragma omp target parallel for 14313 for (int i = 0; i < 10; ++i) { 14314 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 14315 a++; 14316 } 14317 #pragma omp target parallel for 14318 for (int i = 0; i < 10; ++i) { 14319 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 14320 for (int j = 0; j < 10; ++j) 14321 ; 14322 } 14323 #pragma omp target parallel for 14324 for (int i = 0; i < 10; ++i) { 14325 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 14326 for (int j = 0; j < 10; ++j) 14327 ; 14328 } 14329 #pragma omp target parallel for 14330 for (int i = 0; i < 10; ++i) { 14331 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 14332 for (int j = 0; j < 10; ++j) 14333 ; 14334 } 14335 #pragma omp target parallel for 14336 for (int i = 0; i < 10; ++i) { 14337 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 14338 for (int j = 0; j < 10; ++j) 14339 ; 14340 } 14341 14342 // TEAMS DIRECTIVE 14343 #pragma omp target 14344 #pragma omp teams 14345 #pragma omp parallel 14346 bar(); 14347 #pragma omp target 14348 #pragma omp teams 14349 #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?}} 14350 for (int i = 0; i < 10; ++i) 14351 ; 14352 #pragma omp target 14353 #pragma omp teams 14354 #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?}} 14355 for (int i = 0; i < 10; ++i) 14356 ; 14357 #pragma omp target 14358 #pragma omp teams 14359 #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?}} 14360 for (int i = 0; i < 10; ++i) 14361 ; 14362 #pragma omp target 14363 #pragma omp teams 14364 #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?}} 14365 { 14366 bar(); 14367 } 14368 #pragma omp target 14369 #pragma omp teams 14370 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 14371 { 14372 bar(); 14373 } 14374 #pragma omp target 14375 #pragma omp teams 14376 #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?}} 14377 bar(); 14378 14379 #pragma omp target 14380 #pragma omp teams 14381 #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?}} 14382 { 14383 bar(); 14384 } 14385 #pragma omp target 14386 #pragma omp teams 14387 #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?}} 14388 { 14389 bar(); 14390 } 14391 #pragma omp target 14392 #pragma omp teams 14393 #pragma omp parallel for 14394 for (int i = 0; i < 10; ++i) 14395 ; 14396 #pragma omp target 14397 #pragma omp teams 14398 #pragma omp parallel for simd 14399 for (int i = 0; i < 10; ++i) 14400 ; 14401 #pragma omp target 14402 #pragma omp teams 14403 #pragma omp parallel sections 14404 { 14405 bar(); 14406 } 14407 #pragma omp target 14408 #pragma omp teams 14409 #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?}} 14410 { 14411 bar(); 14412 } 14413 #pragma omp target 14414 #pragma omp teams 14415 { 14416 #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?}} 14417 bar(); 14418 } 14419 #pragma omp target 14420 #pragma omp teams 14421 { 14422 #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?}} 14423 bar(); 14424 } 14425 #pragma omp target 14426 #pragma omp teams 14427 { 14428 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 14429 bar(); 14430 } 14431 #pragma omp target 14432 #pragma omp teams 14433 { 14434 #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?}} 14435 bar(); 14436 } 14437 #pragma omp target 14438 #pragma omp teams 14439 { 14440 #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?}} 14441 bar(); 14442 } 14443 #pragma omp target 14444 #pragma omp teams 14445 { 14446 #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?}} 14447 bar(); 14448 } 14449 #pragma omp target 14450 #pragma omp teams 14451 { 14452 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 14453 ++a; 14454 } 14455 #pragma omp target 14456 #pragma omp teams 14457 { 14458 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14459 ++a; 14460 } 14461 #pragma omp target 14462 #pragma omp teams 14463 { 14464 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14465 ++a; 14466 } 14467 #pragma omp target 14468 #pragma omp teams 14469 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14470 for (int i = 0; i < 10; ++i) 14471 ; 14472 #pragma omp target 14473 #pragma omp teams 14474 { 14475 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14476 } 14477 #pragma omp target 14478 #pragma omp teams 14479 { 14480 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14481 } 14482 #pragma omp target 14483 #pragma omp teams 14484 { 14485 #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?}} 14486 ++a; 14487 } 14488 #pragma omp target 14489 #pragma omp teams 14490 { 14491 #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?}} 14492 for (int i = 0; i < 10; ++i) 14493 ++a; 14494 } 14495 #pragma omp target 14496 #pragma omp teams 14497 #pragma omp distribute 14498 for (int i = 0; i < 10; ++i) 14499 ; 14500 #pragma omp target 14501 #pragma omp teams 14502 #pragma omp distribute 14503 for (int i = 0; i < 10; ++i) 14504 ; 14505 #pragma omp distribute 14506 for (int j = 0; j < 10; ++j) 14507 ; 14508 #pragma omp target 14509 #pragma omp teams 14510 { 14511 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14512 ++a; 14513 } 14514 #pragma omp target 14515 #pragma omp teams 14516 #pragma omp distribute parallel for 14517 for (int i = 0; i < 10; ++i) 14518 ; 14519 #pragma omp target 14520 #pragma omp teams 14521 { 14522 #pragma omp distribute parallel for 14523 for (int i = 0; i < 10; ++i) 14524 ; 14525 #pragma omp distribute parallel for 14526 for (int j = 0; j < 10; ++j) 14527 ; 14528 } 14529 #pragma omp target 14530 #pragma omp teams 14531 { 14532 #pragma omp distribute parallel for simd 14533 for (int i = 0; i < 10; ++i) 14534 ; 14535 #pragma omp distribute parallel for simd 14536 for (int j = 0; j < 10; ++j) 14537 ; 14538 } 14539 #pragma omp target 14540 #pragma omp teams 14541 { 14542 #pragma omp distribute simd 14543 for (int i = 0; i < 10; ++i) 14544 ; 14545 #pragma omp distribute simd 14546 for (int j = 0; j < 10; ++j) 14547 ; 14548 } 14549 #pragma omp target 14550 #pragma omp teams 14551 { 14552 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14553 for (int i = 0; i < 10; ++i) 14554 ; 14555 } 14556 #pragma omp target 14557 #pragma omp teams 14558 { 14559 #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?}} 14560 for (int i = 0; i < 10; ++i) 14561 ; 14562 } 14563 #pragma omp target 14564 #pragma omp teams 14565 { 14566 #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?}} 14567 for (int i = 0; i < 10; ++i) 14568 ; 14569 } 14570 #pragma omp target 14571 #pragma omp teams 14572 { 14573 #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?}} 14574 for (int i = 0; i < 10; ++i) 14575 ; 14576 } 14577 #pragma omp target 14578 #pragma omp teams 14579 { 14580 #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?}} 14581 for (int i = 0; i < 10; ++i) 14582 ; 14583 } 14584 #pragma omp target 14585 #pragma omp teams 14586 { 14587 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14588 a++; 14589 } 14590 #pragma omp target 14591 #pragma omp teams 14592 { 14593 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14594 for (int i = 0; i < 10; ++i) 14595 ; 14596 } 14597 #pragma omp target 14598 #pragma omp teams 14599 { 14600 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14601 for (int i = 0; i < 10; ++i) 14602 ; 14603 } 14604 #pragma omp target 14605 #pragma omp teams 14606 { 14607 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14608 for (int i = 0; i < 10; ++i) 14609 ; 14610 } 14611 #pragma omp target 14612 #pragma omp teams 14613 { 14614 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14615 for (int i = 0; i < 10; ++i) 14616 ; 14617 } 14618 14619 // TASKLOOP DIRECTIVE 14620 #pragma omp taskloop 14621 for (int i = 0; i < 10; ++i) { 14622 #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?}} 14623 for (int i = 0; i < 10; ++i) 14624 ; 14625 } 14626 #pragma omp taskloop 14627 for (int i = 0; i < 10; ++i) { 14628 #pragma omp simd 14629 for (int i = 0; i < 10; ++i) 14630 ; 14631 } 14632 #pragma omp taskloop 14633 for (int i = 0; i < 10; ++i) { 14634 #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?}} 14635 for (int i = 0; i < 10; ++i) 14636 ; 14637 } 14638 #pragma omp taskloop 14639 for (int i = 0; i < 10; ++i) { 14640 #pragma omp parallel 14641 for (int i = 0; i < 10; ++i) 14642 ; 14643 } 14644 #pragma omp taskloop 14645 for (int i = 0; i < 10; ++i) { 14646 #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?}} 14647 { 14648 bar(); 14649 } 14650 } 14651 #pragma omp taskloop 14652 for (int i = 0; i < 10; ++i) { 14653 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 14654 { 14655 bar(); 14656 } 14657 } 14658 #pragma omp taskloop 14659 for (int i = 0; i < 10; ++i) { 14660 #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?}} 14661 { 14662 bar(); 14663 } 14664 } 14665 14666 #pragma omp taskloop 14667 for (int i = 0; i < 10; ++i) { 14668 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14669 { 14670 bar(); 14671 } 14672 } 14673 #pragma omp taskloop 14674 for (int i = 0; i < 10; ++i) { 14675 #pragma omp critical 14676 { 14677 bar(); 14678 } 14679 } 14680 #pragma omp taskloop 14681 for (int i = 0; i < 10; ++i) { 14682 #pragma omp parallel 14683 { 14684 #pragma omp single // OK 14685 { 14686 bar(); 14687 } 14688 #pragma omp for // OK 14689 for (int i = 0; i < 10; ++i) 14690 ; 14691 #pragma omp sections // OK 14692 { 14693 bar(); 14694 } 14695 } 14696 } 14697 #pragma omp taskloop 14698 for (int i = 0; i < 10; ++i) { 14699 #pragma omp parallel for 14700 for (int i = 0; i < 10; ++i) 14701 ; 14702 } 14703 #pragma omp taskloop 14704 for (int i = 0; i < 10; ++i) { 14705 #pragma omp parallel for simd 14706 for (int i = 0; i < 10; ++i) 14707 ; 14708 } 14709 #pragma omp taskloop 14710 for (int i = 0; i < 10; ++i) { 14711 #pragma omp parallel sections 14712 { 14713 bar(); 14714 } 14715 } 14716 #pragma omp taskloop 14717 for (int i = 0; i < 10; ++i) { 14718 #pragma omp task 14719 { 14720 bar(); 14721 } 14722 } 14723 #pragma omp taskloop 14724 for (int i = 0; i < 10; ++i) { 14725 #pragma omp taskyield 14726 bar(); 14727 } 14728 #pragma omp taskloop 14729 for (int i = 0; i < 10; ++i) { 14730 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14731 bar(); 14732 } 14733 #pragma omp taskloop 14734 for (int i = 0; i < 10; ++i) { 14735 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14736 bar(); 14737 } 14738 #pragma omp taskloop 14739 for (int i = 0; i < 10; ++i) { 14740 #pragma omp taskwait 14741 bar(); 14742 } 14743 #pragma omp taskloop 14744 for (int i = 0; i < 10; ++i) { 14745 #pragma omp flush 14746 bar(); 14747 } 14748 #pragma omp taskloop 14749 for (int i = 0; i < 10; ++i) { 14750 #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?}} 14751 bar(); 14752 } 14753 #pragma omp taskloop 14754 for (int i = 0; i < 10; ++i) { 14755 #pragma omp atomic 14756 ++a; 14757 } 14758 #pragma omp taskloop 14759 for (int i = 0; i < 10; ++i) { 14760 #pragma omp target 14761 ++a; 14762 } 14763 #pragma omp taskloop 14764 for (int i = 0; i < 10; ++i) { 14765 #pragma omp target parallel 14766 ++a; 14767 } 14768 #pragma omp taskloop 14769 for (int i = 0; i < 10; ++i) { 14770 #pragma omp target parallel for 14771 for (int i = 0; i < 10; ++i) 14772 ; 14773 } 14774 #pragma omp taskloop 14775 for (int i = 0; i < 10; ++i) { 14776 #pragma omp target enter data map(to: a) 14777 ++a; 14778 } 14779 #pragma omp taskloop 14780 for (int i = 0; i < 10; ++i) { 14781 #pragma omp target exit data map(from: a) 14782 ++a; 14783 } 14784 #pragma omp taskloop 14785 for (int i = 0; i < 10; ++i) { 14786 #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?}} 14787 ++a; 14788 } 14789 #pragma omp taskloop 14790 for (int i = 0; i < 10; ++i) { 14791 #pragma omp taskloop 14792 for (int i = 0; i < 10; ++i) 14793 ++a; 14794 } 14795 #pragma omp taskloop 14796 for (int i = 0; i < 10; ++i) { 14797 #pragma omp target update to(a) 14798 ++a; 14799 } 14800 #pragma omp taskloop 14801 for (int i = 0; i < 10; ++i) { 14802 #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?}} 14803 for (int i = 0; i < 10; ++i) 14804 ; 14805 } 14806 #pragma omp taskloop 14807 for (int i = 0; i < 10; ++i) { 14808 #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?}} 14809 for (int i = 0; i < 10; ++i) 14810 ; 14811 } 14812 #pragma omp taskloop 14813 for (int i = 0; i < 10; ++i) { 14814 #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?}} 14815 for (int i = 0; i < 10; ++i) 14816 ; 14817 } 14818 #pragma omp taskloop 14819 for (int i = 0; i < 10; ++i) { 14820 #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?}} 14821 for (int i = 0; i < 10; ++i) 14822 ; 14823 } 14824 #pragma omp taskloop 14825 for (int i = 0; i < 10; ++i) { 14826 #pragma omp target simd // OK 14827 for (int i = 0; i < 10; ++i) 14828 ; 14829 } 14830 #pragma omp taskloop 14831 for (int i = 0; i < 10; ++i) { 14832 #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?}} 14833 for (int i = 0; i < 10; ++i) 14834 ; 14835 } 14836 #pragma omp taskloop 14837 for (int i = 0; i < 10; ++i) { 14838 #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?}} 14839 for (int i = 0; i < 10; ++i) 14840 ; 14841 } 14842 #pragma omp taskloop 14843 for (int i = 0; i < 10; ++i) { 14844 #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?}} 14845 for (int i = 0; i < 10; ++i) 14846 ; 14847 } 14848 #pragma omp taskloop 14849 for (int i = 0; i < 10; ++i) { 14850 #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?}} 14851 for (int i = 0; i < 10; ++i) 14852 ; 14853 } 14854 #pragma omp taskloop 14855 for (int i = 0; i < 10; ++i) { 14856 #pragma omp target teams // OK 14857 a++; 14858 } 14859 #pragma omp taskloop 14860 for (int i = 0; i < 10; ++i) { 14861 #pragma omp target teams distribute // OK 14862 for (int i = 0; i < 10; ++i) 14863 ; 14864 } 14865 #pragma omp taskloop 14866 for (int i = 0; i < 10; ++i) { 14867 #pragma omp target teams distribute parallel for // OK 14868 for (int i = 0; i < 10; ++i) 14869 ; 14870 } 14871 #pragma omp taskloop 14872 for (int i = 0; i < 10; ++i) { 14873 #pragma omp target teams distribute parallel for simd // OK 14874 for (int i = 0; i < 10; ++i) 14875 ; 14876 } 14877 #pragma omp taskloop 14878 for (int i = 0; i < 10; ++i) { 14879 #pragma omp target teams distribute simd // OK 14880 for (int i = 0; i < 10; ++i) 14881 ; 14882 } 14883 14884 // DISTRIBUTE DIRECTIVE 14885 #pragma omp target 14886 #pragma omp teams 14887 #pragma omp distribute 14888 for (int i = 0; i < 10; ++i) { 14889 #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?}} 14890 for (int i = 0; i < 10; ++i) 14891 ; 14892 } 14893 #pragma omp target 14894 #pragma omp teams 14895 #pragma omp distribute 14896 for (int i = 0; i < 10; ++i) { 14897 #pragma omp for 14898 for (int i = 0; i < 10; ++i) 14899 ; 14900 } 14901 #pragma omp target 14902 #pragma omp teams 14903 #pragma omp distribute 14904 for (int i = 0; i < 10; ++i) { 14905 #pragma omp simd 14906 for (int i = 0; i < 10; ++i) 14907 ; 14908 } 14909 #pragma omp target 14910 #pragma omp teams 14911 #pragma omp distribute 14912 for (int i = 0; i < 10; ++i) { 14913 #pragma omp for simd 14914 for (int i = 0; i < 10; ++i) 14915 ; 14916 } 14917 #pragma omp target 14918 #pragma omp teams 14919 #pragma omp distribute 14920 for (int i = 0; i < 10; ++i) { 14921 #pragma omp parallel 14922 for (int i = 0; i < 10; ++i) 14923 ; 14924 } 14925 #pragma omp target 14926 #pragma omp teams 14927 #pragma omp distribute 14928 for (int i = 0; i < 10; ++i) { 14929 #pragma omp sections 14930 { 14931 bar(); 14932 } 14933 } 14934 #pragma omp target 14935 #pragma omp teams 14936 #pragma omp distribute 14937 for (int i = 0; i < 10; ++i) { 14938 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 14939 { 14940 bar(); 14941 } 14942 } 14943 #pragma omp target 14944 #pragma omp teams 14945 #pragma omp distribute 14946 for (int i = 0; i < 10; ++i) { 14947 #pragma omp single 14948 { 14949 bar(); 14950 } 14951 } 14952 #pragma omp target 14953 #pragma omp teams 14954 #pragma omp distribute 14955 for (int i = 0; i < 10; ++i) { 14956 #pragma omp master 14957 { 14958 bar(); 14959 } 14960 } 14961 #pragma omp target 14962 #pragma omp teams 14963 #pragma omp distribute 14964 for (int i = 0; i < 10; ++i) { 14965 #pragma omp critical 14966 { 14967 bar(); 14968 } 14969 } 14970 #pragma omp target 14971 #pragma omp teams 14972 #pragma omp distribute 14973 for (int i = 0; i < 10; ++i) { 14974 #pragma omp parallel 14975 { 14976 #pragma omp single 14977 { 14978 bar(); 14979 } 14980 } 14981 } 14982 #pragma omp target 14983 #pragma omp teams 14984 #pragma omp distribute 14985 for (int i = 0; i < 10; ++i) { 14986 #pragma omp parallel for 14987 for (int i = 0; i < 10; ++i) 14988 ; 14989 } 14990 #pragma omp target 14991 #pragma omp teams 14992 #pragma omp distribute 14993 for (int i = 0; i < 10; ++i) { 14994 #pragma omp parallel for simd 14995 for (int i = 0; i < 10; ++i) 14996 ; 14997 } 14998 #pragma omp target 14999 #pragma omp teams 15000 #pragma omp distribute 15001 for (int i = 0; i < 10; ++i) { 15002 #pragma omp parallel sections 15003 { 15004 bar(); 15005 } 15006 } 15007 #pragma omp target 15008 #pragma omp teams 15009 #pragma omp distribute 15010 for (int i = 0; i < 10; ++i) { 15011 #pragma omp task 15012 { 15013 bar(); 15014 } 15015 } 15016 #pragma omp target 15017 #pragma omp teams 15018 #pragma omp distribute 15019 for (int i = 0; i < 10; ++i) { 15020 #pragma omp taskyield 15021 bar(); 15022 } 15023 #pragma omp target 15024 #pragma omp teams 15025 #pragma omp distribute 15026 for (int i = 0; i < 10; ++i) { 15027 #pragma omp barrier 15028 bar(); 15029 } 15030 #pragma omp target 15031 #pragma omp teams 15032 #pragma omp distribute 15033 for (int i = 0; i < 10; ++i) { 15034 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15035 bar(); 15036 } 15037 #pragma omp target 15038 #pragma omp teams 15039 #pragma omp distribute 15040 for (int i = 0; i < 10; ++i) { 15041 #pragma omp taskwait 15042 bar(); 15043 } 15044 #pragma omp target 15045 #pragma omp teams 15046 #pragma omp distribute 15047 for (int i = 0; i < 10; ++i) { 15048 #pragma omp flush 15049 bar(); 15050 } 15051 #pragma omp target 15052 #pragma omp teams 15053 #pragma omp distribute 15054 for (int i = 0; i < 10; ++i) { 15055 #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?}} 15056 bar(); 15057 } 15058 #pragma omp target 15059 #pragma omp teams 15060 #pragma omp distribute 15061 for (int i = 0; i < 10; ++i) { 15062 #pragma omp atomic 15063 ++a; 15064 } 15065 #pragma omp target 15066 #pragma omp teams 15067 #pragma omp distribute 15068 for (int i = 0; i < 10; ++i) { 15069 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15070 ++a; 15071 } 15072 #pragma omp target 15073 #pragma omp teams 15074 #pragma omp distribute 15075 for (int i = 0; i < 10; ++i) { 15076 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15077 ++a; 15078 } 15079 #pragma omp target 15080 #pragma omp teams 15081 #pragma omp distribute 15082 for (int i = 0; i < 10; ++i) { 15083 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15084 for (int i = 0; i < 10; ++i) 15085 ; 15086 } 15087 #pragma omp target 15088 #pragma omp teams 15089 #pragma omp distribute 15090 for (int i = 0; i < 10; ++i) { 15091 #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?}} 15092 ++a; 15093 } 15094 #pragma omp target 15095 #pragma omp teams 15096 #pragma omp distribute 15097 for (int i = 0; i < 10; ++i) { 15098 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15099 ++a; 15100 } 15101 #pragma omp target 15102 #pragma omp teams 15103 #pragma omp distribute 15104 for (int i = 0; i < 10; ++i) { 15105 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15106 ++a; 15107 } 15108 #pragma omp target 15109 #pragma omp teams 15110 #pragma omp distribute 15111 for (int i = 0; i < 10; ++i) { 15112 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15113 ++a; 15114 } 15115 #pragma omp target 15116 #pragma omp teams 15117 #pragma omp distribute 15118 for (int i = 0; i < 10; ++i) { 15119 #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?}} 15120 for (int i = 0; i < 10; ++i) 15121 ++a; 15122 } 15123 #pragma omp target 15124 #pragma omp teams 15125 #pragma omp distribute 15126 for (int i = 0; i < 10; ++i) { 15127 #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?}} 15128 for (int i = 0; i < 10; ++i) 15129 ++a; 15130 } 15131 #pragma omp target 15132 #pragma omp teams 15133 #pragma omp distribute 15134 for (int i = 0; i < 10; ++i) { 15135 #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?}} 15136 for (int i = 0; i < 10; ++i) 15137 ++a; 15138 } 15139 #pragma omp target 15140 #pragma omp teams 15141 #pragma omp distribute 15142 for (int i = 0; i < 10; ++i) { 15143 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15144 for (int i = 0; i < 10; ++i) 15145 ++a; 15146 } 15147 #pragma omp target 15148 #pragma omp teams 15149 #pragma omp distribute 15150 for (int i = 0; i < 10; ++i) { 15151 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15152 for (int i = 0; i < 10; ++i) 15153 ++a; 15154 } 15155 #pragma omp target 15156 #pragma omp teams 15157 #pragma omp distribute 15158 for (int i = 0; i < 10; ++i) { 15159 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15160 for (int i = 0; i < 10; ++i) 15161 ++a; 15162 } 15163 #pragma omp target 15164 #pragma omp teams 15165 #pragma omp distribute 15166 for (int i = 0; i < 10; ++i) { 15167 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15168 for (int i = 0; i < 10; ++i) 15169 ++a; 15170 } 15171 #pragma omp target 15172 #pragma omp teams 15173 #pragma omp distribute 15174 for (int i = 0; i < 10; ++i) { 15175 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15176 for (int i = 0; i < 10; ++i) 15177 ++a; 15178 } 15179 #pragma omp target 15180 #pragma omp teams 15181 #pragma omp distribute 15182 for (int i = 0; i < 10; ++i) { 15183 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15184 for (int i = 0; i < 10; ++i) 15185 ++a; 15186 } 15187 #pragma omp target 15188 #pragma omp teams 15189 #pragma omp distribute 15190 for (int i = 0; i < 10; ++i) { 15191 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15192 for (int i = 0; i < 10; ++i) 15193 ++a; 15194 } 15195 #pragma omp target 15196 #pragma omp teams 15197 #pragma omp distribute 15198 for (int i = 0; i < 10; ++i) { 15199 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15200 for (int i = 0; i < 10; ++i) 15201 ++a; 15202 } 15203 15204 // DISTRIBUTE PARALLEL FOR DIRECTIVE 15205 #pragma omp target 15206 #pragma omp teams 15207 #pragma omp distribute parallel for 15208 for (int i = 0; i < 10; ++i) { 15209 #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?}} 15210 for (int i = 0; i < 10; ++i) 15211 ; 15212 } 15213 15214 #pragma omp target 15215 #pragma omp teams 15216 #pragma omp distribute parallel for 15217 for (int i = 0; i < 10; ++i) { 15218 #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?}} 15219 for (int i = 0; i < 10; ++i) 15220 ; 15221 } 15222 #pragma omp target 15223 #pragma omp teams 15224 #pragma omp distribute parallel for 15225 for (int i = 0; i < 10; ++i) { 15226 #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?}} 15227 for (int i = 0; i < 10; ++i) 15228 ; 15229 } 15230 #pragma omp target 15231 #pragma omp teams 15232 #pragma omp distribute parallel for 15233 for (int i = 0; i < 10; ++i) { 15234 #pragma omp simd 15235 for (int i = 0; i < 10; ++i) 15236 ; 15237 } 15238 #pragma omp target 15239 #pragma omp teams 15240 #pragma omp distribute parallel for 15241 for (int i = 0; i < 10; ++i) { 15242 #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?}} 15243 for (int i = 0; i < 10; ++i) 15244 ; 15245 } 15246 #pragma omp target 15247 #pragma omp teams 15248 #pragma omp distribute parallel for 15249 for (int i = 0; i < 10; ++i) { 15250 #pragma omp parallel 15251 for (int i = 0; i < 10; ++i) 15252 ; 15253 } 15254 #pragma omp target 15255 #pragma omp teams 15256 #pragma omp distribute parallel for 15257 for (int i = 0; i < 10; ++i) { 15258 #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?}} 15259 { 15260 bar(); 15261 } 15262 } 15263 #pragma omp target 15264 #pragma omp teams 15265 #pragma omp distribute parallel for 15266 for (int i = 0; i < 10; ++i) { 15267 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 15268 { 15269 bar(); 15270 } 15271 } 15272 #pragma omp target 15273 #pragma omp teams 15274 #pragma omp distribute parallel for 15275 for (int i = 0; i < 10; ++i) { 15276 #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?}} 15277 { 15278 bar(); 15279 } 15280 } 15281 #pragma omp target 15282 #pragma omp teams 15283 #pragma omp distribute parallel for 15284 for (int i = 0; i < 10; ++i) { 15285 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15286 { 15287 bar(); 15288 } 15289 } 15290 #pragma omp target 15291 #pragma omp teams 15292 #pragma omp distribute parallel for 15293 for (int i = 0; i < 10; ++i) { 15294 #pragma omp critical 15295 { 15296 bar(); 15297 } 15298 } 15299 #pragma omp target 15300 #pragma omp teams 15301 #pragma omp distribute parallel for 15302 for (int i = 0; i < 10; ++i) { 15303 #pragma omp parallel 15304 { 15305 #pragma omp single 15306 { 15307 bar(); 15308 } 15309 } 15310 } 15311 #pragma omp target 15312 #pragma omp teams 15313 #pragma omp distribute parallel for 15314 for (int i = 0; i < 10; ++i) { 15315 #pragma omp parallel for 15316 for (int i = 0; i < 10; ++i) 15317 ; 15318 } 15319 #pragma omp target 15320 #pragma omp teams 15321 #pragma omp distribute parallel for 15322 for (int i = 0; i < 10; ++i) { 15323 #pragma omp parallel for simd 15324 for (int i = 0; i < 10; ++i) 15325 ; 15326 } 15327 #pragma omp target 15328 #pragma omp teams 15329 #pragma omp distribute parallel for 15330 for (int i = 0; i < 10; ++i) { 15331 #pragma omp parallel sections 15332 { 15333 bar(); 15334 } 15335 } 15336 #pragma omp target 15337 #pragma omp teams 15338 #pragma omp distribute parallel for 15339 for (int i = 0; i < 10; ++i) { 15340 #pragma omp task 15341 { 15342 bar(); 15343 } 15344 } 15345 #pragma omp target 15346 #pragma omp teams 15347 #pragma omp distribute parallel for 15348 for (int i = 0; i < 10; ++i) { 15349 #pragma omp taskyield 15350 bar(); 15351 } 15352 #pragma omp target 15353 #pragma omp teams 15354 #pragma omp distribute parallel for 15355 for (int i = 0; i < 10; ++i) { 15356 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15357 bar(); 15358 } 15359 #pragma omp target 15360 #pragma omp teams 15361 #pragma omp distribute parallel for 15362 for (int i = 0; i < 10; ++i) { 15363 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15364 bar(); 15365 } 15366 #pragma omp target 15367 #pragma omp teams 15368 #pragma omp distribute parallel for 15369 for (int i = 0; i < 10; ++i) { 15370 #pragma omp taskwait 15371 bar(); 15372 } 15373 #pragma omp target 15374 #pragma omp teams 15375 #pragma omp distribute parallel for 15376 for (int i = 0; i < 10; ++i) { 15377 #pragma omp flush 15378 bar(); 15379 } 15380 #pragma omp target 15381 #pragma omp teams 15382 #pragma omp distribute parallel for 15383 for (int i = 0; i < 10; ++i) { 15384 #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?}} 15385 bar(); 15386 } 15387 #pragma omp target 15388 #pragma omp teams 15389 #pragma omp distribute parallel for 15390 for (int i = 0; i < 10; ++i) { 15391 #pragma omp atomic 15392 ++a; 15393 } 15394 #pragma omp target 15395 #pragma omp teams 15396 #pragma omp distribute parallel for 15397 for (int i = 0; i < 10; ++i) { 15398 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15399 ++a; 15400 } 15401 #pragma omp target 15402 #pragma omp teams 15403 #pragma omp distribute parallel for 15404 for (int i = 0; i < 10; ++i) { 15405 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15406 ++a; 15407 } 15408 #pragma omp target 15409 #pragma omp teams 15410 #pragma omp distribute parallel for 15411 for (int i = 0; i < 10; ++i) { 15412 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15413 for (int i = 0; i < 10; ++i) 15414 ; 15415 } 15416 #pragma omp target 15417 #pragma omp teams 15418 #pragma omp distribute parallel for 15419 for (int i = 0; i < 10; ++i) { 15420 #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?}} 15421 ++a; 15422 } 15423 #pragma omp target 15424 #pragma omp teams 15425 #pragma omp distribute parallel for 15426 for (int i = 0; i < 10; ++i) { 15427 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15428 ++a; 15429 } 15430 #pragma omp target 15431 #pragma omp teams 15432 #pragma omp distribute parallel for 15433 for (int i = 0; i < 10; ++i) { 15434 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15435 ++a; 15436 } 15437 #pragma omp target 15438 #pragma omp teams 15439 #pragma omp distribute parallel for 15440 for (int i = 0; i < 10; ++i) { 15441 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15442 ++a; 15443 } 15444 #pragma omp target 15445 #pragma omp teams 15446 #pragma omp distribute parallel for 15447 for (int i = 0; i < 10; ++i) { 15448 #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?}} 15449 for (int i = 0; i < 10; ++i) 15450 ++a; 15451 } 15452 #pragma omp target 15453 #pragma omp teams 15454 #pragma omp distribute parallel for 15455 for (int i = 0; i < 10; ++i) { 15456 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15457 for (int i = 0; i < 10; ++i) 15458 ++a; 15459 } 15460 #pragma omp target 15461 #pragma omp teams 15462 #pragma omp distribute parallel for 15463 for (int i = 0; i < 10; ++i) { 15464 #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?}} 15465 for (int i = 0; i < 10; ++i) 15466 ++a; 15467 } 15468 #pragma omp target 15469 #pragma omp teams 15470 #pragma omp distribute parallel for 15471 for (int i = 0; i < 10; ++i) { 15472 #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?}} 15473 for (int i = 0; i < 10; ++i) 15474 ++a; 15475 } 15476 #pragma omp target 15477 #pragma omp teams 15478 #pragma omp distribute parallel for 15479 for (int i = 0; i < 10; ++i) { 15480 #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?}} 15481 for (int i = 0; i < 10; ++i) 15482 ++a; 15483 } 15484 #pragma omp target 15485 #pragma omp teams 15486 #pragma omp distribute parallel for 15487 for (int i = 0; i < 10; ++i) { 15488 #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?}} 15489 for (int i = 0; i < 10; ++i) 15490 ++a; 15491 } 15492 #pragma omp target 15493 #pragma omp teams 15494 #pragma omp distribute parallel for 15495 for (int i = 0; i < 10; ++i) { 15496 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15497 ++a; 15498 } 15499 #pragma omp target 15500 #pragma omp teams 15501 #pragma omp distribute parallel for 15502 for (int i = 0; i < 10; ++i) { 15503 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15504 for (int i = 0; i < 10; ++i) 15505 ++a; 15506 } 15507 #pragma omp target 15508 #pragma omp teams 15509 #pragma omp distribute parallel for 15510 for (int i = 0; i < 10; ++i) { 15511 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15512 for (int i = 0; i < 10; ++i) 15513 ++a; 15514 } 15515 #pragma omp target 15516 #pragma omp teams 15517 #pragma omp distribute parallel for 15518 for (int i = 0; i < 10; ++i) { 15519 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15520 for (int i = 0; i < 10; ++i) 15521 ++a; 15522 } 15523 #pragma omp target 15524 #pragma omp teams 15525 #pragma omp distribute parallel for 15526 for (int i = 0; i < 10; ++i) { 15527 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15528 for (int i = 0; i < 10; ++i) 15529 ++a; 15530 } 15531 15532 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 15533 #pragma omp target 15534 #pragma omp teams 15535 #pragma omp distribute parallel for simd 15536 for (int i = 0; i < 10; ++i) { 15537 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15538 for (int i = 0; i < 10; ++i) 15539 ; 15540 } 15541 #pragma omp target 15542 #pragma omp teams 15543 #pragma omp distribute parallel for simd 15544 for (int i = 0; i < 10; ++i) { 15545 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15546 for (int i = 0; i < 10; ++i) 15547 ; 15548 } 15549 #pragma omp target 15550 #pragma omp teams 15551 #pragma omp distribute parallel for simd 15552 for (int i = 0; i < 10; ++i) { 15553 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15554 for (int i = 0; i < 10; ++i) 15555 ; 15556 } 15557 #pragma omp target 15558 #pragma omp teams 15559 #pragma omp distribute parallel for simd 15560 for (int i = 0; i < 10; ++i) { 15561 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15562 for (int i = 0; i < 10; ++i) 15563 ; 15564 } 15565 #pragma omp target 15566 #pragma omp teams 15567 #pragma omp distribute parallel for simd 15568 for (int i = 0; i < 10; ++i) { 15569 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15570 for (int i = 0; i < 10; ++i) 15571 ; 15572 } 15573 #pragma omp target 15574 #pragma omp teams 15575 #pragma omp distribute parallel for simd 15576 for (int i = 0; i < 10; ++i) { 15577 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15578 for (int i = 0; i < 10; ++i) 15579 ; 15580 } 15581 #pragma omp target 15582 #pragma omp teams 15583 #pragma omp distribute parallel for simd 15584 for (int i = 0; i < 10; ++i) { 15585 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15586 { 15587 bar(); 15588 } 15589 } 15590 #pragma omp target 15591 #pragma omp teams 15592 #pragma omp distribute parallel for simd 15593 for (int i = 0; i < 10; ++i) { 15594 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15595 { 15596 bar(); 15597 } 15598 } 15599 #pragma omp target 15600 #pragma omp teams 15601 #pragma omp distribute parallel for simd 15602 for (int i = 0; i < 10; ++i) { 15603 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15604 { 15605 bar(); 15606 } 15607 } 15608 #pragma omp target 15609 #pragma omp teams 15610 #pragma omp distribute parallel for simd 15611 for (int i = 0; i < 10; ++i) { 15612 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15613 { 15614 bar(); 15615 } 15616 } 15617 #pragma omp target 15618 #pragma omp teams 15619 #pragma omp distribute parallel for simd 15620 for (int i = 0; i < 10; ++i) { 15621 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15622 { 15623 bar(); 15624 } 15625 } 15626 #pragma omp target 15627 #pragma omp teams 15628 #pragma omp distribute parallel for simd 15629 for (int i = 0; i < 10; ++i) { 15630 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15631 { 15632 #pragma omp single 15633 { 15634 bar(); 15635 } 15636 } 15637 } 15638 #pragma omp target 15639 #pragma omp teams 15640 #pragma omp distribute parallel for simd 15641 for (int i = 0; i < 10; ++i) { 15642 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15643 for (int i = 0; i < 10; ++i) 15644 ; 15645 } 15646 #pragma omp target 15647 #pragma omp teams 15648 #pragma omp distribute parallel for simd 15649 for (int i = 0; i < 10; ++i) { 15650 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15651 for (int i = 0; i < 10; ++i) 15652 ; 15653 } 15654 #pragma omp target 15655 #pragma omp teams 15656 #pragma omp distribute parallel for simd 15657 for (int i = 0; i < 10; ++i) { 15658 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15659 { 15660 bar(); 15661 } 15662 } 15663 #pragma omp target 15664 #pragma omp teams 15665 #pragma omp distribute parallel for simd 15666 for (int i = 0; i < 10; ++i) { 15667 #pragma omp task // 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 15674 #pragma omp distribute parallel for simd 15675 for (int i = 0; i < 10; ++i) { 15676 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15677 bar(); 15678 } 15679 #pragma omp target 15680 #pragma omp teams 15681 #pragma omp distribute parallel for simd 15682 for (int i = 0; i < 10; ++i) { 15683 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15684 bar(); 15685 } 15686 #pragma omp target 15687 #pragma omp teams 15688 #pragma omp distribute parallel for simd 15689 for (int i = 0; i < 10; ++i) { 15690 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15691 bar(); 15692 } 15693 #pragma omp target 15694 #pragma omp teams 15695 #pragma omp distribute parallel for simd 15696 for (int i = 0; i < 10; ++i) { 15697 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15698 bar(); 15699 } 15700 #pragma omp target 15701 #pragma omp teams 15702 #pragma omp distribute parallel for simd 15703 for (int i = 0; i < 10; ++i) { 15704 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15705 bar(); 15706 } 15707 #pragma omp target 15708 #pragma omp teams 15709 #pragma omp distribute parallel for simd 15710 for (int i = 0; i < 10; ++i) { 15711 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15712 bar(); 15713 } 15714 #pragma omp target 15715 #pragma omp teams 15716 #pragma omp distribute parallel for simd 15717 for (int i = 0; i < 10; ++i) { 15718 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15719 ++a; 15720 } 15721 #pragma omp target 15722 #pragma omp teams 15723 #pragma omp distribute parallel for simd 15724 for (int i = 0; i < 10; ++i) { 15725 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15726 ++a; 15727 } 15728 #pragma omp target 15729 #pragma omp teams 15730 #pragma omp distribute parallel for simd 15731 for (int i = 0; i < 10; ++i) { 15732 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15733 ++a; 15734 } 15735 #pragma omp target 15736 #pragma omp teams 15737 #pragma omp distribute parallel for simd 15738 for (int i = 0; i < 10; ++i) { 15739 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15740 ++a; 15741 } 15742 #pragma omp target 15743 #pragma omp teams 15744 #pragma omp distribute parallel for simd 15745 for (int i = 0; i < 10; ++i) { 15746 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15747 ++a; 15748 } 15749 #pragma omp target 15750 #pragma omp teams 15751 #pragma omp distribute parallel for simd 15752 for (int i = 0; i < 10; ++i) { 15753 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15754 ++a; 15755 } 15756 #pragma omp target 15757 #pragma omp teams 15758 #pragma omp distribute parallel for simd 15759 for (int i = 0; i < 10; ++i) { 15760 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15761 ++a; 15762 } 15763 #pragma omp target 15764 #pragma omp teams 15765 #pragma omp distribute parallel for simd 15766 for (int i = 0; i < 10; ++i) { 15767 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15768 for (int i = 0; i < 10; ++i) 15769 ; 15770 } 15771 #pragma omp target 15772 #pragma omp teams 15773 #pragma omp distribute parallel for simd 15774 for (int i = 0; i < 10; ++i) { 15775 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15776 for (int i = 0; i < 10; ++i) 15777 ; 15778 } 15779 #pragma omp target 15780 #pragma omp teams 15781 #pragma omp distribute parallel for simd 15782 for (int i = 0; i < 10; ++i) { 15783 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15784 for (int i = 0; i < 10; ++i) 15785 ; 15786 } 15787 #pragma omp target 15788 #pragma omp teams 15789 #pragma omp distribute parallel for simd 15790 for (int i = 0; i < 10; ++i) { 15791 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15792 for (int i = 0; i < 10; ++i) 15793 ; 15794 } 15795 #pragma omp target 15796 #pragma omp teams 15797 #pragma omp distribute parallel for simd 15798 for (int i = 0; i < 10; ++i) { 15799 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15800 for (int i = 0; i < 10; ++i) 15801 ; 15802 } 15803 #pragma omp target 15804 #pragma omp teams 15805 #pragma omp distribute parallel for simd 15806 for (int i = 0; i < 10; ++i) { 15807 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15808 for (int i = 0; i < 10; ++i) 15809 ; 15810 } 15811 #pragma omp target 15812 #pragma omp teams 15813 #pragma omp distribute parallel for simd 15814 for (int i = 0; i < 10; ++i) { 15815 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15816 a++; 15817 } 15818 #pragma omp target 15819 #pragma omp teams 15820 #pragma omp distribute parallel for simd 15821 for (int i = 0; i < 10; ++i) { 15822 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15823 for (int i = 0; i < 10; ++i) 15824 ; 15825 } 15826 #pragma omp target 15827 #pragma omp teams 15828 #pragma omp distribute parallel for simd 15829 for (int i = 0; i < 10; ++i) { 15830 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15831 for (int i = 0; i < 10; ++i) 15832 ; 15833 } 15834 #pragma omp target 15835 #pragma omp teams 15836 #pragma omp distribute parallel for simd 15837 for (int i = 0; i < 10; ++i) { 15838 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15839 for (int i = 0; i < 10; ++i) 15840 ; 15841 } 15842 #pragma omp target 15843 #pragma omp teams 15844 #pragma omp distribute parallel for simd 15845 for (int i = 0; i < 10; ++i) { 15846 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15847 for (int i = 0; i < 10; ++i) 15848 ; 15849 } 15850 15851 // DISTRIBUTE SIMD DIRECTIVE 15852 #pragma omp target 15853 #pragma omp teams 15854 #pragma omp distribute simd 15855 for (int i = 0; i < 10; ++i) { 15856 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15857 for (int i = 0; i < 10; ++i) 15858 ; 15859 } 15860 #pragma omp target 15861 #pragma omp teams 15862 #pragma omp distribute simd 15863 for (int i = 0; i < 10; ++i) { 15864 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15865 for (int i = 0; i < 10; ++i) 15866 ; 15867 } 15868 #pragma omp target 15869 #pragma omp teams 15870 #pragma omp distribute simd 15871 for (int i = 0; i < 10; ++i) { 15872 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15873 for (int i = 0; i < 10; ++i) 15874 ; 15875 } 15876 #pragma omp target 15877 #pragma omp teams 15878 #pragma omp distribute simd 15879 for (int i = 0; i < 10; ++i) { 15880 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15881 for (int i = 0; i < 10; ++i) 15882 ; 15883 } 15884 #pragma omp target 15885 #pragma omp teams 15886 #pragma omp distribute simd 15887 for (int i = 0; i < 10; ++i) { 15888 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15889 for (int i = 0; i < 10; ++i) 15890 ; 15891 } 15892 #pragma omp target 15893 #pragma omp teams 15894 #pragma omp distribute simd 15895 for (int i = 0; i < 10; ++i) { 15896 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15897 for (int i = 0; i < 10; ++i) 15898 ; 15899 } 15900 #pragma omp target 15901 #pragma omp teams 15902 #pragma omp distribute simd 15903 for (int i = 0; i < 10; ++i) { 15904 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15905 { 15906 bar(); 15907 } 15908 } 15909 #pragma omp target 15910 #pragma omp teams 15911 #pragma omp distribute simd 15912 for (int i = 0; i < 10; ++i) { 15913 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15914 { 15915 bar(); 15916 } 15917 } 15918 #pragma omp target 15919 #pragma omp teams 15920 #pragma omp distribute simd 15921 for (int i = 0; i < 10; ++i) { 15922 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15923 { 15924 bar(); 15925 } 15926 } 15927 #pragma omp target 15928 #pragma omp teams 15929 #pragma omp distribute simd 15930 for (int i = 0; i < 10; ++i) { 15931 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15932 { 15933 bar(); 15934 } 15935 } 15936 #pragma omp target 15937 #pragma omp teams 15938 #pragma omp distribute simd 15939 for (int i = 0; i < 10; ++i) { 15940 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15941 { 15942 bar(); 15943 } 15944 } 15945 #pragma omp target 15946 #pragma omp teams 15947 #pragma omp distribute simd 15948 for (int i = 0; i < 10; ++i) { 15949 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15950 { 15951 #pragma omp single 15952 { 15953 bar(); 15954 } 15955 } 15956 } 15957 #pragma omp target 15958 #pragma omp teams 15959 #pragma omp distribute simd 15960 for (int i = 0; i < 10; ++i) { 15961 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15962 for (int i = 0; i < 10; ++i) 15963 ; 15964 } 15965 #pragma omp target 15966 #pragma omp teams 15967 #pragma omp distribute simd 15968 for (int i = 0; i < 10; ++i) { 15969 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15970 for (int i = 0; i < 10; ++i) 15971 ; 15972 } 15973 #pragma omp target 15974 #pragma omp teams 15975 #pragma omp distribute simd 15976 for (int i = 0; i < 10; ++i) { 15977 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15978 { 15979 bar(); 15980 } 15981 } 15982 #pragma omp target 15983 #pragma omp teams 15984 #pragma omp distribute simd 15985 for (int i = 0; i < 10; ++i) { 15986 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15987 { 15988 bar(); 15989 } 15990 } 15991 #pragma omp target 15992 #pragma omp teams 15993 #pragma omp distribute simd 15994 for (int i = 0; i < 10; ++i) { 15995 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15996 bar(); 15997 } 15998 #pragma omp target 15999 #pragma omp teams 16000 #pragma omp distribute simd 16001 for (int i = 0; i < 10; ++i) { 16002 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16003 bar(); 16004 } 16005 #pragma omp target 16006 #pragma omp teams 16007 #pragma omp distribute simd 16008 for (int i = 0; i < 10; ++i) { 16009 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16010 bar(); 16011 } 16012 #pragma omp target 16013 #pragma omp teams 16014 #pragma omp distribute simd 16015 for (int i = 0; i < 10; ++i) { 16016 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16017 bar(); 16018 } 16019 #pragma omp target 16020 #pragma omp teams 16021 #pragma omp distribute simd 16022 for (int i = 0; i < 10; ++i) { 16023 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16024 bar(); 16025 } 16026 #pragma omp target 16027 #pragma omp teams 16028 #pragma omp distribute simd 16029 for (int i = 0; i < 10; ++i) { 16030 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16031 bar(); 16032 } 16033 #pragma omp target 16034 #pragma omp teams 16035 #pragma omp distribute simd 16036 for (int i = 0; i < 10; ++i) { 16037 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16038 ++a; 16039 } 16040 #pragma omp target 16041 #pragma omp teams 16042 #pragma omp distribute simd 16043 for (int i = 0; i < 10; ++i) { 16044 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16045 ++a; 16046 } 16047 #pragma omp target 16048 #pragma omp teams 16049 #pragma omp distribute simd 16050 for (int i = 0; i < 10; ++i) { 16051 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16052 ++a; 16053 } 16054 #pragma omp target 16055 #pragma omp teams 16056 #pragma omp distribute simd 16057 for (int i = 0; i < 10; ++i) { 16058 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16059 ++a; 16060 } 16061 #pragma omp target 16062 #pragma omp teams 16063 #pragma omp distribute simd 16064 for (int i = 0; i < 10; ++i) { 16065 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16066 ++a; 16067 } 16068 #pragma omp target 16069 #pragma omp teams 16070 #pragma omp distribute simd 16071 for (int i = 0; i < 10; ++i) { 16072 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16073 ++a; 16074 } 16075 #pragma omp target 16076 #pragma omp teams 16077 #pragma omp distribute simd 16078 for (int i = 0; i < 10; ++i) { 16079 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16080 ++a; 16081 } 16082 #pragma omp target 16083 #pragma omp teams 16084 #pragma omp distribute simd 16085 for (int i = 0; i < 10; ++i) { 16086 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16087 for (int i = 0; i < 10; ++i) 16088 ; 16089 } 16090 #pragma omp target 16091 #pragma omp teams 16092 #pragma omp distribute simd 16093 for (int i = 0; i < 10; ++i) { 16094 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16095 for (int i = 0; i < 10; ++i) 16096 ; 16097 } 16098 #pragma omp target 16099 #pragma omp teams 16100 #pragma omp distribute simd 16101 for (int i = 0; i < 10; ++i) { 16102 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16103 for (int i = 0; i < 10; ++i) 16104 ; 16105 } 16106 #pragma omp target 16107 #pragma omp teams 16108 #pragma omp distribute simd 16109 for (int i = 0; i < 10; ++i) { 16110 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16111 for (int i = 0; i < 10; ++i) 16112 ; 16113 } 16114 #pragma omp target 16115 #pragma omp teams 16116 #pragma omp distribute simd 16117 for (int i = 0; i < 10; ++i) { 16118 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16119 for (int i = 0; i < 10; ++i) 16120 ; 16121 } 16122 #pragma omp target 16123 #pragma omp teams 16124 #pragma omp distribute simd 16125 for (int i = 0; i < 10; ++i) { 16126 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16127 for (int i = 0; i < 10; ++i) 16128 ; 16129 } 16130 #pragma omp target 16131 #pragma omp teams 16132 #pragma omp distribute simd 16133 for (int i = 0; i < 10; ++i) { 16134 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16135 a++; 16136 } 16137 #pragma omp target 16138 #pragma omp teams 16139 #pragma omp distribute simd 16140 for (int i = 0; i < 10; ++i) { 16141 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16142 for (int i = 0; i < 10; ++i) 16143 ; 16144 } 16145 #pragma omp target 16146 #pragma omp teams 16147 #pragma omp distribute 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 ; 16152 } 16153 #pragma omp target 16154 #pragma omp teams 16155 #pragma omp distribute simd 16156 for (int i = 0; i < 10; ++i) { 16157 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16158 for (int i = 0; i < 10; ++i) 16159 ; 16160 } 16161 #pragma omp target 16162 #pragma omp teams 16163 #pragma omp distribute simd 16164 for (int i = 0; i < 10; ++i) { 16165 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16166 for (int i = 0; i < 10; ++i) 16167 ; 16168 } 16169 16170 // TARGET SIMD DIRECTIVE 16171 #pragma omp target simd 16172 for (int i = 0; i < 10; ++i) { 16173 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16174 for (int i = 0; i < 10; ++i) 16175 ; 16176 } 16177 #pragma omp target simd 16178 for (int i = 0; i < 10; ++i) { 16179 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16180 for (int i = 0; i < 10; ++i) 16181 ; 16182 } 16183 #pragma omp target simd 16184 for (int i = 0; i < 10; ++i) { 16185 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16186 for (int i = 0; i < 10; ++i) 16187 ; 16188 } 16189 #pragma omp target simd 16190 for (int i = 0; i < 10; ++i) { 16191 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16192 for (int i = 0; i < 10; ++i) 16193 ; 16194 } 16195 #pragma omp target simd 16196 for (int i = 0; i < 10; ++i) { 16197 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16198 for (int i = 0; i < 10; ++i) 16199 ; 16200 } 16201 #pragma omp target simd 16202 for (int i = 0; i < 10; ++i) { 16203 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16204 for (int i = 0; i < 10; ++i) 16205 ; 16206 } 16207 #pragma omp target simd 16208 for (int i = 0; i < 10; ++i) { 16209 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16210 { 16211 bar(); 16212 } 16213 } 16214 #pragma omp target simd 16215 for (int i = 0; i < 10; ++i) { 16216 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16217 { 16218 bar(); 16219 } 16220 } 16221 #pragma omp target simd 16222 for (int i = 0; i < 10; ++i) { 16223 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16224 { 16225 bar(); 16226 } 16227 } 16228 #pragma omp target simd 16229 for (int i = 0; i < 10; ++i) { 16230 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16231 { 16232 bar(); 16233 } 16234 } 16235 #pragma omp target simd 16236 for (int i = 0; i < 10; ++i) { 16237 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16238 { 16239 bar(); 16240 } 16241 } 16242 #pragma omp target simd 16243 for (int i = 0; i < 10; ++i) { 16244 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16245 { 16246 #pragma omp single 16247 { 16248 bar(); 16249 } 16250 } 16251 } 16252 #pragma omp target simd 16253 for (int i = 0; i < 10; ++i) { 16254 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16255 for (int i = 0; i < 10; ++i) 16256 ; 16257 } 16258 #pragma omp target simd 16259 for (int i = 0; i < 10; ++i) { 16260 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16261 for (int i = 0; i < 10; ++i) 16262 ; 16263 } 16264 #pragma omp target simd 16265 for (int i = 0; i < 10; ++i) { 16266 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16267 { 16268 bar(); 16269 } 16270 } 16271 #pragma omp target simd 16272 for (int i = 0; i < 10; ++i) { 16273 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16274 { 16275 bar(); 16276 } 16277 } 16278 #pragma omp target simd 16279 for (int i = 0; i < 10; ++i) { 16280 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16281 bar(); 16282 } 16283 #pragma omp target simd 16284 for (int i = 0; i < 10; ++i) { 16285 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16286 bar(); 16287 } 16288 #pragma omp target simd 16289 for (int i = 0; i < 10; ++i) { 16290 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16291 bar(); 16292 } 16293 #pragma omp target simd 16294 for (int i = 0; i < 10; ++i) { 16295 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16296 bar(); 16297 } 16298 #pragma omp target simd 16299 for (int i = 0; i < 10; ++i) { 16300 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16301 bar(); 16302 } 16303 #pragma omp target simd 16304 for (int i = 0; i < 10; ++i) { 16305 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16306 bar(); 16307 } 16308 #pragma omp target simd 16309 for (int i = 0; i < 10; ++i) { 16310 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16311 ++a; 16312 } 16313 #pragma omp target simd 16314 for (int i = 0; i < 10; ++i) { 16315 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16316 ++a; 16317 } 16318 #pragma omp target simd 16319 for (int i = 0; i < 10; ++i) { 16320 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16321 ++a; 16322 } 16323 #pragma omp target simd 16324 for (int i = 0; i < 10; ++i) { 16325 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16326 ++a; 16327 } 16328 #pragma omp target simd 16329 for (int i = 0; i < 10; ++i) { 16330 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16331 ++a; 16332 } 16333 #pragma omp target simd 16334 for (int i = 0; i < 10; ++i) { 16335 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16336 ++a; 16337 } 16338 #pragma omp target simd 16339 for (int i = 0; i < 10; ++i) { 16340 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16341 ++a; 16342 } 16343 #pragma omp target simd 16344 for (int i = 0; i < 10; ++i) { 16345 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16346 for (int i = 0; i < 10; ++i) 16347 ; 16348 } 16349 #pragma omp target simd 16350 for (int i = 0; i < 10; ++i) { 16351 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16352 for (int i = 0; i < 10; ++i) 16353 ; 16354 } 16355 #pragma omp target simd 16356 for (int i = 0; i < 10; ++i) { 16357 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16358 for (int i = 0; i < 10; ++i) 16359 ; 16360 } 16361 #pragma omp target simd 16362 for (int i = 0; i < 10; ++i) { 16363 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16364 for (int i = 0; i < 10; ++i) 16365 ; 16366 } 16367 #pragma omp target simd 16368 for (int i = 0; i < 10; ++i) { 16369 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16370 for (int i = 0; i < 10; ++i) 16371 ; 16372 } 16373 #pragma omp target simd 16374 for (int i = 0; i < 10; ++i) { 16375 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16376 for (int i = 0; i < 10; ++i) 16377 ; 16378 } 16379 #pragma omp target simd 16380 for (int i = 0; i < 10; ++i) { 16381 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16382 a++; 16383 } 16384 #pragma omp target simd 16385 for (int i = 0; i < 10; ++i) { 16386 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16387 for (int i = 0; i < 10; ++i) 16388 ; 16389 } 16390 #pragma omp target simd 16391 for (int i = 0; i < 10; ++i) { 16392 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16393 for (int i = 0; i < 10; ++i) 16394 ; 16395 } 16396 #pragma omp target simd 16397 for (int i = 0; i < 10; ++i) { 16398 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16399 for (int i = 0; i < 10; ++i) 16400 ; 16401 } 16402 #pragma omp target simd 16403 for (int i = 0; i < 10; ++i) { 16404 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16405 for (int i = 0; i < 10; ++i) 16406 ; 16407 } 16408 16409 // TEAMS DISTRIBUTE DIRECTIVE 16410 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16411 for (int i = 0; i < 10; ++i) 16412 ; 16413 #pragma omp target 16414 #pragma omp teams distribute 16415 for (int i = 0; i < 10; ++i) { 16416 #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?}} 16417 for (int i = 0; i < 10; ++i) 16418 ; 16419 } 16420 #pragma omp target 16421 #pragma omp teams distribute 16422 for (int i = 0; i < 10; ++i) { 16423 #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?}} 16424 for (int i = 0; i < 10; ++i) 16425 ; 16426 } 16427 #pragma omp target 16428 #pragma omp teams distribute 16429 for (int i = 0; i < 10; ++i) { 16430 #pragma omp for // OK 16431 for (int i = 0; i < 10; ++i) 16432 ; 16433 } 16434 #pragma omp target 16435 #pragma omp teams distribute 16436 for (int i = 0; i < 10; ++i) { 16437 #pragma omp simd // OK 16438 for (int i = 0; i < 10; ++i) 16439 ; 16440 } 16441 #pragma omp target 16442 #pragma omp teams distribute 16443 for (int i = 0; i < 10; ++i) { 16444 #pragma omp for simd // OK 16445 for (int i = 0; i < 10; ++i) 16446 ; 16447 } 16448 #pragma omp target 16449 #pragma omp teams distribute 16450 for (int i = 0; i < 10; ++i) { 16451 #pragma omp parallel // OK 16452 for (int i = 0; i < 10; ++i) 16453 ; 16454 } 16455 #pragma omp target 16456 #pragma omp teams distribute 16457 for (int i = 0; i < 10; ++i) { 16458 #pragma omp sections // OK 16459 { 16460 bar(); 16461 } 16462 } 16463 #pragma omp target 16464 #pragma omp teams distribute 16465 for (int i = 0; i < 10; ++i) { 16466 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 16467 { 16468 bar(); 16469 } 16470 } 16471 #pragma omp target 16472 #pragma omp teams distribute 16473 for (int i = 0; i < 10; ++i) { 16474 #pragma omp single // OK 16475 { 16476 bar(); 16477 } 16478 } 16479 #pragma omp target 16480 #pragma omp teams distribute 16481 for (int i = 0; i < 10; ++i) { 16482 #pragma omp master // OK 16483 { 16484 bar(); 16485 } 16486 } 16487 #pragma omp target 16488 #pragma omp teams distribute 16489 for (int i = 0; i < 10; ++i) { 16490 #pragma omp critical // OK 16491 { 16492 bar(); 16493 } 16494 } 16495 #pragma omp target 16496 #pragma omp teams distribute 16497 for (int i = 0; i < 10; ++i) { 16498 #pragma omp parallel // OK 16499 { 16500 #pragma omp single 16501 { 16502 bar(); 16503 } 16504 } 16505 } 16506 #pragma omp target 16507 #pragma omp teams distribute 16508 for (int i = 0; i < 10; ++i) { 16509 #pragma omp parallel for // OK 16510 for (int i = 0; i < 10; ++i) 16511 ; 16512 } 16513 #pragma omp target 16514 #pragma omp teams distribute 16515 for (int i = 0; i < 10; ++i) { 16516 #pragma omp parallel for simd // OK 16517 for (int i = 0; i < 10; ++i) 16518 ; 16519 } 16520 #pragma omp target 16521 #pragma omp teams distribute 16522 for (int i = 0; i < 10; ++i) { 16523 #pragma omp parallel sections // OK 16524 { 16525 bar(); 16526 } 16527 } 16528 #pragma omp target 16529 #pragma omp teams distribute 16530 for (int i = 0; i < 10; ++i) { 16531 #pragma omp task // OK 16532 { 16533 bar(); 16534 } 16535 } 16536 #pragma omp target 16537 #pragma omp teams distribute 16538 for (int i = 0; i < 10; ++i) { 16539 #pragma omp taskyield // OK 16540 bar(); 16541 } 16542 #pragma omp target 16543 #pragma omp teams distribute 16544 for (int i = 0; i < 10; ++i) { 16545 #pragma omp barrier // OK 16546 bar(); 16547 } 16548 #pragma omp target 16549 #pragma omp teams distribute 16550 for (int i = 0; i < 10; ++i) { 16551 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16552 bar(); 16553 } 16554 #pragma omp target 16555 #pragma omp teams distribute 16556 for (int i = 0; i < 10; ++i) { 16557 #pragma omp taskwait // OK 16558 bar(); 16559 } 16560 #pragma omp target 16561 #pragma omp teams distribute 16562 for (int i = 0; i < 10; ++i) { 16563 #pragma omp flush // OK 16564 bar(); 16565 } 16566 #pragma omp target 16567 #pragma omp teams distribute 16568 for (int i = 0; i < 10; ++i) { 16569 #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?}} 16570 bar(); 16571 } 16572 #pragma omp target 16573 #pragma omp teams distribute 16574 for (int i = 0; i < 10; ++i) { 16575 #pragma omp atomic // OK 16576 ++a; 16577 } 16578 #pragma omp target 16579 #pragma omp teams distribute 16580 for (int i = 0; i < 10; ++i) { 16581 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16582 ++a; 16583 } 16584 #pragma omp target 16585 #pragma omp teams distribute 16586 for (int i = 0; i < 10; ++i) { 16587 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16588 ++a; 16589 } 16590 #pragma omp target 16591 #pragma omp teams distribute 16592 for (int i = 0; i < 10; ++i) { 16593 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16594 for (int i = 0; i < 10; ++i) 16595 ; 16596 } 16597 #pragma omp target 16598 #pragma omp teams distribute 16599 for (int i = 0; i < 10; ++i) { 16600 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16601 ++a; 16602 } 16603 #pragma omp target 16604 #pragma omp teams distribute 16605 for (int i = 0; i < 10; ++i) { 16606 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16607 ++a; 16608 } 16609 #pragma omp target 16610 #pragma omp teams distribute 16611 for (int i = 0; i < 10; ++i) { 16612 #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?}} 16613 ++a; 16614 } 16615 #pragma omp target 16616 #pragma omp teams distribute 16617 for (int i = 0; i < 10; ++i) { 16618 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16619 ++a; 16620 } 16621 #pragma omp target 16622 #pragma omp teams distribute 16623 for (int i = 0; i < 10; ++i) { 16624 #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?}} 16625 for (int i = 0; i < 10; ++i) 16626 ++a; 16627 } 16628 #pragma omp target 16629 #pragma omp teams distribute 16630 for (int i = 0; i < 10; ++i) { 16631 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16632 for (int i = 0; i < 10; ++i) 16633 ++a; 16634 } 16635 #pragma omp target 16636 #pragma omp teams distribute 16637 for (int i = 0; i < 10; ++i) { 16638 #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?}} 16639 for (int i = 0; i < 10; ++i) 16640 ++a; 16641 } 16642 #pragma omp target 16643 #pragma omp teams distribute 16644 for (int i = 0; i < 10; ++i) { 16645 #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?}} 16646 for (int i = 0; i < 10; ++i) 16647 ++a; 16648 } 16649 #pragma omp target 16650 #pragma omp teams distribute 16651 for (int i = 0; i < 10; ++i) { 16652 #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?}} 16653 for (int i = 0; i < 10; ++i) 16654 ++a; 16655 } 16656 #pragma omp target 16657 #pragma omp teams distribute 16658 for (int i = 0; i < 10; ++i) { 16659 #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?}} 16660 for (int i = 0; i < 10; ++i) 16661 ++a; 16662 } 16663 #pragma omp target 16664 #pragma omp teams distribute 16665 for (int i = 0; i < 10; ++i) { 16666 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16667 ++a; 16668 } 16669 #pragma omp target 16670 #pragma omp teams distribute 16671 for (int i = 0; i < 10; ++i) { 16672 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16673 for (int i = 0; i < 10; ++i) 16674 ++a; 16675 } 16676 #pragma omp target 16677 #pragma omp teams distribute 16678 for (int i = 0; i < 10; ++i) { 16679 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16680 for (int i = 0; i < 10; ++i) 16681 ++a; 16682 } 16683 #pragma omp target 16684 #pragma omp teams distribute 16685 for (int i = 0; i < 10; ++i) { 16686 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16687 for (int i = 0; i < 10; ++i) 16688 ++a; 16689 } 16690 #pragma omp target 16691 #pragma omp teams distribute 16692 for (int i = 0; i < 10; ++i) { 16693 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16694 for (int i = 0; i < 10; ++i) 16695 ++a; 16696 } 16697 16698 // TEAMS DISTRIBUTE SIMD DIRECTIVE 16699 #pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16700 for (int i = 0; i < 10; ++i) 16701 ; 16702 #pragma omp target 16703 #pragma omp teams distribute simd 16704 for (int i = 0; i < 10; ++i) { 16705 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16706 for (int i = 0; i < 10; ++i) 16707 ; 16708 } 16709 #pragma omp target 16710 #pragma omp teams distribute simd 16711 for (int i = 0; i < 10; ++i) { 16712 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16713 for (int i = 0; i < 10; ++i) 16714 ; 16715 } 16716 #pragma omp target 16717 #pragma omp teams distribute simd 16718 for (int i = 0; i < 10; ++i) { 16719 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16720 for (int i = 0; i < 10; ++i) 16721 ; 16722 } 16723 #pragma omp target 16724 #pragma omp teams distribute simd 16725 for (int i = 0; i < 10; ++i) { 16726 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16727 for (int i = 0; i < 10; ++i) 16728 ; 16729 } 16730 #pragma omp target 16731 #pragma omp teams distribute simd 16732 for (int i = 0; i < 10; ++i) { 16733 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16734 for (int i = 0; i < 10; ++i) 16735 ; 16736 } 16737 #pragma omp target 16738 #pragma omp teams distribute simd 16739 for (int i = 0; i < 10; ++i) { 16740 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16741 for (int i = 0; i < 10; ++i) 16742 ; 16743 } 16744 #pragma omp target 16745 #pragma omp teams distribute simd 16746 for (int i = 0; i < 10; ++i) { 16747 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16748 { 16749 bar(); 16750 } 16751 } 16752 #pragma omp target 16753 #pragma omp teams distribute simd 16754 for (int i = 0; i < 10; ++i) { 16755 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16756 { 16757 bar(); 16758 } 16759 } 16760 #pragma omp target 16761 #pragma omp teams distribute simd 16762 for (int i = 0; i < 10; ++i) { 16763 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16764 { 16765 bar(); 16766 } 16767 } 16768 #pragma omp target 16769 #pragma omp teams distribute simd 16770 for (int i = 0; i < 10; ++i) { 16771 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16772 { 16773 bar(); 16774 } 16775 } 16776 #pragma omp target 16777 #pragma omp teams distribute simd 16778 for (int i = 0; i < 10; ++i) { 16779 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16780 { 16781 bar(); 16782 } 16783 } 16784 #pragma omp target 16785 #pragma omp teams distribute simd 16786 for (int i = 0; i < 10; ++i) { 16787 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16788 { 16789 #pragma omp single 16790 { 16791 bar(); 16792 } 16793 } 16794 } 16795 #pragma omp target 16796 #pragma omp teams distribute simd 16797 for (int i = 0; i < 10; ++i) { 16798 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16799 for (int i = 0; i < 10; ++i) 16800 ; 16801 } 16802 #pragma omp target 16803 #pragma omp teams distribute simd 16804 for (int i = 0; i < 10; ++i) { 16805 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16806 for (int i = 0; i < 10; ++i) 16807 ; 16808 } 16809 #pragma omp target 16810 #pragma omp teams distribute simd 16811 for (int i = 0; i < 10; ++i) { 16812 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16813 { 16814 bar(); 16815 } 16816 } 16817 #pragma omp target 16818 #pragma omp teams distribute simd 16819 for (int i = 0; i < 10; ++i) { 16820 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16821 { 16822 bar(); 16823 } 16824 } 16825 #pragma omp target 16826 #pragma omp teams distribute simd 16827 for (int i = 0; i < 10; ++i) { 16828 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16829 bar(); 16830 } 16831 #pragma omp target 16832 #pragma omp teams distribute simd 16833 for (int i = 0; i < 10; ++i) { 16834 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16835 bar(); 16836 } 16837 #pragma omp target 16838 #pragma omp teams distribute simd 16839 for (int i = 0; i < 10; ++i) { 16840 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16841 bar(); 16842 } 16843 #pragma omp target 16844 #pragma omp teams distribute simd 16845 for (int i = 0; i < 10; ++i) { 16846 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16847 bar(); 16848 } 16849 #pragma omp target 16850 #pragma omp teams distribute simd 16851 for (int i = 0; i < 10; ++i) { 16852 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16853 bar(); 16854 } 16855 #pragma omp target 16856 #pragma omp teams distribute simd 16857 for (int i = 0; i < 10; ++i) { 16858 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16859 bar(); 16860 } 16861 #pragma omp target 16862 #pragma omp teams distribute simd 16863 for (int i = 0; i < 10; ++i) { 16864 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16865 ++a; 16866 } 16867 #pragma omp target 16868 #pragma omp teams distribute simd 16869 for (int i = 0; i < 10; ++i) { 16870 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16871 ++a; 16872 } 16873 #pragma omp target 16874 #pragma omp teams distribute simd 16875 for (int i = 0; i < 10; ++i) { 16876 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16877 ++a; 16878 } 16879 #pragma omp target 16880 #pragma omp teams distribute simd 16881 for (int i = 0; i < 10; ++i) { 16882 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16883 for (int i = 0; i < 10; ++i) 16884 ; 16885 } 16886 #pragma omp target 16887 #pragma omp teams distribute simd 16888 for (int i = 0; i < 10; ++i) { 16889 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16890 ++a; 16891 } 16892 #pragma omp target 16893 #pragma omp teams distribute simd 16894 for (int i = 0; i < 10; ++i) { 16895 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16896 ++a; 16897 } 16898 #pragma omp target 16899 #pragma omp teams distribute simd 16900 for (int i = 0; i < 10; ++i) { 16901 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16902 ++a; 16903 } 16904 #pragma omp target 16905 #pragma omp teams distribute simd 16906 for (int i = 0; i < 10; ++i) { 16907 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16908 ++a; 16909 } 16910 #pragma omp target 16911 #pragma omp teams distribute simd 16912 for (int i = 0; i < 10; ++i) { 16913 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16914 for (int i = 0; i < 10; ++i) 16915 ++a; 16916 } 16917 #pragma omp target 16918 #pragma omp teams distribute simd 16919 for (int i = 0; i < 10; ++i) { 16920 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16921 for (int i = 0; i < 10; ++i) 16922 ++a; 16923 } 16924 #pragma omp target 16925 #pragma omp teams distribute simd 16926 for (int i = 0; i < 10; ++i) { 16927 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16928 for (int i = 0; i < 10; ++i) 16929 ++a; 16930 } 16931 #pragma omp target 16932 #pragma omp teams distribute simd 16933 for (int i = 0; i < 10; ++i) { 16934 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16935 for (int i = 0; i < 10; ++i) 16936 ++a; 16937 } 16938 #pragma omp target 16939 #pragma omp teams distribute simd 16940 for (int i = 0; i < 10; ++i) { 16941 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16942 for (int i = 0; i < 10; ++i) 16943 ++a; 16944 } 16945 #pragma omp target 16946 #pragma omp teams distribute simd 16947 for (int i = 0; i < 10; ++i) { 16948 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16949 for (int i = 0; i < 10; ++i) 16950 ++a; 16951 } 16952 #pragma omp target 16953 #pragma omp teams distribute simd 16954 for (int i = 0; i < 10; ++i) { 16955 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16956 ++a; 16957 } 16958 #pragma omp target 16959 #pragma omp teams distribute simd 16960 for (int i = 0; i < 10; ++i) { 16961 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16962 for (int i = 0; i < 10; ++i) 16963 ++a; 16964 } 16965 #pragma omp target 16966 #pragma omp teams distribute simd 16967 for (int i = 0; i < 10; ++i) { 16968 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16969 for (int i = 0; i < 10; ++i) 16970 ++a; 16971 } 16972 #pragma omp target 16973 #pragma omp teams distribute simd 16974 for (int i = 0; i < 10; ++i) { 16975 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16976 for (int i = 0; i < 10; ++i) 16977 ++a; 16978 } 16979 #pragma omp target 16980 #pragma omp teams distribute simd 16981 for (int i = 0; i < 10; ++i) { 16982 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16983 for (int i = 0; i < 10; ++i) 16984 ++a; 16985 } 16986 16987 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 16988 #pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16989 for (int i = 0; i < 10; ++i) 16990 ; 16991 #pragma omp target 16992 #pragma omp teams distribute parallel for simd 16993 for (int i = 0; i < 10; ++i) { 16994 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16995 for (int i = 0; i < 10; ++i) 16996 ; 16997 } 16998 #pragma omp target 16999 #pragma omp teams distribute parallel for simd 17000 for (int i = 0; i < 10; ++i) { 17001 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17002 for (int i = 0; i < 10; ++i) 17003 ; 17004 } 17005 #pragma omp target 17006 #pragma omp teams distribute parallel for simd 17007 for (int i = 0; i < 10; ++i) { 17008 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17009 for (int i = 0; i < 10; ++i) 17010 ; 17011 } 17012 #pragma omp target 17013 #pragma omp teams distribute parallel for simd 17014 for (int i = 0; i < 10; ++i) { 17015 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17016 for (int i = 0; i < 10; ++i) 17017 ; 17018 } 17019 #pragma omp target 17020 #pragma omp teams distribute parallel for simd 17021 for (int i = 0; i < 10; ++i) { 17022 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17023 for (int i = 0; i < 10; ++i) 17024 ; 17025 } 17026 #pragma omp target 17027 #pragma omp teams distribute parallel for simd 17028 for (int i = 0; i < 10; ++i) { 17029 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17030 for (int i = 0; i < 10; ++i) 17031 ; 17032 } 17033 #pragma omp target 17034 #pragma omp teams distribute parallel for simd 17035 for (int i = 0; i < 10; ++i) { 17036 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17037 { 17038 bar(); 17039 } 17040 } 17041 #pragma omp target 17042 #pragma omp teams distribute parallel for simd 17043 for (int i = 0; i < 10; ++i) { 17044 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17045 { 17046 bar(); 17047 } 17048 } 17049 #pragma omp target 17050 #pragma omp teams distribute parallel for simd 17051 for (int i = 0; i < 10; ++i) { 17052 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17053 { 17054 bar(); 17055 } 17056 } 17057 #pragma omp target 17058 #pragma omp teams distribute parallel for simd 17059 for (int i = 0; i < 10; ++i) { 17060 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17061 { 17062 bar(); 17063 } 17064 } 17065 #pragma omp target 17066 #pragma omp teams distribute parallel for simd 17067 for (int i = 0; i < 10; ++i) { 17068 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17069 { 17070 bar(); 17071 } 17072 } 17073 #pragma omp target 17074 #pragma omp teams distribute parallel for simd 17075 for (int i = 0; i < 10; ++i) { 17076 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17077 { 17078 #pragma omp single 17079 { 17080 bar(); 17081 } 17082 } 17083 } 17084 #pragma omp target 17085 #pragma omp teams distribute parallel for simd 17086 for (int i = 0; i < 10; ++i) { 17087 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17088 for (int i = 0; i < 10; ++i) 17089 ; 17090 } 17091 #pragma omp target 17092 #pragma omp teams distribute parallel for simd 17093 for (int i = 0; i < 10; ++i) { 17094 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17095 for (int i = 0; i < 10; ++i) 17096 ; 17097 } 17098 #pragma omp target 17099 #pragma omp teams distribute parallel for simd 17100 for (int i = 0; i < 10; ++i) { 17101 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17102 { 17103 bar(); 17104 } 17105 } 17106 #pragma omp target 17107 #pragma omp teams distribute parallel for simd 17108 for (int i = 0; i < 10; ++i) { 17109 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17110 { 17111 bar(); 17112 } 17113 } 17114 #pragma omp target 17115 #pragma omp teams distribute parallel for simd 17116 for (int i = 0; i < 10; ++i) { 17117 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17118 bar(); 17119 } 17120 #pragma omp target 17121 #pragma omp teams distribute parallel for simd 17122 for (int i = 0; i < 10; ++i) { 17123 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17124 bar(); 17125 } 17126 #pragma omp target 17127 #pragma omp teams distribute parallel for simd 17128 for (int i = 0; i < 10; ++i) { 17129 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17130 bar(); 17131 } 17132 #pragma omp target 17133 #pragma omp teams distribute parallel for simd 17134 for (int i = 0; i < 10; ++i) { 17135 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17136 bar(); 17137 } 17138 #pragma omp target 17139 #pragma omp teams distribute parallel for simd 17140 for (int i = 0; i < 10; ++i) { 17141 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17142 bar(); 17143 } 17144 #pragma omp target 17145 #pragma omp teams distribute parallel for simd 17146 for (int i = 0; i < 10; ++i) { 17147 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17148 bar(); 17149 } 17150 #pragma omp target 17151 #pragma omp teams distribute parallel for simd 17152 for (int i = 0; i < 10; ++i) { 17153 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 17154 ++a; 17155 } 17156 #pragma omp target 17157 #pragma omp teams distribute parallel for simd 17158 for (int i = 0; i < 10; ++i) { 17159 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17160 ++a; 17161 } 17162 #pragma omp target 17163 #pragma omp teams distribute parallel for simd 17164 for (int i = 0; i < 10; ++i) { 17165 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17166 ++a; 17167 } 17168 #pragma omp target 17169 #pragma omp teams distribute parallel for simd 17170 for (int i = 0; i < 10; ++i) { 17171 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17172 for (int i = 0; i < 10; ++i) 17173 ; 17174 } 17175 #pragma omp target 17176 #pragma omp teams distribute parallel for simd 17177 for (int i = 0; i < 10; ++i) { 17178 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17179 ++a; 17180 } 17181 #pragma omp target 17182 #pragma omp teams distribute parallel for simd 17183 for (int i = 0; i < 10; ++i) { 17184 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17185 ++a; 17186 } 17187 #pragma omp target 17188 #pragma omp teams distribute parallel for simd 17189 for (int i = 0; i < 10; ++i) { 17190 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17191 ++a; 17192 } 17193 #pragma omp target 17194 #pragma omp teams distribute parallel for simd 17195 for (int i = 0; i < 10; ++i) { 17196 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17197 ++a; 17198 } 17199 #pragma omp target 17200 #pragma omp teams distribute parallel for simd 17201 for (int i = 0; i < 10; ++i) { 17202 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17203 for (int i = 0; i < 10; ++i) 17204 ++a; 17205 } 17206 #pragma omp target 17207 #pragma omp teams distribute parallel for simd 17208 for (int i = 0; i < 10; ++i) { 17209 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17210 for (int i = 0; i < 10; ++i) 17211 ++a; 17212 } 17213 #pragma omp target 17214 #pragma omp teams distribute parallel for simd 17215 for (int i = 0; i < 10; ++i) { 17216 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17217 for (int i = 0; i < 10; ++i) 17218 ++a; 17219 } 17220 #pragma omp target 17221 #pragma omp teams distribute parallel for simd 17222 for (int i = 0; i < 10; ++i) { 17223 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17224 for (int i = 0; i < 10; ++i) 17225 ++a; 17226 } 17227 #pragma omp target 17228 #pragma omp teams distribute parallel for simd 17229 for (int i = 0; i < 10; ++i) { 17230 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17231 for (int i = 0; i < 10; ++i) 17232 ++a; 17233 } 17234 #pragma omp target 17235 #pragma omp teams distribute parallel for simd 17236 for (int i = 0; i < 10; ++i) { 17237 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17238 for (int i = 0; i < 10; ++i) 17239 ++a; 17240 } 17241 #pragma omp target 17242 #pragma omp teams distribute parallel for simd 17243 for (int i = 0; i < 10; ++i) { 17244 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17245 ++a; 17246 } 17247 #pragma omp target 17248 #pragma omp teams distribute parallel for simd 17249 for (int i = 0; i < 10; ++i) { 17250 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17251 for (int i = 0; i < 10; ++i) 17252 ++a; 17253 } 17254 #pragma omp target 17255 #pragma omp teams distribute parallel for simd 17256 for (int i = 0; i < 10; ++i) { 17257 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17258 for (int i = 0; i < 10; ++i) 17259 ++a; 17260 } 17261 #pragma omp target 17262 #pragma omp teams distribute parallel for simd 17263 for (int i = 0; i < 10; ++i) { 17264 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17265 for (int i = 0; i < 10; ++i) 17266 ++a; 17267 } 17268 #pragma omp target 17269 #pragma omp teams distribute parallel for simd 17270 for (int i = 0; i < 10; ++i) { 17271 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17272 for (int i = 0; i < 10; ++i) 17273 ++a; 17274 } 17275 17276 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 17277 #pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 17278 for (int i = 0; i < 10; ++i) 17279 ; 17280 #pragma omp target 17281 #pragma omp teams distribute parallel for 17282 for (int i = 0; i < 10; ++i) { 17283 #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?}} 17284 for (int i = 0; i < 10; ++i) 17285 ; 17286 } 17287 #pragma omp target 17288 #pragma omp teams distribute parallel for 17289 for (int i = 0; i < 10; ++i) { 17290 #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?}} 17291 for (int i = 0; i < 10; ++i) 17292 ; 17293 } 17294 #pragma omp target 17295 #pragma omp teams distribute parallel for 17296 for (int i = 0; i < 10; ++i) { 17297 #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?}} 17298 for (int i = 0; i < 10; ++i) 17299 ; 17300 } 17301 #pragma omp target 17302 #pragma omp teams distribute parallel for 17303 for (int i = 0; i < 10; ++i) { 17304 #pragma omp simd // OK 17305 for (int i = 0; i < 10; ++i) 17306 ; 17307 } 17308 #pragma omp target 17309 #pragma omp teams distribute parallel for 17310 for (int i = 0; i < 10; ++i) { 17311 #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?}} 17312 for (int i = 0; i < 10; ++i) 17313 ; 17314 } 17315 #pragma omp target 17316 #pragma omp teams distribute parallel for 17317 for (int i = 0; i < 10; ++i) { 17318 #pragma omp parallel // OK 17319 for (int i = 0; i < 10; ++i) 17320 ; 17321 } 17322 #pragma omp target 17323 #pragma omp teams distribute parallel for 17324 for (int i = 0; i < 10; ++i) { 17325 #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?}} 17326 { 17327 bar(); 17328 } 17329 } 17330 #pragma omp target 17331 #pragma omp teams distribute parallel for 17332 for (int i = 0; i < 10; ++i) { 17333 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 17334 { 17335 bar(); 17336 } 17337 } 17338 #pragma omp target 17339 #pragma omp teams distribute parallel for 17340 for (int i = 0; i < 10; ++i) { 17341 #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?}} 17342 { 17343 bar(); 17344 } 17345 } 17346 #pragma omp target 17347 #pragma omp teams distribute parallel for 17348 for (int i = 0; i < 10; ++i) { 17349 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17350 { 17351 bar(); 17352 } 17353 } 17354 #pragma omp target 17355 #pragma omp teams distribute parallel for 17356 for (int i = 0; i < 10; ++i) { 17357 #pragma omp critical // OK 17358 { 17359 bar(); 17360 } 17361 } 17362 #pragma omp target 17363 #pragma omp teams distribute parallel for 17364 for (int i = 0; i < 10; ++i) { 17365 #pragma omp parallel // OK 17366 { 17367 #pragma omp single 17368 { 17369 bar(); 17370 } 17371 } 17372 } 17373 #pragma omp target 17374 #pragma omp teams distribute parallel for 17375 for (int i = 0; i < 10; ++i) { 17376 #pragma omp parallel for // OK 17377 for (int i = 0; i < 10; ++i) 17378 ; 17379 } 17380 #pragma omp target 17381 #pragma omp teams distribute parallel for 17382 for (int i = 0; i < 10; ++i) { 17383 #pragma omp parallel for simd // OK 17384 for (int i = 0; i < 10; ++i) 17385 ; 17386 } 17387 #pragma omp target 17388 #pragma omp teams distribute parallel for 17389 for (int i = 0; i < 10; ++i) { 17390 #pragma omp parallel sections // OK 17391 { 17392 bar(); 17393 } 17394 } 17395 #pragma omp target 17396 #pragma omp teams distribute parallel for 17397 for (int i = 0; i < 10; ++i) { 17398 #pragma omp task // OK 17399 { 17400 bar(); 17401 } 17402 } 17403 #pragma omp target 17404 #pragma omp teams distribute parallel for 17405 for (int i = 0; i < 10; ++i) { 17406 #pragma omp taskyield // OK 17407 bar(); 17408 } 17409 #pragma omp target 17410 #pragma omp teams distribute parallel for 17411 for (int i = 0; i < 10; ++i) { 17412 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17413 bar(); 17414 } 17415 #pragma omp target 17416 #pragma omp teams distribute parallel for 17417 for (int i = 0; i < 10; ++i) { 17418 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17419 bar(); 17420 } 17421 #pragma omp target 17422 #pragma omp teams distribute parallel for 17423 for (int i = 0; i < 10; ++i) { 17424 #pragma omp taskwait // OK 17425 bar(); 17426 } 17427 #pragma omp target 17428 #pragma omp teams distribute parallel for 17429 for (int i = 0; i < 10; ++i) { 17430 #pragma omp flush // OK 17431 bar(); 17432 } 17433 #pragma omp target 17434 #pragma omp teams distribute parallel for 17435 for (int i = 0; i < 10; ++i) { 17436 #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?}} 17437 bar(); 17438 } 17439 #pragma omp target 17440 #pragma omp teams distribute parallel for 17441 for (int i = 0; i < 10; ++i) { 17442 #pragma omp atomic // OK 17443 ++a; 17444 } 17445 #pragma omp target 17446 #pragma omp teams distribute parallel for 17447 for (int i = 0; i < 10; ++i) { 17448 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 17449 ++a; 17450 } 17451 #pragma omp target 17452 #pragma omp teams distribute parallel for 17453 for (int i = 0; i < 10; ++i) { 17454 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 17455 ++a; 17456 } 17457 #pragma omp target 17458 #pragma omp teams distribute parallel for 17459 for (int i = 0; i < 10; ++i) { 17460 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 17461 for (int i = 0; i < 10; ++i) 17462 ; 17463 } 17464 #pragma omp target 17465 #pragma omp teams distribute parallel for 17466 for (int i = 0; i < 10; ++i) { 17467 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 17468 ++a; 17469 } 17470 #pragma omp target 17471 #pragma omp teams distribute parallel for 17472 for (int i = 0; i < 10; ++i) { 17473 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 17474 ++a; 17475 } 17476 #pragma omp target 17477 #pragma omp teams distribute parallel for 17478 for (int i = 0; i < 10; ++i) { 17479 #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?}} 17480 ++a; 17481 } 17482 #pragma omp target 17483 #pragma omp teams distribute parallel for 17484 for (int i = 0; i < 10; ++i) { 17485 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 17486 ++a; 17487 } 17488 #pragma omp target 17489 #pragma omp teams distribute parallel for 17490 for (int i = 0; i < 10; ++i) { 17491 #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?}} 17492 for (int i = 0; i < 10; ++i) 17493 ++a; 17494 } 17495 #pragma omp target 17496 #pragma omp teams distribute parallel for 17497 for (int i = 0; i < 10; ++i) { 17498 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 17499 for (int i = 0; i < 10; ++i) 17500 ++a; 17501 } 17502 #pragma omp target 17503 #pragma omp teams distribute parallel for 17504 for (int i = 0; i < 10; ++i) { 17505 #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?}} 17506 for (int i = 0; i < 10; ++i) 17507 ++a; 17508 } 17509 #pragma omp target 17510 #pragma omp teams distribute parallel for 17511 for (int i = 0; i < 10; ++i) { 17512 #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?}} 17513 for (int i = 0; i < 10; ++i) 17514 ++a; 17515 } 17516 #pragma omp target 17517 #pragma omp teams distribute parallel for 17518 for (int i = 0; i < 10; ++i) { 17519 #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?}} 17520 for (int i = 0; i < 10; ++i) 17521 ++a; 17522 } 17523 #pragma omp target 17524 #pragma omp teams distribute parallel for 17525 for (int i = 0; i < 10; ++i) { 17526 #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?}} 17527 for (int i = 0; i < 10; ++i) 17528 ++a; 17529 } 17530 #pragma omp target 17531 #pragma omp teams distribute parallel for 17532 for (int i = 0; i < 10; ++i) { 17533 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 17534 ++a; 17535 } 17536 #pragma omp target 17537 #pragma omp teams distribute parallel for 17538 for (int i = 0; i < 10; ++i) { 17539 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 17540 for (int i = 0; i < 10; ++i) 17541 ++a; 17542 } 17543 #pragma omp target 17544 #pragma omp teams distribute parallel for 17545 for (int i = 0; i < 10; ++i) { 17546 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 17547 for (int i = 0; i < 10; ++i) 17548 ++a; 17549 } 17550 #pragma omp target 17551 #pragma omp teams distribute parallel for 17552 for (int i = 0; i < 10; ++i) { 17553 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 17554 for (int i = 0; i < 10; ++i) 17555 ++a; 17556 } 17557 #pragma omp target 17558 #pragma omp teams distribute parallel for 17559 for (int i = 0; i < 10; ++i) { 17560 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 17561 for (int i = 0; i < 10; ++i) 17562 ++a; 17563 } 17564 17565 // TARGET TEAMS DIRECTIVE 17566 #pragma omp target teams 17567 #pragma omp parallel 17568 bar(); 17569 #pragma omp target teams 17570 #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?}} 17571 for (int i = 0; i < 10; ++i) 17572 ; 17573 #pragma omp target teams 17574 #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?}} 17575 for (int i = 0; i < 10; ++i) 17576 ; 17577 #pragma omp target teams 17578 #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?}} 17579 for (int i = 0; i < 10; ++i) 17580 ; 17581 #pragma omp target teams 17582 #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?}} 17583 { 17584 bar(); 17585 } 17586 #pragma omp target teams 17587 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 17588 { 17589 bar(); 17590 } 17591 #pragma omp target teams 17592 #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?}} 17593 bar(); 17594 17595 #pragma omp target teams 17596 #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?}} 17597 { 17598 bar(); 17599 } 17600 #pragma omp target teams 17601 #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?}} 17602 { 17603 bar(); 17604 } 17605 #pragma omp target teams 17606 #pragma omp parallel for 17607 for (int i = 0; i < 10; ++i) 17608 ; 17609 #pragma omp target teams 17610 #pragma omp parallel for simd 17611 for (int i = 0; i < 10; ++i) 17612 ; 17613 #pragma omp target teams 17614 #pragma omp parallel sections 17615 { 17616 bar(); 17617 } 17618 #pragma omp target teams 17619 #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?}} 17620 { 17621 bar(); 17622 } 17623 #pragma omp target teams 17624 { 17625 #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?}} 17626 bar(); 17627 } 17628 #pragma omp target teams 17629 { 17630 #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?}} 17631 bar(); 17632 } 17633 #pragma omp target teams 17634 { 17635 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17636 bar(); 17637 } 17638 #pragma omp target teams 17639 { 17640 #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?}} 17641 bar(); 17642 } 17643 #pragma omp target teams 17644 { 17645 #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?}} 17646 bar(); 17647 } 17648 #pragma omp target teams 17649 { 17650 #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?}} 17651 bar(); 17652 } 17653 #pragma omp target teams 17654 { 17655 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 17656 ++a; 17657 } 17658 #pragma omp target teams 17659 { 17660 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 17661 ++a; 17662 } 17663 #pragma omp target teams 17664 { 17665 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 17666 ++a; 17667 } 17668 #pragma omp target teams 17669 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17670 for (int i = 0; i < 10; ++i) 17671 ; 17672 #pragma omp target teams 17673 { 17674 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 17675 } 17676 #pragma omp target teams 17677 { 17678 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 17679 } 17680 #pragma omp target teams 17681 { 17682 #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?}} 17683 ++a; 17684 } 17685 #pragma omp target teams 17686 { 17687 #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?}} 17688 for (int i = 0; i < 10; ++i) 17689 ++a; 17690 } 17691 #pragma omp target teams 17692 #pragma omp distribute 17693 for (int i = 0; i < 10; ++i) 17694 ; 17695 #pragma omp target teams 17696 { 17697 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 17698 ++a; 17699 } 17700 #pragma omp target teams 17701 #pragma omp distribute parallel for 17702 for (int i = 0; i < 10; ++i) 17703 ; 17704 #pragma omp target teams 17705 { 17706 #pragma omp distribute parallel for 17707 for (int i = 0; i < 10; ++i) 17708 ; 17709 #pragma omp distribute parallel for 17710 for (int j = 0; j < 10; ++j) 17711 ; 17712 } 17713 #pragma omp target teams 17714 { 17715 #pragma omp distribute parallel for simd 17716 for (int i = 0; i < 10; ++i) 17717 ; 17718 #pragma omp distribute parallel for simd 17719 for (int j = 0; j < 10; ++j) 17720 ; 17721 } 17722 #pragma omp target teams 17723 { 17724 #pragma omp distribute simd 17725 for (int i = 0; i < 10; ++i) 17726 ; 17727 #pragma omp distribute simd 17728 for (int j = 0; j < 10; ++j) 17729 ; 17730 } 17731 #pragma omp target teams 17732 { 17733 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 17734 for (int i = 0; i < 10; ++i) 17735 ; 17736 } 17737 #pragma omp target teams 17738 { 17739 #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?}} 17740 for (int i = 0; i < 10; ++i) 17741 ; 17742 } 17743 #pragma omp target teams 17744 { 17745 #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?}} 17746 for (int i = 0; i < 10; ++i) 17747 ; 17748 } 17749 #pragma omp target teams 17750 { 17751 #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?}} 17752 for (int i = 0; i < 10; ++i) 17753 ; 17754 } 17755 #pragma omp target teams 17756 { 17757 #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?}} 17758 for (int i = 0; i < 10; ++i) 17759 ; 17760 } 17761 #pragma omp target teams 17762 { 17763 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 17764 a++; 17765 } 17766 #pragma omp target teams 17767 { 17768 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 17769 for (int i = 0; i < 10; ++i) 17770 ; 17771 } 17772 #pragma omp target teams 17773 { 17774 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17775 for (int i = 0; i < 10; ++i) 17776 ; 17777 } 17778 #pragma omp target teams 17779 { 17780 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 17781 for (int i = 0; i < 10; ++i) 17782 ; 17783 } 17784 #pragma omp target teams 17785 { 17786 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 17787 for (int i = 0; i < 10; ++i) 17788 ; 17789 } 17790 17791 // TARGET TEAMS DISTRIBUTE DIRECTIVE 17792 #pragma omp target teams distribute // OK 17793 for (int i = 0; i < 10; ++i) 17794 ; 17795 #pragma omp target teams distribute 17796 for (int i = 0; i < 10; ++i) { 17797 #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?}} 17798 for (int i = 0; i < 10; ++i) 17799 ; 17800 } 17801 #pragma omp target teams distribute 17802 for (int i = 0; i < 10; ++i) { 17803 #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?}} 17804 for (int i = 0; i < 10; ++i) 17805 ; 17806 } 17807 #pragma omp target teams distribute 17808 for (int i = 0; i < 10; ++i) { 17809 #pragma omp for // OK 17810 for (int i = 0; i < 10; ++i) 17811 ; 17812 } 17813 #pragma omp target teams distribute 17814 for (int i = 0; i < 10; ++i) { 17815 #pragma omp simd // OK 17816 for (int i = 0; i < 10; ++i) 17817 ; 17818 } 17819 #pragma omp target teams distribute 17820 for (int i = 0; i < 10; ++i) { 17821 #pragma omp for simd // OK 17822 for (int i = 0; i < 10; ++i) 17823 ; 17824 } 17825 #pragma omp target teams distribute 17826 for (int i = 0; i < 10; ++i) { 17827 #pragma omp parallel // OK 17828 for (int i = 0; i < 10; ++i) 17829 ; 17830 } 17831 #pragma omp target teams distribute 17832 for (int i = 0; i < 10; ++i) { 17833 #pragma omp sections // OK 17834 { 17835 bar(); 17836 } 17837 } 17838 #pragma omp target teams distribute 17839 for (int i = 0; i < 10; ++i) { 17840 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 17841 { 17842 bar(); 17843 } 17844 } 17845 #pragma omp target teams distribute 17846 for (int i = 0; i < 10; ++i) { 17847 #pragma omp single // OK 17848 { 17849 bar(); 17850 } 17851 } 17852 #pragma omp target teams distribute 17853 for (int i = 0; i < 10; ++i) { 17854 #pragma omp master // OK 17855 { 17856 bar(); 17857 } 17858 } 17859 #pragma omp target teams distribute 17860 for (int i = 0; i < 10; ++i) { 17861 #pragma omp critical // OK 17862 { 17863 bar(); 17864 } 17865 } 17866 #pragma omp target teams distribute 17867 for (int i = 0; i < 10; ++i) { 17868 #pragma omp parallel // OK 17869 { 17870 #pragma omp single 17871 { 17872 bar(); 17873 } 17874 } 17875 } 17876 #pragma omp target teams distribute 17877 for (int i = 0; i < 10; ++i) { 17878 #pragma omp parallel for // OK 17879 for (int i = 0; i < 10; ++i) 17880 ; 17881 } 17882 #pragma omp target teams distribute 17883 for (int i = 0; i < 10; ++i) { 17884 #pragma omp parallel for simd // OK 17885 for (int i = 0; i < 10; ++i) 17886 ; 17887 } 17888 #pragma omp target teams distribute 17889 for (int i = 0; i < 10; ++i) { 17890 #pragma omp parallel sections // OK 17891 { 17892 bar(); 17893 } 17894 } 17895 #pragma omp target teams distribute 17896 for (int i = 0; i < 10; ++i) { 17897 #pragma omp task // OK 17898 { 17899 bar(); 17900 } 17901 } 17902 #pragma omp target teams distribute 17903 for (int i = 0; i < 10; ++i) { 17904 #pragma omp taskyield // OK 17905 bar(); 17906 } 17907 #pragma omp target teams distribute 17908 for (int i = 0; i < 10; ++i) { 17909 #pragma omp barrier // OK 17910 bar(); 17911 } 17912 #pragma omp target teams distribute 17913 for (int i = 0; i < 10; ++i) { 17914 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17915 bar(); 17916 } 17917 #pragma omp target teams distribute 17918 for (int i = 0; i < 10; ++i) { 17919 #pragma omp taskwait // OK 17920 bar(); 17921 } 17922 #pragma omp target teams distribute 17923 for (int i = 0; i < 10; ++i) { 17924 #pragma omp flush // OK 17925 bar(); 17926 } 17927 #pragma omp target teams distribute 17928 for (int i = 0; i < 10; ++i) { 17929 #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?}} 17930 bar(); 17931 } 17932 #pragma omp target teams distribute 17933 for (int i = 0; i < 10; ++i) { 17934 #pragma omp atomic // OK 17935 ++a; 17936 } 17937 #pragma omp target teams distribute 17938 for (int i = 0; i < 10; ++i) { 17939 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17940 ++a; 17941 } 17942 #pragma omp target teams distribute 17943 for (int i = 0; i < 10; ++i) { 17944 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17945 ++a; 17946 } 17947 #pragma omp target teams distribute 17948 for (int i = 0; i < 10; ++i) { 17949 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17950 for (int i = 0; i < 10; ++i) 17951 ; 17952 } 17953 #pragma omp target teams distribute 17954 for (int i = 0; i < 10; ++i) { 17955 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17956 ++a; 17957 } 17958 #pragma omp target teams distribute 17959 for (int i = 0; i < 10; ++i) { 17960 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17961 ++a; 17962 } 17963 #pragma omp target teams distribute 17964 for (int i = 0; i < 10; ++i) { 17965 #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?}} 17966 ++a; 17967 } 17968 #pragma omp target teams distribute 17969 for (int i = 0; i < 10; ++i) { 17970 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17971 ++a; 17972 } 17973 #pragma omp target teams distribute 17974 for (int i = 0; i < 10; ++i) { 17975 #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?}} 17976 for (int i = 0; i < 10; ++i) 17977 ++a; 17978 } 17979 #pragma omp target teams distribute 17980 for (int i = 0; i < 10; ++i) { 17981 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17982 for (int i = 0; i < 10; ++i) 17983 ++a; 17984 } 17985 #pragma omp target teams distribute 17986 for (int i = 0; i < 10; ++i) { 17987 #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?}} 17988 for (int i = 0; i < 10; ++i) 17989 ++a; 17990 } 17991 #pragma omp target teams distribute 17992 for (int i = 0; i < 10; ++i) { 17993 #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?}} 17994 for (int i = 0; i < 10; ++i) 17995 ++a; 17996 } 17997 #pragma omp target teams distribute 17998 for (int i = 0; i < 10; ++i) { 17999 #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?}} 18000 for (int i = 0; i < 10; ++i) 18001 ++a; 18002 } 18003 #pragma omp target teams distribute 18004 for (int i = 0; i < 10; ++i) { 18005 #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?}} 18006 for (int i = 0; i < 10; ++i) 18007 ++a; 18008 } 18009 #pragma omp target teams distribute 18010 for (int i = 0; i < 10; ++i) { 18011 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 18012 ++a; 18013 } 18014 #pragma omp target teams distribute 18015 for (int i = 0; i < 10; ++i) { 18016 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 18017 for (int i = 0; i < 10; ++i) 18018 ++a; 18019 } 18020 #pragma omp target teams distribute 18021 for (int i = 0; i < 10; ++i) { 18022 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 18023 for (int i = 0; i < 10; ++i) 18024 ++a; 18025 } 18026 #pragma omp target teams distribute 18027 for (int i = 0; i < 10; ++i) { 18028 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 18029 for (int i = 0; i < 10; ++i) 18030 ++a; 18031 } 18032 #pragma omp target teams distribute 18033 for (int i = 0; i < 10; ++i) { 18034 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 18035 for (int i = 0; i < 10; ++i) 18036 ++a; 18037 } 18038 18039 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 18040 #pragma omp target teams distribute parallel for // OK 18041 for (int i = 0; i < 10; ++i) 18042 ; 18043 #pragma omp target teams distribute parallel for 18044 for (int i = 0; i < 10; ++i) { 18045 #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?}} 18046 for (int i = 0; i < 10; ++i) 18047 ; 18048 } 18049 #pragma omp target teams distribute parallel for 18050 for (int i = 0; i < 10; ++i) { 18051 #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?}} 18052 for (int i = 0; i < 10; ++i) 18053 ; 18054 } 18055 #pragma omp target teams distribute parallel for 18056 for (int i = 0; i < 10; ++i) { 18057 #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?}} 18058 for (int i = 0; i < 10; ++i) 18059 ; 18060 } 18061 #pragma omp target teams distribute parallel for 18062 for (int i = 0; i < 10; ++i) { 18063 #pragma omp simd // OK 18064 for (int i = 0; i < 10; ++i) 18065 ; 18066 } 18067 #pragma omp target teams distribute parallel for 18068 for (int i = 0; i < 10; ++i) { 18069 #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?}} 18070 for (int i = 0; i < 10; ++i) 18071 ; 18072 } 18073 #pragma omp target teams distribute parallel for 18074 for (int i = 0; i < 10; ++i) { 18075 #pragma omp parallel // OK 18076 for (int i = 0; i < 10; ++i) 18077 ; 18078 } 18079 #pragma omp target teams distribute parallel for 18080 for (int i = 0; i < 10; ++i) { 18081 #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?}} 18082 { 18083 bar(); 18084 } 18085 } 18086 #pragma omp target teams distribute parallel for 18087 for (int i = 0; i < 10; ++i) { 18088 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 18089 { 18090 bar(); 18091 } 18092 } 18093 #pragma omp target teams distribute parallel for 18094 for (int i = 0; i < 10; ++i) { 18095 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 18096 { 18097 bar(); 18098 } 18099 } 18100 #pragma omp target teams distribute parallel for 18101 for (int i = 0; i < 10; ++i) { 18102 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 18103 { 18104 bar(); 18105 } 18106 } 18107 #pragma omp target teams distribute parallel for 18108 for (int i = 0; i < 10; ++i) { 18109 #pragma omp critical // OK 18110 { 18111 bar(); 18112 } 18113 } 18114 #pragma omp target teams distribute parallel for 18115 for (int i = 0; i < 10; ++i) { 18116 #pragma omp parallel // OK 18117 { 18118 #pragma omp single 18119 { 18120 bar(); 18121 } 18122 } 18123 } 18124 #pragma omp target teams distribute parallel for 18125 for (int i = 0; i < 10; ++i) { 18126 #pragma omp parallel for // OK 18127 for (int i = 0; i < 10; ++i) 18128 ; 18129 } 18130 #pragma omp target teams distribute parallel for 18131 for (int i = 0; i < 10; ++i) { 18132 #pragma omp parallel for simd // OK 18133 for (int i = 0; i < 10; ++i) 18134 ; 18135 } 18136 #pragma omp target teams distribute parallel for 18137 for (int i = 0; i < 10; ++i) { 18138 #pragma omp parallel sections // OK 18139 { 18140 bar(); 18141 } 18142 } 18143 #pragma omp target teams distribute parallel for 18144 for (int i = 0; i < 10; ++i) { 18145 #pragma omp task // OK 18146 { 18147 bar(); 18148 } 18149 } 18150 #pragma omp target teams distribute parallel for 18151 for (int i = 0; i < 10; ++i) { 18152 #pragma omp taskyield // OK 18153 bar(); 18154 } 18155 #pragma omp target teams distribute parallel for 18156 for (int i = 0; i < 10; ++i) { 18157 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 18158 bar(); 18159 } 18160 #pragma omp target teams distribute parallel for 18161 for (int i = 0; i < 10; ++i) { 18162 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 18163 bar(); 18164 } 18165 #pragma omp target teams distribute parallel for 18166 for (int i = 0; i < 10; ++i) { 18167 #pragma omp taskwait // OK 18168 bar(); 18169 } 18170 #pragma omp target teams distribute parallel for 18171 for (int i = 0; i < 10; ++i) { 18172 #pragma omp flush // OK 18173 bar(); 18174 } 18175 #pragma omp target teams distribute parallel for 18176 for (int i = 0; i < 10; ++i) { 18177 #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?}} 18178 bar(); 18179 } 18180 #pragma omp target teams distribute parallel for 18181 for (int i = 0; i < 10; ++i) { 18182 #pragma omp atomic // OK 18183 ++a; 18184 } 18185 #pragma omp target teams distribute parallel for 18186 for (int i = 0; i < 10; ++i) { 18187 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18188 ++a; 18189 } 18190 #pragma omp target teams distribute parallel for 18191 for (int i = 0; i < 10; ++i) { 18192 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18193 ++a; 18194 } 18195 #pragma omp target teams distribute parallel for 18196 for (int i = 0; i < 10; ++i) { 18197 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18198 for (int i = 0; i < 10; ++i) 18199 ; 18200 } 18201 #pragma omp target teams distribute parallel for 18202 for (int i = 0; i < 10; ++i) { 18203 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18204 ++a; 18205 } 18206 #pragma omp target teams distribute parallel for 18207 for (int i = 0; i < 10; ++i) { 18208 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18209 ++a; 18210 } 18211 #pragma omp target teams distribute parallel for 18212 for (int i = 0; i < 10; ++i) { 18213 #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?}} 18214 ++a; 18215 } 18216 #pragma omp target teams distribute parallel for 18217 for (int i = 0; i < 10; ++i) { 18218 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18219 ++a; 18220 } 18221 #pragma omp target teams distribute parallel for 18222 for (int i = 0; i < 10; ++i) { 18223 #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?}} 18224 for (int i = 0; i < 10; ++i) 18225 ++a; 18226 } 18227 #pragma omp target teams distribute parallel for 18228 for (int i = 0; i < 10; ++i) { 18229 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18230 for (int i = 0; i < 10; ++i) 18231 ++a; 18232 } 18233 #pragma omp target teams distribute parallel for 18234 for (int i = 0; i < 10; ++i) { 18235 #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?}} 18236 for (int i = 0; i < 10; ++i) 18237 ++a; 18238 } 18239 #pragma omp target teams distribute parallel for 18240 for (int i = 0; i < 10; ++i) { 18241 #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?}} 18242 for (int i = 0; i < 10; ++i) 18243 ++a; 18244 } 18245 #pragma omp target teams distribute parallel for 18246 for (int i = 0; i < 10; ++i) { 18247 #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?}} 18248 for (int i = 0; i < 10; ++i) 18249 ++a; 18250 } 18251 #pragma omp target teams distribute parallel for 18252 for (int i = 0; i < 10; ++i) { 18253 #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?}} 18254 for (int i = 0; i < 10; ++i) 18255 ++a; 18256 } 18257 #pragma omp target teams distribute parallel for 18258 for (int i = 0; i < 10; ++i) { 18259 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18260 ++a; 18261 } 18262 #pragma omp target teams distribute parallel for 18263 for (int i = 0; i < 10; ++i) { 18264 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18265 for (int i = 0; i < 10; ++i) 18266 ++a; 18267 } 18268 #pragma omp target teams distribute parallel for 18269 for (int i = 0; i < 10; ++i) { 18270 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18271 for (int i = 0; i < 10; ++i) 18272 ++a; 18273 } 18274 #pragma omp target teams distribute parallel for 18275 for (int i = 0; i < 10; ++i) { 18276 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18277 for (int i = 0; i < 10; ++i) 18278 ++a; 18279 } 18280 #pragma omp target teams distribute parallel for 18281 for (int i = 0; i < 10; ++i) { 18282 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 18283 for (int i = 0; i < 10; ++i) 18284 ++a; 18285 } 18286 18287 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 18288 #pragma omp target teams distribute parallel for simd // OK 18289 for (int i = 0; i < 10; ++i) 18290 ; 18291 #pragma omp target teams distribute parallel for simd 18292 for (int i = 0; i < 10; ++i) { 18293 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18294 for (int i = 0; i < 10; ++i) 18295 ; 18296 } 18297 #pragma omp target teams distribute parallel for simd 18298 for (int i = 0; i < 10; ++i) { 18299 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18300 for (int i = 0; i < 10; ++i) 18301 ; 18302 } 18303 #pragma omp target teams distribute parallel for simd 18304 for (int i = 0; i < 10; ++i) { 18305 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18306 for (int i = 0; i < 10; ++i) 18307 ; 18308 } 18309 #pragma omp target teams distribute parallel for simd 18310 for (int i = 0; i < 10; ++i) { 18311 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 18312 for (int i = 0; i < 10; ++i) 18313 ; 18314 } 18315 #pragma omp target teams distribute parallel for simd 18316 for (int i = 0; i < 10; ++i) { 18317 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18318 for (int i = 0; i < 10; ++i) 18319 ; 18320 } 18321 #pragma omp target teams distribute parallel for simd 18322 for (int i = 0; i < 10; ++i) { 18323 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18324 for (int i = 0; i < 10; ++i) 18325 ; 18326 } 18327 #pragma omp target teams distribute parallel for simd 18328 for (int i = 0; i < 10; ++i) { 18329 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18330 { 18331 bar(); 18332 } 18333 } 18334 #pragma omp target teams distribute parallel for simd 18335 for (int i = 0; i < 10; ++i) { 18336 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18337 { 18338 bar(); 18339 } 18340 } 18341 #pragma omp target teams distribute parallel for simd 18342 for (int i = 0; i < 10; ++i) { 18343 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18344 { 18345 bar(); 18346 } 18347 } 18348 #pragma omp target teams distribute parallel for simd 18349 for (int i = 0; i < 10; ++i) { 18350 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18351 { 18352 bar(); 18353 } 18354 } 18355 #pragma omp target teams distribute parallel for simd 18356 for (int i = 0; i < 10; ++i) { 18357 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18358 { 18359 bar(); 18360 } 18361 } 18362 #pragma omp target teams distribute parallel for simd 18363 for (int i = 0; i < 10; ++i) { 18364 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18365 { 18366 #pragma omp single 18367 { 18368 bar(); 18369 } 18370 } 18371 } 18372 #pragma omp target teams distribute parallel for simd 18373 for (int i = 0; i < 10; ++i) { 18374 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18375 for (int i = 0; i < 10; ++i) 18376 ; 18377 } 18378 #pragma omp target teams distribute parallel for simd 18379 for (int i = 0; i < 10; ++i) { 18380 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18381 for (int i = 0; i < 10; ++i) 18382 ; 18383 } 18384 #pragma omp target teams distribute parallel for simd 18385 for (int i = 0; i < 10; ++i) { 18386 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18387 { 18388 bar(); 18389 } 18390 } 18391 #pragma omp target teams distribute parallel for simd 18392 for (int i = 0; i < 10; ++i) { 18393 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18394 { 18395 bar(); 18396 } 18397 } 18398 #pragma omp target teams distribute parallel for simd 18399 for (int i = 0; i < 10; ++i) { 18400 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18401 bar(); 18402 } 18403 #pragma omp target teams distribute parallel for simd 18404 for (int i = 0; i < 10; ++i) { 18405 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18406 bar(); 18407 } 18408 #pragma omp target teams distribute parallel for simd 18409 for (int i = 0; i < 10; ++i) { 18410 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 18411 bar(); 18412 } 18413 #pragma omp target teams distribute parallel for simd 18414 for (int i = 0; i < 10; ++i) { 18415 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18416 bar(); 18417 } 18418 #pragma omp target teams distribute parallel for simd 18419 for (int i = 0; i < 10; ++i) { 18420 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18421 bar(); 18422 } 18423 #pragma omp target teams distribute parallel for simd 18424 for (int i = 0; i < 10; ++i) { 18425 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18426 bar(); 18427 } 18428 #pragma omp target teams distribute parallel for simd 18429 for (int i = 0; i < 10; ++i) { 18430 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 18431 ++a; 18432 } 18433 #pragma omp target teams distribute parallel for simd 18434 for (int i = 0; i < 10; ++i) { 18435 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18436 ++a; 18437 } 18438 #pragma omp target teams distribute parallel for simd 18439 for (int i = 0; i < 10; ++i) { 18440 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18441 ++a; 18442 } 18443 #pragma omp target teams distribute parallel for simd 18444 for (int i = 0; i < 10; ++i) { 18445 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18446 for (int i = 0; i < 10; ++i) 18447 ; 18448 } 18449 #pragma omp target teams distribute parallel for simd 18450 for (int i = 0; i < 10; ++i) { 18451 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18452 ++a; 18453 } 18454 #pragma omp target teams distribute parallel for simd 18455 for (int i = 0; i < 10; ++i) { 18456 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18457 ++a; 18458 } 18459 #pragma omp target teams distribute parallel for simd 18460 for (int i = 0; i < 10; ++i) { 18461 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18462 ++a; 18463 } 18464 #pragma omp target teams distribute parallel for simd 18465 for (int i = 0; i < 10; ++i) { 18466 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18467 ++a; 18468 } 18469 #pragma omp target teams distribute parallel for simd 18470 for (int i = 0; i < 10; ++i) { 18471 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18472 for (int i = 0; i < 10; ++i) 18473 ++a; 18474 } 18475 #pragma omp target teams distribute parallel for simd 18476 for (int i = 0; i < 10; ++i) { 18477 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18478 for (int i = 0; i < 10; ++i) 18479 ++a; 18480 } 18481 #pragma omp target teams distribute parallel for simd 18482 for (int i = 0; i < 10; ++i) { 18483 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18484 for (int i = 0; i < 10; ++i) 18485 ++a; 18486 } 18487 #pragma omp target teams distribute parallel for simd 18488 for (int i = 0; i < 10; ++i) { 18489 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18490 for (int i = 0; i < 10; ++i) 18491 ++a; 18492 } 18493 #pragma omp target teams distribute parallel for simd 18494 for (int i = 0; i < 10; ++i) { 18495 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18496 for (int i = 0; i < 10; ++i) 18497 ++a; 18498 } 18499 #pragma omp target teams distribute parallel for simd 18500 for (int i = 0; i < 10; ++i) { 18501 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18502 for (int i = 0; i < 10; ++i) 18503 ; 18504 } 18505 #pragma omp target teams distribute parallel for simd 18506 for (int i = 0; i < 10; ++i) { 18507 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18508 a++; 18509 } 18510 #pragma omp target teams distribute parallel for simd 18511 for (int i = 0; i < 10; ++i) { 18512 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18513 for (int i = 0; i < 10; ++i) 18514 ; 18515 } 18516 #pragma omp target teams distribute parallel for simd 18517 for (int i = 0; i < 10; ++i) { 18518 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18519 for (int i = 0; i < 10; ++i) 18520 ; 18521 } 18522 #pragma omp target teams distribute parallel for simd 18523 for (int i = 0; i < 10; ++i) { 18524 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18525 for (int i = 0; i < 10; ++i) 18526 ; 18527 } 18528 #pragma omp target teams distribute parallel for simd 18529 for (int i = 0; i < 10; ++i) { 18530 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18531 for (int i = 0; i < 10; ++i) 18532 ; 18533 } 18534 18535 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 18536 #pragma omp target teams distribute simd // OK 18537 for (int i = 0; i < 10; ++i) 18538 ; 18539 #pragma omp target teams distribute simd 18540 for (int i = 0; i < 10; ++i) { 18541 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18542 for (int i = 0; i < 10; ++i) 18543 ; 18544 } 18545 #pragma omp target teams distribute simd 18546 for (int i = 0; i < 10; ++i) { 18547 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18548 for (int i = 0; i < 10; ++i) 18549 ; 18550 } 18551 #pragma omp target teams distribute simd 18552 for (int i = 0; i < 10; ++i) { 18553 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18554 for (int i = 0; i < 10; ++i) 18555 ; 18556 } 18557 #pragma omp target teams distribute simd 18558 for (int i = 0; i < 10; ++i) { 18559 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 18560 for (int i = 0; i < 10; ++i) 18561 ; 18562 } 18563 #pragma omp target teams distribute simd 18564 for (int i = 0; i < 10; ++i) { 18565 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18566 for (int i = 0; i < 10; ++i) 18567 ; 18568 } 18569 #pragma omp target teams distribute simd 18570 for (int i = 0; i < 10; ++i) { 18571 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18572 for (int i = 0; i < 10; ++i) 18573 ; 18574 } 18575 #pragma omp target teams distribute simd 18576 for (int i = 0; i < 10; ++i) { 18577 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18578 { 18579 bar(); 18580 } 18581 } 18582 #pragma omp target teams distribute simd 18583 for (int i = 0; i < 10; ++i) { 18584 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18585 { 18586 bar(); 18587 } 18588 } 18589 #pragma omp target teams distribute simd 18590 for (int i = 0; i < 10; ++i) { 18591 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18592 { 18593 bar(); 18594 } 18595 } 18596 #pragma omp target teams distribute simd 18597 for (int i = 0; i < 10; ++i) { 18598 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18599 { 18600 bar(); 18601 } 18602 } 18603 #pragma omp target teams distribute simd 18604 for (int i = 0; i < 10; ++i) { 18605 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18606 { 18607 bar(); 18608 } 18609 } 18610 #pragma omp target teams distribute simd 18611 for (int i = 0; i < 10; ++i) { 18612 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18613 { 18614 #pragma omp single 18615 { 18616 bar(); 18617 } 18618 } 18619 } 18620 #pragma omp target teams distribute simd 18621 for (int i = 0; i < 10; ++i) { 18622 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18623 for (int i = 0; i < 10; ++i) 18624 ; 18625 } 18626 #pragma omp target teams distribute simd 18627 for (int i = 0; i < 10; ++i) { 18628 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18629 for (int i = 0; i < 10; ++i) 18630 ; 18631 } 18632 #pragma omp target teams distribute simd 18633 for (int i = 0; i < 10; ++i) { 18634 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18635 { 18636 bar(); 18637 } 18638 } 18639 #pragma omp target teams distribute simd 18640 for (int i = 0; i < 10; ++i) { 18641 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18642 { 18643 bar(); 18644 } 18645 } 18646 #pragma omp target teams distribute simd 18647 for (int i = 0; i < 10; ++i) { 18648 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18649 bar(); 18650 } 18651 #pragma omp target teams distribute simd 18652 for (int i = 0; i < 10; ++i) { 18653 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18654 bar(); 18655 } 18656 #pragma omp target teams distribute simd 18657 for (int i = 0; i < 10; ++i) { 18658 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 18659 bar(); 18660 } 18661 #pragma omp target teams distribute simd 18662 for (int i = 0; i < 10; ++i) { 18663 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18664 bar(); 18665 } 18666 #pragma omp target teams distribute simd 18667 for (int i = 0; i < 10; ++i) { 18668 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18669 bar(); 18670 } 18671 #pragma omp target teams distribute simd 18672 for (int i = 0; i < 10; ++i) { 18673 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18674 bar(); 18675 } 18676 #pragma omp target teams distribute simd 18677 for (int i = 0; i < 10; ++i) { 18678 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 18679 ++a; 18680 } 18681 #pragma omp target teams distribute simd 18682 for (int i = 0; i < 10; ++i) { 18683 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18684 ++a; 18685 } 18686 #pragma omp target teams distribute simd 18687 for (int i = 0; i < 10; ++i) { 18688 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18689 ++a; 18690 } 18691 #pragma omp target teams distribute simd 18692 for (int i = 0; i < 10; ++i) { 18693 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18694 for (int i = 0; i < 10; ++i) 18695 ; 18696 } 18697 #pragma omp target teams distribute simd 18698 for (int i = 0; i < 10; ++i) { 18699 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18700 ++a; 18701 } 18702 #pragma omp target teams distribute simd 18703 for (int i = 0; i < 10; ++i) { 18704 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18705 ++a; 18706 } 18707 #pragma omp target teams distribute simd 18708 for (int i = 0; i < 10; ++i) { 18709 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18710 ++a; 18711 } 18712 #pragma omp target teams distribute simd 18713 for (int i = 0; i < 10; ++i) { 18714 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18715 ++a; 18716 } 18717 #pragma omp target teams distribute simd 18718 for (int i = 0; i < 10; ++i) { 18719 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18720 for (int i = 0; i < 10; ++i) 18721 ++a; 18722 } 18723 #pragma omp target teams distribute simd 18724 for (int i = 0; i < 10; ++i) { 18725 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18726 for (int i = 0; i < 10; ++i) 18727 ++a; 18728 } 18729 #pragma omp target teams distribute simd 18730 for (int i = 0; i < 10; ++i) { 18731 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18732 for (int i = 0; i < 10; ++i) 18733 ++a; 18734 } 18735 #pragma omp target teams distribute simd 18736 for (int i = 0; i < 10; ++i) { 18737 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18738 for (int i = 0; i < 10; ++i) 18739 ++a; 18740 } 18741 #pragma omp target teams distribute simd 18742 for (int i = 0; i < 10; ++i) { 18743 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18744 for (int i = 0; i < 10; ++i) 18745 ++a; 18746 } 18747 #pragma omp target teams distribute simd 18748 for (int i = 0; i < 10; ++i) { 18749 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18750 for (int i = 0; i < 10; ++i) 18751 ; 18752 } 18753 #pragma omp target teams distribute simd 18754 for (int i = 0; i < 10; ++i) { 18755 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18756 a++; 18757 } 18758 #pragma omp target teams distribute simd 18759 for (int i = 0; i < 10; ++i) { 18760 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18761 for (int i = 0; i < 10; ++i) 18762 ; 18763 } 18764 #pragma omp target teams distribute simd 18765 for (int i = 0; i < 10; ++i) { 18766 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18767 for (int i = 0; i < 10; ++i) 18768 ; 18769 } 18770 #pragma omp target teams distribute simd 18771 for (int i = 0; i < 10; ++i) { 18772 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18773 for (int i = 0; i < 10; ++i) 18774 ; 18775 } 18776 #pragma omp target teams distribute simd 18777 for (int i = 0; i < 10; ++i) { 18778 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18779 for (int i = 0; i < 10; ++i) 18780 ; 18781 } 18782 18783 return foo<int>(); 18784 } 18785 18786