1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45,omp45warn %s 2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -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 -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 scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 88 bar(); 89 } 90 #pragma omp parallel 91 { 92 #pragma omp taskwait 93 bar(); 94 } 95 #pragma omp parallel 96 { 97 #pragma omp flush 98 bar(); 99 } 100 #pragma omp parallel 101 { 102 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 103 bar(); 104 } 105 #pragma omp parallel 106 { 107 #pragma omp atomic 108 ++a; 109 } 110 #pragma omp parallel 111 { 112 #pragma omp target 113 ++a; 114 } 115 #pragma omp parallel 116 { 117 #pragma omp target parallel 118 ++a; 119 } 120 #pragma omp parallel 121 { 122 #pragma omp target parallel for 123 for (int i = 0; i < 10; ++i) 124 ; 125 } 126 #pragma omp parallel 127 { 128 #pragma omp target enter data map(to: a) 129 ++a; 130 } 131 #pragma omp parallel 132 { 133 #pragma omp target exit data map(from: a) 134 ++a; 135 } 136 #pragma omp parallel 137 { 138 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 139 ++a; 140 } 141 #pragma omp parallel 142 { 143 #pragma omp taskloop 144 for (int i = 0; i < 10; ++i) 145 ++a; 146 } 147 #pragma omp parallel 148 { 149 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 150 for (int i = 0; i < 10; ++i) 151 ; 152 } 153 #pragma omp parallel 154 { 155 #pragma omp target update to(a) 156 } 157 #pragma omp parallel 158 { 159 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 160 for (int i = 0; i < 10; ++i) 161 ; 162 } 163 #pragma omp parallel 164 { 165 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 166 for (int i = 0; i < 10; ++i) 167 ; 168 } 169 #pragma omp parallel 170 { 171 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 172 for (int i = 0; i < 10; ++i) 173 ; 174 } 175 #pragma omp parallel 176 { 177 #pragma omp target simd // OK 178 for (int i = 0; i < 10; ++i) 179 ; 180 } 181 #pragma omp parallel 182 { 183 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 184 for (int i = 0; i < 10; ++i) 185 ; 186 } 187 #pragma omp parallel 188 { 189 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 190 for (int i = 0; i < 10; ++i) 191 ; 192 } 193 #pragma omp parallel 194 { 195 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 196 for (int i = 0; i < 10; ++i) 197 ; 198 } 199 #pragma omp parallel 200 { 201 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 202 for (int i = 0; i < 10; ++i) 203 ; 204 } 205 #pragma omp parallel 206 { 207 #pragma omp target teams // OK 208 ++a; 209 } 210 #pragma omp parallel 211 { 212 #pragma omp target teams distribute // OK 213 for (int i = 0; i < 10; ++i) 214 ; 215 } 216 #pragma omp parallel 217 { 218 #pragma omp target teams distribute parallel for // OK 219 for (int i = 0; i < 10; ++i) 220 ; 221 } 222 #pragma omp parallel 223 { 224 #pragma omp target teams distribute parallel for simd // OK 225 for (int i = 0; i < 10; ++i) 226 ; 227 } 228 #pragma omp parallel 229 { 230 #pragma omp target teams distribute simd // OK 231 for (int i = 0; i < 10; ++i) 232 ; 233 } 234 235 // SIMD DIRECTIVE 236 #pragma omp simd 237 for (int i = 0; i < 10; ++i) { 238 #pragma omp for // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{OpenMP constructs may not be nested inside a simd region except for ordered simd, simd, scan, or atomic directive}} 239 for (int i = 0; i < 10; ++i) 240 ; 241 } 242 #pragma omp simd 243 for (int i = 0; i < 10; ++i) { 244 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 245 for (int i = 0; i < 10; ++i) 246 ; 247 } 248 #pragma omp simd 249 for (int i = 0; i < 10; ++i) { 250 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 251 for (int i = 0; i < 10; ++i) 252 ; 253 } 254 #pragma omp simd 255 for (int i = 0; i < 10; ++i) { 256 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 257 for (int i = 0; i < 10; ++i) 258 ; 259 } 260 #pragma omp simd 261 for (int i = 0; i < 10; ++i) { 262 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 263 { 264 bar(); 265 } 266 } 267 #pragma omp simd 268 for (int i = 0; i < 10; ++i) { 269 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 270 { 271 bar(); 272 } 273 } 274 #pragma omp simd 275 for (int i = 0; i < 10; ++i) { 276 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 277 { 278 bar(); 279 } 280 } 281 #pragma omp simd 282 for (int i = 0; i < 10; ++i) { 283 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 284 { 285 bar(); 286 } 287 } 288 #pragma omp simd 289 for (int i = 0; i < 10; ++i) { 290 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 291 { 292 bar(); 293 } 294 } 295 #pragma omp simd 296 for (int i = 0; i < 10; ++i) { 297 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 298 for (int i = 0; i < 10; ++i) 299 ; 300 } 301 #pragma omp simd 302 for (int i = 0; i < 10; ++i) { 303 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 304 for (int i = 0; i < 10; ++i) 305 ; 306 } 307 #pragma omp simd 308 for (int i = 0; i < 10; ++i) { 309 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 310 { 311 bar(); 312 } 313 } 314 #pragma omp simd 315 for (int i = 0; i < 10; ++i) { 316 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 317 { 318 bar(); 319 } 320 } 321 #pragma omp simd 322 for (int i = 0; i < 10; ++i) { 323 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 324 { 325 bar(); 326 } 327 } 328 #pragma omp simd 329 for (int i = 0; i < 10; ++i) { 330 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 331 bar(); 332 } 333 #pragma omp simd 334 for (int i = 0; i < 10; ++i) { 335 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 336 bar(); 337 } 338 #pragma omp simd 339 for (int i = 0; i < 10; ++i) { 340 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 341 bar(); 342 } 343 #pragma omp simd 344 for (int i = 0; i < 10; ++i) { 345 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 346 bar(); 347 } 348 #pragma omp simd 349 for (int i = 0; i < 10; ++i) { 350 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 351 bar(); 352 } 353 #pragma omp simd 354 for (int i = 0; i < 10; ++i) { 355 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 356 bar(); 357 } 358 #pragma omp simd 359 for (int i = 0; i < 10; ++i) { 360 #pragma omp ordered simd // OK 361 bar(); 362 } 363 #pragma omp simd 364 for (int i = 0; i < 10; ++i) { 365 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 366 bar(); 367 } 368 #pragma omp simd 369 for (int i = 0; i < 10; ++i) { 370 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 371 ++a; 372 } 373 #pragma omp simd 374 for (int i = 0; i < 10; ++i) { 375 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 376 ++a; 377 } 378 #pragma omp simd 379 for (int i = 0; i < 10; ++i) { 380 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 381 ++a; 382 } 383 #pragma omp simd 384 for (int i = 0; i < 10; ++i) { 385 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 386 for (int i = 0; i < 10; ++i) 387 ; 388 } 389 #pragma omp simd 390 for (int i = 0; i < 10; ++i) { 391 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 392 ++a; 393 } 394 #pragma omp simd 395 for (int i = 0; i < 10; ++i) { 396 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 397 ++a; 398 } 399 #pragma omp simd 400 for (int i = 0; i < 10; ++i) { 401 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 402 ++a; 403 } 404 #pragma omp simd 405 for (int i = 0; i < 10; ++i) { 406 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 407 for (int i = 0; i < 10; ++i) 408 ++a; 409 } 410 #pragma omp simd 411 for (int i = 0; i < 10; ++i) { 412 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 413 for (int j = 0; j < 10; ++j) 414 ; 415 } 416 #pragma omp simd 417 for (int i = 0; i < 10; ++i) { 418 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 419 } 420 #pragma omp simd 421 for (int i = 0; i < 10; ++i) { 422 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 423 for (int j = 0; j < 10; ++j) 424 ; 425 } 426 #pragma omp simd 427 for (int i = 0; i < 10; ++i) { 428 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 429 for (int j = 0; j < 10; ++j) 430 ; 431 } 432 #pragma omp simd 433 for (int i = 0; i < 10; ++i) { 434 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 435 for (int j = 0; j < 10; ++j) 436 ; 437 } 438 #pragma omp simd 439 for (int i = 0; i < 10; ++i) { 440 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 441 for (int j = 0; j < 10; ++j) 442 ; 443 } 444 #pragma omp simd 445 for (int i = 0; i < 10; ++i) { 446 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 447 for (int j = 0; j < 10; ++j) 448 ; 449 } 450 #pragma omp simd 451 for (int i = 0; i < 10; ++i) { 452 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 453 for (int j = 0; j < 10; ++j) 454 ; 455 } 456 #pragma omp simd 457 for (int i = 0; i < 10; ++i) { 458 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 459 for (int j = 0; j < 10; ++j) 460 ; 461 } 462 #pragma omp simd 463 for (int i = 0; i < 10; ++i) { 464 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 465 for (int j = 0; j < 10; ++j) 466 ; 467 } 468 #pragma omp simd 469 for (int i = 0; i < 10; ++i) { 470 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 471 ++a; 472 } 473 #pragma omp simd 474 for (int i = 0; i < 10; ++i) { 475 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 476 for (int j = 0; j < 10; ++j) 477 ; 478 } 479 #pragma omp simd 480 for (int i = 0; i < 10; ++i) { 481 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 482 for (int j = 0; j < 10; ++j) 483 ; 484 } 485 #pragma omp simd 486 for (int i = 0; i < 10; ++i) { 487 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 488 for (int j = 0; j < 10; ++j) 489 ; 490 } 491 #pragma omp simd 492 for (int i = 0; i < 10; ++i) { 493 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 494 for (int j = 0; j < 10; ++j) 495 ; 496 } 497 498 // FOR DIRECTIVE 499 #pragma omp for 500 for (int i = 0; i < 10; ++i) { 501 #pragma omp for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 502 for (int i = 0; i < 10; ++i) 503 ; 504 } 505 #pragma omp for 506 for (int i = 0; i < 10; ++i) { 507 #pragma omp simd 508 for (int i = 0; i < 10; ++i) 509 ; 510 } 511 #pragma omp for 512 for (int i = 0; i < 10; ++i) { 513 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 514 for (int i = 0; i < 10; ++i) 515 ; 516 } 517 #pragma omp for 518 for (int i = 0; i < 10; ++i) { 519 #pragma omp parallel 520 for (int i = 0; i < 10; ++i) 521 ; 522 } 523 #pragma omp for 524 for (int i = 0; i < 10; ++i) { 525 #pragma omp sections // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 526 { 527 bar(); 528 } 529 } 530 #pragma omp for 531 for (int i = 0; i < 10; ++i) { 532 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 533 { 534 bar(); 535 } 536 } 537 #pragma omp for 538 for (int i = 0; i < 10; ++i) { 539 #pragma omp single // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 540 { 541 bar(); 542 } 543 } 544 545 #pragma omp for 546 for (int i = 0; i < 10; ++i) { 547 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 548 { 549 bar(); 550 } 551 } 552 #pragma omp for 553 for (int i = 0; i < 10; ++i) { 554 #pragma omp critical 555 { 556 bar(); 557 } 558 } 559 #pragma omp for 560 for (int i = 0; i < 10; ++i) { 561 #pragma omp parallel 562 { 563 #pragma omp single // OK 564 { 565 bar(); 566 } 567 #pragma omp for // OK 568 for (int i = 0; i < 10; ++i) 569 ; 570 #pragma omp sections // OK 571 { 572 bar(); 573 } 574 } 575 } 576 #pragma omp for 577 for (int i = 0; i < 10; ++i) { 578 #pragma omp parallel for 579 for (int i = 0; i < 10; ++i) 580 ; 581 } 582 #pragma omp for 583 for (int i = 0; i < 10; ++i) { 584 #pragma omp parallel for simd 585 for (int i = 0; i < 10; ++i) 586 ; 587 } 588 #pragma omp for 589 for (int i = 0; i < 10; ++i) { 590 #pragma omp parallel master 591 { 592 bar(); 593 } 594 } 595 #pragma omp for 596 for (int i = 0; i < 10; ++i) { 597 #pragma omp parallel sections 598 { 599 bar(); 600 } 601 } 602 #pragma omp for 603 for (int i = 0; i < 10; ++i) { 604 #pragma omp task 605 { 606 bar(); 607 } 608 } 609 #pragma omp for 610 for (int i = 0; i < 10; ++i) { 611 #pragma omp taskyield 612 bar(); 613 } 614 #pragma omp for 615 for (int i = 0; i < 10; ++i) { 616 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 617 bar(); 618 } 619 #pragma omp for 620 for (int i = 0; i < 10; ++i) { 621 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 622 bar(); 623 } 624 #pragma omp for 625 for (int i = 0; i < 10; ++i) { 626 #pragma omp taskwait 627 bar(); 628 } 629 #pragma omp for 630 for (int i = 0; i < 10; ++i) { 631 #pragma omp flush 632 bar(); 633 } 634 #pragma omp for 635 for (int i = 0; i < 10; ++i) { 636 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 637 bar(); 638 } 639 #pragma omp for ordered 640 for (int i = 0; i < 10; ++i) { 641 #pragma omp ordered // OK 642 bar(); 643 } 644 #pragma omp for 645 for (int i = 0; i < 10; ++i) { 646 #pragma omp atomic 647 ++a; 648 } 649 #pragma omp for 650 for (int i = 0; i < 10; ++i) { 651 #pragma omp target 652 ++a; 653 } 654 #pragma omp for 655 for (int i = 0; i < 10; ++i) { 656 #pragma omp target parallel 657 ++a; 658 } 659 #pragma omp for 660 for (int i = 0; i < 10; ++i) { 661 #pragma omp target parallel for 662 for (int i = 0; i < 10; ++i) 663 ; 664 } 665 #pragma omp for 666 for (int i = 0; i < 10; ++i) { 667 #pragma omp target enter data map(to: a) 668 ++a; 669 } 670 #pragma omp for 671 for (int i = 0; i < 10; ++i) { 672 #pragma omp target exit data map(from: a) 673 ++a; 674 } 675 #pragma omp for 676 for (int i = 0; i < 10; ++i) { 677 #pragma omp teams // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 678 ++a; 679 } 680 #pragma omp for 681 for (int i = 0; i < 10; ++i) { 682 #pragma omp taskloop 683 for (int i = 0; i < 10; ++i) 684 ++a; 685 } 686 #pragma omp for 687 for (int i = 0; i < 10; ++i) { 688 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 689 for (int j = 0; j < 10; ++j) 690 ; 691 } 692 #pragma omp for 693 for (int i = 0; i < 10; ++i) { 694 #pragma omp target update to(a) 695 } 696 #pragma omp for 697 for (int i = 0; i < 10; ++i) { 698 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 699 for (int j = 0; j < 10; ++j) 700 ; 701 } 702 #pragma omp for 703 for (int i = 0; i < 10; ++i) { 704 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 705 for (int j = 0; j < 10; ++j) 706 ; 707 } 708 #pragma omp for 709 for (int i = 0; i < 10; ++i) { 710 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 711 for (int j = 0; j < 10; ++j) 712 ; 713 } 714 #pragma omp for 715 for (int i = 0; i < 10; ++i) { 716 #pragma omp target simd // OK 717 for (int j = 0; j < 10; ++j) 718 ; 719 } 720 #pragma omp for 721 for (int i = 0; i < 10; ++i) { 722 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 723 for (int j = 0; j < 10; ++j) 724 ; 725 } 726 #pragma omp for 727 for (int i = 0; i < 10; ++i) { 728 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 729 for (int j = 0; j < 10; ++j) 730 ; 731 } 732 #pragma omp for 733 for (int i = 0; i < 10; ++i) { 734 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 735 for (int j = 0; j < 10; ++j) 736 ; 737 } 738 #pragma omp for 739 for (int i = 0; i < 10; ++i) { 740 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 741 for (int j = 0; j < 10; ++j) 742 ; 743 } 744 #pragma omp for 745 for (int i = 0; i < 10; ++i) { 746 #pragma omp target teams // OK 747 ++a; 748 } 749 #pragma omp for 750 for (int i = 0; i < 10; ++i) { 751 #pragma omp target teams distribute // OK 752 for (int j = 0; j < 10; ++j) 753 ; 754 } 755 #pragma omp for 756 for (int i = 0; i < 10; ++i) { 757 #pragma omp target teams distribute parallel for // OK 758 for (int j = 0; j < 10; ++j) 759 ; 760 } 761 #pragma omp for 762 for (int i = 0; i < 10; ++i) { 763 #pragma omp target teams distribute parallel for simd // OK 764 for (int j = 0; j < 10; ++j) 765 ; 766 } 767 #pragma omp for 768 for (int i = 0; i < 10; ++i) { 769 #pragma omp target teams distribute simd // OK 770 for (int j = 0; j < 10; ++j) 771 ; 772 } 773 774 // FOR SIMD DIRECTIVE 775 #pragma omp for simd 776 for (int i = 0; i < 10; ++i) { 777 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 778 for (int i = 0; i < 10; ++i) 779 ; 780 } 781 #pragma omp for simd 782 for (int i = 0; i < 10; ++i) { 783 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 784 for (int i = 0; i < 10; ++i) 785 ; 786 } 787 #pragma omp for simd 788 for (int i = 0; i < 10; ++i) { 789 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 790 for (int i = 0; i < 10; ++i) 791 ; 792 } 793 #pragma omp for simd 794 for (int i = 0; i < 10; ++i) { 795 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 796 for (int i = 0; i < 10; ++i) 797 ; 798 } 799 #pragma omp for simd 800 for (int i = 0; i < 10; ++i) { 801 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 802 { 803 bar(); 804 } 805 } 806 #pragma omp for simd 807 for (int i = 0; i < 10; ++i) { 808 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 809 { 810 bar(); 811 } 812 } 813 #pragma omp for simd 814 for (int i = 0; i < 10; ++i) { 815 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 816 { 817 bar(); 818 } 819 } 820 #pragma omp for simd 821 for (int i = 0; i < 10; ++i) { 822 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 823 { 824 bar(); 825 } 826 } 827 #pragma omp for simd 828 for (int i = 0; i < 10; ++i) { 829 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 830 { 831 bar(); 832 } 833 } 834 #pragma omp for simd 835 for (int i = 0; i < 10; ++i) { 836 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 837 for (int i = 0; i < 10; ++i) 838 ; 839 } 840 #pragma omp for simd 841 for (int i = 0; i < 10; ++i) { 842 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 843 for (int i = 0; i < 10; ++i) 844 ; 845 } 846 #pragma omp for simd 847 for (int i = 0; i < 10; ++i) { 848 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 849 { 850 bar(); 851 } 852 } 853 #pragma omp for simd 854 for (int i = 0; i < 10; ++i) { 855 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 856 { 857 bar(); 858 } 859 } 860 #pragma omp for simd 861 for (int i = 0; i < 10; ++i) { 862 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 863 { 864 bar(); 865 } 866 } 867 #pragma omp for simd 868 for (int i = 0; i < 10; ++i) { 869 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 870 bar(); 871 } 872 #pragma omp for simd 873 for (int i = 0; i < 10; ++i) { 874 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 875 bar(); 876 } 877 #pragma omp for simd 878 for (int i = 0; i < 10; ++i) { 879 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 880 bar(); 881 } 882 #pragma omp for simd 883 for (int i = 0; i < 10; ++i) { 884 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 885 bar(); 886 } 887 #pragma omp for simd 888 for (int i = 0; i < 10; ++i) { 889 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 890 bar(); 891 } 892 #pragma omp for simd 893 for (int i = 0; i < 10; ++i) { 894 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 895 bar(); 896 } 897 #pragma omp for simd 898 for (int i = 0; i < 10; ++i) { 899 #pragma omp ordered simd // OK 900 bar(); 901 } 902 #pragma omp for simd 903 for (int i = 0; i < 10; ++i) { 904 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 905 bar(); 906 } 907 #pragma omp for simd 908 for (int i = 0; i < 10; ++i) { 909 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 910 ++a; 911 } 912 #pragma omp for simd 913 for (int i = 0; i < 10; ++i) { 914 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 915 ++a; 916 } 917 #pragma omp for simd 918 for (int i = 0; i < 10; ++i) { 919 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 920 ++a; 921 } 922 #pragma omp for simd 923 for (int i = 0; i < 10; ++i) { 924 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 925 for (int i = 0; i < 10; ++i) 926 ; 927 } 928 #pragma omp for simd 929 for (int i = 0; i < 10; ++i) { 930 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 931 ++a; 932 } 933 #pragma omp for simd 934 for (int i = 0; i < 10; ++i) { 935 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 936 ++a; 937 } 938 #pragma omp for simd 939 for (int i = 0; i < 10; ++i) { 940 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 941 ++a; 942 } 943 #pragma omp for simd 944 for (int i = 0; i < 10; ++i) { 945 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 946 for (int i = 0; i < 10; ++i) 947 ++a; 948 } 949 #pragma omp for simd 950 for (int i = 0; i < 10; ++i) { 951 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 952 for (int j = 0; j < 10; ++j) 953 ; 954 } 955 #pragma omp for simd 956 for (int i = 0; i < 10; ++i) { 957 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 958 bar(); 959 } 960 #pragma omp for simd 961 for (int i = 0; i < 10; ++i) { 962 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 963 for (int j = 0; j < 10; ++j) 964 ; 965 } 966 #pragma omp for simd 967 for (int i = 0; i < 10; ++i) { 968 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 969 for (int j = 0; j < 10; ++j) 970 ; 971 } 972 #pragma omp for simd 973 for (int i = 0; i < 10; ++i) { 974 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 975 for (int j = 0; j < 10; ++j) 976 ; 977 } 978 #pragma omp for simd 979 for (int i = 0; i < 10; ++i) { 980 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 981 for (int j = 0; j < 10; ++j) 982 ; 983 } 984 #pragma omp for simd 985 for (int i = 0; i < 10; ++i) { 986 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 987 for (int j = 0; j < 10; ++j) 988 ; 989 } 990 #pragma omp for simd 991 for (int i = 0; i < 10; ++i) { 992 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 993 for (int j = 0; j < 10; ++j) 994 ; 995 } 996 #pragma omp for simd 997 for (int i = 0; i < 10; ++i) { 998 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 999 for (int j = 0; j < 10; ++j) 1000 ; 1001 } 1002 #pragma omp for simd 1003 for (int i = 0; i < 10; ++i) { 1004 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1005 for (int j = 0; j < 10; ++j) 1006 ; 1007 } 1008 #pragma omp for simd 1009 for (int i = 0; i < 10; ++i) { 1010 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1011 a++; 1012 } 1013 #pragma omp for simd 1014 for (int i = 0; i < 10; ++i) { 1015 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1016 for (int j = 0; j < 10; ++j) 1017 ; 1018 } 1019 #pragma omp for simd 1020 for (int i = 0; i < 10; ++i) { 1021 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1022 for (int j = 0; j < 10; ++j) 1023 ; 1024 } 1025 #pragma omp for simd 1026 for (int i = 0; i < 10; ++i) { 1027 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1028 for (int j = 0; j < 10; ++j) 1029 ; 1030 } 1031 #pragma omp for simd 1032 for (int i = 0; i < 10; ++i) { 1033 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1034 for (int j = 0; j < 10; ++j) 1035 ; 1036 } 1037 1038 // SECTIONS DIRECTIVE 1039 #pragma omp sections 1040 { 1041 #pragma omp for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1042 for (int i = 0; i < 10; ++i) 1043 ; 1044 } 1045 #pragma omp sections 1046 { 1047 #pragma omp simd 1048 for (int i = 0; i < 10; ++i) 1049 ; 1050 } 1051 #pragma omp sections 1052 { 1053 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1054 for (int i = 0; i < 10; ++i) 1055 ; 1056 } 1057 #pragma omp sections 1058 { 1059 #pragma omp parallel 1060 for (int i = 0; i < 10; ++i) 1061 ; 1062 } 1063 #pragma omp sections 1064 { 1065 #pragma omp sections // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1066 { 1067 bar(); 1068 } 1069 } 1070 #pragma omp sections 1071 { 1072 #pragma omp section 1073 { 1074 bar(); 1075 } 1076 } 1077 #pragma omp sections 1078 { 1079 #pragma omp parallel 1080 { 1081 #pragma omp single // OK 1082 { 1083 bar(); 1084 } 1085 #pragma omp for // OK 1086 for (int i = 0; i < 10; ++i) 1087 ; 1088 #pragma omp sections // OK 1089 { 1090 bar(); 1091 } 1092 } 1093 } 1094 #pragma omp sections 1095 { 1096 #pragma omp parallel master 1097 { 1098 bar(); 1099 } 1100 } 1101 #pragma omp sections 1102 { 1103 #pragma omp parallel 1104 { 1105 #pragma omp master // OK 1106 { 1107 bar(); 1108 } 1109 #pragma omp for // OK 1110 for (int i = 0; i < 10; ++i) 1111 ; 1112 #pragma omp master // OK 1113 { 1114 bar(); 1115 } 1116 } 1117 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1118 bar(); 1119 } 1120 #pragma omp sections 1121 { 1122 #pragma omp parallel 1123 { 1124 #pragma omp critical(A) // OK 1125 { 1126 bar(); 1127 } 1128 #pragma omp for // OK 1129 for (int i = 0; i < 10; ++i) 1130 ; 1131 #pragma omp critical // OK 1132 { 1133 bar(); 1134 } 1135 } 1136 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1137 bar(); 1138 } 1139 #pragma omp sections 1140 { 1141 #pragma omp parallel for 1142 for (int i = 0; i < 10; ++i) 1143 ; 1144 } 1145 #pragma omp sections 1146 { 1147 #pragma omp parallel for simd 1148 for (int i = 0; i < 10; ++i) 1149 ; 1150 } 1151 #pragma omp sections 1152 { 1153 #pragma omp parallel sections 1154 { 1155 bar(); 1156 } 1157 } 1158 #pragma omp sections 1159 { 1160 #pragma omp task 1161 { 1162 bar(); 1163 } 1164 } 1165 #pragma omp sections 1166 { 1167 #pragma omp taskyield 1168 } 1169 #pragma omp sections 1170 { 1171 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1172 } 1173 #pragma omp sections 1174 { 1175 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}} 1176 } 1177 #pragma omp sections 1178 { 1179 #pragma omp taskwait 1180 } 1181 #pragma omp sections 1182 { 1183 #pragma omp flush 1184 } 1185 #pragma omp sections 1186 { 1187 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 1188 bar(); 1189 } 1190 #pragma omp sections 1191 { 1192 #pragma omp atomic 1193 ++a; 1194 } 1195 #pragma omp sections 1196 { 1197 #pragma omp target 1198 ++a; 1199 } 1200 #pragma omp sections 1201 { 1202 #pragma omp target parallel 1203 ++a; 1204 } 1205 #pragma omp sections 1206 { 1207 #pragma omp target parallel for 1208 for (int i = 0; i < 10; ++i) 1209 ; 1210 } 1211 #pragma omp sections 1212 { 1213 #pragma omp target enter data map(to: a) 1214 } 1215 #pragma omp sections 1216 { 1217 #pragma omp target exit data map(from: a) 1218 } 1219 #pragma omp sections 1220 { 1221 #pragma omp teams // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 1222 ++a; 1223 } 1224 #pragma omp sections 1225 { 1226 #pragma omp taskloop 1227 for (int i = 0; i < 10; ++i) 1228 ++a; 1229 } 1230 #pragma omp sections 1231 { 1232 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 1233 for (int i = 0; i < 10; ++i) 1234 ; 1235 } 1236 #pragma omp sections 1237 { 1238 #pragma omp target update to(a) 1239 } 1240 #pragma omp sections 1241 { 1242 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 1243 for (int i = 0; i < 10; ++i) 1244 ; 1245 } 1246 #pragma omp sections 1247 { 1248 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 1249 for (int i = 0; i < 10; ++i) 1250 ; 1251 } 1252 #pragma omp sections 1253 { 1254 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 1255 for (int i = 0; i < 10; ++i) 1256 ; 1257 } 1258 #pragma omp sections 1259 { 1260 #pragma omp target simd // OK 1261 for (int i = 0; i < 10; ++i) 1262 ; 1263 } 1264 #pragma omp sections 1265 { 1266 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 1267 for (int i = 0; i < 10; ++i) 1268 ; 1269 } 1270 #pragma omp sections 1271 { 1272 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 1273 for (int i = 0; i < 10; ++i) 1274 ; 1275 } 1276 #pragma omp sections 1277 { 1278 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1279 for (int i = 0; i < 10; ++i) 1280 ; 1281 } 1282 #pragma omp sections 1283 { 1284 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1285 for (int i = 0; i < 10; ++i) 1286 ; 1287 } 1288 #pragma omp sections 1289 { 1290 #pragma omp target teams // OK 1291 ++a; 1292 } 1293 #pragma omp sections 1294 { 1295 #pragma omp target teams distribute // OK 1296 for (int i = 0; i < 10; ++i) 1297 ; 1298 } 1299 #pragma omp sections 1300 { 1301 #pragma omp target teams distribute parallel for // OK 1302 for (int i = 0; i < 10; ++i) 1303 ; 1304 } 1305 #pragma omp sections 1306 { 1307 #pragma omp target teams distribute parallel for simd // OK 1308 for (int i = 0; i < 10; ++i) 1309 ; 1310 } 1311 #pragma omp sections 1312 { 1313 #pragma omp target teams distribute simd // OK 1314 for (int i = 0; i < 10; ++i) 1315 ; 1316 } 1317 1318 // SECTION DIRECTIVE 1319 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1320 { 1321 bar(); 1322 } 1323 #pragma omp sections 1324 { 1325 #pragma omp section 1326 { 1327 #pragma omp for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1328 for (int i = 0; i < 10; ++i) 1329 ; 1330 } 1331 } 1332 #pragma omp sections 1333 { 1334 #pragma omp section 1335 { 1336 #pragma omp simd 1337 for (int i = 0; i < 10; ++i) 1338 ; 1339 } 1340 } 1341 #pragma omp sections 1342 { 1343 #pragma omp section 1344 { 1345 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1346 for (int i = 0; i < 10; ++i) 1347 ; 1348 } 1349 } 1350 #pragma omp sections 1351 { 1352 #pragma omp section 1353 { 1354 #pragma omp parallel 1355 for (int i = 0; i < 10; ++i) 1356 ; 1357 } 1358 } 1359 #pragma omp sections 1360 { 1361 #pragma omp section 1362 { 1363 #pragma omp sections // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1364 { 1365 bar(); 1366 } 1367 } 1368 } 1369 #pragma omp sections 1370 { 1371 #pragma omp section 1372 { 1373 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1374 { 1375 bar(); 1376 } 1377 } 1378 } 1379 #pragma omp sections 1380 { 1381 #pragma omp section 1382 { 1383 #pragma omp parallel master 1384 bar(); 1385 #pragma omp critical 1386 bar(); 1387 } 1388 } 1389 #pragma omp sections 1390 { 1391 #pragma omp section 1392 { 1393 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 1394 bar(); 1395 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1396 bar(); 1397 #pragma omp critical 1398 bar(); 1399 } 1400 } 1401 #pragma omp sections 1402 { 1403 #pragma omp section 1404 { 1405 #pragma omp parallel 1406 { 1407 #pragma omp single // OK 1408 { 1409 bar(); 1410 } 1411 #pragma omp for // OK 1412 for (int i = 0; i < 10; ++i) 1413 ; 1414 #pragma omp for simd // OK 1415 for (int i = 0; i < 10; ++i) 1416 ; 1417 #pragma omp sections // OK 1418 { 1419 bar(); 1420 } 1421 } 1422 } 1423 } 1424 #pragma omp sections 1425 { 1426 #pragma omp section 1427 { 1428 #pragma omp parallel for 1429 for (int i = 0; i < 10; ++i) 1430 ; 1431 } 1432 } 1433 #pragma omp sections 1434 { 1435 #pragma omp section 1436 { 1437 #pragma omp parallel for simd 1438 for (int i = 0; i < 10; ++i) 1439 ; 1440 } 1441 } 1442 #pragma omp sections 1443 { 1444 #pragma omp section 1445 { 1446 #pragma omp parallel sections 1447 { 1448 bar(); 1449 } 1450 } 1451 } 1452 #pragma omp sections 1453 { 1454 #pragma omp section 1455 { 1456 #pragma omp task 1457 { 1458 bar(); 1459 } 1460 } 1461 } 1462 #pragma omp sections 1463 { 1464 #pragma omp section 1465 { 1466 #pragma omp taskyield 1467 bar(); 1468 } 1469 } 1470 #pragma omp sections 1471 { 1472 #pragma omp section 1473 { 1474 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1475 bar(); 1476 } 1477 } 1478 #pragma omp sections 1479 { 1480 #pragma omp section 1481 { 1482 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}} 1483 bar(); 1484 } 1485 } 1486 #pragma omp sections 1487 { 1488 #pragma omp section 1489 { 1490 #pragma omp taskwait 1491 bar(); 1492 } 1493 } 1494 #pragma omp sections 1495 { 1496 #pragma omp section 1497 { 1498 #pragma omp flush 1499 bar(); 1500 } 1501 } 1502 #pragma omp sections 1503 { 1504 #pragma omp section 1505 { 1506 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 1507 bar(); 1508 } 1509 } 1510 #pragma omp sections 1511 { 1512 #pragma omp section 1513 #pragma omp atomic 1514 ++a; 1515 } 1516 #pragma omp sections 1517 { 1518 #pragma omp section 1519 #pragma omp target 1520 ++a; 1521 } 1522 #pragma omp sections 1523 { 1524 #pragma omp section 1525 #pragma omp target parallel 1526 ++a; 1527 } 1528 #pragma omp sections 1529 { 1530 #pragma omp section 1531 { 1532 #pragma omp target parallel for 1533 for (int i = 0; i < 10; ++i) 1534 ; 1535 } 1536 } 1537 #pragma omp sections 1538 { 1539 #pragma omp section 1540 { 1541 #pragma omp target enter data map(to: a) 1542 ++a; 1543 } 1544 } 1545 #pragma omp sections 1546 { 1547 #pragma omp section 1548 { 1549 #pragma omp target exit data map(from: a) 1550 ++a; 1551 } 1552 } 1553 #pragma omp sections 1554 { 1555 #pragma omp section 1556 #pragma omp teams // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 1557 ++a; 1558 } 1559 #pragma omp sections 1560 { 1561 #pragma omp section 1562 #pragma omp taskloop 1563 for (int i = 0; i < 10; ++i) 1564 ++a; 1565 } 1566 #pragma omp sections 1567 { 1568 #pragma omp section 1569 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 1570 for (int i = 0; i < 10; ++i) 1571 ; 1572 } 1573 #pragma omp sections 1574 { 1575 #pragma omp section 1576 { 1577 bar(); 1578 #pragma omp target update to(a) 1579 } 1580 } 1581 #pragma omp sections 1582 { 1583 #pragma omp section 1584 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 1585 for (int i = 0; i < 10; ++i) 1586 ; 1587 } 1588 #pragma omp sections 1589 { 1590 #pragma omp section 1591 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 1592 for (int i = 0; i < 10; ++i) 1593 ; 1594 } 1595 #pragma omp sections 1596 { 1597 #pragma omp section 1598 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 1599 for (int i = 0; i < 10; ++i) 1600 ; 1601 } 1602 #pragma omp sections 1603 { 1604 #pragma omp section 1605 #pragma omp target simd // OK 1606 for (int i = 0; i < 10; ++i) 1607 ; 1608 } 1609 #pragma omp sections 1610 { 1611 #pragma omp section 1612 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 1613 for (int i = 0; i < 10; ++i) 1614 ; 1615 } 1616 #pragma omp sections 1617 { 1618 #pragma omp section 1619 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 1620 for (int i = 0; i < 10; ++i) 1621 ; 1622 } 1623 #pragma omp sections 1624 { 1625 #pragma omp section 1626 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1627 for (int i = 0; i < 10; ++i) 1628 ; 1629 } 1630 #pragma omp sections 1631 { 1632 #pragma omp section 1633 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1634 for (int i = 0; i < 10; ++i) 1635 ; 1636 } 1637 #pragma omp sections 1638 { 1639 #pragma omp section 1640 #pragma omp target teams // OK 1641 ++a; 1642 } 1643 #pragma omp sections 1644 { 1645 #pragma omp section 1646 #pragma omp target teams distribute // OK 1647 for (int i = 0; i < 10; ++i) 1648 ; 1649 } 1650 #pragma omp sections 1651 { 1652 #pragma omp section 1653 #pragma omp target teams distribute parallel for // OK 1654 for (int i = 0; i < 10; ++i) 1655 ; 1656 } 1657 #pragma omp sections 1658 { 1659 #pragma omp section 1660 #pragma omp target teams distribute parallel for simd // OK 1661 for (int i = 0; i < 10; ++i) 1662 ; 1663 } 1664 #pragma omp sections 1665 { 1666 #pragma omp section 1667 #pragma omp target teams distribute simd // OK 1668 for (int i = 0; i < 10; ++i) 1669 ; 1670 } 1671 1672 // SINGLE DIRECTIVE 1673 #pragma omp single 1674 { 1675 #pragma omp for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1676 for (int i = 0; i < 10; ++i) 1677 ; 1678 } 1679 #pragma omp single 1680 { 1681 #pragma omp simd 1682 for (int i = 0; i < 10; ++i) 1683 ; 1684 } 1685 #pragma omp single 1686 { 1687 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1688 for (int i = 0; i < 10; ++i) 1689 ; 1690 } 1691 #pragma omp single 1692 { 1693 #pragma omp parallel 1694 for (int i = 0; i < 10; ++i) 1695 ; 1696 } 1697 #pragma omp single 1698 { 1699 #pragma omp single // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 1700 { 1701 bar(); 1702 } 1703 } 1704 #pragma omp single 1705 { 1706 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1707 { 1708 bar(); 1709 } 1710 } 1711 #pragma omp single 1712 { 1713 #pragma omp parallel master 1714 { 1715 bar(); 1716 } 1717 } 1718 #pragma omp single 1719 { 1720 #pragma omp critical 1721 { 1722 bar(); 1723 } 1724 } 1725 #pragma omp single 1726 { 1727 #pragma omp sections // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1728 { 1729 bar(); 1730 } 1731 } 1732 #pragma omp single 1733 { 1734 #pragma omp parallel 1735 { 1736 #pragma omp single // OK 1737 { 1738 bar(); 1739 } 1740 #pragma omp for // OK 1741 for (int i = 0; i < 10; ++i) 1742 ; 1743 #pragma omp for simd // OK 1744 for (int i = 0; i < 10; ++i) 1745 ; 1746 #pragma omp sections // OK 1747 { 1748 bar(); 1749 } 1750 } 1751 } 1752 #pragma omp single 1753 { 1754 #pragma omp parallel for 1755 for (int i = 0; i < 10; ++i) 1756 ; 1757 } 1758 #pragma omp single 1759 { 1760 #pragma omp parallel for simd 1761 for (int i = 0; i < 10; ++i) 1762 ; 1763 } 1764 #pragma omp single 1765 { 1766 #pragma omp parallel sections 1767 { 1768 bar(); 1769 } 1770 } 1771 #pragma omp single 1772 { 1773 #pragma omp task 1774 { 1775 bar(); 1776 } 1777 } 1778 #pragma omp single 1779 { 1780 #pragma omp taskyield 1781 bar(); 1782 } 1783 #pragma omp single 1784 { 1785 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1786 bar(); 1787 } 1788 #pragma omp single 1789 { 1790 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}} 1791 bar(); 1792 } 1793 #pragma omp single 1794 { 1795 #pragma omp taskwait 1796 bar(); 1797 } 1798 #pragma omp single 1799 { 1800 #pragma omp flush 1801 bar(); 1802 } 1803 #pragma omp single 1804 { 1805 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 1806 bar(); 1807 } 1808 #pragma omp single 1809 { 1810 #pragma omp atomic 1811 ++a; 1812 } 1813 #pragma omp single 1814 { 1815 #pragma omp target 1816 ++a; 1817 } 1818 #pragma omp single 1819 { 1820 #pragma omp target parallel 1821 ++a; 1822 } 1823 #pragma omp single 1824 { 1825 #pragma omp target parallel for 1826 for (int i = 0; i < 10; ++i) 1827 ; 1828 } 1829 #pragma omp single 1830 { 1831 #pragma omp target enter data map(to: a) 1832 ++a; 1833 } 1834 #pragma omp single 1835 { 1836 #pragma omp target exit data map(from: a) 1837 ++a; 1838 } 1839 #pragma omp single 1840 { 1841 #pragma omp teams // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 1842 ++a; 1843 } 1844 #pragma omp single 1845 { 1846 #pragma omp taskloop 1847 for (int i = 0; i < 10; ++i) 1848 ++a; 1849 } 1850 #pragma omp single 1851 { 1852 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 1853 for (int i = 0; i < 10; ++i) 1854 ; 1855 } 1856 #pragma omp single 1857 { 1858 #pragma omp target update to(a) 1859 bar(); 1860 } 1861 #pragma omp single 1862 { 1863 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 1864 for (int i = 0; i < 10; ++i) 1865 ; 1866 } 1867 #pragma omp single 1868 { 1869 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 1870 for (int i = 0; i < 10; ++i) 1871 ; 1872 } 1873 #pragma omp single 1874 { 1875 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 1876 for (int i = 0; i < 10; ++i) 1877 ; 1878 } 1879 #pragma omp single 1880 { 1881 #pragma omp target simd // OK 1882 for (int i = 0; i < 10; ++i) 1883 ; 1884 } 1885 #pragma omp single 1886 { 1887 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 1888 for (int i = 0; i < 10; ++i) 1889 ; 1890 } 1891 #pragma omp single 1892 { 1893 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 1894 for (int i = 0; i < 10; ++i) 1895 ; 1896 } 1897 #pragma omp single 1898 { 1899 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1900 for (int i = 0; i < 10; ++i) 1901 ; 1902 } 1903 #pragma omp single 1904 { 1905 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1906 for (int i = 0; i < 10; ++i) 1907 ; 1908 } 1909 #pragma omp single 1910 { 1911 #pragma omp target teams // OK 1912 ++a; 1913 } 1914 #pragma omp single 1915 { 1916 #pragma omp target teams distribute // OK 1917 for (int i = 0; i < 10; ++i) 1918 ; 1919 } 1920 #pragma omp single 1921 { 1922 #pragma omp target teams distribute parallel for // OK 1923 for (int i = 0; i < 10; ++i) 1924 ; 1925 } 1926 #pragma omp single 1927 { 1928 #pragma omp target teams distribute parallel for simd // OK 1929 for (int i = 0; i < 10; ++i) 1930 ; 1931 } 1932 #pragma omp single 1933 { 1934 #pragma omp target teams distribute simd // OK 1935 for (int i = 0; i < 10; ++i) 1936 ; 1937 } 1938 1939 // MASTER DIRECTIVE 1940 #pragma omp master 1941 { 1942 #pragma omp for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1943 for (int i = 0; i < 10; ++i) 1944 ; 1945 } 1946 #pragma omp master 1947 { 1948 #pragma omp simd 1949 for (int i = 0; i < 10; ++i) 1950 ; 1951 } 1952 #pragma omp master 1953 { 1954 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1955 for (int i = 0; i < 10; ++i) 1956 ; 1957 } 1958 #pragma omp master 1959 { 1960 #pragma omp parallel 1961 for (int i = 0; i < 10; ++i) 1962 ; 1963 } 1964 #pragma omp master 1965 { 1966 #pragma omp single // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 1967 { 1968 bar(); 1969 } 1970 } 1971 #pragma omp master 1972 { 1973 #pragma omp master // OK, though second 'master' is redundant 1974 { 1975 bar(); 1976 } 1977 } 1978 #pragma omp master 1979 { 1980 #pragma omp critical 1981 { 1982 bar(); 1983 } 1984 } 1985 #pragma omp master 1986 { 1987 #pragma omp sections // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1988 { 1989 bar(); 1990 } 1991 } 1992 #pragma omp master 1993 { 1994 #pragma omp parallel 1995 { 1996 #pragma omp master // OK 1997 { 1998 bar(); 1999 } 2000 #pragma omp for // OK 2001 for (int i = 0; i < 10; ++i) 2002 ; 2003 #pragma omp for simd // OK 2004 for (int i = 0; i < 10; ++i) 2005 ; 2006 #pragma omp sections // OK 2007 { 2008 bar(); 2009 } 2010 } 2011 } 2012 #pragma omp master 2013 { 2014 #pragma omp parallel master // OK 2015 { 2016 bar(); 2017 } 2018 #pragma omp parallel 2019 { 2020 #pragma omp for // OK 2021 for (int i = 0; i < 10; ++i) 2022 ; 2023 #pragma omp for simd // OK 2024 for (int i = 0; i < 10; ++i) 2025 ; 2026 #pragma omp sections // OK 2027 { 2028 bar(); 2029 } 2030 } 2031 } 2032 #pragma omp master 2033 { 2034 #pragma omp parallel for 2035 for (int i = 0; i < 10; ++i) 2036 ; 2037 } 2038 #pragma omp master 2039 { 2040 #pragma omp parallel for simd 2041 for (int i = 0; i < 10; ++i) 2042 ; 2043 } 2044 #pragma omp master 2045 { 2046 #pragma omp parallel sections 2047 { 2048 bar(); 2049 } 2050 } 2051 #pragma omp master 2052 { 2053 #pragma omp task 2054 { 2055 bar(); 2056 } 2057 } 2058 #pragma omp master 2059 { 2060 #pragma omp taskyield 2061 bar(); 2062 } 2063 #pragma omp master 2064 { 2065 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 2066 bar(); 2067 } 2068 #pragma omp master 2069 { 2070 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}} 2071 bar(); 2072 } 2073 #pragma omp master 2074 { 2075 #pragma omp taskwait 2076 bar(); 2077 } 2078 #pragma omp master 2079 { 2080 #pragma omp flush 2081 bar(); 2082 } 2083 #pragma omp master 2084 { 2085 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 2086 bar(); 2087 } 2088 #pragma omp master 2089 { 2090 #pragma omp atomic 2091 ++a; 2092 } 2093 #pragma omp master 2094 { 2095 #pragma omp target 2096 ++a; 2097 } 2098 #pragma omp master 2099 { 2100 #pragma omp target parallel 2101 ++a; 2102 } 2103 #pragma omp master 2104 { 2105 #pragma omp target parallel for 2106 for (int i = 0; i < 10; ++i) 2107 ; 2108 } 2109 #pragma omp master 2110 { 2111 #pragma omp target enter data map(to: a) 2112 ++a; 2113 } 2114 #pragma omp master 2115 { 2116 #pragma omp target exit data map(from: a) 2117 ++a; 2118 } 2119 #pragma omp master 2120 { 2121 #pragma omp teams // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 2122 ++a; 2123 } 2124 #pragma omp master 2125 { 2126 #pragma omp taskloop 2127 for (int i = 0; i < 10; ++i) 2128 ++a; 2129 } 2130 #pragma omp master 2131 { 2132 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 2133 for (int i = 0; i < 10; ++i) 2134 ; 2135 } 2136 #pragma omp master 2137 { 2138 #pragma omp target update to(a) 2139 bar(); 2140 } 2141 #pragma omp master 2142 { 2143 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 2144 for (int i = 0; i < 10; ++i) 2145 ; 2146 } 2147 #pragma omp master 2148 { 2149 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 2150 for (int i = 0; i < 10; ++i) 2151 ; 2152 } 2153 #pragma omp master 2154 { 2155 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 2156 for (int i = 0; i < 10; ++i) 2157 ; 2158 } 2159 #pragma omp master 2160 { 2161 #pragma omp target simd // OK 2162 for (int i = 0; i < 10; ++i) 2163 ; 2164 } 2165 #pragma omp master 2166 { 2167 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 2168 for (int i = 0; i < 10; ++i) 2169 ; 2170 } 2171 #pragma omp master 2172 { 2173 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 2174 for (int i = 0; i < 10; ++i) 2175 ; 2176 } 2177 #pragma omp master 2178 { 2179 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2180 for (int i = 0; i < 10; ++i) 2181 ; 2182 } 2183 #pragma omp master 2184 { 2185 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2186 for (int i = 0; i < 10; ++i) 2187 ; 2188 } 2189 #pragma omp master 2190 { 2191 #pragma omp target teams // OK 2192 a++; 2193 } 2194 #pragma omp master 2195 { 2196 #pragma omp target teams distribute // OK 2197 for (int i = 0; i < 10; ++i) 2198 ; 2199 } 2200 #pragma omp master 2201 { 2202 #pragma omp target teams distribute parallel for // OK 2203 for (int i = 0; i < 10; ++i) 2204 ; 2205 } 2206 #pragma omp master 2207 { 2208 #pragma omp target teams distribute parallel for simd // OK 2209 for (int i = 0; i < 10; ++i) 2210 ; 2211 } 2212 #pragma omp master 2213 { 2214 #pragma omp target teams distribute simd // OK 2215 for (int i = 0; i < 10; ++i) 2216 ; 2217 } 2218 2219 // CRITICAL DIRECTIVE 2220 #pragma omp critical 2221 { 2222 #pragma omp for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 2223 for (int i = 0; i < 10; ++i) 2224 ; 2225 } 2226 #pragma omp critical 2227 { 2228 #pragma omp simd 2229 for (int i = 0; i < 10; ++i) 2230 ; 2231 } 2232 #pragma omp critical 2233 { 2234 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 2235 for (int i = 0; i < 10; ++i) 2236 ; 2237 } 2238 #pragma omp critical 2239 { 2240 #pragma omp parallel 2241 for (int i = 0; i < 10; ++i) 2242 ; 2243 } 2244 #pragma omp critical 2245 { 2246 #pragma omp single // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 2247 { 2248 bar(); 2249 } 2250 } 2251 #pragma omp critical 2252 { 2253 #pragma omp master // OK, though second 'master' is redundant 2254 { 2255 bar(); 2256 } 2257 } 2258 #pragma omp critical 2259 { 2260 #pragma omp critical 2261 { 2262 bar(); 2263 } 2264 } 2265 #pragma omp critical 2266 { 2267 #pragma omp sections // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 2268 { 2269 bar(); 2270 } 2271 } 2272 #pragma omp critical 2273 { 2274 #pragma omp parallel 2275 { 2276 #pragma omp master // OK 2277 { 2278 bar(); 2279 } 2280 #pragma omp for // OK 2281 for (int i = 0; i < 10; ++i) 2282 ; 2283 #pragma omp for simd // OK 2284 for (int i = 0; i < 10; ++i) 2285 ; 2286 #pragma omp sections // OK 2287 { 2288 bar(); 2289 } 2290 } 2291 } 2292 #pragma omp critical 2293 { 2294 #pragma omp parallel master 2295 { 2296 bar(); 2297 } 2298 } 2299 #pragma omp critical 2300 { 2301 #pragma omp parallel for 2302 for (int i = 0; i < 10; ++i) 2303 ; 2304 } 2305 #pragma omp critical 2306 { 2307 #pragma omp parallel for simd 2308 for (int i = 0; i < 10; ++i) 2309 ; 2310 } 2311 #pragma omp critical 2312 { 2313 #pragma omp parallel sections 2314 { 2315 bar(); 2316 } 2317 } 2318 #pragma omp critical 2319 { 2320 #pragma omp task 2321 { 2322 bar(); 2323 } 2324 } 2325 #pragma omp critical 2326 { 2327 #pragma omp taskyield 2328 bar(); 2329 } 2330 #pragma omp critical 2331 { 2332 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2333 bar(); 2334 } 2335 #pragma omp critical 2336 { 2337 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}} 2338 bar(); 2339 } 2340 #pragma omp critical 2341 { 2342 #pragma omp taskwait 2343 bar(); 2344 } 2345 #pragma omp critical(Tuzik) 2346 { 2347 #pragma omp critical(grelka) 2348 bar(); 2349 } 2350 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2351 { 2352 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2353 { 2354 #pragma omp critical(Tuzik) 2355 { 2356 #pragma omp parallel 2357 #pragma omp critical(grelka) 2358 { 2359 bar(); 2360 } 2361 } 2362 } 2363 } 2364 #pragma omp critical 2365 { 2366 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 2367 bar(); 2368 } 2369 #pragma omp critical 2370 { 2371 #pragma omp atomic 2372 ++a; 2373 } 2374 #pragma omp critical 2375 { 2376 #pragma omp target 2377 ++a; 2378 } 2379 #pragma omp critical 2380 { 2381 #pragma omp target parallel 2382 ++a; 2383 } 2384 #pragma omp critical 2385 { 2386 #pragma omp target parallel for 2387 for (int i = 0; i < 10; ++i) 2388 ; 2389 } 2390 #pragma omp critical 2391 { 2392 #pragma omp target enter data map(to: a) 2393 ++a; 2394 } 2395 #pragma omp critical 2396 { 2397 #pragma omp target exit data map(from: a) 2398 ++a; 2399 } 2400 #pragma omp critical 2401 { 2402 #pragma omp teams // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 2403 ++a; 2404 } 2405 #pragma omp critical 2406 { 2407 #pragma omp taskloop 2408 for (int i = 0; i < 10; ++i) 2409 ++a; 2410 } 2411 #pragma omp critical 2412 { 2413 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 2414 for (int i = 0; i < 10; ++i) 2415 ; 2416 } 2417 #pragma omp critical 2418 { 2419 #pragma omp target update to(a) 2420 bar(); 2421 } 2422 #pragma omp critical 2423 { 2424 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 2425 for (int i = 0; i < 10; ++i) 2426 ; 2427 } 2428 #pragma omp critical 2429 { 2430 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 2431 for (int i = 0; i < 10; ++i) 2432 ; 2433 } 2434 #pragma omp critical 2435 { 2436 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 2437 for (int i = 0; i < 10; ++i) 2438 ; 2439 } 2440 #pragma omp critical 2441 { 2442 #pragma omp target simd // OK 2443 for (int i = 0; i < 10; ++i) 2444 ; 2445 } 2446 #pragma omp critical 2447 { 2448 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 2449 for (int i = 0; i < 10; ++i) 2450 ; 2451 } 2452 #pragma omp critical 2453 { 2454 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 2455 for (int i = 0; i < 10; ++i) 2456 ; 2457 } 2458 #pragma omp critical 2459 { 2460 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2461 for (int i = 0; i < 10; ++i) 2462 ; 2463 } 2464 #pragma omp critical 2465 { 2466 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2467 for (int i = 0; i < 10; ++i) 2468 ; 2469 } 2470 #pragma omp critical 2471 { 2472 #pragma omp target teams // OK 2473 a++; 2474 } 2475 #pragma omp critical 2476 { 2477 #pragma omp target teams distribute // OK 2478 for (int i = 0; i < 10; ++i) 2479 ; 2480 } 2481 #pragma omp critical 2482 { 2483 #pragma omp target teams distribute parallel for // OK 2484 for (int i = 0; i < 10; ++i) 2485 ; 2486 } 2487 #pragma omp critical 2488 { 2489 #pragma omp target teams distribute parallel for simd // OK 2490 for (int i = 0; i < 10; ++i) 2491 ; 2492 } 2493 #pragma omp critical 2494 { 2495 #pragma omp target teams distribute simd // OK 2496 for (int i = 0; i < 10; ++i) 2497 ; 2498 } 2499 2500 // PARALLEL FOR DIRECTIVE 2501 #pragma omp parallel for 2502 for (int i = 0; i < 10; ++i) { 2503 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 2504 for (int i = 0; i < 10; ++i) 2505 ; 2506 } 2507 #pragma omp parallel for 2508 for (int i = 0; i < 10; ++i) { 2509 #pragma omp simd 2510 for (int i = 0; i < 10; ++i) 2511 ; 2512 } 2513 #pragma omp parallel for 2514 for (int i = 0; i < 10; ++i) { 2515 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 2516 for (int i = 0; i < 10; ++i) 2517 ; 2518 } 2519 #pragma omp parallel for 2520 for (int i = 0; i < 10; ++i) { 2521 #pragma omp parallel 2522 for (int i = 0; i < 10; ++i) 2523 ; 2524 } 2525 #pragma omp parallel for 2526 for (int i = 0; i < 10; ++i) { 2527 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 2528 { 2529 bar(); 2530 } 2531 } 2532 #pragma omp parallel for 2533 for (int i = 0; i < 10; ++i) { 2534 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2535 { 2536 bar(); 2537 } 2538 } 2539 #pragma omp parallel for 2540 for (int i = 0; i < 10; ++i) { 2541 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 2542 { 2543 bar(); 2544 } 2545 } 2546 2547 #pragma omp parallel for 2548 for (int i = 0; i < 10; ++i) { 2549 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2550 { 2551 bar(); 2552 } 2553 } 2554 2555 #pragma omp parallel for 2556 for (int i = 0; i < 10; ++i) { 2557 #pragma omp critical 2558 { 2559 bar(); 2560 } 2561 } 2562 2563 #pragma omp parallel for 2564 for (int i = 0; i < 10; ++i) { 2565 #pragma omp parallel 2566 { 2567 #pragma omp single // OK 2568 { 2569 bar(); 2570 } 2571 #pragma omp for // OK 2572 for (int i = 0; i < 10; ++i) 2573 ; 2574 #pragma omp for simd // OK 2575 for (int i = 0; i < 10; ++i) 2576 ; 2577 #pragma omp sections // OK 2578 { 2579 bar(); 2580 } 2581 } 2582 } 2583 #pragma omp parallel for 2584 for (int i = 0; i < 10; ++i) { 2585 #pragma omp parallel for 2586 for (int i = 0; i < 10; ++i) 2587 ; 2588 } 2589 #pragma omp parallel for 2590 for (int i = 0; i < 10; ++i) { 2591 #pragma omp parallel for simd 2592 for (int i = 0; i < 10; ++i) 2593 ; 2594 } 2595 #pragma omp parallel for 2596 for (int i = 0; i < 10; ++i) { 2597 #pragma omp parallel sections 2598 { 2599 bar(); 2600 } 2601 } 2602 #pragma omp parallel for 2603 for (int i = 0; i < 10; ++i) { 2604 #pragma omp task 2605 { 2606 bar(); 2607 } 2608 } 2609 #pragma omp parallel for 2610 for (int i = 0; i < 10; ++i) { 2611 #pragma omp taskyield 2612 bar(); 2613 } 2614 #pragma omp parallel for 2615 for (int i = 0; i < 10; ++i) { 2616 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2617 bar(); 2618 } 2619 #pragma omp parallel for 2620 for (int i = 0; i < 10; ++i) { 2621 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 2622 bar(); 2623 } 2624 #pragma omp parallel for 2625 for (int i = 0; i < 10; ++i) { 2626 #pragma omp taskwait 2627 bar(); 2628 } 2629 #pragma omp parallel for 2630 for (int i = 0; i < 10; ++i) { 2631 #pragma omp flush 2632 bar(); 2633 } 2634 #pragma omp parallel for 2635 for (int i = 0; i < 10; ++i) { 2636 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 2637 bar(); 2638 } 2639 #pragma omp parallel for ordered 2640 for (int i = 0; i < 10; ++i) { 2641 #pragma omp ordered // OK 2642 bar(); 2643 } 2644 #pragma omp parallel for 2645 for (int i = 0; i < 10; ++i) { 2646 #pragma omp atomic 2647 ++a; 2648 } 2649 #pragma omp parallel for 2650 for (int i = 0; i < 10; ++i) { 2651 #pragma omp target 2652 ++a; 2653 } 2654 #pragma omp parallel for 2655 for (int i = 0; i < 10; ++i) { 2656 #pragma omp target parallel 2657 ++a; 2658 } 2659 #pragma omp parallel for 2660 for (int i = 0; i < 10; ++i) { 2661 #pragma omp target parallel for 2662 for (int i = 0; i < 10; ++i) 2663 ; 2664 } 2665 #pragma omp parallel for 2666 for (int i = 0; i < 10; ++i) { 2667 #pragma omp target enter data map(to: a) 2668 ++a; 2669 } 2670 #pragma omp parallel for 2671 for (int i = 0; i < 10; ++i) { 2672 #pragma omp target exit data map(from: a) 2673 ++a; 2674 } 2675 #pragma omp parallel for 2676 for (int i = 0; i < 10; ++i) { 2677 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 2678 ++a; 2679 } 2680 #pragma omp parallel for 2681 for (int i = 0; i < 10; ++i) { 2682 #pragma omp taskloop 2683 for (int i = 0; i < 10; ++i) 2684 ++a; 2685 } 2686 #pragma omp parallel for 2687 for (int i = 0; i < 10; ++i) { 2688 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 2689 for (int j = 0; j < 10; ++j) 2690 ; 2691 } 2692 #pragma omp parallel for 2693 for (int i = 0; i < 10; ++i) { 2694 #pragma omp target update to(a) 2695 } 2696 #pragma omp parallel for 2697 for (int i = 0; i < 10; ++i) { 2698 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 2699 for (int j = 0; j < 10; ++j) 2700 ; 2701 } 2702 #pragma omp parallel for 2703 for (int i = 0; i < 10; ++i) { 2704 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 2705 for (int j = 0; j < 10; ++j) 2706 ; 2707 } 2708 #pragma omp parallel for 2709 for (int i = 0; i < 10; ++i) { 2710 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 2711 for (int j = 0; j < 10; ++j) 2712 ; 2713 } 2714 #pragma omp parallel for 2715 for (int i = 0; i < 10; ++i) { 2716 #pragma omp target simd // OK 2717 for (int j = 0; j < 10; ++j) 2718 ; 2719 } 2720 #pragma omp parallel for 2721 for (int i = 0; i < 10; ++i) { 2722 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 2723 for (int j = 0; j < 10; ++j) 2724 ; 2725 } 2726 #pragma omp parallel for 2727 for (int i = 0; i < 10; ++i) { 2728 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 2729 for (int j = 0; j < 10; ++j) 2730 ; 2731 } 2732 #pragma omp parallel for 2733 for (int i = 0; i < 10; ++i) { 2734 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2735 for (int j = 0; j < 10; ++j) 2736 ; 2737 } 2738 #pragma omp parallel for 2739 for (int i = 0; i < 10; ++i) { 2740 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2741 for (int j = 0; j < 10; ++j) 2742 ; 2743 } 2744 #pragma omp parallel for 2745 for (int i = 0; i < 10; ++i) { 2746 #pragma omp target teams // OK 2747 a++; 2748 } 2749 #pragma omp parallel for 2750 for (int i = 0; i < 10; ++i) { 2751 #pragma omp target teams distribute // OK 2752 for (int j = 0; j < 10; ++j) 2753 ; 2754 } 2755 #pragma omp parallel for 2756 for (int i = 0; i < 10; ++i) { 2757 #pragma omp target teams distribute parallel for // OK 2758 for (int j = 0; j < 10; ++j) 2759 ; 2760 } 2761 #pragma omp parallel for 2762 for (int i = 0; i < 10; ++i) { 2763 #pragma omp target teams distribute parallel for simd // OK 2764 for (int j = 0; j < 10; ++j) 2765 ; 2766 } 2767 #pragma omp parallel for 2768 for (int i = 0; i < 10; ++i) { 2769 #pragma omp target teams distribute simd // OK 2770 for (int j = 0; j < 10; ++j) 2771 ; 2772 } 2773 2774 // PARALLEL FOR SIMD DIRECTIVE 2775 #pragma omp parallel for simd 2776 for (int i = 0; i < 10; ++i) { 2777 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2778 for (int i = 0; i < 10; ++i) 2779 ; 2780 } 2781 #pragma omp parallel for simd 2782 for (int i = 0; i < 10; ++i) { 2783 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2784 for (int i = 0; i < 10; ++i) 2785 ; 2786 } 2787 #pragma omp parallel for simd 2788 for (int i = 0; i < 10; ++i) { 2789 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2790 for (int i = 0; i < 10; ++i) 2791 ; 2792 } 2793 #pragma omp parallel for simd 2794 for (int i = 0; i < 10; ++i) { 2795 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2796 for (int i = 0; i < 10; ++i) 2797 ; 2798 } 2799 #pragma omp parallel for simd 2800 for (int i = 0; i < 10; ++i) { 2801 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2802 { 2803 bar(); 2804 } 2805 } 2806 #pragma omp parallel for simd 2807 for (int i = 0; i < 10; ++i) { 2808 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2809 { 2810 bar(); 2811 } 2812 } 2813 #pragma omp parallel for simd 2814 for (int i = 0; i < 10; ++i) { 2815 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2816 { 2817 bar(); 2818 } 2819 } 2820 2821 #pragma omp parallel for simd 2822 for (int i = 0; i < 10; ++i) { 2823 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2824 { 2825 bar(); 2826 } 2827 } 2828 2829 #pragma omp parallel for simd 2830 for (int i = 0; i < 10; ++i) { 2831 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2832 { 2833 bar(); 2834 } 2835 } 2836 2837 #pragma omp parallel for simd 2838 for (int i = 0; i < 10; ++i) { 2839 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2840 { 2841 #pragma omp single 2842 { 2843 bar(); 2844 } 2845 #pragma omp for 2846 for (int i = 0; i < 10; ++i) 2847 ; 2848 #pragma omp for simd 2849 for (int i = 0; i < 10; ++i) 2850 ; 2851 #pragma omp sections 2852 { 2853 bar(); 2854 } 2855 } 2856 } 2857 #pragma omp parallel for simd 2858 for (int i = 0; i < 10; ++i) { 2859 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2860 for (int i = 0; i < 10; ++i) 2861 ; 2862 } 2863 #pragma omp parallel for simd 2864 for (int i = 0; i < 10; ++i) { 2865 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2866 for (int i = 0; i < 10; ++i) 2867 ; 2868 } 2869 #pragma omp parallel for simd 2870 for (int i = 0; i < 10; ++i) { 2871 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2872 { 2873 bar(); 2874 } 2875 } 2876 #pragma omp parallel for simd 2877 for (int i = 0; i < 10; ++i) { 2878 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2879 { 2880 bar(); 2881 } 2882 } 2883 #pragma omp parallel for simd 2884 for (int i = 0; i < 10; ++i) { 2885 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2886 bar(); 2887 } 2888 #pragma omp parallel for simd 2889 for (int i = 0; i < 10; ++i) { 2890 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2891 bar(); 2892 } 2893 #pragma omp parallel for simd 2894 for (int i = 0; i < 10; ++i) { 2895 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 2896 bar(); 2897 } 2898 #pragma omp parallel for simd 2899 for (int i = 0; i < 10; ++i) { 2900 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2901 bar(); 2902 } 2903 #pragma omp parallel for simd 2904 for (int i = 0; i < 10; ++i) { 2905 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2906 bar(); 2907 } 2908 #pragma omp parallel for simd 2909 for (int i = 0; i < 10; ++i) { 2910 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2911 bar(); 2912 } 2913 #pragma omp parallel for simd 2914 for (int i = 0; i < 10; ++i) { 2915 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2916 bar(); 2917 } 2918 #pragma omp parallel for simd 2919 for (int i = 0; i < 10; ++i) { 2920 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 2921 ++a; 2922 } 2923 #pragma omp parallel for simd 2924 for (int i = 0; i < 10; ++i) { 2925 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2926 ++a; 2927 } 2928 #pragma omp parallel for simd 2929 for (int i = 0; i < 10; ++i) { 2930 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2931 ++a; 2932 } 2933 #pragma omp parallel for simd 2934 for (int i = 0; i < 10; ++i) { 2935 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2936 for (int i = 0; i < 10; ++i) 2937 ; 2938 } 2939 #pragma omp parallel for simd 2940 for (int i = 0; i < 10; ++i) { 2941 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2942 ++a; 2943 } 2944 #pragma omp parallel for simd 2945 for (int i = 0; i < 10; ++i) { 2946 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2947 ++a; 2948 } 2949 #pragma omp parallel for simd 2950 for (int i = 0; i < 10; ++i) { 2951 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2952 ++a; 2953 } 2954 #pragma omp parallel for simd 2955 for (int i = 0; i < 10; ++i) { 2956 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2957 for (int i = 0; i < 10; ++i) 2958 ++a; 2959 } 2960 #pragma omp parallel for simd 2961 for (int i = 0; i < 10; ++i) { 2962 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2963 for (int j = 0; j < 10; ++j) 2964 ; 2965 } 2966 #pragma omp parallel for simd 2967 for (int i = 0; i < 10; ++i) { 2968 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2969 bar(); 2970 } 2971 #pragma omp parallel for simd 2972 for (int i = 0; i < 10; ++i) { 2973 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2974 for (int j = 0; j < 10; ++j) 2975 ; 2976 } 2977 #pragma omp parallel for simd 2978 for (int i = 0; i < 10; ++i) { 2979 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2980 for (int j = 0; j < 10; ++j) 2981 ; 2982 } 2983 #pragma omp parallel for simd 2984 for (int i = 0; i < 10; ++i) { 2985 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2986 for (int j = 0; j < 10; ++j) 2987 ; 2988 } 2989 #pragma omp parallel for simd 2990 for (int i = 0; i < 10; ++i) { 2991 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2992 for (int j = 0; j < 10; ++j) 2993 ; 2994 } 2995 #pragma omp parallel for simd 2996 for (int i = 0; i < 10; ++i) { 2997 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2998 for (int j = 0; j < 10; ++j) 2999 ; 3000 } 3001 #pragma omp parallel for simd 3002 for (int i = 0; i < 10; ++i) { 3003 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3004 for (int j = 0; j < 10; ++j) 3005 ; 3006 } 3007 #pragma omp parallel for simd 3008 for (int i = 0; i < 10; ++i) { 3009 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3010 for (int j = 0; j < 10; ++j) 3011 ; 3012 } 3013 #pragma omp parallel for simd 3014 for (int i = 0; i < 10; ++i) { 3015 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3016 for (int j = 0; j < 10; ++j) 3017 ; 3018 } 3019 #pragma omp parallel for simd 3020 for (int i = 0; i < 10; ++i) { 3021 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3022 a++; 3023 } 3024 #pragma omp parallel for simd 3025 for (int i = 0; i < 10; ++i) { 3026 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3027 for (int j = 0; j < 10; ++j) 3028 ; 3029 } 3030 #pragma omp parallel for simd 3031 for (int i = 0; i < 10; ++i) { 3032 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3033 for (int j = 0; j < 10; ++j) 3034 ; 3035 } 3036 #pragma omp parallel for simd 3037 for (int i = 0; i < 10; ++i) { 3038 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3039 for (int j = 0; j < 10; ++j) 3040 ; 3041 } 3042 #pragma omp parallel for simd 3043 for (int i = 0; i < 10; ++i) { 3044 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3045 for (int j = 0; j < 10; ++j) 3046 ; 3047 } 3048 3049 // PARALLEL MASTER DIRECTIVE 3050 #pragma omp parallel master 3051 { 3052 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3053 for (int i = 0; i < 10; ++i) 3054 ; 3055 } 3056 #pragma omp parallel master 3057 { 3058 #pragma omp simd 3059 for (int i = 0; i < 10; ++i) 3060 ; 3061 } 3062 #pragma omp parallel master 3063 { 3064 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3065 for (int i = 0; i < 10; ++i) 3066 ; 3067 } 3068 #pragma omp parallel master 3069 { 3070 #pragma omp parallel 3071 for (int i = 0; i < 10; ++i) 3072 ; 3073 } 3074 #pragma omp parallel master 3075 { 3076 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3077 { 3078 bar(); 3079 } 3080 } 3081 #pragma omp parallel master 3082 { 3083 #pragma omp master // OK, though second 'master' is redundant 3084 { 3085 bar(); 3086 } 3087 } 3088 #pragma omp parallel master 3089 { 3090 #pragma omp critical 3091 { 3092 bar(); 3093 } 3094 } 3095 #pragma omp parallel master 3096 { 3097 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3098 { 3099 bar(); 3100 } 3101 } 3102 #pragma omp parallel master 3103 { 3104 #pragma omp parallel 3105 { 3106 #pragma omp parallel master // OK 3107 { 3108 bar(); 3109 } 3110 #pragma omp for // OK 3111 for (int i = 0; i < 10; ++i) 3112 ; 3113 #pragma omp for simd // OK 3114 for (int i = 0; i < 10; ++i) 3115 ; 3116 #pragma omp sections // OK 3117 { 3118 bar(); 3119 } 3120 } 3121 } 3122 #pragma omp parallel master 3123 { 3124 #pragma omp parallel master // OK 3125 { 3126 bar(); 3127 } 3128 #pragma omp parallel 3129 { 3130 #pragma omp for // OK 3131 for (int i = 0; i < 10; ++i) 3132 ; 3133 #pragma omp for simd // OK 3134 for (int i = 0; i < 10; ++i) 3135 ; 3136 #pragma omp sections // OK 3137 { 3138 bar(); 3139 } 3140 } 3141 } 3142 #pragma omp parallel master 3143 { 3144 #pragma omp parallel for 3145 for (int i = 0; i < 10; ++i) 3146 ; 3147 } 3148 #pragma omp parallel master 3149 { 3150 #pragma omp parallel for simd 3151 for (int i = 0; i < 10; ++i) 3152 ; 3153 } 3154 #pragma omp parallel master 3155 { 3156 #pragma omp parallel sections 3157 { 3158 bar(); 3159 } 3160 } 3161 #pragma omp parallel master 3162 { 3163 #pragma omp task 3164 { 3165 bar(); 3166 } 3167 } 3168 #pragma omp parallel master 3169 { 3170 #pragma omp taskyield 3171 bar(); 3172 } 3173 #pragma omp parallel master 3174 { 3175 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3176 bar(); 3177 } 3178 #pragma omp parallel master 3179 { 3180 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3181 bar(); 3182 } 3183 #pragma omp parallel master 3184 { 3185 #pragma omp taskwait 3186 bar(); 3187 } 3188 #pragma omp parallel master 3189 { 3190 #pragma omp flush 3191 bar(); 3192 } 3193 #pragma omp parallel master 3194 { 3195 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3196 bar(); 3197 } 3198 #pragma omp parallel master 3199 { 3200 #pragma omp atomic 3201 ++a; 3202 } 3203 #pragma omp parallel master 3204 { 3205 #pragma omp target 3206 ++a; 3207 } 3208 #pragma omp parallel master 3209 { 3210 #pragma omp target parallel 3211 ++a; 3212 } 3213 #pragma omp parallel master 3214 { 3215 #pragma omp target parallel for 3216 for (int i = 0; i < 10; ++i) 3217 ; 3218 } 3219 #pragma omp parallel master 3220 { 3221 #pragma omp target enter data map(to: a) 3222 ++a; 3223 } 3224 #pragma omp parallel master 3225 { 3226 #pragma omp target exit data map(from: a) 3227 ++a; 3228 } 3229 #pragma omp parallel master 3230 { 3231 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3232 ++a; 3233 } 3234 #pragma omp parallel master 3235 { 3236 #pragma omp taskloop 3237 for (int i = 0; i < 10; ++i) 3238 ++a; 3239 } 3240 #pragma omp parallel master 3241 { 3242 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3243 for (int i = 0; i < 10; ++i) 3244 ; 3245 } 3246 #pragma omp parallel master 3247 { 3248 #pragma omp target update to(a) 3249 bar(); 3250 } 3251 #pragma omp parallel master 3252 { 3253 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3254 for (int i = 0; i < 10; ++i) 3255 ; 3256 } 3257 #pragma omp parallel master 3258 { 3259 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3260 for (int i = 0; i < 10; ++i) 3261 ; 3262 } 3263 #pragma omp parallel master 3264 { 3265 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3266 for (int i = 0; i < 10; ++i) 3267 ; 3268 } 3269 #pragma omp parallel master 3270 { 3271 #pragma omp target simd // OK 3272 for (int i = 0; i < 10; ++i) 3273 ; 3274 } 3275 #pragma omp parallel master 3276 { 3277 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3278 for (int i = 0; i < 10; ++i) 3279 ; 3280 } 3281 #pragma omp parallel master 3282 { 3283 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3284 for (int i = 0; i < 10; ++i) 3285 ; 3286 } 3287 #pragma omp parallel master 3288 { 3289 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3290 for (int i = 0; i < 10; ++i) 3291 ; 3292 } 3293 #pragma omp parallel master 3294 { 3295 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3296 for (int i = 0; i < 10; ++i) 3297 ; 3298 } 3299 #pragma omp parallel master 3300 { 3301 #pragma omp target teams // OK 3302 a++; 3303 } 3304 #pragma omp parallel master 3305 { 3306 #pragma omp target teams distribute // OK 3307 for (int i = 0; i < 10; ++i) 3308 ; 3309 } 3310 #pragma omp parallel master 3311 { 3312 #pragma omp target teams distribute parallel for // OK 3313 for (int i = 0; i < 10; ++i) 3314 ; 3315 } 3316 #pragma omp parallel master 3317 { 3318 #pragma omp target teams distribute parallel for simd // OK 3319 for (int i = 0; i < 10; ++i) 3320 ; 3321 } 3322 #pragma omp parallel master 3323 { 3324 #pragma omp target teams distribute simd // OK 3325 for (int i = 0; i < 10; ++i) 3326 ; 3327 } 3328 3329 // PARALLEL SECTIONS DIRECTIVE 3330 #pragma omp parallel sections 3331 { 3332 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3333 for (int i = 0; i < 10; ++i) 3334 ; 3335 } 3336 #pragma omp parallel sections 3337 { 3338 #pragma omp simd 3339 for (int i = 0; i < 10; ++i) 3340 ; 3341 } 3342 #pragma omp parallel sections 3343 { 3344 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3345 for (int i = 0; i < 10; ++i) 3346 ; 3347 } 3348 #pragma omp parallel sections 3349 { 3350 #pragma omp parallel 3351 for (int i = 0; i < 10; ++i) 3352 ; 3353 } 3354 #pragma omp parallel sections 3355 { 3356 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3357 { 3358 bar(); 3359 } 3360 } 3361 #pragma omp parallel sections 3362 { 3363 #pragma omp section 3364 { 3365 bar(); 3366 } 3367 } 3368 #pragma omp parallel sections 3369 { 3370 #pragma omp section 3371 { 3372 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3373 bar(); 3374 } 3375 } 3376 #pragma omp parallel sections 3377 { 3378 #pragma omp section 3379 { 3380 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 3381 bar(); 3382 } 3383 } 3384 #pragma omp parallel sections 3385 { 3386 #pragma omp section 3387 { 3388 #pragma omp critical 3389 bar(); 3390 } 3391 } 3392 #pragma omp parallel sections 3393 { 3394 #pragma omp parallel 3395 { 3396 #pragma omp single // OK 3397 { 3398 bar(); 3399 } 3400 #pragma omp for // OK 3401 for (int i = 0; i < 10; ++i) 3402 ; 3403 #pragma omp for simd // OK 3404 for (int i = 0; i < 10; ++i) 3405 ; 3406 #pragma omp sections // OK 3407 { 3408 bar(); 3409 } 3410 } 3411 } 3412 #pragma omp parallel sections 3413 { 3414 #pragma omp parallel for 3415 for (int i = 0; i < 10; ++i) 3416 ; 3417 } 3418 #pragma omp parallel sections 3419 { 3420 #pragma omp parallel for simd 3421 for (int i = 0; i < 10; ++i) 3422 ; 3423 } 3424 #pragma omp parallel sections 3425 { 3426 #pragma omp parallel sections 3427 { 3428 bar(); 3429 } 3430 } 3431 #pragma omp parallel sections 3432 { 3433 #pragma omp task 3434 { 3435 bar(); 3436 } 3437 } 3438 #pragma omp parallel sections 3439 { 3440 #pragma omp taskyield 3441 } 3442 #pragma omp parallel sections 3443 { 3444 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3445 } 3446 #pragma omp parallel sections 3447 { 3448 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3449 } 3450 #pragma omp parallel sections 3451 { 3452 #pragma omp taskwait 3453 } 3454 #pragma omp parallel sections 3455 { 3456 #pragma omp flush 3457 } 3458 #pragma omp parallel sections 3459 { 3460 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3461 bar(); 3462 } 3463 #pragma omp parallel sections 3464 { 3465 #pragma omp atomic 3466 ++a; 3467 } 3468 #pragma omp parallel sections 3469 { 3470 #pragma omp target 3471 ++a; 3472 } 3473 #pragma omp parallel sections 3474 { 3475 #pragma omp target parallel 3476 ++a; 3477 } 3478 #pragma omp parallel sections 3479 { 3480 #pragma omp target parallel for 3481 for (int i = 0; i < 10; ++i) 3482 ; 3483 } 3484 #pragma omp parallel sections 3485 { 3486 #pragma omp target enter data map(to: a) 3487 } 3488 #pragma omp parallel sections 3489 { 3490 #pragma omp target exit data map(from: a) 3491 } 3492 #pragma omp parallel sections 3493 { 3494 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3495 ++a; 3496 } 3497 #pragma omp parallel sections 3498 { 3499 #pragma omp taskloop 3500 for (int i = 0; i < 10; ++i) 3501 ++a; 3502 } 3503 #pragma omp parallel sections 3504 { 3505 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3506 for (int i = 0; i < 10; ++i) 3507 ; 3508 } 3509 #pragma omp parallel sections 3510 { 3511 #pragma omp target update to(a) 3512 } 3513 #pragma omp parallel sections 3514 { 3515 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3516 for (int i = 0; i < 10; ++i) 3517 ; 3518 } 3519 #pragma omp parallel sections 3520 { 3521 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3522 for (int i = 0; i < 10; ++i) 3523 ; 3524 } 3525 #pragma omp parallel sections 3526 { 3527 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3528 for (int i = 0; i < 10; ++i) 3529 ; 3530 } 3531 #pragma omp parallel sections 3532 { 3533 #pragma omp target simd // OK 3534 for (int i = 0; i < 10; ++i) 3535 ; 3536 } 3537 #pragma omp parallel sections 3538 { 3539 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3540 for (int i = 0; i < 10; ++i) 3541 ; 3542 } 3543 #pragma omp parallel sections 3544 { 3545 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3546 for (int i = 0; i < 10; ++i) 3547 ; 3548 } 3549 #pragma omp parallel sections 3550 { 3551 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3552 for (int i = 0; i < 10; ++i) 3553 ; 3554 } 3555 #pragma omp parallel sections 3556 { 3557 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3558 for (int i = 0; i < 10; ++i) 3559 ; 3560 } 3561 #pragma omp parallel sections 3562 { 3563 #pragma omp target teams // OK 3564 a++; 3565 } 3566 #pragma omp parallel sections 3567 { 3568 #pragma omp target teams distribute // OK 3569 for (int i = 0; i < 10; ++i) 3570 ; 3571 } 3572 #pragma omp parallel sections 3573 { 3574 #pragma omp target teams distribute parallel for // OK 3575 for (int i = 0; i < 10; ++i) 3576 ; 3577 } 3578 #pragma omp parallel sections 3579 { 3580 #pragma omp target teams distribute parallel for simd // OK 3581 for (int i = 0; i < 10; ++i) 3582 ; 3583 } 3584 #pragma omp parallel sections 3585 { 3586 #pragma omp target teams distribute simd // OK 3587 for (int i = 0; i < 10; ++i) 3588 ; 3589 } 3590 3591 // TASK DIRECTIVE 3592 #pragma omp task 3593 #pragma omp for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3594 for (int i = 0; i < 10; ++i) 3595 ; 3596 #pragma omp task 3597 #pragma omp simd 3598 for (int i = 0; i < 10; ++i) 3599 ; 3600 #pragma omp task 3601 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3602 for (int i = 0; i < 10; ++i) 3603 ; 3604 #pragma omp task 3605 #pragma omp sections // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3606 { 3607 bar(); 3608 } 3609 #pragma omp task 3610 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3611 { 3612 bar(); 3613 } 3614 #pragma omp task 3615 #pragma omp single // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3616 bar(); 3617 #pragma omp task 3618 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3619 bar(); 3620 #pragma omp task 3621 #pragma omp critical 3622 bar(); 3623 3624 #pragma omp task 3625 #pragma omp parallel for 3626 for (int i = 0; i < 10; ++i) 3627 ; 3628 #pragma omp task 3629 #pragma omp parallel for simd 3630 for (int i = 0; i < 10; ++i) 3631 ; 3632 #pragma omp task 3633 #pragma omp parallel sections 3634 { 3635 bar(); 3636 } 3637 #pragma omp task 3638 #pragma omp task 3639 { 3640 bar(); 3641 } 3642 #pragma omp task 3643 { 3644 #pragma omp taskyield 3645 bar(); 3646 } 3647 #pragma omp task 3648 { 3649 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3650 bar(); 3651 } 3652 #pragma omp task 3653 { 3654 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}} 3655 bar(); 3656 } 3657 #pragma omp task 3658 { 3659 #pragma omp taskwait 3660 bar(); 3661 } 3662 #pragma omp task 3663 { 3664 #pragma omp flush 3665 bar(); 3666 } 3667 #pragma omp task 3668 { 3669 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3670 bar(); 3671 } 3672 #pragma omp task 3673 { 3674 #pragma omp atomic 3675 ++a; 3676 } 3677 #pragma omp task 3678 { 3679 #pragma omp target 3680 ++a; 3681 } 3682 #pragma omp task 3683 { 3684 #pragma omp target parallel 3685 ++a; 3686 } 3687 #pragma omp task 3688 #pragma omp target parallel for 3689 for (int i = 0; i < 10; ++i) 3690 ; 3691 #pragma omp task 3692 { 3693 #pragma omp target enter data map(to: a) 3694 ++a; 3695 } 3696 #pragma omp task 3697 { 3698 #pragma omp target exit data map(from: a) 3699 ++a; 3700 } 3701 #pragma omp task 3702 { 3703 #pragma omp teams // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3704 ++a; 3705 } 3706 #pragma omp task 3707 { 3708 #pragma omp taskloop 3709 for (int i = 0; i < 10; ++i) 3710 ++a; 3711 } 3712 #pragma omp task 3713 { 3714 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3715 for (int i = 0; i < 10; ++i) 3716 ; 3717 } 3718 #pragma omp task 3719 { 3720 #pragma omp target update to(a) 3721 bar(); 3722 } 3723 #pragma omp task 3724 { 3725 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3726 for (int i = 0; i < 10; ++i) 3727 ; 3728 } 3729 #pragma omp task 3730 { 3731 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3732 for (int i = 0; i < 10; ++i) 3733 ; 3734 } 3735 #pragma omp task 3736 { 3737 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3738 for (int i = 0; i < 10; ++i) 3739 ; 3740 } 3741 #pragma omp task 3742 { 3743 #pragma omp target simd // OK 3744 for (int i = 0; i < 10; ++i) 3745 ; 3746 } 3747 #pragma omp task 3748 { 3749 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3750 for (int i = 0; i < 10; ++i) 3751 ; 3752 } 3753 #pragma omp task 3754 { 3755 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3756 for (int i = 0; i < 10; ++i) 3757 ; 3758 } 3759 #pragma omp task 3760 { 3761 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3762 for (int i = 0; i < 10; ++i) 3763 ; 3764 } 3765 #pragma omp task 3766 { 3767 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3768 for (int i = 0; i < 10; ++i) 3769 ; 3770 } 3771 #pragma omp task 3772 { 3773 #pragma omp target teams // OK 3774 a++; 3775 } 3776 #pragma omp task 3777 { 3778 #pragma omp target teams distribute // OK 3779 for (int i = 0; i < 10; ++i) 3780 ; 3781 } 3782 #pragma omp task 3783 { 3784 #pragma omp target teams distribute parallel for // OK 3785 for (int i = 0; i < 10; ++i) 3786 ; 3787 } 3788 #pragma omp task 3789 { 3790 #pragma omp target teams distribute parallel for simd // OK 3791 for (int i = 0; i < 10; ++i) 3792 ; 3793 } 3794 #pragma omp task 3795 { 3796 #pragma omp target teams distribute simd // OK 3797 for (int i = 0; i < 10; ++i) 3798 ; 3799 } 3800 3801 // ORDERED DIRECTIVE 3802 #pragma omp ordered 3803 { 3804 #pragma omp for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3805 for (int i = 0; i < 10; ++i) 3806 ; 3807 } 3808 #pragma omp ordered 3809 { 3810 #pragma omp simd 3811 for (int i = 0; i < 10; ++i) 3812 ; 3813 } 3814 #pragma omp ordered 3815 { 3816 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3817 for (int i = 0; i < 10; ++i) 3818 ; 3819 } 3820 #pragma omp ordered 3821 { 3822 #pragma omp parallel 3823 for (int i = 0; i < 10; ++i) 3824 ; 3825 } 3826 #pragma omp ordered 3827 { 3828 #pragma omp single // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3829 { 3830 bar(); 3831 } 3832 } 3833 #pragma omp ordered 3834 { 3835 #pragma omp master // OK, though second 'ordered' is redundant 3836 { 3837 bar(); 3838 } 3839 } 3840 #pragma omp ordered 3841 { 3842 #pragma omp critical 3843 { 3844 bar(); 3845 } 3846 } 3847 #pragma omp ordered 3848 { 3849 #pragma omp sections // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3850 { 3851 bar(); 3852 } 3853 } 3854 #pragma omp ordered 3855 { 3856 #pragma omp parallel for ordered 3857 for (int j = 0; j < 10; ++j) { 3858 #pragma omp ordered // OK 3859 { 3860 bar(); 3861 } 3862 } 3863 } 3864 #pragma omp ordered 3865 { 3866 #pragma omp parallel for simd ordered 3867 for (int j = 0; j < 10; ++j) { 3868 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3869 { 3870 bar(); 3871 } 3872 } 3873 } 3874 #pragma omp ordered 3875 { 3876 #pragma omp parallel for simd ordered 3877 for (int j = 0; j < 10; ++j) { 3878 #pragma omp ordered simd 3879 { 3880 bar(); 3881 } 3882 } 3883 } 3884 #pragma omp ordered 3885 { 3886 #pragma omp parallel for 3887 for (int i = 0; i < 10; ++i) 3888 ; 3889 } 3890 #pragma omp ordered 3891 { 3892 #pragma omp parallel for simd 3893 for (int i = 0; i < 10; ++i) 3894 ; 3895 } 3896 #pragma omp ordered 3897 { 3898 #pragma omp parallel sections 3899 { 3900 bar(); 3901 } 3902 } 3903 #pragma omp ordered 3904 { 3905 #pragma omp task 3906 { 3907 bar(); 3908 } 3909 } 3910 #pragma omp ordered 3911 { 3912 #pragma omp taskyield 3913 bar(); 3914 } 3915 #pragma omp ordered 3916 { 3917 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3918 bar(); 3919 } 3920 #pragma omp ordered 3921 { 3922 #pragma omp scan // expected-error {{region cannot be closely nested inside 'ordered' region}} 3923 bar(); 3924 } 3925 #pragma omp ordered 3926 { 3927 #pragma omp taskwait 3928 bar(); 3929 } 3930 #pragma omp ordered 3931 { 3932 #pragma omp flush 3933 bar(); 3934 } 3935 #pragma omp ordered 3936 { 3937 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3938 bar(); 3939 } 3940 #pragma omp ordered 3941 { 3942 #pragma omp atomic 3943 ++a; 3944 } 3945 #pragma omp ordered 3946 { 3947 #pragma omp target 3948 ++a; 3949 } 3950 #pragma omp ordered 3951 { 3952 #pragma omp target parallel 3953 ++a; 3954 } 3955 #pragma omp ordered 3956 { 3957 #pragma omp target parallel for ordered 3958 for (int j = 0; j < 10; ++j) { 3959 #pragma omp ordered // OK 3960 { 3961 bar(); 3962 } 3963 } 3964 } 3965 #pragma omp ordered 3966 { 3967 #pragma omp target parallel for 3968 for (int i = 0; i < 10; ++i) 3969 ; 3970 } 3971 #pragma omp ordered 3972 { 3973 #pragma omp target enter data map(to: a) 3974 ++a; 3975 } 3976 #pragma omp ordered 3977 { 3978 #pragma omp target exit data map(from: a) 3979 ++a; 3980 } 3981 #pragma omp ordered 3982 { 3983 #pragma omp teams // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3984 ++a; 3985 } 3986 #pragma omp ordered 3987 { 3988 #pragma omp taskloop 3989 for (int i = 0; i < 10; ++i) 3990 ++a; 3991 } 3992 #pragma omp ordered 3993 { 3994 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3995 for (int i = 0; i < 10; ++i) 3996 ; 3997 } 3998 #pragma omp ordered 3999 { 4000 bar(); 4001 #pragma omp target update to(a) 4002 bar(); 4003 } 4004 #pragma omp ordered 4005 { 4006 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 4007 for (int i = 0; i < 10; ++i) 4008 ; 4009 } 4010 #pragma omp ordered 4011 { 4012 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 4013 for (int i = 0; i < 10; ++i) 4014 ; 4015 } 4016 #pragma omp ordered 4017 { 4018 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 4019 for (int i = 0; i < 10; ++i) 4020 ; 4021 } 4022 #pragma omp ordered 4023 { 4024 #pragma omp target simd // OK 4025 for (int i = 0; i < 10; ++i) 4026 ; 4027 } 4028 #pragma omp ordered 4029 { 4030 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 4031 for (int i = 0; i < 10; ++i) 4032 ; 4033 } 4034 #pragma omp ordered 4035 { 4036 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 4037 for (int i = 0; i < 10; ++i) 4038 ; 4039 } 4040 #pragma omp ordered 4041 { 4042 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4043 for (int i = 0; i < 10; ++i) 4044 ; 4045 } 4046 #pragma omp ordered 4047 { 4048 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4049 for (int i = 0; i < 10; ++i) 4050 ; 4051 } 4052 #pragma omp ordered 4053 { 4054 #pragma omp target teams // OK 4055 a++; 4056 } 4057 #pragma omp ordered 4058 { 4059 #pragma omp target teams distribute // OK 4060 for (int i = 0; i < 10; ++i) 4061 ; 4062 } 4063 #pragma omp ordered 4064 { 4065 #pragma omp target teams distribute parallel for // OK 4066 for (int i = 0; i < 10; ++i) 4067 ; 4068 } 4069 #pragma omp ordered 4070 { 4071 #pragma omp target teams distribute parallel for simd // OK 4072 for (int i = 0; i < 10; ++i) 4073 ; 4074 } 4075 #pragma omp ordered 4076 { 4077 #pragma omp target teams distribute simd // OK 4078 for (int i = 0; i < 10; ++i) 4079 ; 4080 } 4081 4082 // ATOMIC DIRECTIVE 4083 #pragma omp atomic 4084 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4085 // expected-note@+1 {{expected an expression statement}} 4086 { 4087 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4088 for (int i = 0; i < 10; ++i) 4089 ; 4090 } 4091 #pragma omp atomic 4092 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4093 // expected-note@+1 {{expected an expression statement}} 4094 { 4095 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4096 for (int i = 0; i < 10; ++i) 4097 ; 4098 } 4099 #pragma omp atomic 4100 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4101 // expected-note@+1 {{expected an expression statement}} 4102 { 4103 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4104 for (int i = 0; i < 10; ++i) 4105 ; 4106 } 4107 #pragma omp atomic 4108 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4109 // expected-note@+1 {{expected an expression statement}} 4110 { 4111 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4112 for (int i = 0; i < 10; ++i) 4113 ; 4114 } 4115 #pragma omp atomic 4116 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4117 // expected-note@+1 {{expected an expression statement}} 4118 { 4119 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4120 { 4121 bar(); 4122 } 4123 } 4124 #pragma omp atomic 4125 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4126 // expected-note@+1 {{expected an expression statement}} 4127 { 4128 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4129 { 4130 bar(); 4131 } 4132 } 4133 #pragma omp atomic 4134 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4135 // expected-note@+1 {{expected an expression statement}} 4136 { 4137 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4138 { 4139 bar(); 4140 } 4141 } 4142 #pragma omp atomic 4143 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4144 // expected-note@+1 {{expected an expression statement}} 4145 { 4146 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4147 { 4148 bar(); 4149 } 4150 } 4151 #pragma omp atomic 4152 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4153 // expected-note@+1 {{expected an expression statement}} 4154 { 4155 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4156 { 4157 bar(); 4158 } 4159 } 4160 #pragma omp atomic 4161 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4162 // expected-note@+1 {{expected an expression statement}} 4163 { 4164 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4165 { 4166 bar(); 4167 } 4168 } 4169 #pragma omp atomic 4170 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4171 // expected-note@+1 {{expected an expression statement}} 4172 { 4173 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4174 for (int i = 0; i < 10; ++i) 4175 ; 4176 } 4177 #pragma omp atomic 4178 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4179 // expected-note@+1 {{expected an expression statement}} 4180 { 4181 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4182 for (int i = 0; i < 10; ++i) 4183 ; 4184 } 4185 #pragma omp atomic 4186 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4187 // expected-note@+1 {{expected an expression statement}} 4188 { 4189 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4190 { 4191 bar(); 4192 } 4193 } 4194 #pragma omp atomic 4195 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4196 // expected-note@+1 {{expected an expression statement}} 4197 { 4198 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4199 { 4200 bar(); 4201 } 4202 } 4203 #pragma omp atomic 4204 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4205 // expected-note@+1 {{expected an expression statement}} 4206 { 4207 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4208 bar(); 4209 } 4210 #pragma omp atomic 4211 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4212 // expected-note@+1 {{expected an expression statement}} 4213 { 4214 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4215 bar(); 4216 } 4217 #pragma omp atomic 4218 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4219 // expected-note@+1 {{expected an expression statement}} 4220 { 4221 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4222 bar(); 4223 } 4224 #pragma omp atomic 4225 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4226 // expected-note@+1 {{expected an expression statement}} 4227 { 4228 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4229 bar(); 4230 } 4231 #pragma omp atomic 4232 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4233 // expected-note@+1 {{expected an expression statement}} 4234 { 4235 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4236 bar(); 4237 } 4238 #pragma omp atomic 4239 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4240 // expected-note@+1 {{expected an expression statement}} 4241 { 4242 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4243 bar(); 4244 } 4245 #pragma omp atomic 4246 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4247 // expected-note@+1 {{expected an expression statement}} 4248 { 4249 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4250 ++a; 4251 } 4252 #pragma omp atomic 4253 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4254 // expected-note@+1 {{expected an expression statement}} 4255 { 4256 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4257 ++a; 4258 } 4259 #pragma omp atomic 4260 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4261 // expected-note@+1 {{expected an expression statement}} 4262 { 4263 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4264 ++a; 4265 } 4266 #pragma omp atomic 4267 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4268 // expected-note@+1 {{expected an expression statement}} 4269 { 4270 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4271 for (int i = 0; i < 10; ++i) 4272 ; 4273 } 4274 #pragma omp atomic 4275 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4276 // expected-note@+1 {{expected an expression statement}} 4277 { 4278 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4279 ++a; 4280 } 4281 #pragma omp atomic 4282 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4283 // expected-note@+1 {{expected an expression statement}} 4284 { 4285 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4286 ++a; 4287 } 4288 #pragma omp atomic 4289 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4290 // expected-note@+1 {{expected an expression statement}} 4291 { 4292 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4293 ++a; 4294 } 4295 #pragma omp atomic 4296 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4297 // expected-note@+1 {{expected an expression statement}} 4298 { 4299 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4300 for (int i = 0; i < 10; ++i) 4301 ++a; 4302 } 4303 #pragma omp atomic 4304 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4305 // expected-note@+1 {{expected an expression statement}} 4306 { 4307 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4308 for (int i = 0; i < 10; ++i) 4309 ; 4310 } 4311 #pragma omp atomic 4312 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4313 // expected-note@+1 {{expected an expression statement}} 4314 { 4315 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4316 bar(); 4317 } 4318 #pragma omp atomic 4319 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4320 // expected-note@+1 {{expected an expression statement}} 4321 { 4322 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4323 for (int i = 0; i < 10; ++i) 4324 ; 4325 } 4326 #pragma omp atomic 4327 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4328 // expected-note@+1 {{expected an expression statement}} 4329 { 4330 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4331 for (int i = 0; i < 10; ++i) 4332 ; 4333 } 4334 #pragma omp atomic 4335 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4336 // expected-note@+1 {{expected an expression statement}} 4337 { 4338 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4339 for (int i = 0; i < 10; ++i) 4340 ; 4341 } 4342 #pragma omp atomic 4343 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4344 // expected-note@+1 {{expected an expression statement}} 4345 { 4346 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4347 for (int i = 0; i < 10; ++i) 4348 ; 4349 } 4350 #pragma omp atomic 4351 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4352 // expected-note@+1 {{expected an expression statement}} 4353 { 4354 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4355 for (int i = 0; i < 10; ++i) 4356 ; 4357 } 4358 #pragma omp atomic 4359 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4360 // expected-note@+1 {{expected an expression statement}} 4361 { 4362 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4363 for (int i = 0; i < 10; ++i) 4364 ; 4365 } 4366 #pragma omp atomic 4367 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4368 // expected-note@+1 {{expected an expression statement}} 4369 { 4370 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4371 for (int i = 0; i < 10; ++i) 4372 ; 4373 } 4374 #pragma omp atomic 4375 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4376 // expected-note@+1 {{expected an expression statement}} 4377 { 4378 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4379 for (int i = 0; i < 10; ++i) 4380 ; 4381 } 4382 #pragma omp atomic 4383 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4384 // expected-note@+1 {{expected an expression statement}} 4385 { 4386 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4387 a++; 4388 } 4389 #pragma omp atomic 4390 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4391 // expected-note@+1 {{expected an expression statement}} 4392 { 4393 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4394 for (int i = 0; i < 10; ++i) 4395 ; 4396 } 4397 #pragma omp atomic 4398 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4399 // expected-note@+1 {{expected an expression statement}} 4400 { 4401 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4402 for (int i = 0; i < 10; ++i) 4403 ; 4404 } 4405 #pragma omp atomic 4406 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4407 // expected-note@+1 {{expected an expression statement}} 4408 { 4409 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4410 for (int i = 0; i < 10; ++i) 4411 ; 4412 } 4413 #pragma omp atomic 4414 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4415 // expected-note@+1 {{expected an expression statement}} 4416 { 4417 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4418 for (int i = 0; i < 10; ++i) 4419 ; 4420 } 4421 4422 // TARGET DIRECTIVE 4423 #pragma omp target 4424 #pragma omp parallel 4425 bar(); 4426 #pragma omp target 4427 #pragma omp for 4428 for (int i = 0; i < 10; ++i) 4429 ; 4430 #pragma omp target 4431 #pragma omp simd 4432 for (int i = 0; i < 10; ++i) 4433 ; 4434 #pragma omp target 4435 #pragma omp for simd 4436 for (int i = 0; i < 10; ++i) 4437 ; 4438 #pragma omp target 4439 #pragma omp sections 4440 { 4441 bar(); 4442 } 4443 #pragma omp target 4444 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 4445 { 4446 bar(); 4447 } 4448 #pragma omp target 4449 #pragma omp single 4450 bar(); 4451 4452 #pragma omp target 4453 #pragma omp master 4454 { 4455 bar(); 4456 } 4457 #pragma omp target 4458 #pragma omp critical 4459 { 4460 bar(); 4461 } 4462 #pragma omp target 4463 #pragma omp parallel for 4464 for (int i = 0; i < 10; ++i) 4465 ; 4466 #pragma omp target 4467 #pragma omp parallel for simd 4468 for (int i = 0; i < 10; ++i) 4469 ; 4470 #pragma omp target 4471 #pragma omp parallel sections 4472 { 4473 bar(); 4474 } 4475 #pragma omp target 4476 #pragma omp task 4477 { 4478 bar(); 4479 } 4480 #pragma omp target 4481 { 4482 #pragma omp taskyield 4483 bar(); 4484 } 4485 #pragma omp target 4486 { 4487 #pragma omp barrier 4488 bar(); 4489 } 4490 #pragma omp target 4491 { 4492 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 4493 bar(); 4494 } 4495 #pragma omp target 4496 { 4497 #pragma omp taskwait 4498 bar(); 4499 } 4500 #pragma omp target 4501 { 4502 #pragma omp flush 4503 bar(); 4504 } 4505 #pragma omp target 4506 { 4507 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 4508 bar(); 4509 } 4510 #pragma omp target 4511 { 4512 #pragma omp atomic 4513 ++a; 4514 } 4515 #pragma omp target 4516 { 4517 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4518 ++a; 4519 } 4520 #pragma omp target 4521 { 4522 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4523 ++a; 4524 } 4525 #pragma omp target 4526 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4527 for (int i = 0; i < 10; ++i) 4528 ; 4529 #pragma omp target 4530 { 4531 #pragma omp teams 4532 ++a; 4533 } 4534 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4535 { 4536 #pragma omp teams // expected-note {{directive outside teams construct here}} 4537 ++a; 4538 #pragma omp teams // expected-note {{nested teams construct here}} 4539 ++a; 4540 } 4541 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4542 { 4543 ++a; // expected-note {{statement outside teams construct here}} 4544 #pragma omp teams // expected-note {{nested teams construct here}} 4545 ++a; 4546 } 4547 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4548 { 4549 while (0) // expected-note {{statement outside teams construct here}} 4550 #pragma omp teams // expected-note {{nested teams construct here}} 4551 ++a; 4552 } 4553 #pragma omp target 4554 { 4555 #pragma omp taskloop 4556 for (int i = 0; i < 10; ++i) 4557 ++a; 4558 } 4559 #pragma omp target 4560 { 4561 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 4562 for (int i = 0; i < 10; ++i) 4563 ; 4564 } 4565 #pragma omp target 4566 { 4567 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4568 } 4569 #pragma omp target 4570 { 4571 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4572 } 4573 #pragma omp target 4574 { 4575 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4576 } 4577 #pragma omp target 4578 { 4579 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 4580 for (int i = 0; i < 10; ++i) 4581 ; 4582 } 4583 #pragma omp target 4584 { 4585 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 4586 for (int i = 0; i < 10; ++i) 4587 ; 4588 } 4589 #pragma omp target 4590 { 4591 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 4592 for (int i = 0; i < 10; ++i) 4593 ; 4594 } 4595 #pragma omp target 4596 { 4597 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4598 for (int i = 0; i < 10; ++i) 4599 ; 4600 } 4601 #pragma omp target 4602 { 4603 #pragma omp teams distribute // OK 4604 for (int i = 0; i < 10; ++i) 4605 ; 4606 } 4607 #pragma omp target 4608 { 4609 #pragma omp teams distribute simd // OK 4610 for (int i = 0; i < 10; ++i) 4611 ; 4612 } 4613 #pragma omp target 4614 { 4615 #pragma omp teams distribute parallel for simd // OK 4616 for (int i = 0; i < 10; ++i) 4617 ; 4618 } 4619 #pragma omp target 4620 { 4621 #pragma omp teams distribute parallel for // OK 4622 for (int i = 0; i < 10; ++i) 4623 ; 4624 } 4625 #pragma omp target 4626 { 4627 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4628 for (int i = 0; i < 10; ++i) 4629 ; 4630 } 4631 #pragma omp target 4632 { 4633 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4634 for (int i = 0; i < 10; ++i) 4635 ; 4636 } 4637 #pragma omp target 4638 { 4639 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4640 for (int i = 0; i < 10; ++i) 4641 ; 4642 } 4643 #pragma omp target 4644 { 4645 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4646 for (int i = 0; i < 10; ++i) 4647 ; 4648 } 4649 #pragma omp target 4650 { 4651 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4652 for (int i = 0; i < 10; ++i) 4653 ; 4654 } 4655 4656 // TARGET PARALLEL DIRECTIVE 4657 #pragma omp target parallel 4658 #pragma omp parallel 4659 bar(); 4660 #pragma omp target parallel 4661 #pragma omp for 4662 for (int i = 0; i < 10; ++i) 4663 ; 4664 #pragma omp target parallel 4665 #pragma omp simd 4666 for (int i = 0; i < 10; ++i) 4667 ; 4668 #pragma omp target parallel 4669 #pragma omp for simd 4670 for (int i = 0; i < 10; ++i) 4671 ; 4672 #pragma omp target parallel 4673 #pragma omp sections 4674 { 4675 bar(); 4676 } 4677 #pragma omp target parallel 4678 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 4679 { 4680 bar(); 4681 } 4682 #pragma omp target parallel 4683 #pragma omp single 4684 bar(); 4685 4686 #pragma omp target parallel 4687 #pragma omp master 4688 { 4689 bar(); 4690 } 4691 #pragma omp target 4692 #pragma omp parallel master 4693 { 4694 bar(); 4695 } 4696 #pragma omp target parallel 4697 #pragma omp critical 4698 { 4699 bar(); 4700 } 4701 #pragma omp target parallel 4702 #pragma omp parallel for 4703 for (int i = 0; i < 10; ++i) 4704 ; 4705 #pragma omp target parallel 4706 #pragma omp parallel for simd 4707 for (int i = 0; i < 10; ++i) 4708 ; 4709 #pragma omp target parallel 4710 #pragma omp parallel sections 4711 { 4712 bar(); 4713 } 4714 #pragma omp target parallel 4715 #pragma omp task 4716 { 4717 bar(); 4718 } 4719 #pragma omp target parallel 4720 { 4721 #pragma omp taskyield 4722 bar(); 4723 } 4724 #pragma omp target parallel 4725 { 4726 #pragma omp barrier 4727 bar(); 4728 } 4729 #pragma omp target parallel 4730 { 4731 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 4732 bar(); 4733 } 4734 #pragma omp target parallel 4735 { 4736 #pragma omp taskwait 4737 bar(); 4738 } 4739 #pragma omp target parallel 4740 { 4741 #pragma omp flush 4742 bar(); 4743 } 4744 #pragma omp target parallel 4745 { 4746 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 4747 bar(); 4748 } 4749 #pragma omp target parallel 4750 { 4751 #pragma omp atomic 4752 ++a; 4753 } 4754 #pragma omp target parallel 4755 { 4756 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 4757 ++a; 4758 } 4759 #pragma omp target parallel 4760 { 4761 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 4762 ++a; 4763 } 4764 #pragma omp target parallel 4765 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4766 for (int i = 0; i < 10; ++i) 4767 ; 4768 #pragma omp target parallel 4769 { 4770 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 4771 ++a; 4772 } 4773 #pragma omp target parallel 4774 { 4775 ++a; 4776 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 4777 ++a; 4778 } 4779 #pragma omp target parallel 4780 { 4781 #pragma omp taskloop 4782 for (int i = 0; i < 10; ++i) 4783 ++a; 4784 } 4785 #pragma omp target parallel 4786 { 4787 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 4788 for (int i = 0; i < 10; ++i) 4789 ; 4790 } 4791 #pragma omp target parallel 4792 { 4793 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4794 } 4795 #pragma omp target parallel 4796 { 4797 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4798 } 4799 #pragma omp target parallel 4800 { 4801 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4802 } 4803 #pragma omp target parallel 4804 { 4805 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 4806 for (int i = 0; i < 10; ++i) 4807 ; 4808 } 4809 #pragma omp target parallel 4810 { 4811 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 4812 for (int i = 0; i < 10; ++i) 4813 ; 4814 } 4815 #pragma omp target parallel 4816 { 4817 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 4818 for (int i = 0; i < 10; ++i) 4819 ; 4820 } 4821 #pragma omp target parallel 4822 { 4823 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4824 for (int i = 0; i < 10; ++i) 4825 ; 4826 } 4827 #pragma omp target parallel 4828 { 4829 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 4830 for (int i = 0; i < 10; ++i) 4831 ; 4832 } 4833 #pragma omp target parallel 4834 { 4835 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 4836 for (int i = 0; i < 10; ++i) 4837 ; 4838 } 4839 #pragma omp target parallel 4840 { 4841 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4842 for (int i = 0; i < 10; ++i) 4843 ; 4844 } 4845 #pragma omp target parallel 4846 { 4847 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4848 for (int i = 0; i < 10; ++i) 4849 ; 4850 } 4851 #pragma omp target parallel 4852 { 4853 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 4854 a++; 4855 } 4856 #pragma omp target parallel 4857 { 4858 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 4859 for (int i = 0; i < 10; ++i) 4860 ; 4861 } 4862 #pragma omp target parallel 4863 { 4864 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4865 for (int i = 0; i < 10; ++i) 4866 ; 4867 } 4868 #pragma omp target parallel 4869 { 4870 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4871 for (int i = 0; i < 10; ++i) 4872 ; 4873 } 4874 #pragma omp target parallel 4875 { 4876 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4877 for (int i = 0; i < 10; ++i) 4878 ; 4879 } 4880 4881 // TARGET PARALLEL FOR DIRECTIVE 4882 #pragma omp target parallel for 4883 for (int i = 0; i < 10; ++i) { 4884 #pragma omp for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 4885 for (int i = 0; i < 10; ++i) 4886 ; 4887 } 4888 #pragma omp target parallel for 4889 for (int i = 0; i < 10; ++i) { 4890 #pragma omp simd 4891 for (int i = 0; i < 10; ++i) 4892 ; 4893 } 4894 #pragma omp target parallel for 4895 for (int i = 0; i < 10; ++i) { 4896 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 4897 for (int i = 0; i < 10; ++i) 4898 ; 4899 } 4900 #pragma omp target parallel for 4901 for (int i = 0; i < 10; ++i) { 4902 #pragma omp parallel 4903 for (int i = 0; i < 10; ++i) 4904 ; 4905 } 4906 #pragma omp target parallel for 4907 for (int i = 0; i < 10; ++i) { 4908 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 4909 { 4910 bar(); 4911 } 4912 } 4913 #pragma omp target parallel for 4914 for (int i = 0; i < 10; ++i) { 4915 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4916 { 4917 bar(); 4918 } 4919 } 4920 #pragma omp target parallel for 4921 for (int i = 0; i < 10; ++i) { 4922 #pragma omp single // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 4923 { 4924 bar(); 4925 } 4926 } 4927 4928 #pragma omp target parallel for 4929 for (int i = 0; i < 10; ++i) { 4930 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4931 { 4932 bar(); 4933 } 4934 } 4935 4936 #pragma omp target parallel for 4937 for (int i = 0; i < 10; ++i) { 4938 #pragma omp critical 4939 { 4940 bar(); 4941 } 4942 } 4943 4944 #pragma omp target parallel for 4945 for (int i = 0; i < 10; ++i) { 4946 #pragma omp parallel 4947 { 4948 #pragma omp single // OK 4949 { 4950 bar(); 4951 } 4952 #pragma omp for // OK 4953 for (int i = 0; i < 10; ++i) 4954 ; 4955 #pragma omp for simd // OK 4956 for (int i = 0; i < 10; ++i) 4957 ; 4958 #pragma omp sections // OK 4959 { 4960 bar(); 4961 } 4962 } 4963 } 4964 #pragma omp target parallel for 4965 for (int i = 0; i < 10; ++i) { 4966 #pragma omp parallel for 4967 for (int i = 0; i < 10; ++i) 4968 ; 4969 } 4970 #pragma omp target parallel for 4971 for (int i = 0; i < 10; ++i) { 4972 #pragma omp parallel for simd 4973 for (int i = 0; i < 10; ++i) 4974 ; 4975 } 4976 #pragma omp target parallel for 4977 for (int i = 0; i < 10; ++i) { 4978 #pragma omp parallel sections 4979 { 4980 bar(); 4981 } 4982 } 4983 #pragma omp target parallel for 4984 for (int i = 0; i < 10; ++i) { 4985 #pragma omp task 4986 { 4987 bar(); 4988 } 4989 } 4990 #pragma omp target parallel for 4991 for (int i = 0; i < 10; ++i) { 4992 #pragma omp taskyield 4993 bar(); 4994 } 4995 #pragma omp target parallel for 4996 for (int i = 0; i < 10; ++i) { 4997 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4998 bar(); 4999 } 5000 #pragma omp target parallel for 5001 for (int i = 0; i < 10; ++i) { 5002 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 5003 bar(); 5004 } 5005 #pragma omp target parallel for 5006 for (int i = 0; i < 10; ++i) { 5007 #pragma omp taskwait 5008 bar(); 5009 } 5010 #pragma omp target parallel for 5011 for (int i = 0; i < 10; ++i) { 5012 #pragma omp flush 5013 bar(); 5014 } 5015 #pragma omp target parallel for 5016 for (int i = 0; i < 10; ++i) { 5017 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 5018 bar(); 5019 } 5020 #pragma omp target parallel for ordered 5021 for (int i = 0; i < 10; ++i) { 5022 #pragma omp ordered // OK 5023 bar(); 5024 } 5025 #pragma omp target parallel for 5026 for (int i = 0; i < 10; ++i) { 5027 #pragma omp atomic 5028 ++a; 5029 } 5030 #pragma omp target parallel for 5031 for (int i = 0; i < 10; ++i) { 5032 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 5033 ++a; 5034 } 5035 #pragma omp target parallel for 5036 for (int i = 0; i < 10; ++i) { 5037 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 5038 ++a; 5039 } 5040 #pragma omp target parallel for 5041 for (int i = 0; i < 10; ++i) { 5042 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5043 for (int i = 0; i < 10; ++i) 5044 ; 5045 } 5046 #pragma omp target parallel for 5047 for (int i = 0; i < 10; ++i) { 5048 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5049 ++a; 5050 } 5051 #pragma omp target parallel for 5052 for (int i = 0; i < 10; ++i) { 5053 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5054 ++a; 5055 } 5056 #pragma omp target parallel for 5057 for (int i = 0; i < 10; ++i) { 5058 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 5059 ++a; 5060 } 5061 #pragma omp target parallel for 5062 for (int i = 0; i < 10; ++i) { 5063 #pragma omp taskloop 5064 for (int i = 0; i < 10; ++i) 5065 ++a; 5066 } 5067 #pragma omp target parallel for 5068 for (int i = 0; i < 10; ++i) { 5069 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 5070 for (int j = 0; j < 10; ++j) 5071 ; 5072 } 5073 #pragma omp target parallel for 5074 for (int i = 0; i < 10; ++i) { 5075 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5076 } 5077 #pragma omp target parallel for 5078 for (int i = 0; i < 10; ++i) { 5079 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 5080 for (int j = 0; j < 10; ++j) 5081 ; 5082 } 5083 #pragma omp target parallel for 5084 for (int i = 0; i < 10; ++i) { 5085 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 5086 for (int j = 0; j < 10; ++j) 5087 ; 5088 } 5089 #pragma omp target parallel for 5090 for (int i = 0; i < 10; ++i) { 5091 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 5092 for (int j = 0; j < 10; ++j) 5093 ; 5094 } 5095 #pragma omp target parallel for 5096 for (int i = 0; i < 10; ++i) { 5097 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5098 for (int j = 0; j < 10; ++j) 5099 ; 5100 } 5101 #pragma omp target parallel for 5102 for (int i = 0; i < 10; ++i) { 5103 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5104 for (int j = 0; j < 10; ++j) 5105 ; 5106 } 5107 #pragma omp target parallel for 5108 for (int i = 0; i < 10; ++i) { 5109 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5110 for (int j = 0; j < 10; ++j) 5111 ; 5112 } 5113 #pragma omp target parallel for 5114 for (int i = 0; i < 10; ++i) { 5115 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5116 for (int j = 0; j < 10; ++j) 5117 ; 5118 } 5119 #pragma omp target parallel for 5120 for (int i = 0; i < 10; ++i) { 5121 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5122 for (int j = 0; j < 10; ++j) 5123 ; 5124 } 5125 #pragma omp target parallel for 5126 for (int i = 0; i < 10; ++i) { 5127 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 5128 a++; 5129 } 5130 #pragma omp target parallel for 5131 for (int i = 0; i < 10; ++i) { 5132 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 5133 for (int j = 0; j < 10; ++j) 5134 ; 5135 } 5136 #pragma omp target parallel for 5137 for (int i = 0; i < 10; ++i) { 5138 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5139 for (int j = 0; j < 10; ++j) 5140 ; 5141 } 5142 #pragma omp target parallel for 5143 for (int i = 0; i < 10; ++i) { 5144 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5145 for (int j = 0; j < 10; ++j) 5146 ; 5147 } 5148 #pragma omp target parallel for 5149 for (int i = 0; i < 10; ++i) { 5150 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5151 for (int j = 0; j < 10; ++j) 5152 ; 5153 } 5154 5155 // TEAMS DIRECTIVE 5156 #pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5157 bar(); 5158 #pragma omp target 5159 #pragma omp teams 5160 #pragma omp parallel 5161 bar(); 5162 #pragma omp target 5163 #pragma omp teams 5164 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 5165 for (int i = 0; i < 10; ++i) 5166 ; 5167 #pragma omp target 5168 #pragma omp teams 5169 #pragma omp simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 5170 for (int i = 0; i < 10; ++i) 5171 ; 5172 #pragma omp target 5173 #pragma omp teams 5174 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 5175 for (int i = 0; i < 10; ++i) 5176 ; 5177 #pragma omp target 5178 #pragma omp teams 5179 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 5180 { 5181 bar(); 5182 } 5183 #pragma omp target 5184 #pragma omp teams 5185 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 5186 { 5187 bar(); 5188 } 5189 #pragma omp target 5190 #pragma omp teams 5191 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 5192 bar(); 5193 5194 #pragma omp target 5195 #pragma omp teams 5196 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 5197 { 5198 bar(); 5199 } 5200 #pragma omp target 5201 #pragma omp teams 5202 #pragma omp critical // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 5203 { 5204 bar(); 5205 } 5206 #pragma omp target 5207 #pragma omp teams 5208 #pragma omp parallel for 5209 for (int i = 0; i < 10; ++i) 5210 ; 5211 #pragma omp target 5212 #pragma omp teams 5213 #pragma omp parallel for simd 5214 for (int i = 0; i < 10; ++i) 5215 ; 5216 #pragma omp target 5217 #pragma omp teams 5218 #pragma omp parallel sections 5219 { 5220 bar(); 5221 } 5222 #pragma omp target 5223 #pragma omp teams 5224 #pragma omp task // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 5225 { 5226 bar(); 5227 } 5228 #pragma omp target 5229 #pragma omp teams 5230 { 5231 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 5232 bar(); 5233 } 5234 #pragma omp target 5235 #pragma omp teams 5236 { 5237 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 5238 bar(); 5239 } 5240 #pragma omp target 5241 #pragma omp teams 5242 { 5243 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 5244 bar(); 5245 } 5246 #pragma omp target 5247 #pragma omp teams 5248 { 5249 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 5250 bar(); 5251 } 5252 #pragma omp target 5253 #pragma omp teams 5254 { 5255 #pragma omp flush // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 5256 bar(); 5257 } 5258 #pragma omp target 5259 #pragma omp teams 5260 { 5261 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 5262 bar(); 5263 } 5264 #pragma omp target 5265 #pragma omp teams 5266 { 5267 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 5268 ++a; 5269 } 5270 #pragma omp target 5271 #pragma omp teams 5272 { 5273 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5274 ++a; 5275 } 5276 #pragma omp target 5277 #pragma omp teams 5278 { 5279 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5280 ++a; 5281 } 5282 #pragma omp target 5283 #pragma omp teams 5284 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5285 for (int i = 0; i < 10; ++i) 5286 ; 5287 #pragma omp target 5288 #pragma omp teams 5289 { 5290 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5291 ++a; 5292 } 5293 #pragma omp target 5294 #pragma omp teams 5295 { 5296 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5297 ++a; 5298 } 5299 #pragma omp target 5300 #pragma omp teams 5301 { 5302 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 5303 ++a; 5304 } 5305 #pragma omp target 5306 #pragma omp teams 5307 { 5308 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 5309 for (int i = 0; i < 10; ++i) 5310 ++a; 5311 } 5312 #pragma omp target 5313 #pragma omp teams 5314 #pragma omp distribute 5315 for (int i = 0; i < 10; ++i) 5316 ; 5317 #pragma omp target 5318 #pragma omp teams 5319 #pragma omp distribute 5320 for (int i = 0; i < 10; ++i) 5321 ; 5322 #pragma omp distribute 5323 for (int j = 0; j < 10; ++j) 5324 ; 5325 #pragma omp target 5326 #pragma omp teams 5327 { 5328 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5329 } 5330 #pragma omp target 5331 #pragma omp teams 5332 { 5333 #pragma omp distribute parallel for 5334 for (int i = 0; i < 10; ++i) 5335 ; 5336 #pragma omp distribute parallel for 5337 for (int j = 0; j < 10; ++j) 5338 ; 5339 } 5340 #pragma omp target 5341 #pragma omp teams 5342 { 5343 #pragma omp distribute parallel for simd 5344 for (int i = 0; i < 10; ++i) 5345 ; 5346 #pragma omp distribute parallel for simd 5347 for (int j = 0; j < 10; ++j) 5348 ; 5349 } 5350 #pragma omp target 5351 #pragma omp teams 5352 { 5353 #pragma omp distribute simd 5354 for (int i = 0; i < 10; ++i) 5355 ; 5356 #pragma omp distribute simd 5357 for (int j = 0; j < 10; ++j) 5358 ; 5359 } 5360 #pragma omp target 5361 #pragma omp teams 5362 { 5363 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5364 for (int i = 0; i < 10; ++i) 5365 ; 5366 } 5367 #pragma omp target 5368 #pragma omp teams 5369 { 5370 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5371 for (int i = 0; i < 10; ++i) 5372 ; 5373 } 5374 #pragma omp target 5375 #pragma omp teams 5376 { 5377 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5378 for (int i = 0; i < 10; ++i) 5379 ; 5380 } 5381 #pragma omp target 5382 #pragma omp teams 5383 { 5384 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5385 for (int i = 0; i < 10; ++i) 5386 ; 5387 } 5388 #pragma omp target 5389 #pragma omp teams 5390 { 5391 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5392 for (int i = 0; i < 10; ++i) 5393 ; 5394 } 5395 #pragma omp target 5396 #pragma omp teams 5397 { 5398 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5399 a++; 5400 } 5401 #pragma omp target 5402 #pragma omp teams 5403 { 5404 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5405 for (int i = 0; i < 10; ++i) 5406 ; 5407 } 5408 #pragma omp target 5409 #pragma omp teams 5410 { 5411 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5412 for (int i = 0; i < 10; ++i) 5413 ; 5414 } 5415 #pragma omp target 5416 #pragma omp teams 5417 { 5418 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5419 for (int i = 0; i < 10; ++i) 5420 ; 5421 } 5422 #pragma omp target 5423 #pragma omp teams 5424 { 5425 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5426 for (int i = 0; i < 10; ++i) 5427 ; 5428 } 5429 5430 // TASKLOOP DIRECTIVE 5431 #pragma omp taskloop 5432 for (int i = 0; i < 10; ++i) { 5433 #pragma omp for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 5434 for (int i = 0; i < 10; ++i) 5435 ; 5436 } 5437 #pragma omp taskloop 5438 for (int i = 0; i < 10; ++i) { 5439 #pragma omp simd 5440 for (int i = 0; i < 10; ++i) 5441 ; 5442 } 5443 #pragma omp taskloop 5444 for (int i = 0; i < 10; ++i) { 5445 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 5446 for (int i = 0; i < 10; ++i) 5447 ; 5448 } 5449 #pragma omp taskloop 5450 for (int i = 0; i < 10; ++i) { 5451 #pragma omp parallel 5452 for (int i = 0; i < 10; ++i) 5453 ; 5454 } 5455 #pragma omp taskloop 5456 for (int i = 0; i < 10; ++i) { 5457 #pragma omp sections // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 5458 { 5459 bar(); 5460 } 5461 } 5462 #pragma omp taskloop 5463 for (int i = 0; i < 10; ++i) { 5464 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 5465 { 5466 bar(); 5467 } 5468 } 5469 #pragma omp taskloop 5470 for (int i = 0; i < 10; ++i) { 5471 #pragma omp single // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 5472 { 5473 bar(); 5474 } 5475 } 5476 5477 #pragma omp taskloop 5478 for (int i = 0; i < 10; ++i) { 5479 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5480 { 5481 bar(); 5482 } 5483 } 5484 #pragma omp taskloop 5485 for (int i = 0; i < 10; ++i) { 5486 #pragma omp critical 5487 { 5488 bar(); 5489 } 5490 } 5491 #pragma omp taskloop 5492 for (int i = 0; i < 10; ++i) { 5493 #pragma omp parallel 5494 { 5495 #pragma omp single // OK 5496 { 5497 bar(); 5498 } 5499 #pragma omp for // OK 5500 for (int i = 0; i < 10; ++i) 5501 ; 5502 #pragma omp sections // OK 5503 { 5504 bar(); 5505 } 5506 } 5507 } 5508 #pragma omp taskloop 5509 for (int i = 0; i < 10; ++i) { 5510 #pragma omp parallel for 5511 for (int i = 0; i < 10; ++i) 5512 ; 5513 } 5514 #pragma omp taskloop 5515 for (int i = 0; i < 10; ++i) { 5516 #pragma omp parallel for simd 5517 for (int i = 0; i < 10; ++i) 5518 ; 5519 } 5520 #pragma omp taskloop 5521 for (int i = 0; i < 10; ++i) { 5522 #pragma omp parallel sections 5523 { 5524 bar(); 5525 } 5526 } 5527 #pragma omp taskloop 5528 for (int i = 0; i < 10; ++i) { 5529 #pragma omp task 5530 { 5531 bar(); 5532 } 5533 } 5534 #pragma omp taskloop 5535 for (int i = 0; i < 10; ++i) { 5536 #pragma omp taskyield 5537 bar(); 5538 } 5539 #pragma omp taskloop 5540 for (int i = 0; i < 10; ++i) { 5541 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5542 bar(); 5543 } 5544 #pragma omp taskloop 5545 for (int i = 0; i < 10; ++i) { 5546 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5547 bar(); 5548 } 5549 #pragma omp taskloop 5550 for (int i = 0; i < 10; ++i) { 5551 #pragma omp taskwait 5552 bar(); 5553 } 5554 #pragma omp taskloop 5555 for (int i = 0; i < 10; ++i) { 5556 #pragma omp flush 5557 bar(); 5558 } 5559 #pragma omp taskloop 5560 for (int i = 0; i < 10; ++i) { 5561 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 5562 bar(); 5563 } 5564 #pragma omp taskloop 5565 for (int i = 0; i < 10; ++i) { 5566 #pragma omp atomic 5567 ++a; 5568 } 5569 #pragma omp taskloop 5570 for (int i = 0; i < 10; ++i) { 5571 #pragma omp target 5572 ++a; 5573 } 5574 #pragma omp taskloop 5575 for (int i = 0; i < 10; ++i) { 5576 #pragma omp target parallel 5577 ++a; 5578 } 5579 #pragma omp taskloop 5580 for (int i = 0; i < 10; ++i) { 5581 #pragma omp target parallel for 5582 for (int i = 0; i < 10; ++i) 5583 ; 5584 } 5585 #pragma omp taskloop 5586 for (int i = 0; i < 10; ++i) { 5587 #pragma omp target enter data map(to: a) 5588 ++a; 5589 } 5590 #pragma omp taskloop 5591 for (int i = 0; i < 10; ++i) { 5592 #pragma omp target exit data map(from: a) 5593 ++a; 5594 } 5595 #pragma omp taskloop 5596 for (int i = 0; i < 10; ++i) { 5597 #pragma omp teams // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 5598 ++a; 5599 } 5600 #pragma omp taskloop 5601 for (int i = 0; i < 10; ++i) { 5602 #pragma omp taskloop 5603 for (int i = 0; i < 10; ++i) 5604 ++a; 5605 } 5606 #pragma omp taskloop 5607 for (int i = 0; i < 10; ++i) { 5608 #pragma omp target update to(a) 5609 bar(); 5610 } 5611 #pragma omp taskloop 5612 for (int i = 0; i < 10; ++i) { 5613 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 5614 for (int j = 0; j < 10; ++j) 5615 ++a; 5616 } 5617 #pragma omp taskloop 5618 for (int i = 0; i < 10; ++i) { 5619 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 5620 for (int j = 0; j < 10; ++j) 5621 ++a; 5622 } 5623 #pragma omp taskloop 5624 for (int i = 0; i < 10; ++i) { 5625 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 5626 for (int j = 0; j < 10; ++j) 5627 ++a; 5628 } 5629 #pragma omp taskloop 5630 for (int i = 0; i < 10; ++i) { 5631 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 5632 for (int j = 0; j < 10; ++j) 5633 ++a; 5634 } 5635 #pragma omp taskloop 5636 for (int i = 0; i < 10; ++i) { 5637 #pragma omp target simd // OK 5638 for (int j = 0; j < 10; ++j) 5639 ++a; 5640 } 5641 #pragma omp taskloop 5642 for (int i = 0; i < 10; ++i) { 5643 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5644 for (int j = 0; j < 10; ++j) 5645 ++a; 5646 } 5647 #pragma omp taskloop 5648 for (int i = 0; i < 10; ++i) { 5649 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5650 for (int j = 0; j < 10; ++j) 5651 ++a; 5652 } 5653 #pragma omp taskloop 5654 for (int i = 0; i < 10; ++i) { 5655 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5656 for (int j = 0; j < 10; ++j) 5657 ++a; 5658 } 5659 #pragma omp taskloop 5660 for (int i = 0; i < 10; ++i) { 5661 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5662 for (int j = 0; j < 10; ++j) 5663 ++a; 5664 } 5665 #pragma omp taskloop 5666 for (int i = 0; i < 10; ++i) { 5667 #pragma omp target teams // OK 5668 ++a; 5669 } 5670 #pragma omp taskloop 5671 for (int i = 0; i < 10; ++i) { 5672 #pragma omp target teams distribute // OK 5673 for (int j = 0; j < 10; ++j) 5674 ++a; 5675 } 5676 #pragma omp taskloop 5677 for (int i = 0; i < 10; ++i) { 5678 #pragma omp target teams distribute parallel for // OK 5679 for (int j = 0; j < 10; ++j) 5680 ++a; 5681 } 5682 #pragma omp taskloop 5683 for (int i = 0; i < 10; ++i) { 5684 #pragma omp target teams distribute parallel for simd // OK 5685 for (int j = 0; j < 10; ++j) 5686 ++a; 5687 } 5688 #pragma omp taskloop 5689 for (int i = 0; i < 10; ++i) { 5690 #pragma omp target teams distribute simd // OK 5691 for (int j = 0; j < 10; ++j) 5692 ++a; 5693 } 5694 #pragma omp taskloop 5695 for (int i = 0; i < 10; ++i) { 5696 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 5697 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 5698 } 5699 #pragma omp taskloop 5700 for (int i = 0; i < 10; ++i) { 5701 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5702 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5703 } 5704 #pragma omp master taskloop 5705 for (int i = 0; i < 10; ++i) { 5706 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 5707 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 5708 } 5709 #pragma omp master taskloop 5710 for (int i = 0; i < 10; ++i) { 5711 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 5712 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 5713 } 5714 #pragma omp parallel master taskloop 5715 for (int i = 0; i < 10; ++i) { 5716 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5717 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5718 } 5719 #pragma omp parallel master taskloop 5720 for (int i = 0; i < 10; ++i) { 5721 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5722 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5723 } 5724 5725 // DISTRIBUTE DIRECTIVE 5726 #pragma omp target 5727 #pragma omp teams 5728 #pragma omp distribute 5729 for (int i = 0; i < 10; ++i) { 5730 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 5731 for (int i = 0; i < 10; ++i) 5732 ; 5733 } 5734 #pragma omp target 5735 #pragma omp teams 5736 #pragma omp distribute 5737 for (int i = 0; i < 10; ++i) { 5738 #pragma omp for 5739 for (int i = 0; i < 10; ++i) 5740 ; 5741 } 5742 #pragma omp target 5743 #pragma omp teams 5744 #pragma omp distribute 5745 for (int i = 0; i < 10; ++i) { 5746 #pragma omp simd 5747 for (int i = 0; i < 10; ++i) 5748 ; 5749 } 5750 #pragma omp target 5751 #pragma omp teams 5752 #pragma omp distribute 5753 for (int i = 0; i < 10; ++i) { 5754 #pragma omp for simd 5755 for (int i = 0; i < 10; ++i) 5756 ; 5757 } 5758 #pragma omp target 5759 #pragma omp teams 5760 #pragma omp distribute 5761 for (int i = 0; i < 10; ++i) { 5762 #pragma omp parallel 5763 for (int i = 0; i < 10; ++i) 5764 ; 5765 } 5766 #pragma omp target 5767 #pragma omp teams 5768 #pragma omp distribute 5769 for (int i = 0; i < 10; ++i) { 5770 #pragma omp sections 5771 { 5772 bar(); 5773 } 5774 } 5775 #pragma omp target 5776 #pragma omp teams 5777 #pragma omp distribute 5778 for (int i = 0; i < 10; ++i) { 5779 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 5780 { 5781 bar(); 5782 } 5783 } 5784 #pragma omp target 5785 #pragma omp teams 5786 #pragma omp distribute 5787 for (int i = 0; i < 10; ++i) { 5788 #pragma omp single 5789 { 5790 bar(); 5791 } 5792 } 5793 #pragma omp target 5794 #pragma omp teams 5795 #pragma omp distribute 5796 for (int i = 0; i < 10; ++i) { 5797 #pragma omp master 5798 { 5799 bar(); 5800 } 5801 } 5802 #pragma omp target 5803 #pragma omp teams 5804 #pragma omp distribute 5805 for (int i = 0; i < 10; ++i) { 5806 #pragma omp critical 5807 { 5808 bar(); 5809 } 5810 } 5811 #pragma omp target 5812 #pragma omp teams 5813 #pragma omp distribute 5814 for (int i = 0; i < 10; ++i) { 5815 #pragma omp parallel 5816 { 5817 #pragma omp single 5818 { 5819 bar(); 5820 } 5821 } 5822 } 5823 #pragma omp target 5824 #pragma omp teams 5825 #pragma omp distribute 5826 for (int i = 0; i < 10; ++i) { 5827 #pragma omp parallel for 5828 for (int i = 0; i < 10; ++i) 5829 ; 5830 } 5831 #pragma omp target 5832 #pragma omp teams 5833 #pragma omp distribute 5834 for (int i = 0; i < 10; ++i) { 5835 #pragma omp parallel for simd 5836 for (int i = 0; i < 10; ++i) 5837 ; 5838 } 5839 #pragma omp target 5840 #pragma omp teams 5841 #pragma omp distribute 5842 for (int i = 0; i < 10; ++i) { 5843 #pragma omp parallel sections 5844 { 5845 bar(); 5846 } 5847 } 5848 #pragma omp target 5849 #pragma omp teams 5850 #pragma omp distribute 5851 for (int i = 0; i < 10; ++i) { 5852 #pragma omp task 5853 { 5854 bar(); 5855 } 5856 } 5857 #pragma omp target 5858 #pragma omp teams 5859 #pragma omp distribute 5860 for (int i = 0; i < 10; ++i) { 5861 #pragma omp taskyield 5862 bar(); 5863 } 5864 #pragma omp target 5865 #pragma omp teams 5866 #pragma omp distribute 5867 for (int i = 0; i < 10; ++i) { 5868 #pragma omp barrier 5869 bar(); 5870 } 5871 #pragma omp target 5872 #pragma omp teams 5873 #pragma omp distribute 5874 for (int i = 0; i < 10; ++i) { 5875 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 5876 bar(); 5877 } 5878 #pragma omp target 5879 #pragma omp teams 5880 #pragma omp distribute 5881 for (int i = 0; i < 10; ++i) { 5882 #pragma omp taskwait 5883 bar(); 5884 } 5885 #pragma omp target 5886 #pragma omp teams 5887 #pragma omp distribute 5888 for (int i = 0; i < 10; ++i) { 5889 #pragma omp flush 5890 bar(); 5891 } 5892 #pragma omp target 5893 #pragma omp teams 5894 #pragma omp distribute 5895 for (int i = 0; i < 10; ++i) { 5896 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 5897 bar(); 5898 } 5899 #pragma omp target 5900 #pragma omp teams 5901 #pragma omp distribute 5902 for (int i = 0; i < 10; ++i) { 5903 #pragma omp atomic 5904 ++a; 5905 } 5906 #pragma omp target 5907 #pragma omp teams 5908 #pragma omp distribute 5909 for (int i = 0; i < 10; ++i) { 5910 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5911 ++a; 5912 } 5913 #pragma omp target 5914 #pragma omp teams 5915 #pragma omp distribute 5916 for (int i = 0; i < 10; ++i) { 5917 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5918 ++a; 5919 } 5920 #pragma omp target 5921 #pragma omp teams 5922 #pragma omp distribute 5923 for (int i = 0; i < 10; ++i) { 5924 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5925 for (int i = 0; i < 10; ++i) 5926 ; 5927 } 5928 #pragma omp target 5929 #pragma omp teams 5930 #pragma omp distribute 5931 for (int i = 0; i < 10; ++i) { 5932 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5933 ++a; 5934 } 5935 #pragma omp target 5936 #pragma omp teams 5937 #pragma omp distribute 5938 for (int i = 0; i < 10; ++i) { 5939 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5940 ++a; 5941 } 5942 #pragma omp target 5943 #pragma omp teams 5944 #pragma omp distribute 5945 for (int i = 0; i < 10; ++i) { 5946 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 5947 ++a; 5948 } 5949 #pragma omp target 5950 #pragma omp teams 5951 #pragma omp distribute 5952 for (int i = 0; i < 10; ++i) { 5953 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5954 ++a; 5955 } 5956 #pragma omp target 5957 #pragma omp teams 5958 #pragma omp distribute 5959 for (int i = 0; i < 10; ++i) { 5960 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5961 for (int j = 0; j < 10; ++j) 5962 ; 5963 } 5964 #pragma omp target 5965 #pragma omp teams 5966 #pragma omp distribute 5967 for (int i = 0; i < 10; ++i) { 5968 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5969 for (int j = 0; j < 10; ++j) 5970 ; 5971 } 5972 #pragma omp target 5973 #pragma omp teams 5974 #pragma omp distribute 5975 for (int i = 0; i < 10; ++i) { 5976 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5977 for (int j = 0; j < 10; ++j) 5978 ; 5979 } 5980 #pragma omp target 5981 #pragma omp teams 5982 #pragma omp distribute 5983 for (int i = 0; i < 10; ++i) { 5984 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5985 for (int j = 0; j < 10; ++j) 5986 ; 5987 } 5988 #pragma omp target 5989 #pragma omp teams 5990 #pragma omp distribute 5991 for (int i = 0; i < 10; ++i) { 5992 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5993 for (int j = 0; j < 10; ++j) 5994 ; 5995 } 5996 #pragma omp target 5997 #pragma omp teams 5998 #pragma omp distribute 5999 for (int i = 0; i < 10; ++i) { 6000 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6001 a++; 6002 } 6003 #pragma omp target 6004 #pragma omp teams 6005 #pragma omp distribute 6006 for (int i = 0; i < 10; ++i) { 6007 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6008 for (int j = 0; j < 10; ++j) 6009 ; 6010 } 6011 #pragma omp target 6012 #pragma omp teams 6013 #pragma omp distribute 6014 for (int i = 0; i < 10; ++i) { 6015 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6016 for (int j = 0; j < 10; ++j) 6017 ; 6018 } 6019 #pragma omp target 6020 #pragma omp teams 6021 #pragma omp distribute 6022 for (int i = 0; i < 10; ++i) { 6023 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6024 for (int j = 0; j < 10; ++j) 6025 ; 6026 } 6027 #pragma omp target 6028 #pragma omp teams 6029 #pragma omp distribute 6030 for (int i = 0; i < 10; ++i) { 6031 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6032 for (int j = 0; j < 10; ++j) 6033 ; 6034 } 6035 6036 // DISTRIBUTE PARALLEL FOR DIRECTIVE 6037 #pragma omp target 6038 #pragma omp teams 6039 #pragma omp distribute parallel for 6040 for (int i = 0; i < 10; ++i) { 6041 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 6042 for (int i = 0; i < 10; ++i) 6043 ; 6044 } 6045 #pragma omp target 6046 #pragma omp teams 6047 #pragma omp distribute parallel for 6048 for (int i = 0; i < 10; ++i) { 6049 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 6050 for (int i = 0; i < 10; ++i) 6051 ; 6052 } 6053 #pragma omp target 6054 #pragma omp teams 6055 #pragma omp distribute parallel for 6056 for (int i = 0; i < 10; ++i) { 6057 #pragma omp for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 6058 for (int i = 0; i < 10; ++i) 6059 ; 6060 } 6061 #pragma omp target 6062 #pragma omp teams 6063 #pragma omp distribute parallel for 6064 for (int i = 0; i < 10; ++i) { 6065 #pragma omp simd 6066 for (int i = 0; i < 10; ++i) 6067 ; 6068 } 6069 #pragma omp target 6070 #pragma omp teams 6071 #pragma omp distribute parallel for 6072 for (int i = 0; i < 10; ++i) { 6073 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 6074 for (int i = 0; i < 10; ++i) 6075 ; 6076 } 6077 #pragma omp target 6078 #pragma omp teams 6079 #pragma omp distribute parallel for 6080 for (int i = 0; i < 10; ++i) { 6081 #pragma omp parallel 6082 for (int i = 0; i < 10; ++i) 6083 ; 6084 } 6085 #pragma omp target 6086 #pragma omp teams 6087 #pragma omp distribute parallel for 6088 for (int i = 0; i < 10; ++i) { 6089 #pragma omp sections // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 6090 { 6091 bar(); 6092 } 6093 } 6094 #pragma omp target 6095 #pragma omp teams 6096 #pragma omp distribute parallel for 6097 for (int i = 0; i < 10; ++i) { 6098 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 6099 { 6100 bar(); 6101 } 6102 } 6103 #pragma omp target 6104 #pragma omp teams 6105 #pragma omp distribute parallel for 6106 for (int i = 0; i < 10; ++i) { 6107 #pragma omp single // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 6108 { 6109 bar(); 6110 } 6111 } 6112 #pragma omp target 6113 #pragma omp teams 6114 #pragma omp distribute parallel for 6115 for (int i = 0; i < 10; ++i) { 6116 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6117 { 6118 bar(); 6119 } 6120 } 6121 #pragma omp target 6122 #pragma omp teams 6123 #pragma omp distribute parallel for 6124 for (int i = 0; i < 10; ++i) { 6125 #pragma omp critical 6126 { 6127 bar(); 6128 } 6129 } 6130 #pragma omp target 6131 #pragma omp teams 6132 #pragma omp distribute parallel for 6133 for (int i = 0; i < 10; ++i) { 6134 #pragma omp parallel 6135 { 6136 #pragma omp single 6137 { 6138 bar(); 6139 } 6140 } 6141 } 6142 #pragma omp target 6143 #pragma omp teams 6144 #pragma omp distribute parallel for 6145 for (int i = 0; i < 10; ++i) { 6146 #pragma omp parallel for 6147 for (int i = 0; i < 10; ++i) 6148 ; 6149 } 6150 #pragma omp target 6151 #pragma omp teams 6152 #pragma omp distribute parallel for 6153 for (int i = 0; i < 10; ++i) { 6154 #pragma omp parallel for simd 6155 for (int i = 0; i < 10; ++i) 6156 ; 6157 } 6158 #pragma omp target 6159 #pragma omp teams 6160 #pragma omp distribute parallel for 6161 for (int i = 0; i < 10; ++i) { 6162 #pragma omp parallel sections 6163 { 6164 bar(); 6165 } 6166 } 6167 #pragma omp target 6168 #pragma omp teams 6169 #pragma omp distribute parallel for 6170 for (int i = 0; i < 10; ++i) { 6171 #pragma omp task 6172 { 6173 bar(); 6174 } 6175 } 6176 #pragma omp target 6177 #pragma omp teams 6178 #pragma omp distribute parallel for 6179 for (int i = 0; i < 10; ++i) { 6180 #pragma omp taskyield 6181 bar(); 6182 } 6183 #pragma omp target 6184 #pragma omp teams 6185 #pragma omp distribute parallel for 6186 for (int i = 0; i < 10; ++i) { 6187 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6188 bar(); 6189 } 6190 #pragma omp target 6191 #pragma omp teams 6192 #pragma omp distribute parallel for 6193 for (int i = 0; i < 10; ++i) { 6194 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6195 bar(); 6196 } 6197 #pragma omp target 6198 #pragma omp teams 6199 #pragma omp distribute parallel for 6200 for (int i = 0; i < 10; ++i) { 6201 #pragma omp taskwait 6202 bar(); 6203 } 6204 #pragma omp target 6205 #pragma omp teams 6206 #pragma omp distribute parallel for 6207 for (int i = 0; i < 10; ++i) { 6208 #pragma omp flush 6209 bar(); 6210 } 6211 #pragma omp target 6212 #pragma omp teams 6213 #pragma omp distribute parallel for 6214 for (int i = 0; i < 10; ++i) { 6215 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 6216 bar(); 6217 } 6218 #pragma omp target 6219 #pragma omp teams 6220 #pragma omp distribute parallel for 6221 for (int i = 0; i < 10; ++i) { 6222 #pragma omp atomic 6223 ++a; 6224 } 6225 #pragma omp target 6226 #pragma omp teams 6227 #pragma omp distribute parallel for 6228 for (int i = 0; i < 10; ++i) { 6229 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6230 ++a; 6231 } 6232 #pragma omp target 6233 #pragma omp teams 6234 #pragma omp distribute parallel for 6235 for (int i = 0; i < 10; ++i) { 6236 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6237 ++a; 6238 } 6239 #pragma omp target 6240 #pragma omp teams 6241 #pragma omp distribute parallel for 6242 for (int i = 0; i < 10; ++i) { 6243 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6244 for (int i = 0; i < 10; ++i) 6245 ; 6246 } 6247 #pragma omp target 6248 #pragma omp teams 6249 #pragma omp distribute parallel for 6250 for (int i = 0; i < 10; ++i) { 6251 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6252 ++a; 6253 } 6254 #pragma omp target 6255 #pragma omp teams 6256 #pragma omp distribute parallel for 6257 for (int i = 0; i < 10; ++i) { 6258 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6259 ++a; 6260 } 6261 #pragma omp target 6262 #pragma omp teams 6263 #pragma omp distribute parallel for 6264 for (int i = 0; i < 10; ++i) { 6265 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 6266 ++a; 6267 } 6268 #pragma omp target 6269 #pragma omp teams 6270 #pragma omp distribute parallel for 6271 for (int i = 0; i < 10; ++i) { 6272 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6273 ++a; 6274 } 6275 #pragma omp target 6276 #pragma omp teams 6277 #pragma omp distribute parallel for 6278 for (int i = 0; i < 10; ++i) { 6279 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 6280 for (int i = 0; i < 10; ++i) 6281 ; 6282 } 6283 #pragma omp target 6284 #pragma omp teams 6285 #pragma omp distribute parallel for 6286 for (int i = 0; i < 10; ++i) { 6287 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 6288 for (int i = 0; i < 10; ++i) 6289 ; 6290 } 6291 #pragma omp target 6292 #pragma omp teams 6293 #pragma omp distribute parallel for 6294 for (int i = 0; i < 10; ++i) { 6295 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 6296 for (int i = 0; i < 10; ++i) 6297 ; 6298 } 6299 #pragma omp target 6300 #pragma omp teams 6301 #pragma omp distribute parallel for 6302 for (int i = 0; i < 10; ++i) { 6303 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 6304 for (int i = 0; i < 10; ++i) 6305 ; 6306 } 6307 #pragma omp target 6308 #pragma omp teams 6309 #pragma omp distribute parallel for 6310 for (int i = 0; i < 10; ++i) { 6311 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 6312 for (int i = 0; i < 10; ++i) 6313 ; 6314 } 6315 #pragma omp target 6316 #pragma omp teams 6317 #pragma omp distribute parallel for 6318 for (int i = 0; i < 10; ++i) { 6319 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6320 a++; 6321 } 6322 #pragma omp target 6323 #pragma omp teams 6324 #pragma omp distribute parallel for 6325 for (int i = 0; i < 10; ++i) { 6326 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6327 for (int i = 0; i < 10; ++i) 6328 ; 6329 } 6330 #pragma omp target 6331 #pragma omp teams 6332 #pragma omp distribute parallel for 6333 for (int i = 0; i < 10; ++i) { 6334 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6335 for (int i = 0; i < 10; ++i) 6336 ; 6337 } 6338 #pragma omp target 6339 #pragma omp teams 6340 #pragma omp distribute parallel for 6341 for (int i = 0; i < 10; ++i) { 6342 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6343 for (int i = 0; i < 10; ++i) 6344 ; 6345 } 6346 #pragma omp target 6347 #pragma omp teams 6348 #pragma omp distribute parallel for 6349 for (int i = 0; i < 10; ++i) { 6350 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6351 for (int i = 0; i < 10; ++i) 6352 ; 6353 } 6354 6355 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6356 #pragma omp target 6357 #pragma omp teams 6358 #pragma omp distribute parallel for simd 6359 for (int i = 0; i < 10; ++i) { 6360 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6361 for (int i = 0; i < 10; ++i) 6362 ; 6363 } 6364 #pragma omp target 6365 #pragma omp teams 6366 #pragma omp distribute parallel for simd 6367 for (int i = 0; i < 10; ++i) { 6368 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6369 for (int i = 0; i < 10; ++i) 6370 ; 6371 } 6372 #pragma omp target 6373 #pragma omp teams 6374 #pragma omp distribute parallel for simd 6375 for (int i = 0; i < 10; ++i) { 6376 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6377 for (int i = 0; i < 10; ++i) 6378 ; 6379 } 6380 #pragma omp target 6381 #pragma omp teams 6382 #pragma omp distribute parallel for simd 6383 for (int i = 0; i < 10; ++i) { 6384 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6385 for (int i = 0; i < 10; ++i) 6386 ; 6387 } 6388 #pragma omp target 6389 #pragma omp teams 6390 #pragma omp distribute parallel for simd 6391 for (int i = 0; i < 10; ++i) { 6392 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6393 for (int i = 0; i < 10; ++i) 6394 ; 6395 } 6396 #pragma omp target 6397 #pragma omp teams 6398 #pragma omp distribute parallel for simd 6399 for (int i = 0; i < 10; ++i) { 6400 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6401 for (int i = 0; i < 10; ++i) 6402 ; 6403 } 6404 #pragma omp target 6405 #pragma omp teams 6406 #pragma omp distribute parallel for simd 6407 for (int i = 0; i < 10; ++i) { 6408 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6409 { 6410 bar(); 6411 } 6412 } 6413 #pragma omp target 6414 #pragma omp teams 6415 #pragma omp distribute parallel for simd 6416 for (int i = 0; i < 10; ++i) { 6417 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6418 { 6419 bar(); 6420 } 6421 } 6422 #pragma omp target 6423 #pragma omp teams 6424 #pragma omp distribute parallel for simd 6425 for (int i = 0; i < 10; ++i) { 6426 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6427 { 6428 bar(); 6429 } 6430 } 6431 #pragma omp target 6432 #pragma omp teams 6433 #pragma omp distribute parallel for simd 6434 for (int i = 0; i < 10; ++i) { 6435 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6436 { 6437 bar(); 6438 } 6439 } 6440 #pragma omp target 6441 #pragma omp teams 6442 #pragma omp distribute parallel for simd 6443 for (int i = 0; i < 10; ++i) { 6444 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6445 { 6446 bar(); 6447 } 6448 } 6449 #pragma omp target 6450 #pragma omp teams 6451 #pragma omp distribute parallel for simd 6452 for (int i = 0; i < 10; ++i) { 6453 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6454 { 6455 #pragma omp single 6456 { 6457 bar(); 6458 } 6459 } 6460 } 6461 #pragma omp target 6462 #pragma omp teams 6463 #pragma omp distribute parallel for simd 6464 for (int i = 0; i < 10; ++i) { 6465 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6466 for (int i = 0; i < 10; ++i) 6467 ; 6468 } 6469 #pragma omp target 6470 #pragma omp teams 6471 #pragma omp distribute parallel for simd 6472 for (int i = 0; i < 10; ++i) { 6473 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6474 for (int i = 0; i < 10; ++i) 6475 ; 6476 } 6477 #pragma omp target 6478 #pragma omp teams 6479 #pragma omp distribute parallel for simd 6480 for (int i = 0; i < 10; ++i) { 6481 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6482 { 6483 bar(); 6484 } 6485 } 6486 #pragma omp target 6487 #pragma omp teams 6488 #pragma omp distribute parallel for simd 6489 for (int i = 0; i < 10; ++i) { 6490 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6491 { 6492 bar(); 6493 } 6494 } 6495 #pragma omp target 6496 #pragma omp teams 6497 #pragma omp distribute parallel for simd 6498 for (int i = 0; i < 10; ++i) { 6499 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6500 bar(); 6501 } 6502 #pragma omp target 6503 #pragma omp teams 6504 #pragma omp distribute parallel for simd 6505 for (int i = 0; i < 10; ++i) { 6506 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6507 bar(); 6508 } 6509 #pragma omp target 6510 #pragma omp teams 6511 #pragma omp distribute parallel for simd 6512 for (int i = 0; i < 10; ++i) { 6513 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 6514 bar(); 6515 } 6516 #pragma omp target 6517 #pragma omp teams 6518 #pragma omp distribute parallel for simd 6519 for (int i = 0; i < 10; ++i) { 6520 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6521 bar(); 6522 } 6523 #pragma omp target 6524 #pragma omp teams 6525 #pragma omp distribute parallel for simd 6526 for (int i = 0; i < 10; ++i) { 6527 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6528 bar(); 6529 } 6530 #pragma omp target 6531 #pragma omp teams 6532 #pragma omp distribute parallel for simd 6533 for (int i = 0; i < 10; ++i) { 6534 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6535 bar(); 6536 } 6537 #pragma omp target 6538 #pragma omp teams 6539 #pragma omp distribute parallel for simd 6540 for (int i = 0; i < 10; ++i) { 6541 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6542 ++a; 6543 } 6544 #pragma omp target 6545 #pragma omp teams 6546 #pragma omp distribute parallel for simd 6547 for (int i = 0; i < 10; ++i) { 6548 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6549 ++a; 6550 } 6551 #pragma omp target 6552 #pragma omp teams 6553 #pragma omp distribute parallel for simd 6554 for (int i = 0; i < 10; ++i) { 6555 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6556 ++a; 6557 } 6558 #pragma omp target 6559 #pragma omp teams 6560 #pragma omp distribute parallel for simd 6561 for (int i = 0; i < 10; ++i) { 6562 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6563 for (int i = 0; i < 10; ++i) 6564 ; 6565 } 6566 #pragma omp target 6567 #pragma omp teams 6568 #pragma omp distribute parallel for simd 6569 for (int i = 0; i < 10; ++i) { 6570 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6571 ++a; 6572 } 6573 #pragma omp target 6574 #pragma omp teams 6575 #pragma omp distribute parallel for simd 6576 for (int i = 0; i < 10; ++i) { 6577 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6578 ++a; 6579 } 6580 #pragma omp target 6581 #pragma omp teams 6582 #pragma omp distribute parallel for simd 6583 for (int i = 0; i < 10; ++i) { 6584 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6585 ++a; 6586 } 6587 #pragma omp target 6588 #pragma omp teams 6589 #pragma omp distribute parallel for simd 6590 for (int i = 0; i < 10; ++i) { 6591 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6592 ++a; 6593 } 6594 #pragma omp target 6595 #pragma omp teams 6596 #pragma omp distribute parallel for simd 6597 for (int i = 0; i < 10; ++i) { 6598 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6599 for (int i = 0; i < 10; ++i) 6600 ++a; 6601 } 6602 #pragma omp target 6603 #pragma omp teams 6604 #pragma omp distribute parallel for simd 6605 for (int i = 0; i < 10; ++i) { 6606 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6607 for (int i = 0; i < 10; ++i) 6608 ++a; 6609 } 6610 #pragma omp target 6611 #pragma omp teams 6612 #pragma omp distribute parallel for simd 6613 for (int i = 0; i < 10; ++i) { 6614 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6615 for (int i = 0; i < 10; ++i) 6616 ++a; 6617 } 6618 #pragma omp target 6619 #pragma omp teams 6620 #pragma omp distribute parallel for simd 6621 for (int i = 0; i < 10; ++i) { 6622 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6623 for (int i = 0; i < 10; ++i) 6624 ++a; 6625 } 6626 #pragma omp target 6627 #pragma omp teams 6628 #pragma omp distribute parallel for simd 6629 for (int i = 0; i < 10; ++i) { 6630 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6631 for (int i = 0; i < 10; ++i) 6632 ++a; 6633 } 6634 #pragma omp target 6635 #pragma omp teams 6636 #pragma omp distribute parallel for simd 6637 for (int i = 0; i < 10; ++i) { 6638 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6639 for (int i = 0; i < 10; ++i) 6640 ++a; 6641 } 6642 #pragma omp target 6643 #pragma omp teams 6644 #pragma omp distribute parallel for simd 6645 for (int i = 0; i < 10; ++i) { 6646 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6647 ++a; 6648 } 6649 #pragma omp target 6650 #pragma omp teams 6651 #pragma omp distribute parallel for simd 6652 for (int i = 0; i < 10; ++i) { 6653 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6654 for (int i = 0; i < 10; ++i) 6655 ++a; 6656 } 6657 #pragma omp target 6658 #pragma omp teams 6659 #pragma omp distribute parallel for simd 6660 for (int i = 0; i < 10; ++i) { 6661 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6662 for (int i = 0; i < 10; ++i) 6663 ++a; 6664 } 6665 #pragma omp target 6666 #pragma omp teams 6667 #pragma omp distribute parallel for simd 6668 for (int i = 0; i < 10; ++i) { 6669 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6670 for (int i = 0; i < 10; ++i) 6671 ++a; 6672 } 6673 #pragma omp target 6674 #pragma omp teams 6675 #pragma omp distribute parallel for simd 6676 for (int i = 0; i < 10; ++i) { 6677 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6678 for (int i = 0; i < 10; ++i) 6679 ++a; 6680 } 6681 6682 // TARGET SIMD DIRECTIVE 6683 #pragma omp target simd 6684 for (int i = 0; i < 10; ++i) { 6685 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6686 for (int i = 0; i < 10; ++i) 6687 ; 6688 } 6689 #pragma omp target simd 6690 for (int i = 0; i < 10; ++i) { 6691 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6692 for (int i = 0; i < 10; ++i) 6693 ; 6694 } 6695 #pragma omp target simd 6696 for (int i = 0; i < 10; ++i) { 6697 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6698 for (int i = 0; i < 10; ++i) 6699 ; 6700 } 6701 #pragma omp target simd 6702 for (int i = 0; i < 10; ++i) { 6703 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6704 for (int i = 0; i < 10; ++i) 6705 ; 6706 } 6707 #pragma omp target simd 6708 for (int i = 0; i < 10; ++i) { 6709 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6710 for (int i = 0; i < 10; ++i) 6711 ; 6712 } 6713 #pragma omp target simd 6714 for (int i = 0; i < 10; ++i) { 6715 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6716 for (int i = 0; i < 10; ++i) 6717 ; 6718 } 6719 #pragma omp target simd 6720 for (int i = 0; i < 10; ++i) { 6721 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6722 { 6723 bar(); 6724 } 6725 } 6726 #pragma omp target simd 6727 for (int i = 0; i < 10; ++i) { 6728 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6729 { 6730 bar(); 6731 } 6732 } 6733 #pragma omp target simd 6734 for (int i = 0; i < 10; ++i) { 6735 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6736 { 6737 bar(); 6738 } 6739 } 6740 #pragma omp target simd 6741 for (int i = 0; i < 10; ++i) { 6742 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6743 { 6744 bar(); 6745 } 6746 } 6747 #pragma omp target simd 6748 for (int i = 0; i < 10; ++i) { 6749 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6750 { 6751 bar(); 6752 } 6753 } 6754 #pragma omp target simd 6755 for (int i = 0; i < 10; ++i) { 6756 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6757 { 6758 #pragma omp single 6759 { 6760 bar(); 6761 } 6762 } 6763 } 6764 #pragma omp target simd 6765 for (int i = 0; i < 10; ++i) { 6766 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6767 for (int i = 0; i < 10; ++i) 6768 ; 6769 } 6770 #pragma omp target simd 6771 for (int i = 0; i < 10; ++i) { 6772 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6773 for (int i = 0; i < 10; ++i) 6774 ; 6775 } 6776 #pragma omp target simd 6777 for (int i = 0; i < 10; ++i) { 6778 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6779 { 6780 bar(); 6781 } 6782 } 6783 #pragma omp target simd 6784 for (int i = 0; i < 10; ++i) { 6785 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6786 { 6787 bar(); 6788 } 6789 } 6790 #pragma omp target simd 6791 for (int i = 0; i < 10; ++i) { 6792 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6793 bar(); 6794 } 6795 #pragma omp target simd 6796 for (int i = 0; i < 10; ++i) { 6797 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6798 bar(); 6799 } 6800 #pragma omp target simd 6801 for (int i = 0; i < 10; ++i) { 6802 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 6803 bar(); 6804 } 6805 #pragma omp target simd 6806 for (int i = 0; i < 10; ++i) { 6807 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6808 bar(); 6809 } 6810 #pragma omp target simd 6811 for (int i = 0; i < 10; ++i) { 6812 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6813 bar(); 6814 } 6815 #pragma omp target simd 6816 for (int i = 0; i < 10; ++i) { 6817 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6818 bar(); 6819 } 6820 #pragma omp target simd 6821 for (int i = 0; i < 10; ++i) { 6822 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6823 ++a; 6824 } 6825 #pragma omp target simd 6826 for (int i = 0; i < 10; ++i) { 6827 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6828 ++a; 6829 } 6830 #pragma omp target simd 6831 for (int i = 0; i < 10; ++i) { 6832 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6833 ++a; 6834 } 6835 #pragma omp target simd 6836 for (int i = 0; i < 10; ++i) { 6837 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6838 for (int i = 0; i < 10; ++i) 6839 ; 6840 } 6841 #pragma omp target simd 6842 for (int i = 0; i < 10; ++i) { 6843 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6844 ++a; 6845 } 6846 #pragma omp target simd 6847 for (int i = 0; i < 10; ++i) { 6848 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6849 ++a; 6850 } 6851 #pragma omp target simd 6852 for (int i = 0; i < 10; ++i) { 6853 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6854 ++a; 6855 } 6856 #pragma omp target simd 6857 for (int i = 0; i < 10; ++i) { 6858 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6859 ++a; 6860 } 6861 #pragma omp target simd 6862 for (int i = 0; i < 10; ++i) { 6863 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6864 for (int i = 0; i < 10; ++i) 6865 ++a; 6866 } 6867 #pragma omp target simd 6868 for (int i = 0; i < 10; ++i) { 6869 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6870 for (int i = 0; i < 10; ++i) 6871 ++a; 6872 } 6873 #pragma omp target simd 6874 for (int i = 0; i < 10; ++i) { 6875 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6876 for (int i = 0; i < 10; ++i) 6877 ++a; 6878 } 6879 #pragma omp target simd 6880 for (int i = 0; i < 10; ++i) { 6881 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6882 for (int i = 0; i < 10; ++i) 6883 ++a; 6884 } 6885 #pragma omp target simd 6886 for (int i = 0; i < 10; ++i) { 6887 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6888 for (int i = 0; i < 10; ++i) 6889 ++a; 6890 } 6891 #pragma omp target simd 6892 for (int i = 0; i < 10; ++i) { 6893 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6894 for (int i = 0; i < 10; ++i) 6895 ++a; 6896 } 6897 #pragma omp target simd 6898 for (int i = 0; i < 10; ++i) { 6899 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6900 for (int i = 0; i < 10; ++i) 6901 ++a; 6902 } 6903 #pragma omp target simd 6904 for (int i = 0; i < 10; ++i) { 6905 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6906 for (int i = 0; i < 10; ++i) 6907 ++a; 6908 } 6909 6910 // TEAMS DISTRIBUTE DIRECTIVE 6911 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6912 for (int i = 0; i < 10; ++i) 6913 ; 6914 #pragma omp target 6915 #pragma omp teams distribute 6916 for (int i = 0; i < 10; ++i) { 6917 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 6918 for (int i = 0; i < 10; ++i) 6919 ; 6920 } 6921 #pragma omp target 6922 #pragma omp teams distribute 6923 for (int i = 0; i < 10; ++i) { 6924 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 6925 for (int i = 0; i < 10; ++i) 6926 ; 6927 } 6928 #pragma omp target 6929 #pragma omp teams distribute 6930 for (int i = 0; i < 10; ++i) { 6931 #pragma omp for // OK 6932 for (int i = 0; i < 10; ++i) 6933 ; 6934 } 6935 #pragma omp target 6936 #pragma omp teams distribute 6937 for (int i = 0; i < 10; ++i) { 6938 #pragma omp simd // OK 6939 for (int i = 0; i < 10; ++i) 6940 ; 6941 } 6942 #pragma omp target 6943 #pragma omp teams distribute 6944 for (int i = 0; i < 10; ++i) { 6945 #pragma omp for simd // OK 6946 for (int i = 0; i < 10; ++i) 6947 ; 6948 } 6949 #pragma omp target 6950 #pragma omp teams distribute 6951 for (int i = 0; i < 10; ++i) { 6952 #pragma omp parallel // OK 6953 for (int i = 0; i < 10; ++i) 6954 ; 6955 } 6956 #pragma omp target 6957 #pragma omp teams distribute 6958 for (int i = 0; i < 10; ++i) { 6959 #pragma omp sections // OK 6960 { 6961 bar(); 6962 } 6963 } 6964 #pragma omp target 6965 #pragma omp teams distribute 6966 for (int i = 0; i < 10; ++i) { 6967 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6968 { 6969 bar(); 6970 } 6971 } 6972 #pragma omp target 6973 #pragma omp teams distribute 6974 for (int i = 0; i < 10; ++i) { 6975 #pragma omp single // OK 6976 { 6977 bar(); 6978 } 6979 } 6980 #pragma omp target 6981 #pragma omp teams distribute 6982 for (int i = 0; i < 10; ++i) { 6983 #pragma omp master // OK 6984 { 6985 bar(); 6986 } 6987 } 6988 #pragma omp target 6989 #pragma omp teams distribute 6990 for (int i = 0; i < 10; ++i) { 6991 #pragma omp critical // OK 6992 { 6993 bar(); 6994 } 6995 } 6996 #pragma omp target 6997 #pragma omp teams distribute 6998 for (int i = 0; i < 10; ++i) { 6999 #pragma omp parallel // OK 7000 { 7001 #pragma omp single 7002 { 7003 bar(); 7004 } 7005 } 7006 } 7007 #pragma omp target 7008 #pragma omp teams distribute 7009 for (int i = 0; i < 10; ++i) { 7010 #pragma omp parallel for // OK 7011 for (int i = 0; i < 10; ++i) 7012 ; 7013 } 7014 #pragma omp target 7015 #pragma omp teams distribute 7016 for (int i = 0; i < 10; ++i) { 7017 #pragma omp parallel for simd // OK 7018 for (int i = 0; i < 10; ++i) 7019 ; 7020 } 7021 #pragma omp target 7022 #pragma omp teams distribute 7023 for (int i = 0; i < 10; ++i) { 7024 #pragma omp parallel sections // OK 7025 { 7026 bar(); 7027 } 7028 } 7029 #pragma omp target 7030 #pragma omp teams distribute 7031 for (int i = 0; i < 10; ++i) { 7032 #pragma omp task // OK 7033 { 7034 bar(); 7035 } 7036 } 7037 #pragma omp target 7038 #pragma omp teams distribute 7039 for (int i = 0; i < 10; ++i) { 7040 #pragma omp taskyield // OK 7041 bar(); 7042 } 7043 #pragma omp target 7044 #pragma omp teams distribute 7045 for (int i = 0; i < 10; ++i) { 7046 #pragma omp barrier // OK 7047 bar(); 7048 } 7049 #pragma omp target 7050 #pragma omp teams distribute 7051 for (int i = 0; i < 10; ++i) { 7052 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7053 bar(); 7054 } 7055 #pragma omp target 7056 #pragma omp teams distribute 7057 for (int i = 0; i < 10; ++i) { 7058 #pragma omp taskwait // OK 7059 bar(); 7060 } 7061 #pragma omp target 7062 #pragma omp teams distribute 7063 for (int i = 0; i < 10; ++i) { 7064 #pragma omp flush // OK 7065 bar(); 7066 } 7067 #pragma omp target 7068 #pragma omp teams distribute 7069 for (int i = 0; i < 10; ++i) { 7070 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 7071 bar(); 7072 } 7073 #pragma omp target 7074 #pragma omp teams distribute 7075 for (int i = 0; i < 10; ++i) { 7076 #pragma omp atomic // OK 7077 ++a; 7078 } 7079 #pragma omp target 7080 #pragma omp teams distribute 7081 for (int i = 0; i < 10; ++i) { 7082 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7083 ++a; 7084 } 7085 #pragma omp target 7086 #pragma omp teams distribute 7087 for (int i = 0; i < 10; ++i) { 7088 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7089 ++a; 7090 } 7091 #pragma omp target 7092 #pragma omp teams distribute 7093 for (int i = 0; i < 10; ++i) { 7094 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7095 for (int i = 0; i < 10; ++i) 7096 ; 7097 } 7098 #pragma omp target 7099 #pragma omp teams distribute 7100 for (int i = 0; i < 10; ++i) { 7101 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7102 ++a; 7103 } 7104 #pragma omp target 7105 #pragma omp teams distribute 7106 for (int i = 0; i < 10; ++i) { 7107 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7108 ++a; 7109 } 7110 #pragma omp target 7111 #pragma omp teams distribute 7112 for (int i = 0; i < 10; ++i) { 7113 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 7114 ++a; 7115 } 7116 #pragma omp target 7117 #pragma omp teams distribute 7118 for (int i = 0; i < 10; ++i) { 7119 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7120 ++a; 7121 } 7122 #pragma omp target 7123 #pragma omp teams distribute 7124 for (int i = 0; i < 10; ++i) { 7125 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 7126 for (int i = 0; i < 10; ++i) 7127 ++a; 7128 } 7129 #pragma omp target 7130 #pragma omp teams distribute 7131 for (int i = 0; i < 10; ++i) { 7132 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7133 for (int i = 0; i < 10; ++i) 7134 ++a; 7135 } 7136 #pragma omp target 7137 #pragma omp teams distribute 7138 for (int i = 0; i < 10; ++i) { 7139 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 7140 for (int i = 0; i < 10; ++i) 7141 ++a; 7142 } 7143 #pragma omp target 7144 #pragma omp teams distribute 7145 for (int i = 0; i < 10; ++i) { 7146 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 7147 for (int i = 0; i < 10; ++i) 7148 ++a; 7149 } 7150 #pragma omp target 7151 #pragma omp teams distribute 7152 for (int i = 0; i < 10; ++i) { 7153 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 7154 for (int i = 0; i < 10; ++i) 7155 ++a; 7156 } 7157 #pragma omp target 7158 #pragma omp teams distribute 7159 for (int i = 0; i < 10; ++i) { 7160 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7161 for (int i = 0; i < 10; ++i) 7162 ++a; 7163 } 7164 #pragma omp target 7165 #pragma omp teams distribute 7166 for (int i = 0; i < 10; ++i) { 7167 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7168 for (int i = 0; i < 10; ++i) 7169 ++a; 7170 } 7171 #pragma omp target 7172 #pragma omp teams distribute 7173 for (int i = 0; i < 10; ++i) { 7174 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7175 for (int i = 0; i < 10; ++i) 7176 ++a; 7177 } 7178 7179 // TEAMS DISTRIBUTE DIRECTIVE 7180 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7181 for (int i = 0; i < 10; ++i) 7182 ; 7183 #pragma omp target 7184 #pragma omp teams distribute 7185 for (int i = 0; i < 10; ++i) { 7186 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 7187 for (int i = 0; i < 10; ++i) 7188 ; 7189 } 7190 #pragma omp target 7191 #pragma omp teams distribute 7192 for (int i = 0; i < 10; ++i) { 7193 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 7194 for (int i = 0; i < 10; ++i) 7195 ; 7196 } 7197 #pragma omp target 7198 #pragma omp teams distribute 7199 for (int i = 0; i < 10; ++i) { 7200 #pragma omp for // OK 7201 for (int i = 0; i < 10; ++i) 7202 ; 7203 } 7204 #pragma omp target 7205 #pragma omp teams distribute 7206 for (int i = 0; i < 10; ++i) { 7207 #pragma omp simd // OK 7208 for (int i = 0; i < 10; ++i) 7209 ; 7210 } 7211 #pragma omp target 7212 #pragma omp teams distribute 7213 for (int i = 0; i < 10; ++i) { 7214 #pragma omp for simd // OK 7215 for (int i = 0; i < 10; ++i) 7216 ; 7217 } 7218 #pragma omp target 7219 #pragma omp teams distribute 7220 for (int i = 0; i < 10; ++i) { 7221 #pragma omp parallel // OK 7222 for (int i = 0; i < 10; ++i) 7223 ; 7224 } 7225 #pragma omp target 7226 #pragma omp teams distribute 7227 for (int i = 0; i < 10; ++i) { 7228 #pragma omp sections // OK 7229 { 7230 bar(); 7231 } 7232 } 7233 #pragma omp target 7234 #pragma omp teams distribute 7235 for (int i = 0; i < 10; ++i) { 7236 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 7237 { 7238 bar(); 7239 } 7240 } 7241 #pragma omp target 7242 #pragma omp teams distribute 7243 for (int i = 0; i < 10; ++i) { 7244 #pragma omp single // OK 7245 { 7246 bar(); 7247 } 7248 } 7249 #pragma omp target 7250 #pragma omp teams distribute 7251 for (int i = 0; i < 10; ++i) { 7252 #pragma omp master // OK 7253 { 7254 bar(); 7255 } 7256 } 7257 #pragma omp target 7258 #pragma omp teams distribute 7259 for (int i = 0; i < 10; ++i) { 7260 #pragma omp critical // OK 7261 { 7262 bar(); 7263 } 7264 } 7265 #pragma omp target 7266 #pragma omp teams distribute 7267 for (int i = 0; i < 10; ++i) { 7268 #pragma omp parallel // OK 7269 { 7270 #pragma omp single 7271 { 7272 bar(); 7273 } 7274 } 7275 } 7276 #pragma omp target 7277 #pragma omp teams distribute 7278 for (int i = 0; i < 10; ++i) { 7279 #pragma omp parallel for // OK 7280 for (int i = 0; i < 10; ++i) 7281 ; 7282 } 7283 #pragma omp target 7284 #pragma omp teams distribute 7285 for (int i = 0; i < 10; ++i) { 7286 #pragma omp parallel for simd // OK 7287 for (int i = 0; i < 10; ++i) 7288 ; 7289 } 7290 #pragma omp target 7291 #pragma omp teams distribute 7292 for (int i = 0; i < 10; ++i) { 7293 #pragma omp parallel sections // OK 7294 { 7295 bar(); 7296 } 7297 } 7298 #pragma omp target 7299 #pragma omp teams distribute 7300 for (int i = 0; i < 10; ++i) { 7301 #pragma omp task // OK 7302 { 7303 bar(); 7304 } 7305 } 7306 #pragma omp target 7307 #pragma omp teams distribute 7308 for (int i = 0; i < 10; ++i) { 7309 #pragma omp taskyield // OK 7310 bar(); 7311 } 7312 #pragma omp target 7313 #pragma omp teams distribute 7314 for (int i = 0; i < 10; ++i) { 7315 #pragma omp barrier // OK 7316 bar(); 7317 } 7318 #pragma omp target 7319 #pragma omp teams distribute 7320 for (int i = 0; i < 10; ++i) { 7321 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7322 bar(); 7323 } 7324 #pragma omp target 7325 #pragma omp teams distribute 7326 for (int i = 0; i < 10; ++i) { 7327 #pragma omp taskwait // OK 7328 bar(); 7329 } 7330 #pragma omp target 7331 #pragma omp teams distribute 7332 for (int i = 0; i < 10; ++i) { 7333 #pragma omp flush // OK 7334 bar(); 7335 } 7336 #pragma omp target 7337 #pragma omp teams distribute 7338 for (int i = 0; i < 10; ++i) { 7339 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 7340 bar(); 7341 } 7342 #pragma omp target 7343 #pragma omp teams distribute 7344 for (int i = 0; i < 10; ++i) { 7345 #pragma omp atomic // OK 7346 ++a; 7347 } 7348 #pragma omp target 7349 #pragma omp teams distribute 7350 for (int i = 0; i < 10; ++i) { 7351 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7352 ++a; 7353 } 7354 #pragma omp target 7355 #pragma omp teams distribute 7356 for (int i = 0; i < 10; ++i) { 7357 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7358 ++a; 7359 } 7360 #pragma omp target 7361 #pragma omp teams distribute 7362 for (int i = 0; i < 10; ++i) { 7363 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7364 for (int i = 0; i < 10; ++i) 7365 ; 7366 } 7367 #pragma omp target 7368 #pragma omp teams distribute 7369 for (int i = 0; i < 10; ++i) { 7370 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7371 ++a; 7372 } 7373 #pragma omp target 7374 #pragma omp teams distribute 7375 for (int i = 0; i < 10; ++i) { 7376 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7377 ++a; 7378 } 7379 #pragma omp target 7380 #pragma omp teams distribute 7381 for (int i = 0; i < 10; ++i) { 7382 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 7383 ++a; 7384 } 7385 #pragma omp target 7386 #pragma omp teams distribute 7387 for (int i = 0; i < 10; ++i) { 7388 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7389 ++a; 7390 } 7391 #pragma omp target 7392 #pragma omp teams distribute 7393 for (int i = 0; i < 10; ++i) { 7394 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 7395 for (int i = 0; i < 10; ++i) 7396 ++a; 7397 } 7398 #pragma omp target 7399 #pragma omp teams distribute 7400 for (int i = 0; i < 10; ++i) { 7401 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7402 for (int i = 0; i < 10; ++i) 7403 ++a; 7404 } 7405 #pragma omp target 7406 #pragma omp teams distribute 7407 for (int i = 0; i < 10; ++i) { 7408 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 7409 for (int i = 0; i < 10; ++i) 7410 ++a; 7411 } 7412 #pragma omp target 7413 #pragma omp teams distribute 7414 for (int i = 0; i < 10; ++i) { 7415 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 7416 for (int i = 0; i < 10; ++i) 7417 ++a; 7418 } 7419 #pragma omp target 7420 #pragma omp teams distribute 7421 for (int i = 0; i < 10; ++i) { 7422 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 7423 for (int i = 0; i < 10; ++i) 7424 ++a; 7425 } 7426 #pragma omp target 7427 #pragma omp teams distribute 7428 for (int i = 0; i < 10; ++i) { 7429 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 7430 for (int i = 0; i < 10; ++i) 7431 ++a; 7432 } 7433 #pragma omp target 7434 #pragma omp teams distribute 7435 for (int i = 0; i < 10; ++i) { 7436 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7437 ++a; 7438 } 7439 #pragma omp target 7440 #pragma omp teams distribute 7441 for (int i = 0; i < 10; ++i) { 7442 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7443 for (int i = 0; i < 10; ++i) 7444 ++a; 7445 } 7446 #pragma omp target 7447 #pragma omp teams distribute 7448 for (int i = 0; i < 10; ++i) { 7449 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7450 for (int i = 0; i < 10; ++i) 7451 ++a; 7452 } 7453 #pragma omp target 7454 #pragma omp teams distribute 7455 for (int i = 0; i < 10; ++i) { 7456 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7457 for (int i = 0; i < 10; ++i) 7458 ++a; 7459 } 7460 #pragma omp target 7461 #pragma omp teams distribute 7462 for (int i = 0; i < 10; ++i) { 7463 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7464 for (int i = 0; i < 10; ++i) 7465 ++a; 7466 } 7467 7468 // TEAMS DISTRIBUTE SIMD DIRECTIVE 7469 #pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7470 for (int i = 0; i < 10; ++i) 7471 ; 7472 #pragma omp target 7473 #pragma omp teams distribute simd 7474 for (int i = 0; i < 10; ++i) { 7475 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7476 for (int i = 0; i < 10; ++i) 7477 ; 7478 } 7479 #pragma omp target 7480 #pragma omp teams distribute simd 7481 for (int i = 0; i < 10; ++i) { 7482 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7483 for (int i = 0; i < 10; ++i) 7484 ; 7485 } 7486 #pragma omp target 7487 #pragma omp teams distribute simd 7488 for (int i = 0; i < 10; ++i) { 7489 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7490 for (int i = 0; i < 10; ++i) 7491 ; 7492 } 7493 #pragma omp target 7494 #pragma omp teams distribute simd 7495 for (int i = 0; i < 10; ++i) { 7496 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7497 for (int i = 0; i < 10; ++i) 7498 ; 7499 } 7500 #pragma omp target 7501 #pragma omp teams distribute simd 7502 for (int i = 0; i < 10; ++i) { 7503 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7504 for (int i = 0; i < 10; ++i) 7505 ; 7506 } 7507 #pragma omp target 7508 #pragma omp teams distribute simd 7509 for (int i = 0; i < 10; ++i) { 7510 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7511 for (int i = 0; i < 10; ++i) 7512 ; 7513 } 7514 #pragma omp target 7515 #pragma omp teams distribute simd 7516 for (int i = 0; i < 10; ++i) { 7517 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7518 { 7519 bar(); 7520 } 7521 } 7522 #pragma omp target 7523 #pragma omp teams distribute simd 7524 for (int i = 0; i < 10; ++i) { 7525 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7526 { 7527 bar(); 7528 } 7529 } 7530 #pragma omp target 7531 #pragma omp teams distribute simd 7532 for (int i = 0; i < 10; ++i) { 7533 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7534 { 7535 bar(); 7536 } 7537 } 7538 #pragma omp target 7539 #pragma omp teams distribute simd 7540 for (int i = 0; i < 10; ++i) { 7541 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7542 { 7543 bar(); 7544 } 7545 } 7546 #pragma omp target 7547 #pragma omp teams distribute simd 7548 for (int i = 0; i < 10; ++i) { 7549 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7550 { 7551 bar(); 7552 } 7553 } 7554 #pragma omp target 7555 #pragma omp teams distribute simd 7556 for (int i = 0; i < 10; ++i) { 7557 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7558 { 7559 #pragma omp single 7560 { 7561 bar(); 7562 } 7563 } 7564 } 7565 #pragma omp target 7566 #pragma omp teams distribute simd 7567 for (int i = 0; i < 10; ++i) { 7568 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7569 for (int i = 0; i < 10; ++i) 7570 ; 7571 } 7572 #pragma omp target 7573 #pragma omp teams distribute simd 7574 for (int i = 0; i < 10; ++i) { 7575 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7576 for (int i = 0; i < 10; ++i) 7577 ; 7578 } 7579 #pragma omp target 7580 #pragma omp teams distribute simd 7581 for (int i = 0; i < 10; ++i) { 7582 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7583 { 7584 bar(); 7585 } 7586 } 7587 #pragma omp target 7588 #pragma omp teams distribute simd 7589 for (int i = 0; i < 10; ++i) { 7590 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7591 { 7592 bar(); 7593 } 7594 } 7595 #pragma omp target 7596 #pragma omp teams distribute simd 7597 for (int i = 0; i < 10; ++i) { 7598 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7599 bar(); 7600 } 7601 #pragma omp target 7602 #pragma omp teams distribute simd 7603 for (int i = 0; i < 10; ++i) { 7604 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7605 bar(); 7606 } 7607 #pragma omp target 7608 #pragma omp teams distribute simd 7609 for (int i = 0; i < 10; ++i) { 7610 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7611 bar(); 7612 } 7613 #pragma omp target 7614 #pragma omp teams distribute simd 7615 for (int i = 0; i < 10; ++i) { 7616 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7617 bar(); 7618 } 7619 #pragma omp target 7620 #pragma omp teams distribute simd 7621 for (int i = 0; i < 10; ++i) { 7622 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7623 bar(); 7624 } 7625 #pragma omp target 7626 #pragma omp teams distribute simd 7627 for (int i = 0; i < 10; ++i) { 7628 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7629 bar(); 7630 } 7631 #pragma omp target 7632 #pragma omp teams distribute simd 7633 for (int i = 0; i < 10; ++i) { 7634 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7635 ++a; 7636 } 7637 #pragma omp target 7638 #pragma omp teams distribute simd 7639 for (int i = 0; i < 10; ++i) { 7640 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7641 ++a; 7642 } 7643 #pragma omp target 7644 #pragma omp teams distribute simd 7645 for (int i = 0; i < 10; ++i) { 7646 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7647 ++a; 7648 } 7649 #pragma omp target 7650 #pragma omp teams distribute simd 7651 for (int i = 0; i < 10; ++i) { 7652 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7653 for (int i = 0; i < 10; ++i) 7654 ; 7655 } 7656 #pragma omp target 7657 #pragma omp teams distribute simd 7658 for (int i = 0; i < 10; ++i) { 7659 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7660 ++a; 7661 } 7662 #pragma omp target 7663 #pragma omp teams distribute simd 7664 for (int i = 0; i < 10; ++i) { 7665 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7666 ++a; 7667 } 7668 #pragma omp target 7669 #pragma omp teams distribute simd 7670 for (int i = 0; i < 10; ++i) { 7671 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7672 ++a; 7673 } 7674 #pragma omp target 7675 #pragma omp teams distribute simd 7676 for (int i = 0; i < 10; ++i) { 7677 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7678 ++a; 7679 } 7680 #pragma omp target 7681 #pragma omp teams distribute simd 7682 for (int i = 0; i < 10; ++i) { 7683 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7684 for (int i = 0; i < 10; ++i) 7685 ++a; 7686 } 7687 #pragma omp target 7688 #pragma omp teams distribute simd 7689 for (int i = 0; i < 10; ++i) { 7690 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7691 for (int i = 0; i < 10; ++i) 7692 ++a; 7693 } 7694 #pragma omp target 7695 #pragma omp teams distribute simd 7696 for (int i = 0; i < 10; ++i) { 7697 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7698 for (int i = 0; i < 10; ++i) 7699 ++a; 7700 } 7701 #pragma omp target 7702 #pragma omp teams distribute simd 7703 for (int i = 0; i < 10; ++i) { 7704 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7705 for (int i = 0; i < 10; ++i) 7706 ++a; 7707 } 7708 #pragma omp target 7709 #pragma omp teams distribute simd 7710 for (int i = 0; i < 10; ++i) { 7711 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7712 for (int i = 0; i < 10; ++i) 7713 ++a; 7714 } 7715 #pragma omp target 7716 #pragma omp teams distribute simd 7717 for (int i = 0; i < 10; ++i) { 7718 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7719 for (int i = 0; i < 10; ++i) 7720 ++a; 7721 } 7722 #pragma omp target 7723 #pragma omp teams distribute simd 7724 for (int i = 0; i < 10; ++i) { 7725 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7726 ++a; 7727 } 7728 #pragma omp target 7729 #pragma omp teams distribute simd 7730 for (int i = 0; i < 10; ++i) { 7731 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7732 for (int i = 0; i < 10; ++i) 7733 ++a; 7734 } 7735 #pragma omp target 7736 #pragma omp teams distribute simd 7737 for (int i = 0; i < 10; ++i) { 7738 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7739 for (int i = 0; i < 10; ++i) 7740 ++a; 7741 } 7742 #pragma omp target 7743 #pragma omp teams distribute simd 7744 for (int i = 0; i < 10; ++i) { 7745 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7746 for (int i = 0; i < 10; ++i) 7747 ++a; 7748 } 7749 #pragma omp target 7750 #pragma omp teams distribute simd 7751 for (int i = 0; i < 10; ++i) { 7752 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7753 for (int i = 0; i < 10; ++i) 7754 ++a; 7755 } 7756 7757 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 7758 #pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7759 for (int i = 0; i < 10; ++i) 7760 ; 7761 #pragma omp target 7762 #pragma omp teams distribute parallel for simd 7763 for (int i = 0; i < 10; ++i) { 7764 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7765 for (int i = 0; i < 10; ++i) 7766 ; 7767 } 7768 #pragma omp target 7769 #pragma omp teams distribute parallel for simd 7770 for (int i = 0; i < 10; ++i) { 7771 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7772 for (int i = 0; i < 10; ++i) 7773 ; 7774 } 7775 #pragma omp target 7776 #pragma omp teams distribute parallel for simd 7777 for (int i = 0; i < 10; ++i) { 7778 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7779 for (int i = 0; i < 10; ++i) 7780 ; 7781 } 7782 #pragma omp target 7783 #pragma omp teams distribute parallel for simd 7784 for (int i = 0; i < 10; ++i) { 7785 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7786 for (int i = 0; i < 10; ++i) 7787 ; 7788 } 7789 #pragma omp target 7790 #pragma omp teams distribute parallel for simd 7791 for (int i = 0; i < 10; ++i) { 7792 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7793 for (int i = 0; i < 10; ++i) 7794 ; 7795 } 7796 #pragma omp target 7797 #pragma omp teams distribute parallel for simd 7798 for (int i = 0; i < 10; ++i) { 7799 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7800 for (int i = 0; i < 10; ++i) 7801 ; 7802 } 7803 #pragma omp target 7804 #pragma omp teams distribute parallel for simd 7805 for (int i = 0; i < 10; ++i) { 7806 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7807 { 7808 bar(); 7809 } 7810 } 7811 #pragma omp target 7812 #pragma omp teams distribute parallel for simd 7813 for (int i = 0; i < 10; ++i) { 7814 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7815 { 7816 bar(); 7817 } 7818 } 7819 #pragma omp target 7820 #pragma omp teams distribute parallel for simd 7821 for (int i = 0; i < 10; ++i) { 7822 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7823 { 7824 bar(); 7825 } 7826 } 7827 #pragma omp target 7828 #pragma omp teams distribute parallel for simd 7829 for (int i = 0; i < 10; ++i) { 7830 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7831 { 7832 bar(); 7833 } 7834 } 7835 #pragma omp target 7836 #pragma omp teams distribute parallel for simd 7837 for (int i = 0; i < 10; ++i) { 7838 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7839 { 7840 bar(); 7841 } 7842 } 7843 #pragma omp target 7844 #pragma omp teams distribute parallel for simd 7845 for (int i = 0; i < 10; ++i) { 7846 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7847 { 7848 #pragma omp single 7849 { 7850 bar(); 7851 } 7852 } 7853 } 7854 #pragma omp target 7855 #pragma omp teams distribute parallel for simd 7856 for (int i = 0; i < 10; ++i) { 7857 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7858 for (int i = 0; i < 10; ++i) 7859 ; 7860 } 7861 #pragma omp target 7862 #pragma omp teams distribute parallel for simd 7863 for (int i = 0; i < 10; ++i) { 7864 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7865 for (int i = 0; i < 10; ++i) 7866 ; 7867 } 7868 #pragma omp target 7869 #pragma omp teams distribute parallel for simd 7870 for (int i = 0; i < 10; ++i) { 7871 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7872 { 7873 bar(); 7874 } 7875 } 7876 #pragma omp target 7877 #pragma omp teams distribute parallel for simd 7878 for (int i = 0; i < 10; ++i) { 7879 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7880 { 7881 bar(); 7882 } 7883 } 7884 #pragma omp target 7885 #pragma omp teams distribute parallel for simd 7886 for (int i = 0; i < 10; ++i) { 7887 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7888 bar(); 7889 } 7890 #pragma omp target 7891 #pragma omp teams distribute parallel for simd 7892 for (int i = 0; i < 10; ++i) { 7893 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7894 bar(); 7895 } 7896 #pragma omp target 7897 #pragma omp teams distribute parallel for simd 7898 for (int i = 0; i < 10; ++i) { 7899 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7900 bar(); 7901 } 7902 #pragma omp target 7903 #pragma omp teams distribute parallel for simd 7904 for (int i = 0; i < 10; ++i) { 7905 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7906 bar(); 7907 } 7908 #pragma omp target 7909 #pragma omp teams distribute parallel for simd 7910 for (int i = 0; i < 10; ++i) { 7911 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7912 bar(); 7913 } 7914 #pragma omp target 7915 #pragma omp teams distribute parallel for simd 7916 for (int i = 0; i < 10; ++i) { 7917 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7918 bar(); 7919 } 7920 #pragma omp target 7921 #pragma omp teams distribute parallel for simd 7922 for (int i = 0; i < 10; ++i) { 7923 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7924 ++a; 7925 } 7926 #pragma omp target 7927 #pragma omp teams distribute parallel for simd 7928 for (int i = 0; i < 10; ++i) { 7929 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7930 ++a; 7931 } 7932 #pragma omp target 7933 #pragma omp teams distribute parallel for simd 7934 for (int i = 0; i < 10; ++i) { 7935 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7936 ++a; 7937 } 7938 #pragma omp target 7939 #pragma omp teams distribute parallel for simd 7940 for (int i = 0; i < 10; ++i) { 7941 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7942 for (int i = 0; i < 10; ++i) 7943 ; 7944 } 7945 #pragma omp target 7946 #pragma omp teams distribute parallel for simd 7947 for (int i = 0; i < 10; ++i) { 7948 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7949 ++a; 7950 } 7951 #pragma omp target 7952 #pragma omp teams distribute parallel for simd 7953 for (int i = 0; i < 10; ++i) { 7954 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7955 ++a; 7956 } 7957 #pragma omp target 7958 #pragma omp teams distribute parallel for simd 7959 for (int i = 0; i < 10; ++i) { 7960 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7961 ++a; 7962 } 7963 #pragma omp target 7964 #pragma omp teams distribute parallel for simd 7965 for (int i = 0; i < 10; ++i) { 7966 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7967 ++a; 7968 } 7969 #pragma omp target 7970 #pragma omp teams distribute parallel for simd 7971 for (int i = 0; i < 10; ++i) { 7972 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7973 for (int i = 0; i < 10; ++i) 7974 ++a; 7975 } 7976 #pragma omp target 7977 #pragma omp teams distribute parallel for simd 7978 for (int i = 0; i < 10; ++i) { 7979 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7980 for (int i = 0; i < 10; ++i) 7981 ++a; 7982 } 7983 #pragma omp target 7984 #pragma omp teams distribute parallel for simd 7985 for (int i = 0; i < 10; ++i) { 7986 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7987 for (int i = 0; i < 10; ++i) 7988 ++a; 7989 } 7990 #pragma omp target 7991 #pragma omp teams distribute parallel for simd 7992 for (int i = 0; i < 10; ++i) { 7993 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7994 for (int i = 0; i < 10; ++i) 7995 ++a; 7996 } 7997 #pragma omp target 7998 #pragma omp teams distribute parallel for simd 7999 for (int i = 0; i < 10; ++i) { 8000 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8001 for (int i = 0; i < 10; ++i) 8002 ++a; 8003 } 8004 #pragma omp target 8005 #pragma omp teams distribute parallel for simd 8006 for (int i = 0; i < 10; ++i) { 8007 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8008 for (int i = 0; i < 10; ++i) 8009 ++a; 8010 } 8011 #pragma omp target 8012 #pragma omp teams distribute parallel for simd 8013 for (int i = 0; i < 10; ++i) { 8014 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8015 ++a; 8016 } 8017 #pragma omp target 8018 #pragma omp teams distribute parallel for simd 8019 for (int i = 0; i < 10; ++i) { 8020 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8021 for (int i = 0; i < 10; ++i) 8022 ++a; 8023 } 8024 #pragma omp target 8025 #pragma omp teams distribute parallel for simd 8026 for (int i = 0; i < 10; ++i) { 8027 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8028 for (int i = 0; i < 10; ++i) 8029 ++a; 8030 } 8031 #pragma omp target 8032 #pragma omp teams distribute parallel for simd 8033 for (int i = 0; i < 10; ++i) { 8034 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8035 for (int i = 0; i < 10; ++i) 8036 ++a; 8037 } 8038 #pragma omp target 8039 #pragma omp teams distribute parallel for simd 8040 for (int i = 0; i < 10; ++i) { 8041 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8042 for (int i = 0; i < 10; ++i) 8043 ++a; 8044 } 8045 8046 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8047 #pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 8048 for (int i = 0; i < 10; ++i) 8049 ; 8050 #pragma omp target 8051 #pragma omp teams distribute parallel for 8052 for (int i = 0; i < 10; ++i) { 8053 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 8054 for (int i = 0; i < 10; ++i) 8055 ; 8056 } 8057 #pragma omp target 8058 #pragma omp teams distribute parallel for 8059 for (int i = 0; i < 10; ++i) { 8060 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 8061 for (int i = 0; i < 10; ++i) 8062 ; 8063 } 8064 #pragma omp target 8065 #pragma omp teams distribute parallel for 8066 for (int i = 0; i < 10; ++i) { 8067 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 8068 for (int i = 0; i < 10; ++i) 8069 ; 8070 } 8071 #pragma omp target 8072 #pragma omp teams distribute parallel for 8073 for (int i = 0; i < 10; ++i) { 8074 #pragma omp simd // OK 8075 for (int i = 0; i < 10; ++i) 8076 ; 8077 } 8078 #pragma omp target 8079 #pragma omp teams distribute parallel for 8080 for (int i = 0; i < 10; ++i) { 8081 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 8082 for (int i = 0; i < 10; ++i) 8083 ; 8084 } 8085 #pragma omp target 8086 #pragma omp teams distribute parallel for 8087 for (int i = 0; i < 10; ++i) { 8088 #pragma omp parallel // OK 8089 for (int i = 0; i < 10; ++i) 8090 ; 8091 } 8092 #pragma omp target 8093 #pragma omp teams distribute parallel for 8094 for (int i = 0; i < 10; ++i) { 8095 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 8096 { 8097 bar(); 8098 } 8099 } 8100 #pragma omp target 8101 #pragma omp teams distribute parallel for 8102 for (int i = 0; i < 10; ++i) { 8103 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 8104 { 8105 bar(); 8106 } 8107 } 8108 #pragma omp target 8109 #pragma omp teams distribute parallel for 8110 for (int i = 0; i < 10; ++i) { 8111 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 8112 { 8113 bar(); 8114 } 8115 } 8116 #pragma omp target 8117 #pragma omp teams distribute parallel for 8118 for (int i = 0; i < 10; ++i) { 8119 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8120 { 8121 bar(); 8122 } 8123 } 8124 #pragma omp target 8125 #pragma omp teams distribute parallel for 8126 for (int i = 0; i < 10; ++i) { 8127 #pragma omp critical // OK 8128 { 8129 bar(); 8130 } 8131 } 8132 #pragma omp target 8133 #pragma omp teams distribute parallel for 8134 for (int i = 0; i < 10; ++i) { 8135 #pragma omp parallel // OK 8136 { 8137 #pragma omp single 8138 { 8139 bar(); 8140 } 8141 } 8142 } 8143 #pragma omp target 8144 #pragma omp teams distribute parallel for 8145 for (int i = 0; i < 10; ++i) { 8146 #pragma omp parallel for // OK 8147 for (int i = 0; i < 10; ++i) 8148 ; 8149 } 8150 #pragma omp target 8151 #pragma omp teams distribute parallel for 8152 for (int i = 0; i < 10; ++i) { 8153 #pragma omp parallel for simd // OK 8154 for (int i = 0; i < 10; ++i) 8155 ; 8156 } 8157 #pragma omp target 8158 #pragma omp teams distribute parallel for 8159 for (int i = 0; i < 10; ++i) { 8160 #pragma omp parallel sections // OK 8161 { 8162 bar(); 8163 } 8164 } 8165 #pragma omp target 8166 #pragma omp teams distribute parallel for 8167 for (int i = 0; i < 10; ++i) { 8168 #pragma omp task // OK 8169 { 8170 bar(); 8171 } 8172 } 8173 #pragma omp target 8174 #pragma omp teams distribute parallel for 8175 for (int i = 0; i < 10; ++i) { 8176 #pragma omp taskyield // OK 8177 bar(); 8178 } 8179 #pragma omp target 8180 #pragma omp teams distribute parallel for 8181 for (int i = 0; i < 10; ++i) { 8182 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8183 bar(); 8184 } 8185 #pragma omp target 8186 #pragma omp teams distribute parallel for 8187 for (int i = 0; i < 10; ++i) { 8188 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8189 bar(); 8190 } 8191 #pragma omp target 8192 #pragma omp teams distribute parallel for 8193 for (int i = 0; i < 10; ++i) { 8194 #pragma omp taskwait // OK 8195 bar(); 8196 } 8197 #pragma omp target 8198 #pragma omp teams distribute parallel for 8199 for (int i = 0; i < 10; ++i) { 8200 #pragma omp flush // OK 8201 bar(); 8202 } 8203 #pragma omp target 8204 #pragma omp teams distribute parallel for 8205 for (int i = 0; i < 10; ++i) { 8206 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 8207 bar(); 8208 } 8209 #pragma omp target 8210 #pragma omp teams distribute parallel for 8211 for (int i = 0; i < 10; ++i) { 8212 #pragma omp atomic // OK 8213 ++a; 8214 } 8215 #pragma omp target 8216 #pragma omp teams distribute parallel for 8217 for (int i = 0; i < 10; ++i) { 8218 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 8219 ++a; 8220 } 8221 #pragma omp target 8222 #pragma omp teams distribute parallel for 8223 for (int i = 0; i < 10; ++i) { 8224 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 8225 ++a; 8226 } 8227 #pragma omp target 8228 #pragma omp teams distribute parallel for 8229 for (int i = 0; i < 10; ++i) { 8230 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 8231 for (int i = 0; i < 10; ++i) 8232 ; 8233 } 8234 #pragma omp target 8235 #pragma omp teams distribute parallel for 8236 for (int i = 0; i < 10; ++i) { 8237 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 8238 ++a; 8239 } 8240 #pragma omp target 8241 #pragma omp teams distribute parallel for 8242 for (int i = 0; i < 10; ++i) { 8243 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 8244 ++a; 8245 } 8246 #pragma omp target 8247 #pragma omp teams distribute parallel for 8248 for (int i = 0; i < 10; ++i) { 8249 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 8250 ++a; 8251 } 8252 #pragma omp target 8253 #pragma omp teams distribute parallel for 8254 for (int i = 0; i < 10; ++i) { 8255 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 8256 ++a; 8257 } 8258 #pragma omp target 8259 #pragma omp teams distribute parallel for 8260 for (int i = 0; i < 10; ++i) { 8261 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 8262 for (int i = 0; i < 10; ++i) 8263 ++a; 8264 } 8265 #pragma omp target 8266 #pragma omp teams distribute parallel for 8267 for (int i = 0; i < 10; ++i) { 8268 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 8269 for (int i = 0; i < 10; ++i) 8270 ++a; 8271 } 8272 #pragma omp target 8273 #pragma omp teams distribute parallel for 8274 for (int i = 0; i < 10; ++i) { 8275 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 8276 for (int i = 0; i < 10; ++i) 8277 ++a; 8278 } 8279 #pragma omp target 8280 #pragma omp teams distribute parallel for 8281 for (int i = 0; i < 10; ++i) { 8282 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 8283 for (int i = 0; i < 10; ++i) 8284 ++a; 8285 } 8286 #pragma omp target 8287 #pragma omp teams distribute parallel for 8288 for (int i = 0; i < 10; ++i) { 8289 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 8290 for (int i = 0; i < 10; ++i) 8291 ++a; 8292 } 8293 #pragma omp target 8294 #pragma omp teams distribute parallel for 8295 for (int i = 0; i < 10; ++i) { 8296 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 8297 for (int i = 0; i < 10; ++i) 8298 ++a; 8299 } 8300 #pragma omp target 8301 #pragma omp teams distribute parallel for 8302 for (int i = 0; i < 10; ++i) { 8303 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 8304 ++a; 8305 } 8306 #pragma omp target 8307 #pragma omp teams distribute parallel for 8308 for (int i = 0; i < 10; ++i) { 8309 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 8310 for (int i = 0; i < 10; ++i) 8311 ++a; 8312 } 8313 #pragma omp target 8314 #pragma omp teams distribute parallel for 8315 for (int i = 0; i < 10; ++i) { 8316 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 8317 for (int i = 0; i < 10; ++i) 8318 ++a; 8319 } 8320 #pragma omp target 8321 #pragma omp teams distribute parallel for 8322 for (int i = 0; i < 10; ++i) { 8323 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 8324 for (int i = 0; i < 10; ++i) 8325 ++a; 8326 } 8327 #pragma omp target 8328 #pragma omp teams distribute parallel for 8329 for (int i = 0; i < 10; ++i) { 8330 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 8331 for (int i = 0; i < 10; ++i) 8332 ++a; 8333 } 8334 8335 // TARGET TEAMS DIRECTIVE 8336 #pragma omp target teams 8337 #pragma omp parallel 8338 bar(); 8339 #pragma omp target teams 8340 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 8341 for (int i = 0; i < 10; ++i) 8342 ; 8343 #pragma omp target teams 8344 #pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 8345 for (int i = 0; i < 10; ++i) 8346 ; 8347 #pragma omp target teams 8348 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 8349 for (int i = 0; i < 10; ++i) 8350 ; 8351 #pragma omp target teams 8352 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 8353 { 8354 bar(); 8355 } 8356 #pragma omp target teams 8357 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 8358 { 8359 bar(); 8360 } 8361 #pragma omp target teams 8362 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 8363 bar(); 8364 8365 #pragma omp target teams 8366 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 8367 { 8368 bar(); 8369 } 8370 #pragma omp target teams 8371 #pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 8372 { 8373 bar(); 8374 } 8375 #pragma omp target teams 8376 #pragma omp parallel for 8377 for (int i = 0; i < 10; ++i) 8378 ; 8379 #pragma omp target teams 8380 #pragma omp parallel for simd 8381 for (int i = 0; i < 10; ++i) 8382 ; 8383 #pragma omp target teams 8384 #pragma omp parallel sections 8385 { 8386 bar(); 8387 } 8388 #pragma omp target teams 8389 #pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 8390 { 8391 bar(); 8392 } 8393 #pragma omp target teams 8394 { 8395 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 8396 bar(); 8397 } 8398 #pragma omp target teams 8399 { 8400 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 8401 bar(); 8402 } 8403 #pragma omp target teams 8404 { 8405 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 8406 bar(); 8407 } 8408 #pragma omp target teams 8409 { 8410 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 8411 bar(); 8412 } 8413 #pragma omp target teams 8414 { 8415 #pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 8416 bar(); 8417 } 8418 #pragma omp target teams 8419 { 8420 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 8421 bar(); 8422 } 8423 #pragma omp target teams 8424 { 8425 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 8426 ++a; 8427 } 8428 #pragma omp target teams 8429 { 8430 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 8431 ++a; 8432 } 8433 #pragma omp target teams 8434 { 8435 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 8436 ++a; 8437 } 8438 #pragma omp target teams 8439 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8440 for (int i = 0; i < 10; ++i) 8441 ; 8442 #pragma omp target teams 8443 { 8444 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8445 } 8446 #pragma omp target teams 8447 { 8448 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8449 } 8450 #pragma omp target teams 8451 { 8452 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 8453 ++a; 8454 } 8455 #pragma omp target teams 8456 { 8457 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 8458 for (int i = 0; i < 10; ++i) 8459 ++a; 8460 } 8461 #pragma omp target teams 8462 #pragma omp distribute 8463 for (int i = 0; i < 10; ++i) 8464 ; 8465 #pragma omp target teams 8466 { 8467 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 8468 ++a; 8469 } 8470 #pragma omp target teams 8471 #pragma omp distribute parallel for 8472 for (int i = 0; i < 10; ++i) 8473 ; 8474 #pragma omp target teams 8475 { 8476 #pragma omp distribute parallel for 8477 for (int i = 0; i < 10; ++i) 8478 ; 8479 #pragma omp distribute parallel for 8480 for (int j = 0; j < 10; ++j) 8481 ; 8482 } 8483 #pragma omp target teams 8484 { 8485 #pragma omp distribute parallel for simd 8486 for (int i = 0; i < 10; ++i) 8487 ; 8488 #pragma omp distribute parallel for simd 8489 for (int j = 0; j < 10; ++j) 8490 ; 8491 } 8492 #pragma omp target teams 8493 { 8494 #pragma omp distribute simd 8495 for (int i = 0; i < 10; ++i) 8496 ; 8497 #pragma omp distribute simd 8498 for (int j = 0; j < 10; ++j) 8499 ; 8500 } 8501 #pragma omp target teams 8502 { 8503 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 8504 for (int i = 0; i < 10; ++i) 8505 ; 8506 } 8507 #pragma omp target teams 8508 { 8509 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 8510 for (int i = 0; i < 10; ++i) 8511 ; 8512 } 8513 #pragma omp target teams 8514 { 8515 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 8516 for (int i = 0; i < 10; ++i) 8517 ; 8518 } 8519 #pragma omp target teams 8520 { 8521 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 8522 for (int i = 0; i < 10; ++i) 8523 ; 8524 } 8525 #pragma omp target teams 8526 { 8527 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 8528 for (int i = 0; i < 10; ++i) 8529 ; 8530 } 8531 #pragma omp target teams 8532 { 8533 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 8534 a++; 8535 } 8536 #pragma omp target teams 8537 { 8538 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 8539 for (int i = 0; i < 10; ++i) 8540 ; 8541 } 8542 #pragma omp target teams 8543 { 8544 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8545 for (int i = 0; i < 10; ++i) 8546 ; 8547 } 8548 #pragma omp target teams 8549 { 8550 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 8551 for (int i = 0; i < 10; ++i) 8552 ; 8553 } 8554 #pragma omp target teams 8555 { 8556 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 8557 for (int i = 0; i < 10; ++i) 8558 ; 8559 } 8560 8561 // TARGET TEAMS DISTRIBUTE DIRECTIVE 8562 #pragma omp target teams distribute // OK 8563 for (int i = 0; i < 10; ++i) 8564 ; 8565 #pragma omp target teams distribute 8566 for (int i = 0; i < 10; ++i) { 8567 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 8568 for (int i = 0; i < 10; ++i) 8569 ; 8570 } 8571 #pragma omp target teams distribute 8572 for (int i = 0; i < 10; ++i) { 8573 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 8574 for (int i = 0; i < 10; ++i) 8575 ; 8576 } 8577 #pragma omp target teams distribute 8578 for (int i = 0; i < 10; ++i) { 8579 #pragma omp for // OK 8580 for (int i = 0; i < 10; ++i) 8581 ; 8582 } 8583 #pragma omp target teams distribute 8584 for (int i = 0; i < 10; ++i) { 8585 #pragma omp simd // OK 8586 for (int i = 0; i < 10; ++i) 8587 ; 8588 } 8589 #pragma omp target teams distribute 8590 for (int i = 0; i < 10; ++i) { 8591 #pragma omp for simd // OK 8592 for (int i = 0; i < 10; ++i) 8593 ; 8594 } 8595 #pragma omp target teams distribute 8596 for (int i = 0; i < 10; ++i) { 8597 #pragma omp parallel // OK 8598 for (int i = 0; i < 10; ++i) 8599 ; 8600 } 8601 #pragma omp target teams distribute 8602 for (int i = 0; i < 10; ++i) { 8603 #pragma omp sections // OK 8604 { 8605 bar(); 8606 } 8607 } 8608 #pragma omp target teams distribute 8609 for (int i = 0; i < 10; ++i) { 8610 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8611 { 8612 bar(); 8613 } 8614 } 8615 #pragma omp target teams distribute 8616 for (int i = 0; i < 10; ++i) { 8617 #pragma omp single // OK 8618 { 8619 bar(); 8620 } 8621 } 8622 #pragma omp target teams distribute 8623 for (int i = 0; i < 10; ++i) { 8624 #pragma omp master // OK 8625 { 8626 bar(); 8627 } 8628 } 8629 #pragma omp target teams distribute 8630 for (int i = 0; i < 10; ++i) { 8631 #pragma omp critical // OK 8632 { 8633 bar(); 8634 } 8635 } 8636 #pragma omp target teams distribute 8637 for (int i = 0; i < 10; ++i) { 8638 #pragma omp parallel // OK 8639 { 8640 #pragma omp single 8641 { 8642 bar(); 8643 } 8644 } 8645 } 8646 #pragma omp target teams distribute 8647 for (int i = 0; i < 10; ++i) { 8648 #pragma omp parallel for // OK 8649 for (int i = 0; i < 10; ++i) 8650 ; 8651 } 8652 #pragma omp target teams distribute 8653 for (int i = 0; i < 10; ++i) { 8654 #pragma omp parallel for simd // OK 8655 for (int i = 0; i < 10; ++i) 8656 ; 8657 } 8658 #pragma omp target teams distribute 8659 for (int i = 0; i < 10; ++i) { 8660 #pragma omp parallel sections // OK 8661 { 8662 bar(); 8663 } 8664 } 8665 #pragma omp target teams distribute 8666 for (int i = 0; i < 10; ++i) { 8667 #pragma omp task // OK 8668 { 8669 bar(); 8670 } 8671 } 8672 #pragma omp target teams distribute 8673 for (int i = 0; i < 10; ++i) { 8674 #pragma omp taskyield // OK 8675 bar(); 8676 } 8677 #pragma omp target teams distribute 8678 for (int i = 0; i < 10; ++i) { 8679 #pragma omp barrier // OK 8680 bar(); 8681 } 8682 #pragma omp target teams distribute 8683 for (int i = 0; i < 10; ++i) { 8684 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 8685 bar(); 8686 } 8687 #pragma omp target teams distribute 8688 for (int i = 0; i < 10; ++i) { 8689 #pragma omp taskwait // OK 8690 bar(); 8691 } 8692 #pragma omp target teams distribute 8693 for (int i = 0; i < 10; ++i) { 8694 #pragma omp flush // OK 8695 bar(); 8696 } 8697 #pragma omp target teams distribute 8698 for (int i = 0; i < 10; ++i) { 8699 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 8700 bar(); 8701 } 8702 #pragma omp target teams distribute 8703 for (int i = 0; i < 10; ++i) { 8704 #pragma omp atomic // OK 8705 ++a; 8706 } 8707 #pragma omp target teams distribute 8708 for (int i = 0; i < 10; ++i) { 8709 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8710 ++a; 8711 } 8712 #pragma omp target teams distribute 8713 for (int i = 0; i < 10; ++i) { 8714 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8715 ++a; 8716 } 8717 #pragma omp target teams distribute 8718 for (int i = 0; i < 10; ++i) { 8719 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8720 for (int i = 0; i < 10; ++i) 8721 ; 8722 } 8723 #pragma omp target teams distribute 8724 for (int i = 0; i < 10; ++i) { 8725 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8726 ++a; 8727 } 8728 #pragma omp target teams distribute 8729 for (int i = 0; i < 10; ++i) { 8730 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8731 ++a; 8732 } 8733 #pragma omp target teams distribute 8734 for (int i = 0; i < 10; ++i) { 8735 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 8736 ++a; 8737 } 8738 #pragma omp target teams distribute 8739 for (int i = 0; i < 10; ++i) { 8740 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8741 ++a; 8742 } 8743 #pragma omp target teams distribute 8744 for (int i = 0; i < 10; ++i) { 8745 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 8746 for (int i = 0; i < 10; ++i) 8747 ++a; 8748 } 8749 #pragma omp target teams distribute 8750 for (int i = 0; i < 10; ++i) { 8751 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8752 for (int i = 0; i < 10; ++i) 8753 ++a; 8754 } 8755 #pragma omp target teams distribute 8756 for (int i = 0; i < 10; ++i) { 8757 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 8758 for (int i = 0; i < 10; ++i) 8759 ++a; 8760 } 8761 #pragma omp target teams distribute 8762 for (int i = 0; i < 10; ++i) { 8763 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 8764 for (int i = 0; i < 10; ++i) 8765 ++a; 8766 } 8767 #pragma omp target teams distribute 8768 for (int i = 0; i < 10; ++i) { 8769 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 8770 for (int i = 0; i < 10; ++i) 8771 ++a; 8772 } 8773 #pragma omp target teams distribute 8774 for (int i = 0; i < 10; ++i) { 8775 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 8776 for (int i = 0; i < 10; ++i) 8777 ; 8778 } 8779 #pragma omp target teams distribute 8780 for (int i = 0; i < 10; ++i) { 8781 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8782 a++; 8783 } 8784 #pragma omp target teams distribute 8785 for (int i = 0; i < 10; ++i) { 8786 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8787 for (int i = 0; i < 10; ++i) 8788 ; 8789 } 8790 #pragma omp target teams distribute 8791 for (int i = 0; i < 10; ++i) { 8792 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8793 for (int i = 0; i < 10; ++i) 8794 ; 8795 } 8796 #pragma omp target teams distribute 8797 for (int i = 0; i < 10; ++i) { 8798 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8799 for (int i = 0; i < 10; ++i) 8800 ; 8801 } 8802 #pragma omp target teams distribute 8803 for (int i = 0; i < 10; ++i) { 8804 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8805 for (int i = 0; i < 10; ++i) 8806 ; 8807 } 8808 8809 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8810 #pragma omp target teams distribute parallel for // OK 8811 for (int i = 0; i < 10; ++i) 8812 ; 8813 #pragma omp target teams distribute parallel for 8814 for (int i = 0; i < 10; ++i) { 8815 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 8816 for (int i = 0; i < 10; ++i) 8817 ; 8818 } 8819 #pragma omp target teams distribute parallel for 8820 for (int i = 0; i < 10; ++i) { 8821 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 8822 for (int i = 0; i < 10; ++i) 8823 ; 8824 } 8825 #pragma omp target teams distribute parallel for 8826 for (int i = 0; i < 10; ++i) { 8827 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 8828 for (int i = 0; i < 10; ++i) 8829 ; 8830 } 8831 #pragma omp target teams distribute parallel for 8832 for (int i = 0; i < 10; ++i) { 8833 #pragma omp simd // OK 8834 for (int i = 0; i < 10; ++i) 8835 ; 8836 } 8837 #pragma omp target teams distribute parallel for 8838 for (int i = 0; i < 10; ++i) { 8839 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 8840 for (int i = 0; i < 10; ++i) 8841 ; 8842 } 8843 #pragma omp target teams distribute parallel for 8844 for (int i = 0; i < 10; ++i) { 8845 #pragma omp parallel // OK 8846 for (int i = 0; i < 10; ++i) 8847 ; 8848 } 8849 #pragma omp target teams distribute parallel for 8850 for (int i = 0; i < 10; ++i) { 8851 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 8852 { 8853 bar(); 8854 } 8855 } 8856 #pragma omp target teams distribute parallel for 8857 for (int i = 0; i < 10; ++i) { 8858 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 8859 { 8860 bar(); 8861 } 8862 } 8863 #pragma omp target teams distribute parallel for 8864 for (int i = 0; i < 10; ++i) { 8865 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 8866 { 8867 bar(); 8868 } 8869 } 8870 #pragma omp target teams distribute parallel for 8871 for (int i = 0; i < 10; ++i) { 8872 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8873 { 8874 bar(); 8875 } 8876 } 8877 #pragma omp target teams distribute parallel for 8878 for (int i = 0; i < 10; ++i) { 8879 #pragma omp critical // OK 8880 { 8881 bar(); 8882 } 8883 } 8884 #pragma omp target teams distribute parallel for 8885 for (int i = 0; i < 10; ++i) { 8886 #pragma omp parallel // OK 8887 { 8888 #pragma omp single 8889 { 8890 bar(); 8891 } 8892 } 8893 } 8894 #pragma omp target teams distribute parallel for 8895 for (int i = 0; i < 10; ++i) { 8896 #pragma omp parallel for // OK 8897 for (int i = 0; i < 10; ++i) 8898 ; 8899 } 8900 #pragma omp target teams distribute parallel for 8901 for (int i = 0; i < 10; ++i) { 8902 #pragma omp parallel for simd // OK 8903 for (int i = 0; i < 10; ++i) 8904 ; 8905 } 8906 #pragma omp target teams distribute parallel for 8907 for (int i = 0; i < 10; ++i) { 8908 #pragma omp parallel sections // OK 8909 { 8910 bar(); 8911 } 8912 } 8913 #pragma omp target teams distribute parallel for 8914 for (int i = 0; i < 10; ++i) { 8915 #pragma omp task // OK 8916 { 8917 bar(); 8918 } 8919 } 8920 #pragma omp target teams distribute parallel for 8921 for (int i = 0; i < 10; ++i) { 8922 #pragma omp taskyield // OK 8923 bar(); 8924 } 8925 #pragma omp target teams distribute parallel for 8926 for (int i = 0; i < 10; ++i) { 8927 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8928 bar(); 8929 } 8930 #pragma omp target teams distribute parallel for 8931 for (int i = 0; i < 10; ++i) { 8932 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8933 bar(); 8934 } 8935 #pragma omp target teams distribute parallel for 8936 for (int i = 0; i < 10; ++i) { 8937 #pragma omp taskwait // OK 8938 bar(); 8939 } 8940 #pragma omp target teams distribute parallel for 8941 for (int i = 0; i < 10; ++i) { 8942 #pragma omp flush // OK 8943 bar(); 8944 } 8945 #pragma omp target teams distribute parallel for 8946 for (int i = 0; i < 10; ++i) { 8947 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 8948 bar(); 8949 } 8950 #pragma omp target teams distribute parallel for 8951 for (int i = 0; i < 10; ++i) { 8952 #pragma omp atomic // OK 8953 ++a; 8954 } 8955 #pragma omp target teams distribute parallel for 8956 for (int i = 0; i < 10; ++i) { 8957 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8958 ++a; 8959 } 8960 #pragma omp target teams distribute parallel for 8961 for (int i = 0; i < 10; ++i) { 8962 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8963 ++a; 8964 } 8965 #pragma omp target teams distribute parallel for 8966 for (int i = 0; i < 10; ++i) { 8967 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8968 for (int i = 0; i < 10; ++i) 8969 ; 8970 } 8971 #pragma omp target teams distribute parallel for 8972 for (int i = 0; i < 10; ++i) { 8973 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8974 ++a; 8975 } 8976 #pragma omp target teams distribute parallel for 8977 for (int i = 0; i < 10; ++i) { 8978 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8979 ++a; 8980 } 8981 #pragma omp target teams distribute parallel for 8982 for (int i = 0; i < 10; ++i) { 8983 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 8984 ++a; 8985 } 8986 #pragma omp target teams distribute parallel for 8987 for (int i = 0; i < 10; ++i) { 8988 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8989 ++a; 8990 } 8991 #pragma omp target teams distribute parallel for 8992 for (int i = 0; i < 10; ++i) { 8993 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 8994 for (int i = 0; i < 10; ++i) 8995 ++a; 8996 } 8997 #pragma omp target teams distribute parallel for 8998 for (int i = 0; i < 10; ++i) { 8999 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9000 for (int i = 0; i < 10; ++i) 9001 ++a; 9002 } 9003 #pragma omp target teams distribute parallel for 9004 for (int i = 0; i < 10; ++i) { 9005 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 9006 for (int i = 0; i < 10; ++i) 9007 ++a; 9008 } 9009 #pragma omp target teams distribute parallel for 9010 for (int i = 0; i < 10; ++i) { 9011 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 9012 for (int i = 0; i < 10; ++i) 9013 ++a; 9014 } 9015 #pragma omp target teams distribute parallel for 9016 for (int i = 0; i < 10; ++i) { 9017 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 9018 for (int i = 0; i < 10; ++i) 9019 ++a; 9020 } 9021 #pragma omp target teams distribute parallel for 9022 for (int i = 0; i < 10; ++i) { 9023 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 9024 for (int i = 0; i < 10; ++i) 9025 ; 9026 } 9027 #pragma omp target teams distribute parallel for 9028 for (int i = 0; i < 10; ++i) { 9029 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9030 a++; 9031 } 9032 #pragma omp target teams distribute parallel for 9033 for (int i = 0; i < 10; ++i) { 9034 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9035 for (int i = 0; i < 10; ++i) 9036 ; 9037 } 9038 #pragma omp target teams distribute parallel for 9039 for (int i = 0; i < 10; ++i) { 9040 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9041 for (int i = 0; i < 10; ++i) 9042 ; 9043 } 9044 #pragma omp target teams distribute parallel for 9045 for (int i = 0; i < 10; ++i) { 9046 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9047 for (int i = 0; i < 10; ++i) 9048 ; 9049 } 9050 #pragma omp target teams distribute parallel for 9051 for (int i = 0; i < 10; ++i) { 9052 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9053 for (int i = 0; i < 10; ++i) 9054 ; 9055 } 9056 9057 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 9058 #pragma omp target teams distribute parallel for simd // OK 9059 for (int i = 0; i < 10; ++i) 9060 ; 9061 #pragma omp target teams distribute parallel for simd 9062 for (int i = 0; i < 10; ++i) { 9063 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9064 for (int i = 0; i < 10; ++i) 9065 ; 9066 } 9067 #pragma omp target teams distribute parallel for simd 9068 for (int i = 0; i < 10; ++i) { 9069 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9070 for (int i = 0; i < 10; ++i) 9071 ; 9072 } 9073 #pragma omp target teams distribute parallel for simd 9074 for (int i = 0; i < 10; ++i) { 9075 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9076 for (int i = 0; i < 10; ++i) 9077 ; 9078 } 9079 #pragma omp target teams distribute parallel for simd 9080 for (int i = 0; i < 10; ++i) { 9081 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9082 for (int i = 0; i < 10; ++i) 9083 ; 9084 } 9085 #pragma omp target teams distribute parallel for simd 9086 for (int i = 0; i < 10; ++i) { 9087 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9088 for (int i = 0; i < 10; ++i) 9089 ; 9090 } 9091 #pragma omp target teams distribute parallel for simd 9092 for (int i = 0; i < 10; ++i) { 9093 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9094 for (int i = 0; i < 10; ++i) 9095 ; 9096 } 9097 #pragma omp target teams distribute parallel for simd 9098 for (int i = 0; i < 10; ++i) { 9099 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9100 { 9101 bar(); 9102 } 9103 } 9104 #pragma omp target teams distribute parallel for simd 9105 for (int i = 0; i < 10; ++i) { 9106 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9107 { 9108 bar(); 9109 } 9110 } 9111 #pragma omp target teams distribute parallel for simd 9112 for (int i = 0; i < 10; ++i) { 9113 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9114 { 9115 bar(); 9116 } 9117 } 9118 #pragma omp target teams distribute parallel for simd 9119 for (int i = 0; i < 10; ++i) { 9120 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9121 { 9122 bar(); 9123 } 9124 } 9125 #pragma omp target teams distribute parallel for simd 9126 for (int i = 0; i < 10; ++i) { 9127 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9128 { 9129 bar(); 9130 } 9131 } 9132 #pragma omp target teams distribute parallel for simd 9133 for (int i = 0; i < 10; ++i) { 9134 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9135 { 9136 #pragma omp single 9137 { 9138 bar(); 9139 } 9140 } 9141 } 9142 #pragma omp target teams distribute parallel for simd 9143 for (int i = 0; i < 10; ++i) { 9144 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9145 for (int i = 0; i < 10; ++i) 9146 ; 9147 } 9148 #pragma omp target teams distribute parallel for simd 9149 for (int i = 0; i < 10; ++i) { 9150 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9151 for (int i = 0; i < 10; ++i) 9152 ; 9153 } 9154 #pragma omp target teams distribute parallel for simd 9155 for (int i = 0; i < 10; ++i) { 9156 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9157 { 9158 bar(); 9159 } 9160 } 9161 #pragma omp target teams distribute parallel for simd 9162 for (int i = 0; i < 10; ++i) { 9163 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9164 { 9165 bar(); 9166 } 9167 } 9168 #pragma omp target teams distribute parallel for simd 9169 for (int i = 0; i < 10; ++i) { 9170 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9171 bar(); 9172 } 9173 #pragma omp target teams distribute parallel for simd 9174 for (int i = 0; i < 10; ++i) { 9175 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9176 bar(); 9177 } 9178 #pragma omp target teams distribute parallel for simd 9179 for (int i = 0; i < 10; ++i) { 9180 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9181 bar(); 9182 } 9183 #pragma omp target teams distribute parallel for simd 9184 for (int i = 0; i < 10; ++i) { 9185 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9186 bar(); 9187 } 9188 #pragma omp target teams distribute parallel for simd 9189 for (int i = 0; i < 10; ++i) { 9190 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9191 bar(); 9192 } 9193 #pragma omp target teams distribute parallel for simd 9194 for (int i = 0; i < 10; ++i) { 9195 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9196 bar(); 9197 } 9198 #pragma omp target teams distribute parallel for simd 9199 for (int i = 0; i < 10; ++i) { 9200 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9201 ++a; 9202 } 9203 #pragma omp target teams distribute parallel for simd 9204 for (int i = 0; i < 10; ++i) { 9205 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9206 ++a; 9207 } 9208 #pragma omp target teams distribute parallel for simd 9209 for (int i = 0; i < 10; ++i) { 9210 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9211 ++a; 9212 } 9213 #pragma omp target teams distribute parallel for simd 9214 for (int i = 0; i < 10; ++i) { 9215 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9216 for (int i = 0; i < 10; ++i) 9217 ; 9218 } 9219 #pragma omp target teams distribute parallel for simd 9220 for (int i = 0; i < 10; ++i) { 9221 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9222 ++a; 9223 } 9224 #pragma omp target teams distribute parallel for simd 9225 for (int i = 0; i < 10; ++i) { 9226 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9227 ++a; 9228 } 9229 #pragma omp target teams distribute parallel for simd 9230 for (int i = 0; i < 10; ++i) { 9231 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9232 ++a; 9233 } 9234 #pragma omp target teams distribute parallel for simd 9235 for (int i = 0; i < 10; ++i) { 9236 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9237 ++a; 9238 } 9239 #pragma omp target teams distribute parallel for simd 9240 for (int i = 0; i < 10; ++i) { 9241 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9242 for (int i = 0; i < 10; ++i) 9243 ++a; 9244 } 9245 #pragma omp target teams distribute parallel for simd 9246 for (int i = 0; i < 10; ++i) { 9247 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9248 for (int i = 0; i < 10; ++i) 9249 ++a; 9250 } 9251 #pragma omp target teams distribute parallel for simd 9252 for (int i = 0; i < 10; ++i) { 9253 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9254 for (int i = 0; i < 10; ++i) 9255 ++a; 9256 } 9257 #pragma omp target teams distribute parallel for simd 9258 for (int i = 0; i < 10; ++i) { 9259 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9260 for (int i = 0; i < 10; ++i) 9261 ++a; 9262 } 9263 #pragma omp target teams distribute parallel for simd 9264 for (int i = 0; i < 10; ++i) { 9265 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9266 for (int i = 0; i < 10; ++i) 9267 ++a; 9268 } 9269 #pragma omp target teams distribute parallel for simd 9270 for (int i = 0; i < 10; ++i) { 9271 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9272 for (int i = 0; i < 10; ++i) 9273 ; 9274 } 9275 #pragma omp target teams distribute parallel for simd 9276 for (int i = 0; i < 10; ++i) { 9277 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9278 a++; 9279 } 9280 #pragma omp target teams distribute parallel for simd 9281 for (int i = 0; i < 10; ++i) { 9282 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9283 for (int i = 0; i < 10; ++i) 9284 ; 9285 } 9286 #pragma omp target teams distribute parallel for simd 9287 for (int i = 0; i < 10; ++i) { 9288 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9289 for (int i = 0; i < 10; ++i) 9290 ; 9291 } 9292 #pragma omp target teams distribute parallel for simd 9293 for (int i = 0; i < 10; ++i) { 9294 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9295 for (int i = 0; i < 10; ++i) 9296 ; 9297 } 9298 #pragma omp target teams distribute parallel for simd 9299 for (int i = 0; i < 10; ++i) { 9300 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9301 for (int i = 0; i < 10; ++i) 9302 ; 9303 } 9304 9305 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 9306 #pragma omp target teams distribute simd // OK 9307 for (int i = 0; i < 10; ++i) 9308 ; 9309 #pragma omp target teams distribute simd 9310 for (int i = 0; i < 10; ++i) { 9311 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9312 for (int i = 0; i < 10; ++i) 9313 ; 9314 } 9315 #pragma omp target teams distribute simd 9316 for (int i = 0; i < 10; ++i) { 9317 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9318 for (int i = 0; i < 10; ++i) 9319 ; 9320 } 9321 #pragma omp target teams distribute simd 9322 for (int i = 0; i < 10; ++i) { 9323 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9324 for (int i = 0; i < 10; ++i) 9325 ; 9326 } 9327 #pragma omp target teams distribute simd 9328 for (int i = 0; i < 10; ++i) { 9329 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9330 for (int i = 0; i < 10; ++i) 9331 ; 9332 } 9333 #pragma omp target teams distribute simd 9334 for (int i = 0; i < 10; ++i) { 9335 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9336 for (int i = 0; i < 10; ++i) 9337 ; 9338 } 9339 #pragma omp target teams distribute simd 9340 for (int i = 0; i < 10; ++i) { 9341 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9342 for (int i = 0; i < 10; ++i) 9343 ; 9344 } 9345 #pragma omp target teams distribute simd 9346 for (int i = 0; i < 10; ++i) { 9347 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9348 { 9349 bar(); 9350 } 9351 } 9352 #pragma omp target teams distribute simd 9353 for (int i = 0; i < 10; ++i) { 9354 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9355 { 9356 bar(); 9357 } 9358 } 9359 #pragma omp target teams distribute simd 9360 for (int i = 0; i < 10; ++i) { 9361 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9362 { 9363 bar(); 9364 } 9365 } 9366 #pragma omp target teams distribute simd 9367 for (int i = 0; i < 10; ++i) { 9368 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9369 { 9370 bar(); 9371 } 9372 } 9373 #pragma omp target teams distribute simd 9374 for (int i = 0; i < 10; ++i) { 9375 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9376 { 9377 bar(); 9378 } 9379 } 9380 #pragma omp target teams distribute simd 9381 for (int i = 0; i < 10; ++i) { 9382 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9383 { 9384 #pragma omp single 9385 { 9386 bar(); 9387 } 9388 } 9389 } 9390 #pragma omp target teams distribute simd 9391 for (int i = 0; i < 10; ++i) { 9392 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9393 for (int i = 0; i < 10; ++i) 9394 ; 9395 } 9396 #pragma omp target teams distribute simd 9397 for (int i = 0; i < 10; ++i) { 9398 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9399 for (int i = 0; i < 10; ++i) 9400 ; 9401 } 9402 #pragma omp target teams distribute simd 9403 for (int i = 0; i < 10; ++i) { 9404 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9405 { 9406 bar(); 9407 } 9408 } 9409 #pragma omp target teams distribute simd 9410 for (int i = 0; i < 10; ++i) { 9411 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9412 { 9413 bar(); 9414 } 9415 } 9416 #pragma omp target teams distribute simd 9417 for (int i = 0; i < 10; ++i) { 9418 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9419 bar(); 9420 } 9421 #pragma omp target teams distribute simd 9422 for (int i = 0; i < 10; ++i) { 9423 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9424 bar(); 9425 } 9426 #pragma omp target teams distribute simd 9427 for (int i = 0; i < 10; ++i) { 9428 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9429 bar(); 9430 } 9431 #pragma omp target teams distribute simd 9432 for (int i = 0; i < 10; ++i) { 9433 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9434 bar(); 9435 } 9436 #pragma omp target teams distribute simd 9437 for (int i = 0; i < 10; ++i) { 9438 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9439 bar(); 9440 } 9441 #pragma omp target teams distribute simd 9442 for (int i = 0; i < 10; ++i) { 9443 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9444 bar(); 9445 } 9446 #pragma omp target teams distribute simd 9447 for (int i = 0; i < 10; ++i) { 9448 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9449 ++a; 9450 } 9451 #pragma omp target teams distribute simd 9452 for (int i = 0; i < 10; ++i) { 9453 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9454 ++a; 9455 } 9456 #pragma omp target teams distribute simd 9457 for (int i = 0; i < 10; ++i) { 9458 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9459 ++a; 9460 } 9461 #pragma omp target teams distribute simd 9462 for (int i = 0; i < 10; ++i) { 9463 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9464 for (int i = 0; i < 10; ++i) 9465 ; 9466 } 9467 #pragma omp target teams distribute simd 9468 for (int i = 0; i < 10; ++i) { 9469 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9470 ++a; 9471 } 9472 #pragma omp target teams distribute simd 9473 for (int i = 0; i < 10; ++i) { 9474 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9475 ++a; 9476 } 9477 #pragma omp target teams distribute simd 9478 for (int i = 0; i < 10; ++i) { 9479 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9480 ++a; 9481 } 9482 #pragma omp target teams distribute simd 9483 for (int i = 0; i < 10; ++i) { 9484 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9485 ++a; 9486 } 9487 #pragma omp target teams distribute simd 9488 for (int i = 0; i < 10; ++i) { 9489 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9490 for (int i = 0; i < 10; ++i) 9491 ++a; 9492 } 9493 #pragma omp target teams distribute simd 9494 for (int i = 0; i < 10; ++i) { 9495 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9496 for (int i = 0; i < 10; ++i) 9497 ++a; 9498 } 9499 #pragma omp target teams distribute simd 9500 for (int i = 0; i < 10; ++i) { 9501 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9502 for (int i = 0; i < 10; ++i) 9503 ++a; 9504 } 9505 #pragma omp target teams distribute simd 9506 for (int i = 0; i < 10; ++i) { 9507 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9508 for (int i = 0; i < 10; ++i) 9509 ++a; 9510 } 9511 #pragma omp target teams distribute simd 9512 for (int i = 0; i < 10; ++i) { 9513 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9514 for (int i = 0; i < 10; ++i) 9515 ++a; 9516 } 9517 #pragma omp target teams distribute simd 9518 for (int i = 0; i < 10; ++i) { 9519 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9520 for (int i = 0; i < 10; ++i) 9521 ; 9522 } 9523 #pragma omp target teams distribute simd 9524 for (int i = 0; i < 10; ++i) { 9525 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9526 a++; 9527 } 9528 #pragma omp target teams distribute simd 9529 for (int i = 0; i < 10; ++i) { 9530 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9531 for (int i = 0; i < 10; ++i) 9532 ; 9533 } 9534 #pragma omp target teams distribute simd 9535 for (int i = 0; i < 10; ++i) { 9536 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9537 for (int i = 0; i < 10; ++i) 9538 ; 9539 } 9540 #pragma omp target teams distribute simd 9541 for (int i = 0; i < 10; ++i) { 9542 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9543 for (int i = 0; i < 10; ++i) 9544 ; 9545 } 9546 #pragma omp target teams distribute simd 9547 for (int i = 0; i < 10; ++i) { 9548 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9549 for (int i = 0; i < 10; ++i) 9550 ; 9551 } 9552 9553 } 9554 9555 void foo() { 9556 int a = 0; 9557 // PARALLEL DIRECTIVE 9558 #pragma omp parallel 9559 #pragma omp for 9560 for (int i = 0; i < 10; ++i) 9561 ; 9562 #pragma omp parallel 9563 #pragma omp simd 9564 for (int i = 0; i < 10; ++i) 9565 ; 9566 #pragma omp parallel 9567 #pragma omp for simd 9568 for (int i = 0; i < 10; ++i) 9569 ; 9570 #pragma omp parallel 9571 #pragma omp sections 9572 { 9573 bar(); 9574 } 9575 #pragma omp parallel 9576 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 9577 { 9578 bar(); 9579 } 9580 #pragma omp parallel 9581 #pragma omp sections 9582 { 9583 bar(); 9584 } 9585 #pragma omp parallel 9586 #pragma omp single 9587 bar(); 9588 #pragma omp parallel 9589 #pragma omp master 9590 bar(); 9591 #pragma omp parallel master 9592 bar(); 9593 #pragma omp parallel 9594 #pragma omp critical 9595 bar(); 9596 #pragma omp parallel 9597 #pragma omp parallel for 9598 for (int i = 0; i < 10; ++i) 9599 ; 9600 #pragma omp parallel 9601 #pragma omp parallel for simd 9602 for (int i = 0; i < 10; ++i) 9603 ; 9604 #pragma omp parallel 9605 #pragma omp parallel sections 9606 { 9607 bar(); 9608 } 9609 #pragma omp parallel 9610 #pragma omp task 9611 { 9612 bar(); 9613 } 9614 #pragma omp parallel 9615 { 9616 #pragma omp taskyield 9617 bar(); 9618 } 9619 #pragma omp parallel 9620 { 9621 #pragma omp barrier 9622 bar(); 9623 } 9624 #pragma omp parallel 9625 { 9626 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9627 bar(); 9628 } 9629 #pragma omp parallel 9630 { 9631 #pragma omp taskwait 9632 bar(); 9633 } 9634 #pragma omp parallel 9635 { 9636 #pragma omp flush 9637 bar(); 9638 } 9639 #pragma omp parallel 9640 { 9641 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 9642 bar(); 9643 } 9644 #pragma omp parallel 9645 { 9646 #pragma omp atomic 9647 ++a; 9648 } 9649 #pragma omp parallel 9650 { 9651 #pragma omp target 9652 ++a; 9653 } 9654 #pragma omp parallel 9655 { 9656 #pragma omp target parallel 9657 ++a; 9658 } 9659 #pragma omp parallel 9660 #pragma omp target parallel for 9661 for (int i = 0; i < 10; ++i) 9662 ; 9663 #pragma omp parallel 9664 { 9665 #pragma omp target enter data map(to: a) 9666 ++a; 9667 } 9668 #pragma omp parallel 9669 { 9670 #pragma omp target exit data map(from: a) 9671 ++a; 9672 } 9673 #pragma omp parallel 9674 { 9675 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 9676 ++a; 9677 } 9678 #pragma omp parallel 9679 { 9680 #pragma omp taskloop 9681 for (int i = 0; i < 10; ++i) 9682 ++a; 9683 } 9684 #pragma omp parallel 9685 { 9686 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 9687 for (int i = 0; i < 10; ++i) 9688 ; 9689 } 9690 #pragma omp parallel 9691 { 9692 #pragma omp target update to(a) 9693 a++; 9694 } 9695 #pragma omp parallel 9696 { 9697 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 9698 for (int i = 0; i < 10; ++i) 9699 ; 9700 } 9701 #pragma omp parallel 9702 { 9703 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 9704 for (int i = 0; i < 10; ++i) 9705 ; 9706 } 9707 #pragma omp parallel 9708 { 9709 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 9710 for (int i = 0; i < 10; ++i) 9711 ; 9712 } 9713 #pragma omp parallel 9714 { 9715 #pragma omp target simd // OK 9716 for (int i = 0; i < 10; ++i) 9717 ; 9718 } 9719 #pragma omp parallel 9720 { 9721 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 9722 for (int i = 0; i < 10; ++i) 9723 ; 9724 } 9725 #pragma omp parallel 9726 { 9727 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 9728 for (int i = 0; i < 10; ++i) 9729 ; 9730 } 9731 #pragma omp parallel 9732 { 9733 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 9734 for (int i = 0; i < 10; ++i) 9735 ; 9736 } 9737 #pragma omp parallel 9738 { 9739 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 9740 for (int i = 0; i < 10; ++i) 9741 ; 9742 } 9743 #pragma omp parallel 9744 { 9745 #pragma omp target teams // OK 9746 a++; 9747 } 9748 #pragma omp parallel 9749 { 9750 #pragma omp target teams distribute // OK 9751 for (int i = 0; i < 10; ++i) 9752 ; 9753 } 9754 #pragma omp parallel 9755 { 9756 #pragma omp target teams distribute parallel for // OK 9757 for (int i = 0; i < 10; ++i) 9758 ; 9759 } 9760 #pragma omp parallel 9761 { 9762 #pragma omp target teams distribute parallel for simd // OK 9763 for (int i = 0; i < 10; ++i) 9764 ; 9765 } 9766 #pragma omp parallel 9767 { 9768 #pragma omp target teams distribute simd // OK 9769 for (int i = 0; i < 10; ++i) 9770 ; 9771 } 9772 9773 // SIMD DIRECTIVE 9774 #pragma omp simd 9775 for (int i = 0; i < 10; ++i) { 9776 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9777 for (int i = 0; i < 10; ++i) 9778 ; 9779 } 9780 #pragma omp simd 9781 for (int i = 0; i < 10; ++i) { 9782 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9783 for (int i = 0; i < 10; ++i) 9784 ; 9785 } 9786 #pragma omp simd 9787 for (int i = 0; i < 10; ++i) { 9788 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9789 for (int i = 0; i < 10; ++i) 9790 ; 9791 } 9792 #pragma omp simd 9793 for (int i = 0; i < 10; ++i) { 9794 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9795 for (int i = 0; i < 10; ++i) 9796 ; 9797 } 9798 #pragma omp simd 9799 for (int i = 0; i < 10; ++i) { 9800 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9801 { 9802 bar(); 9803 } 9804 } 9805 #pragma omp simd 9806 for (int i = 0; i < 10; ++i) { 9807 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9808 { 9809 bar(); 9810 } 9811 } 9812 #pragma omp simd 9813 for (int i = 0; i < 10; ++i) { 9814 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9815 bar(); 9816 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9817 bar(); 9818 } 9819 #pragma omp simd 9820 for (int i = 0; i < 10; ++i) { 9821 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9822 bar(); 9823 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9824 bar(); 9825 } 9826 #pragma omp simd 9827 for (int i = 0; i < 10; ++i) { 9828 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9829 for (int i = 0; i < 10; ++i) 9830 ; 9831 } 9832 #pragma omp simd 9833 for (int i = 0; i < 10; ++i) { 9834 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9835 for (int i = 0; i < 10; ++i) 9836 ; 9837 } 9838 #pragma omp simd 9839 for (int i = 0; i < 10; ++i) { 9840 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9841 { 9842 bar(); 9843 } 9844 } 9845 #pragma omp simd 9846 for (int i = 0; i < 10; ++i) { 9847 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9848 { 9849 bar(); 9850 } 9851 } 9852 #pragma omp simd 9853 for (int i = 0; i < 10; ++i) { 9854 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9855 bar(); 9856 } 9857 #pragma omp simd 9858 for (int i = 0; i < 10; ++i) { 9859 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9860 bar(); 9861 } 9862 #pragma omp simd 9863 for (int i = 0; i < 10; ++i) { 9864 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 9865 bar(); 9866 } 9867 #pragma omp simd 9868 for (int i = 0; i < 10; ++i) { 9869 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9870 bar(); 9871 } 9872 #pragma omp simd 9873 for (int i = 0; i < 10; ++i) { 9874 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9875 bar(); 9876 } 9877 #pragma omp simd 9878 for (int i = 0; i < 10; ++i) { 9879 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9880 bar(); 9881 } 9882 #pragma omp simd 9883 for (int i = 0; i < 10; ++i) { 9884 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9885 ++a; 9886 } 9887 #pragma omp simd 9888 for (int i = 0; i < 10; ++i) { 9889 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9890 ++a; 9891 } 9892 #pragma omp simd 9893 for (int i = 0; i < 10; ++i) { 9894 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9895 ++a; 9896 } 9897 #pragma omp simd 9898 for (int i = 0; i < 10; ++i) { 9899 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9900 for (int i = 0; i < 10; ++i) 9901 ; 9902 } 9903 #pragma omp simd 9904 for (int i = 0; i < 10; ++i) { 9905 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9906 ++a; 9907 } 9908 #pragma omp simd 9909 for (int i = 0; i < 10; ++i) { 9910 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9911 ++a; 9912 } 9913 #pragma omp simd 9914 for (int i = 0; i < 10; ++i) { 9915 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9916 ++a; 9917 } 9918 #pragma omp simd 9919 for (int i = 0; i < 10; ++i) { 9920 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9921 for (int i = 0; i < 10; ++i) 9922 ++a; 9923 } 9924 #pragma omp simd 9925 for (int i = 0; i < 10; ++i) { 9926 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9927 for (int j = 0; j < 10; ++j) 9928 ; 9929 } 9930 #pragma omp simd 9931 for (int i = 0; i < 10; ++i) { 9932 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9933 a++; 9934 } 9935 #pragma omp simd 9936 for (int i = 0; i < 10; ++i) { 9937 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9938 for (int j = 0; j < 10; ++j) 9939 ; 9940 } 9941 #pragma omp simd 9942 for (int i = 0; i < 10; ++i) { 9943 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9944 for (int j = 0; j < 10; ++j) 9945 ; 9946 } 9947 #pragma omp simd 9948 for (int i = 0; i < 10; ++i) { 9949 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9950 for (int j = 0; j < 10; ++j) 9951 ; 9952 } 9953 #pragma omp simd 9954 for (int i = 0; i < 10; ++i) { 9955 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9956 for (int j = 0; j < 10; ++j) 9957 ; 9958 } 9959 #pragma omp simd 9960 for (int i = 0; i < 10; ++i) { 9961 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9962 for (int j = 0; j < 10; ++j) 9963 ; 9964 } 9965 #pragma omp simd 9966 for (int i = 0; i < 10; ++i) { 9967 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9968 for (int j = 0; j < 10; ++j) 9969 ; 9970 } 9971 #pragma omp simd 9972 for (int i = 0; i < 10; ++i) { 9973 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9974 for (int j = 0; j < 10; ++j) 9975 ; 9976 } 9977 #pragma omp simd 9978 for (int i = 0; i < 10; ++i) { 9979 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9980 for (int j = 0; j < 10; ++j) 9981 ; 9982 } 9983 #pragma omp simd 9984 for (int i = 0; i < 10; ++i) { 9985 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9986 a++; 9987 } 9988 #pragma omp simd 9989 for (int i = 0; i < 10; ++i) { 9990 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9991 for (int j = 0; j < 10; ++j) 9992 ; 9993 } 9994 #pragma omp simd 9995 for (int i = 0; i < 10; ++i) { 9996 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9997 for (int j = 0; j < 10; ++j) 9998 ; 9999 } 10000 #pragma omp simd 10001 for (int i = 0; i < 10; ++i) { 10002 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10003 for (int j = 0; j < 10; ++j) 10004 ; 10005 } 10006 #pragma omp simd 10007 for (int i = 0; i < 10; ++i) { 10008 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10009 for (int j = 0; j < 10; ++j) 10010 ; 10011 } 10012 10013 // FOR DIRECTIVE 10014 #pragma omp for 10015 for (int i = 0; i < 10; ++i) { 10016 #pragma omp for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 10017 for (int i = 0; i < 10; ++i) 10018 ; 10019 } 10020 #pragma omp for 10021 for (int i = 0; i < 10; ++i) { 10022 #pragma omp simd 10023 for (int i = 0; i < 10; ++i) 10024 ; 10025 } 10026 #pragma omp for 10027 for (int i = 0; i < 10; ++i) { 10028 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 10029 for (int i = 0; i < 10; ++i) 10030 ; 10031 } 10032 #pragma omp for 10033 for (int i = 0; i < 10; ++i) { 10034 #pragma omp parallel 10035 for (int i = 0; i < 10; ++i) 10036 ; 10037 } 10038 #pragma omp for 10039 for (int i = 0; i < 10; ++i) { 10040 #pragma omp sections // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 10041 { 10042 bar(); 10043 } 10044 } 10045 #pragma omp for 10046 for (int i = 0; i < 10; ++i) { 10047 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 10048 { 10049 bar(); 10050 } 10051 } 10052 #pragma omp for 10053 for (int i = 0; i < 10; ++i) { 10054 #pragma omp single // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 10055 bar(); 10056 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 10057 bar(); 10058 #pragma omp critical 10059 bar(); 10060 } 10061 #pragma omp for 10062 for (int i = 0; i < 10; ++i) { 10063 #pragma omp parallel 10064 { 10065 #pragma omp single // OK 10066 { 10067 bar(); 10068 } 10069 #pragma omp for // OK 10070 for (int i = 0; i < 10; ++i) 10071 ; 10072 #pragma omp for simd // OK 10073 for (int i = 0; i < 10; ++i) 10074 ; 10075 #pragma omp sections // OK 10076 { 10077 bar(); 10078 } 10079 } 10080 } 10081 #pragma omp for 10082 for (int i = 0; i < 10; ++i) { 10083 #pragma omp parallel for 10084 for (int i = 0; i < 10; ++i) 10085 ; 10086 } 10087 #pragma omp for 10088 for (int i = 0; i < 10; ++i) { 10089 #pragma omp parallel for simd 10090 for (int i = 0; i < 10; ++i) 10091 ; 10092 } 10093 #pragma omp for 10094 for (int i = 0; i < 10; ++i) { 10095 #pragma omp parallel sections 10096 { 10097 bar(); 10098 } 10099 } 10100 #pragma omp for 10101 for (int i = 0; i < 10; ++i) { 10102 #pragma omp task 10103 { 10104 bar(); 10105 } 10106 } 10107 #pragma omp for 10108 for (int i = 0; i < 10; ++i) { 10109 #pragma omp taskyield 10110 bar(); 10111 } 10112 #pragma omp for 10113 for (int i = 0; i < 10; ++i) { 10114 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 10115 bar(); 10116 } 10117 #pragma omp for 10118 for (int i = 0; i < 10; ++i) { 10119 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10120 bar(); 10121 } 10122 #pragma omp for 10123 for (int i = 0; i < 10; ++i) { 10124 #pragma omp taskwait 10125 bar(); 10126 } 10127 #pragma omp for 10128 for (int i = 0; i < 10; ++i) { 10129 #pragma omp flush 10130 bar(); 10131 } 10132 #pragma omp for 10133 for (int i = 0; i < 10; ++i) { 10134 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 10135 bar(); 10136 } 10137 #pragma omp for ordered 10138 for (int i = 0; i < 10; ++i) { 10139 #pragma omp ordered // OK 10140 bar(); 10141 } 10142 #pragma omp for 10143 for (int i = 0; i < 10; ++i) { 10144 #pragma omp atomic 10145 ++a; 10146 } 10147 #pragma omp for 10148 for (int i = 0; i < 10; ++i) { 10149 #pragma omp target 10150 ++a; 10151 } 10152 #pragma omp for 10153 for (int i = 0; i < 10; ++i) { 10154 #pragma omp target parallel 10155 ++a; 10156 } 10157 #pragma omp for 10158 for (int i = 0; i < 10; ++i) { 10159 #pragma omp target parallel for 10160 for (int i = 0; i < 10; ++i) 10161 ; 10162 } 10163 #pragma omp for 10164 for (int i = 0; i < 10; ++i) { 10165 #pragma omp target enter data map(to: a) 10166 ++a; 10167 } 10168 #pragma omp for 10169 for (int i = 0; i < 10; ++i) { 10170 #pragma omp target exit data map(from: a) 10171 ++a; 10172 } 10173 #pragma omp for 10174 for (int i = 0; i < 10; ++i) { 10175 #pragma omp teams // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 10176 ++a; 10177 } 10178 #pragma omp for 10179 for (int i = 0; i < 10; ++i) { 10180 #pragma omp taskloop 10181 for (int i = 0; i < 10; ++i) 10182 ++a; 10183 } 10184 #pragma omp for 10185 for (int i = 0; i < 10; ++i) { 10186 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 10187 for (int j = 0; j < 10; ++j) 10188 ; 10189 } 10190 #pragma omp for 10191 for (int i = 0; i < 10; ++i) { 10192 #pragma omp target update to(a) 10193 ++a; 10194 } 10195 #pragma omp for 10196 for (int i = 0; i < 10; ++i) { 10197 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 10198 for (int j = 0; j < 10; ++j) 10199 ; 10200 } 10201 #pragma omp for 10202 for (int i = 0; i < 10; ++i) { 10203 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 10204 for (int j = 0; j < 10; ++j) 10205 ; 10206 } 10207 #pragma omp for 10208 for (int i = 0; i < 10; ++i) { 10209 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 10210 for (int j = 0; j < 10; ++j) 10211 ; 10212 } 10213 #pragma omp for 10214 for (int i = 0; i < 10; ++i) { 10215 #pragma omp target simd // OK 10216 for (int j = 0; j < 10; ++j) 10217 ; 10218 } 10219 #pragma omp for 10220 for (int i = 0; i < 10; ++i) { 10221 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 10222 for (int j = 0; j < 10; ++j) 10223 ; 10224 } 10225 #pragma omp for 10226 for (int i = 0; i < 10; ++i) { 10227 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 10228 for (int j = 0; j < 10; ++j) 10229 ; 10230 } 10231 #pragma omp for 10232 for (int i = 0; i < 10; ++i) { 10233 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 10234 for (int j = 0; j < 10; ++j) 10235 ; 10236 } 10237 #pragma omp for 10238 for (int i = 0; i < 10; ++i) { 10239 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 10240 for (int j = 0; j < 10; ++j) 10241 ; 10242 } 10243 #pragma omp for 10244 for (int i = 0; i < 10; ++i) { 10245 #pragma omp target teams // OK 10246 a++; 10247 } 10248 #pragma omp for 10249 for (int i = 0; i < 10; ++i) { 10250 #pragma omp target teams distribute // OK 10251 for (int j = 0; j < 10; ++j) 10252 ; 10253 } 10254 #pragma omp for 10255 for (int i = 0; i < 10; ++i) { 10256 #pragma omp target teams distribute parallel for // OK 10257 for (int j = 0; j < 10; ++j) 10258 ; 10259 } 10260 #pragma omp for 10261 for (int i = 0; i < 10; ++i) { 10262 #pragma omp target teams distribute parallel for simd // OK 10263 for (int j = 0; j < 10; ++j) 10264 ; 10265 } 10266 #pragma omp for 10267 for (int i = 0; i < 10; ++i) { 10268 #pragma omp target teams distribute simd // OK 10269 for (int j = 0; j < 10; ++j) 10270 ; 10271 } 10272 10273 // FOR SIMD DIRECTIVE 10274 #pragma omp for simd 10275 for (int i = 0; i < 10; ++i) { 10276 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10277 for (int i = 0; i < 10; ++i) 10278 ; 10279 } 10280 #pragma omp for simd 10281 for (int i = 0; i < 10; ++i) { 10282 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10283 for (int i = 0; i < 10; ++i) 10284 ; 10285 } 10286 #pragma omp for simd 10287 for (int i = 0; i < 10; ++i) { 10288 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10289 for (int i = 0; i < 10; ++i) 10290 ; 10291 } 10292 #pragma omp for simd 10293 for (int i = 0; i < 10; ++i) { 10294 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10295 for (int i = 0; i < 10; ++i) 10296 ; 10297 } 10298 #pragma omp for simd 10299 for (int i = 0; i < 10; ++i) { 10300 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10301 { 10302 bar(); 10303 } 10304 } 10305 #pragma omp for simd 10306 for (int i = 0; i < 10; ++i) { 10307 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10308 { 10309 bar(); 10310 } 10311 } 10312 #pragma omp for simd 10313 for (int i = 0; i < 10; ++i) { 10314 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10315 bar(); 10316 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10317 bar(); 10318 } 10319 #pragma omp for simd 10320 for (int i = 0; i < 10; ++i) { 10321 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10322 bar(); 10323 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10324 bar(); 10325 } 10326 #pragma omp for simd 10327 for (int i = 0; i < 10; ++i) { 10328 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10329 for (int i = 0; i < 10; ++i) 10330 ; 10331 } 10332 #pragma omp for simd 10333 for (int i = 0; i < 10; ++i) { 10334 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10335 for (int i = 0; i < 10; ++i) 10336 ; 10337 } 10338 #pragma omp for simd 10339 for (int i = 0; i < 10; ++i) { 10340 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10341 { 10342 bar(); 10343 } 10344 } 10345 #pragma omp for simd 10346 for (int i = 0; i < 10; ++i) { 10347 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10348 { 10349 bar(); 10350 } 10351 } 10352 #pragma omp for simd 10353 for (int i = 0; i < 10; ++i) { 10354 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10355 bar(); 10356 } 10357 #pragma omp for simd 10358 for (int i = 0; i < 10; ++i) { 10359 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10360 bar(); 10361 } 10362 #pragma omp for simd 10363 for (int i = 0; i < 10; ++i) { 10364 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10365 bar(); 10366 } 10367 #pragma omp for simd 10368 for (int i = 0; i < 10; ++i) { 10369 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10370 bar(); 10371 } 10372 #pragma omp for simd 10373 for (int i = 0; i < 10; ++i) { 10374 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10375 bar(); 10376 } 10377 #pragma omp for simd 10378 for (int i = 0; i < 10; ++i) { 10379 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10380 bar(); 10381 } 10382 #pragma omp for simd 10383 for (int i = 0; i < 10; ++i) { 10384 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 10385 ++a; 10386 } 10387 #pragma omp for simd 10388 for (int i = 0; i < 10; ++i) { 10389 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10390 ++a; 10391 } 10392 #pragma omp for simd 10393 for (int i = 0; i < 10; ++i) { 10394 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10395 ++a; 10396 } 10397 #pragma omp for simd 10398 for (int i = 0; i < 10; ++i) { 10399 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10400 for (int i = 0; i < 10; ++i) 10401 ; 10402 } 10403 #pragma omp for simd 10404 for (int i = 0; i < 10; ++i) { 10405 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10406 ++a; 10407 } 10408 #pragma omp for simd 10409 for (int i = 0; i < 10; ++i) { 10410 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10411 ++a; 10412 } 10413 #pragma omp for simd 10414 for (int i = 0; i < 10; ++i) { 10415 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10416 ++a; 10417 } 10418 #pragma omp for simd 10419 for (int i = 0; i < 10; ++i) { 10420 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10421 for (int i = 0; i < 10; ++i) 10422 ++a; 10423 } 10424 #pragma omp for simd 10425 for (int i = 0; i < 10; ++i) { 10426 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10427 for (int j = 0; j < 10; ++j) 10428 ; 10429 } 10430 #pragma omp for simd 10431 for (int i = 0; i < 10; ++i) { 10432 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10433 ++a; 10434 } 10435 #pragma omp for simd 10436 for (int i = 0; i < 10; ++i) { 10437 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10438 for (int j = 0; j < 10; ++j) 10439 ; 10440 } 10441 #pragma omp for simd 10442 for (int i = 0; i < 10; ++i) { 10443 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10444 for (int j = 0; j < 10; ++j) 10445 ; 10446 } 10447 #pragma omp for simd 10448 for (int i = 0; i < 10; ++i) { 10449 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10450 for (int j = 0; j < 10; ++j) 10451 ; 10452 } 10453 #pragma omp for simd 10454 for (int i = 0; i < 10; ++i) { 10455 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10456 for (int j = 0; j < 10; ++j) 10457 ; 10458 } 10459 #pragma omp for simd 10460 for (int i = 0; i < 10; ++i) { 10461 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10462 for (int j = 0; j < 10; ++j) 10463 ; 10464 } 10465 #pragma omp for simd 10466 for (int i = 0; i < 10; ++i) { 10467 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10468 for (int j = 0; j < 10; ++j) 10469 ; 10470 } 10471 #pragma omp for simd 10472 for (int i = 0; i < 10; ++i) { 10473 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10474 for (int j = 0; j < 10; ++j) 10475 ; 10476 } 10477 #pragma omp for simd 10478 for (int i = 0; i < 10; ++i) { 10479 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10480 for (int j = 0; j < 10; ++j) 10481 ; 10482 } 10483 #pragma omp for simd 10484 for (int i = 0; i < 10; ++i) { 10485 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10486 a++; 10487 } 10488 #pragma omp for simd 10489 for (int i = 0; i < 10; ++i) { 10490 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10491 for (int j = 0; j < 10; ++j) 10492 ; 10493 } 10494 #pragma omp for simd 10495 for (int i = 0; i < 10; ++i) { 10496 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10497 for (int j = 0; j < 10; ++j) 10498 ; 10499 } 10500 #pragma omp for simd 10501 for (int i = 0; i < 10; ++i) { 10502 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10503 for (int j = 0; j < 10; ++j) 10504 ; 10505 } 10506 #pragma omp for simd 10507 for (int i = 0; i < 10; ++i) { 10508 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10509 for (int j = 0; j < 10; ++j) 10510 ; 10511 } 10512 10513 // SECTIONS DIRECTIVE 10514 #pragma omp sections 10515 { 10516 #pragma omp for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 10517 for (int i = 0; i < 10; ++i) 10518 ; 10519 } 10520 #pragma omp sections 10521 { 10522 #pragma omp simd 10523 for (int i = 0; i < 10; ++i) 10524 ; 10525 } 10526 #pragma omp sections 10527 { 10528 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 10529 for (int i = 0; i < 10; ++i) 10530 ; 10531 } 10532 #pragma omp sections 10533 { 10534 #pragma omp parallel 10535 for (int i = 0; i < 10; ++i) 10536 ; 10537 } 10538 #pragma omp sections 10539 { 10540 #pragma omp sections // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 10541 { 10542 bar(); 10543 } 10544 } 10545 #pragma omp sections 10546 { 10547 #pragma omp section 10548 { 10549 bar(); 10550 } 10551 } 10552 #pragma omp sections 10553 { 10554 #pragma omp critical 10555 bar(); 10556 #pragma omp single // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 10557 bar(); 10558 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 10559 bar(); 10560 } 10561 #pragma omp sections 10562 { 10563 #pragma omp parallel 10564 { 10565 #pragma omp single // OK 10566 { 10567 bar(); 10568 } 10569 #pragma omp for // OK 10570 for (int i = 0; i < 10; ++i) 10571 ; 10572 #pragma omp for simd // OK 10573 for (int i = 0; i < 10; ++i) 10574 ; 10575 #pragma omp sections // OK 10576 { 10577 bar(); 10578 } 10579 } 10580 } 10581 #pragma omp sections 10582 { 10583 #pragma omp parallel for 10584 for (int i = 0; i < 10; ++i) 10585 ; 10586 } 10587 #pragma omp sections 10588 { 10589 #pragma omp parallel for simd 10590 for (int i = 0; i < 10; ++i) 10591 ; 10592 } 10593 #pragma omp sections 10594 { 10595 #pragma omp parallel sections 10596 { 10597 bar(); 10598 } 10599 } 10600 #pragma omp sections 10601 { 10602 #pragma omp task 10603 { 10604 bar(); 10605 } 10606 } 10607 #pragma omp sections 10608 { 10609 #pragma omp taskyield 10610 } 10611 #pragma omp sections 10612 { 10613 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 10614 bar(); 10615 } 10616 #pragma omp sections 10617 { 10618 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}} 10619 bar(); 10620 } 10621 #pragma omp sections 10622 { 10623 #pragma omp taskwait 10624 } 10625 #pragma omp sections 10626 { 10627 #pragma omp flush 10628 } 10629 #pragma omp sections 10630 { 10631 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 10632 bar(); 10633 } 10634 #pragma omp sections 10635 { 10636 #pragma omp atomic 10637 ++a; 10638 } 10639 #pragma omp sections 10640 { 10641 #pragma omp target 10642 ++a; 10643 } 10644 #pragma omp sections 10645 { 10646 #pragma omp target parallel 10647 ++a; 10648 } 10649 #pragma omp sections 10650 { 10651 #pragma omp target parallel for 10652 for (int i = 0; i < 10; ++i) 10653 ; 10654 } 10655 #pragma omp sections 10656 { 10657 #pragma omp target enter data map(to: a) 10658 } 10659 #pragma omp sections 10660 { 10661 #pragma omp target exit data map(from: a) 10662 } 10663 #pragma omp sections 10664 { 10665 #pragma omp teams // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 10666 ++a; 10667 } 10668 #pragma omp sections 10669 { 10670 #pragma omp taskloop 10671 for (int i = 0; i < 10; ++i) 10672 ++a; 10673 } 10674 #pragma omp sections 10675 { 10676 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 10677 for (int i = 0; i < 10; ++i) 10678 ; 10679 } 10680 #pragma omp sections 10681 { 10682 #pragma omp target update to(a) 10683 } 10684 #pragma omp sections 10685 { 10686 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 10687 for (int i = 0; i < 10; ++i) 10688 ; 10689 } 10690 #pragma omp sections 10691 { 10692 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 10693 for (int i = 0; i < 10; ++i) 10694 ; 10695 } 10696 #pragma omp sections 10697 { 10698 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 10699 for (int i = 0; i < 10; ++i) 10700 ; 10701 } 10702 #pragma omp sections 10703 { 10704 #pragma omp target simd // OK 10705 for (int i = 0; i < 10; ++i) 10706 ; 10707 } 10708 #pragma omp sections 10709 { 10710 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 10711 for (int i = 0; i < 10; ++i) 10712 ; 10713 } 10714 #pragma omp sections 10715 { 10716 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 10717 for (int i = 0; i < 10; ++i) 10718 ; 10719 } 10720 #pragma omp sections 10721 { 10722 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 10723 for (int i = 0; i < 10; ++i) 10724 ; 10725 } 10726 #pragma omp sections 10727 { 10728 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 10729 for (int i = 0; i < 10; ++i) 10730 ; 10731 } 10732 #pragma omp sections 10733 { 10734 #pragma omp target teams // OK 10735 a++; 10736 } 10737 #pragma omp sections 10738 { 10739 #pragma omp target teams distribute // OK 10740 for (int i = 0; i < 10; ++i) 10741 ; 10742 } 10743 #pragma omp sections 10744 { 10745 #pragma omp target teams distribute parallel for // OK 10746 for (int i = 0; i < 10; ++i) 10747 ; 10748 } 10749 #pragma omp sections 10750 { 10751 #pragma omp target teams distribute parallel for simd // OK 10752 for (int i = 0; i < 10; ++i) 10753 ; 10754 } 10755 #pragma omp sections 10756 { 10757 #pragma omp target teams distribute simd // OK 10758 for (int i = 0; i < 10; ++i) 10759 ; 10760 } 10761 10762 // SECTION DIRECTIVE 10763 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 10764 { 10765 bar(); 10766 } 10767 #pragma omp sections 10768 { 10769 #pragma omp section 10770 { 10771 #pragma omp for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 10772 for (int i = 0; i < 10; ++i) 10773 ; 10774 } 10775 } 10776 #pragma omp sections 10777 { 10778 #pragma omp section 10779 { 10780 #pragma omp simd 10781 for (int i = 0; i < 10; ++i) 10782 ; 10783 } 10784 } 10785 #pragma omp sections 10786 { 10787 #pragma omp section 10788 { 10789 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 10790 for (int i = 0; i < 10; ++i) 10791 ; 10792 } 10793 } 10794 #pragma omp sections 10795 { 10796 #pragma omp section 10797 { 10798 #pragma omp parallel 10799 for (int i = 0; i < 10; ++i) 10800 ; 10801 } 10802 } 10803 #pragma omp sections 10804 { 10805 #pragma omp section 10806 { 10807 #pragma omp sections // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 10808 { 10809 bar(); 10810 } 10811 } 10812 } 10813 #pragma omp sections 10814 { 10815 #pragma omp section 10816 { 10817 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 10818 { 10819 bar(); 10820 } 10821 } 10822 } 10823 #pragma omp sections 10824 { 10825 #pragma omp section 10826 { 10827 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 10828 bar(); 10829 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 10830 bar(); 10831 #pragma omp critical 10832 bar(); 10833 } 10834 } 10835 #pragma omp sections 10836 { 10837 #pragma omp section 10838 { 10839 #pragma omp parallel 10840 { 10841 #pragma omp single // OK 10842 { 10843 bar(); 10844 } 10845 #pragma omp for // OK 10846 for (int i = 0; i < 10; ++i) 10847 ; 10848 #pragma omp for simd // OK 10849 for (int i = 0; i < 10; ++i) 10850 ; 10851 #pragma omp sections // OK 10852 { 10853 bar(); 10854 } 10855 } 10856 } 10857 } 10858 #pragma omp sections 10859 { 10860 #pragma omp section 10861 { 10862 #pragma omp parallel for 10863 for (int i = 0; i < 10; ++i) 10864 ; 10865 } 10866 } 10867 #pragma omp sections 10868 { 10869 #pragma omp section 10870 { 10871 #pragma omp parallel for simd 10872 for (int i = 0; i < 10; ++i) 10873 ; 10874 } 10875 } 10876 #pragma omp sections 10877 { 10878 #pragma omp section 10879 { 10880 #pragma omp parallel sections 10881 { 10882 bar(); 10883 } 10884 } 10885 } 10886 #pragma omp sections 10887 { 10888 #pragma omp section 10889 { 10890 #pragma omp task 10891 { 10892 bar(); 10893 } 10894 } 10895 } 10896 #pragma omp sections 10897 { 10898 #pragma omp section 10899 { 10900 #pragma omp taskyield 10901 bar(); 10902 } 10903 } 10904 #pragma omp sections 10905 { 10906 #pragma omp section 10907 { 10908 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 10909 bar(); 10910 } 10911 } 10912 #pragma omp sections 10913 { 10914 #pragma omp section 10915 { 10916 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}} 10917 bar(); 10918 } 10919 } 10920 #pragma omp sections 10921 { 10922 #pragma omp section 10923 { 10924 #pragma omp taskwait 10925 bar(); 10926 } 10927 } 10928 #pragma omp sections 10929 { 10930 #pragma omp section 10931 { 10932 #pragma omp flush 10933 bar(); 10934 } 10935 } 10936 #pragma omp sections 10937 { 10938 #pragma omp section 10939 { 10940 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 10941 bar(); 10942 } 10943 } 10944 #pragma omp sections 10945 { 10946 #pragma omp section 10947 { 10948 #pragma omp atomic 10949 ++a; 10950 } 10951 } 10952 #pragma omp sections 10953 { 10954 #pragma omp section 10955 { 10956 #pragma omp target 10957 ++a; 10958 } 10959 } 10960 #pragma omp sections 10961 { 10962 #pragma omp section 10963 { 10964 #pragma omp target parallel 10965 ++a; 10966 } 10967 } 10968 #pragma omp sections 10969 { 10970 #pragma omp section 10971 { 10972 #pragma omp target parallel for 10973 for (int i = 0; i < 10; ++i) 10974 ; 10975 } 10976 } 10977 #pragma omp sections 10978 { 10979 #pragma omp section 10980 { 10981 #pragma omp target enter data map(to: a) 10982 ++a; 10983 } 10984 } 10985 #pragma omp sections 10986 { 10987 #pragma omp section 10988 { 10989 #pragma omp target exit data map(from: a) 10990 ++a; 10991 } 10992 } 10993 #pragma omp sections 10994 { 10995 #pragma omp section 10996 { 10997 #pragma omp teams // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 10998 ++a; 10999 } 11000 } 11001 #pragma omp sections 11002 { 11003 #pragma omp section 11004 { 11005 #pragma omp taskloop 11006 for (int i = 0; i < 10; ++i) 11007 ++a; 11008 } 11009 } 11010 #pragma omp sections 11011 { 11012 #pragma omp section 11013 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 11014 for (int i = 0; i < 10; ++i) 11015 ; 11016 } 11017 #pragma omp sections 11018 { 11019 #pragma omp section 11020 { 11021 #pragma omp target update to(a) 11022 a++; 11023 } 11024 } 11025 #pragma omp sections 11026 { 11027 #pragma omp section 11028 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 11029 for (int i = 0; i < 10; ++i) 11030 ; 11031 } 11032 #pragma omp sections 11033 { 11034 #pragma omp section 11035 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 11036 for (int i = 0; i < 10; ++i) 11037 ; 11038 } 11039 #pragma omp sections 11040 { 11041 #pragma omp section 11042 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 11043 for (int i = 0; i < 10; ++i) 11044 ; 11045 } 11046 #pragma omp sections 11047 { 11048 #pragma omp section 11049 #pragma omp target simd // OK 11050 for (int i = 0; i < 10; ++i) 11051 ; 11052 } 11053 #pragma omp sections 11054 { 11055 #pragma omp section 11056 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 11057 for (int i = 0; i < 10; ++i) 11058 ; 11059 } 11060 #pragma omp sections 11061 { 11062 #pragma omp section 11063 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 11064 for (int i = 0; i < 10; ++i) 11065 ; 11066 } 11067 #pragma omp sections 11068 { 11069 #pragma omp section 11070 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11071 for (int i = 0; i < 10; ++i) 11072 ; 11073 } 11074 #pragma omp sections 11075 { 11076 #pragma omp section 11077 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11078 for (int i = 0; i < 10; ++i) 11079 ; 11080 } 11081 #pragma omp sections 11082 { 11083 #pragma omp section 11084 #pragma omp target teams // OK 11085 a++; 11086 } 11087 #pragma omp sections 11088 { 11089 #pragma omp section 11090 #pragma omp target teams distribute // OK 11091 for (int i = 0; i < 10; ++i) 11092 ; 11093 } 11094 #pragma omp sections 11095 { 11096 #pragma omp section 11097 #pragma omp target teams distribute parallel for // OK 11098 for (int i = 0; i < 10; ++i) 11099 ; 11100 } 11101 #pragma omp sections 11102 { 11103 #pragma omp section 11104 #pragma omp target teams distribute parallel for simd // OK 11105 for (int i = 0; i < 10; ++i) 11106 ; 11107 } 11108 #pragma omp sections 11109 { 11110 #pragma omp section 11111 #pragma omp target teams distribute simd // OK 11112 for (int i = 0; i < 10; ++i) 11113 ; 11114 } 11115 11116 // SINGLE DIRECTIVE 11117 #pragma omp single 11118 { 11119 #pragma omp for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 11120 for (int i = 0; i < 10; ++i) 11121 ; 11122 } 11123 #pragma omp single 11124 { 11125 #pragma omp simd 11126 for (int i = 0; i < 10; ++i) 11127 ; 11128 } 11129 #pragma omp single 11130 { 11131 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 11132 for (int i = 0; i < 10; ++i) 11133 ; 11134 } 11135 #pragma omp single 11136 { 11137 #pragma omp parallel 11138 for (int i = 0; i < 10; ++i) 11139 ; 11140 } 11141 #pragma omp single 11142 { 11143 #pragma omp single // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 11144 { 11145 bar(); 11146 } 11147 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 11148 bar(); 11149 #pragma omp critical 11150 bar(); 11151 } 11152 #pragma omp single 11153 { 11154 #pragma omp sections // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 11155 { 11156 bar(); 11157 } 11158 } 11159 #pragma omp single 11160 { 11161 #pragma omp parallel 11162 { 11163 #pragma omp single // OK 11164 { 11165 bar(); 11166 } 11167 #pragma omp for // OK 11168 for (int i = 0; i < 10; ++i) 11169 ; 11170 #pragma omp for simd // OK 11171 for (int i = 0; i < 10; ++i) 11172 ; 11173 #pragma omp sections // OK 11174 { 11175 bar(); 11176 } 11177 } 11178 } 11179 #pragma omp single 11180 { 11181 #pragma omp parallel for 11182 for (int i = 0; i < 10; ++i) 11183 ; 11184 } 11185 #pragma omp single 11186 { 11187 #pragma omp parallel for simd 11188 for (int i = 0; i < 10; ++i) 11189 ; 11190 } 11191 #pragma omp single 11192 { 11193 #pragma omp parallel sections 11194 { 11195 bar(); 11196 } 11197 } 11198 #pragma omp single 11199 { 11200 #pragma omp task 11201 { 11202 bar(); 11203 } 11204 } 11205 #pragma omp single 11206 { 11207 #pragma omp taskyield 11208 bar(); 11209 } 11210 #pragma omp single 11211 { 11212 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 11213 bar(); 11214 } 11215 #pragma omp single 11216 { 11217 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}} 11218 bar(); 11219 } 11220 #pragma omp single 11221 { 11222 #pragma omp taskwait 11223 bar(); 11224 } 11225 #pragma omp single 11226 { 11227 #pragma omp flush 11228 bar(); 11229 } 11230 #pragma omp single 11231 { 11232 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 11233 bar(); 11234 } 11235 #pragma omp single 11236 { 11237 #pragma omp atomic 11238 ++a; 11239 } 11240 #pragma omp single 11241 { 11242 #pragma omp target 11243 ++a; 11244 } 11245 #pragma omp single 11246 { 11247 #pragma omp target parallel 11248 ++a; 11249 } 11250 #pragma omp single 11251 { 11252 #pragma omp target parallel for 11253 for (int i = 0; i < 10; ++i) 11254 ; 11255 } 11256 #pragma omp single 11257 { 11258 #pragma omp target enter data map(to: a) 11259 ++a; 11260 } 11261 #pragma omp single 11262 { 11263 #pragma omp target exit data map(from: a) 11264 ++a; 11265 } 11266 #pragma omp single 11267 { 11268 #pragma omp teams // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 11269 ++a; 11270 } 11271 #pragma omp single 11272 { 11273 #pragma omp taskloop 11274 for (int i = 0; i < 10; ++i) 11275 ++a; 11276 } 11277 #pragma omp single 11278 { 11279 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 11280 for (int i = 0; i < 10; ++i) 11281 ; 11282 } 11283 #pragma omp single 11284 { 11285 #pragma omp target update to(a) 11286 a++; 11287 } 11288 #pragma omp single 11289 { 11290 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 11291 for (int i = 0; i < 10; ++i) 11292 ; 11293 } 11294 #pragma omp single 11295 { 11296 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 11297 for (int i = 0; i < 10; ++i) 11298 ; 11299 } 11300 #pragma omp single 11301 { 11302 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 11303 for (int i = 0; i < 10; ++i) 11304 ; 11305 } 11306 #pragma omp single 11307 { 11308 #pragma omp target simd // OK 11309 for (int i = 0; i < 10; ++i) 11310 ; 11311 } 11312 #pragma omp single 11313 { 11314 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 11315 for (int i = 0; i < 10; ++i) 11316 ; 11317 } 11318 #pragma omp single 11319 { 11320 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 11321 for (int i = 0; i < 10; ++i) 11322 ; 11323 } 11324 #pragma omp single 11325 { 11326 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11327 for (int i = 0; i < 10; ++i) 11328 ; 11329 } 11330 #pragma omp single 11331 { 11332 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11333 for (int i = 0; i < 10; ++i) 11334 ; 11335 } 11336 #pragma omp single 11337 { 11338 #pragma omp target teams // oK 11339 a++; 11340 } 11341 #pragma omp single 11342 { 11343 #pragma omp target teams distribute // OK 11344 for (int i = 0; i < 10; ++i) 11345 ; 11346 } 11347 #pragma omp single 11348 { 11349 #pragma omp target teams distribute parallel for // OK 11350 for (int i = 0; i < 10; ++i) 11351 ; 11352 } 11353 #pragma omp single 11354 { 11355 #pragma omp target teams distribute parallel for simd // OK 11356 for (int i = 0; i < 10; ++i) 11357 ; 11358 } 11359 #pragma omp single 11360 { 11361 #pragma omp target teams distribute simd // OK 11362 for (int i = 0; i < 10; ++i) 11363 ; 11364 } 11365 11366 // MASTER DIRECTIVE 11367 #pragma omp master 11368 { 11369 #pragma omp for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 11370 for (int i = 0; i < 10; ++i) 11371 ; 11372 } 11373 #pragma omp master 11374 { 11375 #pragma omp simd 11376 for (int i = 0; i < 10; ++i) 11377 ; 11378 } 11379 #pragma omp master 11380 { 11381 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 11382 for (int i = 0; i < 10; ++i) 11383 ; 11384 } 11385 #pragma omp master 11386 { 11387 #pragma omp parallel 11388 for (int i = 0; i < 10; ++i) 11389 ; 11390 } 11391 #pragma omp parallel master 11392 { 11393 for (int i = 0; i < 10; ++i) 11394 ; 11395 } 11396 #pragma omp master 11397 { 11398 #pragma omp single // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 11399 { 11400 bar(); 11401 } 11402 } 11403 #pragma omp master 11404 { 11405 #pragma omp master // OK, though second 'master' is redundant 11406 { 11407 bar(); 11408 } 11409 } 11410 #pragma omp master 11411 { 11412 #pragma omp critical 11413 { 11414 bar(); 11415 } 11416 } 11417 #pragma omp master 11418 { 11419 #pragma omp sections // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 11420 { 11421 bar(); 11422 } 11423 } 11424 #pragma omp master 11425 { 11426 #pragma omp parallel 11427 { 11428 #pragma omp master // OK 11429 { 11430 bar(); 11431 } 11432 #pragma omp for // OK 11433 for (int i = 0; i < 10; ++i) 11434 ; 11435 #pragma omp for simd // OK 11436 for (int i = 0; i < 10; ++i) 11437 ; 11438 #pragma omp sections // OK 11439 { 11440 bar(); 11441 } 11442 } 11443 } 11444 #pragma omp master 11445 { 11446 #pragma omp parallel master 11447 { 11448 bar(); 11449 } 11450 } 11451 #pragma omp master 11452 { 11453 #pragma omp parallel for 11454 for (int i = 0; i < 10; ++i) 11455 ; 11456 } 11457 #pragma omp master 11458 { 11459 #pragma omp parallel for simd 11460 for (int i = 0; i < 10; ++i) 11461 ; 11462 } 11463 #pragma omp master 11464 { 11465 #pragma omp parallel sections 11466 { 11467 bar(); 11468 } 11469 } 11470 #pragma omp master 11471 { 11472 #pragma omp task 11473 { 11474 bar(); 11475 } 11476 } 11477 #pragma omp master 11478 { 11479 #pragma omp taskyield 11480 bar(); 11481 } 11482 #pragma omp master 11483 { 11484 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 11485 bar(); 11486 } 11487 #pragma omp master 11488 { 11489 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}} 11490 bar(); 11491 } 11492 #pragma omp master 11493 { 11494 #pragma omp taskwait 11495 bar(); 11496 } 11497 #pragma omp master 11498 { 11499 #pragma omp flush 11500 bar(); 11501 } 11502 #pragma omp master 11503 { 11504 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 11505 bar(); 11506 } 11507 #pragma omp master 11508 { 11509 #pragma omp atomic 11510 ++a; 11511 } 11512 #pragma omp master 11513 { 11514 #pragma omp target 11515 ++a; 11516 } 11517 #pragma omp master 11518 { 11519 #pragma omp target parallel 11520 ++a; 11521 } 11522 #pragma omp master 11523 { 11524 #pragma omp target parallel for 11525 for (int i = 0; i < 10; ++i) 11526 ; 11527 } 11528 #pragma omp master 11529 { 11530 #pragma omp target enter data map(to: a) 11531 ++a; 11532 } 11533 #pragma omp master 11534 { 11535 #pragma omp target exit data map(from: a) 11536 ++a; 11537 } 11538 #pragma omp master 11539 { 11540 #pragma omp teams // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 11541 ++a; 11542 } 11543 #pragma omp master 11544 { 11545 #pragma omp taskloop 11546 for (int i = 0; i < 10; ++i) 11547 ++a; 11548 } 11549 #pragma omp master 11550 { 11551 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 11552 for (int i = 0; i < 10; ++i) 11553 ; 11554 } 11555 #pragma omp master 11556 { 11557 #pragma omp target update to(a) 11558 ++a; 11559 } 11560 #pragma omp master 11561 { 11562 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 11563 for (int i = 0; i < 10; ++i) 11564 ; 11565 } 11566 #pragma omp master 11567 { 11568 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 11569 for (int i = 0; i < 10; ++i) 11570 ; 11571 } 11572 #pragma omp master 11573 { 11574 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 11575 for (int i = 0; i < 10; ++i) 11576 ; 11577 } 11578 #pragma omp master 11579 { 11580 #pragma omp target simd // OK 11581 for (int i = 0; i < 10; ++i) 11582 ; 11583 } 11584 #pragma omp master 11585 { 11586 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 11587 for (int i = 0; i < 10; ++i) 11588 ; 11589 } 11590 #pragma omp master 11591 { 11592 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 11593 for (int i = 0; i < 10; ++i) 11594 ; 11595 } 11596 #pragma omp master 11597 { 11598 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11599 for (int i = 0; i < 10; ++i) 11600 ; 11601 } 11602 #pragma omp master 11603 { 11604 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11605 for (int i = 0; i < 10; ++i) 11606 ; 11607 } 11608 #pragma omp master 11609 { 11610 #pragma omp target teams // OK 11611 a++; 11612 } 11613 #pragma omp master 11614 { 11615 #pragma omp target teams distribute // OK 11616 for (int i = 0; i < 10; ++i) 11617 ; 11618 } 11619 #pragma omp master 11620 { 11621 #pragma omp target teams distribute parallel for // OK 11622 for (int i = 0; i < 10; ++i) 11623 ; 11624 } 11625 #pragma omp master 11626 { 11627 #pragma omp target teams distribute parallel for simd // OK 11628 for (int i = 0; i < 10; ++i) 11629 ; 11630 } 11631 #pragma omp master 11632 { 11633 #pragma omp target teams distribute simd // OK 11634 for (int i = 0; i < 10; ++i) 11635 ; 11636 } 11637 11638 // CRITICAL DIRECTIVE 11639 #pragma omp critical 11640 { 11641 #pragma omp for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 11642 for (int i = 0; i < 10; ++i) 11643 ; 11644 } 11645 #pragma omp critical 11646 { 11647 #pragma omp simd 11648 for (int i = 0; i < 10; ++i) 11649 ; 11650 } 11651 #pragma omp critical 11652 { 11653 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 11654 for (int i = 0; i < 10; ++i) 11655 ; 11656 } 11657 #pragma omp critical 11658 { 11659 #pragma omp parallel 11660 for (int i = 0; i < 10; ++i) 11661 ; 11662 } 11663 #pragma omp critical 11664 { 11665 #pragma omp single // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 11666 { 11667 bar(); 11668 } 11669 } 11670 #pragma omp critical 11671 { 11672 #pragma omp master // OK, though second 'master' is redundant 11673 { 11674 bar(); 11675 } 11676 } 11677 #pragma omp critical 11678 { 11679 #pragma omp critical 11680 { 11681 bar(); 11682 } 11683 } 11684 #pragma omp critical 11685 { 11686 #pragma omp sections // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 11687 { 11688 bar(); 11689 } 11690 } 11691 #pragma omp critical 11692 { 11693 #pragma omp parallel 11694 { 11695 #pragma omp master // OK 11696 { 11697 bar(); 11698 } 11699 #pragma omp for // OK 11700 for (int i = 0; i < 10; ++i) 11701 ; 11702 #pragma omp for simd // OK 11703 for (int i = 0; i < 10; ++i) 11704 ; 11705 #pragma omp sections // OK 11706 { 11707 bar(); 11708 } 11709 } 11710 } 11711 #pragma omp critical 11712 { 11713 #pragma omp parallel for 11714 for (int i = 0; i < 10; ++i) 11715 ; 11716 } 11717 #pragma omp critical 11718 { 11719 #pragma omp parallel for simd 11720 for (int i = 0; i < 10; ++i) 11721 ; 11722 } 11723 #pragma omp critical 11724 { 11725 #pragma omp parallel sections 11726 { 11727 bar(); 11728 } 11729 } 11730 #pragma omp critical 11731 { 11732 #pragma omp task 11733 { 11734 bar(); 11735 } 11736 } 11737 #pragma omp critical 11738 { 11739 #pragma omp taskyield 11740 bar(); 11741 } 11742 #pragma omp critical 11743 { 11744 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 11745 bar(); 11746 } 11747 #pragma omp critical 11748 { 11749 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}} 11750 bar(); 11751 } 11752 #pragma omp critical 11753 { 11754 #pragma omp taskwait 11755 bar(); 11756 } 11757 #pragma omp critical(Belka) 11758 { 11759 #pragma omp critical(Strelka) 11760 bar(); 11761 } 11762 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 11763 { 11764 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 11765 { 11766 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 11767 { 11768 #pragma omp parallel 11769 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 11770 { 11771 bar(); 11772 } 11773 } 11774 } 11775 } 11776 #pragma omp critical 11777 { 11778 #pragma omp flush 11779 bar(); 11780 } 11781 #pragma omp critical 11782 { 11783 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 11784 bar(); 11785 } 11786 #pragma omp critical 11787 { 11788 #pragma omp atomic 11789 ++a; 11790 } 11791 #pragma omp critical 11792 { 11793 #pragma omp target 11794 ++a; 11795 } 11796 #pragma omp critical 11797 { 11798 #pragma omp target parallel 11799 ++a; 11800 } 11801 #pragma omp critical 11802 { 11803 #pragma omp target parallel for 11804 for (int i = 0; i < 10; ++i) 11805 ; 11806 } 11807 #pragma omp critical 11808 { 11809 #pragma omp target enter data map(to: a) 11810 ++a; 11811 } 11812 #pragma omp critical 11813 { 11814 #pragma omp target exit data map(from: a) 11815 ++a; 11816 } 11817 #pragma omp critical 11818 { 11819 #pragma omp teams // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 11820 ++a; 11821 } 11822 #pragma omp critical 11823 { 11824 #pragma omp taskloop 11825 for (int i = 0; i < 10; ++i) 11826 ++a; 11827 } 11828 #pragma omp critical 11829 { 11830 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 11831 for (int i = 0; i < 10; ++i) 11832 ; 11833 } 11834 #pragma omp critical 11835 { 11836 #pragma omp target update to(a) 11837 a++; 11838 } 11839 #pragma omp critical 11840 { 11841 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 11842 for (int i = 0; i < 10; ++i) 11843 ; 11844 } 11845 #pragma omp critical 11846 { 11847 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 11848 for (int i = 0; i < 10; ++i) 11849 ; 11850 } 11851 #pragma omp critical 11852 { 11853 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 11854 for (int i = 0; i < 10; ++i) 11855 ; 11856 } 11857 #pragma omp critical 11858 { 11859 #pragma omp target simd // OK 11860 for (int i = 0; i < 10; ++i) 11861 ; 11862 } 11863 #pragma omp critical 11864 { 11865 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 11866 for (int i = 0; i < 10; ++i) 11867 ; 11868 } 11869 #pragma omp critical 11870 { 11871 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 11872 for (int i = 0; i < 10; ++i) 11873 ; 11874 } 11875 #pragma omp critical 11876 { 11877 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11878 for (int i = 0; i < 10; ++i) 11879 ; 11880 } 11881 #pragma omp critical 11882 { 11883 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11884 for (int i = 0; i < 10; ++i) 11885 ; 11886 } 11887 #pragma omp critical 11888 { 11889 #pragma omp target teams // OK 11890 a++; 11891 } 11892 #pragma omp critical 11893 { 11894 #pragma omp target teams distribute // OK 11895 for (int i = 0; i < 10; ++i) 11896 ; 11897 } 11898 #pragma omp critical 11899 { 11900 #pragma omp target teams distribute parallel for // OK 11901 for (int i = 0; i < 10; ++i) 11902 ; 11903 } 11904 #pragma omp critical 11905 { 11906 #pragma omp target teams distribute parallel for simd // OK 11907 for (int i = 0; i < 10; ++i) 11908 ; 11909 } 11910 #pragma omp critical 11911 { 11912 #pragma omp target teams distribute simd // OK 11913 for (int i = 0; i < 10; ++i) 11914 ; 11915 } 11916 11917 // PARALLEL FOR DIRECTIVE 11918 #pragma omp parallel for 11919 for (int i = 0; i < 10; ++i) { 11920 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 11921 for (int i = 0; i < 10; ++i) 11922 ; 11923 } 11924 #pragma omp parallel for 11925 for (int i = 0; i < 10; ++i) { 11926 #pragma omp simd 11927 for (int i = 0; i < 10; ++i) 11928 ; 11929 } 11930 #pragma omp parallel for 11931 for (int i = 0; i < 10; ++i) { 11932 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 11933 for (int i = 0; i < 10; ++i) 11934 ; 11935 } 11936 11937 #pragma omp parallel for 11938 for (int i = 0; i < 10; ++i) { 11939 #pragma omp parallel 11940 for (int i = 0; i < 10; ++i) 11941 ; 11942 } 11943 #pragma omp parallel for 11944 for (int i = 0; i < 10; ++i) { 11945 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 11946 { 11947 bar(); 11948 } 11949 } 11950 #pragma omp parallel for 11951 for (int i = 0; i < 10; ++i) { 11952 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 11953 { 11954 bar(); 11955 } 11956 } 11957 #pragma omp parallel for 11958 for (int i = 0; i < 10; ++i) { 11959 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 11960 { 11961 bar(); 11962 } 11963 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11964 { 11965 bar(); 11966 } 11967 #pragma omp critical 11968 { 11969 bar(); 11970 } 11971 } 11972 #pragma omp parallel for 11973 for (int i = 0; i < 10; ++i) { 11974 #pragma omp parallel 11975 { 11976 #pragma omp single // OK 11977 { 11978 bar(); 11979 } 11980 #pragma omp master // OK 11981 { 11982 bar(); 11983 } 11984 #pragma omp critical // OK 11985 { 11986 bar(); 11987 } 11988 #pragma omp for // OK 11989 for (int i = 0; i < 10; ++i) 11990 ; 11991 #pragma omp for simd // OK 11992 for (int i = 0; i < 10; ++i) 11993 ; 11994 #pragma omp sections // OK 11995 { 11996 bar(); 11997 } 11998 } 11999 } 12000 #pragma omp parallel for 12001 for (int i = 0; i < 10; ++i) { 12002 #pragma omp parallel for 12003 for (int i = 0; i < 10; ++i) 12004 ; 12005 } 12006 #pragma omp parallel for 12007 for (int i = 0; i < 10; ++i) { 12008 #pragma omp parallel for simd 12009 for (int i = 0; i < 10; ++i) 12010 ; 12011 } 12012 #pragma omp parallel for 12013 for (int i = 0; i < 10; ++i) { 12014 #pragma omp parallel sections 12015 { 12016 bar(); 12017 } 12018 } 12019 #pragma omp parallel for 12020 for (int i = 0; i < 10; ++i) { 12021 #pragma omp task 12022 { 12023 bar(); 12024 } 12025 } 12026 #pragma omp parallel for 12027 for (int i = 0; i < 10; ++i) { 12028 #pragma omp taskyield 12029 bar(); 12030 } 12031 #pragma omp parallel for 12032 for (int i = 0; i < 10; ++i) { 12033 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 12034 bar(); 12035 } 12036 #pragma omp parallel for 12037 for (int i = 0; i < 10; ++i) { 12038 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 12039 bar(); 12040 } 12041 #pragma omp parallel for 12042 for (int i = 0; i < 10; ++i) { 12043 #pragma omp taskwait 12044 bar(); 12045 } 12046 #pragma omp parallel for 12047 for (int i = 0; i < 10; ++i) { 12048 #pragma omp flush 12049 bar(); 12050 } 12051 #pragma omp parallel for 12052 for (int i = 0; i < 10; ++i) { 12053 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 12054 bar(); 12055 } 12056 #pragma omp parallel for ordered 12057 for (int i = 0; i < 10; ++i) { 12058 #pragma omp ordered // OK 12059 bar(); 12060 } 12061 #pragma omp parallel for 12062 for (int i = 0; i < 10; ++i) { 12063 #pragma omp atomic 12064 ++a; 12065 } 12066 #pragma omp parallel for 12067 for (int i = 0; i < 10; ++i) { 12068 #pragma omp target 12069 ++a; 12070 } 12071 #pragma omp parallel for 12072 for (int i = 0; i < 10; ++i) { 12073 #pragma omp target parallel 12074 ++a; 12075 } 12076 #pragma omp parallel for 12077 for (int i = 0; i < 10; ++i) { 12078 #pragma omp target parallel for 12079 for (int i = 0; i < 10; ++i) 12080 ; 12081 } 12082 #pragma omp parallel for 12083 for (int i = 0; i < 10; ++i) { 12084 #pragma omp target enter data map(to: a) 12085 ++a; 12086 } 12087 #pragma omp parallel for 12088 for (int i = 0; i < 10; ++i) { 12089 #pragma omp target exit data map(from: a) 12090 ++a; 12091 } 12092 #pragma omp parallel for 12093 for (int i = 0; i < 10; ++i) { 12094 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 12095 ++a; 12096 } 12097 #pragma omp parallel for 12098 for (int i = 0; i < 10; ++i) { 12099 #pragma omp taskloop 12100 for (int i = 0; i < 10; ++i) 12101 ++a; 12102 } 12103 #pragma omp parallel for 12104 for (int i = 0; i < 10; ++i) { 12105 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 12106 for (int j = 0; j < 10; ++j) 12107 ; 12108 } 12109 #pragma omp parallel for 12110 for (int i = 0; i < 10; ++i) { 12111 #pragma omp target update to(a) 12112 a++; 12113 } 12114 #pragma omp parallel for 12115 for (int i = 0; i < 10; ++i) { 12116 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 12117 for (int j = 0; j < 10; ++j) 12118 ; 12119 } 12120 #pragma omp parallel for 12121 for (int i = 0; i < 10; ++i) { 12122 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 12123 for (int j = 0; j < 10; ++j) 12124 ; 12125 } 12126 #pragma omp parallel for 12127 for (int i = 0; i < 10; ++i) { 12128 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 12129 for (int j = 0; j < 10; ++j) 12130 ; 12131 } 12132 #pragma omp parallel for 12133 for (int i = 0; i < 10; ++i) { 12134 #pragma omp target simd // OK 12135 for (int j = 0; j < 10; ++j) 12136 ; 12137 } 12138 #pragma omp parallel for 12139 for (int i = 0; i < 10; ++i) { 12140 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 12141 for (int j = 0; j < 10; ++j) 12142 ; 12143 } 12144 #pragma omp parallel for 12145 for (int i = 0; i < 10; ++i) { 12146 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 12147 for (int j = 0; j < 10; ++j) 12148 ; 12149 } 12150 #pragma omp parallel for 12151 for (int i = 0; i < 10; ++i) { 12152 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 12153 for (int j = 0; j < 10; ++j) 12154 ; 12155 } 12156 #pragma omp parallel for 12157 for (int i = 0; i < 10; ++i) { 12158 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 12159 for (int j = 0; j < 10; ++j) 12160 ; 12161 } 12162 #pragma omp parallel for 12163 for (int i = 0; i < 10; ++i) { 12164 #pragma omp target teams // OK 12165 a++; 12166 } 12167 #pragma omp parallel for 12168 for (int i = 0; i < 10; ++i) { 12169 #pragma omp target teams distribute // OK 12170 for (int j = 0; j < 10; ++j) 12171 ; 12172 } 12173 #pragma omp parallel for 12174 for (int i = 0; i < 10; ++i) { 12175 #pragma omp target teams distribute parallel for // OK 12176 for (int j = 0; j < 10; ++j) 12177 ; 12178 } 12179 #pragma omp parallel for 12180 for (int i = 0; i < 10; ++i) { 12181 #pragma omp target teams distribute parallel for simd // OK 12182 for (int j = 0; j < 10; ++j) 12183 ; 12184 } 12185 #pragma omp parallel for 12186 for (int i = 0; i < 10; ++i) { 12187 #pragma omp target teams distribute simd // OK 12188 for (int j = 0; j < 10; ++j) 12189 ; 12190 } 12191 12192 // PARALLEL FOR SIMD DIRECTIVE 12193 #pragma omp parallel for simd 12194 for (int i = 0; i < 10; ++i) { 12195 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12196 for (int i = 0; i < 10; ++i) 12197 ; 12198 } 12199 #pragma omp parallel for simd 12200 for (int i = 0; i < 10; ++i) { 12201 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12202 for (int i = 0; i < 10; ++i) 12203 ; 12204 } 12205 #pragma omp parallel for simd 12206 for (int i = 0; i < 10; ++i) { 12207 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12208 for (int i = 0; i < 10; ++i) 12209 ; 12210 } 12211 #pragma omp parallel for simd 12212 for (int i = 0; i < 10; ++i) { 12213 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12214 for (int i = 0; i < 10; ++i) 12215 ; 12216 } 12217 #pragma omp parallel for simd 12218 for (int i = 0; i < 10; ++i) { 12219 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12220 { 12221 bar(); 12222 } 12223 } 12224 #pragma omp parallel for simd 12225 for (int i = 0; i < 10; ++i) { 12226 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12227 { 12228 bar(); 12229 } 12230 } 12231 #pragma omp parallel for simd 12232 for (int i = 0; i < 10; ++i) { 12233 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12234 { 12235 bar(); 12236 } 12237 } 12238 12239 #pragma omp parallel for simd 12240 for (int i = 0; i < 10; ++i) { 12241 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12242 { 12243 bar(); 12244 } 12245 } 12246 12247 #pragma omp parallel for simd 12248 for (int i = 0; i < 10; ++i) { 12249 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12250 { 12251 bar(); 12252 } 12253 } 12254 12255 #pragma omp parallel for simd 12256 for (int i = 0; i < 10; ++i) { 12257 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12258 { 12259 #pragma omp single 12260 { 12261 bar(); 12262 } 12263 #pragma omp for 12264 for (int i = 0; i < 10; ++i) 12265 ; 12266 #pragma omp for simd 12267 for (int i = 0; i < 10; ++i) 12268 ; 12269 #pragma omp sections 12270 { 12271 bar(); 12272 } 12273 } 12274 } 12275 #pragma omp parallel for simd 12276 for (int i = 0; i < 10; ++i) { 12277 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12278 for (int i = 0; i < 10; ++i) 12279 ; 12280 } 12281 #pragma omp parallel for simd 12282 for (int i = 0; i < 10; ++i) { 12283 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 12284 for (int i = 0; i < 10; ++i) 12285 ; 12286 } 12287 #pragma omp parallel for simd 12288 for (int i = 0; i < 10; ++i) { 12289 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12290 { 12291 bar(); 12292 } 12293 } 12294 #pragma omp parallel for simd 12295 for (int i = 0; i < 10; ++i) { 12296 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12297 { 12298 bar(); 12299 } 12300 } 12301 #pragma omp parallel for simd 12302 for (int i = 0; i < 10; ++i) { 12303 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12304 bar(); 12305 } 12306 #pragma omp parallel for simd 12307 for (int i = 0; i < 10; ++i) { 12308 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12309 bar(); 12310 } 12311 #pragma omp parallel for simd 12312 for (int i = 0; i < 10; ++i) { 12313 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 12314 bar(); 12315 } 12316 #pragma omp parallel for simd 12317 for (int i = 0; i < 10; ++i) { 12318 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12319 bar(); 12320 } 12321 #pragma omp parallel for simd 12322 for (int i = 0; i < 10; ++i) { 12323 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12324 bar(); 12325 } 12326 #pragma omp parallel for simd 12327 for (int i = 0; i < 10; ++i) { 12328 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12329 bar(); 12330 } 12331 #pragma omp parallel for simd 12332 for (int i = 0; i < 10; ++i) { 12333 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12334 bar(); 12335 } 12336 #pragma omp parallel for simd 12337 for (int i = 0; i < 10; ++i) { 12338 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 12339 ++a; 12340 } 12341 #pragma omp parallel for simd 12342 for (int i = 0; i < 10; ++i) { 12343 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12344 ++a; 12345 } 12346 #pragma omp parallel for simd 12347 for (int i = 0; i < 10; ++i) { 12348 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12349 ++a; 12350 } 12351 #pragma omp parallel for simd 12352 for (int i = 0; i < 10; ++i) { 12353 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12354 for (int i = 0; i < 10; ++i) 12355 ; 12356 } 12357 #pragma omp parallel for simd 12358 for (int i = 0; i < 10; ++i) { 12359 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12360 ++a; 12361 } 12362 #pragma omp parallel for simd 12363 for (int i = 0; i < 10; ++i) { 12364 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12365 ++a; 12366 } 12367 #pragma omp parallel for simd 12368 for (int i = 0; i < 10; ++i) { 12369 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12370 ++a; 12371 } 12372 #pragma omp parallel for simd 12373 for (int i = 0; i < 10; ++i) { 12374 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12375 for (int i = 0; i < 10; ++i) 12376 ++a; 12377 } 12378 #pragma omp parallel for simd 12379 for (int i = 0; i < 10; ++i) { 12380 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12381 for (int j = 0; j < 10; ++j) 12382 ; 12383 } 12384 #pragma omp parallel for simd 12385 for (int i = 0; i < 10; ++i) { 12386 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12387 a++; 12388 } 12389 #pragma omp parallel for simd 12390 for (int i = 0; i < 10; ++i) { 12391 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12392 for (int j = 0; j < 10; ++j) 12393 ; 12394 } 12395 #pragma omp parallel for simd 12396 for (int i = 0; i < 10; ++i) { 12397 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12398 for (int j = 0; j < 10; ++j) 12399 ; 12400 } 12401 #pragma omp parallel for simd 12402 for (int i = 0; i < 10; ++i) { 12403 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12404 for (int j = 0; j < 10; ++j) 12405 ; 12406 } 12407 #pragma omp parallel for simd 12408 for (int i = 0; i < 10; ++i) { 12409 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12410 for (int j = 0; j < 10; ++j) 12411 ; 12412 } 12413 #pragma omp parallel for simd 12414 for (int i = 0; i < 10; ++i) { 12415 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12416 for (int j = 0; j < 10; ++j) 12417 ; 12418 } 12419 #pragma omp parallel for simd 12420 for (int i = 0; i < 10; ++i) { 12421 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12422 for (int j = 0; j < 10; ++j) 12423 ; 12424 } 12425 #pragma omp parallel for simd 12426 for (int i = 0; i < 10; ++i) { 12427 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12428 for (int j = 0; j < 10; ++j) 12429 ; 12430 } 12431 #pragma omp parallel for simd 12432 for (int i = 0; i < 10; ++i) { 12433 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12434 for (int j = 0; j < 10; ++j) 12435 ; 12436 } 12437 #pragma omp parallel for simd 12438 for (int i = 0; i < 10; ++i) { 12439 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12440 a++; 12441 } 12442 #pragma omp parallel for simd 12443 for (int i = 0; i < 10; ++i) { 12444 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12445 for (int j = 0; j < 10; ++j) 12446 ; 12447 } 12448 #pragma omp parallel for simd 12449 for (int i = 0; i < 10; ++i) { 12450 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12451 for (int j = 0; j < 10; ++j) 12452 ; 12453 } 12454 #pragma omp parallel for simd 12455 for (int i = 0; i < 10; ++i) { 12456 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12457 for (int j = 0; j < 10; ++j) 12458 ; 12459 } 12460 #pragma omp parallel for simd 12461 for (int i = 0; i < 10; ++i) { 12462 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12463 for (int j = 0; j < 10; ++j) 12464 ; 12465 } 12466 12467 // PARALLEL SECTIONS DIRECTIVE 12468 #pragma omp parallel sections 12469 { 12470 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 12471 for (int i = 0; i < 10; ++i) 12472 ; 12473 } 12474 #pragma omp parallel sections 12475 { 12476 #pragma omp simd 12477 for (int i = 0; i < 10; ++i) 12478 ; 12479 } 12480 #pragma omp parallel sections 12481 { 12482 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 12483 for (int i = 0; i < 10; ++i) 12484 ; 12485 } 12486 #pragma omp parallel sections 12487 { 12488 #pragma omp parallel 12489 for (int i = 0; i < 10; ++i) 12490 ; 12491 } 12492 #pragma omp parallel sections 12493 { 12494 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 12495 { 12496 bar(); 12497 } 12498 } 12499 #pragma omp parallel sections 12500 { 12501 #pragma omp section 12502 { 12503 bar(); 12504 } 12505 } 12506 #pragma omp parallel sections 12507 { 12508 #pragma omp section 12509 { 12510 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 12511 bar(); 12512 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 12513 bar(); 12514 #pragma omp critical 12515 bar(); 12516 } 12517 } 12518 #pragma omp parallel sections 12519 { 12520 #pragma omp parallel 12521 { 12522 #pragma omp single // OK 12523 { 12524 bar(); 12525 } 12526 #pragma omp master // OK 12527 { 12528 bar(); 12529 } 12530 #pragma omp critical // OK 12531 { 12532 bar(); 12533 } 12534 #pragma omp for // OK 12535 for (int i = 0; i < 10; ++i) 12536 ; 12537 #pragma omp for simd // OK 12538 for (int i = 0; i < 10; ++i) 12539 ; 12540 #pragma omp sections // OK 12541 { 12542 bar(); 12543 } 12544 } 12545 } 12546 #pragma omp parallel sections 12547 { 12548 #pragma omp parallel for 12549 for (int i = 0; i < 10; ++i) 12550 ; 12551 } 12552 #pragma omp parallel sections 12553 { 12554 #pragma omp parallel for simd 12555 for (int i = 0; i < 10; ++i) 12556 ; 12557 } 12558 #pragma omp parallel sections 12559 { 12560 #pragma omp parallel sections 12561 { 12562 bar(); 12563 } 12564 } 12565 #pragma omp parallel sections 12566 { 12567 #pragma omp task 12568 { 12569 bar(); 12570 } 12571 } 12572 #pragma omp parallel sections 12573 { 12574 #pragma omp taskyield 12575 } 12576 #pragma omp parallel sections 12577 { 12578 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12579 } 12580 #pragma omp parallel sections 12581 { 12582 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12583 } 12584 #pragma omp parallel sections 12585 { 12586 #pragma omp taskwait 12587 } 12588 #pragma omp parallel sections 12589 { 12590 #pragma omp flush 12591 } 12592 #pragma omp parallel sections 12593 { 12594 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 12595 bar(); 12596 } 12597 #pragma omp parallel sections 12598 { 12599 #pragma omp atomic 12600 ++a; 12601 } 12602 #pragma omp parallel sections 12603 { 12604 #pragma omp target 12605 ++a; 12606 } 12607 #pragma omp parallel sections 12608 { 12609 #pragma omp target parallel 12610 ++a; 12611 } 12612 #pragma omp parallel sections 12613 { 12614 #pragma omp target parallel for 12615 for (int i = 0; i < 10; ++i) 12616 ; 12617 } 12618 #pragma omp parallel sections 12619 { 12620 #pragma omp target enter data map(to: a) 12621 } 12622 #pragma omp parallel sections 12623 { 12624 #pragma omp target exit data map(from: a) 12625 } 12626 #pragma omp parallel sections 12627 { 12628 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 12629 ++a; 12630 } 12631 #pragma omp parallel sections 12632 { 12633 #pragma omp taskloop 12634 for (int i = 0; i < 10; ++i) 12635 ++a; 12636 } 12637 #pragma omp parallel sections 12638 { 12639 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 12640 for (int i = 0; i < 10; ++i) 12641 ; 12642 } 12643 #pragma omp parallel sections 12644 { 12645 #pragma omp target update to(a) 12646 } 12647 #pragma omp parallel sections 12648 { 12649 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 12650 for (int i = 0; i < 10; ++i) 12651 ; 12652 } 12653 #pragma omp parallel sections 12654 { 12655 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 12656 for (int i = 0; i < 10; ++i) 12657 ; 12658 } 12659 #pragma omp parallel sections 12660 { 12661 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 12662 for (int i = 0; i < 10; ++i) 12663 ; 12664 } 12665 #pragma omp parallel sections 12666 { 12667 #pragma omp target simd // OK 12668 for (int i = 0; i < 10; ++i) 12669 ; 12670 } 12671 #pragma omp parallel sections 12672 { 12673 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 12674 for (int i = 0; i < 10; ++i) 12675 ; 12676 } 12677 #pragma omp parallel sections 12678 { 12679 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 12680 for (int i = 0; i < 10; ++i) 12681 ; 12682 } 12683 #pragma omp parallel sections 12684 { 12685 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 12686 for (int i = 0; i < 10; ++i) 12687 ; 12688 } 12689 #pragma omp parallel sections 12690 { 12691 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 12692 for (int i = 0; i < 10; ++i) 12693 ; 12694 } 12695 #pragma omp parallel sections 12696 { 12697 #pragma omp target teams // OK 12698 a++; 12699 } 12700 #pragma omp parallel sections 12701 { 12702 #pragma omp target teams distribute // OK 12703 for (int i = 0; i < 10; ++i) 12704 ; 12705 } 12706 #pragma omp parallel sections 12707 { 12708 #pragma omp target teams distribute parallel for // OK 12709 for (int i = 0; i < 10; ++i) 12710 ; 12711 } 12712 #pragma omp parallel sections 12713 { 12714 #pragma omp target teams distribute parallel for simd // OK 12715 for (int i = 0; i < 10; ++i) 12716 ; 12717 } 12718 #pragma omp parallel sections 12719 { 12720 #pragma omp target teams distribute simd // OK 12721 for (int i = 0; i < 10; ++i) 12722 ; 12723 } 12724 12725 // TASK DIRECTIVE 12726 #pragma omp task 12727 #pragma omp for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 12728 for (int i = 0; i < 10; ++i) 12729 ; 12730 #pragma omp task 12731 #pragma omp simd 12732 for (int i = 0; i < 10; ++i) 12733 ; 12734 #pragma omp task 12735 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 12736 for (int i = 0; i < 10; ++i) 12737 ; 12738 #pragma omp task 12739 #pragma omp sections // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 12740 { 12741 bar(); 12742 } 12743 #pragma omp task 12744 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 12745 { 12746 bar(); 12747 } 12748 #pragma omp task 12749 #pragma omp single // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 12750 bar(); 12751 #pragma omp task 12752 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 12753 bar(); 12754 #pragma omp task 12755 #pragma omp critical 12756 bar(); 12757 #pragma omp task 12758 #pragma omp parallel for 12759 for (int i = 0; i < 10; ++i) 12760 ; 12761 #pragma omp task 12762 #pragma omp parallel for simd 12763 for (int i = 0; i < 10; ++i) 12764 ; 12765 #pragma omp task 12766 #pragma omp parallel sections 12767 { 12768 bar(); 12769 } 12770 #pragma omp task 12771 #pragma omp task 12772 { 12773 bar(); 12774 } 12775 #pragma omp task 12776 { 12777 #pragma omp taskyield 12778 bar(); 12779 } 12780 #pragma omp task 12781 { 12782 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 12783 bar(); 12784 } 12785 #pragma omp task 12786 { 12787 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}} 12788 bar(); 12789 } 12790 #pragma omp task 12791 { 12792 #pragma omp taskwait 12793 bar(); 12794 } 12795 #pragma omp task 12796 { 12797 #pragma omp flush 12798 bar(); 12799 } 12800 #pragma omp task 12801 { 12802 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 12803 bar(); 12804 } 12805 #pragma omp task 12806 { 12807 #pragma omp atomic 12808 ++a; 12809 } 12810 #pragma omp task 12811 { 12812 #pragma omp target 12813 ++a; 12814 } 12815 #pragma omp task 12816 { 12817 #pragma omp target parallel 12818 ++a; 12819 } 12820 #pragma omp task 12821 #pragma omp target parallel for 12822 for (int i = 0; i < 10; ++i) 12823 ; 12824 #pragma omp task 12825 { 12826 #pragma omp target enter data map(to: a) 12827 ++a; 12828 } 12829 #pragma omp task 12830 { 12831 #pragma omp target exit data map(from: a) 12832 ++a; 12833 } 12834 #pragma omp task 12835 { 12836 #pragma omp teams // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 12837 ++a; 12838 } 12839 #pragma omp task 12840 { 12841 #pragma omp taskloop 12842 for (int i = 0; i < 10; ++i) 12843 ++a; 12844 } 12845 #pragma omp task 12846 { 12847 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 12848 for (int i = 0; i < 10; ++i) 12849 ; 12850 } 12851 #pragma omp task 12852 { 12853 #pragma omp target update to(a) 12854 a++; 12855 } 12856 #pragma omp task 12857 { 12858 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 12859 for (int i = 0; i < 10; ++i) 12860 ; 12861 } 12862 #pragma omp task 12863 { 12864 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 12865 for (int i = 0; i < 10; ++i) 12866 ; 12867 } 12868 #pragma omp task 12869 { 12870 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 12871 for (int i = 0; i < 10; ++i) 12872 ; 12873 } 12874 #pragma omp task 12875 { 12876 #pragma omp target simd // OK 12877 for (int i = 0; i < 10; ++i) 12878 ; 12879 } 12880 #pragma omp task 12881 { 12882 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 12883 for (int i = 0; i < 10; ++i) 12884 ; 12885 } 12886 #pragma omp task 12887 { 12888 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 12889 for (int i = 0; i < 10; ++i) 12890 ; 12891 } 12892 #pragma omp task 12893 { 12894 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 12895 for (int i = 0; i < 10; ++i) 12896 ; 12897 } 12898 #pragma omp task 12899 { 12900 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 12901 for (int i = 0; i < 10; ++i) 12902 ; 12903 } 12904 #pragma omp task 12905 { 12906 #pragma omp target teams // OK 12907 a++; 12908 } 12909 #pragma omp task 12910 { 12911 #pragma omp target teams distribute // OK 12912 for (int i = 0; i < 10; ++i) 12913 ; 12914 } 12915 #pragma omp task 12916 { 12917 #pragma omp target teams distribute parallel for // OK 12918 for (int i = 0; i < 10; ++i) 12919 ; 12920 } 12921 #pragma omp task 12922 { 12923 #pragma omp target teams distribute parallel for simd // OK 12924 for (int i = 0; i < 10; ++i) 12925 ; 12926 } 12927 #pragma omp task 12928 { 12929 #pragma omp target teams distribute simd // OK 12930 for (int i = 0; i < 10; ++i) 12931 ; 12932 } 12933 12934 // ATOMIC DIRECTIVE 12935 #pragma omp atomic 12936 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12937 // expected-note@+1 {{expected an expression statement}} 12938 { 12939 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12940 for (int i = 0; i < 10; ++i) 12941 ; 12942 } 12943 #pragma omp atomic 12944 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12945 // expected-note@+1 {{expected an expression statement}} 12946 { 12947 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12948 for (int i = 0; i < 10; ++i) 12949 ; 12950 } 12951 #pragma omp atomic 12952 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12953 // expected-note@+1 {{expected an expression statement}} 12954 { 12955 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12956 for (int i = 0; i < 10; ++i) 12957 ; 12958 } 12959 #pragma omp atomic 12960 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12961 // expected-note@+1 {{expected an expression statement}} 12962 { 12963 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12964 for (int i = 0; i < 10; ++i) 12965 ; 12966 } 12967 #pragma omp atomic 12968 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12969 // expected-note@+1 {{expected an expression statement}} 12970 { 12971 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12972 { 12973 bar(); 12974 } 12975 } 12976 #pragma omp atomic 12977 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12978 // expected-note@+1 {{expected an expression statement}} 12979 { 12980 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12981 { 12982 bar(); 12983 } 12984 } 12985 #pragma omp atomic 12986 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12987 // expected-note@+1 {{expected an expression statement}} 12988 { 12989 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12990 { 12991 bar(); 12992 } 12993 } 12994 #pragma omp atomic 12995 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12996 // expected-note@+1 {{expected an expression statement}} 12997 { 12998 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12999 { 13000 bar(); 13001 } 13002 } 13003 #pragma omp atomic 13004 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13005 // expected-note@+1 {{expected an expression statement}} 13006 { 13007 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13008 { 13009 bar(); 13010 } 13011 } 13012 #pragma omp atomic 13013 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13014 // expected-note@+1 {{expected an expression statement}} 13015 { 13016 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13017 for (int i = 0; i < 10; ++i) 13018 ; 13019 } 13020 #pragma omp atomic 13021 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13022 // expected-note@+1 {{expected an expression statement}} 13023 { 13024 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13025 for (int i = 0; i < 10; ++i) 13026 ; 13027 } 13028 #pragma omp atomic 13029 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13030 // expected-note@+1 {{expected an expression statement}} 13031 { 13032 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13033 { 13034 bar(); 13035 } 13036 } 13037 #pragma omp atomic 13038 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13039 // expected-note@+1 {{expected an expression statement}} 13040 { 13041 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13042 { 13043 bar(); 13044 } 13045 } 13046 #pragma omp atomic 13047 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13048 // expected-note@+1 {{expected an expression statement}} 13049 { 13050 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13051 bar(); 13052 } 13053 #pragma omp atomic 13054 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13055 // expected-note@+1 {{expected an expression statement}} 13056 { 13057 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13058 bar(); 13059 } 13060 #pragma omp atomic 13061 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13062 // expected-note@+1 {{expected an expression statement}} 13063 { 13064 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13065 bar(); 13066 } 13067 #pragma omp atomic 13068 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13069 // expected-note@+1 {{expected an expression statement}} 13070 { 13071 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13072 bar(); 13073 } 13074 #pragma omp atomic 13075 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13076 // expected-note@+1 {{expected an expression statement}} 13077 { 13078 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13079 bar(); 13080 } 13081 #pragma omp atomic 13082 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13083 // expected-note@+1 {{expected an expression statement}} 13084 { 13085 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13086 bar(); 13087 } 13088 #pragma omp atomic 13089 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13090 // expected-note@+1 {{expected an expression statement}} 13091 { 13092 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13093 ++a; 13094 } 13095 #pragma omp atomic 13096 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13097 // expected-note@+1 {{expected an expression statement}} 13098 { 13099 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13100 ++a; 13101 } 13102 #pragma omp atomic 13103 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13104 // expected-note@+1 {{expected an expression statement}} 13105 { 13106 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13107 ++a; 13108 } 13109 #pragma omp atomic 13110 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13111 // expected-note@+1 {{expected an expression statement}} 13112 { 13113 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13114 for (int i = 0; i < 10; ++i) 13115 ; 13116 } 13117 #pragma omp atomic 13118 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13119 // expected-note@+1 {{expected an expression statement}} 13120 { 13121 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13122 ++a; 13123 } 13124 #pragma omp atomic 13125 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13126 // expected-note@+1 {{expected an expression statement}} 13127 { 13128 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13129 ++a; 13130 } 13131 #pragma omp atomic 13132 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13133 // expected-note@+1 {{expected an expression statement}} 13134 { 13135 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13136 ++a; 13137 } 13138 #pragma omp atomic 13139 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13140 // expected-note@+1 {{expected an expression statement}} 13141 { 13142 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13143 for (int i = 0; i < 10; ++i) 13144 ++a; 13145 } 13146 #pragma omp atomic 13147 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13148 // expected-note@+1 {{expected an expression statement}} 13149 { 13150 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13151 for (int i = 0; i < 10; ++i) 13152 ; 13153 } 13154 #pragma omp atomic 13155 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13156 // expected-note@+1 {{expected an expression statement}} 13157 { 13158 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13159 } 13160 #pragma omp atomic 13161 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13162 // expected-note@+1 {{expected an expression statement}} 13163 { 13164 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13165 for (int i = 0; i < 10; ++i) 13166 ; 13167 } 13168 #pragma omp atomic 13169 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13170 // expected-note@+1 {{expected an expression statement}} 13171 { 13172 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13173 for (int i = 0; i < 10; ++i) 13174 ; 13175 } 13176 #pragma omp atomic 13177 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13178 // expected-note@+1 {{expected an expression statement}} 13179 { 13180 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13181 for (int i = 0; i < 10; ++i) 13182 ; 13183 } 13184 #pragma omp atomic 13185 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13186 // expected-note@+1 {{expected an expression statement}} 13187 { 13188 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13189 for (int i = 0; i < 10; ++i) 13190 ; 13191 } 13192 #pragma omp atomic 13193 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13194 // expected-note@+1 {{expected an expression statement}} 13195 { 13196 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13197 for (int i = 0; i < 10; ++i) 13198 ; 13199 } 13200 #pragma omp atomic 13201 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13202 // expected-note@+1 {{expected an expression statement}} 13203 { 13204 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13205 for (int i = 0; i < 10; ++i) 13206 ; 13207 } 13208 #pragma omp atomic 13209 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13210 // expected-note@+1 {{expected an expression statement}} 13211 { 13212 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13213 for (int i = 0; i < 10; ++i) 13214 ; 13215 } 13216 #pragma omp atomic 13217 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13218 // expected-note@+1 {{expected an expression statement}} 13219 { 13220 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13221 for (int i = 0; i < 10; ++i) 13222 ; 13223 } 13224 #pragma omp atomic 13225 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13226 // expected-note@+1 {{expected an expression statement}} 13227 { 13228 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13229 a++; 13230 } 13231 #pragma omp atomic 13232 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13233 // expected-note@+1 {{expected an expression statement}} 13234 { 13235 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13236 for (int i = 0; i < 10; ++i) 13237 ; 13238 } 13239 #pragma omp atomic 13240 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13241 // expected-note@+1 {{expected an expression statement}} 13242 { 13243 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13244 for (int i = 0; i < 10; ++i) 13245 ; 13246 } 13247 #pragma omp atomic 13248 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13249 // expected-note@+1 {{expected an expression statement}} 13250 { 13251 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13252 for (int i = 0; i < 10; ++i) 13253 ; 13254 } 13255 #pragma omp atomic 13256 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13257 // expected-note@+1 {{expected an expression statement}} 13258 { 13259 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13260 for (int i = 0; i < 10; ++i) 13261 ; 13262 } 13263 13264 // TARGET DIRECTIVE 13265 #pragma omp target 13266 #pragma omp parallel 13267 bar(); 13268 #pragma omp target 13269 #pragma omp for 13270 for (int i = 0; i < 10; ++i) 13271 ; 13272 #pragma omp target 13273 #pragma omp simd 13274 for (int i = 0; i < 10; ++i) 13275 ; 13276 #pragma omp target 13277 #pragma omp for simd 13278 for (int i = 0; i < 10; ++i) 13279 ; 13280 #pragma omp target 13281 #pragma omp sections 13282 { 13283 bar(); 13284 } 13285 #pragma omp target 13286 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 13287 { 13288 bar(); 13289 } 13290 #pragma omp target 13291 #pragma omp single 13292 bar(); 13293 13294 #pragma omp target 13295 #pragma omp master 13296 { 13297 bar(); 13298 } 13299 #pragma omp target 13300 #pragma omp critical 13301 { 13302 bar(); 13303 } 13304 #pragma omp target 13305 #pragma omp parallel for 13306 for (int i = 0; i < 10; ++i) 13307 ; 13308 #pragma omp target 13309 #pragma omp parallel for simd 13310 for (int i = 0; i < 10; ++i) 13311 ; 13312 #pragma omp target 13313 #pragma omp parallel sections 13314 { 13315 bar(); 13316 } 13317 #pragma omp target 13318 #pragma omp task 13319 { 13320 bar(); 13321 } 13322 #pragma omp target 13323 { 13324 #pragma omp taskyield 13325 bar(); 13326 } 13327 #pragma omp target 13328 { 13329 #pragma omp barrier 13330 bar(); 13331 } 13332 #pragma omp target 13333 { 13334 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 13335 bar(); 13336 } 13337 #pragma omp target 13338 { 13339 #pragma omp taskwait 13340 bar(); 13341 } 13342 #pragma omp target 13343 { 13344 #pragma omp flush 13345 bar(); 13346 } 13347 #pragma omp target 13348 { 13349 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 13350 bar(); 13351 } 13352 #pragma omp target 13353 { 13354 #pragma omp atomic 13355 ++a; 13356 } 13357 #pragma omp target 13358 { 13359 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13360 ++a; 13361 } 13362 #pragma omp target 13363 { 13364 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13365 ++a; 13366 } 13367 #pragma omp target 13368 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13369 for (int i = 0; i < 10; ++i) 13370 ; 13371 #pragma omp target 13372 { 13373 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13374 } 13375 #pragma omp target 13376 { 13377 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13378 } 13379 #pragma omp target 13380 { 13381 #pragma omp teams 13382 ++a; 13383 } 13384 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13385 { 13386 #pragma omp teams // expected-note {{directive outside teams construct here}} 13387 ++a; 13388 #pragma omp teams // expected-note {{nested teams construct here}} 13389 ++a; 13390 } 13391 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13392 { 13393 ++a; // expected-note {{statement outside teams construct here}} 13394 #pragma omp teams // expected-note {{nested teams construct here}} 13395 ++a; 13396 } 13397 #pragma omp target 13398 { 13399 #pragma omp taskloop 13400 for (int i = 0; i < 10; ++i) 13401 ++a; 13402 } 13403 #pragma omp target 13404 { 13405 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 13406 for (int i = 0; i < 10; ++i) 13407 ; 13408 } 13409 #pragma omp atomic 13410 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13411 // expected-note@+1 {{expected an expression statement}} 13412 { 13413 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13414 a++; 13415 } 13416 #pragma omp target 13417 { 13418 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 13419 for (int i = 0; i < 10; ++i) 13420 ; 13421 } 13422 #pragma omp target 13423 { 13424 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 13425 for (int i = 0; i < 10; ++i) 13426 ; 13427 } 13428 #pragma omp target 13429 { 13430 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 13431 for (int i = 0; i < 10; ++i) 13432 ; 13433 } 13434 #pragma omp target 13435 { 13436 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13437 for (int i = 0; i < 10; ++i) 13438 ; 13439 } 13440 #pragma omp target 13441 { 13442 #pragma omp teams distribute // OK 13443 for (int i = 0; i < 10; ++i) 13444 ; 13445 } 13446 #pragma omp target 13447 { 13448 #pragma omp teams distribute simd // OK 13449 for (int i = 0; i < 10; ++i) 13450 ; 13451 } 13452 #pragma omp target 13453 { 13454 #pragma omp teams distribute parallel for simd // OK 13455 for (int i = 0; i < 10; ++i) 13456 ; 13457 } 13458 #pragma omp target 13459 { 13460 #pragma omp teams distribute parallel for // OK 13461 for (int i = 0; i < 10; ++i) 13462 ; 13463 } 13464 #pragma omp target 13465 { 13466 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13467 a++; 13468 } 13469 #pragma omp target 13470 { 13471 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13472 for (int i = 0; i < 10; ++i) 13473 ; 13474 } 13475 #pragma omp target 13476 { 13477 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13478 for (int i = 0; i < 10; ++i) 13479 ; 13480 } 13481 #pragma omp target 13482 { 13483 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13484 for (int i = 0; i < 10; ++i) 13485 ; 13486 } 13487 #pragma omp target 13488 { 13489 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13490 for (int i = 0; i < 10; ++i) 13491 ; 13492 } 13493 13494 // TARGET PARALLEL DIRECTIVE 13495 #pragma omp target parallel 13496 #pragma omp parallel 13497 bar(); 13498 #pragma omp target parallel 13499 #pragma omp for 13500 for (int i = 0; i < 10; ++i) 13501 ; 13502 #pragma omp target parallel 13503 #pragma omp simd 13504 for (int i = 0; i < 10; ++i) 13505 ; 13506 #pragma omp target parallel 13507 #pragma omp for simd 13508 for (int i = 0; i < 10; ++i) 13509 ; 13510 #pragma omp target parallel 13511 #pragma omp sections 13512 { 13513 bar(); 13514 } 13515 #pragma omp target parallel 13516 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 13517 { 13518 bar(); 13519 } 13520 #pragma omp target parallel 13521 #pragma omp single 13522 bar(); 13523 13524 #pragma omp target parallel 13525 #pragma omp master 13526 { 13527 bar(); 13528 } 13529 #pragma omp target parallel 13530 #pragma omp critical 13531 { 13532 bar(); 13533 } 13534 #pragma omp target parallel 13535 #pragma omp parallel for 13536 for (int i = 0; i < 10; ++i) 13537 ; 13538 #pragma omp target parallel 13539 #pragma omp parallel for simd 13540 for (int i = 0; i < 10; ++i) 13541 ; 13542 #pragma omp target parallel 13543 #pragma omp parallel sections 13544 { 13545 bar(); 13546 } 13547 #pragma omp target parallel 13548 #pragma omp task 13549 { 13550 bar(); 13551 } 13552 #pragma omp target parallel 13553 { 13554 #pragma omp taskyield 13555 bar(); 13556 } 13557 #pragma omp target parallel 13558 { 13559 #pragma omp barrier 13560 bar(); 13561 } 13562 #pragma omp target parallel 13563 { 13564 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 13565 bar(); 13566 } 13567 #pragma omp target parallel 13568 { 13569 #pragma omp taskwait 13570 bar(); 13571 } 13572 #pragma omp target parallel 13573 { 13574 #pragma omp flush 13575 bar(); 13576 } 13577 #pragma omp target parallel 13578 { 13579 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 13580 bar(); 13581 } 13582 #pragma omp target parallel 13583 { 13584 #pragma omp atomic 13585 ++a; 13586 } 13587 #pragma omp target parallel 13588 { 13589 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 13590 ++a; 13591 } 13592 #pragma omp target parallel 13593 { 13594 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 13595 ++a; 13596 } 13597 #pragma omp target parallel 13598 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13599 for (int i = 0; i < 10; ++i) 13600 ; 13601 #pragma omp target parallel 13602 { 13603 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 13604 ++a; 13605 } 13606 #pragma omp target parallel 13607 { 13608 ++a; 13609 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 13610 ++a; 13611 } 13612 #pragma omp target parallel 13613 { 13614 #pragma omp taskloop 13615 for (int i = 0; i < 10; ++i) 13616 ++a; 13617 } 13618 #pragma omp target parallel 13619 { 13620 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 13621 for (int i = 0; i < 10; ++i) 13622 ; 13623 } 13624 #pragma omp target parallel 13625 { 13626 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13627 } 13628 #pragma omp target parallel 13629 { 13630 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13631 } 13632 #pragma omp target parallel 13633 { 13634 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13635 } 13636 #pragma omp target parallel 13637 { 13638 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 13639 for (int i = 0; i < 10; ++i) 13640 ; 13641 } 13642 #pragma omp target parallel 13643 { 13644 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 13645 for (int i = 0; i < 10; ++i) 13646 ; 13647 } 13648 #pragma omp target parallel 13649 { 13650 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 13651 for (int i = 0; i < 10; ++i) 13652 ; 13653 } 13654 #pragma omp target parallel 13655 { 13656 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 13657 for (int i = 0; i < 10; ++i) 13658 ; 13659 } 13660 #pragma omp target parallel 13661 { 13662 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 13663 for (int i = 0; i < 10; ++i) 13664 ; 13665 } 13666 #pragma omp target parallel 13667 { 13668 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 13669 for (int i = 0; i < 10; ++i) 13670 ; 13671 } 13672 #pragma omp target parallel 13673 { 13674 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 13675 for (int i = 0; i < 10; ++i) 13676 ; 13677 } 13678 #pragma omp target parallel 13679 { 13680 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 13681 for (int i = 0; i < 10; ++i) 13682 ; 13683 } 13684 #pragma omp target parallel 13685 { 13686 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 13687 a++; 13688 } 13689 #pragma omp target parallel 13690 { 13691 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 13692 for (int i = 0; i < 10; ++i) 13693 ; 13694 } 13695 #pragma omp target parallel 13696 { 13697 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13698 for (int i = 0; i < 10; ++i) 13699 ; 13700 } 13701 #pragma omp target parallel 13702 { 13703 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13704 for (int i = 0; i < 10; ++i) 13705 ; 13706 } 13707 #pragma omp target parallel 13708 { 13709 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13710 for (int i = 0; i < 10; ++i) 13711 ; 13712 } 13713 13714 // TARGET PARALLEL FOR DIRECTIVE 13715 #pragma omp target parallel for 13716 for (int i = 0; i < 10; ++i) { 13717 #pragma omp for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 13718 for (int i = 0; i < 10; ++i) 13719 ; 13720 } 13721 #pragma omp target parallel for 13722 for (int i = 0; i < 10; ++i) { 13723 #pragma omp simd 13724 for (int i = 0; i < 10; ++i) 13725 ; 13726 } 13727 #pragma omp target parallel for 13728 for (int i = 0; i < 10; ++i) { 13729 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 13730 for (int i = 0; i < 10; ++i) 13731 ; 13732 } 13733 #pragma omp target parallel for 13734 for (int i = 0; i < 10; ++i) { 13735 #pragma omp parallel 13736 for (int i = 0; i < 10; ++i) 13737 ; 13738 } 13739 #pragma omp target parallel for 13740 for (int i = 0; i < 10; ++i) { 13741 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 13742 { 13743 bar(); 13744 } 13745 } 13746 #pragma omp target parallel for 13747 for (int i = 0; i < 10; ++i) { 13748 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 13749 { 13750 bar(); 13751 } 13752 } 13753 #pragma omp target parallel for 13754 for (int i = 0; i < 10; ++i) { 13755 #pragma omp single // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 13756 { 13757 bar(); 13758 } 13759 } 13760 13761 #pragma omp target parallel for 13762 for (int i = 0; i < 10; ++i) { 13763 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13764 { 13765 bar(); 13766 } 13767 } 13768 13769 #pragma omp target parallel for 13770 for (int i = 0; i < 10; ++i) { 13771 #pragma omp critical 13772 { 13773 bar(); 13774 } 13775 } 13776 13777 #pragma omp target parallel for 13778 for (int i = 0; i < 10; ++i) { 13779 #pragma omp parallel 13780 { 13781 #pragma omp single // OK 13782 { 13783 bar(); 13784 } 13785 #pragma omp for // OK 13786 for (int i = 0; i < 10; ++i) 13787 ; 13788 #pragma omp for simd // OK 13789 for (int i = 0; i < 10; ++i) 13790 ; 13791 #pragma omp sections // OK 13792 { 13793 bar(); 13794 } 13795 } 13796 } 13797 #pragma omp target parallel for 13798 for (int i = 0; i < 10; ++i) { 13799 #pragma omp parallel for 13800 for (int i = 0; i < 10; ++i) 13801 ; 13802 } 13803 #pragma omp target parallel for 13804 for (int i = 0; i < 10; ++i) { 13805 #pragma omp parallel for simd 13806 for (int i = 0; i < 10; ++i) 13807 ; 13808 } 13809 #pragma omp target parallel for 13810 for (int i = 0; i < 10; ++i) { 13811 #pragma omp parallel sections 13812 { 13813 bar(); 13814 } 13815 } 13816 #pragma omp target parallel for 13817 for (int i = 0; i < 10; ++i) { 13818 #pragma omp task 13819 { 13820 bar(); 13821 } 13822 } 13823 #pragma omp target parallel for 13824 for (int i = 0; i < 10; ++i) { 13825 #pragma omp taskyield 13826 bar(); 13827 } 13828 #pragma omp target parallel for 13829 for (int i = 0; i < 10; ++i) { 13830 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13831 bar(); 13832 } 13833 #pragma omp target parallel for 13834 for (int i = 0; i < 10; ++i) { 13835 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13836 bar(); 13837 } 13838 #pragma omp target parallel for 13839 for (int i = 0; i < 10; ++i) { 13840 #pragma omp taskwait 13841 bar(); 13842 } 13843 #pragma omp target parallel for 13844 for (int i = 0; i < 10; ++i) { 13845 #pragma omp flush 13846 bar(); 13847 } 13848 #pragma omp target parallel for 13849 for (int i = 0; i < 10; ++i) { 13850 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 13851 bar(); 13852 } 13853 #pragma omp target parallel for ordered 13854 for (int i = 0; i < 10; ++i) { 13855 #pragma omp ordered // OK 13856 bar(); 13857 } 13858 #pragma omp target parallel for 13859 for (int i = 0; i < 10; ++i) { 13860 #pragma omp atomic 13861 ++a; 13862 } 13863 #pragma omp target parallel for 13864 for (int i = 0; i < 10; ++i) { 13865 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 13866 ++a; 13867 } 13868 #pragma omp target parallel for 13869 for (int i = 0; i < 10; ++i) { 13870 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 13871 ++a; 13872 } 13873 #pragma omp target parallel for 13874 for (int i = 0; i < 10; ++i) { 13875 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13876 for (int i = 0; i < 10; ++i) 13877 ; 13878 } 13879 #pragma omp target parallel for 13880 for (int i = 0; i < 10; ++i) { 13881 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13882 ++a; 13883 } 13884 #pragma omp target parallel for 13885 for (int i = 0; i < 10; ++i) { 13886 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13887 ++a; 13888 } 13889 #pragma omp target parallel for 13890 for (int i = 0; i < 10; ++i) { 13891 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 13892 ++a; 13893 } 13894 #pragma omp target parallel for 13895 for (int i = 0; i < 10; ++i) { 13896 #pragma omp taskloop 13897 for (int i = 0; i < 10; ++i) 13898 ++a; 13899 } 13900 #pragma omp target parallel for 13901 for (int i = 0; i < 10; ++i) { 13902 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 13903 for (int j = 0; j < 10; ++j) 13904 ; 13905 } 13906 #pragma omp target parallel for 13907 for (int i = 0; i < 10; ++i) { 13908 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13909 a++; 13910 } 13911 #pragma omp target parallel for 13912 for (int i = 0; i < 10; ++i) { 13913 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 13914 for (int j = 0; j < 10; ++j) 13915 ; 13916 } 13917 #pragma omp target parallel for 13918 for (int i = 0; i < 10; ++i) { 13919 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 13920 for (int j = 0; j < 10; ++j) 13921 ; 13922 } 13923 #pragma omp target parallel for 13924 for (int i = 0; i < 10; ++i) { 13925 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 13926 for (int j = 0; j < 10; ++j) 13927 ; 13928 } 13929 #pragma omp target parallel for 13930 for (int i = 0; i < 10; ++i) { 13931 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13932 for (int j = 0; j < 10; ++j) 13933 ; 13934 } 13935 #pragma omp target parallel for 13936 for (int i = 0; i < 10; ++i) { 13937 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 13938 for (int j = 0; j < 10; ++j) 13939 ; 13940 } 13941 #pragma omp target parallel for 13942 for (int i = 0; i < 10; ++i) { 13943 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 13944 for (int j = 0; j < 10; ++j) 13945 ; 13946 } 13947 #pragma omp target parallel for 13948 for (int i = 0; i < 10; ++i) { 13949 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 13950 for (int j = 0; j < 10; ++j) 13951 ; 13952 } 13953 #pragma omp target parallel for 13954 for (int i = 0; i < 10; ++i) { 13955 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 13956 for (int j = 0; j < 10; ++j) 13957 ; 13958 } 13959 #pragma omp target parallel for 13960 for (int i = 0; i < 10; ++i) { 13961 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 13962 a++; 13963 } 13964 #pragma omp target parallel for 13965 for (int i = 0; i < 10; ++i) { 13966 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 13967 for (int j = 0; j < 10; ++j) 13968 ; 13969 } 13970 #pragma omp target parallel for 13971 for (int i = 0; i < 10; ++i) { 13972 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13973 for (int j = 0; j < 10; ++j) 13974 ; 13975 } 13976 #pragma omp target parallel for 13977 for (int i = 0; i < 10; ++i) { 13978 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13979 for (int j = 0; j < 10; ++j) 13980 ; 13981 } 13982 #pragma omp target parallel for 13983 for (int i = 0; i < 10; ++i) { 13984 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13985 for (int j = 0; j < 10; ++j) 13986 ; 13987 } 13988 13989 // TEAMS DIRECTIVE 13990 #pragma omp target 13991 #pragma omp teams 13992 #pragma omp parallel 13993 bar(); 13994 #pragma omp target 13995 #pragma omp teams 13996 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 13997 for (int i = 0; i < 10; ++i) 13998 ; 13999 #pragma omp target 14000 #pragma omp teams 14001 #pragma omp simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 14002 for (int i = 0; i < 10; ++i) 14003 ; 14004 #pragma omp target 14005 #pragma omp teams 14006 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 14007 for (int i = 0; i < 10; ++i) 14008 ; 14009 #pragma omp target 14010 #pragma omp teams 14011 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 14012 { 14013 bar(); 14014 } 14015 #pragma omp target 14016 #pragma omp teams 14017 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 14018 { 14019 bar(); 14020 } 14021 #pragma omp target 14022 #pragma omp teams 14023 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 14024 bar(); 14025 14026 #pragma omp target 14027 #pragma omp teams 14028 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 14029 { 14030 bar(); 14031 } 14032 #pragma omp target 14033 #pragma omp teams 14034 #pragma omp critical // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 14035 { 14036 bar(); 14037 } 14038 #pragma omp target 14039 #pragma omp teams 14040 #pragma omp parallel for 14041 for (int i = 0; i < 10; ++i) 14042 ; 14043 #pragma omp target 14044 #pragma omp teams 14045 #pragma omp parallel for simd 14046 for (int i = 0; i < 10; ++i) 14047 ; 14048 #pragma omp target 14049 #pragma omp teams 14050 #pragma omp parallel sections 14051 { 14052 bar(); 14053 } 14054 #pragma omp target 14055 #pragma omp teams 14056 #pragma omp task // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 14057 { 14058 bar(); 14059 } 14060 #pragma omp target 14061 #pragma omp teams 14062 { 14063 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 14064 bar(); 14065 } 14066 #pragma omp target 14067 #pragma omp teams 14068 { 14069 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 14070 bar(); 14071 } 14072 #pragma omp target 14073 #pragma omp teams 14074 { 14075 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 14076 bar(); 14077 } 14078 #pragma omp target 14079 #pragma omp teams 14080 { 14081 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 14082 bar(); 14083 } 14084 #pragma omp target 14085 #pragma omp teams 14086 { 14087 #pragma omp flush // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 14088 bar(); 14089 } 14090 #pragma omp target 14091 #pragma omp teams 14092 { 14093 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 14094 bar(); 14095 } 14096 #pragma omp target 14097 #pragma omp teams 14098 { 14099 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 14100 ++a; 14101 } 14102 #pragma omp target 14103 #pragma omp teams 14104 { 14105 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14106 ++a; 14107 } 14108 #pragma omp target 14109 #pragma omp teams 14110 { 14111 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14112 ++a; 14113 } 14114 #pragma omp target 14115 #pragma omp teams 14116 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14117 for (int i = 0; i < 10; ++i) 14118 ; 14119 #pragma omp target 14120 #pragma omp teams 14121 { 14122 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14123 } 14124 #pragma omp target 14125 #pragma omp teams 14126 { 14127 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14128 } 14129 #pragma omp target 14130 #pragma omp teams 14131 { 14132 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 14133 ++a; 14134 } 14135 #pragma omp target 14136 #pragma omp teams 14137 { 14138 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 14139 for (int i = 0; i < 10; ++i) 14140 ++a; 14141 } 14142 #pragma omp target 14143 #pragma omp teams 14144 #pragma omp distribute 14145 for (int i = 0; i < 10; ++i) 14146 ; 14147 #pragma omp target 14148 #pragma omp teams 14149 #pragma omp distribute 14150 for (int i = 0; i < 10; ++i) 14151 ; 14152 #pragma omp distribute 14153 for (int j = 0; j < 10; ++j) 14154 ; 14155 #pragma omp target 14156 #pragma omp teams 14157 { 14158 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14159 ++a; 14160 } 14161 #pragma omp target 14162 #pragma omp teams 14163 #pragma omp distribute parallel for 14164 for (int i = 0; i < 10; ++i) 14165 ; 14166 #pragma omp target 14167 #pragma omp teams 14168 { 14169 #pragma omp distribute parallel for 14170 for (int i = 0; i < 10; ++i) 14171 ; 14172 #pragma omp distribute parallel for 14173 for (int j = 0; j < 10; ++j) 14174 ; 14175 } 14176 #pragma omp target 14177 #pragma omp teams 14178 { 14179 #pragma omp distribute parallel for simd 14180 for (int i = 0; i < 10; ++i) 14181 ; 14182 #pragma omp distribute parallel for simd 14183 for (int j = 0; j < 10; ++j) 14184 ; 14185 } 14186 #pragma omp target 14187 #pragma omp teams 14188 { 14189 #pragma omp distribute simd 14190 for (int i = 0; i < 10; ++i) 14191 ; 14192 #pragma omp distribute simd 14193 for (int j = 0; j < 10; ++j) 14194 ; 14195 } 14196 #pragma omp target 14197 #pragma omp teams 14198 { 14199 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14200 for (int i = 0; i < 10; ++i) 14201 ; 14202 } 14203 #pragma omp target 14204 #pragma omp teams 14205 { 14206 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 14207 for (int i = 0; i < 10; ++i) 14208 ; 14209 } 14210 #pragma omp target 14211 #pragma omp teams 14212 { 14213 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 14214 for (int i = 0; i < 10; ++i) 14215 ; 14216 } 14217 #pragma omp target 14218 #pragma omp teams 14219 { 14220 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 14221 for (int i = 0; i < 10; ++i) 14222 ; 14223 } 14224 #pragma omp target 14225 #pragma omp teams 14226 { 14227 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 14228 for (int i = 0; i < 10; ++i) 14229 ; 14230 } 14231 #pragma omp target 14232 #pragma omp teams 14233 { 14234 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14235 a++; 14236 } 14237 #pragma omp target 14238 #pragma omp teams 14239 { 14240 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14241 for (int i = 0; i < 10; ++i) 14242 ; 14243 } 14244 #pragma omp target 14245 #pragma omp teams 14246 { 14247 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14248 for (int i = 0; i < 10; ++i) 14249 ; 14250 } 14251 #pragma omp target 14252 #pragma omp teams 14253 { 14254 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14255 for (int i = 0; i < 10; ++i) 14256 ; 14257 } 14258 #pragma omp target 14259 #pragma omp teams 14260 { 14261 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14262 for (int i = 0; i < 10; ++i) 14263 ; 14264 } 14265 14266 // TASKLOOP DIRECTIVE 14267 #pragma omp taskloop 14268 for (int i = 0; i < 10; ++i) { 14269 #pragma omp for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 14270 for (int i = 0; i < 10; ++i) 14271 ; 14272 } 14273 #pragma omp taskloop 14274 for (int i = 0; i < 10; ++i) { 14275 #pragma omp simd 14276 for (int i = 0; i < 10; ++i) 14277 ; 14278 } 14279 #pragma omp taskloop 14280 for (int i = 0; i < 10; ++i) { 14281 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 14282 for (int i = 0; i < 10; ++i) 14283 ; 14284 } 14285 #pragma omp taskloop 14286 for (int i = 0; i < 10; ++i) { 14287 #pragma omp parallel 14288 for (int i = 0; i < 10; ++i) 14289 ; 14290 } 14291 #pragma omp taskloop 14292 for (int i = 0; i < 10; ++i) { 14293 #pragma omp sections // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 14294 { 14295 bar(); 14296 } 14297 } 14298 #pragma omp taskloop 14299 for (int i = 0; i < 10; ++i) { 14300 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 14301 { 14302 bar(); 14303 } 14304 } 14305 #pragma omp taskloop 14306 for (int i = 0; i < 10; ++i) { 14307 #pragma omp single // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 14308 { 14309 bar(); 14310 } 14311 } 14312 14313 #pragma omp taskloop 14314 for (int i = 0; i < 10; ++i) { 14315 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14316 { 14317 bar(); 14318 } 14319 } 14320 #pragma omp taskloop 14321 for (int i = 0; i < 10; ++i) { 14322 #pragma omp critical 14323 { 14324 bar(); 14325 } 14326 } 14327 #pragma omp taskloop 14328 for (int i = 0; i < 10; ++i) { 14329 #pragma omp parallel 14330 { 14331 #pragma omp single // OK 14332 { 14333 bar(); 14334 } 14335 #pragma omp for // OK 14336 for (int i = 0; i < 10; ++i) 14337 ; 14338 #pragma omp sections // OK 14339 { 14340 bar(); 14341 } 14342 } 14343 } 14344 #pragma omp taskloop 14345 for (int i = 0; i < 10; ++i) { 14346 #pragma omp parallel for 14347 for (int i = 0; i < 10; ++i) 14348 ; 14349 } 14350 #pragma omp taskloop 14351 for (int i = 0; i < 10; ++i) { 14352 #pragma omp parallel for simd 14353 for (int i = 0; i < 10; ++i) 14354 ; 14355 } 14356 #pragma omp taskloop 14357 for (int i = 0; i < 10; ++i) { 14358 #pragma omp parallel sections 14359 { 14360 bar(); 14361 } 14362 } 14363 #pragma omp taskloop 14364 for (int i = 0; i < 10; ++i) { 14365 #pragma omp task 14366 { 14367 bar(); 14368 } 14369 } 14370 #pragma omp taskloop 14371 for (int i = 0; i < 10; ++i) { 14372 #pragma omp taskyield 14373 bar(); 14374 } 14375 #pragma omp taskloop 14376 for (int i = 0; i < 10; ++i) { 14377 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14378 bar(); 14379 } 14380 #pragma omp taskloop 14381 for (int i = 0; i < 10; ++i) { 14382 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14383 bar(); 14384 } 14385 #pragma omp taskloop 14386 for (int i = 0; i < 10; ++i) { 14387 #pragma omp taskwait 14388 bar(); 14389 } 14390 #pragma omp taskloop 14391 for (int i = 0; i < 10; ++i) { 14392 #pragma omp flush 14393 bar(); 14394 } 14395 #pragma omp taskloop 14396 for (int i = 0; i < 10; ++i) { 14397 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 14398 bar(); 14399 } 14400 #pragma omp taskloop 14401 for (int i = 0; i < 10; ++i) { 14402 #pragma omp atomic 14403 ++a; 14404 } 14405 #pragma omp taskloop 14406 for (int i = 0; i < 10; ++i) { 14407 #pragma omp target 14408 ++a; 14409 } 14410 #pragma omp taskloop 14411 for (int i = 0; i < 10; ++i) { 14412 #pragma omp target parallel 14413 ++a; 14414 } 14415 #pragma omp taskloop 14416 for (int i = 0; i < 10; ++i) { 14417 #pragma omp target parallel for 14418 for (int i = 0; i < 10; ++i) 14419 ; 14420 } 14421 #pragma omp taskloop 14422 for (int i = 0; i < 10; ++i) { 14423 #pragma omp target enter data map(to: a) 14424 ++a; 14425 } 14426 #pragma omp taskloop 14427 for (int i = 0; i < 10; ++i) { 14428 #pragma omp target exit data map(from: a) 14429 ++a; 14430 } 14431 #pragma omp taskloop 14432 for (int i = 0; i < 10; ++i) { 14433 #pragma omp teams // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 14434 ++a; 14435 } 14436 #pragma omp taskloop 14437 for (int i = 0; i < 10; ++i) { 14438 #pragma omp taskloop 14439 for (int i = 0; i < 10; ++i) 14440 ++a; 14441 } 14442 #pragma omp taskloop 14443 for (int i = 0; i < 10; ++i) { 14444 #pragma omp target update to(a) 14445 ++a; 14446 } 14447 #pragma omp taskloop 14448 for (int i = 0; i < 10; ++i) { 14449 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 14450 for (int i = 0; i < 10; ++i) 14451 ; 14452 } 14453 #pragma omp taskloop 14454 for (int i = 0; i < 10; ++i) { 14455 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 14456 for (int i = 0; i < 10; ++i) 14457 ; 14458 } 14459 #pragma omp taskloop 14460 for (int i = 0; i < 10; ++i) { 14461 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 14462 for (int i = 0; i < 10; ++i) 14463 ; 14464 } 14465 #pragma omp taskloop 14466 for (int i = 0; i < 10; ++i) { 14467 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 14468 for (int i = 0; i < 10; ++i) 14469 ; 14470 } 14471 #pragma omp taskloop 14472 for (int i = 0; i < 10; ++i) { 14473 #pragma omp target simd // OK 14474 for (int i = 0; i < 10; ++i) 14475 ; 14476 } 14477 #pragma omp taskloop 14478 for (int i = 0; i < 10; ++i) { 14479 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 14480 for (int i = 0; i < 10; ++i) 14481 ; 14482 } 14483 #pragma omp taskloop 14484 for (int i = 0; i < 10; ++i) { 14485 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 14486 for (int i = 0; i < 10; ++i) 14487 ; 14488 } 14489 #pragma omp taskloop 14490 for (int i = 0; i < 10; ++i) { 14491 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 14492 for (int i = 0; i < 10; ++i) 14493 ; 14494 } 14495 #pragma omp taskloop 14496 for (int i = 0; i < 10; ++i) { 14497 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 14498 for (int i = 0; i < 10; ++i) 14499 ; 14500 } 14501 #pragma omp taskloop 14502 for (int i = 0; i < 10; ++i) { 14503 #pragma omp target teams // OK 14504 a++; 14505 } 14506 #pragma omp taskloop 14507 for (int i = 0; i < 10; ++i) { 14508 #pragma omp target teams distribute // OK 14509 for (int i = 0; i < 10; ++i) 14510 ; 14511 } 14512 #pragma omp taskloop 14513 for (int i = 0; i < 10; ++i) { 14514 #pragma omp target teams distribute parallel for // OK 14515 for (int i = 0; i < 10; ++i) 14516 ; 14517 } 14518 #pragma omp taskloop 14519 for (int i = 0; i < 10; ++i) { 14520 #pragma omp target teams distribute parallel for simd // OK 14521 for (int i = 0; i < 10; ++i) 14522 ; 14523 } 14524 #pragma omp taskloop 14525 for (int i = 0; i < 10; ++i) { 14526 #pragma omp target teams distribute simd // OK 14527 for (int i = 0; i < 10; ++i) 14528 ; 14529 } 14530 14531 // DISTRIBUTE DIRECTIVE 14532 #pragma omp target 14533 #pragma omp teams 14534 #pragma omp distribute 14535 for (int i = 0; i < 10; ++i) { 14536 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 14537 for (int i = 0; i < 10; ++i) 14538 ; 14539 } 14540 #pragma omp target 14541 #pragma omp teams 14542 #pragma omp distribute 14543 for (int i = 0; i < 10; ++i) { 14544 #pragma omp for 14545 for (int i = 0; i < 10; ++i) 14546 ; 14547 } 14548 #pragma omp target 14549 #pragma omp teams 14550 #pragma omp distribute 14551 for (int i = 0; i < 10; ++i) { 14552 #pragma omp simd 14553 for (int i = 0; i < 10; ++i) 14554 ; 14555 } 14556 #pragma omp target 14557 #pragma omp teams 14558 #pragma omp distribute 14559 for (int i = 0; i < 10; ++i) { 14560 #pragma omp for simd 14561 for (int i = 0; i < 10; ++i) 14562 ; 14563 } 14564 #pragma omp target 14565 #pragma omp teams 14566 #pragma omp distribute 14567 for (int i = 0; i < 10; ++i) { 14568 #pragma omp parallel 14569 for (int i = 0; i < 10; ++i) 14570 ; 14571 } 14572 #pragma omp target 14573 #pragma omp teams 14574 #pragma omp distribute 14575 for (int i = 0; i < 10; ++i) { 14576 #pragma omp sections 14577 { 14578 bar(); 14579 } 14580 } 14581 #pragma omp target 14582 #pragma omp teams 14583 #pragma omp distribute 14584 for (int i = 0; i < 10; ++i) { 14585 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 14586 { 14587 bar(); 14588 } 14589 } 14590 #pragma omp target 14591 #pragma omp teams 14592 #pragma omp distribute 14593 for (int i = 0; i < 10; ++i) { 14594 #pragma omp single 14595 { 14596 bar(); 14597 } 14598 } 14599 #pragma omp target 14600 #pragma omp teams 14601 #pragma omp distribute 14602 for (int i = 0; i < 10; ++i) { 14603 #pragma omp master 14604 { 14605 bar(); 14606 } 14607 } 14608 #pragma omp target 14609 #pragma omp teams 14610 #pragma omp distribute 14611 for (int i = 0; i < 10; ++i) { 14612 #pragma omp critical 14613 { 14614 bar(); 14615 } 14616 } 14617 #pragma omp target 14618 #pragma omp teams 14619 #pragma omp distribute 14620 for (int i = 0; i < 10; ++i) { 14621 #pragma omp parallel 14622 { 14623 #pragma omp single 14624 { 14625 bar(); 14626 } 14627 } 14628 } 14629 #pragma omp target 14630 #pragma omp teams 14631 #pragma omp distribute 14632 for (int i = 0; i < 10; ++i) { 14633 #pragma omp parallel for 14634 for (int i = 0; i < 10; ++i) 14635 ; 14636 } 14637 #pragma omp target 14638 #pragma omp teams 14639 #pragma omp distribute 14640 for (int i = 0; i < 10; ++i) { 14641 #pragma omp parallel for simd 14642 for (int i = 0; i < 10; ++i) 14643 ; 14644 } 14645 #pragma omp target 14646 #pragma omp teams 14647 #pragma omp distribute 14648 for (int i = 0; i < 10; ++i) { 14649 #pragma omp parallel sections 14650 { 14651 bar(); 14652 } 14653 } 14654 #pragma omp target 14655 #pragma omp teams 14656 #pragma omp distribute 14657 for (int i = 0; i < 10; ++i) { 14658 #pragma omp task 14659 { 14660 bar(); 14661 } 14662 } 14663 #pragma omp target 14664 #pragma omp teams 14665 #pragma omp distribute 14666 for (int i = 0; i < 10; ++i) { 14667 #pragma omp taskyield 14668 bar(); 14669 } 14670 #pragma omp target 14671 #pragma omp teams 14672 #pragma omp distribute 14673 for (int i = 0; i < 10; ++i) { 14674 #pragma omp barrier 14675 bar(); 14676 } 14677 #pragma omp target 14678 #pragma omp teams 14679 #pragma omp distribute 14680 for (int i = 0; i < 10; ++i) { 14681 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 14682 bar(); 14683 } 14684 #pragma omp target 14685 #pragma omp teams 14686 #pragma omp distribute 14687 for (int i = 0; i < 10; ++i) { 14688 #pragma omp taskwait 14689 bar(); 14690 } 14691 #pragma omp target 14692 #pragma omp teams 14693 #pragma omp distribute 14694 for (int i = 0; i < 10; ++i) { 14695 #pragma omp flush 14696 bar(); 14697 } 14698 #pragma omp target 14699 #pragma omp teams 14700 #pragma omp distribute 14701 for (int i = 0; i < 10; ++i) { 14702 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 14703 bar(); 14704 } 14705 #pragma omp target 14706 #pragma omp teams 14707 #pragma omp distribute 14708 for (int i = 0; i < 10; ++i) { 14709 #pragma omp atomic 14710 ++a; 14711 } 14712 #pragma omp target 14713 #pragma omp teams 14714 #pragma omp distribute 14715 for (int i = 0; i < 10; ++i) { 14716 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14717 ++a; 14718 } 14719 #pragma omp target 14720 #pragma omp teams 14721 #pragma omp distribute 14722 for (int i = 0; i < 10; ++i) { 14723 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14724 ++a; 14725 } 14726 #pragma omp target 14727 #pragma omp teams 14728 #pragma omp distribute 14729 for (int i = 0; i < 10; ++i) { 14730 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14731 for (int i = 0; i < 10; ++i) 14732 ; 14733 } 14734 #pragma omp target 14735 #pragma omp teams 14736 #pragma omp distribute 14737 for (int i = 0; i < 10; ++i) { 14738 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 14739 ++a; 14740 } 14741 #pragma omp target 14742 #pragma omp teams 14743 #pragma omp distribute 14744 for (int i = 0; i < 10; ++i) { 14745 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14746 ++a; 14747 } 14748 #pragma omp target 14749 #pragma omp teams 14750 #pragma omp distribute 14751 for (int i = 0; i < 10; ++i) { 14752 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14753 ++a; 14754 } 14755 #pragma omp target 14756 #pragma omp teams 14757 #pragma omp distribute 14758 for (int i = 0; i < 10; ++i) { 14759 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14760 ++a; 14761 } 14762 #pragma omp target 14763 #pragma omp teams 14764 #pragma omp distribute 14765 for (int i = 0; i < 10; ++i) { 14766 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 14767 for (int i = 0; i < 10; ++i) 14768 ++a; 14769 } 14770 #pragma omp target 14771 #pragma omp teams 14772 #pragma omp distribute 14773 for (int i = 0; i < 10; ++i) { 14774 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 14775 for (int i = 0; i < 10; ++i) 14776 ++a; 14777 } 14778 #pragma omp target 14779 #pragma omp teams 14780 #pragma omp distribute 14781 for (int i = 0; i < 10; ++i) { 14782 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 14783 for (int i = 0; i < 10; ++i) 14784 ++a; 14785 } 14786 #pragma omp target 14787 #pragma omp teams 14788 #pragma omp distribute 14789 for (int i = 0; i < 10; ++i) { 14790 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14791 for (int i = 0; i < 10; ++i) 14792 ++a; 14793 } 14794 #pragma omp target 14795 #pragma omp teams 14796 #pragma omp distribute 14797 for (int i = 0; i < 10; ++i) { 14798 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14799 for (int i = 0; i < 10; ++i) 14800 ++a; 14801 } 14802 #pragma omp target 14803 #pragma omp teams 14804 #pragma omp distribute 14805 for (int i = 0; i < 10; ++i) { 14806 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14807 for (int i = 0; i < 10; ++i) 14808 ++a; 14809 } 14810 #pragma omp target 14811 #pragma omp teams 14812 #pragma omp distribute 14813 for (int i = 0; i < 10; ++i) { 14814 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14815 for (int i = 0; i < 10; ++i) 14816 ++a; 14817 } 14818 #pragma omp target 14819 #pragma omp teams 14820 #pragma omp distribute 14821 for (int i = 0; i < 10; ++i) { 14822 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14823 for (int i = 0; i < 10; ++i) 14824 ++a; 14825 } 14826 #pragma omp target 14827 #pragma omp teams 14828 #pragma omp distribute 14829 for (int i = 0; i < 10; ++i) { 14830 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14831 for (int i = 0; i < 10; ++i) 14832 ++a; 14833 } 14834 #pragma omp target 14835 #pragma omp teams 14836 #pragma omp distribute 14837 for (int i = 0; i < 10; ++i) { 14838 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14839 for (int i = 0; i < 10; ++i) 14840 ++a; 14841 } 14842 #pragma omp target 14843 #pragma omp teams 14844 #pragma omp distribute 14845 for (int i = 0; i < 10; ++i) { 14846 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14847 for (int i = 0; i < 10; ++i) 14848 ++a; 14849 } 14850 14851 // DISTRIBUTE PARALLEL FOR DIRECTIVE 14852 #pragma omp target 14853 #pragma omp teams 14854 #pragma omp distribute parallel for 14855 for (int i = 0; i < 10; ++i) { 14856 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 14857 for (int i = 0; i < 10; ++i) 14858 ; 14859 } 14860 14861 #pragma omp target 14862 #pragma omp teams 14863 #pragma omp distribute parallel for 14864 for (int i = 0; i < 10; ++i) { 14865 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 14866 for (int i = 0; i < 10; ++i) 14867 ; 14868 } 14869 #pragma omp target 14870 #pragma omp teams 14871 #pragma omp distribute parallel for 14872 for (int i = 0; i < 10; ++i) { 14873 #pragma omp for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 14874 for (int i = 0; i < 10; ++i) 14875 ; 14876 } 14877 #pragma omp target 14878 #pragma omp teams 14879 #pragma omp distribute parallel for 14880 for (int i = 0; i < 10; ++i) { 14881 #pragma omp simd 14882 for (int i = 0; i < 10; ++i) 14883 ; 14884 } 14885 #pragma omp target 14886 #pragma omp teams 14887 #pragma omp distribute parallel for 14888 for (int i = 0; i < 10; ++i) { 14889 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 14890 for (int i = 0; i < 10; ++i) 14891 ; 14892 } 14893 #pragma omp target 14894 #pragma omp teams 14895 #pragma omp distribute parallel for 14896 for (int i = 0; i < 10; ++i) { 14897 #pragma omp parallel 14898 for (int i = 0; i < 10; ++i) 14899 ; 14900 } 14901 #pragma omp target 14902 #pragma omp teams 14903 #pragma omp distribute parallel for 14904 for (int i = 0; i < 10; ++i) { 14905 #pragma omp sections // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 14906 { 14907 bar(); 14908 } 14909 } 14910 #pragma omp target 14911 #pragma omp teams 14912 #pragma omp distribute parallel for 14913 for (int i = 0; i < 10; ++i) { 14914 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 14915 { 14916 bar(); 14917 } 14918 } 14919 #pragma omp target 14920 #pragma omp teams 14921 #pragma omp distribute parallel for 14922 for (int i = 0; i < 10; ++i) { 14923 #pragma omp single // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 14924 { 14925 bar(); 14926 } 14927 } 14928 #pragma omp target 14929 #pragma omp teams 14930 #pragma omp distribute parallel for 14931 for (int i = 0; i < 10; ++i) { 14932 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14933 { 14934 bar(); 14935 } 14936 } 14937 #pragma omp target 14938 #pragma omp teams 14939 #pragma omp distribute parallel for 14940 for (int i = 0; i < 10; ++i) { 14941 #pragma omp critical 14942 { 14943 bar(); 14944 } 14945 } 14946 #pragma omp target 14947 #pragma omp teams 14948 #pragma omp distribute parallel for 14949 for (int i = 0; i < 10; ++i) { 14950 #pragma omp parallel 14951 { 14952 #pragma omp single 14953 { 14954 bar(); 14955 } 14956 } 14957 } 14958 #pragma omp target 14959 #pragma omp teams 14960 #pragma omp distribute parallel for 14961 for (int i = 0; i < 10; ++i) { 14962 #pragma omp parallel for 14963 for (int i = 0; i < 10; ++i) 14964 ; 14965 } 14966 #pragma omp target 14967 #pragma omp teams 14968 #pragma omp distribute parallel for 14969 for (int i = 0; i < 10; ++i) { 14970 #pragma omp parallel for simd 14971 for (int i = 0; i < 10; ++i) 14972 ; 14973 } 14974 #pragma omp target 14975 #pragma omp teams 14976 #pragma omp distribute parallel for 14977 for (int i = 0; i < 10; ++i) { 14978 #pragma omp parallel sections 14979 { 14980 bar(); 14981 } 14982 } 14983 #pragma omp target 14984 #pragma omp teams 14985 #pragma omp distribute parallel for 14986 for (int i = 0; i < 10; ++i) { 14987 #pragma omp task 14988 { 14989 bar(); 14990 } 14991 } 14992 #pragma omp target 14993 #pragma omp teams 14994 #pragma omp distribute parallel for 14995 for (int i = 0; i < 10; ++i) { 14996 #pragma omp taskyield 14997 bar(); 14998 } 14999 #pragma omp target 15000 #pragma omp teams 15001 #pragma omp distribute parallel for 15002 for (int i = 0; i < 10; ++i) { 15003 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15004 bar(); 15005 } 15006 #pragma omp target 15007 #pragma omp teams 15008 #pragma omp distribute parallel for 15009 for (int i = 0; i < 10; ++i) { 15010 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15011 bar(); 15012 } 15013 #pragma omp target 15014 #pragma omp teams 15015 #pragma omp distribute parallel for 15016 for (int i = 0; i < 10; ++i) { 15017 #pragma omp taskwait 15018 bar(); 15019 } 15020 #pragma omp target 15021 #pragma omp teams 15022 #pragma omp distribute parallel for 15023 for (int i = 0; i < 10; ++i) { 15024 #pragma omp flush 15025 bar(); 15026 } 15027 #pragma omp target 15028 #pragma omp teams 15029 #pragma omp distribute parallel for 15030 for (int i = 0; i < 10; ++i) { 15031 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 15032 bar(); 15033 } 15034 #pragma omp target 15035 #pragma omp teams 15036 #pragma omp distribute parallel for 15037 for (int i = 0; i < 10; ++i) { 15038 #pragma omp atomic 15039 ++a; 15040 } 15041 #pragma omp target 15042 #pragma omp teams 15043 #pragma omp distribute parallel for 15044 for (int i = 0; i < 10; ++i) { 15045 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15046 ++a; 15047 } 15048 #pragma omp target 15049 #pragma omp teams 15050 #pragma omp distribute parallel for 15051 for (int i = 0; i < 10; ++i) { 15052 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15053 ++a; 15054 } 15055 #pragma omp target 15056 #pragma omp teams 15057 #pragma omp distribute parallel for 15058 for (int i = 0; i < 10; ++i) { 15059 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15060 for (int i = 0; i < 10; ++i) 15061 ; 15062 } 15063 #pragma omp target 15064 #pragma omp teams 15065 #pragma omp distribute parallel for 15066 for (int i = 0; i < 10; ++i) { 15067 #pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 15068 ++a; 15069 } 15070 #pragma omp target 15071 #pragma omp teams 15072 #pragma omp distribute parallel for 15073 for (int i = 0; i < 10; ++i) { 15074 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15075 ++a; 15076 } 15077 #pragma omp target 15078 #pragma omp teams 15079 #pragma omp distribute parallel for 15080 for (int i = 0; i < 10; ++i) { 15081 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15082 ++a; 15083 } 15084 #pragma omp target 15085 #pragma omp teams 15086 #pragma omp distribute parallel for 15087 for (int i = 0; i < 10; ++i) { 15088 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15089 ++a; 15090 } 15091 #pragma omp target 15092 #pragma omp teams 15093 #pragma omp distribute parallel for 15094 for (int i = 0; i < 10; ++i) { 15095 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 15096 for (int i = 0; i < 10; ++i) 15097 ++a; 15098 } 15099 #pragma omp target 15100 #pragma omp teams 15101 #pragma omp distribute parallel for 15102 for (int i = 0; i < 10; ++i) { 15103 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15104 for (int i = 0; i < 10; ++i) 15105 ++a; 15106 } 15107 #pragma omp target 15108 #pragma omp teams 15109 #pragma omp distribute parallel for 15110 for (int i = 0; i < 10; ++i) { 15111 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 15112 for (int i = 0; i < 10; ++i) 15113 ++a; 15114 } 15115 #pragma omp target 15116 #pragma omp teams 15117 #pragma omp distribute parallel for 15118 for (int i = 0; i < 10; ++i) { 15119 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 15120 for (int i = 0; i < 10; ++i) 15121 ++a; 15122 } 15123 #pragma omp target 15124 #pragma omp teams 15125 #pragma omp distribute parallel for 15126 for (int i = 0; i < 10; ++i) { 15127 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 15128 for (int i = 0; i < 10; ++i) 15129 ++a; 15130 } 15131 #pragma omp target 15132 #pragma omp teams 15133 #pragma omp distribute parallel for 15134 for (int i = 0; i < 10; ++i) { 15135 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 15136 for (int i = 0; i < 10; ++i) 15137 ++a; 15138 } 15139 #pragma omp target 15140 #pragma omp teams 15141 #pragma omp distribute parallel for 15142 for (int i = 0; i < 10; ++i) { 15143 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15144 ++a; 15145 } 15146 #pragma omp target 15147 #pragma omp teams 15148 #pragma omp distribute parallel for 15149 for (int i = 0; i < 10; ++i) { 15150 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15151 for (int i = 0; i < 10; ++i) 15152 ++a; 15153 } 15154 #pragma omp target 15155 #pragma omp teams 15156 #pragma omp distribute parallel for 15157 for (int i = 0; i < 10; ++i) { 15158 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15159 for (int i = 0; i < 10; ++i) 15160 ++a; 15161 } 15162 #pragma omp target 15163 #pragma omp teams 15164 #pragma omp distribute parallel for 15165 for (int i = 0; i < 10; ++i) { 15166 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15167 for (int i = 0; i < 10; ++i) 15168 ++a; 15169 } 15170 #pragma omp target 15171 #pragma omp teams 15172 #pragma omp distribute parallel for 15173 for (int i = 0; i < 10; ++i) { 15174 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15175 for (int i = 0; i < 10; ++i) 15176 ++a; 15177 } 15178 15179 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 15180 #pragma omp target 15181 #pragma omp teams 15182 #pragma omp distribute parallel for simd 15183 for (int i = 0; i < 10; ++i) { 15184 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15185 for (int i = 0; i < 10; ++i) 15186 ; 15187 } 15188 #pragma omp target 15189 #pragma omp teams 15190 #pragma omp distribute parallel for simd 15191 for (int i = 0; i < 10; ++i) { 15192 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15193 for (int i = 0; i < 10; ++i) 15194 ; 15195 } 15196 #pragma omp target 15197 #pragma omp teams 15198 #pragma omp distribute parallel for simd 15199 for (int i = 0; i < 10; ++i) { 15200 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15201 for (int i = 0; i < 10; ++i) 15202 ; 15203 } 15204 #pragma omp target 15205 #pragma omp teams 15206 #pragma omp distribute parallel for simd 15207 for (int i = 0; i < 10; ++i) { 15208 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15209 for (int i = 0; i < 10; ++i) 15210 ; 15211 } 15212 #pragma omp target 15213 #pragma omp teams 15214 #pragma omp distribute parallel for simd 15215 for (int i = 0; i < 10; ++i) { 15216 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15217 for (int i = 0; i < 10; ++i) 15218 ; 15219 } 15220 #pragma omp target 15221 #pragma omp teams 15222 #pragma omp distribute parallel for simd 15223 for (int i = 0; i < 10; ++i) { 15224 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15225 for (int i = 0; i < 10; ++i) 15226 ; 15227 } 15228 #pragma omp target 15229 #pragma omp teams 15230 #pragma omp distribute parallel for simd 15231 for (int i = 0; i < 10; ++i) { 15232 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15233 { 15234 bar(); 15235 } 15236 } 15237 #pragma omp target 15238 #pragma omp teams 15239 #pragma omp distribute parallel for simd 15240 for (int i = 0; i < 10; ++i) { 15241 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15242 { 15243 bar(); 15244 } 15245 } 15246 #pragma omp target 15247 #pragma omp teams 15248 #pragma omp distribute parallel for simd 15249 for (int i = 0; i < 10; ++i) { 15250 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15251 { 15252 bar(); 15253 } 15254 } 15255 #pragma omp target 15256 #pragma omp teams 15257 #pragma omp distribute parallel for simd 15258 for (int i = 0; i < 10; ++i) { 15259 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15260 { 15261 bar(); 15262 } 15263 } 15264 #pragma omp target 15265 #pragma omp teams 15266 #pragma omp distribute parallel for simd 15267 for (int i = 0; i < 10; ++i) { 15268 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15269 { 15270 bar(); 15271 } 15272 } 15273 #pragma omp target 15274 #pragma omp teams 15275 #pragma omp distribute parallel for simd 15276 for (int i = 0; i < 10; ++i) { 15277 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15278 { 15279 #pragma omp single 15280 { 15281 bar(); 15282 } 15283 } 15284 } 15285 #pragma omp target 15286 #pragma omp teams 15287 #pragma omp distribute parallel for simd 15288 for (int i = 0; i < 10; ++i) { 15289 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15290 for (int i = 0; i < 10; ++i) 15291 ; 15292 } 15293 #pragma omp target 15294 #pragma omp teams 15295 #pragma omp distribute parallel for simd 15296 for (int i = 0; i < 10; ++i) { 15297 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15298 for (int i = 0; i < 10; ++i) 15299 ; 15300 } 15301 #pragma omp target 15302 #pragma omp teams 15303 #pragma omp distribute parallel for simd 15304 for (int i = 0; i < 10; ++i) { 15305 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15306 { 15307 bar(); 15308 } 15309 } 15310 #pragma omp target 15311 #pragma omp teams 15312 #pragma omp distribute parallel for simd 15313 for (int i = 0; i < 10; ++i) { 15314 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15315 { 15316 bar(); 15317 } 15318 } 15319 #pragma omp target 15320 #pragma omp teams 15321 #pragma omp distribute parallel for simd 15322 for (int i = 0; i < 10; ++i) { 15323 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15324 bar(); 15325 } 15326 #pragma omp target 15327 #pragma omp teams 15328 #pragma omp distribute parallel for simd 15329 for (int i = 0; i < 10; ++i) { 15330 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15331 bar(); 15332 } 15333 #pragma omp target 15334 #pragma omp teams 15335 #pragma omp distribute parallel for simd 15336 for (int i = 0; i < 10; ++i) { 15337 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15338 bar(); 15339 } 15340 #pragma omp target 15341 #pragma omp teams 15342 #pragma omp distribute parallel for simd 15343 for (int i = 0; i < 10; ++i) { 15344 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15345 bar(); 15346 } 15347 #pragma omp target 15348 #pragma omp teams 15349 #pragma omp distribute parallel for simd 15350 for (int i = 0; i < 10; ++i) { 15351 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15352 bar(); 15353 } 15354 #pragma omp target 15355 #pragma omp teams 15356 #pragma omp distribute parallel for simd 15357 for (int i = 0; i < 10; ++i) { 15358 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15359 bar(); 15360 } 15361 #pragma omp target 15362 #pragma omp teams 15363 #pragma omp distribute parallel for simd 15364 for (int i = 0; i < 10; ++i) { 15365 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15366 ++a; 15367 } 15368 #pragma omp target 15369 #pragma omp teams 15370 #pragma omp distribute parallel for simd 15371 for (int i = 0; i < 10; ++i) { 15372 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15373 ++a; 15374 } 15375 #pragma omp target 15376 #pragma omp teams 15377 #pragma omp distribute parallel for simd 15378 for (int i = 0; i < 10; ++i) { 15379 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15380 ++a; 15381 } 15382 #pragma omp target 15383 #pragma omp teams 15384 #pragma omp distribute parallel for simd 15385 for (int i = 0; i < 10; ++i) { 15386 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15387 ++a; 15388 } 15389 #pragma omp target 15390 #pragma omp teams 15391 #pragma omp distribute parallel for simd 15392 for (int i = 0; i < 10; ++i) { 15393 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15394 ++a; 15395 } 15396 #pragma omp target 15397 #pragma omp teams 15398 #pragma omp distribute parallel for simd 15399 for (int i = 0; i < 10; ++i) { 15400 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15401 ++a; 15402 } 15403 #pragma omp target 15404 #pragma omp teams 15405 #pragma omp distribute parallel for simd 15406 for (int i = 0; i < 10; ++i) { 15407 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15408 ++a; 15409 } 15410 #pragma omp target 15411 #pragma omp teams 15412 #pragma omp distribute parallel for simd 15413 for (int i = 0; i < 10; ++i) { 15414 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15415 for (int i = 0; i < 10; ++i) 15416 ; 15417 } 15418 #pragma omp target 15419 #pragma omp teams 15420 #pragma omp distribute parallel for simd 15421 for (int i = 0; i < 10; ++i) { 15422 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15423 for (int i = 0; i < 10; ++i) 15424 ; 15425 } 15426 #pragma omp target 15427 #pragma omp teams 15428 #pragma omp distribute parallel for simd 15429 for (int i = 0; i < 10; ++i) { 15430 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15431 for (int i = 0; i < 10; ++i) 15432 ; 15433 } 15434 #pragma omp target 15435 #pragma omp teams 15436 #pragma omp distribute parallel for simd 15437 for (int i = 0; i < 10; ++i) { 15438 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15439 for (int i = 0; i < 10; ++i) 15440 ; 15441 } 15442 #pragma omp target 15443 #pragma omp teams 15444 #pragma omp distribute parallel for simd 15445 for (int i = 0; i < 10; ++i) { 15446 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15447 for (int i = 0; i < 10; ++i) 15448 ; 15449 } 15450 #pragma omp target 15451 #pragma omp teams 15452 #pragma omp distribute parallel for simd 15453 for (int i = 0; i < 10; ++i) { 15454 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15455 for (int i = 0; i < 10; ++i) 15456 ; 15457 } 15458 #pragma omp target 15459 #pragma omp teams 15460 #pragma omp distribute parallel for simd 15461 for (int i = 0; i < 10; ++i) { 15462 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15463 a++; 15464 } 15465 #pragma omp target 15466 #pragma omp teams 15467 #pragma omp distribute parallel for simd 15468 for (int i = 0; i < 10; ++i) { 15469 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15470 for (int i = 0; i < 10; ++i) 15471 ; 15472 } 15473 #pragma omp target 15474 #pragma omp teams 15475 #pragma omp distribute parallel for simd 15476 for (int i = 0; i < 10; ++i) { 15477 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15478 for (int i = 0; i < 10; ++i) 15479 ; 15480 } 15481 #pragma omp target 15482 #pragma omp teams 15483 #pragma omp distribute parallel for simd 15484 for (int i = 0; i < 10; ++i) { 15485 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15486 for (int i = 0; i < 10; ++i) 15487 ; 15488 } 15489 #pragma omp target 15490 #pragma omp teams 15491 #pragma omp distribute parallel for simd 15492 for (int i = 0; i < 10; ++i) { 15493 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15494 for (int i = 0; i < 10; ++i) 15495 ; 15496 } 15497 15498 // DISTRIBUTE SIMD DIRECTIVE 15499 #pragma omp target 15500 #pragma omp teams 15501 #pragma omp distribute simd 15502 for (int i = 0; i < 10; ++i) { 15503 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15504 for (int i = 0; i < 10; ++i) 15505 ; 15506 } 15507 #pragma omp target 15508 #pragma omp teams 15509 #pragma omp distribute simd 15510 for (int i = 0; i < 10; ++i) { 15511 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15512 for (int i = 0; i < 10; ++i) 15513 ; 15514 } 15515 #pragma omp target 15516 #pragma omp teams 15517 #pragma omp distribute simd 15518 for (int i = 0; i < 10; ++i) { 15519 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15520 for (int i = 0; i < 10; ++i) 15521 ; 15522 } 15523 #pragma omp target 15524 #pragma omp teams 15525 #pragma omp distribute simd 15526 for (int i = 0; i < 10; ++i) { 15527 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15528 for (int i = 0; i < 10; ++i) 15529 ; 15530 } 15531 #pragma omp target 15532 #pragma omp teams 15533 #pragma omp distribute simd 15534 for (int i = 0; i < 10; ++i) { 15535 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15536 for (int i = 0; i < 10; ++i) 15537 ; 15538 } 15539 #pragma omp target 15540 #pragma omp teams 15541 #pragma omp distribute simd 15542 for (int i = 0; i < 10; ++i) { 15543 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15544 for (int i = 0; i < 10; ++i) 15545 ; 15546 } 15547 #pragma omp target 15548 #pragma omp teams 15549 #pragma omp distribute simd 15550 for (int i = 0; i < 10; ++i) { 15551 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15552 { 15553 bar(); 15554 } 15555 } 15556 #pragma omp target 15557 #pragma omp teams 15558 #pragma omp distribute simd 15559 for (int i = 0; i < 10; ++i) { 15560 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15561 { 15562 bar(); 15563 } 15564 } 15565 #pragma omp target 15566 #pragma omp teams 15567 #pragma omp distribute simd 15568 for (int i = 0; i < 10; ++i) { 15569 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15570 { 15571 bar(); 15572 } 15573 } 15574 #pragma omp target 15575 #pragma omp teams 15576 #pragma omp distribute simd 15577 for (int i = 0; i < 10; ++i) { 15578 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15579 { 15580 bar(); 15581 } 15582 } 15583 #pragma omp target 15584 #pragma omp teams 15585 #pragma omp distribute simd 15586 for (int i = 0; i < 10; ++i) { 15587 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15588 { 15589 bar(); 15590 } 15591 } 15592 #pragma omp target 15593 #pragma omp teams 15594 #pragma omp distribute simd 15595 for (int i = 0; i < 10; ++i) { 15596 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15597 { 15598 #pragma omp single 15599 { 15600 bar(); 15601 } 15602 } 15603 } 15604 #pragma omp target 15605 #pragma omp teams 15606 #pragma omp distribute simd 15607 for (int i = 0; i < 10; ++i) { 15608 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15609 for (int i = 0; i < 10; ++i) 15610 ; 15611 } 15612 #pragma omp target 15613 #pragma omp teams 15614 #pragma omp distribute simd 15615 for (int i = 0; i < 10; ++i) { 15616 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15617 for (int i = 0; i < 10; ++i) 15618 ; 15619 } 15620 #pragma omp target 15621 #pragma omp teams 15622 #pragma omp distribute simd 15623 for (int i = 0; i < 10; ++i) { 15624 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15625 { 15626 bar(); 15627 } 15628 } 15629 #pragma omp target 15630 #pragma omp teams 15631 #pragma omp distribute simd 15632 for (int i = 0; i < 10; ++i) { 15633 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15634 { 15635 bar(); 15636 } 15637 } 15638 #pragma omp target 15639 #pragma omp teams 15640 #pragma omp distribute simd 15641 for (int i = 0; i < 10; ++i) { 15642 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15643 bar(); 15644 } 15645 #pragma omp target 15646 #pragma omp teams 15647 #pragma omp distribute simd 15648 for (int i = 0; i < 10; ++i) { 15649 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15650 bar(); 15651 } 15652 #pragma omp target 15653 #pragma omp teams 15654 #pragma omp distribute simd 15655 for (int i = 0; i < 10; ++i) { 15656 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15657 bar(); 15658 } 15659 #pragma omp target 15660 #pragma omp teams 15661 #pragma omp distribute simd 15662 for (int i = 0; i < 10; ++i) { 15663 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15664 bar(); 15665 } 15666 #pragma omp target 15667 #pragma omp teams 15668 #pragma omp distribute simd 15669 for (int i = 0; i < 10; ++i) { 15670 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15671 bar(); 15672 } 15673 #pragma omp target 15674 #pragma omp teams 15675 #pragma omp distribute simd 15676 for (int i = 0; i < 10; ++i) { 15677 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15678 bar(); 15679 } 15680 #pragma omp target 15681 #pragma omp teams 15682 #pragma omp distribute simd 15683 for (int i = 0; i < 10; ++i) { 15684 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15685 ++a; 15686 } 15687 #pragma omp target 15688 #pragma omp teams 15689 #pragma omp distribute simd 15690 for (int i = 0; i < 10; ++i) { 15691 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15692 ++a; 15693 } 15694 #pragma omp target 15695 #pragma omp teams 15696 #pragma omp distribute simd 15697 for (int i = 0; i < 10; ++i) { 15698 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15699 ++a; 15700 } 15701 #pragma omp target 15702 #pragma omp teams 15703 #pragma omp distribute simd 15704 for (int i = 0; i < 10; ++i) { 15705 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15706 ++a; 15707 } 15708 #pragma omp target 15709 #pragma omp teams 15710 #pragma omp distribute simd 15711 for (int i = 0; i < 10; ++i) { 15712 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15713 ++a; 15714 } 15715 #pragma omp target 15716 #pragma omp teams 15717 #pragma omp distribute simd 15718 for (int i = 0; i < 10; ++i) { 15719 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15720 ++a; 15721 } 15722 #pragma omp target 15723 #pragma omp teams 15724 #pragma omp distribute simd 15725 for (int i = 0; i < 10; ++i) { 15726 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15727 ++a; 15728 } 15729 #pragma omp target 15730 #pragma omp teams 15731 #pragma omp distribute simd 15732 for (int i = 0; i < 10; ++i) { 15733 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15734 for (int i = 0; i < 10; ++i) 15735 ; 15736 } 15737 #pragma omp target 15738 #pragma omp teams 15739 #pragma omp distribute simd 15740 for (int i = 0; i < 10; ++i) { 15741 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15742 for (int i = 0; i < 10; ++i) 15743 ; 15744 } 15745 #pragma omp target 15746 #pragma omp teams 15747 #pragma omp distribute simd 15748 for (int i = 0; i < 10; ++i) { 15749 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15750 for (int i = 0; i < 10; ++i) 15751 ; 15752 } 15753 #pragma omp target 15754 #pragma omp teams 15755 #pragma omp distribute simd 15756 for (int i = 0; i < 10; ++i) { 15757 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15758 for (int i = 0; i < 10; ++i) 15759 ; 15760 } 15761 #pragma omp target 15762 #pragma omp teams 15763 #pragma omp distribute simd 15764 for (int i = 0; i < 10; ++i) { 15765 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15766 for (int i = 0; i < 10; ++i) 15767 ; 15768 } 15769 #pragma omp target 15770 #pragma omp teams 15771 #pragma omp distribute simd 15772 for (int i = 0; i < 10; ++i) { 15773 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15774 for (int i = 0; i < 10; ++i) 15775 ; 15776 } 15777 #pragma omp target 15778 #pragma omp teams 15779 #pragma omp distribute simd 15780 for (int i = 0; i < 10; ++i) { 15781 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15782 a++; 15783 } 15784 #pragma omp target 15785 #pragma omp teams 15786 #pragma omp distribute simd 15787 for (int i = 0; i < 10; ++i) { 15788 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15789 for (int i = 0; i < 10; ++i) 15790 ; 15791 } 15792 #pragma omp target 15793 #pragma omp teams 15794 #pragma omp distribute simd 15795 for (int i = 0; i < 10; ++i) { 15796 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15797 for (int i = 0; i < 10; ++i) 15798 ; 15799 } 15800 #pragma omp target 15801 #pragma omp teams 15802 #pragma omp distribute simd 15803 for (int i = 0; i < 10; ++i) { 15804 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15805 for (int i = 0; i < 10; ++i) 15806 ; 15807 } 15808 #pragma omp target 15809 #pragma omp teams 15810 #pragma omp distribute simd 15811 for (int i = 0; i < 10; ++i) { 15812 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15813 for (int i = 0; i < 10; ++i) 15814 ; 15815 } 15816 15817 // TARGET SIMD DIRECTIVE 15818 #pragma omp target simd 15819 for (int i = 0; i < 10; ++i) { 15820 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15821 for (int i = 0; i < 10; ++i) 15822 ; 15823 } 15824 #pragma omp target simd 15825 for (int i = 0; i < 10; ++i) { 15826 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15827 for (int i = 0; i < 10; ++i) 15828 ; 15829 } 15830 #pragma omp target simd 15831 for (int i = 0; i < 10; ++i) { 15832 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15833 for (int i = 0; i < 10; ++i) 15834 ; 15835 } 15836 #pragma omp target simd 15837 for (int i = 0; i < 10; ++i) { 15838 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15839 for (int i = 0; i < 10; ++i) 15840 ; 15841 } 15842 #pragma omp target simd 15843 for (int i = 0; i < 10; ++i) { 15844 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15845 for (int i = 0; i < 10; ++i) 15846 ; 15847 } 15848 #pragma omp target simd 15849 for (int i = 0; i < 10; ++i) { 15850 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15851 for (int i = 0; i < 10; ++i) 15852 ; 15853 } 15854 #pragma omp target simd 15855 for (int i = 0; i < 10; ++i) { 15856 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15857 { 15858 bar(); 15859 } 15860 } 15861 #pragma omp target simd 15862 for (int i = 0; i < 10; ++i) { 15863 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15864 { 15865 bar(); 15866 } 15867 } 15868 #pragma omp target simd 15869 for (int i = 0; i < 10; ++i) { 15870 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15871 { 15872 bar(); 15873 } 15874 } 15875 #pragma omp target simd 15876 for (int i = 0; i < 10; ++i) { 15877 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15878 { 15879 bar(); 15880 } 15881 } 15882 #pragma omp target simd 15883 for (int i = 0; i < 10; ++i) { 15884 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15885 { 15886 bar(); 15887 } 15888 } 15889 #pragma omp target simd 15890 for (int i = 0; i < 10; ++i) { 15891 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15892 { 15893 #pragma omp single 15894 { 15895 bar(); 15896 } 15897 } 15898 } 15899 #pragma omp target simd 15900 for (int i = 0; i < 10; ++i) { 15901 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15902 for (int i = 0; i < 10; ++i) 15903 ; 15904 } 15905 #pragma omp target simd 15906 for (int i = 0; i < 10; ++i) { 15907 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15908 for (int i = 0; i < 10; ++i) 15909 ; 15910 } 15911 #pragma omp target simd 15912 for (int i = 0; i < 10; ++i) { 15913 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15914 { 15915 bar(); 15916 } 15917 } 15918 #pragma omp target simd 15919 for (int i = 0; i < 10; ++i) { 15920 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15921 { 15922 bar(); 15923 } 15924 } 15925 #pragma omp target simd 15926 for (int i = 0; i < 10; ++i) { 15927 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15928 bar(); 15929 } 15930 #pragma omp target simd 15931 for (int i = 0; i < 10; ++i) { 15932 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15933 bar(); 15934 } 15935 #pragma omp target simd 15936 for (int i = 0; i < 10; ++i) { 15937 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15938 bar(); 15939 } 15940 #pragma omp target simd 15941 for (int i = 0; i < 10; ++i) { 15942 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15943 bar(); 15944 } 15945 #pragma omp target simd 15946 for (int i = 0; i < 10; ++i) { 15947 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15948 bar(); 15949 } 15950 #pragma omp target simd 15951 for (int i = 0; i < 10; ++i) { 15952 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15953 bar(); 15954 } 15955 #pragma omp target simd 15956 for (int i = 0; i < 10; ++i) { 15957 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15958 ++a; 15959 } 15960 #pragma omp target simd 15961 for (int i = 0; i < 10; ++i) { 15962 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15963 ++a; 15964 } 15965 #pragma omp target simd 15966 for (int i = 0; i < 10; ++i) { 15967 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15968 ++a; 15969 } 15970 #pragma omp target simd 15971 for (int i = 0; i < 10; ++i) { 15972 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15973 ++a; 15974 } 15975 #pragma omp target simd 15976 for (int i = 0; i < 10; ++i) { 15977 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15978 ++a; 15979 } 15980 #pragma omp target simd 15981 for (int i = 0; i < 10; ++i) { 15982 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15983 ++a; 15984 } 15985 #pragma omp target simd 15986 for (int i = 0; i < 10; ++i) { 15987 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15988 ++a; 15989 } 15990 #pragma omp target simd 15991 for (int i = 0; i < 10; ++i) { 15992 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15993 for (int i = 0; i < 10; ++i) 15994 ; 15995 } 15996 #pragma omp target simd 15997 for (int i = 0; i < 10; ++i) { 15998 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15999 for (int i = 0; i < 10; ++i) 16000 ; 16001 } 16002 #pragma omp target simd 16003 for (int i = 0; i < 10; ++i) { 16004 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16005 for (int i = 0; i < 10; ++i) 16006 ; 16007 } 16008 #pragma omp target simd 16009 for (int i = 0; i < 10; ++i) { 16010 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16011 for (int i = 0; i < 10; ++i) 16012 ; 16013 } 16014 #pragma omp target simd 16015 for (int i = 0; i < 10; ++i) { 16016 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16017 for (int i = 0; i < 10; ++i) 16018 ; 16019 } 16020 #pragma omp target simd 16021 for (int i = 0; i < 10; ++i) { 16022 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16023 for (int i = 0; i < 10; ++i) 16024 ; 16025 } 16026 #pragma omp target simd 16027 for (int i = 0; i < 10; ++i) { 16028 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16029 a++; 16030 } 16031 #pragma omp target simd 16032 for (int i = 0; i < 10; ++i) { 16033 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16034 for (int i = 0; i < 10; ++i) 16035 ; 16036 } 16037 #pragma omp target simd 16038 for (int i = 0; i < 10; ++i) { 16039 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16040 for (int i = 0; i < 10; ++i) 16041 ; 16042 } 16043 #pragma omp target simd 16044 for (int i = 0; i < 10; ++i) { 16045 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16046 for (int i = 0; i < 10; ++i) 16047 ; 16048 } 16049 #pragma omp target simd 16050 for (int i = 0; i < 10; ++i) { 16051 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16052 for (int i = 0; i < 10; ++i) 16053 ; 16054 } 16055 16056 // TEAMS DISTRIBUTE DIRECTIVE 16057 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16058 for (int i = 0; i < 10; ++i) 16059 ; 16060 #pragma omp target 16061 #pragma omp teams distribute 16062 for (int i = 0; i < 10; ++i) { 16063 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 16064 for (int i = 0; i < 10; ++i) 16065 ; 16066 } 16067 #pragma omp target 16068 #pragma omp teams distribute 16069 for (int i = 0; i < 10; ++i) { 16070 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 16071 for (int i = 0; i < 10; ++i) 16072 ; 16073 } 16074 #pragma omp target 16075 #pragma omp teams distribute 16076 for (int i = 0; i < 10; ++i) { 16077 #pragma omp for // OK 16078 for (int i = 0; i < 10; ++i) 16079 ; 16080 } 16081 #pragma omp target 16082 #pragma omp teams distribute 16083 for (int i = 0; i < 10; ++i) { 16084 #pragma omp simd // OK 16085 for (int i = 0; i < 10; ++i) 16086 ; 16087 } 16088 #pragma omp target 16089 #pragma omp teams distribute 16090 for (int i = 0; i < 10; ++i) { 16091 #pragma omp for simd // OK 16092 for (int i = 0; i < 10; ++i) 16093 ; 16094 } 16095 #pragma omp target 16096 #pragma omp teams distribute 16097 for (int i = 0; i < 10; ++i) { 16098 #pragma omp parallel // OK 16099 for (int i = 0; i < 10; ++i) 16100 ; 16101 } 16102 #pragma omp target 16103 #pragma omp teams distribute 16104 for (int i = 0; i < 10; ++i) { 16105 #pragma omp sections // OK 16106 { 16107 bar(); 16108 } 16109 } 16110 #pragma omp target 16111 #pragma omp teams distribute 16112 for (int i = 0; i < 10; ++i) { 16113 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 16114 { 16115 bar(); 16116 } 16117 } 16118 #pragma omp target 16119 #pragma omp teams distribute 16120 for (int i = 0; i < 10; ++i) { 16121 #pragma omp single // OK 16122 { 16123 bar(); 16124 } 16125 } 16126 #pragma omp target 16127 #pragma omp teams distribute 16128 for (int i = 0; i < 10; ++i) { 16129 #pragma omp master // OK 16130 { 16131 bar(); 16132 } 16133 } 16134 #pragma omp target 16135 #pragma omp teams distribute 16136 for (int i = 0; i < 10; ++i) { 16137 #pragma omp critical // OK 16138 { 16139 bar(); 16140 } 16141 } 16142 #pragma omp target 16143 #pragma omp teams distribute 16144 for (int i = 0; i < 10; ++i) { 16145 #pragma omp parallel // OK 16146 { 16147 #pragma omp single 16148 { 16149 bar(); 16150 } 16151 } 16152 } 16153 #pragma omp target 16154 #pragma omp teams distribute 16155 for (int i = 0; i < 10; ++i) { 16156 #pragma omp parallel for // OK 16157 for (int i = 0; i < 10; ++i) 16158 ; 16159 } 16160 #pragma omp target 16161 #pragma omp teams distribute 16162 for (int i = 0; i < 10; ++i) { 16163 #pragma omp parallel for simd // OK 16164 for (int i = 0; i < 10; ++i) 16165 ; 16166 } 16167 #pragma omp target 16168 #pragma omp teams distribute 16169 for (int i = 0; i < 10; ++i) { 16170 #pragma omp parallel sections // OK 16171 { 16172 bar(); 16173 } 16174 } 16175 #pragma omp target 16176 #pragma omp teams distribute 16177 for (int i = 0; i < 10; ++i) { 16178 #pragma omp task // OK 16179 { 16180 bar(); 16181 } 16182 } 16183 #pragma omp target 16184 #pragma omp teams distribute 16185 for (int i = 0; i < 10; ++i) { 16186 #pragma omp taskyield // OK 16187 bar(); 16188 } 16189 #pragma omp target 16190 #pragma omp teams distribute 16191 for (int i = 0; i < 10; ++i) { 16192 #pragma omp barrier // OK 16193 bar(); 16194 } 16195 #pragma omp target 16196 #pragma omp teams distribute 16197 for (int i = 0; i < 10; ++i) { 16198 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16199 bar(); 16200 } 16201 #pragma omp target 16202 #pragma omp teams distribute 16203 for (int i = 0; i < 10; ++i) { 16204 #pragma omp taskwait // OK 16205 bar(); 16206 } 16207 #pragma omp target 16208 #pragma omp teams distribute 16209 for (int i = 0; i < 10; ++i) { 16210 #pragma omp flush // OK 16211 bar(); 16212 } 16213 #pragma omp target 16214 #pragma omp teams distribute 16215 for (int i = 0; i < 10; ++i) { 16216 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 16217 bar(); 16218 } 16219 #pragma omp target 16220 #pragma omp teams distribute 16221 for (int i = 0; i < 10; ++i) { 16222 #pragma omp atomic // OK 16223 ++a; 16224 } 16225 #pragma omp target 16226 #pragma omp teams distribute 16227 for (int i = 0; i < 10; ++i) { 16228 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16229 ++a; 16230 } 16231 #pragma omp target 16232 #pragma omp teams distribute 16233 for (int i = 0; i < 10; ++i) { 16234 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16235 ++a; 16236 } 16237 #pragma omp target 16238 #pragma omp teams distribute 16239 for (int i = 0; i < 10; ++i) { 16240 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16241 for (int i = 0; i < 10; ++i) 16242 ; 16243 } 16244 #pragma omp target 16245 #pragma omp teams distribute 16246 for (int i = 0; i < 10; ++i) { 16247 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16248 ++a; 16249 } 16250 #pragma omp target 16251 #pragma omp teams distribute 16252 for (int i = 0; i < 10; ++i) { 16253 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16254 ++a; 16255 } 16256 #pragma omp target 16257 #pragma omp teams distribute 16258 for (int i = 0; i < 10; ++i) { 16259 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 16260 ++a; 16261 } 16262 #pragma omp target 16263 #pragma omp teams distribute 16264 for (int i = 0; i < 10; ++i) { 16265 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16266 ++a; 16267 } 16268 #pragma omp target 16269 #pragma omp teams distribute 16270 for (int i = 0; i < 10; ++i) { 16271 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 16272 for (int i = 0; i < 10; ++i) 16273 ++a; 16274 } 16275 #pragma omp target 16276 #pragma omp teams distribute 16277 for (int i = 0; i < 10; ++i) { 16278 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16279 for (int i = 0; i < 10; ++i) 16280 ++a; 16281 } 16282 #pragma omp target 16283 #pragma omp teams distribute 16284 for (int i = 0; i < 10; ++i) { 16285 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 16286 for (int i = 0; i < 10; ++i) 16287 ++a; 16288 } 16289 #pragma omp target 16290 #pragma omp teams distribute 16291 for (int i = 0; i < 10; ++i) { 16292 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 16293 for (int i = 0; i < 10; ++i) 16294 ++a; 16295 } 16296 #pragma omp target 16297 #pragma omp teams distribute 16298 for (int i = 0; i < 10; ++i) { 16299 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 16300 for (int i = 0; i < 10; ++i) 16301 ++a; 16302 } 16303 #pragma omp target 16304 #pragma omp teams distribute 16305 for (int i = 0; i < 10; ++i) { 16306 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 16307 for (int i = 0; i < 10; ++i) 16308 ++a; 16309 } 16310 #pragma omp target 16311 #pragma omp teams distribute 16312 for (int i = 0; i < 10; ++i) { 16313 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16314 ++a; 16315 } 16316 #pragma omp target 16317 #pragma omp teams distribute 16318 for (int i = 0; i < 10; ++i) { 16319 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16320 for (int i = 0; i < 10; ++i) 16321 ++a; 16322 } 16323 #pragma omp target 16324 #pragma omp teams distribute 16325 for (int i = 0; i < 10; ++i) { 16326 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16327 for (int i = 0; i < 10; ++i) 16328 ++a; 16329 } 16330 #pragma omp target 16331 #pragma omp teams distribute 16332 for (int i = 0; i < 10; ++i) { 16333 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16334 for (int i = 0; i < 10; ++i) 16335 ++a; 16336 } 16337 #pragma omp target 16338 #pragma omp teams distribute 16339 for (int i = 0; i < 10; ++i) { 16340 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16341 for (int i = 0; i < 10; ++i) 16342 ++a; 16343 } 16344 16345 // TEAMS DISTRIBUTE SIMD DIRECTIVE 16346 #pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16347 for (int i = 0; i < 10; ++i) 16348 ; 16349 #pragma omp target 16350 #pragma omp teams distribute simd 16351 for (int i = 0; i < 10; ++i) { 16352 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16353 for (int i = 0; i < 10; ++i) 16354 ; 16355 } 16356 #pragma omp target 16357 #pragma omp teams distribute simd 16358 for (int i = 0; i < 10; ++i) { 16359 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16360 for (int i = 0; i < 10; ++i) 16361 ; 16362 } 16363 #pragma omp target 16364 #pragma omp teams distribute simd 16365 for (int i = 0; i < 10; ++i) { 16366 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16367 for (int i = 0; i < 10; ++i) 16368 ; 16369 } 16370 #pragma omp target 16371 #pragma omp teams distribute simd 16372 for (int i = 0; i < 10; ++i) { 16373 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16374 for (int i = 0; i < 10; ++i) 16375 ; 16376 } 16377 #pragma omp target 16378 #pragma omp teams distribute simd 16379 for (int i = 0; i < 10; ++i) { 16380 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16381 for (int i = 0; i < 10; ++i) 16382 ; 16383 } 16384 #pragma omp target 16385 #pragma omp teams distribute simd 16386 for (int i = 0; i < 10; ++i) { 16387 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16388 for (int i = 0; i < 10; ++i) 16389 ; 16390 } 16391 #pragma omp target 16392 #pragma omp teams distribute simd 16393 for (int i = 0; i < 10; ++i) { 16394 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16395 { 16396 bar(); 16397 } 16398 } 16399 #pragma omp target 16400 #pragma omp teams distribute simd 16401 for (int i = 0; i < 10; ++i) { 16402 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16403 { 16404 bar(); 16405 } 16406 } 16407 #pragma omp target 16408 #pragma omp teams distribute simd 16409 for (int i = 0; i < 10; ++i) { 16410 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16411 { 16412 bar(); 16413 } 16414 } 16415 #pragma omp target 16416 #pragma omp teams distribute simd 16417 for (int i = 0; i < 10; ++i) { 16418 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16419 { 16420 bar(); 16421 } 16422 } 16423 #pragma omp target 16424 #pragma omp teams distribute simd 16425 for (int i = 0; i < 10; ++i) { 16426 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16427 { 16428 bar(); 16429 } 16430 } 16431 #pragma omp target 16432 #pragma omp teams distribute simd 16433 for (int i = 0; i < 10; ++i) { 16434 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16435 { 16436 #pragma omp single 16437 { 16438 bar(); 16439 } 16440 } 16441 } 16442 #pragma omp target 16443 #pragma omp teams distribute simd 16444 for (int i = 0; i < 10; ++i) { 16445 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16446 for (int i = 0; i < 10; ++i) 16447 ; 16448 } 16449 #pragma omp target 16450 #pragma omp teams distribute simd 16451 for (int i = 0; i < 10; ++i) { 16452 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16453 for (int i = 0; i < 10; ++i) 16454 ; 16455 } 16456 #pragma omp target 16457 #pragma omp teams distribute simd 16458 for (int i = 0; i < 10; ++i) { 16459 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16460 { 16461 bar(); 16462 } 16463 } 16464 #pragma omp target 16465 #pragma omp teams distribute simd 16466 for (int i = 0; i < 10; ++i) { 16467 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16468 { 16469 bar(); 16470 } 16471 } 16472 #pragma omp target 16473 #pragma omp teams distribute simd 16474 for (int i = 0; i < 10; ++i) { 16475 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16476 bar(); 16477 } 16478 #pragma omp target 16479 #pragma omp teams distribute simd 16480 for (int i = 0; i < 10; ++i) { 16481 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16482 bar(); 16483 } 16484 #pragma omp target 16485 #pragma omp teams distribute simd 16486 for (int i = 0; i < 10; ++i) { 16487 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16488 bar(); 16489 } 16490 #pragma omp target 16491 #pragma omp teams distribute simd 16492 for (int i = 0; i < 10; ++i) { 16493 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16494 bar(); 16495 } 16496 #pragma omp target 16497 #pragma omp teams distribute simd 16498 for (int i = 0; i < 10; ++i) { 16499 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16500 bar(); 16501 } 16502 #pragma omp target 16503 #pragma omp teams distribute simd 16504 for (int i = 0; i < 10; ++i) { 16505 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16506 bar(); 16507 } 16508 #pragma omp target 16509 #pragma omp teams distribute simd 16510 for (int i = 0; i < 10; ++i) { 16511 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16512 ++a; 16513 } 16514 #pragma omp target 16515 #pragma omp teams distribute simd 16516 for (int i = 0; i < 10; ++i) { 16517 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16518 ++a; 16519 } 16520 #pragma omp target 16521 #pragma omp teams distribute simd 16522 for (int i = 0; i < 10; ++i) { 16523 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16524 ++a; 16525 } 16526 #pragma omp target 16527 #pragma omp teams distribute simd 16528 for (int i = 0; i < 10; ++i) { 16529 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16530 for (int i = 0; i < 10; ++i) 16531 ; 16532 } 16533 #pragma omp target 16534 #pragma omp teams distribute simd 16535 for (int i = 0; i < 10; ++i) { 16536 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16537 ++a; 16538 } 16539 #pragma omp target 16540 #pragma omp teams distribute simd 16541 for (int i = 0; i < 10; ++i) { 16542 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16543 ++a; 16544 } 16545 #pragma omp target 16546 #pragma omp teams distribute simd 16547 for (int i = 0; i < 10; ++i) { 16548 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16549 ++a; 16550 } 16551 #pragma omp target 16552 #pragma omp teams distribute simd 16553 for (int i = 0; i < 10; ++i) { 16554 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16555 ++a; 16556 } 16557 #pragma omp target 16558 #pragma omp teams distribute simd 16559 for (int i = 0; i < 10; ++i) { 16560 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16561 for (int i = 0; i < 10; ++i) 16562 ++a; 16563 } 16564 #pragma omp target 16565 #pragma omp teams distribute simd 16566 for (int i = 0; i < 10; ++i) { 16567 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16568 for (int i = 0; i < 10; ++i) 16569 ++a; 16570 } 16571 #pragma omp target 16572 #pragma omp teams distribute simd 16573 for (int i = 0; i < 10; ++i) { 16574 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16575 for (int i = 0; i < 10; ++i) 16576 ++a; 16577 } 16578 #pragma omp target 16579 #pragma omp teams distribute simd 16580 for (int i = 0; i < 10; ++i) { 16581 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16582 for (int i = 0; i < 10; ++i) 16583 ++a; 16584 } 16585 #pragma omp target 16586 #pragma omp teams distribute simd 16587 for (int i = 0; i < 10; ++i) { 16588 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16589 for (int i = 0; i < 10; ++i) 16590 ++a; 16591 } 16592 #pragma omp target 16593 #pragma omp teams distribute simd 16594 for (int i = 0; i < 10; ++i) { 16595 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16596 for (int i = 0; i < 10; ++i) 16597 ++a; 16598 } 16599 #pragma omp target 16600 #pragma omp teams distribute simd 16601 for (int i = 0; i < 10; ++i) { 16602 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16603 ++a; 16604 } 16605 #pragma omp target 16606 #pragma omp teams distribute simd 16607 for (int i = 0; i < 10; ++i) { 16608 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16609 for (int i = 0; i < 10; ++i) 16610 ++a; 16611 } 16612 #pragma omp target 16613 #pragma omp teams distribute simd 16614 for (int i = 0; i < 10; ++i) { 16615 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16616 for (int i = 0; i < 10; ++i) 16617 ++a; 16618 } 16619 #pragma omp target 16620 #pragma omp teams distribute simd 16621 for (int i = 0; i < 10; ++i) { 16622 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16623 for (int i = 0; i < 10; ++i) 16624 ++a; 16625 } 16626 #pragma omp target 16627 #pragma omp teams distribute simd 16628 for (int i = 0; i < 10; ++i) { 16629 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16630 for (int i = 0; i < 10; ++i) 16631 ++a; 16632 } 16633 16634 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 16635 #pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16636 for (int i = 0; i < 10; ++i) 16637 ; 16638 #pragma omp target 16639 #pragma omp teams distribute parallel for simd 16640 for (int i = 0; i < 10; ++i) { 16641 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16642 for (int i = 0; i < 10; ++i) 16643 ; 16644 } 16645 #pragma omp target 16646 #pragma omp teams distribute parallel for simd 16647 for (int i = 0; i < 10; ++i) { 16648 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16649 for (int i = 0; i < 10; ++i) 16650 ; 16651 } 16652 #pragma omp target 16653 #pragma omp teams distribute parallel for simd 16654 for (int i = 0; i < 10; ++i) { 16655 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16656 for (int i = 0; i < 10; ++i) 16657 ; 16658 } 16659 #pragma omp target 16660 #pragma omp teams distribute parallel for simd 16661 for (int i = 0; i < 10; ++i) { 16662 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16663 for (int i = 0; i < 10; ++i) 16664 ; 16665 } 16666 #pragma omp target 16667 #pragma omp teams distribute parallel for simd 16668 for (int i = 0; i < 10; ++i) { 16669 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16670 for (int i = 0; i < 10; ++i) 16671 ; 16672 } 16673 #pragma omp target 16674 #pragma omp teams distribute parallel for simd 16675 for (int i = 0; i < 10; ++i) { 16676 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16677 for (int i = 0; i < 10; ++i) 16678 ; 16679 } 16680 #pragma omp target 16681 #pragma omp teams distribute parallel for simd 16682 for (int i = 0; i < 10; ++i) { 16683 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16684 { 16685 bar(); 16686 } 16687 } 16688 #pragma omp target 16689 #pragma omp teams distribute parallel for simd 16690 for (int i = 0; i < 10; ++i) { 16691 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16692 { 16693 bar(); 16694 } 16695 } 16696 #pragma omp target 16697 #pragma omp teams distribute parallel for simd 16698 for (int i = 0; i < 10; ++i) { 16699 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16700 { 16701 bar(); 16702 } 16703 } 16704 #pragma omp target 16705 #pragma omp teams distribute parallel for simd 16706 for (int i = 0; i < 10; ++i) { 16707 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16708 { 16709 bar(); 16710 } 16711 } 16712 #pragma omp target 16713 #pragma omp teams distribute parallel for simd 16714 for (int i = 0; i < 10; ++i) { 16715 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16716 { 16717 bar(); 16718 } 16719 } 16720 #pragma omp target 16721 #pragma omp teams distribute parallel for simd 16722 for (int i = 0; i < 10; ++i) { 16723 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16724 { 16725 #pragma omp single 16726 { 16727 bar(); 16728 } 16729 } 16730 } 16731 #pragma omp target 16732 #pragma omp teams distribute parallel for simd 16733 for (int i = 0; i < 10; ++i) { 16734 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16735 for (int i = 0; i < 10; ++i) 16736 ; 16737 } 16738 #pragma omp target 16739 #pragma omp teams distribute parallel for simd 16740 for (int i = 0; i < 10; ++i) { 16741 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16742 for (int i = 0; i < 10; ++i) 16743 ; 16744 } 16745 #pragma omp target 16746 #pragma omp teams distribute parallel for simd 16747 for (int i = 0; i < 10; ++i) { 16748 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16749 { 16750 bar(); 16751 } 16752 } 16753 #pragma omp target 16754 #pragma omp teams distribute parallel for simd 16755 for (int i = 0; i < 10; ++i) { 16756 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16757 { 16758 bar(); 16759 } 16760 } 16761 #pragma omp target 16762 #pragma omp teams distribute parallel for simd 16763 for (int i = 0; i < 10; ++i) { 16764 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16765 bar(); 16766 } 16767 #pragma omp target 16768 #pragma omp teams distribute parallel for simd 16769 for (int i = 0; i < 10; ++i) { 16770 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16771 bar(); 16772 } 16773 #pragma omp target 16774 #pragma omp teams distribute parallel for simd 16775 for (int i = 0; i < 10; ++i) { 16776 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16777 bar(); 16778 } 16779 #pragma omp target 16780 #pragma omp teams distribute parallel for simd 16781 for (int i = 0; i < 10; ++i) { 16782 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16783 bar(); 16784 } 16785 #pragma omp target 16786 #pragma omp teams distribute parallel for simd 16787 for (int i = 0; i < 10; ++i) { 16788 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16789 bar(); 16790 } 16791 #pragma omp target 16792 #pragma omp teams distribute parallel for simd 16793 for (int i = 0; i < 10; ++i) { 16794 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16795 bar(); 16796 } 16797 #pragma omp target 16798 #pragma omp teams distribute parallel for simd 16799 for (int i = 0; i < 10; ++i) { 16800 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16801 ++a; 16802 } 16803 #pragma omp target 16804 #pragma omp teams distribute parallel for simd 16805 for (int i = 0; i < 10; ++i) { 16806 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16807 ++a; 16808 } 16809 #pragma omp target 16810 #pragma omp teams distribute parallel for simd 16811 for (int i = 0; i < 10; ++i) { 16812 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16813 ++a; 16814 } 16815 #pragma omp target 16816 #pragma omp teams distribute parallel for simd 16817 for (int i = 0; i < 10; ++i) { 16818 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16819 for (int i = 0; i < 10; ++i) 16820 ; 16821 } 16822 #pragma omp target 16823 #pragma omp teams distribute parallel for simd 16824 for (int i = 0; i < 10; ++i) { 16825 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16826 ++a; 16827 } 16828 #pragma omp target 16829 #pragma omp teams distribute parallel for simd 16830 for (int i = 0; i < 10; ++i) { 16831 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16832 ++a; 16833 } 16834 #pragma omp target 16835 #pragma omp teams distribute parallel for simd 16836 for (int i = 0; i < 10; ++i) { 16837 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16838 ++a; 16839 } 16840 #pragma omp target 16841 #pragma omp teams distribute parallel for simd 16842 for (int i = 0; i < 10; ++i) { 16843 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16844 ++a; 16845 } 16846 #pragma omp target 16847 #pragma omp teams distribute parallel for simd 16848 for (int i = 0; i < 10; ++i) { 16849 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16850 for (int i = 0; i < 10; ++i) 16851 ++a; 16852 } 16853 #pragma omp target 16854 #pragma omp teams distribute parallel for simd 16855 for (int i = 0; i < 10; ++i) { 16856 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16857 for (int i = 0; i < 10; ++i) 16858 ++a; 16859 } 16860 #pragma omp target 16861 #pragma omp teams distribute parallel for simd 16862 for (int i = 0; i < 10; ++i) { 16863 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16864 for (int i = 0; i < 10; ++i) 16865 ++a; 16866 } 16867 #pragma omp target 16868 #pragma omp teams distribute parallel for simd 16869 for (int i = 0; i < 10; ++i) { 16870 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16871 for (int i = 0; i < 10; ++i) 16872 ++a; 16873 } 16874 #pragma omp target 16875 #pragma omp teams distribute parallel for simd 16876 for (int i = 0; i < 10; ++i) { 16877 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16878 for (int i = 0; i < 10; ++i) 16879 ++a; 16880 } 16881 #pragma omp target 16882 #pragma omp teams distribute parallel for simd 16883 for (int i = 0; i < 10; ++i) { 16884 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16885 for (int i = 0; i < 10; ++i) 16886 ++a; 16887 } 16888 #pragma omp target 16889 #pragma omp teams distribute parallel for simd 16890 for (int i = 0; i < 10; ++i) { 16891 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16892 ++a; 16893 } 16894 #pragma omp target 16895 #pragma omp teams distribute parallel for simd 16896 for (int i = 0; i < 10; ++i) { 16897 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16898 for (int i = 0; i < 10; ++i) 16899 ++a; 16900 } 16901 #pragma omp target 16902 #pragma omp teams distribute parallel for simd 16903 for (int i = 0; i < 10; ++i) { 16904 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16905 for (int i = 0; i < 10; ++i) 16906 ++a; 16907 } 16908 #pragma omp target 16909 #pragma omp teams distribute parallel for simd 16910 for (int i = 0; i < 10; ++i) { 16911 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16912 for (int i = 0; i < 10; ++i) 16913 ++a; 16914 } 16915 #pragma omp target 16916 #pragma omp teams distribute parallel for simd 16917 for (int i = 0; i < 10; ++i) { 16918 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16919 for (int i = 0; i < 10; ++i) 16920 ++a; 16921 } 16922 16923 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16924 #pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16925 for (int i = 0; i < 10; ++i) 16926 ; 16927 #pragma omp target 16928 #pragma omp teams distribute parallel for 16929 for (int i = 0; i < 10; ++i) { 16930 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 16931 for (int i = 0; i < 10; ++i) 16932 ; 16933 } 16934 #pragma omp target 16935 #pragma omp teams distribute parallel for 16936 for (int i = 0; i < 10; ++i) { 16937 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 16938 for (int i = 0; i < 10; ++i) 16939 ; 16940 } 16941 #pragma omp target 16942 #pragma omp teams distribute parallel for 16943 for (int i = 0; i < 10; ++i) { 16944 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 16945 for (int i = 0; i < 10; ++i) 16946 ; 16947 } 16948 #pragma omp target 16949 #pragma omp teams distribute parallel for 16950 for (int i = 0; i < 10; ++i) { 16951 #pragma omp simd // OK 16952 for (int i = 0; i < 10; ++i) 16953 ; 16954 } 16955 #pragma omp target 16956 #pragma omp teams distribute parallel for 16957 for (int i = 0; i < 10; ++i) { 16958 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 16959 for (int i = 0; i < 10; ++i) 16960 ; 16961 } 16962 #pragma omp target 16963 #pragma omp teams distribute parallel for 16964 for (int i = 0; i < 10; ++i) { 16965 #pragma omp parallel // OK 16966 for (int i = 0; i < 10; ++i) 16967 ; 16968 } 16969 #pragma omp target 16970 #pragma omp teams distribute parallel for 16971 for (int i = 0; i < 10; ++i) { 16972 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 16973 { 16974 bar(); 16975 } 16976 } 16977 #pragma omp target 16978 #pragma omp teams distribute parallel for 16979 for (int i = 0; i < 10; ++i) { 16980 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 16981 { 16982 bar(); 16983 } 16984 } 16985 #pragma omp target 16986 #pragma omp teams distribute parallel for 16987 for (int i = 0; i < 10; ++i) { 16988 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 16989 { 16990 bar(); 16991 } 16992 } 16993 #pragma omp target 16994 #pragma omp teams distribute parallel for 16995 for (int i = 0; i < 10; ++i) { 16996 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16997 { 16998 bar(); 16999 } 17000 } 17001 #pragma omp target 17002 #pragma omp teams distribute parallel for 17003 for (int i = 0; i < 10; ++i) { 17004 #pragma omp critical // OK 17005 { 17006 bar(); 17007 } 17008 } 17009 #pragma omp target 17010 #pragma omp teams distribute parallel for 17011 for (int i = 0; i < 10; ++i) { 17012 #pragma omp parallel // OK 17013 { 17014 #pragma omp single 17015 { 17016 bar(); 17017 } 17018 } 17019 } 17020 #pragma omp target 17021 #pragma omp teams distribute parallel for 17022 for (int i = 0; i < 10; ++i) { 17023 #pragma omp parallel for // OK 17024 for (int i = 0; i < 10; ++i) 17025 ; 17026 } 17027 #pragma omp target 17028 #pragma omp teams distribute parallel for 17029 for (int i = 0; i < 10; ++i) { 17030 #pragma omp parallel for simd // OK 17031 for (int i = 0; i < 10; ++i) 17032 ; 17033 } 17034 #pragma omp target 17035 #pragma omp teams distribute parallel for 17036 for (int i = 0; i < 10; ++i) { 17037 #pragma omp parallel sections // OK 17038 { 17039 bar(); 17040 } 17041 } 17042 #pragma omp target 17043 #pragma omp teams distribute parallel for 17044 for (int i = 0; i < 10; ++i) { 17045 #pragma omp task // OK 17046 { 17047 bar(); 17048 } 17049 } 17050 #pragma omp target 17051 #pragma omp teams distribute parallel for 17052 for (int i = 0; i < 10; ++i) { 17053 #pragma omp taskyield // OK 17054 bar(); 17055 } 17056 #pragma omp target 17057 #pragma omp teams distribute parallel for 17058 for (int i = 0; i < 10; ++i) { 17059 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17060 bar(); 17061 } 17062 #pragma omp target 17063 #pragma omp teams distribute parallel for 17064 for (int i = 0; i < 10; ++i) { 17065 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17066 bar(); 17067 } 17068 #pragma omp target 17069 #pragma omp teams distribute parallel for 17070 for (int i = 0; i < 10; ++i) { 17071 #pragma omp taskwait // OK 17072 bar(); 17073 } 17074 #pragma omp target 17075 #pragma omp teams distribute parallel for 17076 for (int i = 0; i < 10; ++i) { 17077 #pragma omp flush // OK 17078 bar(); 17079 } 17080 #pragma omp target 17081 #pragma omp teams distribute parallel for 17082 for (int i = 0; i < 10; ++i) { 17083 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 17084 bar(); 17085 } 17086 #pragma omp target 17087 #pragma omp teams distribute parallel for 17088 for (int i = 0; i < 10; ++i) { 17089 #pragma omp atomic // OK 17090 ++a; 17091 } 17092 #pragma omp target 17093 #pragma omp teams distribute parallel for 17094 for (int i = 0; i < 10; ++i) { 17095 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 17096 ++a; 17097 } 17098 #pragma omp target 17099 #pragma omp teams distribute parallel for 17100 for (int i = 0; i < 10; ++i) { 17101 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 17102 ++a; 17103 } 17104 #pragma omp target 17105 #pragma omp teams distribute parallel for 17106 for (int i = 0; i < 10; ++i) { 17107 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 17108 for (int i = 0; i < 10; ++i) 17109 ; 17110 } 17111 #pragma omp target 17112 #pragma omp teams distribute parallel for 17113 for (int i = 0; i < 10; ++i) { 17114 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 17115 ++a; 17116 } 17117 #pragma omp target 17118 #pragma omp teams distribute parallel for 17119 for (int i = 0; i < 10; ++i) { 17120 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 17121 ++a; 17122 } 17123 #pragma omp target 17124 #pragma omp teams distribute parallel for 17125 for (int i = 0; i < 10; ++i) { 17126 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 17127 ++a; 17128 } 17129 #pragma omp target 17130 #pragma omp teams distribute parallel for 17131 for (int i = 0; i < 10; ++i) { 17132 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 17133 ++a; 17134 } 17135 #pragma omp target 17136 #pragma omp teams distribute parallel for 17137 for (int i = 0; i < 10; ++i) { 17138 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 17139 for (int i = 0; i < 10; ++i) 17140 ++a; 17141 } 17142 #pragma omp target 17143 #pragma omp teams distribute parallel for 17144 for (int i = 0; i < 10; ++i) { 17145 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 17146 for (int i = 0; i < 10; ++i) 17147 ++a; 17148 } 17149 #pragma omp target 17150 #pragma omp teams distribute parallel for 17151 for (int i = 0; i < 10; ++i) { 17152 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 17153 for (int i = 0; i < 10; ++i) 17154 ++a; 17155 } 17156 #pragma omp target 17157 #pragma omp teams distribute parallel for 17158 for (int i = 0; i < 10; ++i) { 17159 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 17160 for (int i = 0; i < 10; ++i) 17161 ++a; 17162 } 17163 #pragma omp target 17164 #pragma omp teams distribute parallel for 17165 for (int i = 0; i < 10; ++i) { 17166 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 17167 for (int i = 0; i < 10; ++i) 17168 ++a; 17169 } 17170 #pragma omp target 17171 #pragma omp teams distribute parallel for 17172 for (int i = 0; i < 10; ++i) { 17173 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 17174 for (int i = 0; i < 10; ++i) 17175 ++a; 17176 } 17177 #pragma omp target 17178 #pragma omp teams distribute parallel for 17179 for (int i = 0; i < 10; ++i) { 17180 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 17181 ++a; 17182 } 17183 #pragma omp target 17184 #pragma omp teams distribute parallel for 17185 for (int i = 0; i < 10; ++i) { 17186 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 17187 for (int i = 0; i < 10; ++i) 17188 ++a; 17189 } 17190 #pragma omp target 17191 #pragma omp teams distribute parallel for 17192 for (int i = 0; i < 10; ++i) { 17193 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 17194 for (int i = 0; i < 10; ++i) 17195 ++a; 17196 } 17197 #pragma omp target 17198 #pragma omp teams distribute parallel for 17199 for (int i = 0; i < 10; ++i) { 17200 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 17201 for (int i = 0; i < 10; ++i) 17202 ++a; 17203 } 17204 #pragma omp target 17205 #pragma omp teams distribute parallel for 17206 for (int i = 0; i < 10; ++i) { 17207 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 17208 for (int i = 0; i < 10; ++i) 17209 ++a; 17210 } 17211 17212 // TARGET TEAMS DIRECTIVE 17213 #pragma omp target teams 17214 #pragma omp parallel 17215 bar(); 17216 #pragma omp target teams 17217 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 17218 for (int i = 0; i < 10; ++i) 17219 ; 17220 #pragma omp target teams 17221 #pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 17222 for (int i = 0; i < 10; ++i) 17223 ; 17224 #pragma omp target teams 17225 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 17226 for (int i = 0; i < 10; ++i) 17227 ; 17228 #pragma omp target teams 17229 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 17230 { 17231 bar(); 17232 } 17233 #pragma omp target teams 17234 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 17235 { 17236 bar(); 17237 } 17238 #pragma omp target teams 17239 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 17240 bar(); 17241 17242 #pragma omp target teams 17243 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 17244 { 17245 bar(); 17246 } 17247 #pragma omp target teams 17248 #pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 17249 { 17250 bar(); 17251 } 17252 #pragma omp target teams 17253 #pragma omp parallel for 17254 for (int i = 0; i < 10; ++i) 17255 ; 17256 #pragma omp target teams 17257 #pragma omp parallel for simd 17258 for (int i = 0; i < 10; ++i) 17259 ; 17260 #pragma omp target teams 17261 #pragma omp parallel sections 17262 { 17263 bar(); 17264 } 17265 #pragma omp target teams 17266 #pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 17267 { 17268 bar(); 17269 } 17270 #pragma omp target teams 17271 { 17272 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 17273 bar(); 17274 } 17275 #pragma omp target teams 17276 { 17277 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 17278 bar(); 17279 } 17280 #pragma omp target teams 17281 { 17282 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17283 bar(); 17284 } 17285 #pragma omp target teams 17286 { 17287 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 17288 bar(); 17289 } 17290 #pragma omp target teams 17291 { 17292 #pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 17293 bar(); 17294 } 17295 #pragma omp target teams 17296 { 17297 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 17298 bar(); 17299 } 17300 #pragma omp target teams 17301 { 17302 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 17303 ++a; 17304 } 17305 #pragma omp target teams 17306 { 17307 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 17308 ++a; 17309 } 17310 #pragma omp target teams 17311 { 17312 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 17313 ++a; 17314 } 17315 #pragma omp target teams 17316 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17317 for (int i = 0; i < 10; ++i) 17318 ; 17319 #pragma omp target teams 17320 { 17321 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 17322 } 17323 #pragma omp target teams 17324 { 17325 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 17326 } 17327 #pragma omp target teams 17328 { 17329 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 17330 ++a; 17331 } 17332 #pragma omp target teams 17333 { 17334 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 17335 for (int i = 0; i < 10; ++i) 17336 ++a; 17337 } 17338 #pragma omp target teams 17339 #pragma omp distribute 17340 for (int i = 0; i < 10; ++i) 17341 ; 17342 #pragma omp target teams 17343 { 17344 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 17345 ++a; 17346 } 17347 #pragma omp target teams 17348 #pragma omp distribute parallel for 17349 for (int i = 0; i < 10; ++i) 17350 ; 17351 #pragma omp target teams 17352 { 17353 #pragma omp distribute parallel for 17354 for (int i = 0; i < 10; ++i) 17355 ; 17356 #pragma omp distribute parallel for 17357 for (int j = 0; j < 10; ++j) 17358 ; 17359 } 17360 #pragma omp target teams 17361 { 17362 #pragma omp distribute parallel for simd 17363 for (int i = 0; i < 10; ++i) 17364 ; 17365 #pragma omp distribute parallel for simd 17366 for (int j = 0; j < 10; ++j) 17367 ; 17368 } 17369 #pragma omp target teams 17370 { 17371 #pragma omp distribute simd 17372 for (int i = 0; i < 10; ++i) 17373 ; 17374 #pragma omp distribute simd 17375 for (int j = 0; j < 10; ++j) 17376 ; 17377 } 17378 #pragma omp target teams 17379 { 17380 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 17381 for (int i = 0; i < 10; ++i) 17382 ; 17383 } 17384 #pragma omp target teams 17385 { 17386 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 17387 for (int i = 0; i < 10; ++i) 17388 ; 17389 } 17390 #pragma omp target teams 17391 { 17392 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 17393 for (int i = 0; i < 10; ++i) 17394 ; 17395 } 17396 #pragma omp target teams 17397 { 17398 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 17399 for (int i = 0; i < 10; ++i) 17400 ; 17401 } 17402 #pragma omp target teams 17403 { 17404 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 17405 for (int i = 0; i < 10; ++i) 17406 ; 17407 } 17408 #pragma omp target teams 17409 { 17410 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 17411 a++; 17412 } 17413 #pragma omp target teams 17414 { 17415 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 17416 for (int i = 0; i < 10; ++i) 17417 ; 17418 } 17419 #pragma omp target teams 17420 { 17421 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17422 for (int i = 0; i < 10; ++i) 17423 ; 17424 } 17425 #pragma omp target teams 17426 { 17427 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 17428 for (int i = 0; i < 10; ++i) 17429 ; 17430 } 17431 #pragma omp target teams 17432 { 17433 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 17434 for (int i = 0; i < 10; ++i) 17435 ; 17436 } 17437 17438 // TARGET TEAMS DISTRIBUTE DIRECTIVE 17439 #pragma omp target teams distribute // OK 17440 for (int i = 0; i < 10; ++i) 17441 ; 17442 #pragma omp target teams distribute 17443 for (int i = 0; i < 10; ++i) { 17444 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 17445 for (int i = 0; i < 10; ++i) 17446 ; 17447 } 17448 #pragma omp target teams distribute 17449 for (int i = 0; i < 10; ++i) { 17450 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 17451 for (int i = 0; i < 10; ++i) 17452 ; 17453 } 17454 #pragma omp target teams distribute 17455 for (int i = 0; i < 10; ++i) { 17456 #pragma omp for // OK 17457 for (int i = 0; i < 10; ++i) 17458 ; 17459 } 17460 #pragma omp target teams distribute 17461 for (int i = 0; i < 10; ++i) { 17462 #pragma omp simd // OK 17463 for (int i = 0; i < 10; ++i) 17464 ; 17465 } 17466 #pragma omp target teams distribute 17467 for (int i = 0; i < 10; ++i) { 17468 #pragma omp for simd // OK 17469 for (int i = 0; i < 10; ++i) 17470 ; 17471 } 17472 #pragma omp target teams distribute 17473 for (int i = 0; i < 10; ++i) { 17474 #pragma omp parallel // OK 17475 for (int i = 0; i < 10; ++i) 17476 ; 17477 } 17478 #pragma omp target teams distribute 17479 for (int i = 0; i < 10; ++i) { 17480 #pragma omp sections // OK 17481 { 17482 bar(); 17483 } 17484 } 17485 #pragma omp target teams distribute 17486 for (int i = 0; i < 10; ++i) { 17487 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 17488 { 17489 bar(); 17490 } 17491 } 17492 #pragma omp target teams distribute 17493 for (int i = 0; i < 10; ++i) { 17494 #pragma omp single // OK 17495 { 17496 bar(); 17497 } 17498 } 17499 #pragma omp target teams distribute 17500 for (int i = 0; i < 10; ++i) { 17501 #pragma omp master // OK 17502 { 17503 bar(); 17504 } 17505 } 17506 #pragma omp target teams distribute 17507 for (int i = 0; i < 10; ++i) { 17508 #pragma omp critical // OK 17509 { 17510 bar(); 17511 } 17512 } 17513 #pragma omp target teams distribute 17514 for (int i = 0; i < 10; ++i) { 17515 #pragma omp parallel // OK 17516 { 17517 #pragma omp single 17518 { 17519 bar(); 17520 } 17521 } 17522 } 17523 #pragma omp target teams distribute 17524 for (int i = 0; i < 10; ++i) { 17525 #pragma omp parallel for // OK 17526 for (int i = 0; i < 10; ++i) 17527 ; 17528 } 17529 #pragma omp target teams distribute 17530 for (int i = 0; i < 10; ++i) { 17531 #pragma omp parallel for simd // OK 17532 for (int i = 0; i < 10; ++i) 17533 ; 17534 } 17535 #pragma omp target teams distribute 17536 for (int i = 0; i < 10; ++i) { 17537 #pragma omp parallel sections // OK 17538 { 17539 bar(); 17540 } 17541 } 17542 #pragma omp target teams distribute 17543 for (int i = 0; i < 10; ++i) { 17544 #pragma omp task // OK 17545 { 17546 bar(); 17547 } 17548 } 17549 #pragma omp target teams distribute 17550 for (int i = 0; i < 10; ++i) { 17551 #pragma omp taskyield // OK 17552 bar(); 17553 } 17554 #pragma omp target teams distribute 17555 for (int i = 0; i < 10; ++i) { 17556 #pragma omp barrier // OK 17557 bar(); 17558 } 17559 #pragma omp target teams distribute 17560 for (int i = 0; i < 10; ++i) { 17561 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17562 bar(); 17563 } 17564 #pragma omp target teams distribute 17565 for (int i = 0; i < 10; ++i) { 17566 #pragma omp taskwait // OK 17567 bar(); 17568 } 17569 #pragma omp target teams distribute 17570 for (int i = 0; i < 10; ++i) { 17571 #pragma omp flush // OK 17572 bar(); 17573 } 17574 #pragma omp target teams distribute 17575 for (int i = 0; i < 10; ++i) { 17576 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 17577 bar(); 17578 } 17579 #pragma omp target teams distribute 17580 for (int i = 0; i < 10; ++i) { 17581 #pragma omp atomic // OK 17582 ++a; 17583 } 17584 #pragma omp target teams distribute 17585 for (int i = 0; i < 10; ++i) { 17586 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17587 ++a; 17588 } 17589 #pragma omp target teams distribute 17590 for (int i = 0; i < 10; ++i) { 17591 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17592 ++a; 17593 } 17594 #pragma omp target teams distribute 17595 for (int i = 0; i < 10; ++i) { 17596 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17597 for (int i = 0; i < 10; ++i) 17598 ; 17599 } 17600 #pragma omp target teams distribute 17601 for (int i = 0; i < 10; ++i) { 17602 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17603 ++a; 17604 } 17605 #pragma omp target teams distribute 17606 for (int i = 0; i < 10; ++i) { 17607 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17608 ++a; 17609 } 17610 #pragma omp target teams distribute 17611 for (int i = 0; i < 10; ++i) { 17612 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 17613 ++a; 17614 } 17615 #pragma omp target teams distribute 17616 for (int i = 0; i < 10; ++i) { 17617 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17618 ++a; 17619 } 17620 #pragma omp target teams distribute 17621 for (int i = 0; i < 10; ++i) { 17622 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 17623 for (int i = 0; i < 10; ++i) 17624 ++a; 17625 } 17626 #pragma omp target teams distribute 17627 for (int i = 0; i < 10; ++i) { 17628 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17629 for (int i = 0; i < 10; ++i) 17630 ++a; 17631 } 17632 #pragma omp target teams distribute 17633 for (int i = 0; i < 10; ++i) { 17634 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 17635 for (int i = 0; i < 10; ++i) 17636 ++a; 17637 } 17638 #pragma omp target teams distribute 17639 for (int i = 0; i < 10; ++i) { 17640 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 17641 for (int i = 0; i < 10; ++i) 17642 ++a; 17643 } 17644 #pragma omp target teams distribute 17645 for (int i = 0; i < 10; ++i) { 17646 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 17647 for (int i = 0; i < 10; ++i) 17648 ++a; 17649 } 17650 #pragma omp target teams distribute 17651 for (int i = 0; i < 10; ++i) { 17652 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 17653 for (int i = 0; i < 10; ++i) 17654 ++a; 17655 } 17656 #pragma omp target teams distribute 17657 for (int i = 0; i < 10; ++i) { 17658 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17659 ++a; 17660 } 17661 #pragma omp target teams distribute 17662 for (int i = 0; i < 10; ++i) { 17663 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17664 for (int i = 0; i < 10; ++i) 17665 ++a; 17666 } 17667 #pragma omp target teams distribute 17668 for (int i = 0; i < 10; ++i) { 17669 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17670 for (int i = 0; i < 10; ++i) 17671 ++a; 17672 } 17673 #pragma omp target teams distribute 17674 for (int i = 0; i < 10; ++i) { 17675 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17676 for (int i = 0; i < 10; ++i) 17677 ++a; 17678 } 17679 #pragma omp target teams distribute 17680 for (int i = 0; i < 10; ++i) { 17681 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17682 for (int i = 0; i < 10; ++i) 17683 ++a; 17684 } 17685 17686 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 17687 #pragma omp target teams distribute parallel for // OK 17688 for (int i = 0; i < 10; ++i) 17689 ; 17690 #pragma omp target teams distribute parallel for 17691 for (int i = 0; i < 10; ++i) { 17692 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 17693 for (int i = 0; i < 10; ++i) 17694 ; 17695 } 17696 #pragma omp target teams distribute parallel for 17697 for (int i = 0; i < 10; ++i) { 17698 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 17699 for (int i = 0; i < 10; ++i) 17700 ; 17701 } 17702 #pragma omp target teams distribute parallel for 17703 for (int i = 0; i < 10; ++i) { 17704 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 17705 for (int i = 0; i < 10; ++i) 17706 ; 17707 } 17708 #pragma omp target teams distribute parallel for 17709 for (int i = 0; i < 10; ++i) { 17710 #pragma omp simd // OK 17711 for (int i = 0; i < 10; ++i) 17712 ; 17713 } 17714 #pragma omp target teams distribute parallel for 17715 for (int i = 0; i < 10; ++i) { 17716 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 17717 for (int i = 0; i < 10; ++i) 17718 ; 17719 } 17720 #pragma omp target teams distribute parallel for 17721 for (int i = 0; i < 10; ++i) { 17722 #pragma omp parallel // OK 17723 for (int i = 0; i < 10; ++i) 17724 ; 17725 } 17726 #pragma omp target teams distribute parallel for 17727 for (int i = 0; i < 10; ++i) { 17728 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 17729 { 17730 bar(); 17731 } 17732 } 17733 #pragma omp target teams distribute parallel for 17734 for (int i = 0; i < 10; ++i) { 17735 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 17736 { 17737 bar(); 17738 } 17739 } 17740 #pragma omp target teams distribute parallel for 17741 for (int i = 0; i < 10; ++i) { 17742 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17743 { 17744 bar(); 17745 } 17746 } 17747 #pragma omp target teams distribute parallel for 17748 for (int i = 0; i < 10; ++i) { 17749 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17750 { 17751 bar(); 17752 } 17753 } 17754 #pragma omp target teams distribute parallel for 17755 for (int i = 0; i < 10; ++i) { 17756 #pragma omp critical // OK 17757 { 17758 bar(); 17759 } 17760 } 17761 #pragma omp target teams distribute parallel for 17762 for (int i = 0; i < 10; ++i) { 17763 #pragma omp parallel // OK 17764 { 17765 #pragma omp single 17766 { 17767 bar(); 17768 } 17769 } 17770 } 17771 #pragma omp target teams distribute parallel for 17772 for (int i = 0; i < 10; ++i) { 17773 #pragma omp parallel for // OK 17774 for (int i = 0; i < 10; ++i) 17775 ; 17776 } 17777 #pragma omp target teams distribute parallel for 17778 for (int i = 0; i < 10; ++i) { 17779 #pragma omp parallel for simd // OK 17780 for (int i = 0; i < 10; ++i) 17781 ; 17782 } 17783 #pragma omp target teams distribute parallel for 17784 for (int i = 0; i < 10; ++i) { 17785 #pragma omp parallel sections // OK 17786 { 17787 bar(); 17788 } 17789 } 17790 #pragma omp target teams distribute parallel for 17791 for (int i = 0; i < 10; ++i) { 17792 #pragma omp task // OK 17793 { 17794 bar(); 17795 } 17796 } 17797 #pragma omp target teams distribute parallel for 17798 for (int i = 0; i < 10; ++i) { 17799 #pragma omp taskyield // OK 17800 bar(); 17801 } 17802 #pragma omp target teams distribute parallel for 17803 for (int i = 0; i < 10; ++i) { 17804 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17805 bar(); 17806 } 17807 #pragma omp target teams distribute parallel for 17808 for (int i = 0; i < 10; ++i) { 17809 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17810 bar(); 17811 } 17812 #pragma omp target teams distribute parallel for 17813 for (int i = 0; i < 10; ++i) { 17814 #pragma omp taskwait // OK 17815 bar(); 17816 } 17817 #pragma omp target teams distribute parallel for 17818 for (int i = 0; i < 10; ++i) { 17819 #pragma omp flush // OK 17820 bar(); 17821 } 17822 #pragma omp target teams distribute parallel for 17823 for (int i = 0; i < 10; ++i) { 17824 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 17825 bar(); 17826 } 17827 #pragma omp target teams distribute parallel for 17828 for (int i = 0; i < 10; ++i) { 17829 #pragma omp atomic // OK 17830 ++a; 17831 } 17832 #pragma omp target teams distribute parallel for 17833 for (int i = 0; i < 10; ++i) { 17834 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17835 ++a; 17836 } 17837 #pragma omp target teams distribute parallel for 17838 for (int i = 0; i < 10; ++i) { 17839 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17840 ++a; 17841 } 17842 #pragma omp target teams distribute parallel for 17843 for (int i = 0; i < 10; ++i) { 17844 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17845 for (int i = 0; i < 10; ++i) 17846 ; 17847 } 17848 #pragma omp target teams distribute parallel for 17849 for (int i = 0; i < 10; ++i) { 17850 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17851 ++a; 17852 } 17853 #pragma omp target teams distribute parallel for 17854 for (int i = 0; i < 10; ++i) { 17855 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17856 ++a; 17857 } 17858 #pragma omp target teams distribute parallel for 17859 for (int i = 0; i < 10; ++i) { 17860 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 17861 ++a; 17862 } 17863 #pragma omp target teams distribute parallel for 17864 for (int i = 0; i < 10; ++i) { 17865 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17866 ++a; 17867 } 17868 #pragma omp target teams distribute parallel for 17869 for (int i = 0; i < 10; ++i) { 17870 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 17871 for (int i = 0; i < 10; ++i) 17872 ++a; 17873 } 17874 #pragma omp target teams distribute parallel for 17875 for (int i = 0; i < 10; ++i) { 17876 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17877 for (int i = 0; i < 10; ++i) 17878 ++a; 17879 } 17880 #pragma omp target teams distribute parallel for 17881 for (int i = 0; i < 10; ++i) { 17882 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 17883 for (int i = 0; i < 10; ++i) 17884 ++a; 17885 } 17886 #pragma omp target teams distribute parallel for 17887 for (int i = 0; i < 10; ++i) { 17888 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 17889 for (int i = 0; i < 10; ++i) 17890 ++a; 17891 } 17892 #pragma omp target teams distribute parallel for 17893 for (int i = 0; i < 10; ++i) { 17894 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 17895 for (int i = 0; i < 10; ++i) 17896 ++a; 17897 } 17898 #pragma omp target teams distribute parallel for 17899 for (int i = 0; i < 10; ++i) { 17900 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 17901 for (int i = 0; i < 10; ++i) 17902 ++a; 17903 } 17904 #pragma omp target teams distribute parallel for 17905 for (int i = 0; i < 10; ++i) { 17906 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17907 ++a; 17908 } 17909 #pragma omp target teams distribute parallel for 17910 for (int i = 0; i < 10; ++i) { 17911 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17912 for (int i = 0; i < 10; ++i) 17913 ++a; 17914 } 17915 #pragma omp target teams distribute parallel for 17916 for (int i = 0; i < 10; ++i) { 17917 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17918 for (int i = 0; i < 10; ++i) 17919 ++a; 17920 } 17921 #pragma omp target teams distribute parallel for 17922 for (int i = 0; i < 10; ++i) { 17923 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17924 for (int i = 0; i < 10; ++i) 17925 ++a; 17926 } 17927 #pragma omp target teams distribute parallel for 17928 for (int i = 0; i < 10; ++i) { 17929 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17930 for (int i = 0; i < 10; ++i) 17931 ++a; 17932 } 17933 17934 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 17935 #pragma omp target teams distribute parallel for simd // OK 17936 for (int i = 0; i < 10; ++i) 17937 ; 17938 #pragma omp target teams distribute parallel for simd 17939 for (int i = 0; i < 10; ++i) { 17940 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17941 for (int i = 0; i < 10; ++i) 17942 ; 17943 } 17944 #pragma omp target teams distribute parallel for simd 17945 for (int i = 0; i < 10; ++i) { 17946 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17947 for (int i = 0; i < 10; ++i) 17948 ; 17949 } 17950 #pragma omp target teams distribute parallel for simd 17951 for (int i = 0; i < 10; ++i) { 17952 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17953 for (int i = 0; i < 10; ++i) 17954 ; 17955 } 17956 #pragma omp target teams distribute parallel for simd 17957 for (int i = 0; i < 10; ++i) { 17958 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17959 for (int i = 0; i < 10; ++i) 17960 ; 17961 } 17962 #pragma omp target teams distribute parallel for simd 17963 for (int i = 0; i < 10; ++i) { 17964 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17965 for (int i = 0; i < 10; ++i) 17966 ; 17967 } 17968 #pragma omp target teams distribute parallel for simd 17969 for (int i = 0; i < 10; ++i) { 17970 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17971 for (int i = 0; i < 10; ++i) 17972 ; 17973 } 17974 #pragma omp target teams distribute parallel for simd 17975 for (int i = 0; i < 10; ++i) { 17976 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17977 { 17978 bar(); 17979 } 17980 } 17981 #pragma omp target teams distribute parallel for simd 17982 for (int i = 0; i < 10; ++i) { 17983 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17984 { 17985 bar(); 17986 } 17987 } 17988 #pragma omp target teams distribute parallel for simd 17989 for (int i = 0; i < 10; ++i) { 17990 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17991 { 17992 bar(); 17993 } 17994 } 17995 #pragma omp target teams distribute parallel for simd 17996 for (int i = 0; i < 10; ++i) { 17997 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17998 { 17999 bar(); 18000 } 18001 } 18002 #pragma omp target teams distribute parallel for simd 18003 for (int i = 0; i < 10; ++i) { 18004 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18005 { 18006 bar(); 18007 } 18008 } 18009 #pragma omp target teams distribute parallel for simd 18010 for (int i = 0; i < 10; ++i) { 18011 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18012 { 18013 #pragma omp single 18014 { 18015 bar(); 18016 } 18017 } 18018 } 18019 #pragma omp target teams distribute parallel for simd 18020 for (int i = 0; i < 10; ++i) { 18021 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18022 for (int i = 0; i < 10; ++i) 18023 ; 18024 } 18025 #pragma omp target teams distribute parallel for simd 18026 for (int i = 0; i < 10; ++i) { 18027 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18028 for (int i = 0; i < 10; ++i) 18029 ; 18030 } 18031 #pragma omp target teams distribute parallel for simd 18032 for (int i = 0; i < 10; ++i) { 18033 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18034 { 18035 bar(); 18036 } 18037 } 18038 #pragma omp target teams distribute parallel for simd 18039 for (int i = 0; i < 10; ++i) { 18040 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18041 { 18042 bar(); 18043 } 18044 } 18045 #pragma omp target teams distribute parallel for simd 18046 for (int i = 0; i < 10; ++i) { 18047 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18048 bar(); 18049 } 18050 #pragma omp target teams distribute parallel for simd 18051 for (int i = 0; i < 10; ++i) { 18052 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18053 bar(); 18054 } 18055 #pragma omp target teams distribute parallel for simd 18056 for (int i = 0; i < 10; ++i) { 18057 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 18058 bar(); 18059 } 18060 #pragma omp target teams distribute parallel for simd 18061 for (int i = 0; i < 10; ++i) { 18062 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18063 bar(); 18064 } 18065 #pragma omp target teams distribute parallel for simd 18066 for (int i = 0; i < 10; ++i) { 18067 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18068 bar(); 18069 } 18070 #pragma omp target teams distribute parallel for simd 18071 for (int i = 0; i < 10; ++i) { 18072 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18073 bar(); 18074 } 18075 #pragma omp target teams distribute parallel for simd 18076 for (int i = 0; i < 10; ++i) { 18077 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 18078 ++a; 18079 } 18080 #pragma omp target teams distribute parallel for simd 18081 for (int i = 0; i < 10; ++i) { 18082 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18083 ++a; 18084 } 18085 #pragma omp target teams distribute parallel for simd 18086 for (int i = 0; i < 10; ++i) { 18087 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18088 ++a; 18089 } 18090 #pragma omp target teams distribute parallel for simd 18091 for (int i = 0; i < 10; ++i) { 18092 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18093 for (int i = 0; i < 10; ++i) 18094 ; 18095 } 18096 #pragma omp target teams distribute parallel for simd 18097 for (int i = 0; i < 10; ++i) { 18098 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18099 ++a; 18100 } 18101 #pragma omp target teams distribute parallel for simd 18102 for (int i = 0; i < 10; ++i) { 18103 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18104 ++a; 18105 } 18106 #pragma omp target teams distribute parallel for simd 18107 for (int i = 0; i < 10; ++i) { 18108 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18109 ++a; 18110 } 18111 #pragma omp target teams distribute parallel for simd 18112 for (int i = 0; i < 10; ++i) { 18113 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18114 ++a; 18115 } 18116 #pragma omp target teams distribute parallel for simd 18117 for (int i = 0; i < 10; ++i) { 18118 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18119 for (int i = 0; i < 10; ++i) 18120 ++a; 18121 } 18122 #pragma omp target teams distribute parallel for simd 18123 for (int i = 0; i < 10; ++i) { 18124 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18125 for (int i = 0; i < 10; ++i) 18126 ++a; 18127 } 18128 #pragma omp target teams distribute parallel for simd 18129 for (int i = 0; i < 10; ++i) { 18130 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18131 for (int i = 0; i < 10; ++i) 18132 ++a; 18133 } 18134 #pragma omp target teams distribute parallel for simd 18135 for (int i = 0; i < 10; ++i) { 18136 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18137 for (int i = 0; i < 10; ++i) 18138 ++a; 18139 } 18140 #pragma omp target teams distribute parallel for simd 18141 for (int i = 0; i < 10; ++i) { 18142 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18143 for (int i = 0; i < 10; ++i) 18144 ++a; 18145 } 18146 #pragma omp target teams distribute parallel for simd 18147 for (int i = 0; i < 10; ++i) { 18148 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18149 for (int i = 0; i < 10; ++i) 18150 ; 18151 } 18152 #pragma omp target teams distribute parallel for simd 18153 for (int i = 0; i < 10; ++i) { 18154 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18155 a++; 18156 } 18157 #pragma omp target teams distribute parallel for simd 18158 for (int i = 0; i < 10; ++i) { 18159 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18160 for (int i = 0; i < 10; ++i) 18161 ; 18162 } 18163 #pragma omp target teams distribute parallel for simd 18164 for (int i = 0; i < 10; ++i) { 18165 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18166 for (int i = 0; i < 10; ++i) 18167 ; 18168 } 18169 #pragma omp target teams distribute parallel for simd 18170 for (int i = 0; i < 10; ++i) { 18171 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18172 for (int i = 0; i < 10; ++i) 18173 ; 18174 } 18175 #pragma omp target teams distribute parallel for simd 18176 for (int i = 0; i < 10; ++i) { 18177 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18178 for (int i = 0; i < 10; ++i) 18179 ; 18180 } 18181 18182 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 18183 #pragma omp target teams distribute simd // OK 18184 for (int i = 0; i < 10; ++i) 18185 ; 18186 #pragma omp target teams distribute simd 18187 for (int i = 0; i < 10; ++i) { 18188 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18189 for (int i = 0; i < 10; ++i) 18190 ; 18191 } 18192 #pragma omp target teams distribute simd 18193 for (int i = 0; i < 10; ++i) { 18194 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18195 for (int i = 0; i < 10; ++i) 18196 ; 18197 } 18198 #pragma omp target teams distribute simd 18199 for (int i = 0; i < 10; ++i) { 18200 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18201 for (int i = 0; i < 10; ++i) 18202 ; 18203 } 18204 #pragma omp target teams distribute simd 18205 for (int i = 0; i < 10; ++i) { 18206 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 18207 for (int i = 0; i < 10; ++i) 18208 ; 18209 } 18210 #pragma omp target teams distribute simd 18211 for (int i = 0; i < 10; ++i) { 18212 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18213 for (int i = 0; i < 10; ++i) 18214 ; 18215 } 18216 #pragma omp target teams distribute simd 18217 for (int i = 0; i < 10; ++i) { 18218 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18219 for (int i = 0; i < 10; ++i) 18220 ; 18221 } 18222 #pragma omp target teams distribute simd 18223 for (int i = 0; i < 10; ++i) { 18224 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18225 { 18226 bar(); 18227 } 18228 } 18229 #pragma omp target teams distribute simd 18230 for (int i = 0; i < 10; ++i) { 18231 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18232 { 18233 bar(); 18234 } 18235 } 18236 #pragma omp target teams distribute simd 18237 for (int i = 0; i < 10; ++i) { 18238 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18239 { 18240 bar(); 18241 } 18242 } 18243 #pragma omp target teams distribute simd 18244 for (int i = 0; i < 10; ++i) { 18245 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18246 { 18247 bar(); 18248 } 18249 } 18250 #pragma omp target teams distribute simd 18251 for (int i = 0; i < 10; ++i) { 18252 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18253 { 18254 bar(); 18255 } 18256 } 18257 #pragma omp target teams distribute simd 18258 for (int i = 0; i < 10; ++i) { 18259 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18260 { 18261 #pragma omp single 18262 { 18263 bar(); 18264 } 18265 } 18266 } 18267 #pragma omp target teams distribute simd 18268 for (int i = 0; i < 10; ++i) { 18269 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18270 for (int i = 0; i < 10; ++i) 18271 ; 18272 } 18273 #pragma omp target teams distribute simd 18274 for (int i = 0; i < 10; ++i) { 18275 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18276 for (int i = 0; i < 10; ++i) 18277 ; 18278 } 18279 #pragma omp target teams distribute simd 18280 for (int i = 0; i < 10; ++i) { 18281 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18282 { 18283 bar(); 18284 } 18285 } 18286 #pragma omp target teams distribute simd 18287 for (int i = 0; i < 10; ++i) { 18288 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18289 { 18290 bar(); 18291 } 18292 } 18293 #pragma omp target teams distribute simd 18294 for (int i = 0; i < 10; ++i) { 18295 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18296 bar(); 18297 } 18298 #pragma omp target teams distribute simd 18299 for (int i = 0; i < 10; ++i) { 18300 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18301 bar(); 18302 } 18303 #pragma omp target teams distribute simd 18304 for (int i = 0; i < 10; ++i) { 18305 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 18306 bar(); 18307 } 18308 #pragma omp target teams distribute simd 18309 for (int i = 0; i < 10; ++i) { 18310 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18311 bar(); 18312 } 18313 #pragma omp target teams distribute simd 18314 for (int i = 0; i < 10; ++i) { 18315 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18316 bar(); 18317 } 18318 #pragma omp target teams distribute simd 18319 for (int i = 0; i < 10; ++i) { 18320 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18321 bar(); 18322 } 18323 #pragma omp target teams distribute simd 18324 for (int i = 0; i < 10; ++i) { 18325 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 18326 ++a; 18327 } 18328 #pragma omp target teams distribute simd 18329 for (int i = 0; i < 10; ++i) { 18330 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18331 ++a; 18332 } 18333 #pragma omp target teams distribute simd 18334 for (int i = 0; i < 10; ++i) { 18335 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18336 ++a; 18337 } 18338 #pragma omp target teams distribute simd 18339 for (int i = 0; i < 10; ++i) { 18340 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18341 for (int i = 0; i < 10; ++i) 18342 ; 18343 } 18344 #pragma omp target teams distribute simd 18345 for (int i = 0; i < 10; ++i) { 18346 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18347 ++a; 18348 } 18349 #pragma omp target teams distribute simd 18350 for (int i = 0; i < 10; ++i) { 18351 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18352 ++a; 18353 } 18354 #pragma omp target teams distribute simd 18355 for (int i = 0; i < 10; ++i) { 18356 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18357 ++a; 18358 } 18359 #pragma omp target teams distribute simd 18360 for (int i = 0; i < 10; ++i) { 18361 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18362 ++a; 18363 } 18364 #pragma omp target teams distribute simd 18365 for (int i = 0; i < 10; ++i) { 18366 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18367 for (int i = 0; i < 10; ++i) 18368 ++a; 18369 } 18370 #pragma omp target teams distribute simd 18371 for (int i = 0; i < 10; ++i) { 18372 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18373 for (int i = 0; i < 10; ++i) 18374 ++a; 18375 } 18376 #pragma omp target teams distribute simd 18377 for (int i = 0; i < 10; ++i) { 18378 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18379 for (int i = 0; i < 10; ++i) 18380 ++a; 18381 } 18382 #pragma omp target teams distribute simd 18383 for (int i = 0; i < 10; ++i) { 18384 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18385 for (int i = 0; i < 10; ++i) 18386 ++a; 18387 } 18388 #pragma omp target teams distribute simd 18389 for (int i = 0; i < 10; ++i) { 18390 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18391 for (int i = 0; i < 10; ++i) 18392 ++a; 18393 } 18394 #pragma omp target teams distribute simd 18395 for (int i = 0; i < 10; ++i) { 18396 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18397 for (int i = 0; i < 10; ++i) 18398 ; 18399 } 18400 #pragma omp target teams distribute simd 18401 for (int i = 0; i < 10; ++i) { 18402 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18403 a++; 18404 } 18405 #pragma omp target teams distribute simd 18406 for (int i = 0; i < 10; ++i) { 18407 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18408 for (int i = 0; i < 10; ++i) 18409 ; 18410 } 18411 #pragma omp target teams distribute simd 18412 for (int i = 0; i < 10; ++i) { 18413 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18414 for (int i = 0; i < 10; ++i) 18415 ; 18416 } 18417 #pragma omp target teams distribute simd 18418 for (int i = 0; i < 10; ++i) { 18419 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18420 for (int i = 0; i < 10; ++i) 18421 ; 18422 } 18423 #pragma omp target teams distribute simd 18424 for (int i = 0; i < 10; ++i) { 18425 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18426 for (int i = 0; i < 10; ++i) 18427 ; 18428 } 18429 18430 return foo<int>(); 18431 } 18432 18433