1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp45,omp45warn %s 2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=50 -verify=expected,omp50 %s 3 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -Wno-openmp %s 4 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -Wno-source-uses-openmp %s 5 6 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45,omp45warn %s 7 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50 %s 8 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 9 10 void bar(); 11 12 template <class T> 13 void foo() { 14 T a = T(); 15 // PARALLEL DIRECTIVE 16 #pragma omp parallel 17 #pragma omp for 18 for (int i = 0; i < 10; ++i) 19 ; 20 #pragma omp parallel 21 #pragma omp simd 22 for (int i = 0; i < 10; ++i) 23 ; 24 #pragma omp parallel 25 #pragma omp for simd 26 for (int i = 0; i < 10; ++i) 27 ; 28 #pragma omp parallel 29 #pragma omp sections 30 { 31 bar(); 32 } 33 #pragma omp parallel 34 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 35 { 36 bar(); 37 } 38 #pragma omp parallel 39 #pragma omp single 40 bar(); 41 42 #pragma omp parallel 43 #pragma omp master 44 { 45 bar(); 46 } 47 #pragma omp parallel 48 #pragma omp critical 49 { 50 bar(); 51 } 52 #pragma omp parallel 53 #pragma omp parallel for 54 for (int i = 0; i < 10; ++i) 55 ; 56 #pragma omp parallel 57 #pragma omp parallel for simd 58 for (int i = 0; i < 10; ++i) 59 ; 60 #pragma omp parallel 61 #pragma omp parallel sections 62 { 63 bar(); 64 } 65 #pragma omp parallel 66 #pragma omp parallel master 67 { 68 bar(); 69 } 70 #pragma omp parallel 71 #pragma omp task 72 { 73 bar(); 74 } 75 #pragma omp parallel 76 { 77 #pragma omp taskyield 78 bar(); 79 } 80 #pragma omp parallel 81 { 82 #pragma omp barrier 83 bar(); 84 } 85 #pragma omp parallel 86 { 87 #pragma omp taskwait 88 bar(); 89 } 90 #pragma omp parallel 91 { 92 #pragma omp flush 93 bar(); 94 } 95 #pragma omp parallel 96 { 97 #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?}} 98 bar(); 99 } 100 #pragma omp parallel 101 { 102 #pragma omp atomic 103 ++a; 104 } 105 #pragma omp parallel 106 { 107 #pragma omp target 108 ++a; 109 } 110 #pragma omp parallel 111 { 112 #pragma omp target parallel 113 ++a; 114 } 115 #pragma omp parallel 116 { 117 #pragma omp target parallel for 118 for (int i = 0; i < 10; ++i) 119 ; 120 } 121 #pragma omp parallel 122 { 123 #pragma omp target enter data map(to: a) 124 ++a; 125 } 126 #pragma omp parallel 127 { 128 #pragma omp target exit data map(from: a) 129 ++a; 130 } 131 #pragma omp parallel 132 { 133 #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?}} 134 ++a; 135 } 136 #pragma omp parallel 137 { 138 #pragma omp taskloop 139 for (int i = 0; i < 10; ++i) 140 ++a; 141 } 142 #pragma omp parallel 143 { 144 #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?}} 145 for (int i = 0; i < 10; ++i) 146 ; 147 } 148 #pragma omp parallel 149 { 150 #pragma omp target update to(a) 151 } 152 #pragma omp parallel 153 { 154 #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?}} 155 for (int i = 0; i < 10; ++i) 156 ; 157 } 158 #pragma omp parallel 159 { 160 #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?}} 161 for (int i = 0; i < 10; ++i) 162 ; 163 } 164 #pragma omp parallel 165 { 166 #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?}} 167 for (int i = 0; i < 10; ++i) 168 ; 169 } 170 #pragma omp parallel 171 { 172 #pragma omp target simd // OK 173 for (int i = 0; i < 10; ++i) 174 ; 175 } 176 #pragma omp parallel 177 { 178 #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?}} 179 for (int i = 0; i < 10; ++i) 180 ; 181 } 182 #pragma omp parallel 183 { 184 #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?}} 185 for (int i = 0; i < 10; ++i) 186 ; 187 } 188 #pragma omp parallel 189 { 190 #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?}} 191 for (int i = 0; i < 10; ++i) 192 ; 193 } 194 #pragma omp parallel 195 { 196 #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?}} 197 for (int i = 0; i < 10; ++i) 198 ; 199 } 200 #pragma omp parallel 201 { 202 #pragma omp target teams // OK 203 ++a; 204 } 205 #pragma omp parallel 206 { 207 #pragma omp target teams distribute // OK 208 for (int i = 0; i < 10; ++i) 209 ; 210 } 211 #pragma omp parallel 212 { 213 #pragma omp target teams distribute parallel for // OK 214 for (int i = 0; i < 10; ++i) 215 ; 216 } 217 #pragma omp parallel 218 { 219 #pragma omp target teams distribute parallel for simd // OK 220 for (int i = 0; i < 10; ++i) 221 ; 222 } 223 #pragma omp parallel 224 { 225 #pragma omp target teams distribute simd // OK 226 for (int i = 0; i < 10; ++i) 227 ; 228 } 229 230 // SIMD DIRECTIVE 231 #pragma omp simd 232 for (int i = 0; i < 10; ++i) { 233 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 234 for (int i = 0; i < 10; ++i) 235 ; 236 } 237 #pragma omp simd 238 for (int i = 0; i < 10; ++i) { 239 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 240 for (int i = 0; i < 10; ++i) 241 ; 242 } 243 #pragma omp simd 244 for (int i = 0; i < 10; ++i) { 245 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 246 for (int i = 0; i < 10; ++i) 247 ; 248 } 249 #pragma omp simd 250 for (int i = 0; i < 10; ++i) { 251 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 252 for (int i = 0; i < 10; ++i) 253 ; 254 } 255 #pragma omp simd 256 for (int i = 0; i < 10; ++i) { 257 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 258 { 259 bar(); 260 } 261 } 262 #pragma omp simd 263 for (int i = 0; i < 10; ++i) { 264 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 265 { 266 bar(); 267 } 268 } 269 #pragma omp simd 270 for (int i = 0; i < 10; ++i) { 271 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 272 { 273 bar(); 274 } 275 } 276 #pragma omp simd 277 for (int i = 0; i < 10; ++i) { 278 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 279 { 280 bar(); 281 } 282 } 283 #pragma omp simd 284 for (int i = 0; i < 10; ++i) { 285 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 286 { 287 bar(); 288 } 289 } 290 #pragma omp simd 291 for (int i = 0; i < 10; ++i) { 292 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 293 for (int i = 0; i < 10; ++i) 294 ; 295 } 296 #pragma omp simd 297 for (int i = 0; i < 10; ++i) { 298 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 299 for (int i = 0; i < 10; ++i) 300 ; 301 } 302 #pragma omp simd 303 for (int i = 0; i < 10; ++i) { 304 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 305 { 306 bar(); 307 } 308 } 309 #pragma omp simd 310 for (int i = 0; i < 10; ++i) { 311 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 312 { 313 bar(); 314 } 315 } 316 #pragma omp simd 317 for (int i = 0; i < 10; ++i) { 318 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 319 { 320 bar(); 321 } 322 } 323 #pragma omp simd 324 for (int i = 0; i < 10; ++i) { 325 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 326 bar(); 327 } 328 #pragma omp simd 329 for (int i = 0; i < 10; ++i) { 330 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 331 bar(); 332 } 333 #pragma omp simd 334 for (int i = 0; i < 10; ++i) { 335 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 336 bar(); 337 } 338 #pragma omp simd 339 for (int i = 0; i < 10; ++i) { 340 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 341 bar(); 342 } 343 #pragma omp simd 344 for (int i = 0; i < 10; ++i) { 345 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 346 bar(); 347 } 348 #pragma omp simd 349 for (int i = 0; i < 10; ++i) { 350 #pragma omp ordered simd // OK 351 bar(); 352 } 353 #pragma omp simd 354 for (int i = 0; i < 10; ++i) { 355 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 356 bar(); 357 } 358 #pragma omp simd 359 for (int i = 0; i < 10; ++i) { 360 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 361 ++a; 362 } 363 #pragma omp simd 364 for (int i = 0; i < 10; ++i) { 365 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 366 ++a; 367 } 368 #pragma omp simd 369 for (int i = 0; i < 10; ++i) { 370 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 371 ++a; 372 } 373 #pragma omp simd 374 for (int i = 0; i < 10; ++i) { 375 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 376 for (int i = 0; i < 10; ++i) 377 ; 378 } 379 #pragma omp simd 380 for (int i = 0; i < 10; ++i) { 381 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 382 ++a; 383 } 384 #pragma omp simd 385 for (int i = 0; i < 10; ++i) { 386 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 387 ++a; 388 } 389 #pragma omp simd 390 for (int i = 0; i < 10; ++i) { 391 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 392 ++a; 393 } 394 #pragma omp simd 395 for (int i = 0; i < 10; ++i) { 396 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 397 for (int i = 0; i < 10; ++i) 398 ++a; 399 } 400 #pragma omp simd 401 for (int i = 0; i < 10; ++i) { 402 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 403 for (int j = 0; j < 10; ++j) 404 ; 405 } 406 #pragma omp simd 407 for (int i = 0; i < 10; ++i) { 408 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 409 } 410 #pragma omp simd 411 for (int i = 0; i < 10; ++i) { 412 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 413 for (int j = 0; j < 10; ++j) 414 ; 415 } 416 #pragma omp simd 417 for (int i = 0; i < 10; ++i) { 418 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 419 for (int j = 0; j < 10; ++j) 420 ; 421 } 422 #pragma omp simd 423 for (int i = 0; i < 10; ++i) { 424 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 425 for (int j = 0; j < 10; ++j) 426 ; 427 } 428 #pragma omp simd 429 for (int i = 0; i < 10; ++i) { 430 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 431 for (int j = 0; j < 10; ++j) 432 ; 433 } 434 #pragma omp simd 435 for (int i = 0; i < 10; ++i) { 436 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 437 for (int j = 0; j < 10; ++j) 438 ; 439 } 440 #pragma omp simd 441 for (int i = 0; i < 10; ++i) { 442 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 443 for (int j = 0; j < 10; ++j) 444 ; 445 } 446 #pragma omp simd 447 for (int i = 0; i < 10; ++i) { 448 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 449 for (int j = 0; j < 10; ++j) 450 ; 451 } 452 #pragma omp simd 453 for (int i = 0; i < 10; ++i) { 454 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 455 for (int j = 0; j < 10; ++j) 456 ; 457 } 458 #pragma omp simd 459 for (int i = 0; i < 10; ++i) { 460 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 461 ++a; 462 } 463 #pragma omp simd 464 for (int i = 0; i < 10; ++i) { 465 #pragma omp target teams distribute // 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 target teams distribute parallel for // 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 target teams distribute parallel for simd // 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 distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 484 for (int j = 0; j < 10; ++j) 485 ; 486 } 487 488 // FOR DIRECTIVE 489 #pragma omp for 490 for (int i = 0; i < 10; ++i) { 491 #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?}} 492 for (int i = 0; i < 10; ++i) 493 ; 494 } 495 #pragma omp for 496 for (int i = 0; i < 10; ++i) { 497 #pragma omp simd 498 for (int i = 0; i < 10; ++i) 499 ; 500 } 501 #pragma omp for 502 for (int i = 0; i < 10; ++i) { 503 #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?}} 504 for (int i = 0; i < 10; ++i) 505 ; 506 } 507 #pragma omp for 508 for (int i = 0; i < 10; ++i) { 509 #pragma omp parallel 510 for (int i = 0; i < 10; ++i) 511 ; 512 } 513 #pragma omp for 514 for (int i = 0; i < 10; ++i) { 515 #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?}} 516 { 517 bar(); 518 } 519 } 520 #pragma omp for 521 for (int i = 0; i < 10; ++i) { 522 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 523 { 524 bar(); 525 } 526 } 527 #pragma omp for 528 for (int i = 0; i < 10; ++i) { 529 #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?}} 530 { 531 bar(); 532 } 533 } 534 535 #pragma omp for 536 for (int i = 0; i < 10; ++i) { 537 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 538 { 539 bar(); 540 } 541 } 542 #pragma omp for 543 for (int i = 0; i < 10; ++i) { 544 #pragma omp critical 545 { 546 bar(); 547 } 548 } 549 #pragma omp for 550 for (int i = 0; i < 10; ++i) { 551 #pragma omp parallel 552 { 553 #pragma omp single // OK 554 { 555 bar(); 556 } 557 #pragma omp for // OK 558 for (int i = 0; i < 10; ++i) 559 ; 560 #pragma omp sections // OK 561 { 562 bar(); 563 } 564 } 565 } 566 #pragma omp for 567 for (int i = 0; i < 10; ++i) { 568 #pragma omp parallel for 569 for (int i = 0; i < 10; ++i) 570 ; 571 } 572 #pragma omp for 573 for (int i = 0; i < 10; ++i) { 574 #pragma omp parallel for simd 575 for (int i = 0; i < 10; ++i) 576 ; 577 } 578 #pragma omp for 579 for (int i = 0; i < 10; ++i) { 580 #pragma omp parallel master 581 { 582 bar(); 583 } 584 } 585 #pragma omp for 586 for (int i = 0; i < 10; ++i) { 587 #pragma omp parallel sections 588 { 589 bar(); 590 } 591 } 592 #pragma omp for 593 for (int i = 0; i < 10; ++i) { 594 #pragma omp task 595 { 596 bar(); 597 } 598 } 599 #pragma omp for 600 for (int i = 0; i < 10; ++i) { 601 #pragma omp taskyield 602 bar(); 603 } 604 #pragma omp for 605 for (int i = 0; i < 10; ++i) { 606 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 607 bar(); 608 } 609 #pragma omp for 610 for (int i = 0; i < 10; ++i) { 611 #pragma omp taskwait 612 bar(); 613 } 614 #pragma omp for 615 for (int i = 0; i < 10; ++i) { 616 #pragma omp flush 617 bar(); 618 } 619 #pragma omp for 620 for (int i = 0; i < 10; ++i) { 621 #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?}} 622 bar(); 623 } 624 #pragma omp for ordered 625 for (int i = 0; i < 10; ++i) { 626 #pragma omp ordered // OK 627 bar(); 628 } 629 #pragma omp for 630 for (int i = 0; i < 10; ++i) { 631 #pragma omp atomic 632 ++a; 633 } 634 #pragma omp for 635 for (int i = 0; i < 10; ++i) { 636 #pragma omp target 637 ++a; 638 } 639 #pragma omp for 640 for (int i = 0; i < 10; ++i) { 641 #pragma omp target parallel 642 ++a; 643 } 644 #pragma omp for 645 for (int i = 0; i < 10; ++i) { 646 #pragma omp target parallel for 647 for (int i = 0; i < 10; ++i) 648 ; 649 } 650 #pragma omp for 651 for (int i = 0; i < 10; ++i) { 652 #pragma omp target enter data map(to: a) 653 ++a; 654 } 655 #pragma omp for 656 for (int i = 0; i < 10; ++i) { 657 #pragma omp target exit data map(from: a) 658 ++a; 659 } 660 #pragma omp for 661 for (int i = 0; i < 10; ++i) { 662 #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?}} 663 ++a; 664 } 665 #pragma omp for 666 for (int i = 0; i < 10; ++i) { 667 #pragma omp taskloop 668 for (int i = 0; i < 10; ++i) 669 ++a; 670 } 671 #pragma omp for 672 for (int i = 0; i < 10; ++i) { 673 #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?}} 674 for (int j = 0; j < 10; ++j) 675 ; 676 } 677 #pragma omp for 678 for (int i = 0; i < 10; ++i) { 679 #pragma omp target update to(a) 680 } 681 #pragma omp for 682 for (int i = 0; i < 10; ++i) { 683 #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?}} 684 for (int j = 0; j < 10; ++j) 685 ; 686 } 687 #pragma omp for 688 for (int i = 0; i < 10; ++i) { 689 #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?}} 690 for (int j = 0; j < 10; ++j) 691 ; 692 } 693 #pragma omp for 694 for (int i = 0; i < 10; ++i) { 695 #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?}} 696 for (int j = 0; j < 10; ++j) 697 ; 698 } 699 #pragma omp for 700 for (int i = 0; i < 10; ++i) { 701 #pragma omp target simd // OK 702 for (int j = 0; j < 10; ++j) 703 ; 704 } 705 #pragma omp for 706 for (int i = 0; i < 10; ++i) { 707 #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?}} 708 for (int j = 0; j < 10; ++j) 709 ; 710 } 711 #pragma omp for 712 for (int i = 0; i < 10; ++i) { 713 #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?}} 714 for (int j = 0; j < 10; ++j) 715 ; 716 } 717 #pragma omp for 718 for (int i = 0; i < 10; ++i) { 719 #pragma omp 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?}} 720 for (int j = 0; j < 10; ++j) 721 ; 722 } 723 #pragma omp for 724 for (int i = 0; i < 10; ++i) { 725 #pragma omp 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?}} 726 for (int j = 0; j < 10; ++j) 727 ; 728 } 729 #pragma omp for 730 for (int i = 0; i < 10; ++i) { 731 #pragma omp target teams // OK 732 ++a; 733 } 734 #pragma omp for 735 for (int i = 0; i < 10; ++i) { 736 #pragma omp target teams distribute // 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 target teams distribute parallel for // OK 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 target teams distribute parallel for simd // OK 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 target teams distribute simd // OK 755 for (int j = 0; j < 10; ++j) 756 ; 757 } 758 759 // FOR SIMD DIRECTIVE 760 #pragma omp for simd 761 for (int i = 0; i < 10; ++i) { 762 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 763 for (int i = 0; i < 10; ++i) 764 ; 765 } 766 #pragma omp for simd 767 for (int i = 0; i < 10; ++i) { 768 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 769 for (int i = 0; i < 10; ++i) 770 ; 771 } 772 #pragma omp for simd 773 for (int i = 0; i < 10; ++i) { 774 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 775 for (int i = 0; i < 10; ++i) 776 ; 777 } 778 #pragma omp for simd 779 for (int i = 0; i < 10; ++i) { 780 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 781 for (int i = 0; i < 10; ++i) 782 ; 783 } 784 #pragma omp for simd 785 for (int i = 0; i < 10; ++i) { 786 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 787 { 788 bar(); 789 } 790 } 791 #pragma omp for simd 792 for (int i = 0; i < 10; ++i) { 793 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 794 { 795 bar(); 796 } 797 } 798 #pragma omp for simd 799 for (int i = 0; i < 10; ++i) { 800 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 801 { 802 bar(); 803 } 804 } 805 #pragma omp for simd 806 for (int i = 0; i < 10; ++i) { 807 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 808 { 809 bar(); 810 } 811 } 812 #pragma omp for simd 813 for (int i = 0; i < 10; ++i) { 814 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 815 { 816 bar(); 817 } 818 } 819 #pragma omp for simd 820 for (int i = 0; i < 10; ++i) { 821 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 822 for (int i = 0; i < 10; ++i) 823 ; 824 } 825 #pragma omp for simd 826 for (int i = 0; i < 10; ++i) { 827 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 828 for (int i = 0; i < 10; ++i) 829 ; 830 } 831 #pragma omp for simd 832 for (int i = 0; i < 10; ++i) { 833 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 834 { 835 bar(); 836 } 837 } 838 #pragma omp for simd 839 for (int i = 0; i < 10; ++i) { 840 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 841 { 842 bar(); 843 } 844 } 845 #pragma omp for simd 846 for (int i = 0; i < 10; ++i) { 847 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 848 { 849 bar(); 850 } 851 } 852 #pragma omp for simd 853 for (int i = 0; i < 10; ++i) { 854 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 855 bar(); 856 } 857 #pragma omp for simd 858 for (int i = 0; i < 10; ++i) { 859 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 860 bar(); 861 } 862 #pragma omp for simd 863 for (int i = 0; i < 10; ++i) { 864 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 865 bar(); 866 } 867 #pragma omp for simd 868 for (int i = 0; i < 10; ++i) { 869 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 870 bar(); 871 } 872 #pragma omp for simd 873 for (int i = 0; i < 10; ++i) { 874 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 875 bar(); 876 } 877 #pragma omp for simd 878 for (int i = 0; i < 10; ++i) { 879 #pragma omp ordered simd // OK 880 bar(); 881 } 882 #pragma omp for simd 883 for (int i = 0; i < 10; ++i) { 884 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 885 bar(); 886 } 887 #pragma omp for simd 888 for (int i = 0; i < 10; ++i) { 889 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 890 ++a; 891 } 892 #pragma omp for simd 893 for (int i = 0; i < 10; ++i) { 894 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 895 ++a; 896 } 897 #pragma omp for simd 898 for (int i = 0; i < 10; ++i) { 899 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 900 ++a; 901 } 902 #pragma omp for simd 903 for (int i = 0; i < 10; ++i) { 904 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 905 for (int i = 0; i < 10; ++i) 906 ; 907 } 908 #pragma omp for simd 909 for (int i = 0; i < 10; ++i) { 910 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 911 ++a; 912 } 913 #pragma omp for simd 914 for (int i = 0; i < 10; ++i) { 915 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 916 ++a; 917 } 918 #pragma omp for simd 919 for (int i = 0; i < 10; ++i) { 920 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 921 ++a; 922 } 923 #pragma omp for simd 924 for (int i = 0; i < 10; ++i) { 925 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 926 for (int i = 0; i < 10; ++i) 927 ++a; 928 } 929 #pragma omp for simd 930 for (int i = 0; i < 10; ++i) { 931 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 932 for (int j = 0; j < 10; ++j) 933 ; 934 } 935 #pragma omp for simd 936 for (int i = 0; i < 10; ++i) { 937 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 938 bar(); 939 } 940 #pragma omp for simd 941 for (int i = 0; i < 10; ++i) { 942 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 943 for (int j = 0; j < 10; ++j) 944 ; 945 } 946 #pragma omp for simd 947 for (int i = 0; i < 10; ++i) { 948 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 949 for (int j = 0; j < 10; ++j) 950 ; 951 } 952 #pragma omp for simd 953 for (int i = 0; i < 10; ++i) { 954 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 955 for (int j = 0; j < 10; ++j) 956 ; 957 } 958 #pragma omp for simd 959 for (int i = 0; i < 10; ++i) { 960 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 961 for (int j = 0; j < 10; ++j) 962 ; 963 } 964 #pragma omp for simd 965 for (int i = 0; i < 10; ++i) { 966 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 967 for (int j = 0; j < 10; ++j) 968 ; 969 } 970 #pragma omp for simd 971 for (int i = 0; i < 10; ++i) { 972 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 973 for (int j = 0; j < 10; ++j) 974 ; 975 } 976 #pragma omp for simd 977 for (int i = 0; i < 10; ++i) { 978 #pragma omp teams distribute parallel for simd // 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 teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 985 for (int j = 0; j < 10; ++j) 986 ; 987 } 988 #pragma omp for simd 989 for (int i = 0; i < 10; ++i) { 990 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 991 a++; 992 } 993 #pragma omp for simd 994 for (int i = 0; i < 10; ++i) { 995 #pragma omp target teams distribute // 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 target teams distribute parallel for // 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 teams distribute parallel for 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 target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1014 for (int j = 0; j < 10; ++j) 1015 ; 1016 } 1017 1018 // SECTIONS DIRECTIVE 1019 #pragma omp sections 1020 { 1021 #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?}} 1022 for (int i = 0; i < 10; ++i) 1023 ; 1024 } 1025 #pragma omp sections 1026 { 1027 #pragma omp simd 1028 for (int i = 0; i < 10; ++i) 1029 ; 1030 } 1031 #pragma omp sections 1032 { 1033 #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?}} 1034 for (int i = 0; i < 10; ++i) 1035 ; 1036 } 1037 #pragma omp sections 1038 { 1039 #pragma omp parallel 1040 for (int i = 0; i < 10; ++i) 1041 ; 1042 } 1043 #pragma omp sections 1044 { 1045 #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?}} 1046 { 1047 bar(); 1048 } 1049 } 1050 #pragma omp sections 1051 { 1052 #pragma omp section 1053 { 1054 bar(); 1055 } 1056 } 1057 #pragma omp sections 1058 { 1059 #pragma omp parallel 1060 { 1061 #pragma omp single // OK 1062 { 1063 bar(); 1064 } 1065 #pragma omp for // OK 1066 for (int i = 0; i < 10; ++i) 1067 ; 1068 #pragma omp sections // OK 1069 { 1070 bar(); 1071 } 1072 } 1073 } 1074 #pragma omp sections 1075 { 1076 #pragma omp parallel master 1077 { 1078 bar(); 1079 } 1080 } 1081 #pragma omp sections 1082 { 1083 #pragma omp parallel 1084 { 1085 #pragma omp master // OK 1086 { 1087 bar(); 1088 } 1089 #pragma omp for // OK 1090 for (int i = 0; i < 10; ++i) 1091 ; 1092 #pragma omp master // OK 1093 { 1094 bar(); 1095 } 1096 } 1097 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1098 bar(); 1099 } 1100 #pragma omp sections 1101 { 1102 #pragma omp parallel 1103 { 1104 #pragma omp critical(A) // OK 1105 { 1106 bar(); 1107 } 1108 #pragma omp for // OK 1109 for (int i = 0; i < 10; ++i) 1110 ; 1111 #pragma omp critical // OK 1112 { 1113 bar(); 1114 } 1115 } 1116 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1117 bar(); 1118 } 1119 #pragma omp sections 1120 { 1121 #pragma omp parallel for 1122 for (int i = 0; i < 10; ++i) 1123 ; 1124 } 1125 #pragma omp sections 1126 { 1127 #pragma omp parallel for simd 1128 for (int i = 0; i < 10; ++i) 1129 ; 1130 } 1131 #pragma omp sections 1132 { 1133 #pragma omp parallel sections 1134 { 1135 bar(); 1136 } 1137 } 1138 #pragma omp sections 1139 { 1140 #pragma omp task 1141 { 1142 bar(); 1143 } 1144 } 1145 #pragma omp sections 1146 { 1147 #pragma omp taskyield 1148 } 1149 #pragma omp sections 1150 { 1151 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1152 } 1153 #pragma omp sections 1154 { 1155 #pragma omp taskwait 1156 } 1157 #pragma omp sections 1158 { 1159 #pragma omp flush 1160 } 1161 #pragma omp sections 1162 { 1163 #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?}} 1164 bar(); 1165 } 1166 #pragma omp sections 1167 { 1168 #pragma omp atomic 1169 ++a; 1170 } 1171 #pragma omp sections 1172 { 1173 #pragma omp target 1174 ++a; 1175 } 1176 #pragma omp sections 1177 { 1178 #pragma omp target parallel 1179 ++a; 1180 } 1181 #pragma omp sections 1182 { 1183 #pragma omp target parallel for 1184 for (int i = 0; i < 10; ++i) 1185 ; 1186 } 1187 #pragma omp sections 1188 { 1189 #pragma omp target enter data map(to: a) 1190 } 1191 #pragma omp sections 1192 { 1193 #pragma omp target exit data map(from: a) 1194 } 1195 #pragma omp sections 1196 { 1197 #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?}} 1198 ++a; 1199 } 1200 #pragma omp sections 1201 { 1202 #pragma omp taskloop 1203 for (int i = 0; i < 10; ++i) 1204 ++a; 1205 } 1206 #pragma omp sections 1207 { 1208 #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?}} 1209 for (int i = 0; i < 10; ++i) 1210 ; 1211 } 1212 #pragma omp sections 1213 { 1214 #pragma omp target update to(a) 1215 } 1216 #pragma omp sections 1217 { 1218 #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?}} 1219 for (int i = 0; i < 10; ++i) 1220 ; 1221 } 1222 #pragma omp sections 1223 { 1224 #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?}} 1225 for (int i = 0; i < 10; ++i) 1226 ; 1227 } 1228 #pragma omp sections 1229 { 1230 #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?}} 1231 for (int i = 0; i < 10; ++i) 1232 ; 1233 } 1234 #pragma omp sections 1235 { 1236 #pragma omp target simd // OK 1237 for (int i = 0; i < 10; ++i) 1238 ; 1239 } 1240 #pragma omp sections 1241 { 1242 #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?}} 1243 for (int i = 0; i < 10; ++i) 1244 ; 1245 } 1246 #pragma omp sections 1247 { 1248 #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?}} 1249 for (int i = 0; i < 10; ++i) 1250 ; 1251 } 1252 #pragma omp sections 1253 { 1254 #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?}} 1255 for (int i = 0; i < 10; ++i) 1256 ; 1257 } 1258 #pragma omp sections 1259 { 1260 #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?}} 1261 for (int i = 0; i < 10; ++i) 1262 ; 1263 } 1264 #pragma omp sections 1265 { 1266 #pragma omp target teams // OK 1267 ++a; 1268 } 1269 #pragma omp sections 1270 { 1271 #pragma omp target teams distribute // OK 1272 for (int i = 0; i < 10; ++i) 1273 ; 1274 } 1275 #pragma omp sections 1276 { 1277 #pragma omp target teams distribute parallel for // OK 1278 for (int i = 0; i < 10; ++i) 1279 ; 1280 } 1281 #pragma omp sections 1282 { 1283 #pragma omp target teams distribute parallel for simd // OK 1284 for (int i = 0; i < 10; ++i) 1285 ; 1286 } 1287 #pragma omp sections 1288 { 1289 #pragma omp target teams distribute simd // OK 1290 for (int i = 0; i < 10; ++i) 1291 ; 1292 } 1293 1294 // SECTION DIRECTIVE 1295 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1296 { 1297 bar(); 1298 } 1299 #pragma omp sections 1300 { 1301 #pragma omp section 1302 { 1303 #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?}} 1304 for (int i = 0; i < 10; ++i) 1305 ; 1306 } 1307 } 1308 #pragma omp sections 1309 { 1310 #pragma omp section 1311 { 1312 #pragma omp simd 1313 for (int i = 0; i < 10; ++i) 1314 ; 1315 } 1316 } 1317 #pragma omp sections 1318 { 1319 #pragma omp section 1320 { 1321 #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?}} 1322 for (int i = 0; i < 10; ++i) 1323 ; 1324 } 1325 } 1326 #pragma omp sections 1327 { 1328 #pragma omp section 1329 { 1330 #pragma omp parallel 1331 for (int i = 0; i < 10; ++i) 1332 ; 1333 } 1334 } 1335 #pragma omp sections 1336 { 1337 #pragma omp section 1338 { 1339 #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?}} 1340 { 1341 bar(); 1342 } 1343 } 1344 } 1345 #pragma omp sections 1346 { 1347 #pragma omp section 1348 { 1349 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1350 { 1351 bar(); 1352 } 1353 } 1354 } 1355 #pragma omp sections 1356 { 1357 #pragma omp section 1358 { 1359 #pragma omp parallel master 1360 bar(); 1361 #pragma omp critical 1362 bar(); 1363 } 1364 } 1365 #pragma omp sections 1366 { 1367 #pragma omp section 1368 { 1369 #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?}} 1370 bar(); 1371 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1372 bar(); 1373 #pragma omp critical 1374 bar(); 1375 } 1376 } 1377 #pragma omp sections 1378 { 1379 #pragma omp section 1380 { 1381 #pragma omp parallel 1382 { 1383 #pragma omp single // OK 1384 { 1385 bar(); 1386 } 1387 #pragma omp for // OK 1388 for (int i = 0; i < 10; ++i) 1389 ; 1390 #pragma omp for simd // OK 1391 for (int i = 0; i < 10; ++i) 1392 ; 1393 #pragma omp sections // OK 1394 { 1395 bar(); 1396 } 1397 } 1398 } 1399 } 1400 #pragma omp sections 1401 { 1402 #pragma omp section 1403 { 1404 #pragma omp parallel for 1405 for (int i = 0; i < 10; ++i) 1406 ; 1407 } 1408 } 1409 #pragma omp sections 1410 { 1411 #pragma omp section 1412 { 1413 #pragma omp parallel for simd 1414 for (int i = 0; i < 10; ++i) 1415 ; 1416 } 1417 } 1418 #pragma omp sections 1419 { 1420 #pragma omp section 1421 { 1422 #pragma omp parallel sections 1423 { 1424 bar(); 1425 } 1426 } 1427 } 1428 #pragma omp sections 1429 { 1430 #pragma omp section 1431 { 1432 #pragma omp task 1433 { 1434 bar(); 1435 } 1436 } 1437 } 1438 #pragma omp sections 1439 { 1440 #pragma omp section 1441 { 1442 #pragma omp taskyield 1443 bar(); 1444 } 1445 } 1446 #pragma omp sections 1447 { 1448 #pragma omp section 1449 { 1450 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1451 bar(); 1452 } 1453 } 1454 #pragma omp sections 1455 { 1456 #pragma omp section 1457 { 1458 #pragma omp taskwait 1459 bar(); 1460 } 1461 } 1462 #pragma omp sections 1463 { 1464 #pragma omp section 1465 { 1466 #pragma omp flush 1467 bar(); 1468 } 1469 } 1470 #pragma omp sections 1471 { 1472 #pragma omp section 1473 { 1474 #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?}} 1475 bar(); 1476 } 1477 } 1478 #pragma omp sections 1479 { 1480 #pragma omp section 1481 #pragma omp atomic 1482 ++a; 1483 } 1484 #pragma omp sections 1485 { 1486 #pragma omp section 1487 #pragma omp target 1488 ++a; 1489 } 1490 #pragma omp sections 1491 { 1492 #pragma omp section 1493 #pragma omp target parallel 1494 ++a; 1495 } 1496 #pragma omp sections 1497 { 1498 #pragma omp section 1499 { 1500 #pragma omp target parallel for 1501 for (int i = 0; i < 10; ++i) 1502 ; 1503 } 1504 } 1505 #pragma omp sections 1506 { 1507 #pragma omp section 1508 { 1509 #pragma omp target enter data map(to: a) 1510 ++a; 1511 } 1512 } 1513 #pragma omp sections 1514 { 1515 #pragma omp section 1516 { 1517 #pragma omp target exit data map(from: a) 1518 ++a; 1519 } 1520 } 1521 #pragma omp sections 1522 { 1523 #pragma omp section 1524 #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?}} 1525 ++a; 1526 } 1527 #pragma omp sections 1528 { 1529 #pragma omp section 1530 #pragma omp taskloop 1531 for (int i = 0; i < 10; ++i) 1532 ++a; 1533 } 1534 #pragma omp sections 1535 { 1536 #pragma omp section 1537 #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?}} 1538 for (int i = 0; i < 10; ++i) 1539 ; 1540 } 1541 #pragma omp sections 1542 { 1543 #pragma omp section 1544 { 1545 bar(); 1546 #pragma omp target update to(a) 1547 } 1548 } 1549 #pragma omp sections 1550 { 1551 #pragma omp section 1552 #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?}} 1553 for (int i = 0; i < 10; ++i) 1554 ; 1555 } 1556 #pragma omp sections 1557 { 1558 #pragma omp section 1559 #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?}} 1560 for (int i = 0; i < 10; ++i) 1561 ; 1562 } 1563 #pragma omp sections 1564 { 1565 #pragma omp section 1566 #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?}} 1567 for (int i = 0; i < 10; ++i) 1568 ; 1569 } 1570 #pragma omp sections 1571 { 1572 #pragma omp section 1573 #pragma omp target simd // OK 1574 for (int i = 0; i < 10; ++i) 1575 ; 1576 } 1577 #pragma omp sections 1578 { 1579 #pragma omp section 1580 #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?}} 1581 for (int i = 0; i < 10; ++i) 1582 ; 1583 } 1584 #pragma omp sections 1585 { 1586 #pragma omp section 1587 #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?}} 1588 for (int i = 0; i < 10; ++i) 1589 ; 1590 } 1591 #pragma omp sections 1592 { 1593 #pragma omp section 1594 #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?}} 1595 for (int i = 0; i < 10; ++i) 1596 ; 1597 } 1598 #pragma omp sections 1599 { 1600 #pragma omp section 1601 #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?}} 1602 for (int i = 0; i < 10; ++i) 1603 ; 1604 } 1605 #pragma omp sections 1606 { 1607 #pragma omp section 1608 #pragma omp target teams // OK 1609 ++a; 1610 } 1611 #pragma omp sections 1612 { 1613 #pragma omp section 1614 #pragma omp target teams distribute // OK 1615 for (int i = 0; i < 10; ++i) 1616 ; 1617 } 1618 #pragma omp sections 1619 { 1620 #pragma omp section 1621 #pragma omp target teams distribute parallel for // OK 1622 for (int i = 0; i < 10; ++i) 1623 ; 1624 } 1625 #pragma omp sections 1626 { 1627 #pragma omp section 1628 #pragma omp target teams distribute parallel for simd // OK 1629 for (int i = 0; i < 10; ++i) 1630 ; 1631 } 1632 #pragma omp sections 1633 { 1634 #pragma omp section 1635 #pragma omp target teams distribute simd // OK 1636 for (int i = 0; i < 10; ++i) 1637 ; 1638 } 1639 1640 // SINGLE DIRECTIVE 1641 #pragma omp single 1642 { 1643 #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?}} 1644 for (int i = 0; i < 10; ++i) 1645 ; 1646 } 1647 #pragma omp single 1648 { 1649 #pragma omp simd 1650 for (int i = 0; i < 10; ++i) 1651 ; 1652 } 1653 #pragma omp single 1654 { 1655 #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?}} 1656 for (int i = 0; i < 10; ++i) 1657 ; 1658 } 1659 #pragma omp single 1660 { 1661 #pragma omp parallel 1662 for (int i = 0; i < 10; ++i) 1663 ; 1664 } 1665 #pragma omp single 1666 { 1667 #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?}} 1668 { 1669 bar(); 1670 } 1671 } 1672 #pragma omp single 1673 { 1674 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1675 { 1676 bar(); 1677 } 1678 } 1679 #pragma omp single 1680 { 1681 #pragma omp parallel master 1682 { 1683 bar(); 1684 } 1685 } 1686 #pragma omp single 1687 { 1688 #pragma omp critical 1689 { 1690 bar(); 1691 } 1692 } 1693 #pragma omp single 1694 { 1695 #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?}} 1696 { 1697 bar(); 1698 } 1699 } 1700 #pragma omp single 1701 { 1702 #pragma omp parallel 1703 { 1704 #pragma omp single // OK 1705 { 1706 bar(); 1707 } 1708 #pragma omp for // OK 1709 for (int i = 0; i < 10; ++i) 1710 ; 1711 #pragma omp for simd // OK 1712 for (int i = 0; i < 10; ++i) 1713 ; 1714 #pragma omp sections // OK 1715 { 1716 bar(); 1717 } 1718 } 1719 } 1720 #pragma omp single 1721 { 1722 #pragma omp parallel for 1723 for (int i = 0; i < 10; ++i) 1724 ; 1725 } 1726 #pragma omp single 1727 { 1728 #pragma omp parallel for simd 1729 for (int i = 0; i < 10; ++i) 1730 ; 1731 } 1732 #pragma omp single 1733 { 1734 #pragma omp parallel sections 1735 { 1736 bar(); 1737 } 1738 } 1739 #pragma omp single 1740 { 1741 #pragma omp task 1742 { 1743 bar(); 1744 } 1745 } 1746 #pragma omp single 1747 { 1748 #pragma omp taskyield 1749 bar(); 1750 } 1751 #pragma omp single 1752 { 1753 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1754 bar(); 1755 } 1756 #pragma omp single 1757 { 1758 #pragma omp taskwait 1759 bar(); 1760 } 1761 #pragma omp single 1762 { 1763 #pragma omp flush 1764 bar(); 1765 } 1766 #pragma omp single 1767 { 1768 #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?}} 1769 bar(); 1770 } 1771 #pragma omp single 1772 { 1773 #pragma omp atomic 1774 ++a; 1775 } 1776 #pragma omp single 1777 { 1778 #pragma omp target 1779 ++a; 1780 } 1781 #pragma omp single 1782 { 1783 #pragma omp target parallel 1784 ++a; 1785 } 1786 #pragma omp single 1787 { 1788 #pragma omp target parallel for 1789 for (int i = 0; i < 10; ++i) 1790 ; 1791 } 1792 #pragma omp single 1793 { 1794 #pragma omp target enter data map(to: a) 1795 ++a; 1796 } 1797 #pragma omp single 1798 { 1799 #pragma omp target exit data map(from: a) 1800 ++a; 1801 } 1802 #pragma omp single 1803 { 1804 #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?}} 1805 ++a; 1806 } 1807 #pragma omp single 1808 { 1809 #pragma omp taskloop 1810 for (int i = 0; i < 10; ++i) 1811 ++a; 1812 } 1813 #pragma omp single 1814 { 1815 #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?}} 1816 for (int i = 0; i < 10; ++i) 1817 ; 1818 } 1819 #pragma omp single 1820 { 1821 #pragma omp target update to(a) 1822 bar(); 1823 } 1824 #pragma omp single 1825 { 1826 #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?}} 1827 for (int i = 0; i < 10; ++i) 1828 ; 1829 } 1830 #pragma omp single 1831 { 1832 #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?}} 1833 for (int i = 0; i < 10; ++i) 1834 ; 1835 } 1836 #pragma omp single 1837 { 1838 #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?}} 1839 for (int i = 0; i < 10; ++i) 1840 ; 1841 } 1842 #pragma omp single 1843 { 1844 #pragma omp target simd // OK 1845 for (int i = 0; i < 10; ++i) 1846 ; 1847 } 1848 #pragma omp single 1849 { 1850 #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?}} 1851 for (int i = 0; i < 10; ++i) 1852 ; 1853 } 1854 #pragma omp single 1855 { 1856 #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?}} 1857 for (int i = 0; i < 10; ++i) 1858 ; 1859 } 1860 #pragma omp single 1861 { 1862 #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?}} 1863 for (int i = 0; i < 10; ++i) 1864 ; 1865 } 1866 #pragma omp single 1867 { 1868 #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?}} 1869 for (int i = 0; i < 10; ++i) 1870 ; 1871 } 1872 #pragma omp single 1873 { 1874 #pragma omp target teams // OK 1875 ++a; 1876 } 1877 #pragma omp single 1878 { 1879 #pragma omp target teams distribute // OK 1880 for (int i = 0; i < 10; ++i) 1881 ; 1882 } 1883 #pragma omp single 1884 { 1885 #pragma omp target teams distribute parallel for // OK 1886 for (int i = 0; i < 10; ++i) 1887 ; 1888 } 1889 #pragma omp single 1890 { 1891 #pragma omp target teams distribute parallel for simd // OK 1892 for (int i = 0; i < 10; ++i) 1893 ; 1894 } 1895 #pragma omp single 1896 { 1897 #pragma omp target teams distribute simd // OK 1898 for (int i = 0; i < 10; ++i) 1899 ; 1900 } 1901 1902 // MASTER DIRECTIVE 1903 #pragma omp master 1904 { 1905 #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?}} 1906 for (int i = 0; i < 10; ++i) 1907 ; 1908 } 1909 #pragma omp master 1910 { 1911 #pragma omp simd 1912 for (int i = 0; i < 10; ++i) 1913 ; 1914 } 1915 #pragma omp master 1916 { 1917 #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?}} 1918 for (int i = 0; i < 10; ++i) 1919 ; 1920 } 1921 #pragma omp master 1922 { 1923 #pragma omp parallel 1924 for (int i = 0; i < 10; ++i) 1925 ; 1926 } 1927 #pragma omp master 1928 { 1929 #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?}} 1930 { 1931 bar(); 1932 } 1933 } 1934 #pragma omp master 1935 { 1936 #pragma omp master // OK, though second 'master' is redundant 1937 { 1938 bar(); 1939 } 1940 } 1941 #pragma omp master 1942 { 1943 #pragma omp critical 1944 { 1945 bar(); 1946 } 1947 } 1948 #pragma omp master 1949 { 1950 #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?}} 1951 { 1952 bar(); 1953 } 1954 } 1955 #pragma omp master 1956 { 1957 #pragma omp parallel 1958 { 1959 #pragma omp master // OK 1960 { 1961 bar(); 1962 } 1963 #pragma omp for // OK 1964 for (int i = 0; i < 10; ++i) 1965 ; 1966 #pragma omp for simd // OK 1967 for (int i = 0; i < 10; ++i) 1968 ; 1969 #pragma omp sections // OK 1970 { 1971 bar(); 1972 } 1973 } 1974 } 1975 #pragma omp master 1976 { 1977 #pragma omp parallel master // OK 1978 { 1979 bar(); 1980 } 1981 #pragma omp parallel 1982 { 1983 #pragma omp for // OK 1984 for (int i = 0; i < 10; ++i) 1985 ; 1986 #pragma omp for simd // OK 1987 for (int i = 0; i < 10; ++i) 1988 ; 1989 #pragma omp sections // OK 1990 { 1991 bar(); 1992 } 1993 } 1994 } 1995 #pragma omp master 1996 { 1997 #pragma omp parallel for 1998 for (int i = 0; i < 10; ++i) 1999 ; 2000 } 2001 #pragma omp master 2002 { 2003 #pragma omp parallel for simd 2004 for (int i = 0; i < 10; ++i) 2005 ; 2006 } 2007 #pragma omp master 2008 { 2009 #pragma omp parallel sections 2010 { 2011 bar(); 2012 } 2013 } 2014 #pragma omp master 2015 { 2016 #pragma omp task 2017 { 2018 bar(); 2019 } 2020 } 2021 #pragma omp master 2022 { 2023 #pragma omp taskyield 2024 bar(); 2025 } 2026 #pragma omp master 2027 { 2028 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 2029 bar(); 2030 } 2031 #pragma omp master 2032 { 2033 #pragma omp taskwait 2034 bar(); 2035 } 2036 #pragma omp master 2037 { 2038 #pragma omp flush 2039 bar(); 2040 } 2041 #pragma omp master 2042 { 2043 #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?}} 2044 bar(); 2045 } 2046 #pragma omp master 2047 { 2048 #pragma omp atomic 2049 ++a; 2050 } 2051 #pragma omp master 2052 { 2053 #pragma omp target 2054 ++a; 2055 } 2056 #pragma omp master 2057 { 2058 #pragma omp target parallel 2059 ++a; 2060 } 2061 #pragma omp master 2062 { 2063 #pragma omp target parallel for 2064 for (int i = 0; i < 10; ++i) 2065 ; 2066 } 2067 #pragma omp master 2068 { 2069 #pragma omp target enter data map(to: a) 2070 ++a; 2071 } 2072 #pragma omp master 2073 { 2074 #pragma omp target exit data map(from: a) 2075 ++a; 2076 } 2077 #pragma omp master 2078 { 2079 #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?}} 2080 ++a; 2081 } 2082 #pragma omp master 2083 { 2084 #pragma omp taskloop 2085 for (int i = 0; i < 10; ++i) 2086 ++a; 2087 } 2088 #pragma omp master 2089 { 2090 #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?}} 2091 for (int i = 0; i < 10; ++i) 2092 ; 2093 } 2094 #pragma omp master 2095 { 2096 #pragma omp target update to(a) 2097 bar(); 2098 } 2099 #pragma omp master 2100 { 2101 #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?}} 2102 for (int i = 0; i < 10; ++i) 2103 ; 2104 } 2105 #pragma omp master 2106 { 2107 #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?}} 2108 for (int i = 0; i < 10; ++i) 2109 ; 2110 } 2111 #pragma omp master 2112 { 2113 #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?}} 2114 for (int i = 0; i < 10; ++i) 2115 ; 2116 } 2117 #pragma omp master 2118 { 2119 #pragma omp target simd // OK 2120 for (int i = 0; i < 10; ++i) 2121 ; 2122 } 2123 #pragma omp master 2124 { 2125 #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?}} 2126 for (int i = 0; i < 10; ++i) 2127 ; 2128 } 2129 #pragma omp master 2130 { 2131 #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?}} 2132 for (int i = 0; i < 10; ++i) 2133 ; 2134 } 2135 #pragma omp master 2136 { 2137 #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?}} 2138 for (int i = 0; i < 10; ++i) 2139 ; 2140 } 2141 #pragma omp master 2142 { 2143 #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?}} 2144 for (int i = 0; i < 10; ++i) 2145 ; 2146 } 2147 #pragma omp master 2148 { 2149 #pragma omp target teams // OK 2150 a++; 2151 } 2152 #pragma omp master 2153 { 2154 #pragma omp target teams distribute // OK 2155 for (int i = 0; i < 10; ++i) 2156 ; 2157 } 2158 #pragma omp master 2159 { 2160 #pragma omp target teams distribute parallel for // OK 2161 for (int i = 0; i < 10; ++i) 2162 ; 2163 } 2164 #pragma omp master 2165 { 2166 #pragma omp target teams distribute parallel for simd // OK 2167 for (int i = 0; i < 10; ++i) 2168 ; 2169 } 2170 #pragma omp master 2171 { 2172 #pragma omp target teams distribute simd // OK 2173 for (int i = 0; i < 10; ++i) 2174 ; 2175 } 2176 2177 // CRITICAL DIRECTIVE 2178 #pragma omp critical 2179 { 2180 #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?}} 2181 for (int i = 0; i < 10; ++i) 2182 ; 2183 } 2184 #pragma omp critical 2185 { 2186 #pragma omp simd 2187 for (int i = 0; i < 10; ++i) 2188 ; 2189 } 2190 #pragma omp critical 2191 { 2192 #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?}} 2193 for (int i = 0; i < 10; ++i) 2194 ; 2195 } 2196 #pragma omp critical 2197 { 2198 #pragma omp parallel 2199 for (int i = 0; i < 10; ++i) 2200 ; 2201 } 2202 #pragma omp critical 2203 { 2204 #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?}} 2205 { 2206 bar(); 2207 } 2208 } 2209 #pragma omp critical 2210 { 2211 #pragma omp master // OK, though second 'master' is redundant 2212 { 2213 bar(); 2214 } 2215 } 2216 #pragma omp critical 2217 { 2218 #pragma omp critical 2219 { 2220 bar(); 2221 } 2222 } 2223 #pragma omp critical 2224 { 2225 #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?}} 2226 { 2227 bar(); 2228 } 2229 } 2230 #pragma omp critical 2231 { 2232 #pragma omp parallel 2233 { 2234 #pragma omp master // OK 2235 { 2236 bar(); 2237 } 2238 #pragma omp for // OK 2239 for (int i = 0; i < 10; ++i) 2240 ; 2241 #pragma omp for simd // OK 2242 for (int i = 0; i < 10; ++i) 2243 ; 2244 #pragma omp sections // OK 2245 { 2246 bar(); 2247 } 2248 } 2249 } 2250 #pragma omp critical 2251 { 2252 #pragma omp parallel master 2253 { 2254 bar(); 2255 } 2256 } 2257 #pragma omp critical 2258 { 2259 #pragma omp parallel for 2260 for (int i = 0; i < 10; ++i) 2261 ; 2262 } 2263 #pragma omp critical 2264 { 2265 #pragma omp parallel for simd 2266 for (int i = 0; i < 10; ++i) 2267 ; 2268 } 2269 #pragma omp critical 2270 { 2271 #pragma omp parallel sections 2272 { 2273 bar(); 2274 } 2275 } 2276 #pragma omp critical 2277 { 2278 #pragma omp task 2279 { 2280 bar(); 2281 } 2282 } 2283 #pragma omp critical 2284 { 2285 #pragma omp taskyield 2286 bar(); 2287 } 2288 #pragma omp critical 2289 { 2290 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2291 bar(); 2292 } 2293 #pragma omp critical 2294 { 2295 #pragma omp taskwait 2296 bar(); 2297 } 2298 #pragma omp critical(Tuzik) 2299 { 2300 #pragma omp critical(grelka) 2301 bar(); 2302 } 2303 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2304 { 2305 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2306 { 2307 #pragma omp critical(Tuzik) 2308 { 2309 #pragma omp parallel 2310 #pragma omp critical(grelka) 2311 { 2312 bar(); 2313 } 2314 } 2315 } 2316 } 2317 #pragma omp critical 2318 { 2319 #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?}} 2320 bar(); 2321 } 2322 #pragma omp critical 2323 { 2324 #pragma omp atomic 2325 ++a; 2326 } 2327 #pragma omp critical 2328 { 2329 #pragma omp target 2330 ++a; 2331 } 2332 #pragma omp critical 2333 { 2334 #pragma omp target parallel 2335 ++a; 2336 } 2337 #pragma omp critical 2338 { 2339 #pragma omp target parallel for 2340 for (int i = 0; i < 10; ++i) 2341 ; 2342 } 2343 #pragma omp critical 2344 { 2345 #pragma omp target enter data map(to: a) 2346 ++a; 2347 } 2348 #pragma omp critical 2349 { 2350 #pragma omp target exit data map(from: a) 2351 ++a; 2352 } 2353 #pragma omp critical 2354 { 2355 #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?}} 2356 ++a; 2357 } 2358 #pragma omp critical 2359 { 2360 #pragma omp taskloop 2361 for (int i = 0; i < 10; ++i) 2362 ++a; 2363 } 2364 #pragma omp critical 2365 { 2366 #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?}} 2367 for (int i = 0; i < 10; ++i) 2368 ; 2369 } 2370 #pragma omp critical 2371 { 2372 #pragma omp target update to(a) 2373 bar(); 2374 } 2375 #pragma omp critical 2376 { 2377 #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?}} 2378 for (int i = 0; i < 10; ++i) 2379 ; 2380 } 2381 #pragma omp critical 2382 { 2383 #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?}} 2384 for (int i = 0; i < 10; ++i) 2385 ; 2386 } 2387 #pragma omp critical 2388 { 2389 #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?}} 2390 for (int i = 0; i < 10; ++i) 2391 ; 2392 } 2393 #pragma omp critical 2394 { 2395 #pragma omp target simd // OK 2396 for (int i = 0; i < 10; ++i) 2397 ; 2398 } 2399 #pragma omp critical 2400 { 2401 #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?}} 2402 for (int i = 0; i < 10; ++i) 2403 ; 2404 } 2405 #pragma omp critical 2406 { 2407 #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?}} 2408 for (int i = 0; i < 10; ++i) 2409 ; 2410 } 2411 #pragma omp critical 2412 { 2413 #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?}} 2414 for (int i = 0; i < 10; ++i) 2415 ; 2416 } 2417 #pragma omp critical 2418 { 2419 #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?}} 2420 for (int i = 0; i < 10; ++i) 2421 ; 2422 } 2423 #pragma omp critical 2424 { 2425 #pragma omp target teams // OK 2426 a++; 2427 } 2428 #pragma omp critical 2429 { 2430 #pragma omp target teams distribute // OK 2431 for (int i = 0; i < 10; ++i) 2432 ; 2433 } 2434 #pragma omp critical 2435 { 2436 #pragma omp target teams distribute parallel for // OK 2437 for (int i = 0; i < 10; ++i) 2438 ; 2439 } 2440 #pragma omp critical 2441 { 2442 #pragma omp target teams distribute parallel for simd // OK 2443 for (int i = 0; i < 10; ++i) 2444 ; 2445 } 2446 #pragma omp critical 2447 { 2448 #pragma omp target teams distribute simd // OK 2449 for (int i = 0; i < 10; ++i) 2450 ; 2451 } 2452 2453 // PARALLEL FOR DIRECTIVE 2454 #pragma omp parallel for 2455 for (int i = 0; i < 10; ++i) { 2456 #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?}} 2457 for (int i = 0; i < 10; ++i) 2458 ; 2459 } 2460 #pragma omp parallel for 2461 for (int i = 0; i < 10; ++i) { 2462 #pragma omp simd 2463 for (int i = 0; i < 10; ++i) 2464 ; 2465 } 2466 #pragma omp parallel for 2467 for (int i = 0; i < 10; ++i) { 2468 #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?}} 2469 for (int i = 0; i < 10; ++i) 2470 ; 2471 } 2472 #pragma omp parallel for 2473 for (int i = 0; i < 10; ++i) { 2474 #pragma omp parallel 2475 for (int i = 0; i < 10; ++i) 2476 ; 2477 } 2478 #pragma omp parallel for 2479 for (int i = 0; i < 10; ++i) { 2480 #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?}} 2481 { 2482 bar(); 2483 } 2484 } 2485 #pragma omp parallel for 2486 for (int i = 0; i < 10; ++i) { 2487 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2488 { 2489 bar(); 2490 } 2491 } 2492 #pragma omp parallel for 2493 for (int i = 0; i < 10; ++i) { 2494 #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?}} 2495 { 2496 bar(); 2497 } 2498 } 2499 2500 #pragma omp parallel for 2501 for (int i = 0; i < 10; ++i) { 2502 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2503 { 2504 bar(); 2505 } 2506 } 2507 2508 #pragma omp parallel for 2509 for (int i = 0; i < 10; ++i) { 2510 #pragma omp critical 2511 { 2512 bar(); 2513 } 2514 } 2515 2516 #pragma omp parallel for 2517 for (int i = 0; i < 10; ++i) { 2518 #pragma omp parallel 2519 { 2520 #pragma omp single // OK 2521 { 2522 bar(); 2523 } 2524 #pragma omp for // OK 2525 for (int i = 0; i < 10; ++i) 2526 ; 2527 #pragma omp for simd // OK 2528 for (int i = 0; i < 10; ++i) 2529 ; 2530 #pragma omp sections // OK 2531 { 2532 bar(); 2533 } 2534 } 2535 } 2536 #pragma omp parallel for 2537 for (int i = 0; i < 10; ++i) { 2538 #pragma omp parallel for 2539 for (int i = 0; i < 10; ++i) 2540 ; 2541 } 2542 #pragma omp parallel for 2543 for (int i = 0; i < 10; ++i) { 2544 #pragma omp parallel for simd 2545 for (int i = 0; i < 10; ++i) 2546 ; 2547 } 2548 #pragma omp parallel for 2549 for (int i = 0; i < 10; ++i) { 2550 #pragma omp parallel sections 2551 { 2552 bar(); 2553 } 2554 } 2555 #pragma omp parallel for 2556 for (int i = 0; i < 10; ++i) { 2557 #pragma omp task 2558 { 2559 bar(); 2560 } 2561 } 2562 #pragma omp parallel for 2563 for (int i = 0; i < 10; ++i) { 2564 #pragma omp taskyield 2565 bar(); 2566 } 2567 #pragma omp parallel for 2568 for (int i = 0; i < 10; ++i) { 2569 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2570 bar(); 2571 } 2572 #pragma omp parallel for 2573 for (int i = 0; i < 10; ++i) { 2574 #pragma omp taskwait 2575 bar(); 2576 } 2577 #pragma omp parallel for 2578 for (int i = 0; i < 10; ++i) { 2579 #pragma omp flush 2580 bar(); 2581 } 2582 #pragma omp parallel for 2583 for (int i = 0; i < 10; ++i) { 2584 #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?}} 2585 bar(); 2586 } 2587 #pragma omp parallel for ordered 2588 for (int i = 0; i < 10; ++i) { 2589 #pragma omp ordered // OK 2590 bar(); 2591 } 2592 #pragma omp parallel for 2593 for (int i = 0; i < 10; ++i) { 2594 #pragma omp atomic 2595 ++a; 2596 } 2597 #pragma omp parallel for 2598 for (int i = 0; i < 10; ++i) { 2599 #pragma omp target 2600 ++a; 2601 } 2602 #pragma omp parallel for 2603 for (int i = 0; i < 10; ++i) { 2604 #pragma omp target parallel 2605 ++a; 2606 } 2607 #pragma omp parallel for 2608 for (int i = 0; i < 10; ++i) { 2609 #pragma omp target parallel for 2610 for (int i = 0; i < 10; ++i) 2611 ; 2612 } 2613 #pragma omp parallel for 2614 for (int i = 0; i < 10; ++i) { 2615 #pragma omp target enter data map(to: a) 2616 ++a; 2617 } 2618 #pragma omp parallel for 2619 for (int i = 0; i < 10; ++i) { 2620 #pragma omp target exit data map(from: a) 2621 ++a; 2622 } 2623 #pragma omp parallel for 2624 for (int i = 0; i < 10; ++i) { 2625 #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?}} 2626 ++a; 2627 } 2628 #pragma omp parallel for 2629 for (int i = 0; i < 10; ++i) { 2630 #pragma omp taskloop 2631 for (int i = 0; i < 10; ++i) 2632 ++a; 2633 } 2634 #pragma omp parallel for 2635 for (int i = 0; i < 10; ++i) { 2636 #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?}} 2637 for (int j = 0; j < 10; ++j) 2638 ; 2639 } 2640 #pragma omp parallel for 2641 for (int i = 0; i < 10; ++i) { 2642 #pragma omp target update to(a) 2643 } 2644 #pragma omp parallel for 2645 for (int i = 0; i < 10; ++i) { 2646 #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?}} 2647 for (int j = 0; j < 10; ++j) 2648 ; 2649 } 2650 #pragma omp parallel for 2651 for (int i = 0; i < 10; ++i) { 2652 #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?}} 2653 for (int j = 0; j < 10; ++j) 2654 ; 2655 } 2656 #pragma omp parallel for 2657 for (int i = 0; i < 10; ++i) { 2658 #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?}} 2659 for (int j = 0; j < 10; ++j) 2660 ; 2661 } 2662 #pragma omp parallel for 2663 for (int i = 0; i < 10; ++i) { 2664 #pragma omp target simd // OK 2665 for (int j = 0; j < 10; ++j) 2666 ; 2667 } 2668 #pragma omp parallel for 2669 for (int i = 0; i < 10; ++i) { 2670 #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?}} 2671 for (int j = 0; j < 10; ++j) 2672 ; 2673 } 2674 #pragma omp parallel for 2675 for (int i = 0; i < 10; ++i) { 2676 #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?}} 2677 for (int j = 0; j < 10; ++j) 2678 ; 2679 } 2680 #pragma omp parallel for 2681 for (int i = 0; i < 10; ++i) { 2682 #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?}} 2683 for (int j = 0; j < 10; ++j) 2684 ; 2685 } 2686 #pragma omp parallel for 2687 for (int i = 0; i < 10; ++i) { 2688 #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?}} 2689 for (int j = 0; j < 10; ++j) 2690 ; 2691 } 2692 #pragma omp parallel for 2693 for (int i = 0; i < 10; ++i) { 2694 #pragma omp target teams // OK 2695 a++; 2696 } 2697 #pragma omp parallel for 2698 for (int i = 0; i < 10; ++i) { 2699 #pragma omp target teams distribute // OK 2700 for (int j = 0; j < 10; ++j) 2701 ; 2702 } 2703 #pragma omp parallel for 2704 for (int i = 0; i < 10; ++i) { 2705 #pragma omp target teams distribute parallel for // OK 2706 for (int j = 0; j < 10; ++j) 2707 ; 2708 } 2709 #pragma omp parallel for 2710 for (int i = 0; i < 10; ++i) { 2711 #pragma omp target teams distribute parallel for simd // OK 2712 for (int j = 0; j < 10; ++j) 2713 ; 2714 } 2715 #pragma omp parallel for 2716 for (int i = 0; i < 10; ++i) { 2717 #pragma omp target teams distribute simd // OK 2718 for (int j = 0; j < 10; ++j) 2719 ; 2720 } 2721 2722 // PARALLEL FOR SIMD DIRECTIVE 2723 #pragma omp parallel for simd 2724 for (int i = 0; i < 10; ++i) { 2725 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2726 for (int i = 0; i < 10; ++i) 2727 ; 2728 } 2729 #pragma omp parallel for simd 2730 for (int i = 0; i < 10; ++i) { 2731 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2732 for (int i = 0; i < 10; ++i) 2733 ; 2734 } 2735 #pragma omp parallel for simd 2736 for (int i = 0; i < 10; ++i) { 2737 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2738 for (int i = 0; i < 10; ++i) 2739 ; 2740 } 2741 #pragma omp parallel for simd 2742 for (int i = 0; i < 10; ++i) { 2743 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2744 for (int i = 0; i < 10; ++i) 2745 ; 2746 } 2747 #pragma omp parallel for simd 2748 for (int i = 0; i < 10; ++i) { 2749 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2750 { 2751 bar(); 2752 } 2753 } 2754 #pragma omp parallel for simd 2755 for (int i = 0; i < 10; ++i) { 2756 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2757 { 2758 bar(); 2759 } 2760 } 2761 #pragma omp parallel for simd 2762 for (int i = 0; i < 10; ++i) { 2763 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2764 { 2765 bar(); 2766 } 2767 } 2768 2769 #pragma omp parallel for simd 2770 for (int i = 0; i < 10; ++i) { 2771 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2772 { 2773 bar(); 2774 } 2775 } 2776 2777 #pragma omp parallel for simd 2778 for (int i = 0; i < 10; ++i) { 2779 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2780 { 2781 bar(); 2782 } 2783 } 2784 2785 #pragma omp parallel for simd 2786 for (int i = 0; i < 10; ++i) { 2787 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2788 { 2789 #pragma omp single 2790 { 2791 bar(); 2792 } 2793 #pragma omp for 2794 for (int i = 0; i < 10; ++i) 2795 ; 2796 #pragma omp for simd 2797 for (int i = 0; i < 10; ++i) 2798 ; 2799 #pragma omp sections 2800 { 2801 bar(); 2802 } 2803 } 2804 } 2805 #pragma omp parallel for simd 2806 for (int i = 0; i < 10; ++i) { 2807 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2808 for (int i = 0; i < 10; ++i) 2809 ; 2810 } 2811 #pragma omp parallel for simd 2812 for (int i = 0; i < 10; ++i) { 2813 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2814 for (int i = 0; i < 10; ++i) 2815 ; 2816 } 2817 #pragma omp parallel for simd 2818 for (int i = 0; i < 10; ++i) { 2819 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2820 { 2821 bar(); 2822 } 2823 } 2824 #pragma omp parallel for simd 2825 for (int i = 0; i < 10; ++i) { 2826 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2827 { 2828 bar(); 2829 } 2830 } 2831 #pragma omp parallel for simd 2832 for (int i = 0; i < 10; ++i) { 2833 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2834 bar(); 2835 } 2836 #pragma omp parallel for simd 2837 for (int i = 0; i < 10; ++i) { 2838 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2839 bar(); 2840 } 2841 #pragma omp parallel for simd 2842 for (int i = 0; i < 10; ++i) { 2843 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2844 bar(); 2845 } 2846 #pragma omp parallel for simd 2847 for (int i = 0; i < 10; ++i) { 2848 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2849 bar(); 2850 } 2851 #pragma omp parallel for simd 2852 for (int i = 0; i < 10; ++i) { 2853 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2854 bar(); 2855 } 2856 #pragma omp parallel for simd 2857 for (int i = 0; i < 10; ++i) { 2858 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2859 bar(); 2860 } 2861 #pragma omp parallel for simd 2862 for (int i = 0; i < 10; ++i) { 2863 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 2864 ++a; 2865 } 2866 #pragma omp parallel for simd 2867 for (int i = 0; i < 10; ++i) { 2868 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2869 ++a; 2870 } 2871 #pragma omp parallel for simd 2872 for (int i = 0; i < 10; ++i) { 2873 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2874 ++a; 2875 } 2876 #pragma omp parallel for simd 2877 for (int i = 0; i < 10; ++i) { 2878 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2879 for (int i = 0; i < 10; ++i) 2880 ; 2881 } 2882 #pragma omp parallel for simd 2883 for (int i = 0; i < 10; ++i) { 2884 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2885 ++a; 2886 } 2887 #pragma omp parallel for simd 2888 for (int i = 0; i < 10; ++i) { 2889 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2890 ++a; 2891 } 2892 #pragma omp parallel for simd 2893 for (int i = 0; i < 10; ++i) { 2894 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2895 ++a; 2896 } 2897 #pragma omp parallel for simd 2898 for (int i = 0; i < 10; ++i) { 2899 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2900 for (int i = 0; i < 10; ++i) 2901 ++a; 2902 } 2903 #pragma omp parallel for simd 2904 for (int i = 0; i < 10; ++i) { 2905 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2906 for (int j = 0; j < 10; ++j) 2907 ; 2908 } 2909 #pragma omp parallel for simd 2910 for (int i = 0; i < 10; ++i) { 2911 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2912 bar(); 2913 } 2914 #pragma omp parallel for simd 2915 for (int i = 0; i < 10; ++i) { 2916 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2917 for (int j = 0; j < 10; ++j) 2918 ; 2919 } 2920 #pragma omp parallel for simd 2921 for (int i = 0; i < 10; ++i) { 2922 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2923 for (int j = 0; j < 10; ++j) 2924 ; 2925 } 2926 #pragma omp parallel for simd 2927 for (int i = 0; i < 10; ++i) { 2928 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2929 for (int j = 0; j < 10; ++j) 2930 ; 2931 } 2932 #pragma omp parallel for simd 2933 for (int i = 0; i < 10; ++i) { 2934 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2935 for (int j = 0; j < 10; ++j) 2936 ; 2937 } 2938 #pragma omp parallel for simd 2939 for (int i = 0; i < 10; ++i) { 2940 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2941 for (int j = 0; j < 10; ++j) 2942 ; 2943 } 2944 #pragma omp parallel for simd 2945 for (int i = 0; i < 10; ++i) { 2946 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2947 for (int j = 0; j < 10; ++j) 2948 ; 2949 } 2950 #pragma omp parallel for simd 2951 for (int i = 0; i < 10; ++i) { 2952 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2953 for (int j = 0; j < 10; ++j) 2954 ; 2955 } 2956 #pragma omp parallel for simd 2957 for (int i = 0; i < 10; ++i) { 2958 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2959 for (int j = 0; j < 10; ++j) 2960 ; 2961 } 2962 #pragma omp parallel for simd 2963 for (int i = 0; i < 10; ++i) { 2964 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2965 a++; 2966 } 2967 #pragma omp parallel for simd 2968 for (int i = 0; i < 10; ++i) { 2969 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2970 for (int j = 0; j < 10; ++j) 2971 ; 2972 } 2973 #pragma omp parallel for simd 2974 for (int i = 0; i < 10; ++i) { 2975 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2976 for (int j = 0; j < 10; ++j) 2977 ; 2978 } 2979 #pragma omp parallel for simd 2980 for (int i = 0; i < 10; ++i) { 2981 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2982 for (int j = 0; j < 10; ++j) 2983 ; 2984 } 2985 #pragma omp parallel for simd 2986 for (int i = 0; i < 10; ++i) { 2987 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2988 for (int j = 0; j < 10; ++j) 2989 ; 2990 } 2991 2992 // PARALLEL MASTER DIRECTIVE 2993 #pragma omp parallel master 2994 { 2995 #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?}} 2996 for (int i = 0; i < 10; ++i) 2997 ; 2998 } 2999 #pragma omp parallel master 3000 { 3001 #pragma omp simd 3002 for (int i = 0; i < 10; ++i) 3003 ; 3004 } 3005 #pragma omp parallel master 3006 { 3007 #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?}} 3008 for (int i = 0; i < 10; ++i) 3009 ; 3010 } 3011 #pragma omp parallel master 3012 { 3013 #pragma omp parallel 3014 for (int i = 0; i < 10; ++i) 3015 ; 3016 } 3017 #pragma omp parallel master 3018 { 3019 #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?}} 3020 { 3021 bar(); 3022 } 3023 } 3024 #pragma omp parallel master 3025 { 3026 #pragma omp master // OK, though second 'master' is redundant 3027 { 3028 bar(); 3029 } 3030 } 3031 #pragma omp parallel master 3032 { 3033 #pragma omp critical 3034 { 3035 bar(); 3036 } 3037 } 3038 #pragma omp parallel master 3039 { 3040 #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?}} 3041 { 3042 bar(); 3043 } 3044 } 3045 #pragma omp parallel master 3046 { 3047 #pragma omp parallel 3048 { 3049 #pragma omp parallel master // OK 3050 { 3051 bar(); 3052 } 3053 #pragma omp for // OK 3054 for (int i = 0; i < 10; ++i) 3055 ; 3056 #pragma omp for simd // OK 3057 for (int i = 0; i < 10; ++i) 3058 ; 3059 #pragma omp sections // OK 3060 { 3061 bar(); 3062 } 3063 } 3064 } 3065 #pragma omp parallel master 3066 { 3067 #pragma omp parallel master // OK 3068 { 3069 bar(); 3070 } 3071 #pragma omp parallel 3072 { 3073 #pragma omp for // OK 3074 for (int i = 0; i < 10; ++i) 3075 ; 3076 #pragma omp for simd // OK 3077 for (int i = 0; i < 10; ++i) 3078 ; 3079 #pragma omp sections // OK 3080 { 3081 bar(); 3082 } 3083 } 3084 } 3085 #pragma omp parallel master 3086 { 3087 #pragma omp parallel for 3088 for (int i = 0; i < 10; ++i) 3089 ; 3090 } 3091 #pragma omp parallel master 3092 { 3093 #pragma omp parallel for simd 3094 for (int i = 0; i < 10; ++i) 3095 ; 3096 } 3097 #pragma omp parallel master 3098 { 3099 #pragma omp parallel sections 3100 { 3101 bar(); 3102 } 3103 } 3104 #pragma omp parallel master 3105 { 3106 #pragma omp task 3107 { 3108 bar(); 3109 } 3110 } 3111 #pragma omp parallel master 3112 { 3113 #pragma omp taskyield 3114 bar(); 3115 } 3116 #pragma omp parallel master 3117 { 3118 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3119 bar(); 3120 } 3121 #pragma omp parallel master 3122 { 3123 #pragma omp taskwait 3124 bar(); 3125 } 3126 #pragma omp parallel master 3127 { 3128 #pragma omp flush 3129 bar(); 3130 } 3131 #pragma omp parallel master 3132 { 3133 #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?}} 3134 bar(); 3135 } 3136 #pragma omp parallel master 3137 { 3138 #pragma omp atomic 3139 ++a; 3140 } 3141 #pragma omp parallel master 3142 { 3143 #pragma omp target 3144 ++a; 3145 } 3146 #pragma omp parallel master 3147 { 3148 #pragma omp target parallel 3149 ++a; 3150 } 3151 #pragma omp parallel master 3152 { 3153 #pragma omp target parallel for 3154 for (int i = 0; i < 10; ++i) 3155 ; 3156 } 3157 #pragma omp parallel master 3158 { 3159 #pragma omp target enter data map(to: a) 3160 ++a; 3161 } 3162 #pragma omp parallel master 3163 { 3164 #pragma omp target exit data map(from: a) 3165 ++a; 3166 } 3167 #pragma omp parallel master 3168 { 3169 #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?}} 3170 ++a; 3171 } 3172 #pragma omp parallel master 3173 { 3174 #pragma omp taskloop 3175 for (int i = 0; i < 10; ++i) 3176 ++a; 3177 } 3178 #pragma omp parallel master 3179 { 3180 #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?}} 3181 for (int i = 0; i < 10; ++i) 3182 ; 3183 } 3184 #pragma omp parallel master 3185 { 3186 #pragma omp target update to(a) 3187 bar(); 3188 } 3189 #pragma omp parallel master 3190 { 3191 #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?}} 3192 for (int i = 0; i < 10; ++i) 3193 ; 3194 } 3195 #pragma omp parallel master 3196 { 3197 #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?}} 3198 for (int i = 0; i < 10; ++i) 3199 ; 3200 } 3201 #pragma omp parallel master 3202 { 3203 #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?}} 3204 for (int i = 0; i < 10; ++i) 3205 ; 3206 } 3207 #pragma omp parallel master 3208 { 3209 #pragma omp target simd // OK 3210 for (int i = 0; i < 10; ++i) 3211 ; 3212 } 3213 #pragma omp parallel master 3214 { 3215 #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?}} 3216 for (int i = 0; i < 10; ++i) 3217 ; 3218 } 3219 #pragma omp parallel master 3220 { 3221 #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?}} 3222 for (int i = 0; i < 10; ++i) 3223 ; 3224 } 3225 #pragma omp parallel master 3226 { 3227 #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?}} 3228 for (int i = 0; i < 10; ++i) 3229 ; 3230 } 3231 #pragma omp parallel master 3232 { 3233 #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?}} 3234 for (int i = 0; i < 10; ++i) 3235 ; 3236 } 3237 #pragma omp parallel master 3238 { 3239 #pragma omp target teams // OK 3240 a++; 3241 } 3242 #pragma omp parallel master 3243 { 3244 #pragma omp target teams distribute // OK 3245 for (int i = 0; i < 10; ++i) 3246 ; 3247 } 3248 #pragma omp parallel master 3249 { 3250 #pragma omp target teams distribute parallel for // OK 3251 for (int i = 0; i < 10; ++i) 3252 ; 3253 } 3254 #pragma omp parallel master 3255 { 3256 #pragma omp target teams distribute parallel for simd // OK 3257 for (int i = 0; i < 10; ++i) 3258 ; 3259 } 3260 #pragma omp parallel master 3261 { 3262 #pragma omp target teams distribute simd // OK 3263 for (int i = 0; i < 10; ++i) 3264 ; 3265 } 3266 3267 // PARALLEL SECTIONS DIRECTIVE 3268 #pragma omp parallel sections 3269 { 3270 #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?}} 3271 for (int i = 0; i < 10; ++i) 3272 ; 3273 } 3274 #pragma omp parallel sections 3275 { 3276 #pragma omp simd 3277 for (int i = 0; i < 10; ++i) 3278 ; 3279 } 3280 #pragma omp parallel sections 3281 { 3282 #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?}} 3283 for (int i = 0; i < 10; ++i) 3284 ; 3285 } 3286 #pragma omp parallel sections 3287 { 3288 #pragma omp parallel 3289 for (int i = 0; i < 10; ++i) 3290 ; 3291 } 3292 #pragma omp parallel sections 3293 { 3294 #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?}} 3295 { 3296 bar(); 3297 } 3298 } 3299 #pragma omp parallel sections 3300 { 3301 #pragma omp section 3302 { 3303 bar(); 3304 } 3305 } 3306 #pragma omp parallel sections 3307 { 3308 #pragma omp section 3309 { 3310 #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?}} 3311 bar(); 3312 } 3313 } 3314 #pragma omp parallel sections 3315 { 3316 #pragma omp section 3317 { 3318 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 3319 bar(); 3320 } 3321 } 3322 #pragma omp parallel sections 3323 { 3324 #pragma omp section 3325 { 3326 #pragma omp critical 3327 bar(); 3328 } 3329 } 3330 #pragma omp parallel sections 3331 { 3332 #pragma omp parallel 3333 { 3334 #pragma omp single // OK 3335 { 3336 bar(); 3337 } 3338 #pragma omp for // OK 3339 for (int i = 0; i < 10; ++i) 3340 ; 3341 #pragma omp for simd // OK 3342 for (int i = 0; i < 10; ++i) 3343 ; 3344 #pragma omp sections // OK 3345 { 3346 bar(); 3347 } 3348 } 3349 } 3350 #pragma omp parallel sections 3351 { 3352 #pragma omp parallel for 3353 for (int i = 0; i < 10; ++i) 3354 ; 3355 } 3356 #pragma omp parallel sections 3357 { 3358 #pragma omp parallel for simd 3359 for (int i = 0; i < 10; ++i) 3360 ; 3361 } 3362 #pragma omp parallel sections 3363 { 3364 #pragma omp parallel sections 3365 { 3366 bar(); 3367 } 3368 } 3369 #pragma omp parallel sections 3370 { 3371 #pragma omp task 3372 { 3373 bar(); 3374 } 3375 } 3376 #pragma omp parallel sections 3377 { 3378 #pragma omp taskyield 3379 } 3380 #pragma omp parallel sections 3381 { 3382 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3383 } 3384 #pragma omp parallel sections 3385 { 3386 #pragma omp taskwait 3387 } 3388 #pragma omp parallel sections 3389 { 3390 #pragma omp flush 3391 } 3392 #pragma omp parallel sections 3393 { 3394 #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?}} 3395 bar(); 3396 } 3397 #pragma omp parallel sections 3398 { 3399 #pragma omp atomic 3400 ++a; 3401 } 3402 #pragma omp parallel sections 3403 { 3404 #pragma omp target 3405 ++a; 3406 } 3407 #pragma omp parallel sections 3408 { 3409 #pragma omp target parallel 3410 ++a; 3411 } 3412 #pragma omp parallel sections 3413 { 3414 #pragma omp target parallel for 3415 for (int i = 0; i < 10; ++i) 3416 ; 3417 } 3418 #pragma omp parallel sections 3419 { 3420 #pragma omp target enter data map(to: a) 3421 } 3422 #pragma omp parallel sections 3423 { 3424 #pragma omp target exit data map(from: a) 3425 } 3426 #pragma omp parallel sections 3427 { 3428 #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?}} 3429 ++a; 3430 } 3431 #pragma omp parallel sections 3432 { 3433 #pragma omp taskloop 3434 for (int i = 0; i < 10; ++i) 3435 ++a; 3436 } 3437 #pragma omp parallel sections 3438 { 3439 #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?}} 3440 for (int i = 0; i < 10; ++i) 3441 ; 3442 } 3443 #pragma omp parallel sections 3444 { 3445 #pragma omp target update to(a) 3446 } 3447 #pragma omp parallel sections 3448 { 3449 #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?}} 3450 for (int i = 0; i < 10; ++i) 3451 ; 3452 } 3453 #pragma omp parallel sections 3454 { 3455 #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?}} 3456 for (int i = 0; i < 10; ++i) 3457 ; 3458 } 3459 #pragma omp parallel sections 3460 { 3461 #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?}} 3462 for (int i = 0; i < 10; ++i) 3463 ; 3464 } 3465 #pragma omp parallel sections 3466 { 3467 #pragma omp target simd // OK 3468 for (int i = 0; i < 10; ++i) 3469 ; 3470 } 3471 #pragma omp parallel sections 3472 { 3473 #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?}} 3474 for (int i = 0; i < 10; ++i) 3475 ; 3476 } 3477 #pragma omp parallel sections 3478 { 3479 #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?}} 3480 for (int i = 0; i < 10; ++i) 3481 ; 3482 } 3483 #pragma omp parallel sections 3484 { 3485 #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?}} 3486 for (int i = 0; i < 10; ++i) 3487 ; 3488 } 3489 #pragma omp parallel sections 3490 { 3491 #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?}} 3492 for (int i = 0; i < 10; ++i) 3493 ; 3494 } 3495 #pragma omp parallel sections 3496 { 3497 #pragma omp target teams // OK 3498 a++; 3499 } 3500 #pragma omp parallel sections 3501 { 3502 #pragma omp target teams distribute // OK 3503 for (int i = 0; i < 10; ++i) 3504 ; 3505 } 3506 #pragma omp parallel sections 3507 { 3508 #pragma omp target teams distribute parallel for // OK 3509 for (int i = 0; i < 10; ++i) 3510 ; 3511 } 3512 #pragma omp parallel sections 3513 { 3514 #pragma omp target teams distribute parallel for simd // OK 3515 for (int i = 0; i < 10; ++i) 3516 ; 3517 } 3518 #pragma omp parallel sections 3519 { 3520 #pragma omp target teams distribute simd // OK 3521 for (int i = 0; i < 10; ++i) 3522 ; 3523 } 3524 3525 // TASK DIRECTIVE 3526 #pragma omp task 3527 #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?}} 3528 for (int i = 0; i < 10; ++i) 3529 ; 3530 #pragma omp task 3531 #pragma omp simd 3532 for (int i = 0; i < 10; ++i) 3533 ; 3534 #pragma omp task 3535 #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?}} 3536 for (int i = 0; i < 10; ++i) 3537 ; 3538 #pragma omp task 3539 #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?}} 3540 { 3541 bar(); 3542 } 3543 #pragma omp task 3544 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3545 { 3546 bar(); 3547 } 3548 #pragma omp task 3549 #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?}} 3550 bar(); 3551 #pragma omp task 3552 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3553 bar(); 3554 #pragma omp task 3555 #pragma omp critical 3556 bar(); 3557 3558 #pragma omp task 3559 #pragma omp parallel for 3560 for (int i = 0; i < 10; ++i) 3561 ; 3562 #pragma omp task 3563 #pragma omp parallel for simd 3564 for (int i = 0; i < 10; ++i) 3565 ; 3566 #pragma omp task 3567 #pragma omp parallel sections 3568 { 3569 bar(); 3570 } 3571 #pragma omp task 3572 #pragma omp task 3573 { 3574 bar(); 3575 } 3576 #pragma omp task 3577 { 3578 #pragma omp taskyield 3579 bar(); 3580 } 3581 #pragma omp task 3582 { 3583 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3584 bar(); 3585 } 3586 #pragma omp task 3587 { 3588 #pragma omp taskwait 3589 bar(); 3590 } 3591 #pragma omp task 3592 { 3593 #pragma omp flush 3594 bar(); 3595 } 3596 #pragma omp task 3597 { 3598 #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?}} 3599 bar(); 3600 } 3601 #pragma omp task 3602 { 3603 #pragma omp atomic 3604 ++a; 3605 } 3606 #pragma omp task 3607 { 3608 #pragma omp target 3609 ++a; 3610 } 3611 #pragma omp task 3612 { 3613 #pragma omp target parallel 3614 ++a; 3615 } 3616 #pragma omp task 3617 #pragma omp target parallel for 3618 for (int i = 0; i < 10; ++i) 3619 ; 3620 #pragma omp task 3621 { 3622 #pragma omp target enter data map(to: a) 3623 ++a; 3624 } 3625 #pragma omp task 3626 { 3627 #pragma omp target exit data map(from: a) 3628 ++a; 3629 } 3630 #pragma omp task 3631 { 3632 #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?}} 3633 ++a; 3634 } 3635 #pragma omp task 3636 { 3637 #pragma omp taskloop 3638 for (int i = 0; i < 10; ++i) 3639 ++a; 3640 } 3641 #pragma omp task 3642 { 3643 #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?}} 3644 for (int i = 0; i < 10; ++i) 3645 ; 3646 } 3647 #pragma omp task 3648 { 3649 #pragma omp target update to(a) 3650 bar(); 3651 } 3652 #pragma omp task 3653 { 3654 #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?}} 3655 for (int i = 0; i < 10; ++i) 3656 ; 3657 } 3658 #pragma omp task 3659 { 3660 #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?}} 3661 for (int i = 0; i < 10; ++i) 3662 ; 3663 } 3664 #pragma omp task 3665 { 3666 #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?}} 3667 for (int i = 0; i < 10; ++i) 3668 ; 3669 } 3670 #pragma omp task 3671 { 3672 #pragma omp target simd // OK 3673 for (int i = 0; i < 10; ++i) 3674 ; 3675 } 3676 #pragma omp task 3677 { 3678 #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?}} 3679 for (int i = 0; i < 10; ++i) 3680 ; 3681 } 3682 #pragma omp task 3683 { 3684 #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?}} 3685 for (int i = 0; i < 10; ++i) 3686 ; 3687 } 3688 #pragma omp task 3689 { 3690 #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?}} 3691 for (int i = 0; i < 10; ++i) 3692 ; 3693 } 3694 #pragma omp task 3695 { 3696 #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?}} 3697 for (int i = 0; i < 10; ++i) 3698 ; 3699 } 3700 #pragma omp task 3701 { 3702 #pragma omp target teams // OK 3703 a++; 3704 } 3705 #pragma omp task 3706 { 3707 #pragma omp target teams distribute // OK 3708 for (int i = 0; i < 10; ++i) 3709 ; 3710 } 3711 #pragma omp task 3712 { 3713 #pragma omp target teams distribute parallel for // OK 3714 for (int i = 0; i < 10; ++i) 3715 ; 3716 } 3717 #pragma omp task 3718 { 3719 #pragma omp target teams distribute parallel for simd // OK 3720 for (int i = 0; i < 10; ++i) 3721 ; 3722 } 3723 #pragma omp task 3724 { 3725 #pragma omp target teams distribute simd // OK 3726 for (int i = 0; i < 10; ++i) 3727 ; 3728 } 3729 3730 // ORDERED DIRECTIVE 3731 #pragma omp ordered 3732 { 3733 #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?}} 3734 for (int i = 0; i < 10; ++i) 3735 ; 3736 } 3737 #pragma omp ordered 3738 { 3739 #pragma omp simd 3740 for (int i = 0; i < 10; ++i) 3741 ; 3742 } 3743 #pragma omp ordered 3744 { 3745 #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?}} 3746 for (int i = 0; i < 10; ++i) 3747 ; 3748 } 3749 #pragma omp ordered 3750 { 3751 #pragma omp parallel 3752 for (int i = 0; i < 10; ++i) 3753 ; 3754 } 3755 #pragma omp ordered 3756 { 3757 #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?}} 3758 { 3759 bar(); 3760 } 3761 } 3762 #pragma omp ordered 3763 { 3764 #pragma omp master // OK, though second 'ordered' is redundant 3765 { 3766 bar(); 3767 } 3768 } 3769 #pragma omp ordered 3770 { 3771 #pragma omp critical 3772 { 3773 bar(); 3774 } 3775 } 3776 #pragma omp ordered 3777 { 3778 #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?}} 3779 { 3780 bar(); 3781 } 3782 } 3783 #pragma omp ordered 3784 { 3785 #pragma omp parallel for ordered 3786 for (int j = 0; j < 10; ++j) { 3787 #pragma omp ordered // OK 3788 { 3789 bar(); 3790 } 3791 } 3792 } 3793 #pragma omp ordered 3794 { 3795 #pragma omp parallel for simd ordered 3796 for (int j = 0; j < 10; ++j) { 3797 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3798 { 3799 bar(); 3800 } 3801 } 3802 } 3803 #pragma omp ordered 3804 { 3805 #pragma omp parallel for simd ordered 3806 for (int j = 0; j < 10; ++j) { 3807 #pragma omp ordered simd 3808 { 3809 bar(); 3810 } 3811 } 3812 } 3813 #pragma omp ordered 3814 { 3815 #pragma omp parallel for 3816 for (int i = 0; i < 10; ++i) 3817 ; 3818 } 3819 #pragma omp ordered 3820 { 3821 #pragma omp parallel for simd 3822 for (int i = 0; i < 10; ++i) 3823 ; 3824 } 3825 #pragma omp ordered 3826 { 3827 #pragma omp parallel sections 3828 { 3829 bar(); 3830 } 3831 } 3832 #pragma omp ordered 3833 { 3834 #pragma omp task 3835 { 3836 bar(); 3837 } 3838 } 3839 #pragma omp ordered 3840 { 3841 #pragma omp taskyield 3842 bar(); 3843 } 3844 #pragma omp ordered 3845 { 3846 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3847 bar(); 3848 } 3849 #pragma omp ordered 3850 { 3851 #pragma omp taskwait 3852 bar(); 3853 } 3854 #pragma omp ordered 3855 { 3856 #pragma omp flush 3857 bar(); 3858 } 3859 #pragma omp ordered 3860 { 3861 #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?}} 3862 bar(); 3863 } 3864 #pragma omp ordered 3865 { 3866 #pragma omp atomic 3867 ++a; 3868 } 3869 #pragma omp ordered 3870 { 3871 #pragma omp target 3872 ++a; 3873 } 3874 #pragma omp ordered 3875 { 3876 #pragma omp target parallel 3877 ++a; 3878 } 3879 #pragma omp ordered 3880 { 3881 #pragma omp target parallel for ordered 3882 for (int j = 0; j < 10; ++j) { 3883 #pragma omp ordered // OK 3884 { 3885 bar(); 3886 } 3887 } 3888 } 3889 #pragma omp ordered 3890 { 3891 #pragma omp target parallel for 3892 for (int i = 0; i < 10; ++i) 3893 ; 3894 } 3895 #pragma omp ordered 3896 { 3897 #pragma omp target enter data map(to: a) 3898 ++a; 3899 } 3900 #pragma omp ordered 3901 { 3902 #pragma omp target exit data map(from: a) 3903 ++a; 3904 } 3905 #pragma omp ordered 3906 { 3907 #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?}} 3908 ++a; 3909 } 3910 #pragma omp ordered 3911 { 3912 #pragma omp taskloop 3913 for (int i = 0; i < 10; ++i) 3914 ++a; 3915 } 3916 #pragma omp ordered 3917 { 3918 #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?}} 3919 for (int i = 0; i < 10; ++i) 3920 ; 3921 } 3922 #pragma omp ordered 3923 { 3924 bar(); 3925 #pragma omp target update to(a) 3926 bar(); 3927 } 3928 #pragma omp ordered 3929 { 3930 #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?}} 3931 for (int i = 0; i < 10; ++i) 3932 ; 3933 } 3934 #pragma omp ordered 3935 { 3936 #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?}} 3937 for (int i = 0; i < 10; ++i) 3938 ; 3939 } 3940 #pragma omp ordered 3941 { 3942 #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?}} 3943 for (int i = 0; i < 10; ++i) 3944 ; 3945 } 3946 #pragma omp ordered 3947 { 3948 #pragma omp target simd // OK 3949 for (int i = 0; i < 10; ++i) 3950 ; 3951 } 3952 #pragma omp ordered 3953 { 3954 #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?}} 3955 for (int i = 0; i < 10; ++i) 3956 ; 3957 } 3958 #pragma omp ordered 3959 { 3960 #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?}} 3961 for (int i = 0; i < 10; ++i) 3962 ; 3963 } 3964 #pragma omp ordered 3965 { 3966 #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?}} 3967 for (int i = 0; i < 10; ++i) 3968 ; 3969 } 3970 #pragma omp ordered 3971 { 3972 #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?}} 3973 for (int i = 0; i < 10; ++i) 3974 ; 3975 } 3976 #pragma omp ordered 3977 { 3978 #pragma omp target teams // OK 3979 a++; 3980 } 3981 #pragma omp ordered 3982 { 3983 #pragma omp target teams distribute // OK 3984 for (int i = 0; i < 10; ++i) 3985 ; 3986 } 3987 #pragma omp ordered 3988 { 3989 #pragma omp target teams distribute parallel for // OK 3990 for (int i = 0; i < 10; ++i) 3991 ; 3992 } 3993 #pragma omp ordered 3994 { 3995 #pragma omp target teams distribute parallel for simd // OK 3996 for (int i = 0; i < 10; ++i) 3997 ; 3998 } 3999 #pragma omp ordered 4000 { 4001 #pragma omp target teams distribute simd // OK 4002 for (int i = 0; i < 10; ++i) 4003 ; 4004 } 4005 4006 // ATOMIC DIRECTIVE 4007 #pragma omp atomic 4008 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4009 // expected-note@+1 {{expected an expression statement}} 4010 { 4011 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4012 for (int i = 0; i < 10; ++i) 4013 ; 4014 } 4015 #pragma omp atomic 4016 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4017 // expected-note@+1 {{expected an expression statement}} 4018 { 4019 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4020 for (int i = 0; i < 10; ++i) 4021 ; 4022 } 4023 #pragma omp atomic 4024 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4025 // expected-note@+1 {{expected an expression statement}} 4026 { 4027 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4028 for (int i = 0; i < 10; ++i) 4029 ; 4030 } 4031 #pragma omp atomic 4032 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4033 // expected-note@+1 {{expected an expression statement}} 4034 { 4035 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4036 for (int i = 0; i < 10; ++i) 4037 ; 4038 } 4039 #pragma omp atomic 4040 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4041 // expected-note@+1 {{expected an expression statement}} 4042 { 4043 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4044 { 4045 bar(); 4046 } 4047 } 4048 #pragma omp atomic 4049 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4050 // expected-note@+1 {{expected an expression statement}} 4051 { 4052 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4053 { 4054 bar(); 4055 } 4056 } 4057 #pragma omp atomic 4058 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4059 // expected-note@+1 {{expected an expression statement}} 4060 { 4061 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4062 { 4063 bar(); 4064 } 4065 } 4066 #pragma omp atomic 4067 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4068 // expected-note@+1 {{expected an expression statement}} 4069 { 4070 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4071 { 4072 bar(); 4073 } 4074 } 4075 #pragma omp atomic 4076 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4077 // expected-note@+1 {{expected an expression statement}} 4078 { 4079 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4080 { 4081 bar(); 4082 } 4083 } 4084 #pragma omp atomic 4085 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4086 // expected-note@+1 {{expected an expression statement}} 4087 { 4088 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4089 { 4090 bar(); 4091 } 4092 } 4093 #pragma omp atomic 4094 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4095 // expected-note@+1 {{expected an expression statement}} 4096 { 4097 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4098 for (int i = 0; i < 10; ++i) 4099 ; 4100 } 4101 #pragma omp atomic 4102 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4103 // expected-note@+1 {{expected an expression statement}} 4104 { 4105 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4106 for (int i = 0; i < 10; ++i) 4107 ; 4108 } 4109 #pragma omp atomic 4110 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4111 // expected-note@+1 {{expected an expression statement}} 4112 { 4113 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4114 { 4115 bar(); 4116 } 4117 } 4118 #pragma omp atomic 4119 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4120 // expected-note@+1 {{expected an expression statement}} 4121 { 4122 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4123 { 4124 bar(); 4125 } 4126 } 4127 #pragma omp atomic 4128 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4129 // expected-note@+1 {{expected an expression statement}} 4130 { 4131 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4132 bar(); 4133 } 4134 #pragma omp atomic 4135 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4136 // expected-note@+1 {{expected an expression statement}} 4137 { 4138 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4139 bar(); 4140 } 4141 #pragma omp atomic 4142 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4143 // expected-note@+1 {{expected an expression statement}} 4144 { 4145 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4146 bar(); 4147 } 4148 #pragma omp atomic 4149 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4150 // expected-note@+1 {{expected an expression statement}} 4151 { 4152 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4153 bar(); 4154 } 4155 #pragma omp atomic 4156 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4157 // expected-note@+1 {{expected an expression statement}} 4158 { 4159 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4160 bar(); 4161 } 4162 #pragma omp atomic 4163 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4164 // expected-note@+1 {{expected an expression statement}} 4165 { 4166 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4167 ++a; 4168 } 4169 #pragma omp atomic 4170 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4171 // expected-note@+1 {{expected an expression statement}} 4172 { 4173 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4174 ++a; 4175 } 4176 #pragma omp atomic 4177 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4178 // expected-note@+1 {{expected an expression statement}} 4179 { 4180 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4181 ++a; 4182 } 4183 #pragma omp atomic 4184 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4185 // expected-note@+1 {{expected an expression statement}} 4186 { 4187 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4188 for (int i = 0; i < 10; ++i) 4189 ; 4190 } 4191 #pragma omp atomic 4192 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4193 // expected-note@+1 {{expected an expression statement}} 4194 { 4195 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4196 ++a; 4197 } 4198 #pragma omp atomic 4199 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4200 // expected-note@+1 {{expected an expression statement}} 4201 { 4202 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4203 ++a; 4204 } 4205 #pragma omp atomic 4206 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4207 // expected-note@+1 {{expected an expression statement}} 4208 { 4209 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4210 ++a; 4211 } 4212 #pragma omp atomic 4213 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4214 // expected-note@+1 {{expected an expression statement}} 4215 { 4216 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4217 for (int i = 0; i < 10; ++i) 4218 ++a; 4219 } 4220 #pragma omp atomic 4221 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4222 // expected-note@+1 {{expected an expression statement}} 4223 { 4224 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4225 for (int i = 0; i < 10; ++i) 4226 ; 4227 } 4228 #pragma omp atomic 4229 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4230 // expected-note@+1 {{expected an expression statement}} 4231 { 4232 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4233 bar(); 4234 } 4235 #pragma omp atomic 4236 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4237 // expected-note@+1 {{expected an expression statement}} 4238 { 4239 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4240 for (int i = 0; i < 10; ++i) 4241 ; 4242 } 4243 #pragma omp atomic 4244 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4245 // expected-note@+1 {{expected an expression statement}} 4246 { 4247 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4248 for (int i = 0; i < 10; ++i) 4249 ; 4250 } 4251 #pragma omp atomic 4252 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4253 // expected-note@+1 {{expected an expression statement}} 4254 { 4255 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4256 for (int i = 0; i < 10; ++i) 4257 ; 4258 } 4259 #pragma omp atomic 4260 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4261 // expected-note@+1 {{expected an expression statement}} 4262 { 4263 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4264 for (int i = 0; i < 10; ++i) 4265 ; 4266 } 4267 #pragma omp atomic 4268 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4269 // expected-note@+1 {{expected an expression statement}} 4270 { 4271 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4272 for (int i = 0; i < 10; ++i) 4273 ; 4274 } 4275 #pragma omp atomic 4276 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4277 // expected-note@+1 {{expected an expression statement}} 4278 { 4279 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4280 for (int i = 0; i < 10; ++i) 4281 ; 4282 } 4283 #pragma omp atomic 4284 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4285 // expected-note@+1 {{expected an expression statement}} 4286 { 4287 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4288 for (int i = 0; i < 10; ++i) 4289 ; 4290 } 4291 #pragma omp atomic 4292 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4293 // expected-note@+1 {{expected an expression statement}} 4294 { 4295 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4296 for (int i = 0; i < 10; ++i) 4297 ; 4298 } 4299 #pragma omp atomic 4300 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4301 // expected-note@+1 {{expected an expression statement}} 4302 { 4303 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4304 a++; 4305 } 4306 #pragma omp atomic 4307 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4308 // expected-note@+1 {{expected an expression statement}} 4309 { 4310 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4311 for (int i = 0; i < 10; ++i) 4312 ; 4313 } 4314 #pragma omp atomic 4315 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4316 // expected-note@+1 {{expected an expression statement}} 4317 { 4318 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4319 for (int i = 0; i < 10; ++i) 4320 ; 4321 } 4322 #pragma omp atomic 4323 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4324 // expected-note@+1 {{expected an expression statement}} 4325 { 4326 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4327 for (int i = 0; i < 10; ++i) 4328 ; 4329 } 4330 #pragma omp atomic 4331 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4332 // expected-note@+1 {{expected an expression statement}} 4333 { 4334 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4335 for (int i = 0; i < 10; ++i) 4336 ; 4337 } 4338 4339 // TARGET DIRECTIVE 4340 #pragma omp target 4341 #pragma omp parallel 4342 bar(); 4343 #pragma omp target 4344 #pragma omp for 4345 for (int i = 0; i < 10; ++i) 4346 ; 4347 #pragma omp target 4348 #pragma omp simd 4349 for (int i = 0; i < 10; ++i) 4350 ; 4351 #pragma omp target 4352 #pragma omp for simd 4353 for (int i = 0; i < 10; ++i) 4354 ; 4355 #pragma omp target 4356 #pragma omp sections 4357 { 4358 bar(); 4359 } 4360 #pragma omp target 4361 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 4362 { 4363 bar(); 4364 } 4365 #pragma omp target 4366 #pragma omp single 4367 bar(); 4368 4369 #pragma omp target 4370 #pragma omp master 4371 { 4372 bar(); 4373 } 4374 #pragma omp target 4375 #pragma omp critical 4376 { 4377 bar(); 4378 } 4379 #pragma omp target 4380 #pragma omp parallel for 4381 for (int i = 0; i < 10; ++i) 4382 ; 4383 #pragma omp target 4384 #pragma omp parallel for simd 4385 for (int i = 0; i < 10; ++i) 4386 ; 4387 #pragma omp target 4388 #pragma omp parallel sections 4389 { 4390 bar(); 4391 } 4392 #pragma omp target 4393 #pragma omp task 4394 { 4395 bar(); 4396 } 4397 #pragma omp target 4398 { 4399 #pragma omp taskyield 4400 bar(); 4401 } 4402 #pragma omp target 4403 { 4404 #pragma omp barrier 4405 bar(); 4406 } 4407 #pragma omp target 4408 { 4409 #pragma omp taskwait 4410 bar(); 4411 } 4412 #pragma omp target 4413 { 4414 #pragma omp flush 4415 bar(); 4416 } 4417 #pragma omp target 4418 { 4419 #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?}} 4420 bar(); 4421 } 4422 #pragma omp target 4423 { 4424 #pragma omp atomic 4425 ++a; 4426 } 4427 #pragma omp target 4428 { 4429 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4430 ++a; 4431 } 4432 #pragma omp target 4433 { 4434 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4435 ++a; 4436 } 4437 #pragma omp target 4438 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4439 for (int i = 0; i < 10; ++i) 4440 ; 4441 #pragma omp target 4442 { 4443 #pragma omp teams 4444 ++a; 4445 } 4446 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4447 { 4448 #pragma omp teams // expected-note {{directive outside teams construct here}} 4449 ++a; 4450 #pragma omp teams // expected-note {{nested teams construct here}} 4451 ++a; 4452 } 4453 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4454 { 4455 ++a; // expected-note {{statement outside teams construct here}} 4456 #pragma omp teams // expected-note {{nested teams construct here}} 4457 ++a; 4458 } 4459 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4460 { 4461 while (0) // expected-note {{statement outside teams construct here}} 4462 #pragma omp teams // expected-note {{nested teams construct here}} 4463 ++a; 4464 } 4465 #pragma omp target 4466 { 4467 #pragma omp taskloop 4468 for (int i = 0; i < 10; ++i) 4469 ++a; 4470 } 4471 #pragma omp target 4472 { 4473 #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?}} 4474 for (int i = 0; i < 10; ++i) 4475 ; 4476 } 4477 #pragma omp target 4478 { 4479 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4480 } 4481 #pragma omp target 4482 { 4483 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4484 } 4485 #pragma omp target 4486 { 4487 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4488 } 4489 #pragma omp target 4490 { 4491 #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?}} 4492 for (int i = 0; i < 10; ++i) 4493 ; 4494 } 4495 #pragma omp target 4496 { 4497 #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?}} 4498 for (int i = 0; i < 10; ++i) 4499 ; 4500 } 4501 #pragma omp target 4502 { 4503 #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?}} 4504 for (int i = 0; i < 10; ++i) 4505 ; 4506 } 4507 #pragma omp target 4508 { 4509 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4510 for (int i = 0; i < 10; ++i) 4511 ; 4512 } 4513 #pragma omp target 4514 { 4515 #pragma omp teams distribute // OK 4516 for (int i = 0; i < 10; ++i) 4517 ; 4518 } 4519 #pragma omp target 4520 { 4521 #pragma omp teams distribute simd // OK 4522 for (int i = 0; i < 10; ++i) 4523 ; 4524 } 4525 #pragma omp target 4526 { 4527 #pragma omp teams distribute parallel for simd // OK 4528 for (int i = 0; i < 10; ++i) 4529 ; 4530 } 4531 #pragma omp target 4532 { 4533 #pragma omp teams distribute parallel for // OK 4534 for (int i = 0; i < 10; ++i) 4535 ; 4536 } 4537 #pragma omp target 4538 { 4539 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4540 for (int i = 0; i < 10; ++i) 4541 ; 4542 } 4543 #pragma omp target 4544 { 4545 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4546 for (int i = 0; i < 10; ++i) 4547 ; 4548 } 4549 #pragma omp target 4550 { 4551 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4552 for (int i = 0; i < 10; ++i) 4553 ; 4554 } 4555 #pragma omp target 4556 { 4557 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4558 for (int i = 0; i < 10; ++i) 4559 ; 4560 } 4561 #pragma omp target 4562 { 4563 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4564 for (int i = 0; i < 10; ++i) 4565 ; 4566 } 4567 4568 // TARGET PARALLEL DIRECTIVE 4569 #pragma omp target parallel 4570 #pragma omp parallel 4571 bar(); 4572 #pragma omp target parallel 4573 #pragma omp for 4574 for (int i = 0; i < 10; ++i) 4575 ; 4576 #pragma omp target parallel 4577 #pragma omp simd 4578 for (int i = 0; i < 10; ++i) 4579 ; 4580 #pragma omp target parallel 4581 #pragma omp for simd 4582 for (int i = 0; i < 10; ++i) 4583 ; 4584 #pragma omp target parallel 4585 #pragma omp sections 4586 { 4587 bar(); 4588 } 4589 #pragma omp target parallel 4590 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 4591 { 4592 bar(); 4593 } 4594 #pragma omp target parallel 4595 #pragma omp single 4596 bar(); 4597 4598 #pragma omp target parallel 4599 #pragma omp master 4600 { 4601 bar(); 4602 } 4603 #pragma omp target 4604 #pragma omp parallel master 4605 { 4606 bar(); 4607 } 4608 #pragma omp target parallel 4609 #pragma omp critical 4610 { 4611 bar(); 4612 } 4613 #pragma omp target parallel 4614 #pragma omp parallel for 4615 for (int i = 0; i < 10; ++i) 4616 ; 4617 #pragma omp target parallel 4618 #pragma omp parallel for simd 4619 for (int i = 0; i < 10; ++i) 4620 ; 4621 #pragma omp target parallel 4622 #pragma omp parallel sections 4623 { 4624 bar(); 4625 } 4626 #pragma omp target parallel 4627 #pragma omp task 4628 { 4629 bar(); 4630 } 4631 #pragma omp target parallel 4632 { 4633 #pragma omp taskyield 4634 bar(); 4635 } 4636 #pragma omp target parallel 4637 { 4638 #pragma omp barrier 4639 bar(); 4640 } 4641 #pragma omp target parallel 4642 { 4643 #pragma omp taskwait 4644 bar(); 4645 } 4646 #pragma omp target parallel 4647 { 4648 #pragma omp flush 4649 bar(); 4650 } 4651 #pragma omp target parallel 4652 { 4653 #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?}} 4654 bar(); 4655 } 4656 #pragma omp target parallel 4657 { 4658 #pragma omp atomic 4659 ++a; 4660 } 4661 #pragma omp target parallel 4662 { 4663 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 4664 ++a; 4665 } 4666 #pragma omp target parallel 4667 { 4668 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 4669 ++a; 4670 } 4671 #pragma omp target parallel 4672 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4673 for (int i = 0; i < 10; ++i) 4674 ; 4675 #pragma omp target parallel 4676 { 4677 #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?}} 4678 ++a; 4679 } 4680 #pragma omp target parallel 4681 { 4682 ++a; 4683 #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?}} 4684 ++a; 4685 } 4686 #pragma omp target parallel 4687 { 4688 #pragma omp taskloop 4689 for (int i = 0; i < 10; ++i) 4690 ++a; 4691 } 4692 #pragma omp target parallel 4693 { 4694 #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?}} 4695 for (int i = 0; i < 10; ++i) 4696 ; 4697 } 4698 #pragma omp target parallel 4699 { 4700 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4701 } 4702 #pragma omp target parallel 4703 { 4704 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4705 } 4706 #pragma omp target parallel 4707 { 4708 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4709 } 4710 #pragma omp target parallel 4711 { 4712 #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?}} 4713 for (int i = 0; i < 10; ++i) 4714 ; 4715 } 4716 #pragma omp target parallel 4717 { 4718 #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?}} 4719 for (int i = 0; i < 10; ++i) 4720 ; 4721 } 4722 #pragma omp target parallel 4723 { 4724 #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?}} 4725 for (int i = 0; i < 10; ++i) 4726 ; 4727 } 4728 #pragma omp target parallel 4729 { 4730 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4731 for (int i = 0; i < 10; ++i) 4732 ; 4733 } 4734 #pragma omp target parallel 4735 { 4736 #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?}} 4737 for (int i = 0; i < 10; ++i) 4738 ; 4739 } 4740 #pragma omp target parallel 4741 { 4742 #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?}} 4743 for (int i = 0; i < 10; ++i) 4744 ; 4745 } 4746 #pragma omp target parallel 4747 { 4748 #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?}} 4749 for (int i = 0; i < 10; ++i) 4750 ; 4751 } 4752 #pragma omp target parallel 4753 { 4754 #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?}} 4755 for (int i = 0; i < 10; ++i) 4756 ; 4757 } 4758 #pragma omp target parallel 4759 { 4760 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 4761 a++; 4762 } 4763 #pragma omp target parallel 4764 { 4765 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 4766 for (int i = 0; i < 10; ++i) 4767 ; 4768 } 4769 #pragma omp target parallel 4770 { 4771 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4772 for (int i = 0; i < 10; ++i) 4773 ; 4774 } 4775 #pragma omp target parallel 4776 { 4777 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4778 for (int i = 0; i < 10; ++i) 4779 ; 4780 } 4781 #pragma omp target parallel 4782 { 4783 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4784 for (int i = 0; i < 10; ++i) 4785 ; 4786 } 4787 4788 // TARGET PARALLEL FOR DIRECTIVE 4789 #pragma omp target parallel for 4790 for (int i = 0; i < 10; ++i) { 4791 #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?}} 4792 for (int i = 0; i < 10; ++i) 4793 ; 4794 } 4795 #pragma omp target parallel for 4796 for (int i = 0; i < 10; ++i) { 4797 #pragma omp simd 4798 for (int i = 0; i < 10; ++i) 4799 ; 4800 } 4801 #pragma omp target parallel for 4802 for (int i = 0; i < 10; ++i) { 4803 #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?}} 4804 for (int i = 0; i < 10; ++i) 4805 ; 4806 } 4807 #pragma omp target parallel for 4808 for (int i = 0; i < 10; ++i) { 4809 #pragma omp parallel 4810 for (int i = 0; i < 10; ++i) 4811 ; 4812 } 4813 #pragma omp target parallel for 4814 for (int i = 0; i < 10; ++i) { 4815 #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?}} 4816 { 4817 bar(); 4818 } 4819 } 4820 #pragma omp target parallel for 4821 for (int i = 0; i < 10; ++i) { 4822 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4823 { 4824 bar(); 4825 } 4826 } 4827 #pragma omp target parallel for 4828 for (int i = 0; i < 10; ++i) { 4829 #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?}} 4830 { 4831 bar(); 4832 } 4833 } 4834 4835 #pragma omp target parallel for 4836 for (int i = 0; i < 10; ++i) { 4837 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4838 { 4839 bar(); 4840 } 4841 } 4842 4843 #pragma omp target parallel for 4844 for (int i = 0; i < 10; ++i) { 4845 #pragma omp critical 4846 { 4847 bar(); 4848 } 4849 } 4850 4851 #pragma omp target parallel for 4852 for (int i = 0; i < 10; ++i) { 4853 #pragma omp parallel 4854 { 4855 #pragma omp single // OK 4856 { 4857 bar(); 4858 } 4859 #pragma omp for // OK 4860 for (int i = 0; i < 10; ++i) 4861 ; 4862 #pragma omp for simd // OK 4863 for (int i = 0; i < 10; ++i) 4864 ; 4865 #pragma omp sections // OK 4866 { 4867 bar(); 4868 } 4869 } 4870 } 4871 #pragma omp target parallel for 4872 for (int i = 0; i < 10; ++i) { 4873 #pragma omp parallel for 4874 for (int i = 0; i < 10; ++i) 4875 ; 4876 } 4877 #pragma omp target parallel for 4878 for (int i = 0; i < 10; ++i) { 4879 #pragma omp parallel for simd 4880 for (int i = 0; i < 10; ++i) 4881 ; 4882 } 4883 #pragma omp target parallel for 4884 for (int i = 0; i < 10; ++i) { 4885 #pragma omp parallel sections 4886 { 4887 bar(); 4888 } 4889 } 4890 #pragma omp target parallel for 4891 for (int i = 0; i < 10; ++i) { 4892 #pragma omp task 4893 { 4894 bar(); 4895 } 4896 } 4897 #pragma omp target parallel for 4898 for (int i = 0; i < 10; ++i) { 4899 #pragma omp taskyield 4900 bar(); 4901 } 4902 #pragma omp target parallel for 4903 for (int i = 0; i < 10; ++i) { 4904 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4905 bar(); 4906 } 4907 #pragma omp target parallel for 4908 for (int i = 0; i < 10; ++i) { 4909 #pragma omp taskwait 4910 bar(); 4911 } 4912 #pragma omp target parallel for 4913 for (int i = 0; i < 10; ++i) { 4914 #pragma omp flush 4915 bar(); 4916 } 4917 #pragma omp target parallel for 4918 for (int i = 0; i < 10; ++i) { 4919 #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?}} 4920 bar(); 4921 } 4922 #pragma omp target parallel for ordered 4923 for (int i = 0; i < 10; ++i) { 4924 #pragma omp ordered // OK 4925 bar(); 4926 } 4927 #pragma omp target parallel for 4928 for (int i = 0; i < 10; ++i) { 4929 #pragma omp atomic 4930 ++a; 4931 } 4932 #pragma omp target parallel for 4933 for (int i = 0; i < 10; ++i) { 4934 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 4935 ++a; 4936 } 4937 #pragma omp target parallel for 4938 for (int i = 0; i < 10; ++i) { 4939 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 4940 ++a; 4941 } 4942 #pragma omp target parallel for 4943 for (int i = 0; i < 10; ++i) { 4944 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4945 for (int i = 0; i < 10; ++i) 4946 ; 4947 } 4948 #pragma omp target parallel for 4949 for (int i = 0; i < 10; ++i) { 4950 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4951 ++a; 4952 } 4953 #pragma omp target parallel for 4954 for (int i = 0; i < 10; ++i) { 4955 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4956 ++a; 4957 } 4958 #pragma omp target parallel for 4959 for (int i = 0; i < 10; ++i) { 4960 #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?}} 4961 ++a; 4962 } 4963 #pragma omp target parallel for 4964 for (int i = 0; i < 10; ++i) { 4965 #pragma omp taskloop 4966 for (int i = 0; i < 10; ++i) 4967 ++a; 4968 } 4969 #pragma omp target parallel for 4970 for (int i = 0; i < 10; ++i) { 4971 #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?}} 4972 for (int j = 0; j < 10; ++j) 4973 ; 4974 } 4975 #pragma omp target parallel for 4976 for (int i = 0; i < 10; ++i) { 4977 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4978 } 4979 #pragma omp target parallel for 4980 for (int i = 0; i < 10; ++i) { 4981 #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?}} 4982 for (int j = 0; j < 10; ++j) 4983 ; 4984 } 4985 #pragma omp target parallel for 4986 for (int i = 0; i < 10; ++i) { 4987 #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?}} 4988 for (int j = 0; j < 10; ++j) 4989 ; 4990 } 4991 #pragma omp target parallel for 4992 for (int i = 0; i < 10; ++i) { 4993 #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?}} 4994 for (int j = 0; j < 10; ++j) 4995 ; 4996 } 4997 #pragma omp target parallel for 4998 for (int i = 0; i < 10; ++i) { 4999 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5000 for (int j = 0; j < 10; ++j) 5001 ; 5002 } 5003 #pragma omp target parallel for 5004 for (int i = 0; i < 10; ++i) { 5005 #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?}} 5006 for (int j = 0; j < 10; ++j) 5007 ; 5008 } 5009 #pragma omp target parallel for 5010 for (int i = 0; i < 10; ++i) { 5011 #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?}} 5012 for (int j = 0; j < 10; ++j) 5013 ; 5014 } 5015 #pragma omp target parallel for 5016 for (int i = 0; i < 10; ++i) { 5017 #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?}} 5018 for (int j = 0; j < 10; ++j) 5019 ; 5020 } 5021 #pragma omp target parallel for 5022 for (int i = 0; i < 10; ++i) { 5023 #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?}} 5024 for (int j = 0; j < 10; ++j) 5025 ; 5026 } 5027 #pragma omp target parallel for 5028 for (int i = 0; i < 10; ++i) { 5029 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 5030 a++; 5031 } 5032 #pragma omp target parallel for 5033 for (int i = 0; i < 10; ++i) { 5034 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 5035 for (int j = 0; j < 10; ++j) 5036 ; 5037 } 5038 #pragma omp target parallel for 5039 for (int i = 0; i < 10; ++i) { 5040 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5041 for (int j = 0; j < 10; ++j) 5042 ; 5043 } 5044 #pragma omp target parallel for 5045 for (int i = 0; i < 10; ++i) { 5046 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5047 for (int j = 0; j < 10; ++j) 5048 ; 5049 } 5050 #pragma omp target parallel for 5051 for (int i = 0; i < 10; ++i) { 5052 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5053 for (int j = 0; j < 10; ++j) 5054 ; 5055 } 5056 5057 // TEAMS DIRECTIVE 5058 #pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5059 bar(); 5060 #pragma omp target 5061 #pragma omp teams 5062 #pragma omp parallel 5063 bar(); 5064 #pragma omp target 5065 #pragma omp teams 5066 #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?}} 5067 for (int i = 0; i < 10; ++i) 5068 ; 5069 #pragma omp target 5070 #pragma omp teams 5071 #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?}} 5072 for (int i = 0; i < 10; ++i) 5073 ; 5074 #pragma omp target 5075 #pragma omp teams 5076 #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?}} 5077 for (int i = 0; i < 10; ++i) 5078 ; 5079 #pragma omp target 5080 #pragma omp teams 5081 #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?}} 5082 { 5083 bar(); 5084 } 5085 #pragma omp target 5086 #pragma omp teams 5087 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 5088 { 5089 bar(); 5090 } 5091 #pragma omp target 5092 #pragma omp teams 5093 #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?}} 5094 bar(); 5095 5096 #pragma omp target 5097 #pragma omp teams 5098 #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?}} 5099 { 5100 bar(); 5101 } 5102 #pragma omp target 5103 #pragma omp teams 5104 #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?}} 5105 { 5106 bar(); 5107 } 5108 #pragma omp target 5109 #pragma omp teams 5110 #pragma omp parallel for 5111 for (int i = 0; i < 10; ++i) 5112 ; 5113 #pragma omp target 5114 #pragma omp teams 5115 #pragma omp parallel for simd 5116 for (int i = 0; i < 10; ++i) 5117 ; 5118 #pragma omp target 5119 #pragma omp teams 5120 #pragma omp parallel sections 5121 { 5122 bar(); 5123 } 5124 #pragma omp target 5125 #pragma omp teams 5126 #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?}} 5127 { 5128 bar(); 5129 } 5130 #pragma omp target 5131 #pragma omp teams 5132 { 5133 #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?}} 5134 bar(); 5135 } 5136 #pragma omp target 5137 #pragma omp teams 5138 { 5139 #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?}} 5140 bar(); 5141 } 5142 #pragma omp target 5143 #pragma omp teams 5144 { 5145 #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?}} 5146 bar(); 5147 } 5148 #pragma omp target 5149 #pragma omp teams 5150 { 5151 #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?}} 5152 bar(); 5153 } 5154 #pragma omp target 5155 #pragma omp teams 5156 { 5157 #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?}} 5158 bar(); 5159 } 5160 #pragma omp target 5161 #pragma omp teams 5162 { 5163 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 5164 ++a; 5165 } 5166 #pragma omp target 5167 #pragma omp teams 5168 { 5169 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5170 ++a; 5171 } 5172 #pragma omp target 5173 #pragma omp teams 5174 { 5175 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5176 ++a; 5177 } 5178 #pragma omp target 5179 #pragma omp teams 5180 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5181 for (int i = 0; i < 10; ++i) 5182 ; 5183 #pragma omp target 5184 #pragma omp teams 5185 { 5186 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5187 ++a; 5188 } 5189 #pragma omp target 5190 #pragma omp teams 5191 { 5192 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5193 ++a; 5194 } 5195 #pragma omp target 5196 #pragma omp teams 5197 { 5198 #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?}} 5199 ++a; 5200 } 5201 #pragma omp target 5202 #pragma omp teams 5203 { 5204 #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?}} 5205 for (int i = 0; i < 10; ++i) 5206 ++a; 5207 } 5208 #pragma omp target 5209 #pragma omp teams 5210 #pragma omp distribute 5211 for (int i = 0; i < 10; ++i) 5212 ; 5213 #pragma omp target 5214 #pragma omp teams 5215 #pragma omp distribute 5216 for (int i = 0; i < 10; ++i) 5217 ; 5218 #pragma omp distribute 5219 for (int j = 0; j < 10; ++j) 5220 ; 5221 #pragma omp target 5222 #pragma omp teams 5223 { 5224 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5225 } 5226 #pragma omp target 5227 #pragma omp teams 5228 { 5229 #pragma omp distribute parallel for 5230 for (int i = 0; i < 10; ++i) 5231 ; 5232 #pragma omp distribute parallel for 5233 for (int j = 0; j < 10; ++j) 5234 ; 5235 } 5236 #pragma omp target 5237 #pragma omp teams 5238 { 5239 #pragma omp distribute parallel for simd 5240 for (int i = 0; i < 10; ++i) 5241 ; 5242 #pragma omp distribute parallel for simd 5243 for (int j = 0; j < 10; ++j) 5244 ; 5245 } 5246 #pragma omp target 5247 #pragma omp teams 5248 { 5249 #pragma omp distribute simd 5250 for (int i = 0; i < 10; ++i) 5251 ; 5252 #pragma omp distribute simd 5253 for (int j = 0; j < 10; ++j) 5254 ; 5255 } 5256 #pragma omp target 5257 #pragma omp teams 5258 { 5259 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5260 for (int i = 0; i < 10; ++i) 5261 ; 5262 } 5263 #pragma omp target 5264 #pragma omp teams 5265 { 5266 #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?}} 5267 for (int i = 0; i < 10; ++i) 5268 ; 5269 } 5270 #pragma omp target 5271 #pragma omp teams 5272 { 5273 #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?}} 5274 for (int i = 0; i < 10; ++i) 5275 ; 5276 } 5277 #pragma omp target 5278 #pragma omp teams 5279 { 5280 #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?}} 5281 for (int i = 0; i < 10; ++i) 5282 ; 5283 } 5284 #pragma omp target 5285 #pragma omp teams 5286 { 5287 #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?}} 5288 for (int i = 0; i < 10; ++i) 5289 ; 5290 } 5291 #pragma omp target 5292 #pragma omp teams 5293 { 5294 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5295 a++; 5296 } 5297 #pragma omp target 5298 #pragma omp teams 5299 { 5300 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5301 for (int i = 0; i < 10; ++i) 5302 ; 5303 } 5304 #pragma omp target 5305 #pragma omp teams 5306 { 5307 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5308 for (int i = 0; i < 10; ++i) 5309 ; 5310 } 5311 #pragma omp target 5312 #pragma omp teams 5313 { 5314 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5315 for (int i = 0; i < 10; ++i) 5316 ; 5317 } 5318 #pragma omp target 5319 #pragma omp teams 5320 { 5321 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5322 for (int i = 0; i < 10; ++i) 5323 ; 5324 } 5325 5326 // TASKLOOP DIRECTIVE 5327 #pragma omp taskloop 5328 for (int i = 0; i < 10; ++i) { 5329 #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?}} 5330 for (int i = 0; i < 10; ++i) 5331 ; 5332 } 5333 #pragma omp taskloop 5334 for (int i = 0; i < 10; ++i) { 5335 #pragma omp simd 5336 for (int i = 0; i < 10; ++i) 5337 ; 5338 } 5339 #pragma omp taskloop 5340 for (int i = 0; i < 10; ++i) { 5341 #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?}} 5342 for (int i = 0; i < 10; ++i) 5343 ; 5344 } 5345 #pragma omp taskloop 5346 for (int i = 0; i < 10; ++i) { 5347 #pragma omp parallel 5348 for (int i = 0; i < 10; ++i) 5349 ; 5350 } 5351 #pragma omp taskloop 5352 for (int i = 0; i < 10; ++i) { 5353 #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?}} 5354 { 5355 bar(); 5356 } 5357 } 5358 #pragma omp taskloop 5359 for (int i = 0; i < 10; ++i) { 5360 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 5361 { 5362 bar(); 5363 } 5364 } 5365 #pragma omp taskloop 5366 for (int i = 0; i < 10; ++i) { 5367 #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?}} 5368 { 5369 bar(); 5370 } 5371 } 5372 5373 #pragma omp taskloop 5374 for (int i = 0; i < 10; ++i) { 5375 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5376 { 5377 bar(); 5378 } 5379 } 5380 #pragma omp taskloop 5381 for (int i = 0; i < 10; ++i) { 5382 #pragma omp critical 5383 { 5384 bar(); 5385 } 5386 } 5387 #pragma omp taskloop 5388 for (int i = 0; i < 10; ++i) { 5389 #pragma omp parallel 5390 { 5391 #pragma omp single // OK 5392 { 5393 bar(); 5394 } 5395 #pragma omp for // OK 5396 for (int i = 0; i < 10; ++i) 5397 ; 5398 #pragma omp sections // OK 5399 { 5400 bar(); 5401 } 5402 } 5403 } 5404 #pragma omp taskloop 5405 for (int i = 0; i < 10; ++i) { 5406 #pragma omp parallel for 5407 for (int i = 0; i < 10; ++i) 5408 ; 5409 } 5410 #pragma omp taskloop 5411 for (int i = 0; i < 10; ++i) { 5412 #pragma omp parallel for simd 5413 for (int i = 0; i < 10; ++i) 5414 ; 5415 } 5416 #pragma omp taskloop 5417 for (int i = 0; i < 10; ++i) { 5418 #pragma omp parallel sections 5419 { 5420 bar(); 5421 } 5422 } 5423 #pragma omp taskloop 5424 for (int i = 0; i < 10; ++i) { 5425 #pragma omp task 5426 { 5427 bar(); 5428 } 5429 } 5430 #pragma omp taskloop 5431 for (int i = 0; i < 10; ++i) { 5432 #pragma omp taskyield 5433 bar(); 5434 } 5435 #pragma omp taskloop 5436 for (int i = 0; i < 10; ++i) { 5437 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5438 bar(); 5439 } 5440 #pragma omp taskloop 5441 for (int i = 0; i < 10; ++i) { 5442 #pragma omp taskwait 5443 bar(); 5444 } 5445 #pragma omp taskloop 5446 for (int i = 0; i < 10; ++i) { 5447 #pragma omp flush 5448 bar(); 5449 } 5450 #pragma omp taskloop 5451 for (int i = 0; i < 10; ++i) { 5452 #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?}} 5453 bar(); 5454 } 5455 #pragma omp taskloop 5456 for (int i = 0; i < 10; ++i) { 5457 #pragma omp atomic 5458 ++a; 5459 } 5460 #pragma omp taskloop 5461 for (int i = 0; i < 10; ++i) { 5462 #pragma omp target 5463 ++a; 5464 } 5465 #pragma omp taskloop 5466 for (int i = 0; i < 10; ++i) { 5467 #pragma omp target parallel 5468 ++a; 5469 } 5470 #pragma omp taskloop 5471 for (int i = 0; i < 10; ++i) { 5472 #pragma omp target parallel for 5473 for (int i = 0; i < 10; ++i) 5474 ; 5475 } 5476 #pragma omp taskloop 5477 for (int i = 0; i < 10; ++i) { 5478 #pragma omp target enter data map(to: a) 5479 ++a; 5480 } 5481 #pragma omp taskloop 5482 for (int i = 0; i < 10; ++i) { 5483 #pragma omp target exit data map(from: a) 5484 ++a; 5485 } 5486 #pragma omp taskloop 5487 for (int i = 0; i < 10; ++i) { 5488 #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?}} 5489 ++a; 5490 } 5491 #pragma omp taskloop 5492 for (int i = 0; i < 10; ++i) { 5493 #pragma omp taskloop 5494 for (int i = 0; i < 10; ++i) 5495 ++a; 5496 } 5497 #pragma omp taskloop 5498 for (int i = 0; i < 10; ++i) { 5499 #pragma omp target update to(a) 5500 bar(); 5501 } 5502 #pragma omp taskloop 5503 for (int i = 0; i < 10; ++i) { 5504 #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?}} 5505 for (int j = 0; j < 10; ++j) 5506 ++a; 5507 } 5508 #pragma omp taskloop 5509 for (int i = 0; i < 10; ++i) { 5510 #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?}} 5511 for (int j = 0; j < 10; ++j) 5512 ++a; 5513 } 5514 #pragma omp taskloop 5515 for (int i = 0; i < 10; ++i) { 5516 #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?}} 5517 for (int j = 0; j < 10; ++j) 5518 ++a; 5519 } 5520 #pragma omp taskloop 5521 for (int i = 0; i < 10; ++i) { 5522 #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?}} 5523 for (int j = 0; j < 10; ++j) 5524 ++a; 5525 } 5526 #pragma omp taskloop 5527 for (int i = 0; i < 10; ++i) { 5528 #pragma omp target simd // OK 5529 for (int j = 0; j < 10; ++j) 5530 ++a; 5531 } 5532 #pragma omp taskloop 5533 for (int i = 0; i < 10; ++i) { 5534 #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?}} 5535 for (int j = 0; j < 10; ++j) 5536 ++a; 5537 } 5538 #pragma omp taskloop 5539 for (int i = 0; i < 10; ++i) { 5540 #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?}} 5541 for (int j = 0; j < 10; ++j) 5542 ++a; 5543 } 5544 #pragma omp taskloop 5545 for (int i = 0; i < 10; ++i) { 5546 #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?}} 5547 for (int j = 0; j < 10; ++j) 5548 ++a; 5549 } 5550 #pragma omp taskloop 5551 for (int i = 0; i < 10; ++i) { 5552 #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?}} 5553 for (int j = 0; j < 10; ++j) 5554 ++a; 5555 } 5556 #pragma omp taskloop 5557 for (int i = 0; i < 10; ++i) { 5558 #pragma omp target teams // OK 5559 ++a; 5560 } 5561 #pragma omp taskloop 5562 for (int i = 0; i < 10; ++i) { 5563 #pragma omp target teams distribute // OK 5564 for (int j = 0; j < 10; ++j) 5565 ++a; 5566 } 5567 #pragma omp taskloop 5568 for (int i = 0; i < 10; ++i) { 5569 #pragma omp target teams distribute parallel for // OK 5570 for (int j = 0; j < 10; ++j) 5571 ++a; 5572 } 5573 #pragma omp taskloop 5574 for (int i = 0; i < 10; ++i) { 5575 #pragma omp target teams distribute parallel for simd // OK 5576 for (int j = 0; j < 10; ++j) 5577 ++a; 5578 } 5579 #pragma omp taskloop 5580 for (int i = 0; i < 10; ++i) { 5581 #pragma omp target teams distribute simd // OK 5582 for (int j = 0; j < 10; ++j) 5583 ++a; 5584 } 5585 #pragma omp taskloop 5586 for (int i = 0; i < 10; ++i) { 5587 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 5588 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 5589 } 5590 #pragma omp taskloop 5591 for (int i = 0; i < 10; ++i) { 5592 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5593 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5594 } 5595 #pragma omp master taskloop 5596 for (int i = 0; i < 10; ++i) { 5597 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 5598 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 5599 } 5600 #pragma omp master taskloop 5601 for (int i = 0; i < 10; ++i) { 5602 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 5603 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 5604 } 5605 #pragma omp parallel master taskloop 5606 for (int i = 0; i < 10; ++i) { 5607 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5608 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5609 } 5610 #pragma omp parallel master taskloop 5611 for (int i = 0; i < 10; ++i) { 5612 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5613 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5614 } 5615 5616 // DISTRIBUTE DIRECTIVE 5617 #pragma omp target 5618 #pragma omp teams 5619 #pragma omp distribute 5620 for (int i = 0; i < 10; ++i) { 5621 #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?}} 5622 for (int i = 0; i < 10; ++i) 5623 ; 5624 } 5625 #pragma omp target 5626 #pragma omp teams 5627 #pragma omp distribute 5628 for (int i = 0; i < 10; ++i) { 5629 #pragma omp for 5630 for (int i = 0; i < 10; ++i) 5631 ; 5632 } 5633 #pragma omp target 5634 #pragma omp teams 5635 #pragma omp distribute 5636 for (int i = 0; i < 10; ++i) { 5637 #pragma omp simd 5638 for (int i = 0; i < 10; ++i) 5639 ; 5640 } 5641 #pragma omp target 5642 #pragma omp teams 5643 #pragma omp distribute 5644 for (int i = 0; i < 10; ++i) { 5645 #pragma omp for simd 5646 for (int i = 0; i < 10; ++i) 5647 ; 5648 } 5649 #pragma omp target 5650 #pragma omp teams 5651 #pragma omp distribute 5652 for (int i = 0; i < 10; ++i) { 5653 #pragma omp parallel 5654 for (int i = 0; i < 10; ++i) 5655 ; 5656 } 5657 #pragma omp target 5658 #pragma omp teams 5659 #pragma omp distribute 5660 for (int i = 0; i < 10; ++i) { 5661 #pragma omp sections 5662 { 5663 bar(); 5664 } 5665 } 5666 #pragma omp target 5667 #pragma omp teams 5668 #pragma omp distribute 5669 for (int i = 0; i < 10; ++i) { 5670 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 5671 { 5672 bar(); 5673 } 5674 } 5675 #pragma omp target 5676 #pragma omp teams 5677 #pragma omp distribute 5678 for (int i = 0; i < 10; ++i) { 5679 #pragma omp single 5680 { 5681 bar(); 5682 } 5683 } 5684 #pragma omp target 5685 #pragma omp teams 5686 #pragma omp distribute 5687 for (int i = 0; i < 10; ++i) { 5688 #pragma omp master 5689 { 5690 bar(); 5691 } 5692 } 5693 #pragma omp target 5694 #pragma omp teams 5695 #pragma omp distribute 5696 for (int i = 0; i < 10; ++i) { 5697 #pragma omp critical 5698 { 5699 bar(); 5700 } 5701 } 5702 #pragma omp target 5703 #pragma omp teams 5704 #pragma omp distribute 5705 for (int i = 0; i < 10; ++i) { 5706 #pragma omp parallel 5707 { 5708 #pragma omp single 5709 { 5710 bar(); 5711 } 5712 } 5713 } 5714 #pragma omp target 5715 #pragma omp teams 5716 #pragma omp distribute 5717 for (int i = 0; i < 10; ++i) { 5718 #pragma omp parallel for 5719 for (int i = 0; i < 10; ++i) 5720 ; 5721 } 5722 #pragma omp target 5723 #pragma omp teams 5724 #pragma omp distribute 5725 for (int i = 0; i < 10; ++i) { 5726 #pragma omp parallel for simd 5727 for (int i = 0; i < 10; ++i) 5728 ; 5729 } 5730 #pragma omp target 5731 #pragma omp teams 5732 #pragma omp distribute 5733 for (int i = 0; i < 10; ++i) { 5734 #pragma omp parallel sections 5735 { 5736 bar(); 5737 } 5738 } 5739 #pragma omp target 5740 #pragma omp teams 5741 #pragma omp distribute 5742 for (int i = 0; i < 10; ++i) { 5743 #pragma omp task 5744 { 5745 bar(); 5746 } 5747 } 5748 #pragma omp target 5749 #pragma omp teams 5750 #pragma omp distribute 5751 for (int i = 0; i < 10; ++i) { 5752 #pragma omp taskyield 5753 bar(); 5754 } 5755 #pragma omp target 5756 #pragma omp teams 5757 #pragma omp distribute 5758 for (int i = 0; i < 10; ++i) { 5759 #pragma omp barrier 5760 bar(); 5761 } 5762 #pragma omp target 5763 #pragma omp teams 5764 #pragma omp distribute 5765 for (int i = 0; i < 10; ++i) { 5766 #pragma omp taskwait 5767 bar(); 5768 } 5769 #pragma omp target 5770 #pragma omp teams 5771 #pragma omp distribute 5772 for (int i = 0; i < 10; ++i) { 5773 #pragma omp flush 5774 bar(); 5775 } 5776 #pragma omp target 5777 #pragma omp teams 5778 #pragma omp distribute 5779 for (int i = 0; i < 10; ++i) { 5780 #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?}} 5781 bar(); 5782 } 5783 #pragma omp target 5784 #pragma omp teams 5785 #pragma omp distribute 5786 for (int i = 0; i < 10; ++i) { 5787 #pragma omp atomic 5788 ++a; 5789 } 5790 #pragma omp target 5791 #pragma omp teams 5792 #pragma omp distribute 5793 for (int i = 0; i < 10; ++i) { 5794 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5795 ++a; 5796 } 5797 #pragma omp target 5798 #pragma omp teams 5799 #pragma omp distribute 5800 for (int i = 0; i < 10; ++i) { 5801 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5802 ++a; 5803 } 5804 #pragma omp target 5805 #pragma omp teams 5806 #pragma omp distribute 5807 for (int i = 0; i < 10; ++i) { 5808 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5809 for (int i = 0; i < 10; ++i) 5810 ; 5811 } 5812 #pragma omp target 5813 #pragma omp teams 5814 #pragma omp distribute 5815 for (int i = 0; i < 10; ++i) { 5816 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5817 ++a; 5818 } 5819 #pragma omp target 5820 #pragma omp teams 5821 #pragma omp distribute 5822 for (int i = 0; i < 10; ++i) { 5823 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5824 ++a; 5825 } 5826 #pragma omp target 5827 #pragma omp teams 5828 #pragma omp distribute 5829 for (int i = 0; i < 10; ++i) { 5830 #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?}} 5831 ++a; 5832 } 5833 #pragma omp target 5834 #pragma omp teams 5835 #pragma omp distribute 5836 for (int i = 0; i < 10; ++i) { 5837 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5838 ++a; 5839 } 5840 #pragma omp target 5841 #pragma omp teams 5842 #pragma omp distribute 5843 for (int i = 0; i < 10; ++i) { 5844 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5845 for (int j = 0; j < 10; ++j) 5846 ; 5847 } 5848 #pragma omp target 5849 #pragma omp teams 5850 #pragma omp distribute 5851 for (int i = 0; i < 10; ++i) { 5852 #pragma omp 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?}} 5853 for (int j = 0; j < 10; ++j) 5854 ; 5855 } 5856 #pragma omp target 5857 #pragma omp teams 5858 #pragma omp distribute 5859 for (int i = 0; i < 10; ++i) { 5860 #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?}} 5861 for (int j = 0; j < 10; ++j) 5862 ; 5863 } 5864 #pragma omp target 5865 #pragma omp teams 5866 #pragma omp distribute 5867 for (int i = 0; i < 10; ++i) { 5868 #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?}} 5869 for (int j = 0; j < 10; ++j) 5870 ; 5871 } 5872 #pragma omp target 5873 #pragma omp teams 5874 #pragma omp distribute 5875 for (int i = 0; i < 10; ++i) { 5876 #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?}} 5877 for (int j = 0; j < 10; ++j) 5878 ; 5879 } 5880 #pragma omp target 5881 #pragma omp teams 5882 #pragma omp distribute 5883 for (int i = 0; i < 10; ++i) { 5884 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5885 a++; 5886 } 5887 #pragma omp target 5888 #pragma omp teams 5889 #pragma omp distribute 5890 for (int i = 0; i < 10; ++i) { 5891 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5892 for (int j = 0; j < 10; ++j) 5893 ; 5894 } 5895 #pragma omp target 5896 #pragma omp teams 5897 #pragma omp distribute 5898 for (int i = 0; i < 10; ++i) { 5899 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5900 for (int j = 0; j < 10; ++j) 5901 ; 5902 } 5903 #pragma omp target 5904 #pragma omp teams 5905 #pragma omp distribute 5906 for (int i = 0; i < 10; ++i) { 5907 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5908 for (int j = 0; j < 10; ++j) 5909 ; 5910 } 5911 #pragma omp target 5912 #pragma omp teams 5913 #pragma omp distribute 5914 for (int i = 0; i < 10; ++i) { 5915 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5916 for (int j = 0; j < 10; ++j) 5917 ; 5918 } 5919 5920 // DISTRIBUTE PARALLEL FOR DIRECTIVE 5921 #pragma omp target 5922 #pragma omp teams 5923 #pragma omp distribute parallel for 5924 for (int i = 0; i < 10; ++i) { 5925 #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?}} 5926 for (int i = 0; i < 10; ++i) 5927 ; 5928 } 5929 #pragma omp target 5930 #pragma omp teams 5931 #pragma omp distribute parallel for 5932 for (int i = 0; i < 10; ++i) { 5933 #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?}} 5934 for (int i = 0; i < 10; ++i) 5935 ; 5936 } 5937 #pragma omp target 5938 #pragma omp teams 5939 #pragma omp distribute parallel for 5940 for (int i = 0; i < 10; ++i) { 5941 #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?}} 5942 for (int i = 0; i < 10; ++i) 5943 ; 5944 } 5945 #pragma omp target 5946 #pragma omp teams 5947 #pragma omp distribute parallel for 5948 for (int i = 0; i < 10; ++i) { 5949 #pragma omp simd 5950 for (int i = 0; i < 10; ++i) 5951 ; 5952 } 5953 #pragma omp target 5954 #pragma omp teams 5955 #pragma omp distribute parallel for 5956 for (int i = 0; i < 10; ++i) { 5957 #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?}} 5958 for (int i = 0; i < 10; ++i) 5959 ; 5960 } 5961 #pragma omp target 5962 #pragma omp teams 5963 #pragma omp distribute parallel for 5964 for (int i = 0; i < 10; ++i) { 5965 #pragma omp parallel 5966 for (int i = 0; i < 10; ++i) 5967 ; 5968 } 5969 #pragma omp target 5970 #pragma omp teams 5971 #pragma omp distribute parallel for 5972 for (int i = 0; i < 10; ++i) { 5973 #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?}} 5974 { 5975 bar(); 5976 } 5977 } 5978 #pragma omp target 5979 #pragma omp teams 5980 #pragma omp distribute parallel for 5981 for (int i = 0; i < 10; ++i) { 5982 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 5983 { 5984 bar(); 5985 } 5986 } 5987 #pragma omp target 5988 #pragma omp teams 5989 #pragma omp distribute parallel for 5990 for (int i = 0; i < 10; ++i) { 5991 #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?}} 5992 { 5993 bar(); 5994 } 5995 } 5996 #pragma omp target 5997 #pragma omp teams 5998 #pragma omp distribute parallel for 5999 for (int i = 0; i < 10; ++i) { 6000 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6001 { 6002 bar(); 6003 } 6004 } 6005 #pragma omp target 6006 #pragma omp teams 6007 #pragma omp distribute parallel for 6008 for (int i = 0; i < 10; ++i) { 6009 #pragma omp critical 6010 { 6011 bar(); 6012 } 6013 } 6014 #pragma omp target 6015 #pragma omp teams 6016 #pragma omp distribute parallel for 6017 for (int i = 0; i < 10; ++i) { 6018 #pragma omp parallel 6019 { 6020 #pragma omp single 6021 { 6022 bar(); 6023 } 6024 } 6025 } 6026 #pragma omp target 6027 #pragma omp teams 6028 #pragma omp distribute parallel for 6029 for (int i = 0; i < 10; ++i) { 6030 #pragma omp parallel for 6031 for (int i = 0; i < 10; ++i) 6032 ; 6033 } 6034 #pragma omp target 6035 #pragma omp teams 6036 #pragma omp distribute parallel for 6037 for (int i = 0; i < 10; ++i) { 6038 #pragma omp parallel for simd 6039 for (int i = 0; i < 10; ++i) 6040 ; 6041 } 6042 #pragma omp target 6043 #pragma omp teams 6044 #pragma omp distribute parallel for 6045 for (int i = 0; i < 10; ++i) { 6046 #pragma omp parallel sections 6047 { 6048 bar(); 6049 } 6050 } 6051 #pragma omp target 6052 #pragma omp teams 6053 #pragma omp distribute parallel for 6054 for (int i = 0; i < 10; ++i) { 6055 #pragma omp task 6056 { 6057 bar(); 6058 } 6059 } 6060 #pragma omp target 6061 #pragma omp teams 6062 #pragma omp distribute parallel for 6063 for (int i = 0; i < 10; ++i) { 6064 #pragma omp taskyield 6065 bar(); 6066 } 6067 #pragma omp target 6068 #pragma omp teams 6069 #pragma omp distribute parallel for 6070 for (int i = 0; i < 10; ++i) { 6071 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6072 bar(); 6073 } 6074 #pragma omp target 6075 #pragma omp teams 6076 #pragma omp distribute parallel for 6077 for (int i = 0; i < 10; ++i) { 6078 #pragma omp taskwait 6079 bar(); 6080 } 6081 #pragma omp target 6082 #pragma omp teams 6083 #pragma omp distribute parallel for 6084 for (int i = 0; i < 10; ++i) { 6085 #pragma omp flush 6086 bar(); 6087 } 6088 #pragma omp target 6089 #pragma omp teams 6090 #pragma omp distribute parallel for 6091 for (int i = 0; i < 10; ++i) { 6092 #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?}} 6093 bar(); 6094 } 6095 #pragma omp target 6096 #pragma omp teams 6097 #pragma omp distribute parallel for 6098 for (int i = 0; i < 10; ++i) { 6099 #pragma omp atomic 6100 ++a; 6101 } 6102 #pragma omp target 6103 #pragma omp teams 6104 #pragma omp distribute parallel for 6105 for (int i = 0; i < 10; ++i) { 6106 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6107 ++a; 6108 } 6109 #pragma omp target 6110 #pragma omp teams 6111 #pragma omp distribute parallel for 6112 for (int i = 0; i < 10; ++i) { 6113 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6114 ++a; 6115 } 6116 #pragma omp target 6117 #pragma omp teams 6118 #pragma omp distribute parallel for 6119 for (int i = 0; i < 10; ++i) { 6120 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6121 for (int i = 0; i < 10; ++i) 6122 ; 6123 } 6124 #pragma omp target 6125 #pragma omp teams 6126 #pragma omp distribute parallel for 6127 for (int i = 0; i < 10; ++i) { 6128 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6129 ++a; 6130 } 6131 #pragma omp target 6132 #pragma omp teams 6133 #pragma omp distribute parallel for 6134 for (int i = 0; i < 10; ++i) { 6135 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6136 ++a; 6137 } 6138 #pragma omp target 6139 #pragma omp teams 6140 #pragma omp distribute parallel for 6141 for (int i = 0; i < 10; ++i) { 6142 #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?}} 6143 ++a; 6144 } 6145 #pragma omp target 6146 #pragma omp teams 6147 #pragma omp distribute parallel for 6148 for (int i = 0; i < 10; ++i) { 6149 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6150 ++a; 6151 } 6152 #pragma omp target 6153 #pragma omp teams 6154 #pragma omp distribute parallel for 6155 for (int i = 0; i < 10; ++i) { 6156 #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?}} 6157 for (int i = 0; i < 10; ++i) 6158 ; 6159 } 6160 #pragma omp target 6161 #pragma omp teams 6162 #pragma omp distribute parallel for 6163 for (int i = 0; i < 10; ++i) { 6164 #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?}} 6165 for (int i = 0; i < 10; ++i) 6166 ; 6167 } 6168 #pragma omp target 6169 #pragma omp teams 6170 #pragma omp distribute parallel for 6171 for (int i = 0; i < 10; ++i) { 6172 #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?}} 6173 for (int i = 0; i < 10; ++i) 6174 ; 6175 } 6176 #pragma omp target 6177 #pragma omp teams 6178 #pragma omp distribute parallel for 6179 for (int i = 0; i < 10; ++i) { 6180 #pragma omp 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?}} 6181 for (int i = 0; i < 10; ++i) 6182 ; 6183 } 6184 #pragma omp target 6185 #pragma omp teams 6186 #pragma omp distribute parallel for 6187 for (int i = 0; i < 10; ++i) { 6188 #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?}} 6189 for (int i = 0; i < 10; ++i) 6190 ; 6191 } 6192 #pragma omp target 6193 #pragma omp teams 6194 #pragma omp distribute parallel for 6195 for (int i = 0; i < 10; ++i) { 6196 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6197 a++; 6198 } 6199 #pragma omp target 6200 #pragma omp teams 6201 #pragma omp distribute parallel for 6202 for (int i = 0; i < 10; ++i) { 6203 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6204 for (int i = 0; i < 10; ++i) 6205 ; 6206 } 6207 #pragma omp target 6208 #pragma omp teams 6209 #pragma omp distribute parallel for 6210 for (int i = 0; i < 10; ++i) { 6211 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6212 for (int i = 0; i < 10; ++i) 6213 ; 6214 } 6215 #pragma omp target 6216 #pragma omp teams 6217 #pragma omp distribute parallel for 6218 for (int i = 0; i < 10; ++i) { 6219 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6220 for (int i = 0; i < 10; ++i) 6221 ; 6222 } 6223 #pragma omp target 6224 #pragma omp teams 6225 #pragma omp distribute parallel for 6226 for (int i = 0; i < 10; ++i) { 6227 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6228 for (int i = 0; i < 10; ++i) 6229 ; 6230 } 6231 6232 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6233 #pragma omp target 6234 #pragma omp teams 6235 #pragma omp distribute parallel for simd 6236 for (int i = 0; i < 10; ++i) { 6237 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6238 for (int i = 0; i < 10; ++i) 6239 ; 6240 } 6241 #pragma omp target 6242 #pragma omp teams 6243 #pragma omp distribute parallel for simd 6244 for (int i = 0; i < 10; ++i) { 6245 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6246 for (int i = 0; i < 10; ++i) 6247 ; 6248 } 6249 #pragma omp target 6250 #pragma omp teams 6251 #pragma omp distribute parallel for simd 6252 for (int i = 0; i < 10; ++i) { 6253 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6254 for (int i = 0; i < 10; ++i) 6255 ; 6256 } 6257 #pragma omp target 6258 #pragma omp teams 6259 #pragma omp distribute parallel for simd 6260 for (int i = 0; i < 10; ++i) { 6261 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6262 for (int i = 0; i < 10; ++i) 6263 ; 6264 } 6265 #pragma omp target 6266 #pragma omp teams 6267 #pragma omp distribute parallel for simd 6268 for (int i = 0; i < 10; ++i) { 6269 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6270 for (int i = 0; i < 10; ++i) 6271 ; 6272 } 6273 #pragma omp target 6274 #pragma omp teams 6275 #pragma omp distribute parallel for simd 6276 for (int i = 0; i < 10; ++i) { 6277 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6278 for (int i = 0; i < 10; ++i) 6279 ; 6280 } 6281 #pragma omp target 6282 #pragma omp teams 6283 #pragma omp distribute parallel for simd 6284 for (int i = 0; i < 10; ++i) { 6285 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6286 { 6287 bar(); 6288 } 6289 } 6290 #pragma omp target 6291 #pragma omp teams 6292 #pragma omp distribute parallel for simd 6293 for (int i = 0; i < 10; ++i) { 6294 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6295 { 6296 bar(); 6297 } 6298 } 6299 #pragma omp target 6300 #pragma omp teams 6301 #pragma omp distribute parallel for simd 6302 for (int i = 0; i < 10; ++i) { 6303 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6304 { 6305 bar(); 6306 } 6307 } 6308 #pragma omp target 6309 #pragma omp teams 6310 #pragma omp distribute parallel for simd 6311 for (int i = 0; i < 10; ++i) { 6312 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6313 { 6314 bar(); 6315 } 6316 } 6317 #pragma omp target 6318 #pragma omp teams 6319 #pragma omp distribute parallel for simd 6320 for (int i = 0; i < 10; ++i) { 6321 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6322 { 6323 bar(); 6324 } 6325 } 6326 #pragma omp target 6327 #pragma omp teams 6328 #pragma omp distribute parallel for simd 6329 for (int i = 0; i < 10; ++i) { 6330 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6331 { 6332 #pragma omp single 6333 { 6334 bar(); 6335 } 6336 } 6337 } 6338 #pragma omp target 6339 #pragma omp teams 6340 #pragma omp distribute parallel for simd 6341 for (int i = 0; i < 10; ++i) { 6342 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6343 for (int i = 0; i < 10; ++i) 6344 ; 6345 } 6346 #pragma omp target 6347 #pragma omp teams 6348 #pragma omp distribute parallel for simd 6349 for (int i = 0; i < 10; ++i) { 6350 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6351 for (int i = 0; i < 10; ++i) 6352 ; 6353 } 6354 #pragma omp target 6355 #pragma omp teams 6356 #pragma omp distribute parallel for simd 6357 for (int i = 0; i < 10; ++i) { 6358 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6359 { 6360 bar(); 6361 } 6362 } 6363 #pragma omp target 6364 #pragma omp teams 6365 #pragma omp distribute parallel for simd 6366 for (int i = 0; i < 10; ++i) { 6367 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6368 { 6369 bar(); 6370 } 6371 } 6372 #pragma omp target 6373 #pragma omp teams 6374 #pragma omp distribute parallel for simd 6375 for (int i = 0; i < 10; ++i) { 6376 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6377 bar(); 6378 } 6379 #pragma omp target 6380 #pragma omp teams 6381 #pragma omp distribute parallel for simd 6382 for (int i = 0; i < 10; ++i) { 6383 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6384 bar(); 6385 } 6386 #pragma omp target 6387 #pragma omp teams 6388 #pragma omp distribute parallel for simd 6389 for (int i = 0; i < 10; ++i) { 6390 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6391 bar(); 6392 } 6393 #pragma omp target 6394 #pragma omp teams 6395 #pragma omp distribute parallel for simd 6396 for (int i = 0; i < 10; ++i) { 6397 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6398 bar(); 6399 } 6400 #pragma omp target 6401 #pragma omp teams 6402 #pragma omp distribute parallel for simd 6403 for (int i = 0; i < 10; ++i) { 6404 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6405 bar(); 6406 } 6407 #pragma omp target 6408 #pragma omp teams 6409 #pragma omp distribute parallel for simd 6410 for (int i = 0; i < 10; ++i) { 6411 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6412 ++a; 6413 } 6414 #pragma omp target 6415 #pragma omp teams 6416 #pragma omp distribute parallel for simd 6417 for (int i = 0; i < 10; ++i) { 6418 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6419 ++a; 6420 } 6421 #pragma omp target 6422 #pragma omp teams 6423 #pragma omp distribute parallel for simd 6424 for (int i = 0; i < 10; ++i) { 6425 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6426 ++a; 6427 } 6428 #pragma omp target 6429 #pragma omp teams 6430 #pragma omp distribute parallel for simd 6431 for (int i = 0; i < 10; ++i) { 6432 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6433 for (int i = 0; i < 10; ++i) 6434 ; 6435 } 6436 #pragma omp target 6437 #pragma omp teams 6438 #pragma omp distribute parallel for simd 6439 for (int i = 0; i < 10; ++i) { 6440 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6441 ++a; 6442 } 6443 #pragma omp target 6444 #pragma omp teams 6445 #pragma omp distribute parallel for simd 6446 for (int i = 0; i < 10; ++i) { 6447 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6448 ++a; 6449 } 6450 #pragma omp target 6451 #pragma omp teams 6452 #pragma omp distribute parallel for simd 6453 for (int i = 0; i < 10; ++i) { 6454 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6455 ++a; 6456 } 6457 #pragma omp target 6458 #pragma omp teams 6459 #pragma omp distribute parallel for simd 6460 for (int i = 0; i < 10; ++i) { 6461 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6462 ++a; 6463 } 6464 #pragma omp target 6465 #pragma omp teams 6466 #pragma omp distribute parallel for simd 6467 for (int i = 0; i < 10; ++i) { 6468 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6469 for (int i = 0; i < 10; ++i) 6470 ++a; 6471 } 6472 #pragma omp target 6473 #pragma omp teams 6474 #pragma omp distribute parallel for simd 6475 for (int i = 0; i < 10; ++i) { 6476 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6477 for (int i = 0; i < 10; ++i) 6478 ++a; 6479 } 6480 #pragma omp target 6481 #pragma omp teams 6482 #pragma omp distribute parallel for simd 6483 for (int i = 0; i < 10; ++i) { 6484 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6485 for (int i = 0; i < 10; ++i) 6486 ++a; 6487 } 6488 #pragma omp target 6489 #pragma omp teams 6490 #pragma omp distribute parallel for simd 6491 for (int i = 0; i < 10; ++i) { 6492 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6493 for (int i = 0; i < 10; ++i) 6494 ++a; 6495 } 6496 #pragma omp target 6497 #pragma omp teams 6498 #pragma omp distribute parallel for simd 6499 for (int i = 0; i < 10; ++i) { 6500 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6501 for (int i = 0; i < 10; ++i) 6502 ++a; 6503 } 6504 #pragma omp target 6505 #pragma omp teams 6506 #pragma omp distribute parallel for simd 6507 for (int i = 0; i < 10; ++i) { 6508 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6509 for (int i = 0; i < 10; ++i) 6510 ++a; 6511 } 6512 #pragma omp target 6513 #pragma omp teams 6514 #pragma omp distribute parallel for simd 6515 for (int i = 0; i < 10; ++i) { 6516 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6517 ++a; 6518 } 6519 #pragma omp target 6520 #pragma omp teams 6521 #pragma omp distribute parallel for simd 6522 for (int i = 0; i < 10; ++i) { 6523 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6524 for (int i = 0; i < 10; ++i) 6525 ++a; 6526 } 6527 #pragma omp target 6528 #pragma omp teams 6529 #pragma omp distribute parallel for simd 6530 for (int i = 0; i < 10; ++i) { 6531 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6532 for (int i = 0; i < 10; ++i) 6533 ++a; 6534 } 6535 #pragma omp target 6536 #pragma omp teams 6537 #pragma omp distribute parallel for simd 6538 for (int i = 0; i < 10; ++i) { 6539 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6540 for (int i = 0; i < 10; ++i) 6541 ++a; 6542 } 6543 #pragma omp target 6544 #pragma omp teams 6545 #pragma omp distribute parallel for simd 6546 for (int i = 0; i < 10; ++i) { 6547 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6548 for (int i = 0; i < 10; ++i) 6549 ++a; 6550 } 6551 6552 // TARGET SIMD DIRECTIVE 6553 #pragma omp target simd 6554 for (int i = 0; i < 10; ++i) { 6555 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6556 for (int i = 0; i < 10; ++i) 6557 ; 6558 } 6559 #pragma omp target simd 6560 for (int i = 0; i < 10; ++i) { 6561 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6562 for (int i = 0; i < 10; ++i) 6563 ; 6564 } 6565 #pragma omp target simd 6566 for (int i = 0; i < 10; ++i) { 6567 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6568 for (int i = 0; i < 10; ++i) 6569 ; 6570 } 6571 #pragma omp target simd 6572 for (int i = 0; i < 10; ++i) { 6573 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6574 for (int i = 0; i < 10; ++i) 6575 ; 6576 } 6577 #pragma omp target simd 6578 for (int i = 0; i < 10; ++i) { 6579 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6580 for (int i = 0; i < 10; ++i) 6581 ; 6582 } 6583 #pragma omp target simd 6584 for (int i = 0; i < 10; ++i) { 6585 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6586 for (int i = 0; i < 10; ++i) 6587 ; 6588 } 6589 #pragma omp target simd 6590 for (int i = 0; i < 10; ++i) { 6591 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6592 { 6593 bar(); 6594 } 6595 } 6596 #pragma omp target simd 6597 for (int i = 0; i < 10; ++i) { 6598 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6599 { 6600 bar(); 6601 } 6602 } 6603 #pragma omp target simd 6604 for (int i = 0; i < 10; ++i) { 6605 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6606 { 6607 bar(); 6608 } 6609 } 6610 #pragma omp target simd 6611 for (int i = 0; i < 10; ++i) { 6612 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6613 { 6614 bar(); 6615 } 6616 } 6617 #pragma omp target simd 6618 for (int i = 0; i < 10; ++i) { 6619 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6620 { 6621 bar(); 6622 } 6623 } 6624 #pragma omp target simd 6625 for (int i = 0; i < 10; ++i) { 6626 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6627 { 6628 #pragma omp single 6629 { 6630 bar(); 6631 } 6632 } 6633 } 6634 #pragma omp target simd 6635 for (int i = 0; i < 10; ++i) { 6636 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6637 for (int i = 0; i < 10; ++i) 6638 ; 6639 } 6640 #pragma omp target simd 6641 for (int i = 0; i < 10; ++i) { 6642 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6643 for (int i = 0; i < 10; ++i) 6644 ; 6645 } 6646 #pragma omp target simd 6647 for (int i = 0; i < 10; ++i) { 6648 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6649 { 6650 bar(); 6651 } 6652 } 6653 #pragma omp target simd 6654 for (int i = 0; i < 10; ++i) { 6655 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6656 { 6657 bar(); 6658 } 6659 } 6660 #pragma omp target simd 6661 for (int i = 0; i < 10; ++i) { 6662 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6663 bar(); 6664 } 6665 #pragma omp target simd 6666 for (int i = 0; i < 10; ++i) { 6667 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6668 bar(); 6669 } 6670 #pragma omp target simd 6671 for (int i = 0; i < 10; ++i) { 6672 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6673 bar(); 6674 } 6675 #pragma omp target simd 6676 for (int i = 0; i < 10; ++i) { 6677 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6678 bar(); 6679 } 6680 #pragma omp target simd 6681 for (int i = 0; i < 10; ++i) { 6682 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6683 bar(); 6684 } 6685 #pragma omp target simd 6686 for (int i = 0; i < 10; ++i) { 6687 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6688 ++a; 6689 } 6690 #pragma omp target simd 6691 for (int i = 0; i < 10; ++i) { 6692 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6693 ++a; 6694 } 6695 #pragma omp target simd 6696 for (int i = 0; i < 10; ++i) { 6697 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6698 ++a; 6699 } 6700 #pragma omp target simd 6701 for (int i = 0; i < 10; ++i) { 6702 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6703 for (int i = 0; i < 10; ++i) 6704 ; 6705 } 6706 #pragma omp target simd 6707 for (int i = 0; i < 10; ++i) { 6708 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6709 ++a; 6710 } 6711 #pragma omp target simd 6712 for (int i = 0; i < 10; ++i) { 6713 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6714 ++a; 6715 } 6716 #pragma omp target simd 6717 for (int i = 0; i < 10; ++i) { 6718 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6719 ++a; 6720 } 6721 #pragma omp target simd 6722 for (int i = 0; i < 10; ++i) { 6723 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6724 ++a; 6725 } 6726 #pragma omp target simd 6727 for (int i = 0; i < 10; ++i) { 6728 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6729 for (int i = 0; i < 10; ++i) 6730 ++a; 6731 } 6732 #pragma omp target simd 6733 for (int i = 0; i < 10; ++i) { 6734 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6735 for (int i = 0; i < 10; ++i) 6736 ++a; 6737 } 6738 #pragma omp target simd 6739 for (int i = 0; i < 10; ++i) { 6740 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6741 for (int i = 0; i < 10; ++i) 6742 ++a; 6743 } 6744 #pragma omp target simd 6745 for (int i = 0; i < 10; ++i) { 6746 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6747 for (int i = 0; i < 10; ++i) 6748 ++a; 6749 } 6750 #pragma omp target simd 6751 for (int i = 0; i < 10; ++i) { 6752 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6753 for (int i = 0; i < 10; ++i) 6754 ++a; 6755 } 6756 #pragma omp target simd 6757 for (int i = 0; i < 10; ++i) { 6758 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6759 for (int i = 0; i < 10; ++i) 6760 ++a; 6761 } 6762 #pragma omp target simd 6763 for (int i = 0; i < 10; ++i) { 6764 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6765 for (int i = 0; i < 10; ++i) 6766 ++a; 6767 } 6768 #pragma omp target simd 6769 for (int i = 0; i < 10; ++i) { 6770 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6771 for (int i = 0; i < 10; ++i) 6772 ++a; 6773 } 6774 6775 // TEAMS DISTRIBUTE DIRECTIVE 6776 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6777 for (int i = 0; i < 10; ++i) 6778 ; 6779 #pragma omp target 6780 #pragma omp teams distribute 6781 for (int i = 0; i < 10; ++i) { 6782 #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?}} 6783 for (int i = 0; i < 10; ++i) 6784 ; 6785 } 6786 #pragma omp target 6787 #pragma omp teams distribute 6788 for (int i = 0; i < 10; ++i) { 6789 #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?}} 6790 for (int i = 0; i < 10; ++i) 6791 ; 6792 } 6793 #pragma omp target 6794 #pragma omp teams distribute 6795 for (int i = 0; i < 10; ++i) { 6796 #pragma omp for // OK 6797 for (int i = 0; i < 10; ++i) 6798 ; 6799 } 6800 #pragma omp target 6801 #pragma omp teams distribute 6802 for (int i = 0; i < 10; ++i) { 6803 #pragma omp simd // OK 6804 for (int i = 0; i < 10; ++i) 6805 ; 6806 } 6807 #pragma omp target 6808 #pragma omp teams distribute 6809 for (int i = 0; i < 10; ++i) { 6810 #pragma omp for simd // OK 6811 for (int i = 0; i < 10; ++i) 6812 ; 6813 } 6814 #pragma omp target 6815 #pragma omp teams distribute 6816 for (int i = 0; i < 10; ++i) { 6817 #pragma omp parallel // OK 6818 for (int i = 0; i < 10; ++i) 6819 ; 6820 } 6821 #pragma omp target 6822 #pragma omp teams distribute 6823 for (int i = 0; i < 10; ++i) { 6824 #pragma omp sections // OK 6825 { 6826 bar(); 6827 } 6828 } 6829 #pragma omp target 6830 #pragma omp teams distribute 6831 for (int i = 0; i < 10; ++i) { 6832 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6833 { 6834 bar(); 6835 } 6836 } 6837 #pragma omp target 6838 #pragma omp teams distribute 6839 for (int i = 0; i < 10; ++i) { 6840 #pragma omp single // OK 6841 { 6842 bar(); 6843 } 6844 } 6845 #pragma omp target 6846 #pragma omp teams distribute 6847 for (int i = 0; i < 10; ++i) { 6848 #pragma omp master // OK 6849 { 6850 bar(); 6851 } 6852 } 6853 #pragma omp target 6854 #pragma omp teams distribute 6855 for (int i = 0; i < 10; ++i) { 6856 #pragma omp critical // OK 6857 { 6858 bar(); 6859 } 6860 } 6861 #pragma omp target 6862 #pragma omp teams distribute 6863 for (int i = 0; i < 10; ++i) { 6864 #pragma omp parallel // OK 6865 { 6866 #pragma omp single 6867 { 6868 bar(); 6869 } 6870 } 6871 } 6872 #pragma omp target 6873 #pragma omp teams distribute 6874 for (int i = 0; i < 10; ++i) { 6875 #pragma omp parallel for // OK 6876 for (int i = 0; i < 10; ++i) 6877 ; 6878 } 6879 #pragma omp target 6880 #pragma omp teams distribute 6881 for (int i = 0; i < 10; ++i) { 6882 #pragma omp parallel for simd // OK 6883 for (int i = 0; i < 10; ++i) 6884 ; 6885 } 6886 #pragma omp target 6887 #pragma omp teams distribute 6888 for (int i = 0; i < 10; ++i) { 6889 #pragma omp parallel sections // OK 6890 { 6891 bar(); 6892 } 6893 } 6894 #pragma omp target 6895 #pragma omp teams distribute 6896 for (int i = 0; i < 10; ++i) { 6897 #pragma omp task // OK 6898 { 6899 bar(); 6900 } 6901 } 6902 #pragma omp target 6903 #pragma omp teams distribute 6904 for (int i = 0; i < 10; ++i) { 6905 #pragma omp taskyield // OK 6906 bar(); 6907 } 6908 #pragma omp target 6909 #pragma omp teams distribute 6910 for (int i = 0; i < 10; ++i) { 6911 #pragma omp barrier // OK 6912 bar(); 6913 } 6914 #pragma omp target 6915 #pragma omp teams distribute 6916 for (int i = 0; i < 10; ++i) { 6917 #pragma omp taskwait // OK 6918 bar(); 6919 } 6920 #pragma omp target 6921 #pragma omp teams distribute 6922 for (int i = 0; i < 10; ++i) { 6923 #pragma omp flush // OK 6924 bar(); 6925 } 6926 #pragma omp target 6927 #pragma omp teams distribute 6928 for (int i = 0; i < 10; ++i) { 6929 #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?}} 6930 bar(); 6931 } 6932 #pragma omp target 6933 #pragma omp teams distribute 6934 for (int i = 0; i < 10; ++i) { 6935 #pragma omp atomic // OK 6936 ++a; 6937 } 6938 #pragma omp target 6939 #pragma omp teams distribute 6940 for (int i = 0; i < 10; ++i) { 6941 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6942 ++a; 6943 } 6944 #pragma omp target 6945 #pragma omp teams distribute 6946 for (int i = 0; i < 10; ++i) { 6947 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6948 ++a; 6949 } 6950 #pragma omp target 6951 #pragma omp teams distribute 6952 for (int i = 0; i < 10; ++i) { 6953 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6954 for (int i = 0; i < 10; ++i) 6955 ; 6956 } 6957 #pragma omp target 6958 #pragma omp teams distribute 6959 for (int i = 0; i < 10; ++i) { 6960 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6961 ++a; 6962 } 6963 #pragma omp target 6964 #pragma omp teams distribute 6965 for (int i = 0; i < 10; ++i) { 6966 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6967 ++a; 6968 } 6969 #pragma omp target 6970 #pragma omp teams distribute 6971 for (int i = 0; i < 10; ++i) { 6972 #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?}} 6973 ++a; 6974 } 6975 #pragma omp target 6976 #pragma omp teams distribute 6977 for (int i = 0; i < 10; ++i) { 6978 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6979 ++a; 6980 } 6981 #pragma omp target 6982 #pragma omp teams distribute 6983 for (int i = 0; i < 10; ++i) { 6984 #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?}} 6985 for (int i = 0; i < 10; ++i) 6986 ++a; 6987 } 6988 #pragma omp target 6989 #pragma omp teams distribute 6990 for (int i = 0; i < 10; ++i) { 6991 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6992 for (int i = 0; i < 10; ++i) 6993 ++a; 6994 } 6995 #pragma omp target 6996 #pragma omp teams distribute 6997 for (int i = 0; i < 10; ++i) { 6998 #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?}} 6999 for (int i = 0; i < 10; ++i) 7000 ++a; 7001 } 7002 #pragma omp target 7003 #pragma omp teams distribute 7004 for (int i = 0; i < 10; ++i) { 7005 #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?}} 7006 for (int i = 0; i < 10; ++i) 7007 ++a; 7008 } 7009 #pragma omp target 7010 #pragma omp teams distribute 7011 for (int i = 0; i < 10; ++i) { 7012 #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?}} 7013 for (int i = 0; i < 10; ++i) 7014 ++a; 7015 } 7016 #pragma omp target 7017 #pragma omp teams distribute 7018 for (int i = 0; i < 10; ++i) { 7019 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7020 for (int i = 0; i < 10; ++i) 7021 ++a; 7022 } 7023 #pragma omp target 7024 #pragma omp teams distribute 7025 for (int i = 0; i < 10; ++i) { 7026 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7027 for (int i = 0; i < 10; ++i) 7028 ++a; 7029 } 7030 #pragma omp target 7031 #pragma omp teams distribute 7032 for (int i = 0; i < 10; ++i) { 7033 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7034 for (int i = 0; i < 10; ++i) 7035 ++a; 7036 } 7037 7038 // TEAMS DISTRIBUTE DIRECTIVE 7039 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7040 for (int i = 0; i < 10; ++i) 7041 ; 7042 #pragma omp target 7043 #pragma omp teams distribute 7044 for (int i = 0; i < 10; ++i) { 7045 #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?}} 7046 for (int i = 0; i < 10; ++i) 7047 ; 7048 } 7049 #pragma omp target 7050 #pragma omp teams distribute 7051 for (int i = 0; i < 10; ++i) { 7052 #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?}} 7053 for (int i = 0; i < 10; ++i) 7054 ; 7055 } 7056 #pragma omp target 7057 #pragma omp teams distribute 7058 for (int i = 0; i < 10; ++i) { 7059 #pragma omp for // OK 7060 for (int i = 0; i < 10; ++i) 7061 ; 7062 } 7063 #pragma omp target 7064 #pragma omp teams distribute 7065 for (int i = 0; i < 10; ++i) { 7066 #pragma omp simd // OK 7067 for (int i = 0; i < 10; ++i) 7068 ; 7069 } 7070 #pragma omp target 7071 #pragma omp teams distribute 7072 for (int i = 0; i < 10; ++i) { 7073 #pragma omp for simd // OK 7074 for (int i = 0; i < 10; ++i) 7075 ; 7076 } 7077 #pragma omp target 7078 #pragma omp teams distribute 7079 for (int i = 0; i < 10; ++i) { 7080 #pragma omp parallel // OK 7081 for (int i = 0; i < 10; ++i) 7082 ; 7083 } 7084 #pragma omp target 7085 #pragma omp teams distribute 7086 for (int i = 0; i < 10; ++i) { 7087 #pragma omp sections // OK 7088 { 7089 bar(); 7090 } 7091 } 7092 #pragma omp target 7093 #pragma omp teams distribute 7094 for (int i = 0; i < 10; ++i) { 7095 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 7096 { 7097 bar(); 7098 } 7099 } 7100 #pragma omp target 7101 #pragma omp teams distribute 7102 for (int i = 0; i < 10; ++i) { 7103 #pragma omp single // OK 7104 { 7105 bar(); 7106 } 7107 } 7108 #pragma omp target 7109 #pragma omp teams distribute 7110 for (int i = 0; i < 10; ++i) { 7111 #pragma omp master // OK 7112 { 7113 bar(); 7114 } 7115 } 7116 #pragma omp target 7117 #pragma omp teams distribute 7118 for (int i = 0; i < 10; ++i) { 7119 #pragma omp critical // OK 7120 { 7121 bar(); 7122 } 7123 } 7124 #pragma omp target 7125 #pragma omp teams distribute 7126 for (int i = 0; i < 10; ++i) { 7127 #pragma omp parallel // OK 7128 { 7129 #pragma omp single 7130 { 7131 bar(); 7132 } 7133 } 7134 } 7135 #pragma omp target 7136 #pragma omp teams distribute 7137 for (int i = 0; i < 10; ++i) { 7138 #pragma omp parallel for // OK 7139 for (int i = 0; i < 10; ++i) 7140 ; 7141 } 7142 #pragma omp target 7143 #pragma omp teams distribute 7144 for (int i = 0; i < 10; ++i) { 7145 #pragma omp parallel for simd // OK 7146 for (int i = 0; i < 10; ++i) 7147 ; 7148 } 7149 #pragma omp target 7150 #pragma omp teams distribute 7151 for (int i = 0; i < 10; ++i) { 7152 #pragma omp parallel sections // OK 7153 { 7154 bar(); 7155 } 7156 } 7157 #pragma omp target 7158 #pragma omp teams distribute 7159 for (int i = 0; i < 10; ++i) { 7160 #pragma omp task // OK 7161 { 7162 bar(); 7163 } 7164 } 7165 #pragma omp target 7166 #pragma omp teams distribute 7167 for (int i = 0; i < 10; ++i) { 7168 #pragma omp taskyield // OK 7169 bar(); 7170 } 7171 #pragma omp target 7172 #pragma omp teams distribute 7173 for (int i = 0; i < 10; ++i) { 7174 #pragma omp barrier // OK 7175 bar(); 7176 } 7177 #pragma omp target 7178 #pragma omp teams distribute 7179 for (int i = 0; i < 10; ++i) { 7180 #pragma omp taskwait // OK 7181 bar(); 7182 } 7183 #pragma omp target 7184 #pragma omp teams distribute 7185 for (int i = 0; i < 10; ++i) { 7186 #pragma omp flush // OK 7187 bar(); 7188 } 7189 #pragma omp target 7190 #pragma omp teams distribute 7191 for (int i = 0; i < 10; ++i) { 7192 #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?}} 7193 bar(); 7194 } 7195 #pragma omp target 7196 #pragma omp teams distribute 7197 for (int i = 0; i < 10; ++i) { 7198 #pragma omp atomic // OK 7199 ++a; 7200 } 7201 #pragma omp target 7202 #pragma omp teams distribute 7203 for (int i = 0; i < 10; ++i) { 7204 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7205 ++a; 7206 } 7207 #pragma omp target 7208 #pragma omp teams distribute 7209 for (int i = 0; i < 10; ++i) { 7210 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7211 ++a; 7212 } 7213 #pragma omp target 7214 #pragma omp teams distribute 7215 for (int i = 0; i < 10; ++i) { 7216 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7217 for (int i = 0; i < 10; ++i) 7218 ; 7219 } 7220 #pragma omp target 7221 #pragma omp teams distribute 7222 for (int i = 0; i < 10; ++i) { 7223 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7224 ++a; 7225 } 7226 #pragma omp target 7227 #pragma omp teams distribute 7228 for (int i = 0; i < 10; ++i) { 7229 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7230 ++a; 7231 } 7232 #pragma omp target 7233 #pragma omp teams distribute 7234 for (int i = 0; i < 10; ++i) { 7235 #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?}} 7236 ++a; 7237 } 7238 #pragma omp target 7239 #pragma omp teams distribute 7240 for (int i = 0; i < 10; ++i) { 7241 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7242 ++a; 7243 } 7244 #pragma omp target 7245 #pragma omp teams distribute 7246 for (int i = 0; i < 10; ++i) { 7247 #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?}} 7248 for (int i = 0; i < 10; ++i) 7249 ++a; 7250 } 7251 #pragma omp target 7252 #pragma omp teams distribute 7253 for (int i = 0; i < 10; ++i) { 7254 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7255 for (int i = 0; i < 10; ++i) 7256 ++a; 7257 } 7258 #pragma omp target 7259 #pragma omp teams distribute 7260 for (int i = 0; i < 10; ++i) { 7261 #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?}} 7262 for (int i = 0; i < 10; ++i) 7263 ++a; 7264 } 7265 #pragma omp target 7266 #pragma omp teams distribute 7267 for (int i = 0; i < 10; ++i) { 7268 #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?}} 7269 for (int i = 0; i < 10; ++i) 7270 ++a; 7271 } 7272 #pragma omp target 7273 #pragma omp teams distribute 7274 for (int i = 0; i < 10; ++i) { 7275 #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?}} 7276 for (int i = 0; i < 10; ++i) 7277 ++a; 7278 } 7279 #pragma omp target 7280 #pragma omp teams distribute 7281 for (int i = 0; i < 10; ++i) { 7282 #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?}} 7283 for (int i = 0; i < 10; ++i) 7284 ++a; 7285 } 7286 #pragma omp target 7287 #pragma omp teams distribute 7288 for (int i = 0; i < 10; ++i) { 7289 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7290 ++a; 7291 } 7292 #pragma omp target 7293 #pragma omp teams distribute 7294 for (int i = 0; i < 10; ++i) { 7295 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7296 for (int i = 0; i < 10; ++i) 7297 ++a; 7298 } 7299 #pragma omp target 7300 #pragma omp teams distribute 7301 for (int i = 0; i < 10; ++i) { 7302 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7303 for (int i = 0; i < 10; ++i) 7304 ++a; 7305 } 7306 #pragma omp target 7307 #pragma omp teams distribute 7308 for (int i = 0; i < 10; ++i) { 7309 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7310 for (int i = 0; i < 10; ++i) 7311 ++a; 7312 } 7313 #pragma omp target 7314 #pragma omp teams distribute 7315 for (int i = 0; i < 10; ++i) { 7316 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7317 for (int i = 0; i < 10; ++i) 7318 ++a; 7319 } 7320 7321 // TEAMS DISTRIBUTE SIMD DIRECTIVE 7322 #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?}} 7323 for (int i = 0; i < 10; ++i) 7324 ; 7325 #pragma omp target 7326 #pragma omp teams distribute simd 7327 for (int i = 0; i < 10; ++i) { 7328 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7329 for (int i = 0; i < 10; ++i) 7330 ; 7331 } 7332 #pragma omp target 7333 #pragma omp teams distribute simd 7334 for (int i = 0; i < 10; ++i) { 7335 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7336 for (int i = 0; i < 10; ++i) 7337 ; 7338 } 7339 #pragma omp target 7340 #pragma omp teams distribute simd 7341 for (int i = 0; i < 10; ++i) { 7342 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7343 for (int i = 0; i < 10; ++i) 7344 ; 7345 } 7346 #pragma omp target 7347 #pragma omp teams distribute simd 7348 for (int i = 0; i < 10; ++i) { 7349 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7350 for (int i = 0; i < 10; ++i) 7351 ; 7352 } 7353 #pragma omp target 7354 #pragma omp teams distribute simd 7355 for (int i = 0; i < 10; ++i) { 7356 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7357 for (int i = 0; i < 10; ++i) 7358 ; 7359 } 7360 #pragma omp target 7361 #pragma omp teams distribute simd 7362 for (int i = 0; i < 10; ++i) { 7363 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7364 for (int i = 0; i < 10; ++i) 7365 ; 7366 } 7367 #pragma omp target 7368 #pragma omp teams distribute simd 7369 for (int i = 0; i < 10; ++i) { 7370 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7371 { 7372 bar(); 7373 } 7374 } 7375 #pragma omp target 7376 #pragma omp teams distribute simd 7377 for (int i = 0; i < 10; ++i) { 7378 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7379 { 7380 bar(); 7381 } 7382 } 7383 #pragma omp target 7384 #pragma omp teams distribute simd 7385 for (int i = 0; i < 10; ++i) { 7386 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7387 { 7388 bar(); 7389 } 7390 } 7391 #pragma omp target 7392 #pragma omp teams distribute simd 7393 for (int i = 0; i < 10; ++i) { 7394 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7395 { 7396 bar(); 7397 } 7398 } 7399 #pragma omp target 7400 #pragma omp teams distribute simd 7401 for (int i = 0; i < 10; ++i) { 7402 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7403 { 7404 bar(); 7405 } 7406 } 7407 #pragma omp target 7408 #pragma omp teams distribute simd 7409 for (int i = 0; i < 10; ++i) { 7410 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7411 { 7412 #pragma omp single 7413 { 7414 bar(); 7415 } 7416 } 7417 } 7418 #pragma omp target 7419 #pragma omp teams distribute simd 7420 for (int i = 0; i < 10; ++i) { 7421 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7422 for (int i = 0; i < 10; ++i) 7423 ; 7424 } 7425 #pragma omp target 7426 #pragma omp teams distribute simd 7427 for (int i = 0; i < 10; ++i) { 7428 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7429 for (int i = 0; i < 10; ++i) 7430 ; 7431 } 7432 #pragma omp target 7433 #pragma omp teams distribute simd 7434 for (int i = 0; i < 10; ++i) { 7435 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7436 { 7437 bar(); 7438 } 7439 } 7440 #pragma omp target 7441 #pragma omp teams distribute simd 7442 for (int i = 0; i < 10; ++i) { 7443 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7444 { 7445 bar(); 7446 } 7447 } 7448 #pragma omp target 7449 #pragma omp teams distribute simd 7450 for (int i = 0; i < 10; ++i) { 7451 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7452 bar(); 7453 } 7454 #pragma omp target 7455 #pragma omp teams distribute simd 7456 for (int i = 0; i < 10; ++i) { 7457 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7458 bar(); 7459 } 7460 #pragma omp target 7461 #pragma omp teams distribute simd 7462 for (int i = 0; i < 10; ++i) { 7463 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7464 bar(); 7465 } 7466 #pragma omp target 7467 #pragma omp teams distribute simd 7468 for (int i = 0; i < 10; ++i) { 7469 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7470 bar(); 7471 } 7472 #pragma omp target 7473 #pragma omp teams distribute simd 7474 for (int i = 0; i < 10; ++i) { 7475 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7476 bar(); 7477 } 7478 #pragma omp target 7479 #pragma omp teams distribute simd 7480 for (int i = 0; i < 10; ++i) { 7481 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7482 ++a; 7483 } 7484 #pragma omp target 7485 #pragma omp teams distribute simd 7486 for (int i = 0; i < 10; ++i) { 7487 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7488 ++a; 7489 } 7490 #pragma omp target 7491 #pragma omp teams distribute simd 7492 for (int i = 0; i < 10; ++i) { 7493 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7494 ++a; 7495 } 7496 #pragma omp target 7497 #pragma omp teams distribute simd 7498 for (int i = 0; i < 10; ++i) { 7499 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7500 for (int i = 0; i < 10; ++i) 7501 ; 7502 } 7503 #pragma omp target 7504 #pragma omp teams distribute simd 7505 for (int i = 0; i < 10; ++i) { 7506 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7507 ++a; 7508 } 7509 #pragma omp target 7510 #pragma omp teams distribute simd 7511 for (int i = 0; i < 10; ++i) { 7512 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7513 ++a; 7514 } 7515 #pragma omp target 7516 #pragma omp teams distribute simd 7517 for (int i = 0; i < 10; ++i) { 7518 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7519 ++a; 7520 } 7521 #pragma omp target 7522 #pragma omp teams distribute simd 7523 for (int i = 0; i < 10; ++i) { 7524 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7525 ++a; 7526 } 7527 #pragma omp target 7528 #pragma omp teams distribute simd 7529 for (int i = 0; i < 10; ++i) { 7530 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7531 for (int i = 0; i < 10; ++i) 7532 ++a; 7533 } 7534 #pragma omp target 7535 #pragma omp teams distribute simd 7536 for (int i = 0; i < 10; ++i) { 7537 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7538 for (int i = 0; i < 10; ++i) 7539 ++a; 7540 } 7541 #pragma omp target 7542 #pragma omp teams distribute simd 7543 for (int i = 0; i < 10; ++i) { 7544 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7545 for (int i = 0; i < 10; ++i) 7546 ++a; 7547 } 7548 #pragma omp target 7549 #pragma omp teams distribute simd 7550 for (int i = 0; i < 10; ++i) { 7551 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7552 for (int i = 0; i < 10; ++i) 7553 ++a; 7554 } 7555 #pragma omp target 7556 #pragma omp teams distribute simd 7557 for (int i = 0; i < 10; ++i) { 7558 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7559 for (int i = 0; i < 10; ++i) 7560 ++a; 7561 } 7562 #pragma omp target 7563 #pragma omp teams distribute simd 7564 for (int i = 0; i < 10; ++i) { 7565 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7566 for (int i = 0; i < 10; ++i) 7567 ++a; 7568 } 7569 #pragma omp target 7570 #pragma omp teams distribute simd 7571 for (int i = 0; i < 10; ++i) { 7572 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7573 ++a; 7574 } 7575 #pragma omp target 7576 #pragma omp teams distribute simd 7577 for (int i = 0; i < 10; ++i) { 7578 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7579 for (int i = 0; i < 10; ++i) 7580 ++a; 7581 } 7582 #pragma omp target 7583 #pragma omp teams distribute simd 7584 for (int i = 0; i < 10; ++i) { 7585 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7586 for (int i = 0; i < 10; ++i) 7587 ++a; 7588 } 7589 #pragma omp target 7590 #pragma omp teams distribute simd 7591 for (int i = 0; i < 10; ++i) { 7592 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7593 for (int i = 0; i < 10; ++i) 7594 ++a; 7595 } 7596 #pragma omp target 7597 #pragma omp teams distribute simd 7598 for (int i = 0; i < 10; ++i) { 7599 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7600 for (int i = 0; i < 10; ++i) 7601 ++a; 7602 } 7603 7604 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 7605 #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?}} 7606 for (int i = 0; i < 10; ++i) 7607 ; 7608 #pragma omp target 7609 #pragma omp teams distribute parallel for simd 7610 for (int i = 0; i < 10; ++i) { 7611 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7612 for (int i = 0; i < 10; ++i) 7613 ; 7614 } 7615 #pragma omp target 7616 #pragma omp teams distribute parallel for simd 7617 for (int i = 0; i < 10; ++i) { 7618 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7619 for (int i = 0; i < 10; ++i) 7620 ; 7621 } 7622 #pragma omp target 7623 #pragma omp teams distribute parallel for simd 7624 for (int i = 0; i < 10; ++i) { 7625 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7626 for (int i = 0; i < 10; ++i) 7627 ; 7628 } 7629 #pragma omp target 7630 #pragma omp teams distribute parallel for simd 7631 for (int i = 0; i < 10; ++i) { 7632 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7633 for (int i = 0; i < 10; ++i) 7634 ; 7635 } 7636 #pragma omp target 7637 #pragma omp teams distribute parallel for simd 7638 for (int i = 0; i < 10; ++i) { 7639 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7640 for (int i = 0; i < 10; ++i) 7641 ; 7642 } 7643 #pragma omp target 7644 #pragma omp teams distribute parallel for simd 7645 for (int i = 0; i < 10; ++i) { 7646 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7647 for (int i = 0; i < 10; ++i) 7648 ; 7649 } 7650 #pragma omp target 7651 #pragma omp teams distribute parallel for simd 7652 for (int i = 0; i < 10; ++i) { 7653 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7654 { 7655 bar(); 7656 } 7657 } 7658 #pragma omp target 7659 #pragma omp teams distribute parallel for simd 7660 for (int i = 0; i < 10; ++i) { 7661 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7662 { 7663 bar(); 7664 } 7665 } 7666 #pragma omp target 7667 #pragma omp teams distribute parallel for simd 7668 for (int i = 0; i < 10; ++i) { 7669 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7670 { 7671 bar(); 7672 } 7673 } 7674 #pragma omp target 7675 #pragma omp teams distribute parallel for simd 7676 for (int i = 0; i < 10; ++i) { 7677 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7678 { 7679 bar(); 7680 } 7681 } 7682 #pragma omp target 7683 #pragma omp teams distribute parallel for simd 7684 for (int i = 0; i < 10; ++i) { 7685 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7686 { 7687 bar(); 7688 } 7689 } 7690 #pragma omp target 7691 #pragma omp teams distribute parallel for simd 7692 for (int i = 0; i < 10; ++i) { 7693 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7694 { 7695 #pragma omp single 7696 { 7697 bar(); 7698 } 7699 } 7700 } 7701 #pragma omp target 7702 #pragma omp teams distribute parallel for simd 7703 for (int i = 0; i < 10; ++i) { 7704 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7705 for (int i = 0; i < 10; ++i) 7706 ; 7707 } 7708 #pragma omp target 7709 #pragma omp teams distribute parallel for simd 7710 for (int i = 0; i < 10; ++i) { 7711 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7712 for (int i = 0; i < 10; ++i) 7713 ; 7714 } 7715 #pragma omp target 7716 #pragma omp teams distribute parallel for simd 7717 for (int i = 0; i < 10; ++i) { 7718 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7719 { 7720 bar(); 7721 } 7722 } 7723 #pragma omp target 7724 #pragma omp teams distribute parallel for simd 7725 for (int i = 0; i < 10; ++i) { 7726 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7727 { 7728 bar(); 7729 } 7730 } 7731 #pragma omp target 7732 #pragma omp teams distribute parallel for simd 7733 for (int i = 0; i < 10; ++i) { 7734 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7735 bar(); 7736 } 7737 #pragma omp target 7738 #pragma omp teams distribute parallel for simd 7739 for (int i = 0; i < 10; ++i) { 7740 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7741 bar(); 7742 } 7743 #pragma omp target 7744 #pragma omp teams distribute parallel for simd 7745 for (int i = 0; i < 10; ++i) { 7746 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7747 bar(); 7748 } 7749 #pragma omp target 7750 #pragma omp teams distribute parallel for simd 7751 for (int i = 0; i < 10; ++i) { 7752 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7753 bar(); 7754 } 7755 #pragma omp target 7756 #pragma omp teams distribute parallel for simd 7757 for (int i = 0; i < 10; ++i) { 7758 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7759 bar(); 7760 } 7761 #pragma omp target 7762 #pragma omp teams distribute parallel for simd 7763 for (int i = 0; i < 10; ++i) { 7764 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7765 ++a; 7766 } 7767 #pragma omp target 7768 #pragma omp teams distribute parallel for simd 7769 for (int i = 0; i < 10; ++i) { 7770 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7771 ++a; 7772 } 7773 #pragma omp target 7774 #pragma omp teams distribute parallel for simd 7775 for (int i = 0; i < 10; ++i) { 7776 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7777 ++a; 7778 } 7779 #pragma omp target 7780 #pragma omp teams distribute parallel for simd 7781 for (int i = 0; i < 10; ++i) { 7782 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7783 for (int i = 0; i < 10; ++i) 7784 ; 7785 } 7786 #pragma omp target 7787 #pragma omp teams distribute parallel for simd 7788 for (int i = 0; i < 10; ++i) { 7789 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7790 ++a; 7791 } 7792 #pragma omp target 7793 #pragma omp teams distribute parallel for simd 7794 for (int i = 0; i < 10; ++i) { 7795 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7796 ++a; 7797 } 7798 #pragma omp target 7799 #pragma omp teams distribute parallel for simd 7800 for (int i = 0; i < 10; ++i) { 7801 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7802 ++a; 7803 } 7804 #pragma omp target 7805 #pragma omp teams distribute parallel for simd 7806 for (int i = 0; i < 10; ++i) { 7807 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7808 ++a; 7809 } 7810 #pragma omp target 7811 #pragma omp teams distribute parallel for simd 7812 for (int i = 0; i < 10; ++i) { 7813 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7814 for (int i = 0; i < 10; ++i) 7815 ++a; 7816 } 7817 #pragma omp target 7818 #pragma omp teams distribute parallel for simd 7819 for (int i = 0; i < 10; ++i) { 7820 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7821 for (int i = 0; i < 10; ++i) 7822 ++a; 7823 } 7824 #pragma omp target 7825 #pragma omp teams distribute parallel for simd 7826 for (int i = 0; i < 10; ++i) { 7827 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7828 for (int i = 0; i < 10; ++i) 7829 ++a; 7830 } 7831 #pragma omp target 7832 #pragma omp teams distribute parallel for simd 7833 for (int i = 0; i < 10; ++i) { 7834 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7835 for (int i = 0; i < 10; ++i) 7836 ++a; 7837 } 7838 #pragma omp target 7839 #pragma omp teams distribute parallel for simd 7840 for (int i = 0; i < 10; ++i) { 7841 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7842 for (int i = 0; i < 10; ++i) 7843 ++a; 7844 } 7845 #pragma omp target 7846 #pragma omp teams distribute parallel for simd 7847 for (int i = 0; i < 10; ++i) { 7848 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7849 for (int i = 0; i < 10; ++i) 7850 ++a; 7851 } 7852 #pragma omp target 7853 #pragma omp teams distribute parallel for simd 7854 for (int i = 0; i < 10; ++i) { 7855 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7856 ++a; 7857 } 7858 #pragma omp target 7859 #pragma omp teams distribute parallel for simd 7860 for (int i = 0; i < 10; ++i) { 7861 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7862 for (int i = 0; i < 10; ++i) 7863 ++a; 7864 } 7865 #pragma omp target 7866 #pragma omp teams distribute parallel for simd 7867 for (int i = 0; i < 10; ++i) { 7868 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7869 for (int i = 0; i < 10; ++i) 7870 ++a; 7871 } 7872 #pragma omp target 7873 #pragma omp teams distribute parallel for simd 7874 for (int i = 0; i < 10; ++i) { 7875 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7876 for (int i = 0; i < 10; ++i) 7877 ++a; 7878 } 7879 #pragma omp target 7880 #pragma omp teams distribute parallel for simd 7881 for (int i = 0; i < 10; ++i) { 7882 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7883 for (int i = 0; i < 10; ++i) 7884 ++a; 7885 } 7886 7887 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 7888 #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?}} 7889 for (int i = 0; i < 10; ++i) 7890 ; 7891 #pragma omp target 7892 #pragma omp teams distribute parallel for 7893 for (int i = 0; i < 10; ++i) { 7894 #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?}} 7895 for (int i = 0; i < 10; ++i) 7896 ; 7897 } 7898 #pragma omp target 7899 #pragma omp teams distribute parallel for 7900 for (int i = 0; i < 10; ++i) { 7901 #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?}} 7902 for (int i = 0; i < 10; ++i) 7903 ; 7904 } 7905 #pragma omp target 7906 #pragma omp teams distribute parallel for 7907 for (int i = 0; i < 10; ++i) { 7908 #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?}} 7909 for (int i = 0; i < 10; ++i) 7910 ; 7911 } 7912 #pragma omp target 7913 #pragma omp teams distribute parallel for 7914 for (int i = 0; i < 10; ++i) { 7915 #pragma omp simd // OK 7916 for (int i = 0; i < 10; ++i) 7917 ; 7918 } 7919 #pragma omp target 7920 #pragma omp teams distribute parallel for 7921 for (int i = 0; i < 10; ++i) { 7922 #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?}} 7923 for (int i = 0; i < 10; ++i) 7924 ; 7925 } 7926 #pragma omp target 7927 #pragma omp teams distribute parallel for 7928 for (int i = 0; i < 10; ++i) { 7929 #pragma omp parallel // OK 7930 for (int i = 0; i < 10; ++i) 7931 ; 7932 } 7933 #pragma omp target 7934 #pragma omp teams distribute parallel for 7935 for (int i = 0; i < 10; ++i) { 7936 #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?}} 7937 { 7938 bar(); 7939 } 7940 } 7941 #pragma omp target 7942 #pragma omp teams distribute parallel for 7943 for (int i = 0; i < 10; ++i) { 7944 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 7945 { 7946 bar(); 7947 } 7948 } 7949 #pragma omp target 7950 #pragma omp teams distribute parallel for 7951 for (int i = 0; i < 10; ++i) { 7952 #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?}} 7953 { 7954 bar(); 7955 } 7956 } 7957 #pragma omp target 7958 #pragma omp teams distribute parallel for 7959 for (int i = 0; i < 10; ++i) { 7960 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7961 { 7962 bar(); 7963 } 7964 } 7965 #pragma omp target 7966 #pragma omp teams distribute parallel for 7967 for (int i = 0; i < 10; ++i) { 7968 #pragma omp critical // OK 7969 { 7970 bar(); 7971 } 7972 } 7973 #pragma omp target 7974 #pragma omp teams distribute parallel for 7975 for (int i = 0; i < 10; ++i) { 7976 #pragma omp parallel // OK 7977 { 7978 #pragma omp single 7979 { 7980 bar(); 7981 } 7982 } 7983 } 7984 #pragma omp target 7985 #pragma omp teams distribute parallel for 7986 for (int i = 0; i < 10; ++i) { 7987 #pragma omp parallel for // OK 7988 for (int i = 0; i < 10; ++i) 7989 ; 7990 } 7991 #pragma omp target 7992 #pragma omp teams distribute parallel for 7993 for (int i = 0; i < 10; ++i) { 7994 #pragma omp parallel for simd // OK 7995 for (int i = 0; i < 10; ++i) 7996 ; 7997 } 7998 #pragma omp target 7999 #pragma omp teams distribute parallel for 8000 for (int i = 0; i < 10; ++i) { 8001 #pragma omp parallel sections // OK 8002 { 8003 bar(); 8004 } 8005 } 8006 #pragma omp target 8007 #pragma omp teams distribute parallel for 8008 for (int i = 0; i < 10; ++i) { 8009 #pragma omp task // OK 8010 { 8011 bar(); 8012 } 8013 } 8014 #pragma omp target 8015 #pragma omp teams distribute parallel for 8016 for (int i = 0; i < 10; ++i) { 8017 #pragma omp taskyield // OK 8018 bar(); 8019 } 8020 #pragma omp target 8021 #pragma omp teams distribute parallel for 8022 for (int i = 0; i < 10; ++i) { 8023 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8024 bar(); 8025 } 8026 #pragma omp target 8027 #pragma omp teams distribute parallel for 8028 for (int i = 0; i < 10; ++i) { 8029 #pragma omp taskwait // OK 8030 bar(); 8031 } 8032 #pragma omp target 8033 #pragma omp teams distribute parallel for 8034 for (int i = 0; i < 10; ++i) { 8035 #pragma omp flush // OK 8036 bar(); 8037 } 8038 #pragma omp target 8039 #pragma omp teams distribute parallel for 8040 for (int i = 0; i < 10; ++i) { 8041 #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?}} 8042 bar(); 8043 } 8044 #pragma omp target 8045 #pragma omp teams distribute parallel for 8046 for (int i = 0; i < 10; ++i) { 8047 #pragma omp atomic // OK 8048 ++a; 8049 } 8050 #pragma omp target 8051 #pragma omp teams distribute parallel for 8052 for (int i = 0; i < 10; ++i) { 8053 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 8054 ++a; 8055 } 8056 #pragma omp target 8057 #pragma omp teams distribute parallel for 8058 for (int i = 0; i < 10; ++i) { 8059 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 8060 ++a; 8061 } 8062 #pragma omp target 8063 #pragma omp teams distribute parallel for 8064 for (int i = 0; i < 10; ++i) { 8065 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 8066 for (int i = 0; i < 10; ++i) 8067 ; 8068 } 8069 #pragma omp target 8070 #pragma omp teams distribute parallel for 8071 for (int i = 0; i < 10; ++i) { 8072 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 8073 ++a; 8074 } 8075 #pragma omp target 8076 #pragma omp teams distribute parallel for 8077 for (int i = 0; i < 10; ++i) { 8078 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 8079 ++a; 8080 } 8081 #pragma omp target 8082 #pragma omp teams distribute parallel for 8083 for (int i = 0; i < 10; ++i) { 8084 #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?}} 8085 ++a; 8086 } 8087 #pragma omp target 8088 #pragma omp teams distribute parallel for 8089 for (int i = 0; i < 10; ++i) { 8090 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 8091 ++a; 8092 } 8093 #pragma omp target 8094 #pragma omp teams distribute parallel for 8095 for (int i = 0; i < 10; ++i) { 8096 #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?}} 8097 for (int i = 0; i < 10; ++i) 8098 ++a; 8099 } 8100 #pragma omp target 8101 #pragma omp teams distribute parallel for 8102 for (int i = 0; i < 10; ++i) { 8103 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 8104 for (int i = 0; i < 10; ++i) 8105 ++a; 8106 } 8107 #pragma omp target 8108 #pragma omp teams distribute parallel for 8109 for (int i = 0; i < 10; ++i) { 8110 #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?}} 8111 for (int i = 0; i < 10; ++i) 8112 ++a; 8113 } 8114 #pragma omp target 8115 #pragma omp teams distribute parallel for 8116 for (int i = 0; i < 10; ++i) { 8117 #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?}} 8118 for (int i = 0; i < 10; ++i) 8119 ++a; 8120 } 8121 #pragma omp target 8122 #pragma omp teams distribute parallel for 8123 for (int i = 0; i < 10; ++i) { 8124 #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?}} 8125 for (int i = 0; i < 10; ++i) 8126 ++a; 8127 } 8128 #pragma omp target 8129 #pragma omp teams distribute parallel for 8130 for (int i = 0; i < 10; ++i) { 8131 #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?}} 8132 for (int i = 0; i < 10; ++i) 8133 ++a; 8134 } 8135 #pragma omp target 8136 #pragma omp teams distribute parallel for 8137 for (int i = 0; i < 10; ++i) { 8138 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 8139 ++a; 8140 } 8141 #pragma omp target 8142 #pragma omp teams distribute parallel for 8143 for (int i = 0; i < 10; ++i) { 8144 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 8145 for (int i = 0; i < 10; ++i) 8146 ++a; 8147 } 8148 #pragma omp target 8149 #pragma omp teams distribute parallel for 8150 for (int i = 0; i < 10; ++i) { 8151 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 8152 for (int i = 0; i < 10; ++i) 8153 ++a; 8154 } 8155 #pragma omp target 8156 #pragma omp teams distribute parallel for 8157 for (int i = 0; i < 10; ++i) { 8158 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 8159 for (int i = 0; i < 10; ++i) 8160 ++a; 8161 } 8162 #pragma omp target 8163 #pragma omp teams distribute parallel for 8164 for (int i = 0; i < 10; ++i) { 8165 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 8166 for (int i = 0; i < 10; ++i) 8167 ++a; 8168 } 8169 8170 // TARGET TEAMS DIRECTIVE 8171 #pragma omp target teams 8172 #pragma omp parallel 8173 bar(); 8174 #pragma omp target teams 8175 #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?}} 8176 for (int i = 0; i < 10; ++i) 8177 ; 8178 #pragma omp target teams 8179 #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?}} 8180 for (int i = 0; i < 10; ++i) 8181 ; 8182 #pragma omp target teams 8183 #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?}} 8184 for (int i = 0; i < 10; ++i) 8185 ; 8186 #pragma omp target teams 8187 #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?}} 8188 { 8189 bar(); 8190 } 8191 #pragma omp target teams 8192 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 8193 { 8194 bar(); 8195 } 8196 #pragma omp target teams 8197 #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?}} 8198 bar(); 8199 8200 #pragma omp target teams 8201 #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?}} 8202 { 8203 bar(); 8204 } 8205 #pragma omp target teams 8206 #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?}} 8207 { 8208 bar(); 8209 } 8210 #pragma omp target teams 8211 #pragma omp parallel for 8212 for (int i = 0; i < 10; ++i) 8213 ; 8214 #pragma omp target teams 8215 #pragma omp parallel for simd 8216 for (int i = 0; i < 10; ++i) 8217 ; 8218 #pragma omp target teams 8219 #pragma omp parallel sections 8220 { 8221 bar(); 8222 } 8223 #pragma omp target teams 8224 #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?}} 8225 { 8226 bar(); 8227 } 8228 #pragma omp target teams 8229 { 8230 #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?}} 8231 bar(); 8232 } 8233 #pragma omp target teams 8234 { 8235 #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?}} 8236 bar(); 8237 } 8238 #pragma omp target teams 8239 { 8240 #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?}} 8241 bar(); 8242 } 8243 #pragma omp target teams 8244 { 8245 #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?}} 8246 bar(); 8247 } 8248 #pragma omp target teams 8249 { 8250 #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?}} 8251 bar(); 8252 } 8253 #pragma omp target teams 8254 { 8255 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 8256 ++a; 8257 } 8258 #pragma omp target teams 8259 { 8260 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 8261 ++a; 8262 } 8263 #pragma omp target teams 8264 { 8265 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 8266 ++a; 8267 } 8268 #pragma omp target teams 8269 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8270 for (int i = 0; i < 10; ++i) 8271 ; 8272 #pragma omp target teams 8273 { 8274 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8275 } 8276 #pragma omp target teams 8277 { 8278 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8279 } 8280 #pragma omp target teams 8281 { 8282 #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?}} 8283 ++a; 8284 } 8285 #pragma omp target teams 8286 { 8287 #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?}} 8288 for (int i = 0; i < 10; ++i) 8289 ++a; 8290 } 8291 #pragma omp target teams 8292 #pragma omp distribute 8293 for (int i = 0; i < 10; ++i) 8294 ; 8295 #pragma omp target teams 8296 { 8297 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 8298 ++a; 8299 } 8300 #pragma omp target teams 8301 #pragma omp distribute parallel for 8302 for (int i = 0; i < 10; ++i) 8303 ; 8304 #pragma omp target teams 8305 { 8306 #pragma omp distribute parallel for 8307 for (int i = 0; i < 10; ++i) 8308 ; 8309 #pragma omp distribute parallel for 8310 for (int j = 0; j < 10; ++j) 8311 ; 8312 } 8313 #pragma omp target teams 8314 { 8315 #pragma omp distribute parallel for simd 8316 for (int i = 0; i < 10; ++i) 8317 ; 8318 #pragma omp distribute parallel for simd 8319 for (int j = 0; j < 10; ++j) 8320 ; 8321 } 8322 #pragma omp target teams 8323 { 8324 #pragma omp distribute simd 8325 for (int i = 0; i < 10; ++i) 8326 ; 8327 #pragma omp distribute simd 8328 for (int j = 0; j < 10; ++j) 8329 ; 8330 } 8331 #pragma omp target teams 8332 { 8333 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 8334 for (int i = 0; i < 10; ++i) 8335 ; 8336 } 8337 #pragma omp target teams 8338 { 8339 #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?}} 8340 for (int i = 0; i < 10; ++i) 8341 ; 8342 } 8343 #pragma omp target teams 8344 { 8345 #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?}} 8346 for (int i = 0; i < 10; ++i) 8347 ; 8348 } 8349 #pragma omp target teams 8350 { 8351 #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?}} 8352 for (int i = 0; i < 10; ++i) 8353 ; 8354 } 8355 #pragma omp target teams 8356 { 8357 #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?}} 8358 for (int i = 0; i < 10; ++i) 8359 ; 8360 } 8361 #pragma omp target teams 8362 { 8363 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 8364 a++; 8365 } 8366 #pragma omp target teams 8367 { 8368 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 8369 for (int i = 0; i < 10; ++i) 8370 ; 8371 } 8372 #pragma omp target teams 8373 { 8374 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8375 for (int i = 0; i < 10; ++i) 8376 ; 8377 } 8378 #pragma omp target teams 8379 { 8380 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 8381 for (int i = 0; i < 10; ++i) 8382 ; 8383 } 8384 #pragma omp target teams 8385 { 8386 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 8387 for (int i = 0; i < 10; ++i) 8388 ; 8389 } 8390 8391 // TARGET TEAMS DISTRIBUTE DIRECTIVE 8392 #pragma omp target teams distribute // OK 8393 for (int i = 0; i < 10; ++i) 8394 ; 8395 #pragma omp target teams distribute 8396 for (int i = 0; i < 10; ++i) { 8397 #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?}} 8398 for (int i = 0; i < 10; ++i) 8399 ; 8400 } 8401 #pragma omp target teams distribute 8402 for (int i = 0; i < 10; ++i) { 8403 #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?}} 8404 for (int i = 0; i < 10; ++i) 8405 ; 8406 } 8407 #pragma omp target teams distribute 8408 for (int i = 0; i < 10; ++i) { 8409 #pragma omp for // OK 8410 for (int i = 0; i < 10; ++i) 8411 ; 8412 } 8413 #pragma omp target teams distribute 8414 for (int i = 0; i < 10; ++i) { 8415 #pragma omp simd // OK 8416 for (int i = 0; i < 10; ++i) 8417 ; 8418 } 8419 #pragma omp target teams distribute 8420 for (int i = 0; i < 10; ++i) { 8421 #pragma omp for simd // OK 8422 for (int i = 0; i < 10; ++i) 8423 ; 8424 } 8425 #pragma omp target teams distribute 8426 for (int i = 0; i < 10; ++i) { 8427 #pragma omp parallel // OK 8428 for (int i = 0; i < 10; ++i) 8429 ; 8430 } 8431 #pragma omp target teams distribute 8432 for (int i = 0; i < 10; ++i) { 8433 #pragma omp sections // OK 8434 { 8435 bar(); 8436 } 8437 } 8438 #pragma omp target teams distribute 8439 for (int i = 0; i < 10; ++i) { 8440 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8441 { 8442 bar(); 8443 } 8444 } 8445 #pragma omp target teams distribute 8446 for (int i = 0; i < 10; ++i) { 8447 #pragma omp single // OK 8448 { 8449 bar(); 8450 } 8451 } 8452 #pragma omp target teams distribute 8453 for (int i = 0; i < 10; ++i) { 8454 #pragma omp master // OK 8455 { 8456 bar(); 8457 } 8458 } 8459 #pragma omp target teams distribute 8460 for (int i = 0; i < 10; ++i) { 8461 #pragma omp critical // OK 8462 { 8463 bar(); 8464 } 8465 } 8466 #pragma omp target teams distribute 8467 for (int i = 0; i < 10; ++i) { 8468 #pragma omp parallel // OK 8469 { 8470 #pragma omp single 8471 { 8472 bar(); 8473 } 8474 } 8475 } 8476 #pragma omp target teams distribute 8477 for (int i = 0; i < 10; ++i) { 8478 #pragma omp parallel for // OK 8479 for (int i = 0; i < 10; ++i) 8480 ; 8481 } 8482 #pragma omp target teams distribute 8483 for (int i = 0; i < 10; ++i) { 8484 #pragma omp parallel for simd // OK 8485 for (int i = 0; i < 10; ++i) 8486 ; 8487 } 8488 #pragma omp target teams distribute 8489 for (int i = 0; i < 10; ++i) { 8490 #pragma omp parallel sections // OK 8491 { 8492 bar(); 8493 } 8494 } 8495 #pragma omp target teams distribute 8496 for (int i = 0; i < 10; ++i) { 8497 #pragma omp task // OK 8498 { 8499 bar(); 8500 } 8501 } 8502 #pragma omp target teams distribute 8503 for (int i = 0; i < 10; ++i) { 8504 #pragma omp taskyield // OK 8505 bar(); 8506 } 8507 #pragma omp target teams distribute 8508 for (int i = 0; i < 10; ++i) { 8509 #pragma omp barrier // OK 8510 bar(); 8511 } 8512 #pragma omp target teams distribute 8513 for (int i = 0; i < 10; ++i) { 8514 #pragma omp taskwait // OK 8515 bar(); 8516 } 8517 #pragma omp target teams distribute 8518 for (int i = 0; i < 10; ++i) { 8519 #pragma omp flush // OK 8520 bar(); 8521 } 8522 #pragma omp target teams distribute 8523 for (int i = 0; i < 10; ++i) { 8524 #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?}} 8525 bar(); 8526 } 8527 #pragma omp target teams distribute 8528 for (int i = 0; i < 10; ++i) { 8529 #pragma omp atomic // OK 8530 ++a; 8531 } 8532 #pragma omp target teams distribute 8533 for (int i = 0; i < 10; ++i) { 8534 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8535 ++a; 8536 } 8537 #pragma omp target teams distribute 8538 for (int i = 0; i < 10; ++i) { 8539 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8540 ++a; 8541 } 8542 #pragma omp target teams distribute 8543 for (int i = 0; i < 10; ++i) { 8544 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8545 for (int i = 0; i < 10; ++i) 8546 ; 8547 } 8548 #pragma omp target teams distribute 8549 for (int i = 0; i < 10; ++i) { 8550 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8551 ++a; 8552 } 8553 #pragma omp target teams distribute 8554 for (int i = 0; i < 10; ++i) { 8555 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8556 ++a; 8557 } 8558 #pragma omp target teams distribute 8559 for (int i = 0; i < 10; ++i) { 8560 #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?}} 8561 ++a; 8562 } 8563 #pragma omp target teams distribute 8564 for (int i = 0; i < 10; ++i) { 8565 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8566 ++a; 8567 } 8568 #pragma omp target teams distribute 8569 for (int i = 0; i < 10; ++i) { 8570 #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?}} 8571 for (int i = 0; i < 10; ++i) 8572 ++a; 8573 } 8574 #pragma omp target teams distribute 8575 for (int i = 0; i < 10; ++i) { 8576 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8577 for (int i = 0; i < 10; ++i) 8578 ++a; 8579 } 8580 #pragma omp target teams distribute 8581 for (int i = 0; i < 10; ++i) { 8582 #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?}} 8583 for (int i = 0; i < 10; ++i) 8584 ++a; 8585 } 8586 #pragma omp target teams distribute 8587 for (int i = 0; i < 10; ++i) { 8588 #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?}} 8589 for (int i = 0; i < 10; ++i) 8590 ++a; 8591 } 8592 #pragma omp target teams distribute 8593 for (int i = 0; i < 10; ++i) { 8594 #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?}} 8595 for (int i = 0; i < 10; ++i) 8596 ++a; 8597 } 8598 #pragma omp target teams distribute 8599 for (int i = 0; i < 10; ++i) { 8600 #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?}} 8601 for (int i = 0; i < 10; ++i) 8602 ; 8603 } 8604 #pragma omp target teams distribute 8605 for (int i = 0; i < 10; ++i) { 8606 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8607 a++; 8608 } 8609 #pragma omp target teams distribute 8610 for (int i = 0; i < 10; ++i) { 8611 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8612 for (int i = 0; i < 10; ++i) 8613 ; 8614 } 8615 #pragma omp target teams distribute 8616 for (int i = 0; i < 10; ++i) { 8617 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8618 for (int i = 0; i < 10; ++i) 8619 ; 8620 } 8621 #pragma omp target teams distribute 8622 for (int i = 0; i < 10; ++i) { 8623 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8624 for (int i = 0; i < 10; ++i) 8625 ; 8626 } 8627 #pragma omp target teams distribute 8628 for (int i = 0; i < 10; ++i) { 8629 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8630 for (int i = 0; i < 10; ++i) 8631 ; 8632 } 8633 8634 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8635 #pragma omp target teams distribute parallel for // OK 8636 for (int i = 0; i < 10; ++i) 8637 ; 8638 #pragma omp target teams distribute parallel for 8639 for (int i = 0; i < 10; ++i) { 8640 #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?}} 8641 for (int i = 0; i < 10; ++i) 8642 ; 8643 } 8644 #pragma omp target teams distribute parallel for 8645 for (int i = 0; i < 10; ++i) { 8646 #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?}} 8647 for (int i = 0; i < 10; ++i) 8648 ; 8649 } 8650 #pragma omp target teams distribute parallel for 8651 for (int i = 0; i < 10; ++i) { 8652 #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?}} 8653 for (int i = 0; i < 10; ++i) 8654 ; 8655 } 8656 #pragma omp target teams distribute parallel for 8657 for (int i = 0; i < 10; ++i) { 8658 #pragma omp simd // OK 8659 for (int i = 0; i < 10; ++i) 8660 ; 8661 } 8662 #pragma omp target teams distribute parallel for 8663 for (int i = 0; i < 10; ++i) { 8664 #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?}} 8665 for (int i = 0; i < 10; ++i) 8666 ; 8667 } 8668 #pragma omp target teams distribute parallel for 8669 for (int i = 0; i < 10; ++i) { 8670 #pragma omp parallel // OK 8671 for (int i = 0; i < 10; ++i) 8672 ; 8673 } 8674 #pragma omp target teams distribute parallel for 8675 for (int i = 0; i < 10; ++i) { 8676 #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?}} 8677 { 8678 bar(); 8679 } 8680 } 8681 #pragma omp target teams distribute parallel for 8682 for (int i = 0; i < 10; ++i) { 8683 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 8684 { 8685 bar(); 8686 } 8687 } 8688 #pragma omp target teams distribute parallel for 8689 for (int i = 0; i < 10; ++i) { 8690 #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?}} 8691 { 8692 bar(); 8693 } 8694 } 8695 #pragma omp target teams distribute parallel for 8696 for (int i = 0; i < 10; ++i) { 8697 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8698 { 8699 bar(); 8700 } 8701 } 8702 #pragma omp target teams distribute parallel for 8703 for (int i = 0; i < 10; ++i) { 8704 #pragma omp critical // OK 8705 { 8706 bar(); 8707 } 8708 } 8709 #pragma omp target teams distribute parallel for 8710 for (int i = 0; i < 10; ++i) { 8711 #pragma omp parallel // OK 8712 { 8713 #pragma omp single 8714 { 8715 bar(); 8716 } 8717 } 8718 } 8719 #pragma omp target teams distribute parallel for 8720 for (int i = 0; i < 10; ++i) { 8721 #pragma omp parallel for // OK 8722 for (int i = 0; i < 10; ++i) 8723 ; 8724 } 8725 #pragma omp target teams distribute parallel for 8726 for (int i = 0; i < 10; ++i) { 8727 #pragma omp parallel for simd // OK 8728 for (int i = 0; i < 10; ++i) 8729 ; 8730 } 8731 #pragma omp target teams distribute parallel for 8732 for (int i = 0; i < 10; ++i) { 8733 #pragma omp parallel sections // OK 8734 { 8735 bar(); 8736 } 8737 } 8738 #pragma omp target teams distribute parallel for 8739 for (int i = 0; i < 10; ++i) { 8740 #pragma omp task // OK 8741 { 8742 bar(); 8743 } 8744 } 8745 #pragma omp target teams distribute parallel for 8746 for (int i = 0; i < 10; ++i) { 8747 #pragma omp taskyield // OK 8748 bar(); 8749 } 8750 #pragma omp target teams distribute parallel for 8751 for (int i = 0; i < 10; ++i) { 8752 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8753 bar(); 8754 } 8755 #pragma omp target teams distribute parallel for 8756 for (int i = 0; i < 10; ++i) { 8757 #pragma omp taskwait // OK 8758 bar(); 8759 } 8760 #pragma omp target teams distribute parallel for 8761 for (int i = 0; i < 10; ++i) { 8762 #pragma omp flush // OK 8763 bar(); 8764 } 8765 #pragma omp target teams distribute parallel for 8766 for (int i = 0; i < 10; ++i) { 8767 #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?}} 8768 bar(); 8769 } 8770 #pragma omp target teams distribute parallel for 8771 for (int i = 0; i < 10; ++i) { 8772 #pragma omp atomic // OK 8773 ++a; 8774 } 8775 #pragma omp target teams distribute parallel for 8776 for (int i = 0; i < 10; ++i) { 8777 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8778 ++a; 8779 } 8780 #pragma omp target teams distribute parallel for 8781 for (int i = 0; i < 10; ++i) { 8782 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8783 ++a; 8784 } 8785 #pragma omp target teams distribute parallel for 8786 for (int i = 0; i < 10; ++i) { 8787 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8788 for (int i = 0; i < 10; ++i) 8789 ; 8790 } 8791 #pragma omp target teams distribute parallel for 8792 for (int i = 0; i < 10; ++i) { 8793 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8794 ++a; 8795 } 8796 #pragma omp target teams distribute parallel for 8797 for (int i = 0; i < 10; ++i) { 8798 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8799 ++a; 8800 } 8801 #pragma omp target teams distribute parallel for 8802 for (int i = 0; i < 10; ++i) { 8803 #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?}} 8804 ++a; 8805 } 8806 #pragma omp target teams distribute parallel for 8807 for (int i = 0; i < 10; ++i) { 8808 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8809 ++a; 8810 } 8811 #pragma omp target teams distribute parallel for 8812 for (int i = 0; i < 10; ++i) { 8813 #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?}} 8814 for (int i = 0; i < 10; ++i) 8815 ++a; 8816 } 8817 #pragma omp target teams distribute parallel for 8818 for (int i = 0; i < 10; ++i) { 8819 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8820 for (int i = 0; i < 10; ++i) 8821 ++a; 8822 } 8823 #pragma omp target teams distribute parallel for 8824 for (int i = 0; i < 10; ++i) { 8825 #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?}} 8826 for (int i = 0; i < 10; ++i) 8827 ++a; 8828 } 8829 #pragma omp target teams distribute parallel for 8830 for (int i = 0; i < 10; ++i) { 8831 #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?}} 8832 for (int i = 0; i < 10; ++i) 8833 ++a; 8834 } 8835 #pragma omp target teams distribute parallel for 8836 for (int i = 0; i < 10; ++i) { 8837 #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?}} 8838 for (int i = 0; i < 10; ++i) 8839 ++a; 8840 } 8841 #pragma omp target teams distribute parallel for 8842 for (int i = 0; i < 10; ++i) { 8843 #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?}} 8844 for (int i = 0; i < 10; ++i) 8845 ; 8846 } 8847 #pragma omp target teams distribute parallel for 8848 for (int i = 0; i < 10; ++i) { 8849 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8850 a++; 8851 } 8852 #pragma omp target teams distribute parallel for 8853 for (int i = 0; i < 10; ++i) { 8854 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8855 for (int i = 0; i < 10; ++i) 8856 ; 8857 } 8858 #pragma omp target teams distribute parallel for 8859 for (int i = 0; i < 10; ++i) { 8860 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8861 for (int i = 0; i < 10; ++i) 8862 ; 8863 } 8864 #pragma omp target teams distribute parallel for 8865 for (int i = 0; i < 10; ++i) { 8866 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8867 for (int i = 0; i < 10; ++i) 8868 ; 8869 } 8870 #pragma omp target teams distribute parallel for 8871 for (int i = 0; i < 10; ++i) { 8872 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8873 for (int i = 0; i < 10; ++i) 8874 ; 8875 } 8876 8877 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 8878 #pragma omp target teams distribute parallel for simd // OK 8879 for (int i = 0; i < 10; ++i) 8880 ; 8881 #pragma omp target teams distribute parallel for simd 8882 for (int i = 0; i < 10; ++i) { 8883 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8884 for (int i = 0; i < 10; ++i) 8885 ; 8886 } 8887 #pragma omp target teams distribute parallel for simd 8888 for (int i = 0; i < 10; ++i) { 8889 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8890 for (int i = 0; i < 10; ++i) 8891 ; 8892 } 8893 #pragma omp target teams distribute parallel for simd 8894 for (int i = 0; i < 10; ++i) { 8895 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8896 for (int i = 0; i < 10; ++i) 8897 ; 8898 } 8899 #pragma omp target teams distribute parallel for simd 8900 for (int i = 0; i < 10; ++i) { 8901 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8902 for (int i = 0; i < 10; ++i) 8903 ; 8904 } 8905 #pragma omp target teams distribute parallel for simd 8906 for (int i = 0; i < 10; ++i) { 8907 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8908 for (int i = 0; i < 10; ++i) 8909 ; 8910 } 8911 #pragma omp target teams distribute parallel for simd 8912 for (int i = 0; i < 10; ++i) { 8913 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8914 for (int i = 0; i < 10; ++i) 8915 ; 8916 } 8917 #pragma omp target teams distribute parallel for simd 8918 for (int i = 0; i < 10; ++i) { 8919 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8920 { 8921 bar(); 8922 } 8923 } 8924 #pragma omp target teams distribute parallel for simd 8925 for (int i = 0; i < 10; ++i) { 8926 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8927 { 8928 bar(); 8929 } 8930 } 8931 #pragma omp target teams distribute parallel for simd 8932 for (int i = 0; i < 10; ++i) { 8933 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8934 { 8935 bar(); 8936 } 8937 } 8938 #pragma omp target teams distribute parallel for simd 8939 for (int i = 0; i < 10; ++i) { 8940 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8941 { 8942 bar(); 8943 } 8944 } 8945 #pragma omp target teams distribute parallel for simd 8946 for (int i = 0; i < 10; ++i) { 8947 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8948 { 8949 bar(); 8950 } 8951 } 8952 #pragma omp target teams distribute parallel for simd 8953 for (int i = 0; i < 10; ++i) { 8954 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8955 { 8956 #pragma omp single 8957 { 8958 bar(); 8959 } 8960 } 8961 } 8962 #pragma omp target teams distribute parallel for simd 8963 for (int i = 0; i < 10; ++i) { 8964 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8965 for (int i = 0; i < 10; ++i) 8966 ; 8967 } 8968 #pragma omp target teams distribute parallel for simd 8969 for (int i = 0; i < 10; ++i) { 8970 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8971 for (int i = 0; i < 10; ++i) 8972 ; 8973 } 8974 #pragma omp target teams distribute parallel for simd 8975 for (int i = 0; i < 10; ++i) { 8976 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8977 { 8978 bar(); 8979 } 8980 } 8981 #pragma omp target teams distribute parallel for simd 8982 for (int i = 0; i < 10; ++i) { 8983 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8984 { 8985 bar(); 8986 } 8987 } 8988 #pragma omp target teams distribute parallel for simd 8989 for (int i = 0; i < 10; ++i) { 8990 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8991 bar(); 8992 } 8993 #pragma omp target teams distribute parallel for simd 8994 for (int i = 0; i < 10; ++i) { 8995 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8996 bar(); 8997 } 8998 #pragma omp target teams distribute parallel for simd 8999 for (int i = 0; i < 10; ++i) { 9000 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9001 bar(); 9002 } 9003 #pragma omp target teams distribute parallel for simd 9004 for (int i = 0; i < 10; ++i) { 9005 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9006 bar(); 9007 } 9008 #pragma omp target teams distribute parallel for simd 9009 for (int i = 0; i < 10; ++i) { 9010 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9011 bar(); 9012 } 9013 #pragma omp target teams distribute parallel for simd 9014 for (int i = 0; i < 10; ++i) { 9015 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 9016 ++a; 9017 } 9018 #pragma omp target teams distribute parallel for simd 9019 for (int i = 0; i < 10; ++i) { 9020 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9021 ++a; 9022 } 9023 #pragma omp target teams distribute parallel for simd 9024 for (int i = 0; i < 10; ++i) { 9025 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9026 ++a; 9027 } 9028 #pragma omp target teams distribute parallel for simd 9029 for (int i = 0; i < 10; ++i) { 9030 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9031 for (int i = 0; i < 10; ++i) 9032 ; 9033 } 9034 #pragma omp target teams distribute parallel for simd 9035 for (int i = 0; i < 10; ++i) { 9036 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9037 ++a; 9038 } 9039 #pragma omp target teams distribute parallel for simd 9040 for (int i = 0; i < 10; ++i) { 9041 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9042 ++a; 9043 } 9044 #pragma omp target teams distribute parallel for simd 9045 for (int i = 0; i < 10; ++i) { 9046 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9047 ++a; 9048 } 9049 #pragma omp target teams distribute parallel for simd 9050 for (int i = 0; i < 10; ++i) { 9051 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9052 ++a; 9053 } 9054 #pragma omp target teams distribute parallel for simd 9055 for (int i = 0; i < 10; ++i) { 9056 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9057 for (int i = 0; i < 10; ++i) 9058 ++a; 9059 } 9060 #pragma omp target teams distribute parallel for simd 9061 for (int i = 0; i < 10; ++i) { 9062 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9063 for (int i = 0; i < 10; ++i) 9064 ++a; 9065 } 9066 #pragma omp target teams distribute parallel for simd 9067 for (int i = 0; i < 10; ++i) { 9068 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9069 for (int i = 0; i < 10; ++i) 9070 ++a; 9071 } 9072 #pragma omp target teams distribute parallel for simd 9073 for (int i = 0; i < 10; ++i) { 9074 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9075 for (int i = 0; i < 10; ++i) 9076 ++a; 9077 } 9078 #pragma omp target teams distribute parallel for simd 9079 for (int i = 0; i < 10; ++i) { 9080 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9081 for (int i = 0; i < 10; ++i) 9082 ++a; 9083 } 9084 #pragma omp target teams distribute parallel for simd 9085 for (int i = 0; i < 10; ++i) { 9086 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9087 for (int i = 0; i < 10; ++i) 9088 ; 9089 } 9090 #pragma omp target teams distribute parallel for simd 9091 for (int i = 0; i < 10; ++i) { 9092 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9093 a++; 9094 } 9095 #pragma omp target teams distribute parallel for simd 9096 for (int i = 0; i < 10; ++i) { 9097 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9098 for (int i = 0; i < 10; ++i) 9099 ; 9100 } 9101 #pragma omp target teams distribute parallel for simd 9102 for (int i = 0; i < 10; ++i) { 9103 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9104 for (int i = 0; i < 10; ++i) 9105 ; 9106 } 9107 #pragma omp target teams distribute parallel for simd 9108 for (int i = 0; i < 10; ++i) { 9109 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9110 for (int i = 0; i < 10; ++i) 9111 ; 9112 } 9113 #pragma omp target teams distribute parallel for simd 9114 for (int i = 0; i < 10; ++i) { 9115 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9116 for (int i = 0; i < 10; ++i) 9117 ; 9118 } 9119 9120 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 9121 #pragma omp target teams distribute simd // OK 9122 for (int i = 0; i < 10; ++i) 9123 ; 9124 #pragma omp target teams distribute simd 9125 for (int i = 0; i < 10; ++i) { 9126 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9127 for (int i = 0; i < 10; ++i) 9128 ; 9129 } 9130 #pragma omp target teams distribute simd 9131 for (int i = 0; i < 10; ++i) { 9132 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9133 for (int i = 0; i < 10; ++i) 9134 ; 9135 } 9136 #pragma omp target teams distribute simd 9137 for (int i = 0; i < 10; ++i) { 9138 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9139 for (int i = 0; i < 10; ++i) 9140 ; 9141 } 9142 #pragma omp target teams distribute simd 9143 for (int i = 0; i < 10; ++i) { 9144 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9145 for (int i = 0; i < 10; ++i) 9146 ; 9147 } 9148 #pragma omp target teams distribute simd 9149 for (int i = 0; i < 10; ++i) { 9150 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9151 for (int i = 0; i < 10; ++i) 9152 ; 9153 } 9154 #pragma omp target teams distribute simd 9155 for (int i = 0; i < 10; ++i) { 9156 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9157 for (int i = 0; i < 10; ++i) 9158 ; 9159 } 9160 #pragma omp target teams distribute simd 9161 for (int i = 0; i < 10; ++i) { 9162 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9163 { 9164 bar(); 9165 } 9166 } 9167 #pragma omp target teams distribute simd 9168 for (int i = 0; i < 10; ++i) { 9169 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9170 { 9171 bar(); 9172 } 9173 } 9174 #pragma omp target teams distribute simd 9175 for (int i = 0; i < 10; ++i) { 9176 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9177 { 9178 bar(); 9179 } 9180 } 9181 #pragma omp target teams distribute simd 9182 for (int i = 0; i < 10; ++i) { 9183 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9184 { 9185 bar(); 9186 } 9187 } 9188 #pragma omp target teams distribute simd 9189 for (int i = 0; i < 10; ++i) { 9190 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9191 { 9192 bar(); 9193 } 9194 } 9195 #pragma omp target teams distribute simd 9196 for (int i = 0; i < 10; ++i) { 9197 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9198 { 9199 #pragma omp single 9200 { 9201 bar(); 9202 } 9203 } 9204 } 9205 #pragma omp target teams distribute simd 9206 for (int i = 0; i < 10; ++i) { 9207 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9208 for (int i = 0; i < 10; ++i) 9209 ; 9210 } 9211 #pragma omp target teams distribute simd 9212 for (int i = 0; i < 10; ++i) { 9213 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9214 for (int i = 0; i < 10; ++i) 9215 ; 9216 } 9217 #pragma omp target teams distribute simd 9218 for (int i = 0; i < 10; ++i) { 9219 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9220 { 9221 bar(); 9222 } 9223 } 9224 #pragma omp target teams distribute simd 9225 for (int i = 0; i < 10; ++i) { 9226 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9227 { 9228 bar(); 9229 } 9230 } 9231 #pragma omp target teams distribute simd 9232 for (int i = 0; i < 10; ++i) { 9233 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9234 bar(); 9235 } 9236 #pragma omp target teams distribute simd 9237 for (int i = 0; i < 10; ++i) { 9238 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9239 bar(); 9240 } 9241 #pragma omp target teams distribute simd 9242 for (int i = 0; i < 10; ++i) { 9243 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9244 bar(); 9245 } 9246 #pragma omp target teams distribute simd 9247 for (int i = 0; i < 10; ++i) { 9248 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9249 bar(); 9250 } 9251 #pragma omp target teams distribute simd 9252 for (int i = 0; i < 10; ++i) { 9253 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9254 bar(); 9255 } 9256 #pragma omp target teams distribute simd 9257 for (int i = 0; i < 10; ++i) { 9258 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 9259 ++a; 9260 } 9261 #pragma omp target teams distribute simd 9262 for (int i = 0; i < 10; ++i) { 9263 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9264 ++a; 9265 } 9266 #pragma omp target teams distribute simd 9267 for (int i = 0; i < 10; ++i) { 9268 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9269 ++a; 9270 } 9271 #pragma omp target teams distribute simd 9272 for (int i = 0; i < 10; ++i) { 9273 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9274 for (int i = 0; i < 10; ++i) 9275 ; 9276 } 9277 #pragma omp target teams distribute simd 9278 for (int i = 0; i < 10; ++i) { 9279 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9280 ++a; 9281 } 9282 #pragma omp target teams distribute simd 9283 for (int i = 0; i < 10; ++i) { 9284 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9285 ++a; 9286 } 9287 #pragma omp target teams distribute simd 9288 for (int i = 0; i < 10; ++i) { 9289 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9290 ++a; 9291 } 9292 #pragma omp target teams distribute simd 9293 for (int i = 0; i < 10; ++i) { 9294 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9295 ++a; 9296 } 9297 #pragma omp target teams distribute simd 9298 for (int i = 0; i < 10; ++i) { 9299 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9300 for (int i = 0; i < 10; ++i) 9301 ++a; 9302 } 9303 #pragma omp target teams distribute simd 9304 for (int i = 0; i < 10; ++i) { 9305 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9306 for (int i = 0; i < 10; ++i) 9307 ++a; 9308 } 9309 #pragma omp target teams distribute simd 9310 for (int i = 0; i < 10; ++i) { 9311 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9312 for (int i = 0; i < 10; ++i) 9313 ++a; 9314 } 9315 #pragma omp target teams distribute simd 9316 for (int i = 0; i < 10; ++i) { 9317 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9318 for (int i = 0; i < 10; ++i) 9319 ++a; 9320 } 9321 #pragma omp target teams distribute simd 9322 for (int i = 0; i < 10; ++i) { 9323 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9324 for (int i = 0; i < 10; ++i) 9325 ++a; 9326 } 9327 #pragma omp target teams distribute simd 9328 for (int i = 0; i < 10; ++i) { 9329 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9330 for (int i = 0; i < 10; ++i) 9331 ; 9332 } 9333 #pragma omp target teams distribute simd 9334 for (int i = 0; i < 10; ++i) { 9335 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9336 a++; 9337 } 9338 #pragma omp target teams distribute simd 9339 for (int i = 0; i < 10; ++i) { 9340 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9341 for (int i = 0; i < 10; ++i) 9342 ; 9343 } 9344 #pragma omp target teams distribute simd 9345 for (int i = 0; i < 10; ++i) { 9346 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9347 for (int i = 0; i < 10; ++i) 9348 ; 9349 } 9350 #pragma omp target teams distribute simd 9351 for (int i = 0; i < 10; ++i) { 9352 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9353 for (int i = 0; i < 10; ++i) 9354 ; 9355 } 9356 #pragma omp target teams distribute simd 9357 for (int i = 0; i < 10; ++i) { 9358 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9359 for (int i = 0; i < 10; ++i) 9360 ; 9361 } 9362 9363 } 9364 9365 void foo() { 9366 int a = 0; 9367 // PARALLEL DIRECTIVE 9368 #pragma omp parallel 9369 #pragma omp for 9370 for (int i = 0; i < 10; ++i) 9371 ; 9372 #pragma omp parallel 9373 #pragma omp simd 9374 for (int i = 0; i < 10; ++i) 9375 ; 9376 #pragma omp parallel 9377 #pragma omp for simd 9378 for (int i = 0; i < 10; ++i) 9379 ; 9380 #pragma omp parallel 9381 #pragma omp sections 9382 { 9383 bar(); 9384 } 9385 #pragma omp parallel 9386 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 9387 { 9388 bar(); 9389 } 9390 #pragma omp parallel 9391 #pragma omp sections 9392 { 9393 bar(); 9394 } 9395 #pragma omp parallel 9396 #pragma omp single 9397 bar(); 9398 #pragma omp parallel 9399 #pragma omp master 9400 bar(); 9401 #pragma omp parallel master 9402 bar(); 9403 #pragma omp parallel 9404 #pragma omp critical 9405 bar(); 9406 #pragma omp parallel 9407 #pragma omp parallel for 9408 for (int i = 0; i < 10; ++i) 9409 ; 9410 #pragma omp parallel 9411 #pragma omp parallel for simd 9412 for (int i = 0; i < 10; ++i) 9413 ; 9414 #pragma omp parallel 9415 #pragma omp parallel sections 9416 { 9417 bar(); 9418 } 9419 #pragma omp parallel 9420 #pragma omp task 9421 { 9422 bar(); 9423 } 9424 #pragma omp parallel 9425 { 9426 #pragma omp taskyield 9427 bar(); 9428 } 9429 #pragma omp parallel 9430 { 9431 #pragma omp barrier 9432 bar(); 9433 } 9434 #pragma omp parallel 9435 { 9436 #pragma omp taskwait 9437 bar(); 9438 } 9439 #pragma omp parallel 9440 { 9441 #pragma omp flush 9442 bar(); 9443 } 9444 #pragma omp parallel 9445 { 9446 #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?}} 9447 bar(); 9448 } 9449 #pragma omp parallel 9450 { 9451 #pragma omp atomic 9452 ++a; 9453 } 9454 #pragma omp parallel 9455 { 9456 #pragma omp target 9457 ++a; 9458 } 9459 #pragma omp parallel 9460 { 9461 #pragma omp target parallel 9462 ++a; 9463 } 9464 #pragma omp parallel 9465 #pragma omp target parallel for 9466 for (int i = 0; i < 10; ++i) 9467 ; 9468 #pragma omp parallel 9469 { 9470 #pragma omp target enter data map(to: a) 9471 ++a; 9472 } 9473 #pragma omp parallel 9474 { 9475 #pragma omp target exit data map(from: a) 9476 ++a; 9477 } 9478 #pragma omp parallel 9479 { 9480 #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?}} 9481 ++a; 9482 } 9483 #pragma omp parallel 9484 { 9485 #pragma omp taskloop 9486 for (int i = 0; i < 10; ++i) 9487 ++a; 9488 } 9489 #pragma omp parallel 9490 { 9491 #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?}} 9492 for (int i = 0; i < 10; ++i) 9493 ; 9494 } 9495 #pragma omp parallel 9496 { 9497 #pragma omp target update to(a) 9498 a++; 9499 } 9500 #pragma omp parallel 9501 { 9502 #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?}} 9503 for (int i = 0; i < 10; ++i) 9504 ; 9505 } 9506 #pragma omp parallel 9507 { 9508 #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?}} 9509 for (int i = 0; i < 10; ++i) 9510 ; 9511 } 9512 #pragma omp parallel 9513 { 9514 #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?}} 9515 for (int i = 0; i < 10; ++i) 9516 ; 9517 } 9518 #pragma omp parallel 9519 { 9520 #pragma omp target simd // OK 9521 for (int i = 0; i < 10; ++i) 9522 ; 9523 } 9524 #pragma omp parallel 9525 { 9526 #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?}} 9527 for (int i = 0; i < 10; ++i) 9528 ; 9529 } 9530 #pragma omp parallel 9531 { 9532 #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?}} 9533 for (int i = 0; i < 10; ++i) 9534 ; 9535 } 9536 #pragma omp parallel 9537 { 9538 #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?}} 9539 for (int i = 0; i < 10; ++i) 9540 ; 9541 } 9542 #pragma omp parallel 9543 { 9544 #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?}} 9545 for (int i = 0; i < 10; ++i) 9546 ; 9547 } 9548 #pragma omp parallel 9549 { 9550 #pragma omp target teams // OK 9551 a++; 9552 } 9553 #pragma omp parallel 9554 { 9555 #pragma omp target teams distribute // OK 9556 for (int i = 0; i < 10; ++i) 9557 ; 9558 } 9559 #pragma omp parallel 9560 { 9561 #pragma omp target teams distribute parallel for // OK 9562 for (int i = 0; i < 10; ++i) 9563 ; 9564 } 9565 #pragma omp parallel 9566 { 9567 #pragma omp target teams distribute parallel for simd // OK 9568 for (int i = 0; i < 10; ++i) 9569 ; 9570 } 9571 #pragma omp parallel 9572 { 9573 #pragma omp target teams distribute simd // OK 9574 for (int i = 0; i < 10; ++i) 9575 ; 9576 } 9577 9578 // SIMD DIRECTIVE 9579 #pragma omp simd 9580 for (int i = 0; i < 10; ++i) { 9581 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9582 for (int i = 0; i < 10; ++i) 9583 ; 9584 } 9585 #pragma omp simd 9586 for (int i = 0; i < 10; ++i) { 9587 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9588 for (int i = 0; i < 10; ++i) 9589 ; 9590 } 9591 #pragma omp simd 9592 for (int i = 0; i < 10; ++i) { 9593 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9594 for (int i = 0; i < 10; ++i) 9595 ; 9596 } 9597 #pragma omp simd 9598 for (int i = 0; i < 10; ++i) { 9599 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9600 for (int i = 0; i < 10; ++i) 9601 ; 9602 } 9603 #pragma omp simd 9604 for (int i = 0; i < 10; ++i) { 9605 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9606 { 9607 bar(); 9608 } 9609 } 9610 #pragma omp simd 9611 for (int i = 0; i < 10; ++i) { 9612 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9613 { 9614 bar(); 9615 } 9616 } 9617 #pragma omp simd 9618 for (int i = 0; i < 10; ++i) { 9619 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9620 bar(); 9621 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9622 bar(); 9623 } 9624 #pragma omp simd 9625 for (int i = 0; i < 10; ++i) { 9626 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9627 bar(); 9628 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9629 bar(); 9630 } 9631 #pragma omp simd 9632 for (int i = 0; i < 10; ++i) { 9633 #pragma omp parallel for // 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 simd 9638 for (int i = 0; i < 10; ++i) { 9639 #pragma omp parallel for simd // 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 simd 9644 for (int i = 0; i < 10; ++i) { 9645 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9646 { 9647 bar(); 9648 } 9649 } 9650 #pragma omp simd 9651 for (int i = 0; i < 10; ++i) { 9652 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9653 { 9654 bar(); 9655 } 9656 } 9657 #pragma omp simd 9658 for (int i = 0; i < 10; ++i) { 9659 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9660 bar(); 9661 } 9662 #pragma omp simd 9663 for (int i = 0; i < 10; ++i) { 9664 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9665 bar(); 9666 } 9667 #pragma omp simd 9668 for (int i = 0; i < 10; ++i) { 9669 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9670 bar(); 9671 } 9672 #pragma omp simd 9673 for (int i = 0; i < 10; ++i) { 9674 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9675 bar(); 9676 } 9677 #pragma omp simd 9678 for (int i = 0; i < 10; ++i) { 9679 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9680 bar(); 9681 } 9682 #pragma omp simd 9683 for (int i = 0; i < 10; ++i) { 9684 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9685 ++a; 9686 } 9687 #pragma omp simd 9688 for (int i = 0; i < 10; ++i) { 9689 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9690 ++a; 9691 } 9692 #pragma omp simd 9693 for (int i = 0; i < 10; ++i) { 9694 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9695 ++a; 9696 } 9697 #pragma omp simd 9698 for (int i = 0; i < 10; ++i) { 9699 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9700 for (int i = 0; i < 10; ++i) 9701 ; 9702 } 9703 #pragma omp simd 9704 for (int i = 0; i < 10; ++i) { 9705 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9706 ++a; 9707 } 9708 #pragma omp simd 9709 for (int i = 0; i < 10; ++i) { 9710 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9711 ++a; 9712 } 9713 #pragma omp simd 9714 for (int i = 0; i < 10; ++i) { 9715 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9716 ++a; 9717 } 9718 #pragma omp simd 9719 for (int i = 0; i < 10; ++i) { 9720 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9721 for (int i = 0; i < 10; ++i) 9722 ++a; 9723 } 9724 #pragma omp simd 9725 for (int i = 0; i < 10; ++i) { 9726 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9727 for (int j = 0; j < 10; ++j) 9728 ; 9729 } 9730 #pragma omp simd 9731 for (int i = 0; i < 10; ++i) { 9732 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9733 a++; 9734 } 9735 #pragma omp simd 9736 for (int i = 0; i < 10; ++i) { 9737 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9738 for (int j = 0; j < 10; ++j) 9739 ; 9740 } 9741 #pragma omp simd 9742 for (int i = 0; i < 10; ++i) { 9743 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9744 for (int j = 0; j < 10; ++j) 9745 ; 9746 } 9747 #pragma omp simd 9748 for (int i = 0; i < 10; ++i) { 9749 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9750 for (int j = 0; j < 10; ++j) 9751 ; 9752 } 9753 #pragma omp simd 9754 for (int i = 0; i < 10; ++i) { 9755 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9756 for (int j = 0; j < 10; ++j) 9757 ; 9758 } 9759 #pragma omp simd 9760 for (int i = 0; i < 10; ++i) { 9761 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9762 for (int j = 0; j < 10; ++j) 9763 ; 9764 } 9765 #pragma omp simd 9766 for (int i = 0; i < 10; ++i) { 9767 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9768 for (int j = 0; j < 10; ++j) 9769 ; 9770 } 9771 #pragma omp simd 9772 for (int i = 0; i < 10; ++i) { 9773 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9774 for (int j = 0; j < 10; ++j) 9775 ; 9776 } 9777 #pragma omp simd 9778 for (int i = 0; i < 10; ++i) { 9779 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9780 for (int j = 0; j < 10; ++j) 9781 ; 9782 } 9783 #pragma omp simd 9784 for (int i = 0; i < 10; ++i) { 9785 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9786 a++; 9787 } 9788 #pragma omp simd 9789 for (int i = 0; i < 10; ++i) { 9790 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9791 for (int j = 0; j < 10; ++j) 9792 ; 9793 } 9794 #pragma omp simd 9795 for (int i = 0; i < 10; ++i) { 9796 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9797 for (int j = 0; j < 10; ++j) 9798 ; 9799 } 9800 #pragma omp simd 9801 for (int i = 0; i < 10; ++i) { 9802 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9803 for (int j = 0; j < 10; ++j) 9804 ; 9805 } 9806 #pragma omp simd 9807 for (int i = 0; i < 10; ++i) { 9808 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9809 for (int j = 0; j < 10; ++j) 9810 ; 9811 } 9812 9813 // FOR DIRECTIVE 9814 #pragma omp for 9815 for (int i = 0; i < 10; ++i) { 9816 #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?}} 9817 for (int i = 0; i < 10; ++i) 9818 ; 9819 } 9820 #pragma omp for 9821 for (int i = 0; i < 10; ++i) { 9822 #pragma omp simd 9823 for (int i = 0; i < 10; ++i) 9824 ; 9825 } 9826 #pragma omp for 9827 for (int i = 0; i < 10; ++i) { 9828 #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?}} 9829 for (int i = 0; i < 10; ++i) 9830 ; 9831 } 9832 #pragma omp for 9833 for (int i = 0; i < 10; ++i) { 9834 #pragma omp parallel 9835 for (int i = 0; i < 10; ++i) 9836 ; 9837 } 9838 #pragma omp for 9839 for (int i = 0; i < 10; ++i) { 9840 #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?}} 9841 { 9842 bar(); 9843 } 9844 } 9845 #pragma omp for 9846 for (int i = 0; i < 10; ++i) { 9847 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 9848 { 9849 bar(); 9850 } 9851 } 9852 #pragma omp for 9853 for (int i = 0; i < 10; ++i) { 9854 #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?}} 9855 bar(); 9856 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 9857 bar(); 9858 #pragma omp critical 9859 bar(); 9860 } 9861 #pragma omp for 9862 for (int i = 0; i < 10; ++i) { 9863 #pragma omp parallel 9864 { 9865 #pragma omp single // OK 9866 { 9867 bar(); 9868 } 9869 #pragma omp for // OK 9870 for (int i = 0; i < 10; ++i) 9871 ; 9872 #pragma omp for simd // OK 9873 for (int i = 0; i < 10; ++i) 9874 ; 9875 #pragma omp sections // OK 9876 { 9877 bar(); 9878 } 9879 } 9880 } 9881 #pragma omp for 9882 for (int i = 0; i < 10; ++i) { 9883 #pragma omp parallel for 9884 for (int i = 0; i < 10; ++i) 9885 ; 9886 } 9887 #pragma omp for 9888 for (int i = 0; i < 10; ++i) { 9889 #pragma omp parallel for simd 9890 for (int i = 0; i < 10; ++i) 9891 ; 9892 } 9893 #pragma omp for 9894 for (int i = 0; i < 10; ++i) { 9895 #pragma omp parallel sections 9896 { 9897 bar(); 9898 } 9899 } 9900 #pragma omp for 9901 for (int i = 0; i < 10; ++i) { 9902 #pragma omp task 9903 { 9904 bar(); 9905 } 9906 } 9907 #pragma omp for 9908 for (int i = 0; i < 10; ++i) { 9909 #pragma omp taskyield 9910 bar(); 9911 } 9912 #pragma omp for 9913 for (int i = 0; i < 10; ++i) { 9914 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 9915 bar(); 9916 } 9917 #pragma omp for 9918 for (int i = 0; i < 10; ++i) { 9919 #pragma omp taskwait 9920 bar(); 9921 } 9922 #pragma omp for 9923 for (int i = 0; i < 10; ++i) { 9924 #pragma omp flush 9925 bar(); 9926 } 9927 #pragma omp for 9928 for (int i = 0; i < 10; ++i) { 9929 #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?}} 9930 bar(); 9931 } 9932 #pragma omp for ordered 9933 for (int i = 0; i < 10; ++i) { 9934 #pragma omp ordered // OK 9935 bar(); 9936 } 9937 #pragma omp for 9938 for (int i = 0; i < 10; ++i) { 9939 #pragma omp atomic 9940 ++a; 9941 } 9942 #pragma omp for 9943 for (int i = 0; i < 10; ++i) { 9944 #pragma omp target 9945 ++a; 9946 } 9947 #pragma omp for 9948 for (int i = 0; i < 10; ++i) { 9949 #pragma omp target parallel 9950 ++a; 9951 } 9952 #pragma omp for 9953 for (int i = 0; i < 10; ++i) { 9954 #pragma omp target parallel for 9955 for (int i = 0; i < 10; ++i) 9956 ; 9957 } 9958 #pragma omp for 9959 for (int i = 0; i < 10; ++i) { 9960 #pragma omp target enter data map(to: a) 9961 ++a; 9962 } 9963 #pragma omp for 9964 for (int i = 0; i < 10; ++i) { 9965 #pragma omp target exit data map(from: a) 9966 ++a; 9967 } 9968 #pragma omp for 9969 for (int i = 0; i < 10; ++i) { 9970 #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?}} 9971 ++a; 9972 } 9973 #pragma omp for 9974 for (int i = 0; i < 10; ++i) { 9975 #pragma omp taskloop 9976 for (int i = 0; i < 10; ++i) 9977 ++a; 9978 } 9979 #pragma omp for 9980 for (int i = 0; i < 10; ++i) { 9981 #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?}} 9982 for (int j = 0; j < 10; ++j) 9983 ; 9984 } 9985 #pragma omp for 9986 for (int i = 0; i < 10; ++i) { 9987 #pragma omp target update to(a) 9988 ++a; 9989 } 9990 #pragma omp for 9991 for (int i = 0; i < 10; ++i) { 9992 #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?}} 9993 for (int j = 0; j < 10; ++j) 9994 ; 9995 } 9996 #pragma omp for 9997 for (int i = 0; i < 10; ++i) { 9998 #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?}} 9999 for (int j = 0; j < 10; ++j) 10000 ; 10001 } 10002 #pragma omp for 10003 for (int i = 0; i < 10; ++i) { 10004 #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?}} 10005 for (int j = 0; j < 10; ++j) 10006 ; 10007 } 10008 #pragma omp for 10009 for (int i = 0; i < 10; ++i) { 10010 #pragma omp target simd // OK 10011 for (int j = 0; j < 10; ++j) 10012 ; 10013 } 10014 #pragma omp for 10015 for (int i = 0; i < 10; ++i) { 10016 #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?}} 10017 for (int j = 0; j < 10; ++j) 10018 ; 10019 } 10020 #pragma omp for 10021 for (int i = 0; i < 10; ++i) { 10022 #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?}} 10023 for (int j = 0; j < 10; ++j) 10024 ; 10025 } 10026 #pragma omp for 10027 for (int i = 0; i < 10; ++i) { 10028 #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?}} 10029 for (int j = 0; j < 10; ++j) 10030 ; 10031 } 10032 #pragma omp for 10033 for (int i = 0; i < 10; ++i) { 10034 #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?}} 10035 for (int j = 0; j < 10; ++j) 10036 ; 10037 } 10038 #pragma omp for 10039 for (int i = 0; i < 10; ++i) { 10040 #pragma omp target teams // OK 10041 a++; 10042 } 10043 #pragma omp for 10044 for (int i = 0; i < 10; ++i) { 10045 #pragma omp target teams distribute // OK 10046 for (int j = 0; j < 10; ++j) 10047 ; 10048 } 10049 #pragma omp for 10050 for (int i = 0; i < 10; ++i) { 10051 #pragma omp target teams distribute parallel for // OK 10052 for (int j = 0; j < 10; ++j) 10053 ; 10054 } 10055 #pragma omp for 10056 for (int i = 0; i < 10; ++i) { 10057 #pragma omp target teams distribute parallel for simd // OK 10058 for (int j = 0; j < 10; ++j) 10059 ; 10060 } 10061 #pragma omp for 10062 for (int i = 0; i < 10; ++i) { 10063 #pragma omp target teams distribute simd // OK 10064 for (int j = 0; j < 10; ++j) 10065 ; 10066 } 10067 10068 // FOR SIMD DIRECTIVE 10069 #pragma omp for simd 10070 for (int i = 0; i < 10; ++i) { 10071 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10072 for (int i = 0; i < 10; ++i) 10073 ; 10074 } 10075 #pragma omp for simd 10076 for (int i = 0; i < 10; ++i) { 10077 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10078 for (int i = 0; i < 10; ++i) 10079 ; 10080 } 10081 #pragma omp for simd 10082 for (int i = 0; i < 10; ++i) { 10083 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10084 for (int i = 0; i < 10; ++i) 10085 ; 10086 } 10087 #pragma omp for simd 10088 for (int i = 0; i < 10; ++i) { 10089 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10090 for (int i = 0; i < 10; ++i) 10091 ; 10092 } 10093 #pragma omp for simd 10094 for (int i = 0; i < 10; ++i) { 10095 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10096 { 10097 bar(); 10098 } 10099 } 10100 #pragma omp for simd 10101 for (int i = 0; i < 10; ++i) { 10102 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10103 { 10104 bar(); 10105 } 10106 } 10107 #pragma omp for simd 10108 for (int i = 0; i < 10; ++i) { 10109 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10110 bar(); 10111 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10112 bar(); 10113 } 10114 #pragma omp for simd 10115 for (int i = 0; i < 10; ++i) { 10116 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10117 bar(); 10118 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10119 bar(); 10120 } 10121 #pragma omp for simd 10122 for (int i = 0; i < 10; ++i) { 10123 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10124 for (int i = 0; i < 10; ++i) 10125 ; 10126 } 10127 #pragma omp for simd 10128 for (int i = 0; i < 10; ++i) { 10129 #pragma omp parallel for simd // 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 for simd 10134 for (int i = 0; i < 10; ++i) { 10135 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10136 { 10137 bar(); 10138 } 10139 } 10140 #pragma omp for simd 10141 for (int i = 0; i < 10; ++i) { 10142 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10143 { 10144 bar(); 10145 } 10146 } 10147 #pragma omp for simd 10148 for (int i = 0; i < 10; ++i) { 10149 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10150 bar(); 10151 } 10152 #pragma omp for simd 10153 for (int i = 0; i < 10; ++i) { 10154 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10155 bar(); 10156 } 10157 #pragma omp for simd 10158 for (int i = 0; i < 10; ++i) { 10159 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10160 bar(); 10161 } 10162 #pragma omp for simd 10163 for (int i = 0; i < 10; ++i) { 10164 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10165 bar(); 10166 } 10167 #pragma omp for simd 10168 for (int i = 0; i < 10; ++i) { 10169 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10170 bar(); 10171 } 10172 #pragma omp for simd 10173 for (int i = 0; i < 10; ++i) { 10174 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 10175 ++a; 10176 } 10177 #pragma omp for simd 10178 for (int i = 0; i < 10; ++i) { 10179 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10180 ++a; 10181 } 10182 #pragma omp for simd 10183 for (int i = 0; i < 10; ++i) { 10184 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10185 ++a; 10186 } 10187 #pragma omp for simd 10188 for (int i = 0; i < 10; ++i) { 10189 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10190 for (int i = 0; i < 10; ++i) 10191 ; 10192 } 10193 #pragma omp for simd 10194 for (int i = 0; i < 10; ++i) { 10195 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10196 ++a; 10197 } 10198 #pragma omp for simd 10199 for (int i = 0; i < 10; ++i) { 10200 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10201 ++a; 10202 } 10203 #pragma omp for simd 10204 for (int i = 0; i < 10; ++i) { 10205 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10206 ++a; 10207 } 10208 #pragma omp for simd 10209 for (int i = 0; i < 10; ++i) { 10210 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10211 for (int i = 0; i < 10; ++i) 10212 ++a; 10213 } 10214 #pragma omp for simd 10215 for (int i = 0; i < 10; ++i) { 10216 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10217 for (int j = 0; j < 10; ++j) 10218 ; 10219 } 10220 #pragma omp for simd 10221 for (int i = 0; i < 10; ++i) { 10222 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10223 ++a; 10224 } 10225 #pragma omp for simd 10226 for (int i = 0; i < 10; ++i) { 10227 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10228 for (int j = 0; j < 10; ++j) 10229 ; 10230 } 10231 #pragma omp for simd 10232 for (int i = 0; i < 10; ++i) { 10233 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10234 for (int j = 0; j < 10; ++j) 10235 ; 10236 } 10237 #pragma omp for simd 10238 for (int i = 0; i < 10; ++i) { 10239 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10240 for (int j = 0; j < 10; ++j) 10241 ; 10242 } 10243 #pragma omp for simd 10244 for (int i = 0; i < 10; ++i) { 10245 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10246 for (int j = 0; j < 10; ++j) 10247 ; 10248 } 10249 #pragma omp for simd 10250 for (int i = 0; i < 10; ++i) { 10251 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10252 for (int j = 0; j < 10; ++j) 10253 ; 10254 } 10255 #pragma omp for simd 10256 for (int i = 0; i < 10; ++i) { 10257 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10258 for (int j = 0; j < 10; ++j) 10259 ; 10260 } 10261 #pragma omp for simd 10262 for (int i = 0; i < 10; ++i) { 10263 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10264 for (int j = 0; j < 10; ++j) 10265 ; 10266 } 10267 #pragma omp for simd 10268 for (int i = 0; i < 10; ++i) { 10269 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10270 for (int j = 0; j < 10; ++j) 10271 ; 10272 } 10273 #pragma omp for simd 10274 for (int i = 0; i < 10; ++i) { 10275 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10276 a++; 10277 } 10278 #pragma omp for simd 10279 for (int i = 0; i < 10; ++i) { 10280 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10281 for (int j = 0; j < 10; ++j) 10282 ; 10283 } 10284 #pragma omp for simd 10285 for (int i = 0; i < 10; ++i) { 10286 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10287 for (int j = 0; j < 10; ++j) 10288 ; 10289 } 10290 #pragma omp for simd 10291 for (int i = 0; i < 10; ++i) { 10292 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10293 for (int j = 0; j < 10; ++j) 10294 ; 10295 } 10296 #pragma omp for simd 10297 for (int i = 0; i < 10; ++i) { 10298 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10299 for (int j = 0; j < 10; ++j) 10300 ; 10301 } 10302 10303 // SECTIONS DIRECTIVE 10304 #pragma omp sections 10305 { 10306 #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?}} 10307 for (int i = 0; i < 10; ++i) 10308 ; 10309 } 10310 #pragma omp sections 10311 { 10312 #pragma omp simd 10313 for (int i = 0; i < 10; ++i) 10314 ; 10315 } 10316 #pragma omp sections 10317 { 10318 #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?}} 10319 for (int i = 0; i < 10; ++i) 10320 ; 10321 } 10322 #pragma omp sections 10323 { 10324 #pragma omp parallel 10325 for (int i = 0; i < 10; ++i) 10326 ; 10327 } 10328 #pragma omp sections 10329 { 10330 #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?}} 10331 { 10332 bar(); 10333 } 10334 } 10335 #pragma omp sections 10336 { 10337 #pragma omp section 10338 { 10339 bar(); 10340 } 10341 } 10342 #pragma omp sections 10343 { 10344 #pragma omp critical 10345 bar(); 10346 #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?}} 10347 bar(); 10348 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 10349 bar(); 10350 } 10351 #pragma omp sections 10352 { 10353 #pragma omp parallel 10354 { 10355 #pragma omp single // OK 10356 { 10357 bar(); 10358 } 10359 #pragma omp for // OK 10360 for (int i = 0; i < 10; ++i) 10361 ; 10362 #pragma omp for simd // OK 10363 for (int i = 0; i < 10; ++i) 10364 ; 10365 #pragma omp sections // OK 10366 { 10367 bar(); 10368 } 10369 } 10370 } 10371 #pragma omp sections 10372 { 10373 #pragma omp parallel for 10374 for (int i = 0; i < 10; ++i) 10375 ; 10376 } 10377 #pragma omp sections 10378 { 10379 #pragma omp parallel for simd 10380 for (int i = 0; i < 10; ++i) 10381 ; 10382 } 10383 #pragma omp sections 10384 { 10385 #pragma omp parallel sections 10386 { 10387 bar(); 10388 } 10389 } 10390 #pragma omp sections 10391 { 10392 #pragma omp task 10393 { 10394 bar(); 10395 } 10396 } 10397 #pragma omp sections 10398 { 10399 #pragma omp taskyield 10400 } 10401 #pragma omp sections 10402 { 10403 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 10404 bar(); 10405 } 10406 #pragma omp sections 10407 { 10408 #pragma omp taskwait 10409 } 10410 #pragma omp sections 10411 { 10412 #pragma omp flush 10413 } 10414 #pragma omp sections 10415 { 10416 #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?}} 10417 bar(); 10418 } 10419 #pragma omp sections 10420 { 10421 #pragma omp atomic 10422 ++a; 10423 } 10424 #pragma omp sections 10425 { 10426 #pragma omp target 10427 ++a; 10428 } 10429 #pragma omp sections 10430 { 10431 #pragma omp target parallel 10432 ++a; 10433 } 10434 #pragma omp sections 10435 { 10436 #pragma omp target parallel for 10437 for (int i = 0; i < 10; ++i) 10438 ; 10439 } 10440 #pragma omp sections 10441 { 10442 #pragma omp target enter data map(to: a) 10443 } 10444 #pragma omp sections 10445 { 10446 #pragma omp target exit data map(from: a) 10447 } 10448 #pragma omp sections 10449 { 10450 #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?}} 10451 ++a; 10452 } 10453 #pragma omp sections 10454 { 10455 #pragma omp taskloop 10456 for (int i = 0; i < 10; ++i) 10457 ++a; 10458 } 10459 #pragma omp sections 10460 { 10461 #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?}} 10462 for (int i = 0; i < 10; ++i) 10463 ; 10464 } 10465 #pragma omp sections 10466 { 10467 #pragma omp target update to(a) 10468 } 10469 #pragma omp sections 10470 { 10471 #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?}} 10472 for (int i = 0; i < 10; ++i) 10473 ; 10474 } 10475 #pragma omp sections 10476 { 10477 #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?}} 10478 for (int i = 0; i < 10; ++i) 10479 ; 10480 } 10481 #pragma omp sections 10482 { 10483 #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?}} 10484 for (int i = 0; i < 10; ++i) 10485 ; 10486 } 10487 #pragma omp sections 10488 { 10489 #pragma omp target simd // OK 10490 for (int i = 0; i < 10; ++i) 10491 ; 10492 } 10493 #pragma omp sections 10494 { 10495 #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?}} 10496 for (int i = 0; i < 10; ++i) 10497 ; 10498 } 10499 #pragma omp sections 10500 { 10501 #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?}} 10502 for (int i = 0; i < 10; ++i) 10503 ; 10504 } 10505 #pragma omp sections 10506 { 10507 #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?}} 10508 for (int i = 0; i < 10; ++i) 10509 ; 10510 } 10511 #pragma omp sections 10512 { 10513 #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?}} 10514 for (int i = 0; i < 10; ++i) 10515 ; 10516 } 10517 #pragma omp sections 10518 { 10519 #pragma omp target teams // OK 10520 a++; 10521 } 10522 #pragma omp sections 10523 { 10524 #pragma omp target teams distribute // OK 10525 for (int i = 0; i < 10; ++i) 10526 ; 10527 } 10528 #pragma omp sections 10529 { 10530 #pragma omp target teams distribute parallel for // OK 10531 for (int i = 0; i < 10; ++i) 10532 ; 10533 } 10534 #pragma omp sections 10535 { 10536 #pragma omp target teams distribute parallel for simd // OK 10537 for (int i = 0; i < 10; ++i) 10538 ; 10539 } 10540 #pragma omp sections 10541 { 10542 #pragma omp target teams distribute simd // OK 10543 for (int i = 0; i < 10; ++i) 10544 ; 10545 } 10546 10547 // SECTION DIRECTIVE 10548 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 10549 { 10550 bar(); 10551 } 10552 #pragma omp sections 10553 { 10554 #pragma omp section 10555 { 10556 #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?}} 10557 for (int i = 0; i < 10; ++i) 10558 ; 10559 } 10560 } 10561 #pragma omp sections 10562 { 10563 #pragma omp section 10564 { 10565 #pragma omp simd 10566 for (int i = 0; i < 10; ++i) 10567 ; 10568 } 10569 } 10570 #pragma omp sections 10571 { 10572 #pragma omp section 10573 { 10574 #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?}} 10575 for (int i = 0; i < 10; ++i) 10576 ; 10577 } 10578 } 10579 #pragma omp sections 10580 { 10581 #pragma omp section 10582 { 10583 #pragma omp parallel 10584 for (int i = 0; i < 10; ++i) 10585 ; 10586 } 10587 } 10588 #pragma omp sections 10589 { 10590 #pragma omp section 10591 { 10592 #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?}} 10593 { 10594 bar(); 10595 } 10596 } 10597 } 10598 #pragma omp sections 10599 { 10600 #pragma omp section 10601 { 10602 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 10603 { 10604 bar(); 10605 } 10606 } 10607 } 10608 #pragma omp sections 10609 { 10610 #pragma omp section 10611 { 10612 #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?}} 10613 bar(); 10614 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 10615 bar(); 10616 #pragma omp critical 10617 bar(); 10618 } 10619 } 10620 #pragma omp sections 10621 { 10622 #pragma omp section 10623 { 10624 #pragma omp parallel 10625 { 10626 #pragma omp single // OK 10627 { 10628 bar(); 10629 } 10630 #pragma omp for // OK 10631 for (int i = 0; i < 10; ++i) 10632 ; 10633 #pragma omp for simd // OK 10634 for (int i = 0; i < 10; ++i) 10635 ; 10636 #pragma omp sections // OK 10637 { 10638 bar(); 10639 } 10640 } 10641 } 10642 } 10643 #pragma omp sections 10644 { 10645 #pragma omp section 10646 { 10647 #pragma omp parallel for 10648 for (int i = 0; i < 10; ++i) 10649 ; 10650 } 10651 } 10652 #pragma omp sections 10653 { 10654 #pragma omp section 10655 { 10656 #pragma omp parallel for simd 10657 for (int i = 0; i < 10; ++i) 10658 ; 10659 } 10660 } 10661 #pragma omp sections 10662 { 10663 #pragma omp section 10664 { 10665 #pragma omp parallel sections 10666 { 10667 bar(); 10668 } 10669 } 10670 } 10671 #pragma omp sections 10672 { 10673 #pragma omp section 10674 { 10675 #pragma omp task 10676 { 10677 bar(); 10678 } 10679 } 10680 } 10681 #pragma omp sections 10682 { 10683 #pragma omp section 10684 { 10685 #pragma omp taskyield 10686 bar(); 10687 } 10688 } 10689 #pragma omp sections 10690 { 10691 #pragma omp section 10692 { 10693 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 10694 bar(); 10695 } 10696 } 10697 #pragma omp sections 10698 { 10699 #pragma omp section 10700 { 10701 #pragma omp taskwait 10702 bar(); 10703 } 10704 } 10705 #pragma omp sections 10706 { 10707 #pragma omp section 10708 { 10709 #pragma omp flush 10710 bar(); 10711 } 10712 } 10713 #pragma omp sections 10714 { 10715 #pragma omp section 10716 { 10717 #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?}} 10718 bar(); 10719 } 10720 } 10721 #pragma omp sections 10722 { 10723 #pragma omp section 10724 { 10725 #pragma omp atomic 10726 ++a; 10727 } 10728 } 10729 #pragma omp sections 10730 { 10731 #pragma omp section 10732 { 10733 #pragma omp target 10734 ++a; 10735 } 10736 } 10737 #pragma omp sections 10738 { 10739 #pragma omp section 10740 { 10741 #pragma omp target parallel 10742 ++a; 10743 } 10744 } 10745 #pragma omp sections 10746 { 10747 #pragma omp section 10748 { 10749 #pragma omp target parallel for 10750 for (int i = 0; i < 10; ++i) 10751 ; 10752 } 10753 } 10754 #pragma omp sections 10755 { 10756 #pragma omp section 10757 { 10758 #pragma omp target enter data map(to: a) 10759 ++a; 10760 } 10761 } 10762 #pragma omp sections 10763 { 10764 #pragma omp section 10765 { 10766 #pragma omp target exit data map(from: a) 10767 ++a; 10768 } 10769 } 10770 #pragma omp sections 10771 { 10772 #pragma omp section 10773 { 10774 #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?}} 10775 ++a; 10776 } 10777 } 10778 #pragma omp sections 10779 { 10780 #pragma omp section 10781 { 10782 #pragma omp taskloop 10783 for (int i = 0; i < 10; ++i) 10784 ++a; 10785 } 10786 } 10787 #pragma omp sections 10788 { 10789 #pragma omp section 10790 #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?}} 10791 for (int i = 0; i < 10; ++i) 10792 ; 10793 } 10794 #pragma omp sections 10795 { 10796 #pragma omp section 10797 { 10798 #pragma omp target update to(a) 10799 a++; 10800 } 10801 } 10802 #pragma omp sections 10803 { 10804 #pragma omp section 10805 #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?}} 10806 for (int i = 0; i < 10; ++i) 10807 ; 10808 } 10809 #pragma omp sections 10810 { 10811 #pragma omp section 10812 #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?}} 10813 for (int i = 0; i < 10; ++i) 10814 ; 10815 } 10816 #pragma omp sections 10817 { 10818 #pragma omp section 10819 #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?}} 10820 for (int i = 0; i < 10; ++i) 10821 ; 10822 } 10823 #pragma omp sections 10824 { 10825 #pragma omp section 10826 #pragma omp target simd // OK 10827 for (int i = 0; i < 10; ++i) 10828 ; 10829 } 10830 #pragma omp sections 10831 { 10832 #pragma omp section 10833 #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?}} 10834 for (int i = 0; i < 10; ++i) 10835 ; 10836 } 10837 #pragma omp sections 10838 { 10839 #pragma omp section 10840 #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?}} 10841 for (int i = 0; i < 10; ++i) 10842 ; 10843 } 10844 #pragma omp sections 10845 { 10846 #pragma omp section 10847 #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?}} 10848 for (int i = 0; i < 10; ++i) 10849 ; 10850 } 10851 #pragma omp sections 10852 { 10853 #pragma omp section 10854 #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?}} 10855 for (int i = 0; i < 10; ++i) 10856 ; 10857 } 10858 #pragma omp sections 10859 { 10860 #pragma omp section 10861 #pragma omp target teams // OK 10862 a++; 10863 } 10864 #pragma omp sections 10865 { 10866 #pragma omp section 10867 #pragma omp target teams distribute // OK 10868 for (int i = 0; i < 10; ++i) 10869 ; 10870 } 10871 #pragma omp sections 10872 { 10873 #pragma omp section 10874 #pragma omp target teams distribute parallel for // OK 10875 for (int i = 0; i < 10; ++i) 10876 ; 10877 } 10878 #pragma omp sections 10879 { 10880 #pragma omp section 10881 #pragma omp target teams distribute parallel for simd // OK 10882 for (int i = 0; i < 10; ++i) 10883 ; 10884 } 10885 #pragma omp sections 10886 { 10887 #pragma omp section 10888 #pragma omp target teams distribute simd // OK 10889 for (int i = 0; i < 10; ++i) 10890 ; 10891 } 10892 10893 // SINGLE DIRECTIVE 10894 #pragma omp single 10895 { 10896 #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?}} 10897 for (int i = 0; i < 10; ++i) 10898 ; 10899 } 10900 #pragma omp single 10901 { 10902 #pragma omp simd 10903 for (int i = 0; i < 10; ++i) 10904 ; 10905 } 10906 #pragma omp single 10907 { 10908 #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?}} 10909 for (int i = 0; i < 10; ++i) 10910 ; 10911 } 10912 #pragma omp single 10913 { 10914 #pragma omp parallel 10915 for (int i = 0; i < 10; ++i) 10916 ; 10917 } 10918 #pragma omp single 10919 { 10920 #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?}} 10921 { 10922 bar(); 10923 } 10924 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 10925 bar(); 10926 #pragma omp critical 10927 bar(); 10928 } 10929 #pragma omp single 10930 { 10931 #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?}} 10932 { 10933 bar(); 10934 } 10935 } 10936 #pragma omp single 10937 { 10938 #pragma omp parallel 10939 { 10940 #pragma omp single // OK 10941 { 10942 bar(); 10943 } 10944 #pragma omp for // OK 10945 for (int i = 0; i < 10; ++i) 10946 ; 10947 #pragma omp for simd // OK 10948 for (int i = 0; i < 10; ++i) 10949 ; 10950 #pragma omp sections // OK 10951 { 10952 bar(); 10953 } 10954 } 10955 } 10956 #pragma omp single 10957 { 10958 #pragma omp parallel for 10959 for (int i = 0; i < 10; ++i) 10960 ; 10961 } 10962 #pragma omp single 10963 { 10964 #pragma omp parallel for simd 10965 for (int i = 0; i < 10; ++i) 10966 ; 10967 } 10968 #pragma omp single 10969 { 10970 #pragma omp parallel sections 10971 { 10972 bar(); 10973 } 10974 } 10975 #pragma omp single 10976 { 10977 #pragma omp task 10978 { 10979 bar(); 10980 } 10981 } 10982 #pragma omp single 10983 { 10984 #pragma omp taskyield 10985 bar(); 10986 } 10987 #pragma omp single 10988 { 10989 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 10990 bar(); 10991 } 10992 #pragma omp single 10993 { 10994 #pragma omp taskwait 10995 bar(); 10996 } 10997 #pragma omp single 10998 { 10999 #pragma omp flush 11000 bar(); 11001 } 11002 #pragma omp single 11003 { 11004 #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?}} 11005 bar(); 11006 } 11007 #pragma omp single 11008 { 11009 #pragma omp atomic 11010 ++a; 11011 } 11012 #pragma omp single 11013 { 11014 #pragma omp target 11015 ++a; 11016 } 11017 #pragma omp single 11018 { 11019 #pragma omp target parallel 11020 ++a; 11021 } 11022 #pragma omp single 11023 { 11024 #pragma omp target parallel for 11025 for (int i = 0; i < 10; ++i) 11026 ; 11027 } 11028 #pragma omp single 11029 { 11030 #pragma omp target enter data map(to: a) 11031 ++a; 11032 } 11033 #pragma omp single 11034 { 11035 #pragma omp target exit data map(from: a) 11036 ++a; 11037 } 11038 #pragma omp single 11039 { 11040 #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?}} 11041 ++a; 11042 } 11043 #pragma omp single 11044 { 11045 #pragma omp taskloop 11046 for (int i = 0; i < 10; ++i) 11047 ++a; 11048 } 11049 #pragma omp single 11050 { 11051 #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?}} 11052 for (int i = 0; i < 10; ++i) 11053 ; 11054 } 11055 #pragma omp single 11056 { 11057 #pragma omp target update to(a) 11058 a++; 11059 } 11060 #pragma omp single 11061 { 11062 #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?}} 11063 for (int i = 0; i < 10; ++i) 11064 ; 11065 } 11066 #pragma omp single 11067 { 11068 #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?}} 11069 for (int i = 0; i < 10; ++i) 11070 ; 11071 } 11072 #pragma omp single 11073 { 11074 #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?}} 11075 for (int i = 0; i < 10; ++i) 11076 ; 11077 } 11078 #pragma omp single 11079 { 11080 #pragma omp target simd // OK 11081 for (int i = 0; i < 10; ++i) 11082 ; 11083 } 11084 #pragma omp single 11085 { 11086 #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?}} 11087 for (int i = 0; i < 10; ++i) 11088 ; 11089 } 11090 #pragma omp single 11091 { 11092 #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?}} 11093 for (int i = 0; i < 10; ++i) 11094 ; 11095 } 11096 #pragma omp single 11097 { 11098 #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?}} 11099 for (int i = 0; i < 10; ++i) 11100 ; 11101 } 11102 #pragma omp single 11103 { 11104 #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?}} 11105 for (int i = 0; i < 10; ++i) 11106 ; 11107 } 11108 #pragma omp single 11109 { 11110 #pragma omp target teams // oK 11111 a++; 11112 } 11113 #pragma omp single 11114 { 11115 #pragma omp target teams distribute // OK 11116 for (int i = 0; i < 10; ++i) 11117 ; 11118 } 11119 #pragma omp single 11120 { 11121 #pragma omp target teams distribute parallel for // OK 11122 for (int i = 0; i < 10; ++i) 11123 ; 11124 } 11125 #pragma omp single 11126 { 11127 #pragma omp target teams distribute parallel for simd // OK 11128 for (int i = 0; i < 10; ++i) 11129 ; 11130 } 11131 #pragma omp single 11132 { 11133 #pragma omp target teams distribute simd // OK 11134 for (int i = 0; i < 10; ++i) 11135 ; 11136 } 11137 11138 // MASTER DIRECTIVE 11139 #pragma omp master 11140 { 11141 #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?}} 11142 for (int i = 0; i < 10; ++i) 11143 ; 11144 } 11145 #pragma omp master 11146 { 11147 #pragma omp simd 11148 for (int i = 0; i < 10; ++i) 11149 ; 11150 } 11151 #pragma omp master 11152 { 11153 #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?}} 11154 for (int i = 0; i < 10; ++i) 11155 ; 11156 } 11157 #pragma omp master 11158 { 11159 #pragma omp parallel 11160 for (int i = 0; i < 10; ++i) 11161 ; 11162 } 11163 #pragma omp parallel master 11164 { 11165 for (int i = 0; i < 10; ++i) 11166 ; 11167 } 11168 #pragma omp master 11169 { 11170 #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?}} 11171 { 11172 bar(); 11173 } 11174 } 11175 #pragma omp master 11176 { 11177 #pragma omp master // OK, though second 'master' is redundant 11178 { 11179 bar(); 11180 } 11181 } 11182 #pragma omp master 11183 { 11184 #pragma omp critical 11185 { 11186 bar(); 11187 } 11188 } 11189 #pragma omp master 11190 { 11191 #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?}} 11192 { 11193 bar(); 11194 } 11195 } 11196 #pragma omp master 11197 { 11198 #pragma omp parallel 11199 { 11200 #pragma omp master // OK 11201 { 11202 bar(); 11203 } 11204 #pragma omp for // OK 11205 for (int i = 0; i < 10; ++i) 11206 ; 11207 #pragma omp for simd // OK 11208 for (int i = 0; i < 10; ++i) 11209 ; 11210 #pragma omp sections // OK 11211 { 11212 bar(); 11213 } 11214 } 11215 } 11216 #pragma omp master 11217 { 11218 #pragma omp parallel master 11219 { 11220 bar(); 11221 } 11222 } 11223 #pragma omp master 11224 { 11225 #pragma omp parallel for 11226 for (int i = 0; i < 10; ++i) 11227 ; 11228 } 11229 #pragma omp master 11230 { 11231 #pragma omp parallel for simd 11232 for (int i = 0; i < 10; ++i) 11233 ; 11234 } 11235 #pragma omp master 11236 { 11237 #pragma omp parallel sections 11238 { 11239 bar(); 11240 } 11241 } 11242 #pragma omp master 11243 { 11244 #pragma omp task 11245 { 11246 bar(); 11247 } 11248 } 11249 #pragma omp master 11250 { 11251 #pragma omp taskyield 11252 bar(); 11253 } 11254 #pragma omp master 11255 { 11256 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 11257 bar(); 11258 } 11259 #pragma omp master 11260 { 11261 #pragma omp taskwait 11262 bar(); 11263 } 11264 #pragma omp master 11265 { 11266 #pragma omp flush 11267 bar(); 11268 } 11269 #pragma omp master 11270 { 11271 #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?}} 11272 bar(); 11273 } 11274 #pragma omp master 11275 { 11276 #pragma omp atomic 11277 ++a; 11278 } 11279 #pragma omp master 11280 { 11281 #pragma omp target 11282 ++a; 11283 } 11284 #pragma omp master 11285 { 11286 #pragma omp target parallel 11287 ++a; 11288 } 11289 #pragma omp master 11290 { 11291 #pragma omp target parallel for 11292 for (int i = 0; i < 10; ++i) 11293 ; 11294 } 11295 #pragma omp master 11296 { 11297 #pragma omp target enter data map(to: a) 11298 ++a; 11299 } 11300 #pragma omp master 11301 { 11302 #pragma omp target exit data map(from: a) 11303 ++a; 11304 } 11305 #pragma omp master 11306 { 11307 #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?}} 11308 ++a; 11309 } 11310 #pragma omp master 11311 { 11312 #pragma omp taskloop 11313 for (int i = 0; i < 10; ++i) 11314 ++a; 11315 } 11316 #pragma omp master 11317 { 11318 #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?}} 11319 for (int i = 0; i < 10; ++i) 11320 ; 11321 } 11322 #pragma omp master 11323 { 11324 #pragma omp target update to(a) 11325 ++a; 11326 } 11327 #pragma omp master 11328 { 11329 #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?}} 11330 for (int i = 0; i < 10; ++i) 11331 ; 11332 } 11333 #pragma omp master 11334 { 11335 #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?}} 11336 for (int i = 0; i < 10; ++i) 11337 ; 11338 } 11339 #pragma omp master 11340 { 11341 #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?}} 11342 for (int i = 0; i < 10; ++i) 11343 ; 11344 } 11345 #pragma omp master 11346 { 11347 #pragma omp target simd // OK 11348 for (int i = 0; i < 10; ++i) 11349 ; 11350 } 11351 #pragma omp master 11352 { 11353 #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?}} 11354 for (int i = 0; i < 10; ++i) 11355 ; 11356 } 11357 #pragma omp master 11358 { 11359 #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?}} 11360 for (int i = 0; i < 10; ++i) 11361 ; 11362 } 11363 #pragma omp master 11364 { 11365 #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?}} 11366 for (int i = 0; i < 10; ++i) 11367 ; 11368 } 11369 #pragma omp master 11370 { 11371 #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?}} 11372 for (int i = 0; i < 10; ++i) 11373 ; 11374 } 11375 #pragma omp master 11376 { 11377 #pragma omp target teams // OK 11378 a++; 11379 } 11380 #pragma omp master 11381 { 11382 #pragma omp target teams distribute // OK 11383 for (int i = 0; i < 10; ++i) 11384 ; 11385 } 11386 #pragma omp master 11387 { 11388 #pragma omp target teams distribute parallel for // OK 11389 for (int i = 0; i < 10; ++i) 11390 ; 11391 } 11392 #pragma omp master 11393 { 11394 #pragma omp target teams distribute parallel for simd // OK 11395 for (int i = 0; i < 10; ++i) 11396 ; 11397 } 11398 #pragma omp master 11399 { 11400 #pragma omp target teams distribute simd // OK 11401 for (int i = 0; i < 10; ++i) 11402 ; 11403 } 11404 11405 // CRITICAL DIRECTIVE 11406 #pragma omp critical 11407 { 11408 #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?}} 11409 for (int i = 0; i < 10; ++i) 11410 ; 11411 } 11412 #pragma omp critical 11413 { 11414 #pragma omp simd 11415 for (int i = 0; i < 10; ++i) 11416 ; 11417 } 11418 #pragma omp critical 11419 { 11420 #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?}} 11421 for (int i = 0; i < 10; ++i) 11422 ; 11423 } 11424 #pragma omp critical 11425 { 11426 #pragma omp parallel 11427 for (int i = 0; i < 10; ++i) 11428 ; 11429 } 11430 #pragma omp critical 11431 { 11432 #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?}} 11433 { 11434 bar(); 11435 } 11436 } 11437 #pragma omp critical 11438 { 11439 #pragma omp master // OK, though second 'master' is redundant 11440 { 11441 bar(); 11442 } 11443 } 11444 #pragma omp critical 11445 { 11446 #pragma omp critical 11447 { 11448 bar(); 11449 } 11450 } 11451 #pragma omp critical 11452 { 11453 #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?}} 11454 { 11455 bar(); 11456 } 11457 } 11458 #pragma omp critical 11459 { 11460 #pragma omp parallel 11461 { 11462 #pragma omp master // OK 11463 { 11464 bar(); 11465 } 11466 #pragma omp for // OK 11467 for (int i = 0; i < 10; ++i) 11468 ; 11469 #pragma omp for simd // OK 11470 for (int i = 0; i < 10; ++i) 11471 ; 11472 #pragma omp sections // OK 11473 { 11474 bar(); 11475 } 11476 } 11477 } 11478 #pragma omp critical 11479 { 11480 #pragma omp parallel for 11481 for (int i = 0; i < 10; ++i) 11482 ; 11483 } 11484 #pragma omp critical 11485 { 11486 #pragma omp parallel for simd 11487 for (int i = 0; i < 10; ++i) 11488 ; 11489 } 11490 #pragma omp critical 11491 { 11492 #pragma omp parallel sections 11493 { 11494 bar(); 11495 } 11496 } 11497 #pragma omp critical 11498 { 11499 #pragma omp task 11500 { 11501 bar(); 11502 } 11503 } 11504 #pragma omp critical 11505 { 11506 #pragma omp taskyield 11507 bar(); 11508 } 11509 #pragma omp critical 11510 { 11511 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 11512 bar(); 11513 } 11514 #pragma omp critical 11515 { 11516 #pragma omp taskwait 11517 bar(); 11518 } 11519 #pragma omp critical(Belka) 11520 { 11521 #pragma omp critical(Strelka) 11522 bar(); 11523 } 11524 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 11525 { 11526 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 11527 { 11528 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 11529 { 11530 #pragma omp parallel 11531 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 11532 { 11533 bar(); 11534 } 11535 } 11536 } 11537 } 11538 #pragma omp critical 11539 { 11540 #pragma omp flush 11541 bar(); 11542 } 11543 #pragma omp critical 11544 { 11545 #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?}} 11546 bar(); 11547 } 11548 #pragma omp critical 11549 { 11550 #pragma omp atomic 11551 ++a; 11552 } 11553 #pragma omp critical 11554 { 11555 #pragma omp target 11556 ++a; 11557 } 11558 #pragma omp critical 11559 { 11560 #pragma omp target parallel 11561 ++a; 11562 } 11563 #pragma omp critical 11564 { 11565 #pragma omp target parallel for 11566 for (int i = 0; i < 10; ++i) 11567 ; 11568 } 11569 #pragma omp critical 11570 { 11571 #pragma omp target enter data map(to: a) 11572 ++a; 11573 } 11574 #pragma omp critical 11575 { 11576 #pragma omp target exit data map(from: a) 11577 ++a; 11578 } 11579 #pragma omp critical 11580 { 11581 #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?}} 11582 ++a; 11583 } 11584 #pragma omp critical 11585 { 11586 #pragma omp taskloop 11587 for (int i = 0; i < 10; ++i) 11588 ++a; 11589 } 11590 #pragma omp critical 11591 { 11592 #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?}} 11593 for (int i = 0; i < 10; ++i) 11594 ; 11595 } 11596 #pragma omp critical 11597 { 11598 #pragma omp target update to(a) 11599 a++; 11600 } 11601 #pragma omp critical 11602 { 11603 #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?}} 11604 for (int i = 0; i < 10; ++i) 11605 ; 11606 } 11607 #pragma omp critical 11608 { 11609 #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?}} 11610 for (int i = 0; i < 10; ++i) 11611 ; 11612 } 11613 #pragma omp critical 11614 { 11615 #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?}} 11616 for (int i = 0; i < 10; ++i) 11617 ; 11618 } 11619 #pragma omp critical 11620 { 11621 #pragma omp target simd // OK 11622 for (int i = 0; i < 10; ++i) 11623 ; 11624 } 11625 #pragma omp critical 11626 { 11627 #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?}} 11628 for (int i = 0; i < 10; ++i) 11629 ; 11630 } 11631 #pragma omp critical 11632 { 11633 #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?}} 11634 for (int i = 0; i < 10; ++i) 11635 ; 11636 } 11637 #pragma omp critical 11638 { 11639 #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?}} 11640 for (int i = 0; i < 10; ++i) 11641 ; 11642 } 11643 #pragma omp critical 11644 { 11645 #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?}} 11646 for (int i = 0; i < 10; ++i) 11647 ; 11648 } 11649 #pragma omp critical 11650 { 11651 #pragma omp target teams // OK 11652 a++; 11653 } 11654 #pragma omp critical 11655 { 11656 #pragma omp target teams distribute // OK 11657 for (int i = 0; i < 10; ++i) 11658 ; 11659 } 11660 #pragma omp critical 11661 { 11662 #pragma omp target teams distribute parallel for // OK 11663 for (int i = 0; i < 10; ++i) 11664 ; 11665 } 11666 #pragma omp critical 11667 { 11668 #pragma omp target teams distribute parallel for simd // OK 11669 for (int i = 0; i < 10; ++i) 11670 ; 11671 } 11672 #pragma omp critical 11673 { 11674 #pragma omp target teams distribute simd // OK 11675 for (int i = 0; i < 10; ++i) 11676 ; 11677 } 11678 11679 // PARALLEL FOR DIRECTIVE 11680 #pragma omp parallel for 11681 for (int i = 0; i < 10; ++i) { 11682 #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?}} 11683 for (int i = 0; i < 10; ++i) 11684 ; 11685 } 11686 #pragma omp parallel for 11687 for (int i = 0; i < 10; ++i) { 11688 #pragma omp simd 11689 for (int i = 0; i < 10; ++i) 11690 ; 11691 } 11692 #pragma omp parallel for 11693 for (int i = 0; i < 10; ++i) { 11694 #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?}} 11695 for (int i = 0; i < 10; ++i) 11696 ; 11697 } 11698 11699 #pragma omp parallel for 11700 for (int i = 0; i < 10; ++i) { 11701 #pragma omp parallel 11702 for (int i = 0; i < 10; ++i) 11703 ; 11704 } 11705 #pragma omp parallel for 11706 for (int i = 0; i < 10; ++i) { 11707 #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?}} 11708 { 11709 bar(); 11710 } 11711 } 11712 #pragma omp parallel for 11713 for (int i = 0; i < 10; ++i) { 11714 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 11715 { 11716 bar(); 11717 } 11718 } 11719 #pragma omp parallel for 11720 for (int i = 0; i < 10; ++i) { 11721 #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?}} 11722 { 11723 bar(); 11724 } 11725 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11726 { 11727 bar(); 11728 } 11729 #pragma omp critical 11730 { 11731 bar(); 11732 } 11733 } 11734 #pragma omp parallel for 11735 for (int i = 0; i < 10; ++i) { 11736 #pragma omp parallel 11737 { 11738 #pragma omp single // OK 11739 { 11740 bar(); 11741 } 11742 #pragma omp master // OK 11743 { 11744 bar(); 11745 } 11746 #pragma omp critical // OK 11747 { 11748 bar(); 11749 } 11750 #pragma omp for // OK 11751 for (int i = 0; i < 10; ++i) 11752 ; 11753 #pragma omp for simd // OK 11754 for (int i = 0; i < 10; ++i) 11755 ; 11756 #pragma omp sections // OK 11757 { 11758 bar(); 11759 } 11760 } 11761 } 11762 #pragma omp parallel for 11763 for (int i = 0; i < 10; ++i) { 11764 #pragma omp parallel for 11765 for (int i = 0; i < 10; ++i) 11766 ; 11767 } 11768 #pragma omp parallel for 11769 for (int i = 0; i < 10; ++i) { 11770 #pragma omp parallel for simd 11771 for (int i = 0; i < 10; ++i) 11772 ; 11773 } 11774 #pragma omp parallel for 11775 for (int i = 0; i < 10; ++i) { 11776 #pragma omp parallel sections 11777 { 11778 bar(); 11779 } 11780 } 11781 #pragma omp parallel for 11782 for (int i = 0; i < 10; ++i) { 11783 #pragma omp task 11784 { 11785 bar(); 11786 } 11787 } 11788 #pragma omp parallel for 11789 for (int i = 0; i < 10; ++i) { 11790 #pragma omp taskyield 11791 bar(); 11792 } 11793 #pragma omp parallel for 11794 for (int i = 0; i < 10; ++i) { 11795 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11796 bar(); 11797 } 11798 #pragma omp parallel for 11799 for (int i = 0; i < 10; ++i) { 11800 #pragma omp taskwait 11801 bar(); 11802 } 11803 #pragma omp parallel for 11804 for (int i = 0; i < 10; ++i) { 11805 #pragma omp flush 11806 bar(); 11807 } 11808 #pragma omp parallel for 11809 for (int i = 0; i < 10; ++i) { 11810 #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?}} 11811 bar(); 11812 } 11813 #pragma omp parallel for ordered 11814 for (int i = 0; i < 10; ++i) { 11815 #pragma omp ordered // OK 11816 bar(); 11817 } 11818 #pragma omp parallel for 11819 for (int i = 0; i < 10; ++i) { 11820 #pragma omp atomic 11821 ++a; 11822 } 11823 #pragma omp parallel for 11824 for (int i = 0; i < 10; ++i) { 11825 #pragma omp target 11826 ++a; 11827 } 11828 #pragma omp parallel for 11829 for (int i = 0; i < 10; ++i) { 11830 #pragma omp target parallel 11831 ++a; 11832 } 11833 #pragma omp parallel for 11834 for (int i = 0; i < 10; ++i) { 11835 #pragma omp target parallel for 11836 for (int i = 0; i < 10; ++i) 11837 ; 11838 } 11839 #pragma omp parallel for 11840 for (int i = 0; i < 10; ++i) { 11841 #pragma omp target enter data map(to: a) 11842 ++a; 11843 } 11844 #pragma omp parallel for 11845 for (int i = 0; i < 10; ++i) { 11846 #pragma omp target exit data map(from: a) 11847 ++a; 11848 } 11849 #pragma omp parallel for 11850 for (int i = 0; i < 10; ++i) { 11851 #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?}} 11852 ++a; 11853 } 11854 #pragma omp parallel for 11855 for (int i = 0; i < 10; ++i) { 11856 #pragma omp taskloop 11857 for (int i = 0; i < 10; ++i) 11858 ++a; 11859 } 11860 #pragma omp parallel for 11861 for (int i = 0; i < 10; ++i) { 11862 #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?}} 11863 for (int j = 0; j < 10; ++j) 11864 ; 11865 } 11866 #pragma omp parallel for 11867 for (int i = 0; i < 10; ++i) { 11868 #pragma omp target update to(a) 11869 a++; 11870 } 11871 #pragma omp parallel for 11872 for (int i = 0; i < 10; ++i) { 11873 #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?}} 11874 for (int j = 0; j < 10; ++j) 11875 ; 11876 } 11877 #pragma omp parallel for 11878 for (int i = 0; i < 10; ++i) { 11879 #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?}} 11880 for (int j = 0; j < 10; ++j) 11881 ; 11882 } 11883 #pragma omp parallel for 11884 for (int i = 0; i < 10; ++i) { 11885 #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?}} 11886 for (int j = 0; j < 10; ++j) 11887 ; 11888 } 11889 #pragma omp parallel for 11890 for (int i = 0; i < 10; ++i) { 11891 #pragma omp target simd // OK 11892 for (int j = 0; j < 10; ++j) 11893 ; 11894 } 11895 #pragma omp parallel for 11896 for (int i = 0; i < 10; ++i) { 11897 #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?}} 11898 for (int j = 0; j < 10; ++j) 11899 ; 11900 } 11901 #pragma omp parallel for 11902 for (int i = 0; i < 10; ++i) { 11903 #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?}} 11904 for (int j = 0; j < 10; ++j) 11905 ; 11906 } 11907 #pragma omp parallel for 11908 for (int i = 0; i < 10; ++i) { 11909 #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?}} 11910 for (int j = 0; j < 10; ++j) 11911 ; 11912 } 11913 #pragma omp parallel for 11914 for (int i = 0; i < 10; ++i) { 11915 #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?}} 11916 for (int j = 0; j < 10; ++j) 11917 ; 11918 } 11919 #pragma omp parallel for 11920 for (int i = 0; i < 10; ++i) { 11921 #pragma omp target teams // OK 11922 a++; 11923 } 11924 #pragma omp parallel for 11925 for (int i = 0; i < 10; ++i) { 11926 #pragma omp target teams distribute // OK 11927 for (int j = 0; j < 10; ++j) 11928 ; 11929 } 11930 #pragma omp parallel for 11931 for (int i = 0; i < 10; ++i) { 11932 #pragma omp target teams distribute parallel for // OK 11933 for (int j = 0; j < 10; ++j) 11934 ; 11935 } 11936 #pragma omp parallel for 11937 for (int i = 0; i < 10; ++i) { 11938 #pragma omp target teams distribute parallel for simd // OK 11939 for (int j = 0; j < 10; ++j) 11940 ; 11941 } 11942 #pragma omp parallel for 11943 for (int i = 0; i < 10; ++i) { 11944 #pragma omp target teams distribute simd // OK 11945 for (int j = 0; j < 10; ++j) 11946 ; 11947 } 11948 11949 // PARALLEL FOR SIMD DIRECTIVE 11950 #pragma omp parallel for simd 11951 for (int i = 0; i < 10; ++i) { 11952 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11953 for (int i = 0; i < 10; ++i) 11954 ; 11955 } 11956 #pragma omp parallel for simd 11957 for (int i = 0; i < 10; ++i) { 11958 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11959 for (int i = 0; i < 10; ++i) 11960 ; 11961 } 11962 #pragma omp parallel for simd 11963 for (int i = 0; i < 10; ++i) { 11964 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11965 for (int i = 0; i < 10; ++i) 11966 ; 11967 } 11968 #pragma omp parallel for simd 11969 for (int i = 0; i < 10; ++i) { 11970 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11971 for (int i = 0; i < 10; ++i) 11972 ; 11973 } 11974 #pragma omp parallel for simd 11975 for (int i = 0; i < 10; ++i) { 11976 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11977 { 11978 bar(); 11979 } 11980 } 11981 #pragma omp parallel for simd 11982 for (int i = 0; i < 10; ++i) { 11983 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11984 { 11985 bar(); 11986 } 11987 } 11988 #pragma omp parallel for simd 11989 for (int i = 0; i < 10; ++i) { 11990 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11991 { 11992 bar(); 11993 } 11994 } 11995 11996 #pragma omp parallel for simd 11997 for (int i = 0; i < 10; ++i) { 11998 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11999 { 12000 bar(); 12001 } 12002 } 12003 12004 #pragma omp parallel for simd 12005 for (int i = 0; i < 10; ++i) { 12006 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12007 { 12008 bar(); 12009 } 12010 } 12011 12012 #pragma omp parallel for simd 12013 for (int i = 0; i < 10; ++i) { 12014 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12015 { 12016 #pragma omp single 12017 { 12018 bar(); 12019 } 12020 #pragma omp for 12021 for (int i = 0; i < 10; ++i) 12022 ; 12023 #pragma omp for simd 12024 for (int i = 0; i < 10; ++i) 12025 ; 12026 #pragma omp sections 12027 { 12028 bar(); 12029 } 12030 } 12031 } 12032 #pragma omp parallel for simd 12033 for (int i = 0; i < 10; ++i) { 12034 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12035 for (int i = 0; i < 10; ++i) 12036 ; 12037 } 12038 #pragma omp parallel for simd 12039 for (int i = 0; i < 10; ++i) { 12040 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 12041 for (int i = 0; i < 10; ++i) 12042 ; 12043 } 12044 #pragma omp parallel for simd 12045 for (int i = 0; i < 10; ++i) { 12046 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12047 { 12048 bar(); 12049 } 12050 } 12051 #pragma omp parallel for simd 12052 for (int i = 0; i < 10; ++i) { 12053 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12054 { 12055 bar(); 12056 } 12057 } 12058 #pragma omp parallel for simd 12059 for (int i = 0; i < 10; ++i) { 12060 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12061 bar(); 12062 } 12063 #pragma omp parallel for simd 12064 for (int i = 0; i < 10; ++i) { 12065 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12066 bar(); 12067 } 12068 #pragma omp parallel for simd 12069 for (int i = 0; i < 10; ++i) { 12070 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12071 bar(); 12072 } 12073 #pragma omp parallel for simd 12074 for (int i = 0; i < 10; ++i) { 12075 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12076 bar(); 12077 } 12078 #pragma omp parallel for simd 12079 for (int i = 0; i < 10; ++i) { 12080 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12081 bar(); 12082 } 12083 #pragma omp parallel for simd 12084 for (int i = 0; i < 10; ++i) { 12085 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12086 bar(); 12087 } 12088 #pragma omp parallel for simd 12089 for (int i = 0; i < 10; ++i) { 12090 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 12091 ++a; 12092 } 12093 #pragma omp parallel for simd 12094 for (int i = 0; i < 10; ++i) { 12095 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12096 ++a; 12097 } 12098 #pragma omp parallel for simd 12099 for (int i = 0; i < 10; ++i) { 12100 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12101 ++a; 12102 } 12103 #pragma omp parallel for simd 12104 for (int i = 0; i < 10; ++i) { 12105 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12106 for (int i = 0; i < 10; ++i) 12107 ; 12108 } 12109 #pragma omp parallel for simd 12110 for (int i = 0; i < 10; ++i) { 12111 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12112 ++a; 12113 } 12114 #pragma omp parallel for simd 12115 for (int i = 0; i < 10; ++i) { 12116 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12117 ++a; 12118 } 12119 #pragma omp parallel for simd 12120 for (int i = 0; i < 10; ++i) { 12121 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12122 ++a; 12123 } 12124 #pragma omp parallel for simd 12125 for (int i = 0; i < 10; ++i) { 12126 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12127 for (int i = 0; i < 10; ++i) 12128 ++a; 12129 } 12130 #pragma omp parallel for simd 12131 for (int i = 0; i < 10; ++i) { 12132 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12133 for (int j = 0; j < 10; ++j) 12134 ; 12135 } 12136 #pragma omp parallel for simd 12137 for (int i = 0; i < 10; ++i) { 12138 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12139 a++; 12140 } 12141 #pragma omp parallel for simd 12142 for (int i = 0; i < 10; ++i) { 12143 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12144 for (int j = 0; j < 10; ++j) 12145 ; 12146 } 12147 #pragma omp parallel for simd 12148 for (int i = 0; i < 10; ++i) { 12149 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12150 for (int j = 0; j < 10; ++j) 12151 ; 12152 } 12153 #pragma omp parallel for simd 12154 for (int i = 0; i < 10; ++i) { 12155 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12156 for (int j = 0; j < 10; ++j) 12157 ; 12158 } 12159 #pragma omp parallel for simd 12160 for (int i = 0; i < 10; ++i) { 12161 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12162 for (int j = 0; j < 10; ++j) 12163 ; 12164 } 12165 #pragma omp parallel for simd 12166 for (int i = 0; i < 10; ++i) { 12167 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12168 for (int j = 0; j < 10; ++j) 12169 ; 12170 } 12171 #pragma omp parallel for simd 12172 for (int i = 0; i < 10; ++i) { 12173 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12174 for (int j = 0; j < 10; ++j) 12175 ; 12176 } 12177 #pragma omp parallel for simd 12178 for (int i = 0; i < 10; ++i) { 12179 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12180 for (int j = 0; j < 10; ++j) 12181 ; 12182 } 12183 #pragma omp parallel for simd 12184 for (int i = 0; i < 10; ++i) { 12185 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12186 for (int j = 0; j < 10; ++j) 12187 ; 12188 } 12189 #pragma omp parallel for simd 12190 for (int i = 0; i < 10; ++i) { 12191 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12192 a++; 12193 } 12194 #pragma omp parallel for simd 12195 for (int i = 0; i < 10; ++i) { 12196 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12197 for (int j = 0; j < 10; ++j) 12198 ; 12199 } 12200 #pragma omp parallel for simd 12201 for (int i = 0; i < 10; ++i) { 12202 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12203 for (int j = 0; j < 10; ++j) 12204 ; 12205 } 12206 #pragma omp parallel for simd 12207 for (int i = 0; i < 10; ++i) { 12208 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12209 for (int j = 0; j < 10; ++j) 12210 ; 12211 } 12212 #pragma omp parallel for simd 12213 for (int i = 0; i < 10; ++i) { 12214 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12215 for (int j = 0; j < 10; ++j) 12216 ; 12217 } 12218 12219 // PARALLEL SECTIONS DIRECTIVE 12220 #pragma omp parallel sections 12221 { 12222 #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?}} 12223 for (int i = 0; i < 10; ++i) 12224 ; 12225 } 12226 #pragma omp parallel sections 12227 { 12228 #pragma omp simd 12229 for (int i = 0; i < 10; ++i) 12230 ; 12231 } 12232 #pragma omp parallel sections 12233 { 12234 #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?}} 12235 for (int i = 0; i < 10; ++i) 12236 ; 12237 } 12238 #pragma omp parallel sections 12239 { 12240 #pragma omp parallel 12241 for (int i = 0; i < 10; ++i) 12242 ; 12243 } 12244 #pragma omp parallel sections 12245 { 12246 #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?}} 12247 { 12248 bar(); 12249 } 12250 } 12251 #pragma omp parallel sections 12252 { 12253 #pragma omp section 12254 { 12255 bar(); 12256 } 12257 } 12258 #pragma omp parallel sections 12259 { 12260 #pragma omp section 12261 { 12262 #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?}} 12263 bar(); 12264 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 12265 bar(); 12266 #pragma omp critical 12267 bar(); 12268 } 12269 } 12270 #pragma omp parallel sections 12271 { 12272 #pragma omp parallel 12273 { 12274 #pragma omp single // OK 12275 { 12276 bar(); 12277 } 12278 #pragma omp master // OK 12279 { 12280 bar(); 12281 } 12282 #pragma omp critical // OK 12283 { 12284 bar(); 12285 } 12286 #pragma omp for // OK 12287 for (int i = 0; i < 10; ++i) 12288 ; 12289 #pragma omp for simd // OK 12290 for (int i = 0; i < 10; ++i) 12291 ; 12292 #pragma omp sections // OK 12293 { 12294 bar(); 12295 } 12296 } 12297 } 12298 #pragma omp parallel sections 12299 { 12300 #pragma omp parallel for 12301 for (int i = 0; i < 10; ++i) 12302 ; 12303 } 12304 #pragma omp parallel sections 12305 { 12306 #pragma omp parallel for simd 12307 for (int i = 0; i < 10; ++i) 12308 ; 12309 } 12310 #pragma omp parallel sections 12311 { 12312 #pragma omp parallel sections 12313 { 12314 bar(); 12315 } 12316 } 12317 #pragma omp parallel sections 12318 { 12319 #pragma omp task 12320 { 12321 bar(); 12322 } 12323 } 12324 #pragma omp parallel sections 12325 { 12326 #pragma omp taskyield 12327 } 12328 #pragma omp parallel sections 12329 { 12330 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12331 } 12332 #pragma omp parallel sections 12333 { 12334 #pragma omp taskwait 12335 } 12336 #pragma omp parallel sections 12337 { 12338 #pragma omp flush 12339 } 12340 #pragma omp parallel sections 12341 { 12342 #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?}} 12343 bar(); 12344 } 12345 #pragma omp parallel sections 12346 { 12347 #pragma omp atomic 12348 ++a; 12349 } 12350 #pragma omp parallel sections 12351 { 12352 #pragma omp target 12353 ++a; 12354 } 12355 #pragma omp parallel sections 12356 { 12357 #pragma omp target parallel 12358 ++a; 12359 } 12360 #pragma omp parallel sections 12361 { 12362 #pragma omp target parallel for 12363 for (int i = 0; i < 10; ++i) 12364 ; 12365 } 12366 #pragma omp parallel sections 12367 { 12368 #pragma omp target enter data map(to: a) 12369 } 12370 #pragma omp parallel sections 12371 { 12372 #pragma omp target exit data map(from: a) 12373 } 12374 #pragma omp parallel sections 12375 { 12376 #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?}} 12377 ++a; 12378 } 12379 #pragma omp parallel sections 12380 { 12381 #pragma omp taskloop 12382 for (int i = 0; i < 10; ++i) 12383 ++a; 12384 } 12385 #pragma omp parallel sections 12386 { 12387 #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?}} 12388 for (int i = 0; i < 10; ++i) 12389 ; 12390 } 12391 #pragma omp parallel sections 12392 { 12393 #pragma omp target update to(a) 12394 } 12395 #pragma omp parallel sections 12396 { 12397 #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?}} 12398 for (int i = 0; i < 10; ++i) 12399 ; 12400 } 12401 #pragma omp parallel sections 12402 { 12403 #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?}} 12404 for (int i = 0; i < 10; ++i) 12405 ; 12406 } 12407 #pragma omp parallel sections 12408 { 12409 #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?}} 12410 for (int i = 0; i < 10; ++i) 12411 ; 12412 } 12413 #pragma omp parallel sections 12414 { 12415 #pragma omp target simd // OK 12416 for (int i = 0; i < 10; ++i) 12417 ; 12418 } 12419 #pragma omp parallel sections 12420 { 12421 #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?}} 12422 for (int i = 0; i < 10; ++i) 12423 ; 12424 } 12425 #pragma omp parallel sections 12426 { 12427 #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?}} 12428 for (int i = 0; i < 10; ++i) 12429 ; 12430 } 12431 #pragma omp parallel sections 12432 { 12433 #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?}} 12434 for (int i = 0; i < 10; ++i) 12435 ; 12436 } 12437 #pragma omp parallel sections 12438 { 12439 #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?}} 12440 for (int i = 0; i < 10; ++i) 12441 ; 12442 } 12443 #pragma omp parallel sections 12444 { 12445 #pragma omp target teams // OK 12446 a++; 12447 } 12448 #pragma omp parallel sections 12449 { 12450 #pragma omp target teams distribute // OK 12451 for (int i = 0; i < 10; ++i) 12452 ; 12453 } 12454 #pragma omp parallel sections 12455 { 12456 #pragma omp target teams distribute parallel for // OK 12457 for (int i = 0; i < 10; ++i) 12458 ; 12459 } 12460 #pragma omp parallel sections 12461 { 12462 #pragma omp target teams distribute parallel for simd // OK 12463 for (int i = 0; i < 10; ++i) 12464 ; 12465 } 12466 #pragma omp parallel sections 12467 { 12468 #pragma omp target teams distribute simd // OK 12469 for (int i = 0; i < 10; ++i) 12470 ; 12471 } 12472 12473 // TASK DIRECTIVE 12474 #pragma omp task 12475 #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?}} 12476 for (int i = 0; i < 10; ++i) 12477 ; 12478 #pragma omp task 12479 #pragma omp simd 12480 for (int i = 0; i < 10; ++i) 12481 ; 12482 #pragma omp task 12483 #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?}} 12484 for (int i = 0; i < 10; ++i) 12485 ; 12486 #pragma omp task 12487 #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?}} 12488 { 12489 bar(); 12490 } 12491 #pragma omp task 12492 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 12493 { 12494 bar(); 12495 } 12496 #pragma omp task 12497 #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?}} 12498 bar(); 12499 #pragma omp task 12500 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 12501 bar(); 12502 #pragma omp task 12503 #pragma omp critical 12504 bar(); 12505 #pragma omp task 12506 #pragma omp parallel for 12507 for (int i = 0; i < 10; ++i) 12508 ; 12509 #pragma omp task 12510 #pragma omp parallel for simd 12511 for (int i = 0; i < 10; ++i) 12512 ; 12513 #pragma omp task 12514 #pragma omp parallel sections 12515 { 12516 bar(); 12517 } 12518 #pragma omp task 12519 #pragma omp task 12520 { 12521 bar(); 12522 } 12523 #pragma omp task 12524 { 12525 #pragma omp taskyield 12526 bar(); 12527 } 12528 #pragma omp task 12529 { 12530 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 12531 bar(); 12532 } 12533 #pragma omp task 12534 { 12535 #pragma omp taskwait 12536 bar(); 12537 } 12538 #pragma omp task 12539 { 12540 #pragma omp flush 12541 bar(); 12542 } 12543 #pragma omp task 12544 { 12545 #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?}} 12546 bar(); 12547 } 12548 #pragma omp task 12549 { 12550 #pragma omp atomic 12551 ++a; 12552 } 12553 #pragma omp task 12554 { 12555 #pragma omp target 12556 ++a; 12557 } 12558 #pragma omp task 12559 { 12560 #pragma omp target parallel 12561 ++a; 12562 } 12563 #pragma omp task 12564 #pragma omp target parallel for 12565 for (int i = 0; i < 10; ++i) 12566 ; 12567 #pragma omp task 12568 { 12569 #pragma omp target enter data map(to: a) 12570 ++a; 12571 } 12572 #pragma omp task 12573 { 12574 #pragma omp target exit data map(from: a) 12575 ++a; 12576 } 12577 #pragma omp task 12578 { 12579 #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?}} 12580 ++a; 12581 } 12582 #pragma omp task 12583 { 12584 #pragma omp taskloop 12585 for (int i = 0; i < 10; ++i) 12586 ++a; 12587 } 12588 #pragma omp task 12589 { 12590 #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?}} 12591 for (int i = 0; i < 10; ++i) 12592 ; 12593 } 12594 #pragma omp task 12595 { 12596 #pragma omp target update to(a) 12597 a++; 12598 } 12599 #pragma omp task 12600 { 12601 #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?}} 12602 for (int i = 0; i < 10; ++i) 12603 ; 12604 } 12605 #pragma omp task 12606 { 12607 #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?}} 12608 for (int i = 0; i < 10; ++i) 12609 ; 12610 } 12611 #pragma omp task 12612 { 12613 #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?}} 12614 for (int i = 0; i < 10; ++i) 12615 ; 12616 } 12617 #pragma omp task 12618 { 12619 #pragma omp target simd // OK 12620 for (int i = 0; i < 10; ++i) 12621 ; 12622 } 12623 #pragma omp task 12624 { 12625 #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?}} 12626 for (int i = 0; i < 10; ++i) 12627 ; 12628 } 12629 #pragma omp task 12630 { 12631 #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?}} 12632 for (int i = 0; i < 10; ++i) 12633 ; 12634 } 12635 #pragma omp task 12636 { 12637 #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?}} 12638 for (int i = 0; i < 10; ++i) 12639 ; 12640 } 12641 #pragma omp task 12642 { 12643 #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?}} 12644 for (int i = 0; i < 10; ++i) 12645 ; 12646 } 12647 #pragma omp task 12648 { 12649 #pragma omp target teams // OK 12650 a++; 12651 } 12652 #pragma omp task 12653 { 12654 #pragma omp target teams distribute // OK 12655 for (int i = 0; i < 10; ++i) 12656 ; 12657 } 12658 #pragma omp task 12659 { 12660 #pragma omp target teams distribute parallel for // OK 12661 for (int i = 0; i < 10; ++i) 12662 ; 12663 } 12664 #pragma omp task 12665 { 12666 #pragma omp target teams distribute parallel for simd // OK 12667 for (int i = 0; i < 10; ++i) 12668 ; 12669 } 12670 #pragma omp task 12671 { 12672 #pragma omp target teams distribute simd // OK 12673 for (int i = 0; i < 10; ++i) 12674 ; 12675 } 12676 12677 // ATOMIC DIRECTIVE 12678 #pragma omp atomic 12679 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12680 // expected-note@+1 {{expected an expression statement}} 12681 { 12682 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12683 for (int i = 0; i < 10; ++i) 12684 ; 12685 } 12686 #pragma omp atomic 12687 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12688 // expected-note@+1 {{expected an expression statement}} 12689 { 12690 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12691 for (int i = 0; i < 10; ++i) 12692 ; 12693 } 12694 #pragma omp atomic 12695 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12696 // expected-note@+1 {{expected an expression statement}} 12697 { 12698 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12699 for (int i = 0; i < 10; ++i) 12700 ; 12701 } 12702 #pragma omp atomic 12703 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12704 // expected-note@+1 {{expected an expression statement}} 12705 { 12706 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12707 for (int i = 0; i < 10; ++i) 12708 ; 12709 } 12710 #pragma omp atomic 12711 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12712 // expected-note@+1 {{expected an expression statement}} 12713 { 12714 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12715 { 12716 bar(); 12717 } 12718 } 12719 #pragma omp atomic 12720 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12721 // expected-note@+1 {{expected an expression statement}} 12722 { 12723 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12724 { 12725 bar(); 12726 } 12727 } 12728 #pragma omp atomic 12729 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12730 // expected-note@+1 {{expected an expression statement}} 12731 { 12732 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12733 { 12734 bar(); 12735 } 12736 } 12737 #pragma omp atomic 12738 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12739 // expected-note@+1 {{expected an expression statement}} 12740 { 12741 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12742 { 12743 bar(); 12744 } 12745 } 12746 #pragma omp atomic 12747 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12748 // expected-note@+1 {{expected an expression statement}} 12749 { 12750 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12751 { 12752 bar(); 12753 } 12754 } 12755 #pragma omp atomic 12756 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12757 // expected-note@+1 {{expected an expression statement}} 12758 { 12759 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12760 for (int i = 0; i < 10; ++i) 12761 ; 12762 } 12763 #pragma omp atomic 12764 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12765 // expected-note@+1 {{expected an expression statement}} 12766 { 12767 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12768 for (int i = 0; i < 10; ++i) 12769 ; 12770 } 12771 #pragma omp atomic 12772 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12773 // expected-note@+1 {{expected an expression statement}} 12774 { 12775 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12776 { 12777 bar(); 12778 } 12779 } 12780 #pragma omp atomic 12781 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12782 // expected-note@+1 {{expected an expression statement}} 12783 { 12784 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12785 { 12786 bar(); 12787 } 12788 } 12789 #pragma omp atomic 12790 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12791 // expected-note@+1 {{expected an expression statement}} 12792 { 12793 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12794 bar(); 12795 } 12796 #pragma omp atomic 12797 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12798 // expected-note@+1 {{expected an expression statement}} 12799 { 12800 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12801 bar(); 12802 } 12803 #pragma omp atomic 12804 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12805 // expected-note@+1 {{expected an expression statement}} 12806 { 12807 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12808 bar(); 12809 } 12810 #pragma omp atomic 12811 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12812 // expected-note@+1 {{expected an expression statement}} 12813 { 12814 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12815 bar(); 12816 } 12817 #pragma omp atomic 12818 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12819 // expected-note@+1 {{expected an expression statement}} 12820 { 12821 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12822 bar(); 12823 } 12824 #pragma omp atomic 12825 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12826 // expected-note@+1 {{expected an expression statement}} 12827 { 12828 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12829 ++a; 12830 } 12831 #pragma omp atomic 12832 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12833 // expected-note@+1 {{expected an expression statement}} 12834 { 12835 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12836 ++a; 12837 } 12838 #pragma omp atomic 12839 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12840 // expected-note@+1 {{expected an expression statement}} 12841 { 12842 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12843 ++a; 12844 } 12845 #pragma omp atomic 12846 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12847 // expected-note@+1 {{expected an expression statement}} 12848 { 12849 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12850 for (int i = 0; i < 10; ++i) 12851 ; 12852 } 12853 #pragma omp atomic 12854 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12855 // expected-note@+1 {{expected an expression statement}} 12856 { 12857 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12858 ++a; 12859 } 12860 #pragma omp atomic 12861 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12862 // expected-note@+1 {{expected an expression statement}} 12863 { 12864 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12865 ++a; 12866 } 12867 #pragma omp atomic 12868 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12869 // expected-note@+1 {{expected an expression statement}} 12870 { 12871 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12872 ++a; 12873 } 12874 #pragma omp atomic 12875 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12876 // expected-note@+1 {{expected an expression statement}} 12877 { 12878 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12879 for (int i = 0; i < 10; ++i) 12880 ++a; 12881 } 12882 #pragma omp atomic 12883 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12884 // expected-note@+1 {{expected an expression statement}} 12885 { 12886 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12887 for (int i = 0; i < 10; ++i) 12888 ; 12889 } 12890 #pragma omp atomic 12891 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12892 // expected-note@+1 {{expected an expression statement}} 12893 { 12894 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12895 } 12896 #pragma omp atomic 12897 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12898 // expected-note@+1 {{expected an expression statement}} 12899 { 12900 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12901 for (int i = 0; i < 10; ++i) 12902 ; 12903 } 12904 #pragma omp atomic 12905 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12906 // expected-note@+1 {{expected an expression statement}} 12907 { 12908 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12909 for (int i = 0; i < 10; ++i) 12910 ; 12911 } 12912 #pragma omp atomic 12913 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12914 // expected-note@+1 {{expected an expression statement}} 12915 { 12916 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12917 for (int i = 0; i < 10; ++i) 12918 ; 12919 } 12920 #pragma omp atomic 12921 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12922 // expected-note@+1 {{expected an expression statement}} 12923 { 12924 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12925 for (int i = 0; i < 10; ++i) 12926 ; 12927 } 12928 #pragma omp atomic 12929 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12930 // expected-note@+1 {{expected an expression statement}} 12931 { 12932 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12933 for (int i = 0; i < 10; ++i) 12934 ; 12935 } 12936 #pragma omp atomic 12937 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12938 // expected-note@+1 {{expected an expression statement}} 12939 { 12940 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12941 for (int i = 0; i < 10; ++i) 12942 ; 12943 } 12944 #pragma omp atomic 12945 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12946 // expected-note@+1 {{expected an expression statement}} 12947 { 12948 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12949 for (int i = 0; i < 10; ++i) 12950 ; 12951 } 12952 #pragma omp atomic 12953 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12954 // expected-note@+1 {{expected an expression statement}} 12955 { 12956 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12957 for (int i = 0; i < 10; ++i) 12958 ; 12959 } 12960 #pragma omp atomic 12961 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12962 // expected-note@+1 {{expected an expression statement}} 12963 { 12964 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12965 a++; 12966 } 12967 #pragma omp atomic 12968 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12969 // expected-note@+1 {{expected an expression statement}} 12970 { 12971 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12972 for (int i = 0; i < 10; ++i) 12973 ; 12974 } 12975 #pragma omp atomic 12976 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12977 // expected-note@+1 {{expected an expression statement}} 12978 { 12979 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12980 for (int i = 0; i < 10; ++i) 12981 ; 12982 } 12983 #pragma omp atomic 12984 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12985 // expected-note@+1 {{expected an expression statement}} 12986 { 12987 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12988 for (int i = 0; i < 10; ++i) 12989 ; 12990 } 12991 #pragma omp atomic 12992 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12993 // expected-note@+1 {{expected an expression statement}} 12994 { 12995 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12996 for (int i = 0; i < 10; ++i) 12997 ; 12998 } 12999 13000 // TARGET DIRECTIVE 13001 #pragma omp target 13002 #pragma omp parallel 13003 bar(); 13004 #pragma omp target 13005 #pragma omp for 13006 for (int i = 0; i < 10; ++i) 13007 ; 13008 #pragma omp target 13009 #pragma omp simd 13010 for (int i = 0; i < 10; ++i) 13011 ; 13012 #pragma omp target 13013 #pragma omp for simd 13014 for (int i = 0; i < 10; ++i) 13015 ; 13016 #pragma omp target 13017 #pragma omp sections 13018 { 13019 bar(); 13020 } 13021 #pragma omp target 13022 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 13023 { 13024 bar(); 13025 } 13026 #pragma omp target 13027 #pragma omp single 13028 bar(); 13029 13030 #pragma omp target 13031 #pragma omp master 13032 { 13033 bar(); 13034 } 13035 #pragma omp target 13036 #pragma omp critical 13037 { 13038 bar(); 13039 } 13040 #pragma omp target 13041 #pragma omp parallel for 13042 for (int i = 0; i < 10; ++i) 13043 ; 13044 #pragma omp target 13045 #pragma omp parallel for simd 13046 for (int i = 0; i < 10; ++i) 13047 ; 13048 #pragma omp target 13049 #pragma omp parallel sections 13050 { 13051 bar(); 13052 } 13053 #pragma omp target 13054 #pragma omp task 13055 { 13056 bar(); 13057 } 13058 #pragma omp target 13059 { 13060 #pragma omp taskyield 13061 bar(); 13062 } 13063 #pragma omp target 13064 { 13065 #pragma omp barrier 13066 bar(); 13067 } 13068 #pragma omp target 13069 { 13070 #pragma omp taskwait 13071 bar(); 13072 } 13073 #pragma omp target 13074 { 13075 #pragma omp flush 13076 bar(); 13077 } 13078 #pragma omp target 13079 { 13080 #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?}} 13081 bar(); 13082 } 13083 #pragma omp target 13084 { 13085 #pragma omp atomic 13086 ++a; 13087 } 13088 #pragma omp target 13089 { 13090 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13091 ++a; 13092 } 13093 #pragma omp target 13094 { 13095 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13096 ++a; 13097 } 13098 #pragma omp target 13099 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13100 for (int i = 0; i < 10; ++i) 13101 ; 13102 #pragma omp target 13103 { 13104 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13105 } 13106 #pragma omp target 13107 { 13108 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13109 } 13110 #pragma omp target 13111 { 13112 #pragma omp teams 13113 ++a; 13114 } 13115 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13116 { 13117 #pragma omp teams // expected-note {{directive outside teams construct here}} 13118 ++a; 13119 #pragma omp teams // expected-note {{nested teams construct here}} 13120 ++a; 13121 } 13122 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13123 { 13124 ++a; // expected-note {{statement outside teams construct here}} 13125 #pragma omp teams // expected-note {{nested teams construct here}} 13126 ++a; 13127 } 13128 #pragma omp target 13129 { 13130 #pragma omp taskloop 13131 for (int i = 0; i < 10; ++i) 13132 ++a; 13133 } 13134 #pragma omp target 13135 { 13136 #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?}} 13137 for (int i = 0; i < 10; ++i) 13138 ; 13139 } 13140 #pragma omp atomic 13141 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 13142 // expected-note@+1 {{expected an expression statement}} 13143 { 13144 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13145 a++; 13146 } 13147 #pragma omp target 13148 { 13149 #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?}} 13150 for (int i = 0; i < 10; ++i) 13151 ; 13152 } 13153 #pragma omp target 13154 { 13155 #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?}} 13156 for (int i = 0; i < 10; ++i) 13157 ; 13158 } 13159 #pragma omp target 13160 { 13161 #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?}} 13162 for (int i = 0; i < 10; ++i) 13163 ; 13164 } 13165 #pragma omp target 13166 { 13167 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13168 for (int i = 0; i < 10; ++i) 13169 ; 13170 } 13171 #pragma omp target 13172 { 13173 #pragma omp teams distribute // OK 13174 for (int i = 0; i < 10; ++i) 13175 ; 13176 } 13177 #pragma omp target 13178 { 13179 #pragma omp teams distribute simd // OK 13180 for (int i = 0; i < 10; ++i) 13181 ; 13182 } 13183 #pragma omp target 13184 { 13185 #pragma omp teams distribute parallel for simd // OK 13186 for (int i = 0; i < 10; ++i) 13187 ; 13188 } 13189 #pragma omp target 13190 { 13191 #pragma omp teams distribute parallel for // OK 13192 for (int i = 0; i < 10; ++i) 13193 ; 13194 } 13195 #pragma omp target 13196 { 13197 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13198 a++; 13199 } 13200 #pragma omp target 13201 { 13202 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13203 for (int i = 0; i < 10; ++i) 13204 ; 13205 } 13206 #pragma omp target 13207 { 13208 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13209 for (int i = 0; i < 10; ++i) 13210 ; 13211 } 13212 #pragma omp target 13213 { 13214 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13215 for (int i = 0; i < 10; ++i) 13216 ; 13217 } 13218 #pragma omp target 13219 { 13220 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13221 for (int i = 0; i < 10; ++i) 13222 ; 13223 } 13224 13225 // TARGET PARALLEL DIRECTIVE 13226 #pragma omp target parallel 13227 #pragma omp parallel 13228 bar(); 13229 #pragma omp target parallel 13230 #pragma omp for 13231 for (int i = 0; i < 10; ++i) 13232 ; 13233 #pragma omp target parallel 13234 #pragma omp simd 13235 for (int i = 0; i < 10; ++i) 13236 ; 13237 #pragma omp target parallel 13238 #pragma omp for simd 13239 for (int i = 0; i < 10; ++i) 13240 ; 13241 #pragma omp target parallel 13242 #pragma omp sections 13243 { 13244 bar(); 13245 } 13246 #pragma omp target parallel 13247 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 13248 { 13249 bar(); 13250 } 13251 #pragma omp target parallel 13252 #pragma omp single 13253 bar(); 13254 13255 #pragma omp target parallel 13256 #pragma omp master 13257 { 13258 bar(); 13259 } 13260 #pragma omp target parallel 13261 #pragma omp critical 13262 { 13263 bar(); 13264 } 13265 #pragma omp target parallel 13266 #pragma omp parallel for 13267 for (int i = 0; i < 10; ++i) 13268 ; 13269 #pragma omp target parallel 13270 #pragma omp parallel for simd 13271 for (int i = 0; i < 10; ++i) 13272 ; 13273 #pragma omp target parallel 13274 #pragma omp parallel sections 13275 { 13276 bar(); 13277 } 13278 #pragma omp target parallel 13279 #pragma omp task 13280 { 13281 bar(); 13282 } 13283 #pragma omp target parallel 13284 { 13285 #pragma omp taskyield 13286 bar(); 13287 } 13288 #pragma omp target parallel 13289 { 13290 #pragma omp barrier 13291 bar(); 13292 } 13293 #pragma omp target parallel 13294 { 13295 #pragma omp taskwait 13296 bar(); 13297 } 13298 #pragma omp target parallel 13299 { 13300 #pragma omp flush 13301 bar(); 13302 } 13303 #pragma omp target parallel 13304 { 13305 #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?}} 13306 bar(); 13307 } 13308 #pragma omp target parallel 13309 { 13310 #pragma omp atomic 13311 ++a; 13312 } 13313 #pragma omp target parallel 13314 { 13315 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 13316 ++a; 13317 } 13318 #pragma omp target parallel 13319 { 13320 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 13321 ++a; 13322 } 13323 #pragma omp target parallel 13324 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13325 for (int i = 0; i < 10; ++i) 13326 ; 13327 #pragma omp target parallel 13328 { 13329 #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?}} 13330 ++a; 13331 } 13332 #pragma omp target parallel 13333 { 13334 ++a; 13335 #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?}} 13336 ++a; 13337 } 13338 #pragma omp target parallel 13339 { 13340 #pragma omp taskloop 13341 for (int i = 0; i < 10; ++i) 13342 ++a; 13343 } 13344 #pragma omp target parallel 13345 { 13346 #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?}} 13347 for (int i = 0; i < 10; ++i) 13348 ; 13349 } 13350 #pragma omp target parallel 13351 { 13352 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13353 } 13354 #pragma omp target parallel 13355 { 13356 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13357 } 13358 #pragma omp target parallel 13359 { 13360 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13361 } 13362 #pragma omp target parallel 13363 { 13364 #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?}} 13365 for (int i = 0; i < 10; ++i) 13366 ; 13367 } 13368 #pragma omp target parallel 13369 { 13370 #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?}} 13371 for (int i = 0; i < 10; ++i) 13372 ; 13373 } 13374 #pragma omp target parallel 13375 { 13376 #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?}} 13377 for (int i = 0; i < 10; ++i) 13378 ; 13379 } 13380 #pragma omp target parallel 13381 { 13382 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 13383 for (int i = 0; i < 10; ++i) 13384 ; 13385 } 13386 #pragma omp target parallel 13387 { 13388 #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?}} 13389 for (int i = 0; i < 10; ++i) 13390 ; 13391 } 13392 #pragma omp target parallel 13393 { 13394 #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?}} 13395 for (int i = 0; i < 10; ++i) 13396 ; 13397 } 13398 #pragma omp target parallel 13399 { 13400 #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?}} 13401 for (int i = 0; i < 10; ++i) 13402 ; 13403 } 13404 #pragma omp target parallel 13405 { 13406 #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?}} 13407 for (int i = 0; i < 10; ++i) 13408 ; 13409 } 13410 #pragma omp target parallel 13411 { 13412 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 13413 a++; 13414 } 13415 #pragma omp target parallel 13416 { 13417 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 13418 for (int i = 0; i < 10; ++i) 13419 ; 13420 } 13421 #pragma omp target parallel 13422 { 13423 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13424 for (int i = 0; i < 10; ++i) 13425 ; 13426 } 13427 #pragma omp target parallel 13428 { 13429 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13430 for (int i = 0; i < 10; ++i) 13431 ; 13432 } 13433 #pragma omp target parallel 13434 { 13435 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13436 for (int i = 0; i < 10; ++i) 13437 ; 13438 } 13439 13440 // TARGET PARALLEL FOR DIRECTIVE 13441 #pragma omp target parallel for 13442 for (int i = 0; i < 10; ++i) { 13443 #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?}} 13444 for (int i = 0; i < 10; ++i) 13445 ; 13446 } 13447 #pragma omp target parallel for 13448 for (int i = 0; i < 10; ++i) { 13449 #pragma omp simd 13450 for (int i = 0; i < 10; ++i) 13451 ; 13452 } 13453 #pragma omp target parallel for 13454 for (int i = 0; i < 10; ++i) { 13455 #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?}} 13456 for (int i = 0; i < 10; ++i) 13457 ; 13458 } 13459 #pragma omp target parallel for 13460 for (int i = 0; i < 10; ++i) { 13461 #pragma omp parallel 13462 for (int i = 0; i < 10; ++i) 13463 ; 13464 } 13465 #pragma omp target parallel for 13466 for (int i = 0; i < 10; ++i) { 13467 #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?}} 13468 { 13469 bar(); 13470 } 13471 } 13472 #pragma omp target parallel for 13473 for (int i = 0; i < 10; ++i) { 13474 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 13475 { 13476 bar(); 13477 } 13478 } 13479 #pragma omp target parallel for 13480 for (int i = 0; i < 10; ++i) { 13481 #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?}} 13482 { 13483 bar(); 13484 } 13485 } 13486 13487 #pragma omp target parallel for 13488 for (int i = 0; i < 10; ++i) { 13489 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13490 { 13491 bar(); 13492 } 13493 } 13494 13495 #pragma omp target parallel for 13496 for (int i = 0; i < 10; ++i) { 13497 #pragma omp critical 13498 { 13499 bar(); 13500 } 13501 } 13502 13503 #pragma omp target parallel for 13504 for (int i = 0; i < 10; ++i) { 13505 #pragma omp parallel 13506 { 13507 #pragma omp single // OK 13508 { 13509 bar(); 13510 } 13511 #pragma omp for // OK 13512 for (int i = 0; i < 10; ++i) 13513 ; 13514 #pragma omp for simd // OK 13515 for (int i = 0; i < 10; ++i) 13516 ; 13517 #pragma omp sections // OK 13518 { 13519 bar(); 13520 } 13521 } 13522 } 13523 #pragma omp target parallel for 13524 for (int i = 0; i < 10; ++i) { 13525 #pragma omp parallel for 13526 for (int i = 0; i < 10; ++i) 13527 ; 13528 } 13529 #pragma omp target parallel for 13530 for (int i = 0; i < 10; ++i) { 13531 #pragma omp parallel for simd 13532 for (int i = 0; i < 10; ++i) 13533 ; 13534 } 13535 #pragma omp target parallel for 13536 for (int i = 0; i < 10; ++i) { 13537 #pragma omp parallel sections 13538 { 13539 bar(); 13540 } 13541 } 13542 #pragma omp target parallel for 13543 for (int i = 0; i < 10; ++i) { 13544 #pragma omp task 13545 { 13546 bar(); 13547 } 13548 } 13549 #pragma omp target parallel for 13550 for (int i = 0; i < 10; ++i) { 13551 #pragma omp taskyield 13552 bar(); 13553 } 13554 #pragma omp target parallel for 13555 for (int i = 0; i < 10; ++i) { 13556 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13557 bar(); 13558 } 13559 #pragma omp target parallel for 13560 for (int i = 0; i < 10; ++i) { 13561 #pragma omp taskwait 13562 bar(); 13563 } 13564 #pragma omp target parallel for 13565 for (int i = 0; i < 10; ++i) { 13566 #pragma omp flush 13567 bar(); 13568 } 13569 #pragma omp target parallel for 13570 for (int i = 0; i < 10; ++i) { 13571 #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?}} 13572 bar(); 13573 } 13574 #pragma omp target parallel for ordered 13575 for (int i = 0; i < 10; ++i) { 13576 #pragma omp ordered // OK 13577 bar(); 13578 } 13579 #pragma omp target parallel for 13580 for (int i = 0; i < 10; ++i) { 13581 #pragma omp atomic 13582 ++a; 13583 } 13584 #pragma omp target parallel for 13585 for (int i = 0; i < 10; ++i) { 13586 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 13587 ++a; 13588 } 13589 #pragma omp target parallel for 13590 for (int i = 0; i < 10; ++i) { 13591 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 13592 ++a; 13593 } 13594 #pragma omp target parallel for 13595 for (int i = 0; i < 10; ++i) { 13596 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13597 for (int i = 0; i < 10; ++i) 13598 ; 13599 } 13600 #pragma omp target parallel for 13601 for (int i = 0; i < 10; ++i) { 13602 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13603 ++a; 13604 } 13605 #pragma omp target parallel for 13606 for (int i = 0; i < 10; ++i) { 13607 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13608 ++a; 13609 } 13610 #pragma omp target parallel for 13611 for (int i = 0; i < 10; ++i) { 13612 #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?}} 13613 ++a; 13614 } 13615 #pragma omp target parallel for 13616 for (int i = 0; i < 10; ++i) { 13617 #pragma omp taskloop 13618 for (int i = 0; i < 10; ++i) 13619 ++a; 13620 } 13621 #pragma omp target parallel for 13622 for (int i = 0; i < 10; ++i) { 13623 #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?}} 13624 for (int j = 0; j < 10; ++j) 13625 ; 13626 } 13627 #pragma omp target parallel for 13628 for (int i = 0; i < 10; ++i) { 13629 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13630 a++; 13631 } 13632 #pragma omp target parallel for 13633 for (int i = 0; i < 10; ++i) { 13634 #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?}} 13635 for (int j = 0; j < 10; ++j) 13636 ; 13637 } 13638 #pragma omp target parallel for 13639 for (int i = 0; i < 10; ++i) { 13640 #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?}} 13641 for (int j = 0; j < 10; ++j) 13642 ; 13643 } 13644 #pragma omp target parallel for 13645 for (int i = 0; i < 10; ++i) { 13646 #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?}} 13647 for (int j = 0; j < 10; ++j) 13648 ; 13649 } 13650 #pragma omp target parallel for 13651 for (int i = 0; i < 10; ++i) { 13652 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13653 for (int j = 0; j < 10; ++j) 13654 ; 13655 } 13656 #pragma omp target parallel for 13657 for (int i = 0; i < 10; ++i) { 13658 #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?}} 13659 for (int j = 0; j < 10; ++j) 13660 ; 13661 } 13662 #pragma omp target parallel for 13663 for (int i = 0; i < 10; ++i) { 13664 #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?}} 13665 for (int j = 0; j < 10; ++j) 13666 ; 13667 } 13668 #pragma omp target parallel for 13669 for (int i = 0; i < 10; ++i) { 13670 #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?}} 13671 for (int j = 0; j < 10; ++j) 13672 ; 13673 } 13674 #pragma omp target parallel for 13675 for (int i = 0; i < 10; ++i) { 13676 #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?}} 13677 for (int j = 0; j < 10; ++j) 13678 ; 13679 } 13680 #pragma omp target parallel for 13681 for (int i = 0; i < 10; ++i) { 13682 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 13683 a++; 13684 } 13685 #pragma omp target parallel for 13686 for (int i = 0; i < 10; ++i) { 13687 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 13688 for (int j = 0; j < 10; ++j) 13689 ; 13690 } 13691 #pragma omp target parallel for 13692 for (int i = 0; i < 10; ++i) { 13693 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13694 for (int j = 0; j < 10; ++j) 13695 ; 13696 } 13697 #pragma omp target parallel for 13698 for (int i = 0; i < 10; ++i) { 13699 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13700 for (int j = 0; j < 10; ++j) 13701 ; 13702 } 13703 #pragma omp target parallel for 13704 for (int i = 0; i < 10; ++i) { 13705 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13706 for (int j = 0; j < 10; ++j) 13707 ; 13708 } 13709 13710 // TEAMS DIRECTIVE 13711 #pragma omp target 13712 #pragma omp teams 13713 #pragma omp parallel 13714 bar(); 13715 #pragma omp target 13716 #pragma omp teams 13717 #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?}} 13718 for (int i = 0; i < 10; ++i) 13719 ; 13720 #pragma omp target 13721 #pragma omp teams 13722 #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?}} 13723 for (int i = 0; i < 10; ++i) 13724 ; 13725 #pragma omp target 13726 #pragma omp teams 13727 #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?}} 13728 for (int i = 0; i < 10; ++i) 13729 ; 13730 #pragma omp target 13731 #pragma omp teams 13732 #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?}} 13733 { 13734 bar(); 13735 } 13736 #pragma omp target 13737 #pragma omp teams 13738 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 13739 { 13740 bar(); 13741 } 13742 #pragma omp target 13743 #pragma omp teams 13744 #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?}} 13745 bar(); 13746 13747 #pragma omp target 13748 #pragma omp teams 13749 #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?}} 13750 { 13751 bar(); 13752 } 13753 #pragma omp target 13754 #pragma omp teams 13755 #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?}} 13756 { 13757 bar(); 13758 } 13759 #pragma omp target 13760 #pragma omp teams 13761 #pragma omp parallel for 13762 for (int i = 0; i < 10; ++i) 13763 ; 13764 #pragma omp target 13765 #pragma omp teams 13766 #pragma omp parallel for simd 13767 for (int i = 0; i < 10; ++i) 13768 ; 13769 #pragma omp target 13770 #pragma omp teams 13771 #pragma omp parallel sections 13772 { 13773 bar(); 13774 } 13775 #pragma omp target 13776 #pragma omp teams 13777 #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?}} 13778 { 13779 bar(); 13780 } 13781 #pragma omp target 13782 #pragma omp teams 13783 { 13784 #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?}} 13785 bar(); 13786 } 13787 #pragma omp target 13788 #pragma omp teams 13789 { 13790 #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?}} 13791 bar(); 13792 } 13793 #pragma omp target 13794 #pragma omp teams 13795 { 13796 #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?}} 13797 bar(); 13798 } 13799 #pragma omp target 13800 #pragma omp teams 13801 { 13802 #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?}} 13803 bar(); 13804 } 13805 #pragma omp target 13806 #pragma omp teams 13807 { 13808 #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?}} 13809 bar(); 13810 } 13811 #pragma omp target 13812 #pragma omp teams 13813 { 13814 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 13815 ++a; 13816 } 13817 #pragma omp target 13818 #pragma omp teams 13819 { 13820 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13821 ++a; 13822 } 13823 #pragma omp target 13824 #pragma omp teams 13825 { 13826 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13827 ++a; 13828 } 13829 #pragma omp target 13830 #pragma omp teams 13831 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13832 for (int i = 0; i < 10; ++i) 13833 ; 13834 #pragma omp target 13835 #pragma omp teams 13836 { 13837 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13838 } 13839 #pragma omp target 13840 #pragma omp teams 13841 { 13842 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13843 } 13844 #pragma omp target 13845 #pragma omp teams 13846 { 13847 #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?}} 13848 ++a; 13849 } 13850 #pragma omp target 13851 #pragma omp teams 13852 { 13853 #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?}} 13854 for (int i = 0; i < 10; ++i) 13855 ++a; 13856 } 13857 #pragma omp target 13858 #pragma omp teams 13859 #pragma omp distribute 13860 for (int i = 0; i < 10; ++i) 13861 ; 13862 #pragma omp target 13863 #pragma omp teams 13864 #pragma omp distribute 13865 for (int i = 0; i < 10; ++i) 13866 ; 13867 #pragma omp distribute 13868 for (int j = 0; j < 10; ++j) 13869 ; 13870 #pragma omp target 13871 #pragma omp teams 13872 { 13873 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13874 ++a; 13875 } 13876 #pragma omp target 13877 #pragma omp teams 13878 #pragma omp distribute parallel for 13879 for (int i = 0; i < 10; ++i) 13880 ; 13881 #pragma omp target 13882 #pragma omp teams 13883 { 13884 #pragma omp distribute parallel for 13885 for (int i = 0; i < 10; ++i) 13886 ; 13887 #pragma omp distribute parallel for 13888 for (int j = 0; j < 10; ++j) 13889 ; 13890 } 13891 #pragma omp target 13892 #pragma omp teams 13893 { 13894 #pragma omp distribute parallel for simd 13895 for (int i = 0; i < 10; ++i) 13896 ; 13897 #pragma omp distribute parallel for simd 13898 for (int j = 0; j < 10; ++j) 13899 ; 13900 } 13901 #pragma omp target 13902 #pragma omp teams 13903 { 13904 #pragma omp distribute simd 13905 for (int i = 0; i < 10; ++i) 13906 ; 13907 #pragma omp distribute simd 13908 for (int j = 0; j < 10; ++j) 13909 ; 13910 } 13911 #pragma omp target 13912 #pragma omp teams 13913 { 13914 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13915 for (int i = 0; i < 10; ++i) 13916 ; 13917 } 13918 #pragma omp target 13919 #pragma omp teams 13920 { 13921 #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?}} 13922 for (int i = 0; i < 10; ++i) 13923 ; 13924 } 13925 #pragma omp target 13926 #pragma omp teams 13927 { 13928 #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?}} 13929 for (int i = 0; i < 10; ++i) 13930 ; 13931 } 13932 #pragma omp target 13933 #pragma omp teams 13934 { 13935 #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?}} 13936 for (int i = 0; i < 10; ++i) 13937 ; 13938 } 13939 #pragma omp target 13940 #pragma omp teams 13941 { 13942 #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?}} 13943 for (int i = 0; i < 10; ++i) 13944 ; 13945 } 13946 #pragma omp target 13947 #pragma omp teams 13948 { 13949 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13950 a++; 13951 } 13952 #pragma omp target 13953 #pragma omp teams 13954 { 13955 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13956 for (int i = 0; i < 10; ++i) 13957 ; 13958 } 13959 #pragma omp target 13960 #pragma omp teams 13961 { 13962 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13963 for (int i = 0; i < 10; ++i) 13964 ; 13965 } 13966 #pragma omp target 13967 #pragma omp teams 13968 { 13969 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13970 for (int i = 0; i < 10; ++i) 13971 ; 13972 } 13973 #pragma omp target 13974 #pragma omp teams 13975 { 13976 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13977 for (int i = 0; i < 10; ++i) 13978 ; 13979 } 13980 13981 // TASKLOOP DIRECTIVE 13982 #pragma omp taskloop 13983 for (int i = 0; i < 10; ++i) { 13984 #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?}} 13985 for (int i = 0; i < 10; ++i) 13986 ; 13987 } 13988 #pragma omp taskloop 13989 for (int i = 0; i < 10; ++i) { 13990 #pragma omp simd 13991 for (int i = 0; i < 10; ++i) 13992 ; 13993 } 13994 #pragma omp taskloop 13995 for (int i = 0; i < 10; ++i) { 13996 #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?}} 13997 for (int i = 0; i < 10; ++i) 13998 ; 13999 } 14000 #pragma omp taskloop 14001 for (int i = 0; i < 10; ++i) { 14002 #pragma omp parallel 14003 for (int i = 0; i < 10; ++i) 14004 ; 14005 } 14006 #pragma omp taskloop 14007 for (int i = 0; i < 10; ++i) { 14008 #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?}} 14009 { 14010 bar(); 14011 } 14012 } 14013 #pragma omp taskloop 14014 for (int i = 0; i < 10; ++i) { 14015 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 14016 { 14017 bar(); 14018 } 14019 } 14020 #pragma omp taskloop 14021 for (int i = 0; i < 10; ++i) { 14022 #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?}} 14023 { 14024 bar(); 14025 } 14026 } 14027 14028 #pragma omp taskloop 14029 for (int i = 0; i < 10; ++i) { 14030 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14031 { 14032 bar(); 14033 } 14034 } 14035 #pragma omp taskloop 14036 for (int i = 0; i < 10; ++i) { 14037 #pragma omp critical 14038 { 14039 bar(); 14040 } 14041 } 14042 #pragma omp taskloop 14043 for (int i = 0; i < 10; ++i) { 14044 #pragma omp parallel 14045 { 14046 #pragma omp single // OK 14047 { 14048 bar(); 14049 } 14050 #pragma omp for // OK 14051 for (int i = 0; i < 10; ++i) 14052 ; 14053 #pragma omp sections // OK 14054 { 14055 bar(); 14056 } 14057 } 14058 } 14059 #pragma omp taskloop 14060 for (int i = 0; i < 10; ++i) { 14061 #pragma omp parallel for 14062 for (int i = 0; i < 10; ++i) 14063 ; 14064 } 14065 #pragma omp taskloop 14066 for (int i = 0; i < 10; ++i) { 14067 #pragma omp parallel for simd 14068 for (int i = 0; i < 10; ++i) 14069 ; 14070 } 14071 #pragma omp taskloop 14072 for (int i = 0; i < 10; ++i) { 14073 #pragma omp parallel sections 14074 { 14075 bar(); 14076 } 14077 } 14078 #pragma omp taskloop 14079 for (int i = 0; i < 10; ++i) { 14080 #pragma omp task 14081 { 14082 bar(); 14083 } 14084 } 14085 #pragma omp taskloop 14086 for (int i = 0; i < 10; ++i) { 14087 #pragma omp taskyield 14088 bar(); 14089 } 14090 #pragma omp taskloop 14091 for (int i = 0; i < 10; ++i) { 14092 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14093 bar(); 14094 } 14095 #pragma omp taskloop 14096 for (int i = 0; i < 10; ++i) { 14097 #pragma omp taskwait 14098 bar(); 14099 } 14100 #pragma omp taskloop 14101 for (int i = 0; i < 10; ++i) { 14102 #pragma omp flush 14103 bar(); 14104 } 14105 #pragma omp taskloop 14106 for (int i = 0; i < 10; ++i) { 14107 #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?}} 14108 bar(); 14109 } 14110 #pragma omp taskloop 14111 for (int i = 0; i < 10; ++i) { 14112 #pragma omp atomic 14113 ++a; 14114 } 14115 #pragma omp taskloop 14116 for (int i = 0; i < 10; ++i) { 14117 #pragma omp target 14118 ++a; 14119 } 14120 #pragma omp taskloop 14121 for (int i = 0; i < 10; ++i) { 14122 #pragma omp target parallel 14123 ++a; 14124 } 14125 #pragma omp taskloop 14126 for (int i = 0; i < 10; ++i) { 14127 #pragma omp target parallel for 14128 for (int i = 0; i < 10; ++i) 14129 ; 14130 } 14131 #pragma omp taskloop 14132 for (int i = 0; i < 10; ++i) { 14133 #pragma omp target enter data map(to: a) 14134 ++a; 14135 } 14136 #pragma omp taskloop 14137 for (int i = 0; i < 10; ++i) { 14138 #pragma omp target exit data map(from: a) 14139 ++a; 14140 } 14141 #pragma omp taskloop 14142 for (int i = 0; i < 10; ++i) { 14143 #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?}} 14144 ++a; 14145 } 14146 #pragma omp taskloop 14147 for (int i = 0; i < 10; ++i) { 14148 #pragma omp taskloop 14149 for (int i = 0; i < 10; ++i) 14150 ++a; 14151 } 14152 #pragma omp taskloop 14153 for (int i = 0; i < 10; ++i) { 14154 #pragma omp target update to(a) 14155 ++a; 14156 } 14157 #pragma omp taskloop 14158 for (int i = 0; i < 10; ++i) { 14159 #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?}} 14160 for (int i = 0; i < 10; ++i) 14161 ; 14162 } 14163 #pragma omp taskloop 14164 for (int i = 0; i < 10; ++i) { 14165 #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?}} 14166 for (int i = 0; i < 10; ++i) 14167 ; 14168 } 14169 #pragma omp taskloop 14170 for (int i = 0; i < 10; ++i) { 14171 #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?}} 14172 for (int i = 0; i < 10; ++i) 14173 ; 14174 } 14175 #pragma omp taskloop 14176 for (int i = 0; i < 10; ++i) { 14177 #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?}} 14178 for (int i = 0; i < 10; ++i) 14179 ; 14180 } 14181 #pragma omp taskloop 14182 for (int i = 0; i < 10; ++i) { 14183 #pragma omp target simd // OK 14184 for (int i = 0; i < 10; ++i) 14185 ; 14186 } 14187 #pragma omp taskloop 14188 for (int i = 0; i < 10; ++i) { 14189 #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?}} 14190 for (int i = 0; i < 10; ++i) 14191 ; 14192 } 14193 #pragma omp taskloop 14194 for (int i = 0; i < 10; ++i) { 14195 #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?}} 14196 for (int i = 0; i < 10; ++i) 14197 ; 14198 } 14199 #pragma omp taskloop 14200 for (int i = 0; i < 10; ++i) { 14201 #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?}} 14202 for (int i = 0; i < 10; ++i) 14203 ; 14204 } 14205 #pragma omp taskloop 14206 for (int i = 0; i < 10; ++i) { 14207 #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?}} 14208 for (int i = 0; i < 10; ++i) 14209 ; 14210 } 14211 #pragma omp taskloop 14212 for (int i = 0; i < 10; ++i) { 14213 #pragma omp target teams // OK 14214 a++; 14215 } 14216 #pragma omp taskloop 14217 for (int i = 0; i < 10; ++i) { 14218 #pragma omp target teams distribute // OK 14219 for (int i = 0; i < 10; ++i) 14220 ; 14221 } 14222 #pragma omp taskloop 14223 for (int i = 0; i < 10; ++i) { 14224 #pragma omp target teams distribute parallel for // OK 14225 for (int i = 0; i < 10; ++i) 14226 ; 14227 } 14228 #pragma omp taskloop 14229 for (int i = 0; i < 10; ++i) { 14230 #pragma omp target teams distribute parallel for simd // OK 14231 for (int i = 0; i < 10; ++i) 14232 ; 14233 } 14234 #pragma omp taskloop 14235 for (int i = 0; i < 10; ++i) { 14236 #pragma omp target teams distribute simd // OK 14237 for (int i = 0; i < 10; ++i) 14238 ; 14239 } 14240 14241 // DISTRIBUTE DIRECTIVE 14242 #pragma omp target 14243 #pragma omp teams 14244 #pragma omp distribute 14245 for (int i = 0; i < 10; ++i) { 14246 #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?}} 14247 for (int i = 0; i < 10; ++i) 14248 ; 14249 } 14250 #pragma omp target 14251 #pragma omp teams 14252 #pragma omp distribute 14253 for (int i = 0; i < 10; ++i) { 14254 #pragma omp for 14255 for (int i = 0; i < 10; ++i) 14256 ; 14257 } 14258 #pragma omp target 14259 #pragma omp teams 14260 #pragma omp distribute 14261 for (int i = 0; i < 10; ++i) { 14262 #pragma omp simd 14263 for (int i = 0; i < 10; ++i) 14264 ; 14265 } 14266 #pragma omp target 14267 #pragma omp teams 14268 #pragma omp distribute 14269 for (int i = 0; i < 10; ++i) { 14270 #pragma omp for simd 14271 for (int i = 0; i < 10; ++i) 14272 ; 14273 } 14274 #pragma omp target 14275 #pragma omp teams 14276 #pragma omp distribute 14277 for (int i = 0; i < 10; ++i) { 14278 #pragma omp parallel 14279 for (int i = 0; i < 10; ++i) 14280 ; 14281 } 14282 #pragma omp target 14283 #pragma omp teams 14284 #pragma omp distribute 14285 for (int i = 0; i < 10; ++i) { 14286 #pragma omp sections 14287 { 14288 bar(); 14289 } 14290 } 14291 #pragma omp target 14292 #pragma omp teams 14293 #pragma omp distribute 14294 for (int i = 0; i < 10; ++i) { 14295 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 14296 { 14297 bar(); 14298 } 14299 } 14300 #pragma omp target 14301 #pragma omp teams 14302 #pragma omp distribute 14303 for (int i = 0; i < 10; ++i) { 14304 #pragma omp single 14305 { 14306 bar(); 14307 } 14308 } 14309 #pragma omp target 14310 #pragma omp teams 14311 #pragma omp distribute 14312 for (int i = 0; i < 10; ++i) { 14313 #pragma omp master 14314 { 14315 bar(); 14316 } 14317 } 14318 #pragma omp target 14319 #pragma omp teams 14320 #pragma omp distribute 14321 for (int i = 0; i < 10; ++i) { 14322 #pragma omp critical 14323 { 14324 bar(); 14325 } 14326 } 14327 #pragma omp target 14328 #pragma omp teams 14329 #pragma omp distribute 14330 for (int i = 0; i < 10; ++i) { 14331 #pragma omp parallel 14332 { 14333 #pragma omp single 14334 { 14335 bar(); 14336 } 14337 } 14338 } 14339 #pragma omp target 14340 #pragma omp teams 14341 #pragma omp distribute 14342 for (int i = 0; i < 10; ++i) { 14343 #pragma omp parallel for 14344 for (int i = 0; i < 10; ++i) 14345 ; 14346 } 14347 #pragma omp target 14348 #pragma omp teams 14349 #pragma omp distribute 14350 for (int i = 0; i < 10; ++i) { 14351 #pragma omp parallel for simd 14352 for (int i = 0; i < 10; ++i) 14353 ; 14354 } 14355 #pragma omp target 14356 #pragma omp teams 14357 #pragma omp distribute 14358 for (int i = 0; i < 10; ++i) { 14359 #pragma omp parallel sections 14360 { 14361 bar(); 14362 } 14363 } 14364 #pragma omp target 14365 #pragma omp teams 14366 #pragma omp distribute 14367 for (int i = 0; i < 10; ++i) { 14368 #pragma omp task 14369 { 14370 bar(); 14371 } 14372 } 14373 #pragma omp target 14374 #pragma omp teams 14375 #pragma omp distribute 14376 for (int i = 0; i < 10; ++i) { 14377 #pragma omp taskyield 14378 bar(); 14379 } 14380 #pragma omp target 14381 #pragma omp teams 14382 #pragma omp distribute 14383 for (int i = 0; i < 10; ++i) { 14384 #pragma omp barrier 14385 bar(); 14386 } 14387 #pragma omp target 14388 #pragma omp teams 14389 #pragma omp distribute 14390 for (int i = 0; i < 10; ++i) { 14391 #pragma omp taskwait 14392 bar(); 14393 } 14394 #pragma omp target 14395 #pragma omp teams 14396 #pragma omp distribute 14397 for (int i = 0; i < 10; ++i) { 14398 #pragma omp flush 14399 bar(); 14400 } 14401 #pragma omp target 14402 #pragma omp teams 14403 #pragma omp distribute 14404 for (int i = 0; i < 10; ++i) { 14405 #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?}} 14406 bar(); 14407 } 14408 #pragma omp target 14409 #pragma omp teams 14410 #pragma omp distribute 14411 for (int i = 0; i < 10; ++i) { 14412 #pragma omp atomic 14413 ++a; 14414 } 14415 #pragma omp target 14416 #pragma omp teams 14417 #pragma omp distribute 14418 for (int i = 0; i < 10; ++i) { 14419 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14420 ++a; 14421 } 14422 #pragma omp target 14423 #pragma omp teams 14424 #pragma omp distribute 14425 for (int i = 0; i < 10; ++i) { 14426 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14427 ++a; 14428 } 14429 #pragma omp target 14430 #pragma omp teams 14431 #pragma omp distribute 14432 for (int i = 0; i < 10; ++i) { 14433 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14434 for (int i = 0; i < 10; ++i) 14435 ; 14436 } 14437 #pragma omp target 14438 #pragma omp teams 14439 #pragma omp distribute 14440 for (int i = 0; i < 10; ++i) { 14441 #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?}} 14442 ++a; 14443 } 14444 #pragma omp target 14445 #pragma omp teams 14446 #pragma omp distribute 14447 for (int i = 0; i < 10; ++i) { 14448 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14449 ++a; 14450 } 14451 #pragma omp target 14452 #pragma omp teams 14453 #pragma omp distribute 14454 for (int i = 0; i < 10; ++i) { 14455 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14456 ++a; 14457 } 14458 #pragma omp target 14459 #pragma omp teams 14460 #pragma omp distribute 14461 for (int i = 0; i < 10; ++i) { 14462 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14463 ++a; 14464 } 14465 #pragma omp target 14466 #pragma omp teams 14467 #pragma omp distribute 14468 for (int i = 0; i < 10; ++i) { 14469 #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?}} 14470 for (int i = 0; i < 10; ++i) 14471 ++a; 14472 } 14473 #pragma omp target 14474 #pragma omp teams 14475 #pragma omp distribute 14476 for (int i = 0; i < 10; ++i) { 14477 #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?}} 14478 for (int i = 0; i < 10; ++i) 14479 ++a; 14480 } 14481 #pragma omp target 14482 #pragma omp teams 14483 #pragma omp distribute 14484 for (int i = 0; i < 10; ++i) { 14485 #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?}} 14486 for (int i = 0; i < 10; ++i) 14487 ++a; 14488 } 14489 #pragma omp target 14490 #pragma omp teams 14491 #pragma omp distribute 14492 for (int i = 0; i < 10; ++i) { 14493 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14494 for (int i = 0; i < 10; ++i) 14495 ++a; 14496 } 14497 #pragma omp target 14498 #pragma omp teams 14499 #pragma omp distribute 14500 for (int i = 0; i < 10; ++i) { 14501 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14502 for (int i = 0; i < 10; ++i) 14503 ++a; 14504 } 14505 #pragma omp target 14506 #pragma omp teams 14507 #pragma omp distribute 14508 for (int i = 0; i < 10; ++i) { 14509 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14510 for (int i = 0; i < 10; ++i) 14511 ++a; 14512 } 14513 #pragma omp target 14514 #pragma omp teams 14515 #pragma omp distribute 14516 for (int i = 0; i < 10; ++i) { 14517 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14518 for (int i = 0; i < 10; ++i) 14519 ++a; 14520 } 14521 #pragma omp target 14522 #pragma omp teams 14523 #pragma omp distribute 14524 for (int i = 0; i < 10; ++i) { 14525 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14526 for (int i = 0; i < 10; ++i) 14527 ++a; 14528 } 14529 #pragma omp target 14530 #pragma omp teams 14531 #pragma omp distribute 14532 for (int i = 0; i < 10; ++i) { 14533 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14534 for (int i = 0; i < 10; ++i) 14535 ++a; 14536 } 14537 #pragma omp target 14538 #pragma omp teams 14539 #pragma omp distribute 14540 for (int i = 0; i < 10; ++i) { 14541 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14542 for (int i = 0; i < 10; ++i) 14543 ++a; 14544 } 14545 #pragma omp target 14546 #pragma omp teams 14547 #pragma omp distribute 14548 for (int i = 0; i < 10; ++i) { 14549 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14550 for (int i = 0; i < 10; ++i) 14551 ++a; 14552 } 14553 14554 // DISTRIBUTE PARALLEL FOR DIRECTIVE 14555 #pragma omp target 14556 #pragma omp teams 14557 #pragma omp distribute parallel for 14558 for (int i = 0; i < 10; ++i) { 14559 #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?}} 14560 for (int i = 0; i < 10; ++i) 14561 ; 14562 } 14563 14564 #pragma omp target 14565 #pragma omp teams 14566 #pragma omp distribute parallel for 14567 for (int i = 0; i < 10; ++i) { 14568 #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?}} 14569 for (int i = 0; i < 10; ++i) 14570 ; 14571 } 14572 #pragma omp target 14573 #pragma omp teams 14574 #pragma omp distribute parallel for 14575 for (int i = 0; i < 10; ++i) { 14576 #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?}} 14577 for (int i = 0; i < 10; ++i) 14578 ; 14579 } 14580 #pragma omp target 14581 #pragma omp teams 14582 #pragma omp distribute parallel for 14583 for (int i = 0; i < 10; ++i) { 14584 #pragma omp simd 14585 for (int i = 0; i < 10; ++i) 14586 ; 14587 } 14588 #pragma omp target 14589 #pragma omp teams 14590 #pragma omp distribute parallel for 14591 for (int i = 0; i < 10; ++i) { 14592 #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?}} 14593 for (int i = 0; i < 10; ++i) 14594 ; 14595 } 14596 #pragma omp target 14597 #pragma omp teams 14598 #pragma omp distribute parallel for 14599 for (int i = 0; i < 10; ++i) { 14600 #pragma omp parallel 14601 for (int i = 0; i < 10; ++i) 14602 ; 14603 } 14604 #pragma omp target 14605 #pragma omp teams 14606 #pragma omp distribute parallel for 14607 for (int i = 0; i < 10; ++i) { 14608 #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?}} 14609 { 14610 bar(); 14611 } 14612 } 14613 #pragma omp target 14614 #pragma omp teams 14615 #pragma omp distribute parallel for 14616 for (int i = 0; i < 10; ++i) { 14617 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 14618 { 14619 bar(); 14620 } 14621 } 14622 #pragma omp target 14623 #pragma omp teams 14624 #pragma omp distribute parallel for 14625 for (int i = 0; i < 10; ++i) { 14626 #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?}} 14627 { 14628 bar(); 14629 } 14630 } 14631 #pragma omp target 14632 #pragma omp teams 14633 #pragma omp distribute parallel for 14634 for (int i = 0; i < 10; ++i) { 14635 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14636 { 14637 bar(); 14638 } 14639 } 14640 #pragma omp target 14641 #pragma omp teams 14642 #pragma omp distribute parallel for 14643 for (int i = 0; i < 10; ++i) { 14644 #pragma omp critical 14645 { 14646 bar(); 14647 } 14648 } 14649 #pragma omp target 14650 #pragma omp teams 14651 #pragma omp distribute parallel for 14652 for (int i = 0; i < 10; ++i) { 14653 #pragma omp parallel 14654 { 14655 #pragma omp single 14656 { 14657 bar(); 14658 } 14659 } 14660 } 14661 #pragma omp target 14662 #pragma omp teams 14663 #pragma omp distribute parallel for 14664 for (int i = 0; i < 10; ++i) { 14665 #pragma omp parallel for 14666 for (int i = 0; i < 10; ++i) 14667 ; 14668 } 14669 #pragma omp target 14670 #pragma omp teams 14671 #pragma omp distribute parallel for 14672 for (int i = 0; i < 10; ++i) { 14673 #pragma omp parallel for simd 14674 for (int i = 0; i < 10; ++i) 14675 ; 14676 } 14677 #pragma omp target 14678 #pragma omp teams 14679 #pragma omp distribute parallel for 14680 for (int i = 0; i < 10; ++i) { 14681 #pragma omp parallel sections 14682 { 14683 bar(); 14684 } 14685 } 14686 #pragma omp target 14687 #pragma omp teams 14688 #pragma omp distribute parallel for 14689 for (int i = 0; i < 10; ++i) { 14690 #pragma omp task 14691 { 14692 bar(); 14693 } 14694 } 14695 #pragma omp target 14696 #pragma omp teams 14697 #pragma omp distribute parallel for 14698 for (int i = 0; i < 10; ++i) { 14699 #pragma omp taskyield 14700 bar(); 14701 } 14702 #pragma omp target 14703 #pragma omp teams 14704 #pragma omp distribute parallel for 14705 for (int i = 0; i < 10; ++i) { 14706 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14707 bar(); 14708 } 14709 #pragma omp target 14710 #pragma omp teams 14711 #pragma omp distribute parallel for 14712 for (int i = 0; i < 10; ++i) { 14713 #pragma omp taskwait 14714 bar(); 14715 } 14716 #pragma omp target 14717 #pragma omp teams 14718 #pragma omp distribute parallel for 14719 for (int i = 0; i < 10; ++i) { 14720 #pragma omp flush 14721 bar(); 14722 } 14723 #pragma omp target 14724 #pragma omp teams 14725 #pragma omp distribute parallel for 14726 for (int i = 0; i < 10; ++i) { 14727 #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?}} 14728 bar(); 14729 } 14730 #pragma omp target 14731 #pragma omp teams 14732 #pragma omp distribute parallel for 14733 for (int i = 0; i < 10; ++i) { 14734 #pragma omp atomic 14735 ++a; 14736 } 14737 #pragma omp target 14738 #pragma omp teams 14739 #pragma omp distribute parallel for 14740 for (int i = 0; i < 10; ++i) { 14741 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14742 ++a; 14743 } 14744 #pragma omp target 14745 #pragma omp teams 14746 #pragma omp distribute parallel for 14747 for (int i = 0; i < 10; ++i) { 14748 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14749 ++a; 14750 } 14751 #pragma omp target 14752 #pragma omp teams 14753 #pragma omp distribute parallel for 14754 for (int i = 0; i < 10; ++i) { 14755 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14756 for (int i = 0; i < 10; ++i) 14757 ; 14758 } 14759 #pragma omp target 14760 #pragma omp teams 14761 #pragma omp distribute parallel for 14762 for (int i = 0; i < 10; ++i) { 14763 #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?}} 14764 ++a; 14765 } 14766 #pragma omp target 14767 #pragma omp teams 14768 #pragma omp distribute parallel for 14769 for (int i = 0; i < 10; ++i) { 14770 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14771 ++a; 14772 } 14773 #pragma omp target 14774 #pragma omp teams 14775 #pragma omp distribute parallel for 14776 for (int i = 0; i < 10; ++i) { 14777 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14778 ++a; 14779 } 14780 #pragma omp target 14781 #pragma omp teams 14782 #pragma omp distribute parallel for 14783 for (int i = 0; i < 10; ++i) { 14784 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14785 ++a; 14786 } 14787 #pragma omp target 14788 #pragma omp teams 14789 #pragma omp distribute parallel for 14790 for (int i = 0; i < 10; ++i) { 14791 #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?}} 14792 for (int i = 0; i < 10; ++i) 14793 ++a; 14794 } 14795 #pragma omp target 14796 #pragma omp teams 14797 #pragma omp distribute parallel for 14798 for (int i = 0; i < 10; ++i) { 14799 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14800 for (int i = 0; i < 10; ++i) 14801 ++a; 14802 } 14803 #pragma omp target 14804 #pragma omp teams 14805 #pragma omp distribute parallel for 14806 for (int i = 0; i < 10; ++i) { 14807 #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?}} 14808 for (int i = 0; i < 10; ++i) 14809 ++a; 14810 } 14811 #pragma omp target 14812 #pragma omp teams 14813 #pragma omp distribute parallel for 14814 for (int i = 0; i < 10; ++i) { 14815 #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?}} 14816 for (int i = 0; i < 10; ++i) 14817 ++a; 14818 } 14819 #pragma omp target 14820 #pragma omp teams 14821 #pragma omp distribute parallel for 14822 for (int i = 0; i < 10; ++i) { 14823 #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?}} 14824 for (int i = 0; i < 10; ++i) 14825 ++a; 14826 } 14827 #pragma omp target 14828 #pragma omp teams 14829 #pragma omp distribute parallel for 14830 for (int i = 0; i < 10; ++i) { 14831 #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?}} 14832 for (int i = 0; i < 10; ++i) 14833 ++a; 14834 } 14835 #pragma omp target 14836 #pragma omp teams 14837 #pragma omp distribute parallel for 14838 for (int i = 0; i < 10; ++i) { 14839 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14840 ++a; 14841 } 14842 #pragma omp target 14843 #pragma omp teams 14844 #pragma omp distribute parallel for 14845 for (int i = 0; i < 10; ++i) { 14846 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14847 for (int i = 0; i < 10; ++i) 14848 ++a; 14849 } 14850 #pragma omp target 14851 #pragma omp teams 14852 #pragma omp distribute parallel for 14853 for (int i = 0; i < 10; ++i) { 14854 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14855 for (int i = 0; i < 10; ++i) 14856 ++a; 14857 } 14858 #pragma omp target 14859 #pragma omp teams 14860 #pragma omp distribute parallel for 14861 for (int i = 0; i < 10; ++i) { 14862 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14863 for (int i = 0; i < 10; ++i) 14864 ++a; 14865 } 14866 #pragma omp target 14867 #pragma omp teams 14868 #pragma omp distribute parallel for 14869 for (int i = 0; i < 10; ++i) { 14870 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14871 for (int i = 0; i < 10; ++i) 14872 ++a; 14873 } 14874 14875 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 14876 #pragma omp target 14877 #pragma omp teams 14878 #pragma omp distribute parallel for simd 14879 for (int i = 0; i < 10; ++i) { 14880 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14881 for (int i = 0; i < 10; ++i) 14882 ; 14883 } 14884 #pragma omp target 14885 #pragma omp teams 14886 #pragma omp distribute parallel for simd 14887 for (int i = 0; i < 10; ++i) { 14888 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14889 for (int i = 0; i < 10; ++i) 14890 ; 14891 } 14892 #pragma omp target 14893 #pragma omp teams 14894 #pragma omp distribute parallel for simd 14895 for (int i = 0; i < 10; ++i) { 14896 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14897 for (int i = 0; i < 10; ++i) 14898 ; 14899 } 14900 #pragma omp target 14901 #pragma omp teams 14902 #pragma omp distribute parallel for simd 14903 for (int i = 0; i < 10; ++i) { 14904 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 14905 for (int i = 0; i < 10; ++i) 14906 ; 14907 } 14908 #pragma omp target 14909 #pragma omp teams 14910 #pragma omp distribute parallel for simd 14911 for (int i = 0; i < 10; ++i) { 14912 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14913 for (int i = 0; i < 10; ++i) 14914 ; 14915 } 14916 #pragma omp target 14917 #pragma omp teams 14918 #pragma omp distribute parallel for simd 14919 for (int i = 0; i < 10; ++i) { 14920 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14921 for (int i = 0; i < 10; ++i) 14922 ; 14923 } 14924 #pragma omp target 14925 #pragma omp teams 14926 #pragma omp distribute parallel for simd 14927 for (int i = 0; i < 10; ++i) { 14928 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14929 { 14930 bar(); 14931 } 14932 } 14933 #pragma omp target 14934 #pragma omp teams 14935 #pragma omp distribute parallel for simd 14936 for (int i = 0; i < 10; ++i) { 14937 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14938 { 14939 bar(); 14940 } 14941 } 14942 #pragma omp target 14943 #pragma omp teams 14944 #pragma omp distribute parallel for simd 14945 for (int i = 0; i < 10; ++i) { 14946 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14947 { 14948 bar(); 14949 } 14950 } 14951 #pragma omp target 14952 #pragma omp teams 14953 #pragma omp distribute parallel for simd 14954 for (int i = 0; i < 10; ++i) { 14955 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14956 { 14957 bar(); 14958 } 14959 } 14960 #pragma omp target 14961 #pragma omp teams 14962 #pragma omp distribute parallel for simd 14963 for (int i = 0; i < 10; ++i) { 14964 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14965 { 14966 bar(); 14967 } 14968 } 14969 #pragma omp target 14970 #pragma omp teams 14971 #pragma omp distribute parallel for simd 14972 for (int i = 0; i < 10; ++i) { 14973 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14974 { 14975 #pragma omp single 14976 { 14977 bar(); 14978 } 14979 } 14980 } 14981 #pragma omp target 14982 #pragma omp teams 14983 #pragma omp distribute parallel for simd 14984 for (int i = 0; i < 10; ++i) { 14985 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14986 for (int i = 0; i < 10; ++i) 14987 ; 14988 } 14989 #pragma omp target 14990 #pragma omp teams 14991 #pragma omp distribute parallel for simd 14992 for (int i = 0; i < 10; ++i) { 14993 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14994 for (int i = 0; i < 10; ++i) 14995 ; 14996 } 14997 #pragma omp target 14998 #pragma omp teams 14999 #pragma omp distribute parallel for simd 15000 for (int i = 0; i < 10; ++i) { 15001 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15002 { 15003 bar(); 15004 } 15005 } 15006 #pragma omp target 15007 #pragma omp teams 15008 #pragma omp distribute parallel for simd 15009 for (int i = 0; i < 10; ++i) { 15010 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15011 { 15012 bar(); 15013 } 15014 } 15015 #pragma omp target 15016 #pragma omp teams 15017 #pragma omp distribute parallel for simd 15018 for (int i = 0; i < 10; ++i) { 15019 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15020 bar(); 15021 } 15022 #pragma omp target 15023 #pragma omp teams 15024 #pragma omp distribute parallel for simd 15025 for (int i = 0; i < 10; ++i) { 15026 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15027 bar(); 15028 } 15029 #pragma omp target 15030 #pragma omp teams 15031 #pragma omp distribute parallel for simd 15032 for (int i = 0; i < 10; ++i) { 15033 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15034 bar(); 15035 } 15036 #pragma omp target 15037 #pragma omp teams 15038 #pragma omp distribute parallel for simd 15039 for (int i = 0; i < 10; ++i) { 15040 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15041 bar(); 15042 } 15043 #pragma omp target 15044 #pragma omp teams 15045 #pragma omp distribute parallel for simd 15046 for (int i = 0; i < 10; ++i) { 15047 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15048 bar(); 15049 } 15050 #pragma omp target 15051 #pragma omp teams 15052 #pragma omp distribute parallel for simd 15053 for (int i = 0; i < 10; ++i) { 15054 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15055 ++a; 15056 } 15057 #pragma omp target 15058 #pragma omp teams 15059 #pragma omp distribute parallel for simd 15060 for (int i = 0; i < 10; ++i) { 15061 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15062 ++a; 15063 } 15064 #pragma omp target 15065 #pragma omp teams 15066 #pragma omp distribute parallel for simd 15067 for (int i = 0; i < 10; ++i) { 15068 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15069 ++a; 15070 } 15071 #pragma omp target 15072 #pragma omp teams 15073 #pragma omp distribute parallel for simd 15074 for (int i = 0; i < 10; ++i) { 15075 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15076 ++a; 15077 } 15078 #pragma omp target 15079 #pragma omp teams 15080 #pragma omp distribute parallel for simd 15081 for (int i = 0; i < 10; ++i) { 15082 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15083 ++a; 15084 } 15085 #pragma omp target 15086 #pragma omp teams 15087 #pragma omp distribute parallel for simd 15088 for (int i = 0; i < 10; ++i) { 15089 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15090 ++a; 15091 } 15092 #pragma omp target 15093 #pragma omp teams 15094 #pragma omp distribute parallel for simd 15095 for (int i = 0; i < 10; ++i) { 15096 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15097 ++a; 15098 } 15099 #pragma omp target 15100 #pragma omp teams 15101 #pragma omp distribute parallel for simd 15102 for (int i = 0; i < 10; ++i) { 15103 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15104 for (int i = 0; i < 10; ++i) 15105 ; 15106 } 15107 #pragma omp target 15108 #pragma omp teams 15109 #pragma omp distribute parallel for simd 15110 for (int i = 0; i < 10; ++i) { 15111 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15112 for (int i = 0; i < 10; ++i) 15113 ; 15114 } 15115 #pragma omp target 15116 #pragma omp teams 15117 #pragma omp distribute parallel for simd 15118 for (int i = 0; i < 10; ++i) { 15119 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15120 for (int i = 0; i < 10; ++i) 15121 ; 15122 } 15123 #pragma omp target 15124 #pragma omp teams 15125 #pragma omp distribute parallel for simd 15126 for (int i = 0; i < 10; ++i) { 15127 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15128 for (int i = 0; i < 10; ++i) 15129 ; 15130 } 15131 #pragma omp target 15132 #pragma omp teams 15133 #pragma omp distribute parallel for simd 15134 for (int i = 0; i < 10; ++i) { 15135 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15136 for (int i = 0; i < 10; ++i) 15137 ; 15138 } 15139 #pragma omp target 15140 #pragma omp teams 15141 #pragma omp distribute parallel for simd 15142 for (int i = 0; i < 10; ++i) { 15143 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15144 for (int i = 0; i < 10; ++i) 15145 ; 15146 } 15147 #pragma omp target 15148 #pragma omp teams 15149 #pragma omp distribute parallel for simd 15150 for (int i = 0; i < 10; ++i) { 15151 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15152 a++; 15153 } 15154 #pragma omp target 15155 #pragma omp teams 15156 #pragma omp distribute parallel for simd 15157 for (int i = 0; i < 10; ++i) { 15158 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15159 for (int i = 0; i < 10; ++i) 15160 ; 15161 } 15162 #pragma omp target 15163 #pragma omp teams 15164 #pragma omp distribute parallel for simd 15165 for (int i = 0; i < 10; ++i) { 15166 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15167 for (int i = 0; i < 10; ++i) 15168 ; 15169 } 15170 #pragma omp target 15171 #pragma omp teams 15172 #pragma omp distribute parallel for simd 15173 for (int i = 0; i < 10; ++i) { 15174 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15175 for (int i = 0; i < 10; ++i) 15176 ; 15177 } 15178 #pragma omp target 15179 #pragma omp teams 15180 #pragma omp distribute parallel for simd 15181 for (int i = 0; i < 10; ++i) { 15182 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15183 for (int i = 0; i < 10; ++i) 15184 ; 15185 } 15186 15187 // DISTRIBUTE SIMD DIRECTIVE 15188 #pragma omp target 15189 #pragma omp teams 15190 #pragma omp distribute simd 15191 for (int i = 0; i < 10; ++i) { 15192 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15193 for (int i = 0; i < 10; ++i) 15194 ; 15195 } 15196 #pragma omp target 15197 #pragma omp teams 15198 #pragma omp distribute simd 15199 for (int i = 0; i < 10; ++i) { 15200 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15201 for (int i = 0; i < 10; ++i) 15202 ; 15203 } 15204 #pragma omp target 15205 #pragma omp teams 15206 #pragma omp distribute simd 15207 for (int i = 0; i < 10; ++i) { 15208 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15209 for (int i = 0; i < 10; ++i) 15210 ; 15211 } 15212 #pragma omp target 15213 #pragma omp teams 15214 #pragma omp distribute simd 15215 for (int i = 0; i < 10; ++i) { 15216 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15217 for (int i = 0; i < 10; ++i) 15218 ; 15219 } 15220 #pragma omp target 15221 #pragma omp teams 15222 #pragma omp distribute simd 15223 for (int i = 0; i < 10; ++i) { 15224 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15225 for (int i = 0; i < 10; ++i) 15226 ; 15227 } 15228 #pragma omp target 15229 #pragma omp teams 15230 #pragma omp distribute simd 15231 for (int i = 0; i < 10; ++i) { 15232 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15233 for (int i = 0; i < 10; ++i) 15234 ; 15235 } 15236 #pragma omp target 15237 #pragma omp teams 15238 #pragma omp distribute simd 15239 for (int i = 0; i < 10; ++i) { 15240 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15241 { 15242 bar(); 15243 } 15244 } 15245 #pragma omp target 15246 #pragma omp teams 15247 #pragma omp distribute simd 15248 for (int i = 0; i < 10; ++i) { 15249 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15250 { 15251 bar(); 15252 } 15253 } 15254 #pragma omp target 15255 #pragma omp teams 15256 #pragma omp distribute simd 15257 for (int i = 0; i < 10; ++i) { 15258 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15259 { 15260 bar(); 15261 } 15262 } 15263 #pragma omp target 15264 #pragma omp teams 15265 #pragma omp distribute simd 15266 for (int i = 0; i < 10; ++i) { 15267 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15268 { 15269 bar(); 15270 } 15271 } 15272 #pragma omp target 15273 #pragma omp teams 15274 #pragma omp distribute simd 15275 for (int i = 0; i < 10; ++i) { 15276 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15277 { 15278 bar(); 15279 } 15280 } 15281 #pragma omp target 15282 #pragma omp teams 15283 #pragma omp distribute simd 15284 for (int i = 0; i < 10; ++i) { 15285 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15286 { 15287 #pragma omp single 15288 { 15289 bar(); 15290 } 15291 } 15292 } 15293 #pragma omp target 15294 #pragma omp teams 15295 #pragma omp distribute simd 15296 for (int i = 0; i < 10; ++i) { 15297 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15298 for (int i = 0; i < 10; ++i) 15299 ; 15300 } 15301 #pragma omp target 15302 #pragma omp teams 15303 #pragma omp distribute simd 15304 for (int i = 0; i < 10; ++i) { 15305 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15306 for (int i = 0; i < 10; ++i) 15307 ; 15308 } 15309 #pragma omp target 15310 #pragma omp teams 15311 #pragma omp distribute simd 15312 for (int i = 0; i < 10; ++i) { 15313 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15314 { 15315 bar(); 15316 } 15317 } 15318 #pragma omp target 15319 #pragma omp teams 15320 #pragma omp distribute simd 15321 for (int i = 0; i < 10; ++i) { 15322 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15323 { 15324 bar(); 15325 } 15326 } 15327 #pragma omp target 15328 #pragma omp teams 15329 #pragma omp distribute simd 15330 for (int i = 0; i < 10; ++i) { 15331 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15332 bar(); 15333 } 15334 #pragma omp target 15335 #pragma omp teams 15336 #pragma omp distribute simd 15337 for (int i = 0; i < 10; ++i) { 15338 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15339 bar(); 15340 } 15341 #pragma omp target 15342 #pragma omp teams 15343 #pragma omp distribute simd 15344 for (int i = 0; i < 10; ++i) { 15345 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15346 bar(); 15347 } 15348 #pragma omp target 15349 #pragma omp teams 15350 #pragma omp distribute simd 15351 for (int i = 0; i < 10; ++i) { 15352 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15353 bar(); 15354 } 15355 #pragma omp target 15356 #pragma omp teams 15357 #pragma omp distribute simd 15358 for (int i = 0; i < 10; ++i) { 15359 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15360 bar(); 15361 } 15362 #pragma omp target 15363 #pragma omp teams 15364 #pragma omp distribute simd 15365 for (int i = 0; i < 10; ++i) { 15366 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15367 ++a; 15368 } 15369 #pragma omp target 15370 #pragma omp teams 15371 #pragma omp distribute simd 15372 for (int i = 0; i < 10; ++i) { 15373 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15374 ++a; 15375 } 15376 #pragma omp target 15377 #pragma omp teams 15378 #pragma omp distribute simd 15379 for (int i = 0; i < 10; ++i) { 15380 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15381 ++a; 15382 } 15383 #pragma omp target 15384 #pragma omp teams 15385 #pragma omp distribute simd 15386 for (int i = 0; i < 10; ++i) { 15387 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15388 ++a; 15389 } 15390 #pragma omp target 15391 #pragma omp teams 15392 #pragma omp distribute simd 15393 for (int i = 0; i < 10; ++i) { 15394 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15395 ++a; 15396 } 15397 #pragma omp target 15398 #pragma omp teams 15399 #pragma omp distribute simd 15400 for (int i = 0; i < 10; ++i) { 15401 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15402 ++a; 15403 } 15404 #pragma omp target 15405 #pragma omp teams 15406 #pragma omp distribute simd 15407 for (int i = 0; i < 10; ++i) { 15408 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15409 ++a; 15410 } 15411 #pragma omp target 15412 #pragma omp teams 15413 #pragma omp distribute simd 15414 for (int i = 0; i < 10; ++i) { 15415 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15416 for (int i = 0; i < 10; ++i) 15417 ; 15418 } 15419 #pragma omp target 15420 #pragma omp teams 15421 #pragma omp distribute simd 15422 for (int i = 0; i < 10; ++i) { 15423 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15424 for (int i = 0; i < 10; ++i) 15425 ; 15426 } 15427 #pragma omp target 15428 #pragma omp teams 15429 #pragma omp distribute simd 15430 for (int i = 0; i < 10; ++i) { 15431 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15432 for (int i = 0; i < 10; ++i) 15433 ; 15434 } 15435 #pragma omp target 15436 #pragma omp teams 15437 #pragma omp distribute simd 15438 for (int i = 0; i < 10; ++i) { 15439 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15440 for (int i = 0; i < 10; ++i) 15441 ; 15442 } 15443 #pragma omp target 15444 #pragma omp teams 15445 #pragma omp distribute simd 15446 for (int i = 0; i < 10; ++i) { 15447 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15448 for (int i = 0; i < 10; ++i) 15449 ; 15450 } 15451 #pragma omp target 15452 #pragma omp teams 15453 #pragma omp distribute simd 15454 for (int i = 0; i < 10; ++i) { 15455 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15456 for (int i = 0; i < 10; ++i) 15457 ; 15458 } 15459 #pragma omp target 15460 #pragma omp teams 15461 #pragma omp distribute simd 15462 for (int i = 0; i < 10; ++i) { 15463 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15464 a++; 15465 } 15466 #pragma omp target 15467 #pragma omp teams 15468 #pragma omp distribute simd 15469 for (int i = 0; i < 10; ++i) { 15470 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15471 for (int i = 0; i < 10; ++i) 15472 ; 15473 } 15474 #pragma omp target 15475 #pragma omp teams 15476 #pragma omp distribute simd 15477 for (int i = 0; i < 10; ++i) { 15478 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15479 for (int i = 0; i < 10; ++i) 15480 ; 15481 } 15482 #pragma omp target 15483 #pragma omp teams 15484 #pragma omp distribute simd 15485 for (int i = 0; i < 10; ++i) { 15486 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15487 for (int i = 0; i < 10; ++i) 15488 ; 15489 } 15490 #pragma omp target 15491 #pragma omp teams 15492 #pragma omp distribute simd 15493 for (int i = 0; i < 10; ++i) { 15494 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15495 for (int i = 0; i < 10; ++i) 15496 ; 15497 } 15498 15499 // TARGET SIMD DIRECTIVE 15500 #pragma omp target simd 15501 for (int i = 0; i < 10; ++i) { 15502 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15503 for (int i = 0; i < 10; ++i) 15504 ; 15505 } 15506 #pragma omp target simd 15507 for (int i = 0; i < 10; ++i) { 15508 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15509 for (int i = 0; i < 10; ++i) 15510 ; 15511 } 15512 #pragma omp target simd 15513 for (int i = 0; i < 10; ++i) { 15514 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15515 for (int i = 0; i < 10; ++i) 15516 ; 15517 } 15518 #pragma omp target simd 15519 for (int i = 0; i < 10; ++i) { 15520 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15521 for (int i = 0; i < 10; ++i) 15522 ; 15523 } 15524 #pragma omp target simd 15525 for (int i = 0; i < 10; ++i) { 15526 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15527 for (int i = 0; i < 10; ++i) 15528 ; 15529 } 15530 #pragma omp target simd 15531 for (int i = 0; i < 10; ++i) { 15532 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15533 for (int i = 0; i < 10; ++i) 15534 ; 15535 } 15536 #pragma omp target simd 15537 for (int i = 0; i < 10; ++i) { 15538 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15539 { 15540 bar(); 15541 } 15542 } 15543 #pragma omp target simd 15544 for (int i = 0; i < 10; ++i) { 15545 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15546 { 15547 bar(); 15548 } 15549 } 15550 #pragma omp target simd 15551 for (int i = 0; i < 10; ++i) { 15552 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15553 { 15554 bar(); 15555 } 15556 } 15557 #pragma omp target simd 15558 for (int i = 0; i < 10; ++i) { 15559 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15560 { 15561 bar(); 15562 } 15563 } 15564 #pragma omp target simd 15565 for (int i = 0; i < 10; ++i) { 15566 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15567 { 15568 bar(); 15569 } 15570 } 15571 #pragma omp target simd 15572 for (int i = 0; i < 10; ++i) { 15573 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15574 { 15575 #pragma omp single 15576 { 15577 bar(); 15578 } 15579 } 15580 } 15581 #pragma omp target simd 15582 for (int i = 0; i < 10; ++i) { 15583 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15584 for (int i = 0; i < 10; ++i) 15585 ; 15586 } 15587 #pragma omp target simd 15588 for (int i = 0; i < 10; ++i) { 15589 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15590 for (int i = 0; i < 10; ++i) 15591 ; 15592 } 15593 #pragma omp target simd 15594 for (int i = 0; i < 10; ++i) { 15595 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15596 { 15597 bar(); 15598 } 15599 } 15600 #pragma omp target simd 15601 for (int i = 0; i < 10; ++i) { 15602 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15603 { 15604 bar(); 15605 } 15606 } 15607 #pragma omp target simd 15608 for (int i = 0; i < 10; ++i) { 15609 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15610 bar(); 15611 } 15612 #pragma omp target simd 15613 for (int i = 0; i < 10; ++i) { 15614 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15615 bar(); 15616 } 15617 #pragma omp target simd 15618 for (int i = 0; i < 10; ++i) { 15619 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15620 bar(); 15621 } 15622 #pragma omp target simd 15623 for (int i = 0; i < 10; ++i) { 15624 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15625 bar(); 15626 } 15627 #pragma omp target simd 15628 for (int i = 0; i < 10; ++i) { 15629 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15630 bar(); 15631 } 15632 #pragma omp target simd 15633 for (int i = 0; i < 10; ++i) { 15634 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15635 ++a; 15636 } 15637 #pragma omp target simd 15638 for (int i = 0; i < 10; ++i) { 15639 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15640 ++a; 15641 } 15642 #pragma omp target simd 15643 for (int i = 0; i < 10; ++i) { 15644 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15645 ++a; 15646 } 15647 #pragma omp target simd 15648 for (int i = 0; i < 10; ++i) { 15649 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15650 ++a; 15651 } 15652 #pragma omp target simd 15653 for (int i = 0; i < 10; ++i) { 15654 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15655 ++a; 15656 } 15657 #pragma omp target simd 15658 for (int i = 0; i < 10; ++i) { 15659 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15660 ++a; 15661 } 15662 #pragma omp target simd 15663 for (int i = 0; i < 10; ++i) { 15664 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15665 ++a; 15666 } 15667 #pragma omp target simd 15668 for (int i = 0; i < 10; ++i) { 15669 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15670 for (int i = 0; i < 10; ++i) 15671 ; 15672 } 15673 #pragma omp target simd 15674 for (int i = 0; i < 10; ++i) { 15675 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15676 for (int i = 0; i < 10; ++i) 15677 ; 15678 } 15679 #pragma omp target simd 15680 for (int i = 0; i < 10; ++i) { 15681 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15682 for (int i = 0; i < 10; ++i) 15683 ; 15684 } 15685 #pragma omp target simd 15686 for (int i = 0; i < 10; ++i) { 15687 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15688 for (int i = 0; i < 10; ++i) 15689 ; 15690 } 15691 #pragma omp target simd 15692 for (int i = 0; i < 10; ++i) { 15693 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15694 for (int i = 0; i < 10; ++i) 15695 ; 15696 } 15697 #pragma omp target simd 15698 for (int i = 0; i < 10; ++i) { 15699 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15700 for (int i = 0; i < 10; ++i) 15701 ; 15702 } 15703 #pragma omp target simd 15704 for (int i = 0; i < 10; ++i) { 15705 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15706 a++; 15707 } 15708 #pragma omp target simd 15709 for (int i = 0; i < 10; ++i) { 15710 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15711 for (int i = 0; i < 10; ++i) 15712 ; 15713 } 15714 #pragma omp target simd 15715 for (int i = 0; i < 10; ++i) { 15716 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15717 for (int i = 0; i < 10; ++i) 15718 ; 15719 } 15720 #pragma omp target simd 15721 for (int i = 0; i < 10; ++i) { 15722 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15723 for (int i = 0; i < 10; ++i) 15724 ; 15725 } 15726 #pragma omp target simd 15727 for (int i = 0; i < 10; ++i) { 15728 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15729 for (int i = 0; i < 10; ++i) 15730 ; 15731 } 15732 15733 // TEAMS DISTRIBUTE DIRECTIVE 15734 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 15735 for (int i = 0; i < 10; ++i) 15736 ; 15737 #pragma omp target 15738 #pragma omp teams distribute 15739 for (int i = 0; i < 10; ++i) { 15740 #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?}} 15741 for (int i = 0; i < 10; ++i) 15742 ; 15743 } 15744 #pragma omp target 15745 #pragma omp teams distribute 15746 for (int i = 0; i < 10; ++i) { 15747 #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?}} 15748 for (int i = 0; i < 10; ++i) 15749 ; 15750 } 15751 #pragma omp target 15752 #pragma omp teams distribute 15753 for (int i = 0; i < 10; ++i) { 15754 #pragma omp for // OK 15755 for (int i = 0; i < 10; ++i) 15756 ; 15757 } 15758 #pragma omp target 15759 #pragma omp teams distribute 15760 for (int i = 0; i < 10; ++i) { 15761 #pragma omp simd // OK 15762 for (int i = 0; i < 10; ++i) 15763 ; 15764 } 15765 #pragma omp target 15766 #pragma omp teams distribute 15767 for (int i = 0; i < 10; ++i) { 15768 #pragma omp for simd // OK 15769 for (int i = 0; i < 10; ++i) 15770 ; 15771 } 15772 #pragma omp target 15773 #pragma omp teams distribute 15774 for (int i = 0; i < 10; ++i) { 15775 #pragma omp parallel // OK 15776 for (int i = 0; i < 10; ++i) 15777 ; 15778 } 15779 #pragma omp target 15780 #pragma omp teams distribute 15781 for (int i = 0; i < 10; ++i) { 15782 #pragma omp sections // OK 15783 { 15784 bar(); 15785 } 15786 } 15787 #pragma omp target 15788 #pragma omp teams distribute 15789 for (int i = 0; i < 10; ++i) { 15790 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 15791 { 15792 bar(); 15793 } 15794 } 15795 #pragma omp target 15796 #pragma omp teams distribute 15797 for (int i = 0; i < 10; ++i) { 15798 #pragma omp single // OK 15799 { 15800 bar(); 15801 } 15802 } 15803 #pragma omp target 15804 #pragma omp teams distribute 15805 for (int i = 0; i < 10; ++i) { 15806 #pragma omp master // OK 15807 { 15808 bar(); 15809 } 15810 } 15811 #pragma omp target 15812 #pragma omp teams distribute 15813 for (int i = 0; i < 10; ++i) { 15814 #pragma omp critical // OK 15815 { 15816 bar(); 15817 } 15818 } 15819 #pragma omp target 15820 #pragma omp teams distribute 15821 for (int i = 0; i < 10; ++i) { 15822 #pragma omp parallel // OK 15823 { 15824 #pragma omp single 15825 { 15826 bar(); 15827 } 15828 } 15829 } 15830 #pragma omp target 15831 #pragma omp teams distribute 15832 for (int i = 0; i < 10; ++i) { 15833 #pragma omp parallel for // OK 15834 for (int i = 0; i < 10; ++i) 15835 ; 15836 } 15837 #pragma omp target 15838 #pragma omp teams distribute 15839 for (int i = 0; i < 10; ++i) { 15840 #pragma omp parallel for simd // OK 15841 for (int i = 0; i < 10; ++i) 15842 ; 15843 } 15844 #pragma omp target 15845 #pragma omp teams distribute 15846 for (int i = 0; i < 10; ++i) { 15847 #pragma omp parallel sections // OK 15848 { 15849 bar(); 15850 } 15851 } 15852 #pragma omp target 15853 #pragma omp teams distribute 15854 for (int i = 0; i < 10; ++i) { 15855 #pragma omp task // OK 15856 { 15857 bar(); 15858 } 15859 } 15860 #pragma omp target 15861 #pragma omp teams distribute 15862 for (int i = 0; i < 10; ++i) { 15863 #pragma omp taskyield // OK 15864 bar(); 15865 } 15866 #pragma omp target 15867 #pragma omp teams distribute 15868 for (int i = 0; i < 10; ++i) { 15869 #pragma omp barrier // OK 15870 bar(); 15871 } 15872 #pragma omp target 15873 #pragma omp teams distribute 15874 for (int i = 0; i < 10; ++i) { 15875 #pragma omp taskwait // OK 15876 bar(); 15877 } 15878 #pragma omp target 15879 #pragma omp teams distribute 15880 for (int i = 0; i < 10; ++i) { 15881 #pragma omp flush // OK 15882 bar(); 15883 } 15884 #pragma omp target 15885 #pragma omp teams distribute 15886 for (int i = 0; i < 10; ++i) { 15887 #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?}} 15888 bar(); 15889 } 15890 #pragma omp target 15891 #pragma omp teams distribute 15892 for (int i = 0; i < 10; ++i) { 15893 #pragma omp atomic // OK 15894 ++a; 15895 } 15896 #pragma omp target 15897 #pragma omp teams distribute 15898 for (int i = 0; i < 10; ++i) { 15899 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15900 ++a; 15901 } 15902 #pragma omp target 15903 #pragma omp teams distribute 15904 for (int i = 0; i < 10; ++i) { 15905 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15906 ++a; 15907 } 15908 #pragma omp target 15909 #pragma omp teams distribute 15910 for (int i = 0; i < 10; ++i) { 15911 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15912 for (int i = 0; i < 10; ++i) 15913 ; 15914 } 15915 #pragma omp target 15916 #pragma omp teams distribute 15917 for (int i = 0; i < 10; ++i) { 15918 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15919 ++a; 15920 } 15921 #pragma omp target 15922 #pragma omp teams distribute 15923 for (int i = 0; i < 10; ++i) { 15924 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15925 ++a; 15926 } 15927 #pragma omp target 15928 #pragma omp teams distribute 15929 for (int i = 0; i < 10; ++i) { 15930 #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?}} 15931 ++a; 15932 } 15933 #pragma omp target 15934 #pragma omp teams distribute 15935 for (int i = 0; i < 10; ++i) { 15936 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15937 ++a; 15938 } 15939 #pragma omp target 15940 #pragma omp teams distribute 15941 for (int i = 0; i < 10; ++i) { 15942 #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?}} 15943 for (int i = 0; i < 10; ++i) 15944 ++a; 15945 } 15946 #pragma omp target 15947 #pragma omp teams distribute 15948 for (int i = 0; i < 10; ++i) { 15949 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15950 for (int i = 0; i < 10; ++i) 15951 ++a; 15952 } 15953 #pragma omp target 15954 #pragma omp teams distribute 15955 for (int i = 0; i < 10; ++i) { 15956 #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?}} 15957 for (int i = 0; i < 10; ++i) 15958 ++a; 15959 } 15960 #pragma omp target 15961 #pragma omp teams distribute 15962 for (int i = 0; i < 10; ++i) { 15963 #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?}} 15964 for (int i = 0; i < 10; ++i) 15965 ++a; 15966 } 15967 #pragma omp target 15968 #pragma omp teams distribute 15969 for (int i = 0; i < 10; ++i) { 15970 #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?}} 15971 for (int i = 0; i < 10; ++i) 15972 ++a; 15973 } 15974 #pragma omp target 15975 #pragma omp teams distribute 15976 for (int i = 0; i < 10; ++i) { 15977 #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?}} 15978 for (int i = 0; i < 10; ++i) 15979 ++a; 15980 } 15981 #pragma omp target 15982 #pragma omp teams distribute 15983 for (int i = 0; i < 10; ++i) { 15984 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15985 ++a; 15986 } 15987 #pragma omp target 15988 #pragma omp teams distribute 15989 for (int i = 0; i < 10; ++i) { 15990 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15991 for (int i = 0; i < 10; ++i) 15992 ++a; 15993 } 15994 #pragma omp target 15995 #pragma omp teams distribute 15996 for (int i = 0; i < 10; ++i) { 15997 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15998 for (int i = 0; i < 10; ++i) 15999 ++a; 16000 } 16001 #pragma omp target 16002 #pragma omp teams distribute 16003 for (int i = 0; i < 10; ++i) { 16004 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16005 for (int i = 0; i < 10; ++i) 16006 ++a; 16007 } 16008 #pragma omp target 16009 #pragma omp teams distribute 16010 for (int i = 0; i < 10; ++i) { 16011 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16012 for (int i = 0; i < 10; ++i) 16013 ++a; 16014 } 16015 16016 // TEAMS DISTRIBUTE SIMD DIRECTIVE 16017 #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?}} 16018 for (int i = 0; i < 10; ++i) 16019 ; 16020 #pragma omp target 16021 #pragma omp teams distribute simd 16022 for (int i = 0; i < 10; ++i) { 16023 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16024 for (int i = 0; i < 10; ++i) 16025 ; 16026 } 16027 #pragma omp target 16028 #pragma omp teams distribute simd 16029 for (int i = 0; i < 10; ++i) { 16030 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16031 for (int i = 0; i < 10; ++i) 16032 ; 16033 } 16034 #pragma omp target 16035 #pragma omp teams distribute simd 16036 for (int i = 0; i < 10; ++i) { 16037 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16038 for (int i = 0; i < 10; ++i) 16039 ; 16040 } 16041 #pragma omp target 16042 #pragma omp teams distribute simd 16043 for (int i = 0; i < 10; ++i) { 16044 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16045 for (int i = 0; i < 10; ++i) 16046 ; 16047 } 16048 #pragma omp target 16049 #pragma omp teams distribute simd 16050 for (int i = 0; i < 10; ++i) { 16051 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16052 for (int i = 0; i < 10; ++i) 16053 ; 16054 } 16055 #pragma omp target 16056 #pragma omp teams distribute simd 16057 for (int i = 0; i < 10; ++i) { 16058 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16059 for (int i = 0; i < 10; ++i) 16060 ; 16061 } 16062 #pragma omp target 16063 #pragma omp teams distribute simd 16064 for (int i = 0; i < 10; ++i) { 16065 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16066 { 16067 bar(); 16068 } 16069 } 16070 #pragma omp target 16071 #pragma omp teams distribute simd 16072 for (int i = 0; i < 10; ++i) { 16073 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16074 { 16075 bar(); 16076 } 16077 } 16078 #pragma omp target 16079 #pragma omp teams distribute simd 16080 for (int i = 0; i < 10; ++i) { 16081 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16082 { 16083 bar(); 16084 } 16085 } 16086 #pragma omp target 16087 #pragma omp teams distribute simd 16088 for (int i = 0; i < 10; ++i) { 16089 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16090 { 16091 bar(); 16092 } 16093 } 16094 #pragma omp target 16095 #pragma omp teams distribute simd 16096 for (int i = 0; i < 10; ++i) { 16097 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16098 { 16099 bar(); 16100 } 16101 } 16102 #pragma omp target 16103 #pragma omp teams distribute simd 16104 for (int i = 0; i < 10; ++i) { 16105 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16106 { 16107 #pragma omp single 16108 { 16109 bar(); 16110 } 16111 } 16112 } 16113 #pragma omp target 16114 #pragma omp teams distribute simd 16115 for (int i = 0; i < 10; ++i) { 16116 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16117 for (int i = 0; i < 10; ++i) 16118 ; 16119 } 16120 #pragma omp target 16121 #pragma omp teams distribute simd 16122 for (int i = 0; i < 10; ++i) { 16123 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16124 for (int i = 0; i < 10; ++i) 16125 ; 16126 } 16127 #pragma omp target 16128 #pragma omp teams distribute simd 16129 for (int i = 0; i < 10; ++i) { 16130 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16131 { 16132 bar(); 16133 } 16134 } 16135 #pragma omp target 16136 #pragma omp teams distribute simd 16137 for (int i = 0; i < 10; ++i) { 16138 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16139 { 16140 bar(); 16141 } 16142 } 16143 #pragma omp target 16144 #pragma omp teams distribute simd 16145 for (int i = 0; i < 10; ++i) { 16146 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16147 bar(); 16148 } 16149 #pragma omp target 16150 #pragma omp teams distribute simd 16151 for (int i = 0; i < 10; ++i) { 16152 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16153 bar(); 16154 } 16155 #pragma omp target 16156 #pragma omp teams distribute simd 16157 for (int i = 0; i < 10; ++i) { 16158 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16159 bar(); 16160 } 16161 #pragma omp target 16162 #pragma omp teams distribute simd 16163 for (int i = 0; i < 10; ++i) { 16164 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16165 bar(); 16166 } 16167 #pragma omp target 16168 #pragma omp teams distribute simd 16169 for (int i = 0; i < 10; ++i) { 16170 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16171 bar(); 16172 } 16173 #pragma omp target 16174 #pragma omp teams distribute simd 16175 for (int i = 0; i < 10; ++i) { 16176 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16177 ++a; 16178 } 16179 #pragma omp target 16180 #pragma omp teams distribute simd 16181 for (int i = 0; i < 10; ++i) { 16182 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16183 ++a; 16184 } 16185 #pragma omp target 16186 #pragma omp teams distribute simd 16187 for (int i = 0; i < 10; ++i) { 16188 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16189 ++a; 16190 } 16191 #pragma omp target 16192 #pragma omp teams distribute simd 16193 for (int i = 0; i < 10; ++i) { 16194 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16195 for (int i = 0; i < 10; ++i) 16196 ; 16197 } 16198 #pragma omp target 16199 #pragma omp teams distribute simd 16200 for (int i = 0; i < 10; ++i) { 16201 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16202 ++a; 16203 } 16204 #pragma omp target 16205 #pragma omp teams distribute simd 16206 for (int i = 0; i < 10; ++i) { 16207 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16208 ++a; 16209 } 16210 #pragma omp target 16211 #pragma omp teams distribute simd 16212 for (int i = 0; i < 10; ++i) { 16213 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16214 ++a; 16215 } 16216 #pragma omp target 16217 #pragma omp teams distribute simd 16218 for (int i = 0; i < 10; ++i) { 16219 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16220 ++a; 16221 } 16222 #pragma omp target 16223 #pragma omp teams distribute simd 16224 for (int i = 0; i < 10; ++i) { 16225 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16226 for (int i = 0; i < 10; ++i) 16227 ++a; 16228 } 16229 #pragma omp target 16230 #pragma omp teams distribute simd 16231 for (int i = 0; i < 10; ++i) { 16232 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16233 for (int i = 0; i < 10; ++i) 16234 ++a; 16235 } 16236 #pragma omp target 16237 #pragma omp teams distribute simd 16238 for (int i = 0; i < 10; ++i) { 16239 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16240 for (int i = 0; i < 10; ++i) 16241 ++a; 16242 } 16243 #pragma omp target 16244 #pragma omp teams distribute simd 16245 for (int i = 0; i < 10; ++i) { 16246 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16247 for (int i = 0; i < 10; ++i) 16248 ++a; 16249 } 16250 #pragma omp target 16251 #pragma omp teams distribute simd 16252 for (int i = 0; i < 10; ++i) { 16253 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16254 for (int i = 0; i < 10; ++i) 16255 ++a; 16256 } 16257 #pragma omp target 16258 #pragma omp teams distribute simd 16259 for (int i = 0; i < 10; ++i) { 16260 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16261 for (int i = 0; i < 10; ++i) 16262 ++a; 16263 } 16264 #pragma omp target 16265 #pragma omp teams distribute simd 16266 for (int i = 0; i < 10; ++i) { 16267 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16268 ++a; 16269 } 16270 #pragma omp target 16271 #pragma omp teams distribute simd 16272 for (int i = 0; i < 10; ++i) { 16273 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16274 for (int i = 0; i < 10; ++i) 16275 ++a; 16276 } 16277 #pragma omp target 16278 #pragma omp teams distribute simd 16279 for (int i = 0; i < 10; ++i) { 16280 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16281 for (int i = 0; i < 10; ++i) 16282 ++a; 16283 } 16284 #pragma omp target 16285 #pragma omp teams distribute simd 16286 for (int i = 0; i < 10; ++i) { 16287 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16288 for (int i = 0; i < 10; ++i) 16289 ++a; 16290 } 16291 #pragma omp target 16292 #pragma omp teams distribute simd 16293 for (int i = 0; i < 10; ++i) { 16294 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16295 for (int i = 0; i < 10; ++i) 16296 ++a; 16297 } 16298 16299 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 16300 #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?}} 16301 for (int i = 0; i < 10; ++i) 16302 ; 16303 #pragma omp target 16304 #pragma omp teams distribute parallel for simd 16305 for (int i = 0; i < 10; ++i) { 16306 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16307 for (int i = 0; i < 10; ++i) 16308 ; 16309 } 16310 #pragma omp target 16311 #pragma omp teams distribute parallel for simd 16312 for (int i = 0; i < 10; ++i) { 16313 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16314 for (int i = 0; i < 10; ++i) 16315 ; 16316 } 16317 #pragma omp target 16318 #pragma omp teams distribute parallel for simd 16319 for (int i = 0; i < 10; ++i) { 16320 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16321 for (int i = 0; i < 10; ++i) 16322 ; 16323 } 16324 #pragma omp target 16325 #pragma omp teams distribute parallel for simd 16326 for (int i = 0; i < 10; ++i) { 16327 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16328 for (int i = 0; i < 10; ++i) 16329 ; 16330 } 16331 #pragma omp target 16332 #pragma omp teams distribute parallel for simd 16333 for (int i = 0; i < 10; ++i) { 16334 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16335 for (int i = 0; i < 10; ++i) 16336 ; 16337 } 16338 #pragma omp target 16339 #pragma omp teams distribute parallel for simd 16340 for (int i = 0; i < 10; ++i) { 16341 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16342 for (int i = 0; i < 10; ++i) 16343 ; 16344 } 16345 #pragma omp target 16346 #pragma omp teams distribute parallel for simd 16347 for (int i = 0; i < 10; ++i) { 16348 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16349 { 16350 bar(); 16351 } 16352 } 16353 #pragma omp target 16354 #pragma omp teams distribute parallel for simd 16355 for (int i = 0; i < 10; ++i) { 16356 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16357 { 16358 bar(); 16359 } 16360 } 16361 #pragma omp target 16362 #pragma omp teams distribute parallel for simd 16363 for (int i = 0; i < 10; ++i) { 16364 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16365 { 16366 bar(); 16367 } 16368 } 16369 #pragma omp target 16370 #pragma omp teams distribute parallel for simd 16371 for (int i = 0; i < 10; ++i) { 16372 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16373 { 16374 bar(); 16375 } 16376 } 16377 #pragma omp target 16378 #pragma omp teams distribute parallel for simd 16379 for (int i = 0; i < 10; ++i) { 16380 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16381 { 16382 bar(); 16383 } 16384 } 16385 #pragma omp target 16386 #pragma omp teams distribute parallel for simd 16387 for (int i = 0; i < 10; ++i) { 16388 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16389 { 16390 #pragma omp single 16391 { 16392 bar(); 16393 } 16394 } 16395 } 16396 #pragma omp target 16397 #pragma omp teams distribute parallel for simd 16398 for (int i = 0; i < 10; ++i) { 16399 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16400 for (int i = 0; i < 10; ++i) 16401 ; 16402 } 16403 #pragma omp target 16404 #pragma omp teams distribute parallel for simd 16405 for (int i = 0; i < 10; ++i) { 16406 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16407 for (int i = 0; i < 10; ++i) 16408 ; 16409 } 16410 #pragma omp target 16411 #pragma omp teams distribute parallel for simd 16412 for (int i = 0; i < 10; ++i) { 16413 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16414 { 16415 bar(); 16416 } 16417 } 16418 #pragma omp target 16419 #pragma omp teams distribute parallel for simd 16420 for (int i = 0; i < 10; ++i) { 16421 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16422 { 16423 bar(); 16424 } 16425 } 16426 #pragma omp target 16427 #pragma omp teams distribute parallel for simd 16428 for (int i = 0; i < 10; ++i) { 16429 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16430 bar(); 16431 } 16432 #pragma omp target 16433 #pragma omp teams distribute parallel for simd 16434 for (int i = 0; i < 10; ++i) { 16435 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16436 bar(); 16437 } 16438 #pragma omp target 16439 #pragma omp teams distribute parallel for simd 16440 for (int i = 0; i < 10; ++i) { 16441 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16442 bar(); 16443 } 16444 #pragma omp target 16445 #pragma omp teams distribute parallel for simd 16446 for (int i = 0; i < 10; ++i) { 16447 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16448 bar(); 16449 } 16450 #pragma omp target 16451 #pragma omp teams distribute parallel for simd 16452 for (int i = 0; i < 10; ++i) { 16453 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16454 bar(); 16455 } 16456 #pragma omp target 16457 #pragma omp teams distribute parallel for simd 16458 for (int i = 0; i < 10; ++i) { 16459 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16460 ++a; 16461 } 16462 #pragma omp target 16463 #pragma omp teams distribute parallel for simd 16464 for (int i = 0; i < 10; ++i) { 16465 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16466 ++a; 16467 } 16468 #pragma omp target 16469 #pragma omp teams distribute parallel for simd 16470 for (int i = 0; i < 10; ++i) { 16471 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16472 ++a; 16473 } 16474 #pragma omp target 16475 #pragma omp teams distribute parallel for simd 16476 for (int i = 0; i < 10; ++i) { 16477 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16478 for (int i = 0; i < 10; ++i) 16479 ; 16480 } 16481 #pragma omp target 16482 #pragma omp teams distribute parallel for simd 16483 for (int i = 0; i < 10; ++i) { 16484 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16485 ++a; 16486 } 16487 #pragma omp target 16488 #pragma omp teams distribute parallel for simd 16489 for (int i = 0; i < 10; ++i) { 16490 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16491 ++a; 16492 } 16493 #pragma omp target 16494 #pragma omp teams distribute parallel for simd 16495 for (int i = 0; i < 10; ++i) { 16496 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16497 ++a; 16498 } 16499 #pragma omp target 16500 #pragma omp teams distribute parallel for simd 16501 for (int i = 0; i < 10; ++i) { 16502 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16503 ++a; 16504 } 16505 #pragma omp target 16506 #pragma omp teams distribute parallel for simd 16507 for (int i = 0; i < 10; ++i) { 16508 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16509 for (int i = 0; i < 10; ++i) 16510 ++a; 16511 } 16512 #pragma omp target 16513 #pragma omp teams distribute parallel for simd 16514 for (int i = 0; i < 10; ++i) { 16515 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16516 for (int i = 0; i < 10; ++i) 16517 ++a; 16518 } 16519 #pragma omp target 16520 #pragma omp teams distribute parallel for simd 16521 for (int i = 0; i < 10; ++i) { 16522 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16523 for (int i = 0; i < 10; ++i) 16524 ++a; 16525 } 16526 #pragma omp target 16527 #pragma omp teams distribute parallel for simd 16528 for (int i = 0; i < 10; ++i) { 16529 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16530 for (int i = 0; i < 10; ++i) 16531 ++a; 16532 } 16533 #pragma omp target 16534 #pragma omp teams distribute parallel for simd 16535 for (int i = 0; i < 10; ++i) { 16536 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16537 for (int i = 0; i < 10; ++i) 16538 ++a; 16539 } 16540 #pragma omp target 16541 #pragma omp teams distribute parallel for simd 16542 for (int i = 0; i < 10; ++i) { 16543 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16544 for (int i = 0; i < 10; ++i) 16545 ++a; 16546 } 16547 #pragma omp target 16548 #pragma omp teams distribute parallel for simd 16549 for (int i = 0; i < 10; ++i) { 16550 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16551 ++a; 16552 } 16553 #pragma omp target 16554 #pragma omp teams distribute parallel for simd 16555 for (int i = 0; i < 10; ++i) { 16556 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16557 for (int i = 0; i < 10; ++i) 16558 ++a; 16559 } 16560 #pragma omp target 16561 #pragma omp teams distribute parallel for simd 16562 for (int i = 0; i < 10; ++i) { 16563 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16564 for (int i = 0; i < 10; ++i) 16565 ++a; 16566 } 16567 #pragma omp target 16568 #pragma omp teams distribute parallel for simd 16569 for (int i = 0; i < 10; ++i) { 16570 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16571 for (int i = 0; i < 10; ++i) 16572 ++a; 16573 } 16574 #pragma omp target 16575 #pragma omp teams distribute parallel for simd 16576 for (int i = 0; i < 10; ++i) { 16577 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16578 for (int i = 0; i < 10; ++i) 16579 ++a; 16580 } 16581 16582 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16583 #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?}} 16584 for (int i = 0; i < 10; ++i) 16585 ; 16586 #pragma omp target 16587 #pragma omp teams distribute parallel for 16588 for (int i = 0; i < 10; ++i) { 16589 #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?}} 16590 for (int i = 0; i < 10; ++i) 16591 ; 16592 } 16593 #pragma omp target 16594 #pragma omp teams distribute parallel for 16595 for (int i = 0; i < 10; ++i) { 16596 #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?}} 16597 for (int i = 0; i < 10; ++i) 16598 ; 16599 } 16600 #pragma omp target 16601 #pragma omp teams distribute parallel for 16602 for (int i = 0; i < 10; ++i) { 16603 #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?}} 16604 for (int i = 0; i < 10; ++i) 16605 ; 16606 } 16607 #pragma omp target 16608 #pragma omp teams distribute parallel for 16609 for (int i = 0; i < 10; ++i) { 16610 #pragma omp simd // OK 16611 for (int i = 0; i < 10; ++i) 16612 ; 16613 } 16614 #pragma omp target 16615 #pragma omp teams distribute parallel for 16616 for (int i = 0; i < 10; ++i) { 16617 #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?}} 16618 for (int i = 0; i < 10; ++i) 16619 ; 16620 } 16621 #pragma omp target 16622 #pragma omp teams distribute parallel for 16623 for (int i = 0; i < 10; ++i) { 16624 #pragma omp parallel // OK 16625 for (int i = 0; i < 10; ++i) 16626 ; 16627 } 16628 #pragma omp target 16629 #pragma omp teams distribute parallel for 16630 for (int i = 0; i < 10; ++i) { 16631 #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?}} 16632 { 16633 bar(); 16634 } 16635 } 16636 #pragma omp target 16637 #pragma omp teams distribute parallel for 16638 for (int i = 0; i < 10; ++i) { 16639 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 16640 { 16641 bar(); 16642 } 16643 } 16644 #pragma omp target 16645 #pragma omp teams distribute parallel for 16646 for (int i = 0; i < 10; ++i) { 16647 #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?}} 16648 { 16649 bar(); 16650 } 16651 } 16652 #pragma omp target 16653 #pragma omp teams distribute parallel for 16654 for (int i = 0; i < 10; ++i) { 16655 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16656 { 16657 bar(); 16658 } 16659 } 16660 #pragma omp target 16661 #pragma omp teams distribute parallel for 16662 for (int i = 0; i < 10; ++i) { 16663 #pragma omp critical // OK 16664 { 16665 bar(); 16666 } 16667 } 16668 #pragma omp target 16669 #pragma omp teams distribute parallel for 16670 for (int i = 0; i < 10; ++i) { 16671 #pragma omp parallel // OK 16672 { 16673 #pragma omp single 16674 { 16675 bar(); 16676 } 16677 } 16678 } 16679 #pragma omp target 16680 #pragma omp teams distribute parallel for 16681 for (int i = 0; i < 10; ++i) { 16682 #pragma omp parallel for // OK 16683 for (int i = 0; i < 10; ++i) 16684 ; 16685 } 16686 #pragma omp target 16687 #pragma omp teams distribute parallel for 16688 for (int i = 0; i < 10; ++i) { 16689 #pragma omp parallel for simd // OK 16690 for (int i = 0; i < 10; ++i) 16691 ; 16692 } 16693 #pragma omp target 16694 #pragma omp teams distribute parallel for 16695 for (int i = 0; i < 10; ++i) { 16696 #pragma omp parallel sections // OK 16697 { 16698 bar(); 16699 } 16700 } 16701 #pragma omp target 16702 #pragma omp teams distribute parallel for 16703 for (int i = 0; i < 10; ++i) { 16704 #pragma omp task // OK 16705 { 16706 bar(); 16707 } 16708 } 16709 #pragma omp target 16710 #pragma omp teams distribute parallel for 16711 for (int i = 0; i < 10; ++i) { 16712 #pragma omp taskyield // OK 16713 bar(); 16714 } 16715 #pragma omp target 16716 #pragma omp teams distribute parallel for 16717 for (int i = 0; i < 10; ++i) { 16718 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16719 bar(); 16720 } 16721 #pragma omp target 16722 #pragma omp teams distribute parallel for 16723 for (int i = 0; i < 10; ++i) { 16724 #pragma omp taskwait // OK 16725 bar(); 16726 } 16727 #pragma omp target 16728 #pragma omp teams distribute parallel for 16729 for (int i = 0; i < 10; ++i) { 16730 #pragma omp flush // OK 16731 bar(); 16732 } 16733 #pragma omp target 16734 #pragma omp teams distribute parallel for 16735 for (int i = 0; i < 10; ++i) { 16736 #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?}} 16737 bar(); 16738 } 16739 #pragma omp target 16740 #pragma omp teams distribute parallel for 16741 for (int i = 0; i < 10; ++i) { 16742 #pragma omp atomic // OK 16743 ++a; 16744 } 16745 #pragma omp target 16746 #pragma omp teams distribute parallel for 16747 for (int i = 0; i < 10; ++i) { 16748 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16749 ++a; 16750 } 16751 #pragma omp target 16752 #pragma omp teams distribute parallel for 16753 for (int i = 0; i < 10; ++i) { 16754 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16755 ++a; 16756 } 16757 #pragma omp target 16758 #pragma omp teams distribute parallel for 16759 for (int i = 0; i < 10; ++i) { 16760 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16761 for (int i = 0; i < 10; ++i) 16762 ; 16763 } 16764 #pragma omp target 16765 #pragma omp teams distribute parallel for 16766 for (int i = 0; i < 10; ++i) { 16767 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16768 ++a; 16769 } 16770 #pragma omp target 16771 #pragma omp teams distribute parallel for 16772 for (int i = 0; i < 10; ++i) { 16773 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16774 ++a; 16775 } 16776 #pragma omp target 16777 #pragma omp teams distribute parallel for 16778 for (int i = 0; i < 10; ++i) { 16779 #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?}} 16780 ++a; 16781 } 16782 #pragma omp target 16783 #pragma omp teams distribute parallel for 16784 for (int i = 0; i < 10; ++i) { 16785 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16786 ++a; 16787 } 16788 #pragma omp target 16789 #pragma omp teams distribute parallel for 16790 for (int i = 0; i < 10; ++i) { 16791 #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?}} 16792 for (int i = 0; i < 10; ++i) 16793 ++a; 16794 } 16795 #pragma omp target 16796 #pragma omp teams distribute parallel for 16797 for (int i = 0; i < 10; ++i) { 16798 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16799 for (int i = 0; i < 10; ++i) 16800 ++a; 16801 } 16802 #pragma omp target 16803 #pragma omp teams distribute parallel for 16804 for (int i = 0; i < 10; ++i) { 16805 #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?}} 16806 for (int i = 0; i < 10; ++i) 16807 ++a; 16808 } 16809 #pragma omp target 16810 #pragma omp teams distribute parallel for 16811 for (int i = 0; i < 10; ++i) { 16812 #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?}} 16813 for (int i = 0; i < 10; ++i) 16814 ++a; 16815 } 16816 #pragma omp target 16817 #pragma omp teams distribute parallel for 16818 for (int i = 0; i < 10; ++i) { 16819 #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?}} 16820 for (int i = 0; i < 10; ++i) 16821 ++a; 16822 } 16823 #pragma omp target 16824 #pragma omp teams distribute parallel for 16825 for (int i = 0; i < 10; ++i) { 16826 #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?}} 16827 for (int i = 0; i < 10; ++i) 16828 ++a; 16829 } 16830 #pragma omp target 16831 #pragma omp teams distribute parallel for 16832 for (int i = 0; i < 10; ++i) { 16833 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16834 ++a; 16835 } 16836 #pragma omp target 16837 #pragma omp teams distribute parallel for 16838 for (int i = 0; i < 10; ++i) { 16839 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16840 for (int i = 0; i < 10; ++i) 16841 ++a; 16842 } 16843 #pragma omp target 16844 #pragma omp teams distribute parallel for 16845 for (int i = 0; i < 10; ++i) { 16846 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16847 for (int i = 0; i < 10; ++i) 16848 ++a; 16849 } 16850 #pragma omp target 16851 #pragma omp teams distribute parallel for 16852 for (int i = 0; i < 10; ++i) { 16853 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16854 for (int i = 0; i < 10; ++i) 16855 ++a; 16856 } 16857 #pragma omp target 16858 #pragma omp teams distribute parallel for 16859 for (int i = 0; i < 10; ++i) { 16860 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16861 for (int i = 0; i < 10; ++i) 16862 ++a; 16863 } 16864 16865 // TARGET TEAMS DIRECTIVE 16866 #pragma omp target teams 16867 #pragma omp parallel 16868 bar(); 16869 #pragma omp target teams 16870 #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?}} 16871 for (int i = 0; i < 10; ++i) 16872 ; 16873 #pragma omp target teams 16874 #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?}} 16875 for (int i = 0; i < 10; ++i) 16876 ; 16877 #pragma omp target teams 16878 #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?}} 16879 for (int i = 0; i < 10; ++i) 16880 ; 16881 #pragma omp target teams 16882 #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?}} 16883 { 16884 bar(); 16885 } 16886 #pragma omp target teams 16887 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 16888 { 16889 bar(); 16890 } 16891 #pragma omp target teams 16892 #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?}} 16893 bar(); 16894 16895 #pragma omp target teams 16896 #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?}} 16897 { 16898 bar(); 16899 } 16900 #pragma omp target teams 16901 #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?}} 16902 { 16903 bar(); 16904 } 16905 #pragma omp target teams 16906 #pragma omp parallel for 16907 for (int i = 0; i < 10; ++i) 16908 ; 16909 #pragma omp target teams 16910 #pragma omp parallel for simd 16911 for (int i = 0; i < 10; ++i) 16912 ; 16913 #pragma omp target teams 16914 #pragma omp parallel sections 16915 { 16916 bar(); 16917 } 16918 #pragma omp target teams 16919 #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?}} 16920 { 16921 bar(); 16922 } 16923 #pragma omp target teams 16924 { 16925 #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?}} 16926 bar(); 16927 } 16928 #pragma omp target teams 16929 { 16930 #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?}} 16931 bar(); 16932 } 16933 #pragma omp target teams 16934 { 16935 #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?}} 16936 bar(); 16937 } 16938 #pragma omp target teams 16939 { 16940 #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?}} 16941 bar(); 16942 } 16943 #pragma omp target teams 16944 { 16945 #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?}} 16946 bar(); 16947 } 16948 #pragma omp target teams 16949 { 16950 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 16951 ++a; 16952 } 16953 #pragma omp target teams 16954 { 16955 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 16956 ++a; 16957 } 16958 #pragma omp target teams 16959 { 16960 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 16961 ++a; 16962 } 16963 #pragma omp target teams 16964 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 16965 for (int i = 0; i < 10; ++i) 16966 ; 16967 #pragma omp target teams 16968 { 16969 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16970 } 16971 #pragma omp target teams 16972 { 16973 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16974 } 16975 #pragma omp target teams 16976 { 16977 #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?}} 16978 ++a; 16979 } 16980 #pragma omp target teams 16981 { 16982 #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?}} 16983 for (int i = 0; i < 10; ++i) 16984 ++a; 16985 } 16986 #pragma omp target teams 16987 #pragma omp distribute 16988 for (int i = 0; i < 10; ++i) 16989 ; 16990 #pragma omp target teams 16991 { 16992 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 16993 ++a; 16994 } 16995 #pragma omp target teams 16996 #pragma omp distribute parallel for 16997 for (int i = 0; i < 10; ++i) 16998 ; 16999 #pragma omp target teams 17000 { 17001 #pragma omp distribute parallel for 17002 for (int i = 0; i < 10; ++i) 17003 ; 17004 #pragma omp distribute parallel for 17005 for (int j = 0; j < 10; ++j) 17006 ; 17007 } 17008 #pragma omp target teams 17009 { 17010 #pragma omp distribute parallel for simd 17011 for (int i = 0; i < 10; ++i) 17012 ; 17013 #pragma omp distribute parallel for simd 17014 for (int j = 0; j < 10; ++j) 17015 ; 17016 } 17017 #pragma omp target teams 17018 { 17019 #pragma omp distribute simd 17020 for (int i = 0; i < 10; ++i) 17021 ; 17022 #pragma omp distribute simd 17023 for (int j = 0; j < 10; ++j) 17024 ; 17025 } 17026 #pragma omp target teams 17027 { 17028 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 17029 for (int i = 0; i < 10; ++i) 17030 ; 17031 } 17032 #pragma omp target teams 17033 { 17034 #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?}} 17035 for (int i = 0; i < 10; ++i) 17036 ; 17037 } 17038 #pragma omp target teams 17039 { 17040 #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?}} 17041 for (int i = 0; i < 10; ++i) 17042 ; 17043 } 17044 #pragma omp target teams 17045 { 17046 #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?}} 17047 for (int i = 0; i < 10; ++i) 17048 ; 17049 } 17050 #pragma omp target teams 17051 { 17052 #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?}} 17053 for (int i = 0; i < 10; ++i) 17054 ; 17055 } 17056 #pragma omp target teams 17057 { 17058 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 17059 a++; 17060 } 17061 #pragma omp target teams 17062 { 17063 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 17064 for (int i = 0; i < 10; ++i) 17065 ; 17066 } 17067 #pragma omp target teams 17068 { 17069 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17070 for (int i = 0; i < 10; ++i) 17071 ; 17072 } 17073 #pragma omp target teams 17074 { 17075 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 17076 for (int i = 0; i < 10; ++i) 17077 ; 17078 } 17079 #pragma omp target teams 17080 { 17081 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 17082 for (int i = 0; i < 10; ++i) 17083 ; 17084 } 17085 17086 // TARGET TEAMS DISTRIBUTE DIRECTIVE 17087 #pragma omp target teams distribute // OK 17088 for (int i = 0; i < 10; ++i) 17089 ; 17090 #pragma omp target teams distribute 17091 for (int i = 0; i < 10; ++i) { 17092 #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?}} 17093 for (int i = 0; i < 10; ++i) 17094 ; 17095 } 17096 #pragma omp target teams distribute 17097 for (int i = 0; i < 10; ++i) { 17098 #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?}} 17099 for (int i = 0; i < 10; ++i) 17100 ; 17101 } 17102 #pragma omp target teams distribute 17103 for (int i = 0; i < 10; ++i) { 17104 #pragma omp for // OK 17105 for (int i = 0; i < 10; ++i) 17106 ; 17107 } 17108 #pragma omp target teams distribute 17109 for (int i = 0; i < 10; ++i) { 17110 #pragma omp simd // OK 17111 for (int i = 0; i < 10; ++i) 17112 ; 17113 } 17114 #pragma omp target teams distribute 17115 for (int i = 0; i < 10; ++i) { 17116 #pragma omp for simd // OK 17117 for (int i = 0; i < 10; ++i) 17118 ; 17119 } 17120 #pragma omp target teams distribute 17121 for (int i = 0; i < 10; ++i) { 17122 #pragma omp parallel // OK 17123 for (int i = 0; i < 10; ++i) 17124 ; 17125 } 17126 #pragma omp target teams distribute 17127 for (int i = 0; i < 10; ++i) { 17128 #pragma omp sections // OK 17129 { 17130 bar(); 17131 } 17132 } 17133 #pragma omp target teams distribute 17134 for (int i = 0; i < 10; ++i) { 17135 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 17136 { 17137 bar(); 17138 } 17139 } 17140 #pragma omp target teams distribute 17141 for (int i = 0; i < 10; ++i) { 17142 #pragma omp single // OK 17143 { 17144 bar(); 17145 } 17146 } 17147 #pragma omp target teams distribute 17148 for (int i = 0; i < 10; ++i) { 17149 #pragma omp master // OK 17150 { 17151 bar(); 17152 } 17153 } 17154 #pragma omp target teams distribute 17155 for (int i = 0; i < 10; ++i) { 17156 #pragma omp critical // OK 17157 { 17158 bar(); 17159 } 17160 } 17161 #pragma omp target teams distribute 17162 for (int i = 0; i < 10; ++i) { 17163 #pragma omp parallel // OK 17164 { 17165 #pragma omp single 17166 { 17167 bar(); 17168 } 17169 } 17170 } 17171 #pragma omp target teams distribute 17172 for (int i = 0; i < 10; ++i) { 17173 #pragma omp parallel for // OK 17174 for (int i = 0; i < 10; ++i) 17175 ; 17176 } 17177 #pragma omp target teams distribute 17178 for (int i = 0; i < 10; ++i) { 17179 #pragma omp parallel for simd // OK 17180 for (int i = 0; i < 10; ++i) 17181 ; 17182 } 17183 #pragma omp target teams distribute 17184 for (int i = 0; i < 10; ++i) { 17185 #pragma omp parallel sections // OK 17186 { 17187 bar(); 17188 } 17189 } 17190 #pragma omp target teams distribute 17191 for (int i = 0; i < 10; ++i) { 17192 #pragma omp task // OK 17193 { 17194 bar(); 17195 } 17196 } 17197 #pragma omp target teams distribute 17198 for (int i = 0; i < 10; ++i) { 17199 #pragma omp taskyield // OK 17200 bar(); 17201 } 17202 #pragma omp target teams distribute 17203 for (int i = 0; i < 10; ++i) { 17204 #pragma omp barrier // OK 17205 bar(); 17206 } 17207 #pragma omp target teams distribute 17208 for (int i = 0; i < 10; ++i) { 17209 #pragma omp taskwait // OK 17210 bar(); 17211 } 17212 #pragma omp target teams distribute 17213 for (int i = 0; i < 10; ++i) { 17214 #pragma omp flush // OK 17215 bar(); 17216 } 17217 #pragma omp target teams distribute 17218 for (int i = 0; i < 10; ++i) { 17219 #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?}} 17220 bar(); 17221 } 17222 #pragma omp target teams distribute 17223 for (int i = 0; i < 10; ++i) { 17224 #pragma omp atomic // OK 17225 ++a; 17226 } 17227 #pragma omp target teams distribute 17228 for (int i = 0; i < 10; ++i) { 17229 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17230 ++a; 17231 } 17232 #pragma omp target teams distribute 17233 for (int i = 0; i < 10; ++i) { 17234 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17235 ++a; 17236 } 17237 #pragma omp target teams distribute 17238 for (int i = 0; i < 10; ++i) { 17239 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17240 for (int i = 0; i < 10; ++i) 17241 ; 17242 } 17243 #pragma omp target teams distribute 17244 for (int i = 0; i < 10; ++i) { 17245 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17246 ++a; 17247 } 17248 #pragma omp target teams distribute 17249 for (int i = 0; i < 10; ++i) { 17250 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17251 ++a; 17252 } 17253 #pragma omp target teams distribute 17254 for (int i = 0; i < 10; ++i) { 17255 #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?}} 17256 ++a; 17257 } 17258 #pragma omp target teams distribute 17259 for (int i = 0; i < 10; ++i) { 17260 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17261 ++a; 17262 } 17263 #pragma omp target teams distribute 17264 for (int i = 0; i < 10; ++i) { 17265 #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?}} 17266 for (int i = 0; i < 10; ++i) 17267 ++a; 17268 } 17269 #pragma omp target teams distribute 17270 for (int i = 0; i < 10; ++i) { 17271 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17272 for (int i = 0; i < 10; ++i) 17273 ++a; 17274 } 17275 #pragma omp target teams distribute 17276 for (int i = 0; i < 10; ++i) { 17277 #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?}} 17278 for (int i = 0; i < 10; ++i) 17279 ++a; 17280 } 17281 #pragma omp target teams distribute 17282 for (int i = 0; i < 10; ++i) { 17283 #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?}} 17284 for (int i = 0; i < 10; ++i) 17285 ++a; 17286 } 17287 #pragma omp target teams distribute 17288 for (int i = 0; i < 10; ++i) { 17289 #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?}} 17290 for (int i = 0; i < 10; ++i) 17291 ++a; 17292 } 17293 #pragma omp target teams distribute 17294 for (int i = 0; i < 10; ++i) { 17295 #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?}} 17296 for (int i = 0; i < 10; ++i) 17297 ++a; 17298 } 17299 #pragma omp target teams distribute 17300 for (int i = 0; i < 10; ++i) { 17301 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17302 ++a; 17303 } 17304 #pragma omp target teams distribute 17305 for (int i = 0; i < 10; ++i) { 17306 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17307 for (int i = 0; i < 10; ++i) 17308 ++a; 17309 } 17310 #pragma omp target teams distribute 17311 for (int i = 0; i < 10; ++i) { 17312 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17313 for (int i = 0; i < 10; ++i) 17314 ++a; 17315 } 17316 #pragma omp target teams distribute 17317 for (int i = 0; i < 10; ++i) { 17318 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17319 for (int i = 0; i < 10; ++i) 17320 ++a; 17321 } 17322 #pragma omp target teams distribute 17323 for (int i = 0; i < 10; ++i) { 17324 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17325 for (int i = 0; i < 10; ++i) 17326 ++a; 17327 } 17328 17329 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 17330 #pragma omp target teams distribute parallel for // OK 17331 for (int i = 0; i < 10; ++i) 17332 ; 17333 #pragma omp target teams distribute parallel for 17334 for (int i = 0; i < 10; ++i) { 17335 #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?}} 17336 for (int i = 0; i < 10; ++i) 17337 ; 17338 } 17339 #pragma omp target teams distribute parallel for 17340 for (int i = 0; i < 10; ++i) { 17341 #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?}} 17342 for (int i = 0; i < 10; ++i) 17343 ; 17344 } 17345 #pragma omp target teams distribute parallel for 17346 for (int i = 0; i < 10; ++i) { 17347 #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?}} 17348 for (int i = 0; i < 10; ++i) 17349 ; 17350 } 17351 #pragma omp target teams distribute parallel for 17352 for (int i = 0; i < 10; ++i) { 17353 #pragma omp simd // OK 17354 for (int i = 0; i < 10; ++i) 17355 ; 17356 } 17357 #pragma omp target teams distribute parallel for 17358 for (int i = 0; i < 10; ++i) { 17359 #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?}} 17360 for (int i = 0; i < 10; ++i) 17361 ; 17362 } 17363 #pragma omp target teams distribute parallel for 17364 for (int i = 0; i < 10; ++i) { 17365 #pragma omp parallel // OK 17366 for (int i = 0; i < 10; ++i) 17367 ; 17368 } 17369 #pragma omp target teams distribute parallel for 17370 for (int i = 0; i < 10; ++i) { 17371 #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?}} 17372 { 17373 bar(); 17374 } 17375 } 17376 #pragma omp target teams distribute parallel for 17377 for (int i = 0; i < 10; ++i) { 17378 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 17379 { 17380 bar(); 17381 } 17382 } 17383 #pragma omp target teams distribute parallel for 17384 for (int i = 0; i < 10; ++i) { 17385 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17386 { 17387 bar(); 17388 } 17389 } 17390 #pragma omp target teams distribute parallel for 17391 for (int i = 0; i < 10; ++i) { 17392 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17393 { 17394 bar(); 17395 } 17396 } 17397 #pragma omp target teams distribute parallel for 17398 for (int i = 0; i < 10; ++i) { 17399 #pragma omp critical // OK 17400 { 17401 bar(); 17402 } 17403 } 17404 #pragma omp target teams distribute parallel for 17405 for (int i = 0; i < 10; ++i) { 17406 #pragma omp parallel // OK 17407 { 17408 #pragma omp single 17409 { 17410 bar(); 17411 } 17412 } 17413 } 17414 #pragma omp target teams distribute parallel for 17415 for (int i = 0; i < 10; ++i) { 17416 #pragma omp parallel for // OK 17417 for (int i = 0; i < 10; ++i) 17418 ; 17419 } 17420 #pragma omp target teams distribute parallel for 17421 for (int i = 0; i < 10; ++i) { 17422 #pragma omp parallel for simd // OK 17423 for (int i = 0; i < 10; ++i) 17424 ; 17425 } 17426 #pragma omp target teams distribute parallel for 17427 for (int i = 0; i < 10; ++i) { 17428 #pragma omp parallel sections // OK 17429 { 17430 bar(); 17431 } 17432 } 17433 #pragma omp target teams distribute parallel for 17434 for (int i = 0; i < 10; ++i) { 17435 #pragma omp task // OK 17436 { 17437 bar(); 17438 } 17439 } 17440 #pragma omp target teams distribute parallel for 17441 for (int i = 0; i < 10; ++i) { 17442 #pragma omp taskyield // OK 17443 bar(); 17444 } 17445 #pragma omp target teams distribute parallel for 17446 for (int i = 0; i < 10; ++i) { 17447 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17448 bar(); 17449 } 17450 #pragma omp target teams distribute parallel for 17451 for (int i = 0; i < 10; ++i) { 17452 #pragma omp taskwait // OK 17453 bar(); 17454 } 17455 #pragma omp target teams distribute parallel for 17456 for (int i = 0; i < 10; ++i) { 17457 #pragma omp flush // OK 17458 bar(); 17459 } 17460 #pragma omp target teams distribute parallel for 17461 for (int i = 0; i < 10; ++i) { 17462 #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?}} 17463 bar(); 17464 } 17465 #pragma omp target teams distribute parallel for 17466 for (int i = 0; i < 10; ++i) { 17467 #pragma omp atomic // OK 17468 ++a; 17469 } 17470 #pragma omp target teams distribute parallel for 17471 for (int i = 0; i < 10; ++i) { 17472 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17473 ++a; 17474 } 17475 #pragma omp target teams distribute parallel for 17476 for (int i = 0; i < 10; ++i) { 17477 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17478 ++a; 17479 } 17480 #pragma omp target teams distribute parallel for 17481 for (int i = 0; i < 10; ++i) { 17482 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17483 for (int i = 0; i < 10; ++i) 17484 ; 17485 } 17486 #pragma omp target teams distribute parallel for 17487 for (int i = 0; i < 10; ++i) { 17488 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17489 ++a; 17490 } 17491 #pragma omp target teams distribute parallel for 17492 for (int i = 0; i < 10; ++i) { 17493 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17494 ++a; 17495 } 17496 #pragma omp target teams distribute parallel for 17497 for (int i = 0; i < 10; ++i) { 17498 #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?}} 17499 ++a; 17500 } 17501 #pragma omp target teams distribute parallel for 17502 for (int i = 0; i < 10; ++i) { 17503 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17504 ++a; 17505 } 17506 #pragma omp target teams distribute parallel for 17507 for (int i = 0; i < 10; ++i) { 17508 #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?}} 17509 for (int i = 0; i < 10; ++i) 17510 ++a; 17511 } 17512 #pragma omp target teams distribute parallel for 17513 for (int i = 0; i < 10; ++i) { 17514 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17515 for (int i = 0; i < 10; ++i) 17516 ++a; 17517 } 17518 #pragma omp target teams distribute parallel for 17519 for (int i = 0; i < 10; ++i) { 17520 #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?}} 17521 for (int i = 0; i < 10; ++i) 17522 ++a; 17523 } 17524 #pragma omp target teams distribute parallel for 17525 for (int i = 0; i < 10; ++i) { 17526 #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?}} 17527 for (int i = 0; i < 10; ++i) 17528 ++a; 17529 } 17530 #pragma omp target teams distribute parallel for 17531 for (int i = 0; i < 10; ++i) { 17532 #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?}} 17533 for (int i = 0; i < 10; ++i) 17534 ++a; 17535 } 17536 #pragma omp target teams distribute parallel for 17537 for (int i = 0; i < 10; ++i) { 17538 #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?}} 17539 for (int i = 0; i < 10; ++i) 17540 ++a; 17541 } 17542 #pragma omp target teams distribute parallel for 17543 for (int i = 0; i < 10; ++i) { 17544 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17545 ++a; 17546 } 17547 #pragma omp target teams distribute parallel for 17548 for (int i = 0; i < 10; ++i) { 17549 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17550 for (int i = 0; i < 10; ++i) 17551 ++a; 17552 } 17553 #pragma omp target teams distribute parallel for 17554 for (int i = 0; i < 10; ++i) { 17555 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17556 for (int i = 0; i < 10; ++i) 17557 ++a; 17558 } 17559 #pragma omp target teams distribute parallel for 17560 for (int i = 0; i < 10; ++i) { 17561 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17562 for (int i = 0; i < 10; ++i) 17563 ++a; 17564 } 17565 #pragma omp target teams distribute parallel for 17566 for (int i = 0; i < 10; ++i) { 17567 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17568 for (int i = 0; i < 10; ++i) 17569 ++a; 17570 } 17571 17572 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 17573 #pragma omp target teams distribute parallel for simd // OK 17574 for (int i = 0; i < 10; ++i) 17575 ; 17576 #pragma omp target teams distribute parallel for simd 17577 for (int i = 0; i < 10; ++i) { 17578 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17579 for (int i = 0; i < 10; ++i) 17580 ; 17581 } 17582 #pragma omp target teams distribute parallel for simd 17583 for (int i = 0; i < 10; ++i) { 17584 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17585 for (int i = 0; i < 10; ++i) 17586 ; 17587 } 17588 #pragma omp target teams distribute parallel for simd 17589 for (int i = 0; i < 10; ++i) { 17590 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17591 for (int i = 0; i < 10; ++i) 17592 ; 17593 } 17594 #pragma omp target teams distribute parallel for simd 17595 for (int i = 0; i < 10; ++i) { 17596 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17597 for (int i = 0; i < 10; ++i) 17598 ; 17599 } 17600 #pragma omp target teams distribute parallel for simd 17601 for (int i = 0; i < 10; ++i) { 17602 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17603 for (int i = 0; i < 10; ++i) 17604 ; 17605 } 17606 #pragma omp target teams distribute parallel for simd 17607 for (int i = 0; i < 10; ++i) { 17608 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17609 for (int i = 0; i < 10; ++i) 17610 ; 17611 } 17612 #pragma omp target teams distribute parallel for simd 17613 for (int i = 0; i < 10; ++i) { 17614 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17615 { 17616 bar(); 17617 } 17618 } 17619 #pragma omp target teams distribute parallel for simd 17620 for (int i = 0; i < 10; ++i) { 17621 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17622 { 17623 bar(); 17624 } 17625 } 17626 #pragma omp target teams distribute parallel for simd 17627 for (int i = 0; i < 10; ++i) { 17628 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17629 { 17630 bar(); 17631 } 17632 } 17633 #pragma omp target teams distribute parallel for simd 17634 for (int i = 0; i < 10; ++i) { 17635 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17636 { 17637 bar(); 17638 } 17639 } 17640 #pragma omp target teams distribute parallel for simd 17641 for (int i = 0; i < 10; ++i) { 17642 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17643 { 17644 bar(); 17645 } 17646 } 17647 #pragma omp target teams distribute parallel for simd 17648 for (int i = 0; i < 10; ++i) { 17649 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17650 { 17651 #pragma omp single 17652 { 17653 bar(); 17654 } 17655 } 17656 } 17657 #pragma omp target teams distribute parallel for simd 17658 for (int i = 0; i < 10; ++i) { 17659 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17660 for (int i = 0; i < 10; ++i) 17661 ; 17662 } 17663 #pragma omp target teams distribute parallel for simd 17664 for (int i = 0; i < 10; ++i) { 17665 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17666 for (int i = 0; i < 10; ++i) 17667 ; 17668 } 17669 #pragma omp target teams distribute parallel for simd 17670 for (int i = 0; i < 10; ++i) { 17671 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17672 { 17673 bar(); 17674 } 17675 } 17676 #pragma omp target teams distribute parallel for simd 17677 for (int i = 0; i < 10; ++i) { 17678 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17679 { 17680 bar(); 17681 } 17682 } 17683 #pragma omp target teams distribute parallel for simd 17684 for (int i = 0; i < 10; ++i) { 17685 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17686 bar(); 17687 } 17688 #pragma omp target teams distribute parallel for simd 17689 for (int i = 0; i < 10; ++i) { 17690 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17691 bar(); 17692 } 17693 #pragma omp target teams distribute parallel for simd 17694 for (int i = 0; i < 10; ++i) { 17695 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17696 bar(); 17697 } 17698 #pragma omp target teams distribute parallel for simd 17699 for (int i = 0; i < 10; ++i) { 17700 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17701 bar(); 17702 } 17703 #pragma omp target teams distribute parallel for simd 17704 for (int i = 0; i < 10; ++i) { 17705 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17706 bar(); 17707 } 17708 #pragma omp target teams distribute parallel for simd 17709 for (int i = 0; i < 10; ++i) { 17710 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 17711 ++a; 17712 } 17713 #pragma omp target teams distribute parallel for simd 17714 for (int i = 0; i < 10; ++i) { 17715 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17716 ++a; 17717 } 17718 #pragma omp target teams distribute parallel for simd 17719 for (int i = 0; i < 10; ++i) { 17720 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17721 ++a; 17722 } 17723 #pragma omp target teams distribute parallel for simd 17724 for (int i = 0; i < 10; ++i) { 17725 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17726 for (int i = 0; i < 10; ++i) 17727 ; 17728 } 17729 #pragma omp target teams distribute parallel for simd 17730 for (int i = 0; i < 10; ++i) { 17731 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17732 ++a; 17733 } 17734 #pragma omp target teams distribute parallel for simd 17735 for (int i = 0; i < 10; ++i) { 17736 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17737 ++a; 17738 } 17739 #pragma omp target teams distribute parallel for simd 17740 for (int i = 0; i < 10; ++i) { 17741 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17742 ++a; 17743 } 17744 #pragma omp target teams distribute parallel for simd 17745 for (int i = 0; i < 10; ++i) { 17746 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17747 ++a; 17748 } 17749 #pragma omp target teams distribute parallel for simd 17750 for (int i = 0; i < 10; ++i) { 17751 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17752 for (int i = 0; i < 10; ++i) 17753 ++a; 17754 } 17755 #pragma omp target teams distribute parallel for simd 17756 for (int i = 0; i < 10; ++i) { 17757 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17758 for (int i = 0; i < 10; ++i) 17759 ++a; 17760 } 17761 #pragma omp target teams distribute parallel for simd 17762 for (int i = 0; i < 10; ++i) { 17763 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17764 for (int i = 0; i < 10; ++i) 17765 ++a; 17766 } 17767 #pragma omp target teams distribute parallel for simd 17768 for (int i = 0; i < 10; ++i) { 17769 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17770 for (int i = 0; i < 10; ++i) 17771 ++a; 17772 } 17773 #pragma omp target teams distribute parallel for simd 17774 for (int i = 0; i < 10; ++i) { 17775 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17776 for (int i = 0; i < 10; ++i) 17777 ++a; 17778 } 17779 #pragma omp target teams distribute parallel for simd 17780 for (int i = 0; i < 10; ++i) { 17781 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17782 for (int i = 0; i < 10; ++i) 17783 ; 17784 } 17785 #pragma omp target teams distribute parallel for simd 17786 for (int i = 0; i < 10; ++i) { 17787 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17788 a++; 17789 } 17790 #pragma omp target teams distribute parallel for simd 17791 for (int i = 0; i < 10; ++i) { 17792 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17793 for (int i = 0; i < 10; ++i) 17794 ; 17795 } 17796 #pragma omp target teams distribute parallel for simd 17797 for (int i = 0; i < 10; ++i) { 17798 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17799 for (int i = 0; i < 10; ++i) 17800 ; 17801 } 17802 #pragma omp target teams distribute parallel for simd 17803 for (int i = 0; i < 10; ++i) { 17804 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17805 for (int i = 0; i < 10; ++i) 17806 ; 17807 } 17808 #pragma omp target teams distribute parallel for simd 17809 for (int i = 0; i < 10; ++i) { 17810 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17811 for (int i = 0; i < 10; ++i) 17812 ; 17813 } 17814 17815 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 17816 #pragma omp target teams distribute simd // OK 17817 for (int i = 0; i < 10; ++i) 17818 ; 17819 #pragma omp target teams distribute simd 17820 for (int i = 0; i < 10; ++i) { 17821 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17822 for (int i = 0; i < 10; ++i) 17823 ; 17824 } 17825 #pragma omp target teams distribute simd 17826 for (int i = 0; i < 10; ++i) { 17827 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17828 for (int i = 0; i < 10; ++i) 17829 ; 17830 } 17831 #pragma omp target teams distribute simd 17832 for (int i = 0; i < 10; ++i) { 17833 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17834 for (int i = 0; i < 10; ++i) 17835 ; 17836 } 17837 #pragma omp target teams distribute simd 17838 for (int i = 0; i < 10; ++i) { 17839 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17840 for (int i = 0; i < 10; ++i) 17841 ; 17842 } 17843 #pragma omp target teams distribute simd 17844 for (int i = 0; i < 10; ++i) { 17845 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17846 for (int i = 0; i < 10; ++i) 17847 ; 17848 } 17849 #pragma omp target teams distribute simd 17850 for (int i = 0; i < 10; ++i) { 17851 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17852 for (int i = 0; i < 10; ++i) 17853 ; 17854 } 17855 #pragma omp target teams distribute simd 17856 for (int i = 0; i < 10; ++i) { 17857 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17858 { 17859 bar(); 17860 } 17861 } 17862 #pragma omp target teams distribute simd 17863 for (int i = 0; i < 10; ++i) { 17864 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17865 { 17866 bar(); 17867 } 17868 } 17869 #pragma omp target teams distribute simd 17870 for (int i = 0; i < 10; ++i) { 17871 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17872 { 17873 bar(); 17874 } 17875 } 17876 #pragma omp target teams distribute simd 17877 for (int i = 0; i < 10; ++i) { 17878 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17879 { 17880 bar(); 17881 } 17882 } 17883 #pragma omp target teams distribute simd 17884 for (int i = 0; i < 10; ++i) { 17885 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17886 { 17887 bar(); 17888 } 17889 } 17890 #pragma omp target teams distribute simd 17891 for (int i = 0; i < 10; ++i) { 17892 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17893 { 17894 #pragma omp single 17895 { 17896 bar(); 17897 } 17898 } 17899 } 17900 #pragma omp target teams distribute simd 17901 for (int i = 0; i < 10; ++i) { 17902 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17903 for (int i = 0; i < 10; ++i) 17904 ; 17905 } 17906 #pragma omp target teams distribute simd 17907 for (int i = 0; i < 10; ++i) { 17908 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17909 for (int i = 0; i < 10; ++i) 17910 ; 17911 } 17912 #pragma omp target teams distribute simd 17913 for (int i = 0; i < 10; ++i) { 17914 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17915 { 17916 bar(); 17917 } 17918 } 17919 #pragma omp target teams distribute simd 17920 for (int i = 0; i < 10; ++i) { 17921 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17922 { 17923 bar(); 17924 } 17925 } 17926 #pragma omp target teams distribute simd 17927 for (int i = 0; i < 10; ++i) { 17928 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17929 bar(); 17930 } 17931 #pragma omp target teams distribute simd 17932 for (int i = 0; i < 10; ++i) { 17933 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17934 bar(); 17935 } 17936 #pragma omp target teams distribute simd 17937 for (int i = 0; i < 10; ++i) { 17938 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17939 bar(); 17940 } 17941 #pragma omp target teams distribute simd 17942 for (int i = 0; i < 10; ++i) { 17943 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17944 bar(); 17945 } 17946 #pragma omp target teams distribute simd 17947 for (int i = 0; i < 10; ++i) { 17948 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17949 bar(); 17950 } 17951 #pragma omp target teams distribute simd 17952 for (int i = 0; i < 10; ++i) { 17953 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 17954 ++a; 17955 } 17956 #pragma omp target teams distribute simd 17957 for (int i = 0; i < 10; ++i) { 17958 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17959 ++a; 17960 } 17961 #pragma omp target teams distribute simd 17962 for (int i = 0; i < 10; ++i) { 17963 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17964 ++a; 17965 } 17966 #pragma omp target teams distribute simd 17967 for (int i = 0; i < 10; ++i) { 17968 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17969 for (int i = 0; i < 10; ++i) 17970 ; 17971 } 17972 #pragma omp target teams distribute simd 17973 for (int i = 0; i < 10; ++i) { 17974 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17975 ++a; 17976 } 17977 #pragma omp target teams distribute simd 17978 for (int i = 0; i < 10; ++i) { 17979 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17980 ++a; 17981 } 17982 #pragma omp target teams distribute simd 17983 for (int i = 0; i < 10; ++i) { 17984 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17985 ++a; 17986 } 17987 #pragma omp target teams distribute simd 17988 for (int i = 0; i < 10; ++i) { 17989 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17990 ++a; 17991 } 17992 #pragma omp target teams distribute simd 17993 for (int i = 0; i < 10; ++i) { 17994 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17995 for (int i = 0; i < 10; ++i) 17996 ++a; 17997 } 17998 #pragma omp target teams distribute simd 17999 for (int i = 0; i < 10; ++i) { 18000 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18001 for (int i = 0; i < 10; ++i) 18002 ++a; 18003 } 18004 #pragma omp target teams distribute simd 18005 for (int i = 0; i < 10; ++i) { 18006 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18007 for (int i = 0; i < 10; ++i) 18008 ++a; 18009 } 18010 #pragma omp target teams distribute simd 18011 for (int i = 0; i < 10; ++i) { 18012 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18013 for (int i = 0; i < 10; ++i) 18014 ++a; 18015 } 18016 #pragma omp target teams distribute simd 18017 for (int i = 0; i < 10; ++i) { 18018 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18019 for (int i = 0; i < 10; ++i) 18020 ++a; 18021 } 18022 #pragma omp target teams distribute simd 18023 for (int i = 0; i < 10; ++i) { 18024 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18025 for (int i = 0; i < 10; ++i) 18026 ; 18027 } 18028 #pragma omp target teams distribute simd 18029 for (int i = 0; i < 10; ++i) { 18030 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18031 a++; 18032 } 18033 #pragma omp target teams distribute simd 18034 for (int i = 0; i < 10; ++i) { 18035 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18036 for (int i = 0; i < 10; ++i) 18037 ; 18038 } 18039 #pragma omp target teams distribute simd 18040 for (int i = 0; i < 10; ++i) { 18041 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18042 for (int i = 0; i < 10; ++i) 18043 ; 18044 } 18045 #pragma omp target teams distribute simd 18046 for (int i = 0; i < 10; ++i) { 18047 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18048 for (int i = 0; i < 10; ++i) 18049 ; 18050 } 18051 #pragma omp target teams distribute simd 18052 for (int i = 0; i < 10; ++i) { 18053 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18054 for (int i = 0; i < 10; ++i) 18055 ; 18056 } 18057 18058 return foo<int>(); 18059 } 18060 18061