1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp45,omp45warn %s 2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=50 -verify=expected,omp50 %s 3 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -Wno-openmp %s 4 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -Wno-source-uses-openmp %s 5 6 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp45,omp45warn %s 7 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50 %s 8 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 9 10 void bar(); 11 12 template <class T> 13 void foo() { 14 T a = T(); 15 // PARALLEL DIRECTIVE 16 #pragma omp parallel 17 #pragma omp for 18 for (int i = 0; i < 10; ++i) 19 ; 20 #pragma omp parallel 21 #pragma omp simd 22 for (int i = 0; i < 10; ++i) 23 ; 24 #pragma omp parallel 25 #pragma omp for simd 26 for (int i = 0; i < 10; ++i) 27 ; 28 #pragma omp parallel 29 #pragma omp sections 30 { 31 bar(); 32 } 33 #pragma omp parallel 34 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 35 { 36 bar(); 37 } 38 #pragma omp parallel 39 #pragma omp single 40 bar(); 41 42 #pragma omp parallel 43 #pragma omp master 44 { 45 bar(); 46 } 47 #pragma omp parallel 48 #pragma omp critical 49 { 50 bar(); 51 } 52 #pragma omp parallel 53 #pragma omp parallel for 54 for (int i = 0; i < 10; ++i) 55 ; 56 #pragma omp parallel 57 #pragma omp parallel for simd 58 for (int i = 0; i < 10; ++i) 59 ; 60 #pragma omp parallel 61 #pragma omp parallel sections 62 { 63 bar(); 64 } 65 #pragma omp parallel 66 #pragma omp parallel master 67 { 68 bar(); 69 } 70 #pragma omp parallel 71 #pragma omp task 72 { 73 bar(); 74 } 75 #pragma omp parallel 76 { 77 #pragma omp taskyield 78 bar(); 79 } 80 #pragma omp parallel 81 { 82 #pragma omp barrier 83 bar(); 84 } 85 #pragma omp parallel 86 { 87 #pragma omp taskwait 88 bar(); 89 } 90 #pragma omp parallel 91 { 92 #pragma omp flush 93 bar(); 94 } 95 #pragma omp parallel 96 { 97 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 98 bar(); 99 } 100 #pragma omp parallel 101 { 102 #pragma omp atomic 103 ++a; 104 } 105 #pragma omp parallel 106 { 107 #pragma omp target 108 ++a; 109 } 110 #pragma omp parallel 111 { 112 #pragma omp target parallel 113 ++a; 114 } 115 #pragma omp parallel 116 { 117 #pragma omp target parallel for 118 for (int i = 0; i < 10; ++i) 119 ; 120 } 121 #pragma omp parallel 122 { 123 #pragma omp target enter data map(to: a) 124 ++a; 125 } 126 #pragma omp parallel 127 { 128 #pragma omp target exit data map(from: a) 129 ++a; 130 } 131 #pragma omp parallel 132 { 133 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 134 ++a; 135 } 136 #pragma omp parallel 137 { 138 #pragma omp taskloop 139 for (int i = 0; i < 10; ++i) 140 ++a; 141 } 142 #pragma omp parallel 143 { 144 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 145 for (int i = 0; i < 10; ++i) 146 ; 147 } 148 #pragma omp parallel 149 { 150 #pragma omp target update to(a) 151 } 152 #pragma omp parallel 153 { 154 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 155 for (int i = 0; i < 10; ++i) 156 ; 157 } 158 #pragma omp parallel 159 { 160 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 161 for (int i = 0; i < 10; ++i) 162 ; 163 } 164 #pragma omp parallel 165 { 166 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 167 for (int i = 0; i < 10; ++i) 168 ; 169 } 170 #pragma omp parallel 171 { 172 #pragma omp target simd // OK 173 for (int i = 0; i < 10; ++i) 174 ; 175 } 176 #pragma omp parallel 177 { 178 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 179 for (int i = 0; i < 10; ++i) 180 ; 181 } 182 #pragma omp parallel 183 { 184 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 185 for (int i = 0; i < 10; ++i) 186 ; 187 } 188 #pragma omp parallel 189 { 190 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 191 for (int i = 0; i < 10; ++i) 192 ; 193 } 194 #pragma omp parallel 195 { 196 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 197 for (int i = 0; i < 10; ++i) 198 ; 199 } 200 #pragma omp parallel 201 { 202 #pragma omp target teams // OK 203 ++a; 204 } 205 #pragma omp parallel 206 { 207 #pragma omp target teams distribute // OK 208 for (int i = 0; i < 10; ++i) 209 ; 210 } 211 #pragma omp parallel 212 { 213 #pragma omp target teams distribute parallel for // OK 214 for (int i = 0; i < 10; ++i) 215 ; 216 } 217 #pragma omp parallel 218 { 219 #pragma omp target teams distribute parallel for simd // OK 220 for (int i = 0; i < 10; ++i) 221 ; 222 } 223 #pragma omp parallel 224 { 225 #pragma omp target teams distribute simd // OK 226 for (int i = 0; i < 10; ++i) 227 ; 228 } 229 230 // SIMD DIRECTIVE 231 #pragma omp simd 232 for (int i = 0; i < 10; ++i) { 233 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 234 for (int i = 0; i < 10; ++i) 235 ; 236 } 237 #pragma omp simd 238 for (int i = 0; i < 10; ++i) { 239 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 240 for (int i = 0; i < 10; ++i) 241 ; 242 } 243 #pragma omp simd 244 for (int i = 0; i < 10; ++i) { 245 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 246 for (int i = 0; i < 10; ++i) 247 ; 248 } 249 #pragma omp simd 250 for (int i = 0; i < 10; ++i) { 251 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 252 for (int i = 0; i < 10; ++i) 253 ; 254 } 255 #pragma omp simd 256 for (int i = 0; i < 10; ++i) { 257 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 258 { 259 bar(); 260 } 261 } 262 #pragma omp simd 263 for (int i = 0; i < 10; ++i) { 264 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 265 { 266 bar(); 267 } 268 } 269 #pragma omp simd 270 for (int i = 0; i < 10; ++i) { 271 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 272 { 273 bar(); 274 } 275 } 276 #pragma omp simd 277 for (int i = 0; i < 10; ++i) { 278 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 279 { 280 bar(); 281 } 282 } 283 #pragma omp simd 284 for (int i = 0; i < 10; ++i) { 285 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 286 { 287 bar(); 288 } 289 } 290 #pragma omp simd 291 for (int i = 0; i < 10; ++i) { 292 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 293 for (int i = 0; i < 10; ++i) 294 ; 295 } 296 #pragma omp simd 297 for (int i = 0; i < 10; ++i) { 298 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 299 for (int i = 0; i < 10; ++i) 300 ; 301 } 302 #pragma omp simd 303 for (int i = 0; i < 10; ++i) { 304 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 305 { 306 bar(); 307 } 308 } 309 #pragma omp simd 310 for (int i = 0; i < 10; ++i) { 311 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 312 { 313 bar(); 314 } 315 } 316 #pragma omp simd 317 for (int i = 0; i < 10; ++i) { 318 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 319 { 320 bar(); 321 } 322 } 323 #pragma omp simd 324 for (int i = 0; i < 10; ++i) { 325 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 326 bar(); 327 } 328 #pragma omp simd 329 for (int i = 0; i < 10; ++i) { 330 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 331 bar(); 332 } 333 #pragma omp simd 334 for (int i = 0; i < 10; ++i) { 335 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 336 bar(); 337 } 338 #pragma omp simd 339 for (int i = 0; i < 10; ++i) { 340 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 341 bar(); 342 } 343 #pragma omp simd 344 for (int i = 0; i < 10; ++i) { 345 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 346 bar(); 347 } 348 #pragma omp simd 349 for (int i = 0; i < 10; ++i) { 350 #pragma omp ordered simd // OK 351 bar(); 352 } 353 #pragma omp simd 354 for (int i = 0; i < 10; ++i) { 355 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 356 bar(); 357 } 358 #pragma omp simd 359 for (int i = 0; i < 10; ++i) { 360 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 361 ++a; 362 } 363 #pragma omp simd 364 for (int i = 0; i < 10; ++i) { 365 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 366 ++a; 367 } 368 #pragma omp simd 369 for (int i = 0; i < 10; ++i) { 370 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 371 ++a; 372 } 373 #pragma omp simd 374 for (int i = 0; i < 10; ++i) { 375 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 376 for (int i = 0; i < 10; ++i) 377 ; 378 } 379 #pragma omp simd 380 for (int i = 0; i < 10; ++i) { 381 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 382 ++a; 383 } 384 #pragma omp simd 385 for (int i = 0; i < 10; ++i) { 386 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 387 ++a; 388 } 389 #pragma omp simd 390 for (int i = 0; i < 10; ++i) { 391 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 392 ++a; 393 } 394 #pragma omp simd 395 for (int i = 0; i < 10; ++i) { 396 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 397 for (int i = 0; i < 10; ++i) 398 ++a; 399 } 400 #pragma omp simd 401 for (int i = 0; i < 10; ++i) { 402 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 403 for (int j = 0; j < 10; ++j) 404 ; 405 } 406 #pragma omp simd 407 for (int i = 0; i < 10; ++i) { 408 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 409 } 410 #pragma omp simd 411 for (int i = 0; i < 10; ++i) { 412 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 413 for (int j = 0; j < 10; ++j) 414 ; 415 } 416 #pragma omp simd 417 for (int i = 0; i < 10; ++i) { 418 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 419 for (int j = 0; j < 10; ++j) 420 ; 421 } 422 #pragma omp simd 423 for (int i = 0; i < 10; ++i) { 424 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 425 for (int j = 0; j < 10; ++j) 426 ; 427 } 428 #pragma omp simd 429 for (int i = 0; i < 10; ++i) { 430 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 431 for (int j = 0; j < 10; ++j) 432 ; 433 } 434 #pragma omp simd 435 for (int i = 0; i < 10; ++i) { 436 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 437 for (int j = 0; j < 10; ++j) 438 ; 439 } 440 #pragma omp simd 441 for (int i = 0; i < 10; ++i) { 442 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 443 for (int j = 0; j < 10; ++j) 444 ; 445 } 446 #pragma omp simd 447 for (int i = 0; i < 10; ++i) { 448 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 449 for (int j = 0; j < 10; ++j) 450 ; 451 } 452 #pragma omp simd 453 for (int i = 0; i < 10; ++i) { 454 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 455 for (int j = 0; j < 10; ++j) 456 ; 457 } 458 #pragma omp simd 459 for (int i = 0; i < 10; ++i) { 460 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 461 ++a; 462 } 463 #pragma omp simd 464 for (int i = 0; i < 10; ++i) { 465 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 466 for (int j = 0; j < 10; ++j) 467 ; 468 } 469 #pragma omp simd 470 for (int i = 0; i < 10; ++i) { 471 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 472 for (int j = 0; j < 10; ++j) 473 ; 474 } 475 #pragma omp simd 476 for (int i = 0; i < 10; ++i) { 477 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 478 for (int j = 0; j < 10; ++j) 479 ; 480 } 481 #pragma omp simd 482 for (int i = 0; i < 10; ++i) { 483 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 484 for (int j = 0; j < 10; ++j) 485 ; 486 } 487 488 // FOR DIRECTIVE 489 #pragma omp for 490 for (int i = 0; i < 10; ++i) { 491 #pragma omp for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 492 for (int i = 0; i < 10; ++i) 493 ; 494 } 495 #pragma omp for 496 for (int i = 0; i < 10; ++i) { 497 #pragma omp simd 498 for (int i = 0; i < 10; ++i) 499 ; 500 } 501 #pragma omp for 502 for (int i = 0; i < 10; ++i) { 503 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 504 for (int i = 0; i < 10; ++i) 505 ; 506 } 507 #pragma omp for 508 for (int i = 0; i < 10; ++i) { 509 #pragma omp parallel 510 for (int i = 0; i < 10; ++i) 511 ; 512 } 513 #pragma omp for 514 for (int i = 0; i < 10; ++i) { 515 #pragma omp sections // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 516 { 517 bar(); 518 } 519 } 520 #pragma omp for 521 for (int i = 0; i < 10; ++i) { 522 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 523 { 524 bar(); 525 } 526 } 527 #pragma omp for 528 for (int i = 0; i < 10; ++i) { 529 #pragma omp single // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 530 { 531 bar(); 532 } 533 } 534 535 #pragma omp for 536 for (int i = 0; i < 10; ++i) { 537 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 538 { 539 bar(); 540 } 541 } 542 #pragma omp for 543 for (int i = 0; i < 10; ++i) { 544 #pragma omp critical 545 { 546 bar(); 547 } 548 } 549 #pragma omp for 550 for (int i = 0; i < 10; ++i) { 551 #pragma omp parallel 552 { 553 #pragma omp single // OK 554 { 555 bar(); 556 } 557 #pragma omp for // OK 558 for (int i = 0; i < 10; ++i) 559 ; 560 #pragma omp sections // OK 561 { 562 bar(); 563 } 564 } 565 } 566 #pragma omp for 567 for (int i = 0; i < 10; ++i) { 568 #pragma omp parallel for 569 for (int i = 0; i < 10; ++i) 570 ; 571 } 572 #pragma omp for 573 for (int i = 0; i < 10; ++i) { 574 #pragma omp parallel for simd 575 for (int i = 0; i < 10; ++i) 576 ; 577 } 578 #pragma omp for 579 for (int i = 0; i < 10; ++i) { 580 #pragma omp parallel master 581 { 582 bar(); 583 } 584 } 585 #pragma omp for 586 for (int i = 0; i < 10; ++i) { 587 #pragma omp parallel sections 588 { 589 bar(); 590 } 591 } 592 #pragma omp for 593 for (int i = 0; i < 10; ++i) { 594 #pragma omp task 595 { 596 bar(); 597 } 598 } 599 #pragma omp for 600 for (int i = 0; i < 10; ++i) { 601 #pragma omp taskyield 602 bar(); 603 } 604 #pragma omp for 605 for (int i = 0; i < 10; ++i) { 606 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 607 bar(); 608 } 609 #pragma omp for 610 for (int i = 0; i < 10; ++i) { 611 #pragma omp taskwait 612 bar(); 613 } 614 #pragma omp for 615 for (int i = 0; i < 10; ++i) { 616 #pragma omp flush 617 bar(); 618 } 619 #pragma omp for 620 for (int i = 0; i < 10; ++i) { 621 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 622 bar(); 623 } 624 #pragma omp for ordered 625 for (int i = 0; i < 10; ++i) { 626 #pragma omp ordered // OK 627 bar(); 628 } 629 #pragma omp for 630 for (int i = 0; i < 10; ++i) { 631 #pragma omp atomic 632 ++a; 633 } 634 #pragma omp for 635 for (int i = 0; i < 10; ++i) { 636 #pragma omp target 637 ++a; 638 } 639 #pragma omp for 640 for (int i = 0; i < 10; ++i) { 641 #pragma omp target parallel 642 ++a; 643 } 644 #pragma omp for 645 for (int i = 0; i < 10; ++i) { 646 #pragma omp target parallel for 647 for (int i = 0; i < 10; ++i) 648 ; 649 } 650 #pragma omp for 651 for (int i = 0; i < 10; ++i) { 652 #pragma omp target enter data map(to: a) 653 ++a; 654 } 655 #pragma omp for 656 for (int i = 0; i < 10; ++i) { 657 #pragma omp target exit data map(from: a) 658 ++a; 659 } 660 #pragma omp for 661 for (int i = 0; i < 10; ++i) { 662 #pragma omp teams // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 663 ++a; 664 } 665 #pragma omp for 666 for (int i = 0; i < 10; ++i) { 667 #pragma omp taskloop 668 for (int i = 0; i < 10; ++i) 669 ++a; 670 } 671 #pragma omp for 672 for (int i = 0; i < 10; ++i) { 673 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 674 for (int j = 0; j < 10; ++j) 675 ; 676 } 677 #pragma omp for 678 for (int i = 0; i < 10; ++i) { 679 #pragma omp target update to(a) 680 } 681 #pragma omp for 682 for (int i = 0; i < 10; ++i) { 683 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 684 for (int j = 0; j < 10; ++j) 685 ; 686 } 687 #pragma omp for 688 for (int i = 0; i < 10; ++i) { 689 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 690 for (int j = 0; j < 10; ++j) 691 ; 692 } 693 #pragma omp for 694 for (int i = 0; i < 10; ++i) { 695 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 696 for (int j = 0; j < 10; ++j) 697 ; 698 } 699 #pragma omp for 700 for (int i = 0; i < 10; ++i) { 701 #pragma omp target simd // OK 702 for (int j = 0; j < 10; ++j) 703 ; 704 } 705 #pragma omp for 706 for (int i = 0; i < 10; ++i) { 707 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 708 for (int j = 0; j < 10; ++j) 709 ; 710 } 711 #pragma omp for 712 for (int i = 0; i < 10; ++i) { 713 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 714 for (int j = 0; j < 10; ++j) 715 ; 716 } 717 #pragma omp for 718 for (int i = 0; i < 10; ++i) { 719 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 720 for (int j = 0; j < 10; ++j) 721 ; 722 } 723 #pragma omp for 724 for (int i = 0; i < 10; ++i) { 725 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 726 for (int j = 0; j < 10; ++j) 727 ; 728 } 729 #pragma omp for 730 for (int i = 0; i < 10; ++i) { 731 #pragma omp target teams // OK 732 ++a; 733 } 734 #pragma omp for 735 for (int i = 0; i < 10; ++i) { 736 #pragma omp target teams distribute // OK 737 for (int j = 0; j < 10; ++j) 738 ; 739 } 740 #pragma omp for 741 for (int i = 0; i < 10; ++i) { 742 #pragma omp target teams distribute parallel for // OK 743 for (int j = 0; j < 10; ++j) 744 ; 745 } 746 #pragma omp for 747 for (int i = 0; i < 10; ++i) { 748 #pragma omp target teams distribute parallel for simd // OK 749 for (int j = 0; j < 10; ++j) 750 ; 751 } 752 #pragma omp for 753 for (int i = 0; i < 10; ++i) { 754 #pragma omp target teams distribute simd // OK 755 for (int j = 0; j < 10; ++j) 756 ; 757 } 758 759 // FOR SIMD DIRECTIVE 760 #pragma omp for simd 761 for (int i = 0; i < 10; ++i) { 762 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 763 for (int i = 0; i < 10; ++i) 764 ; 765 } 766 #pragma omp for simd 767 for (int i = 0; i < 10; ++i) { 768 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 769 for (int i = 0; i < 10; ++i) 770 ; 771 } 772 #pragma omp for simd 773 for (int i = 0; i < 10; ++i) { 774 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 775 for (int i = 0; i < 10; ++i) 776 ; 777 } 778 #pragma omp for simd 779 for (int i = 0; i < 10; ++i) { 780 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 781 for (int i = 0; i < 10; ++i) 782 ; 783 } 784 #pragma omp for simd 785 for (int i = 0; i < 10; ++i) { 786 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 787 { 788 bar(); 789 } 790 } 791 #pragma omp for simd 792 for (int i = 0; i < 10; ++i) { 793 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 794 { 795 bar(); 796 } 797 } 798 #pragma omp for simd 799 for (int i = 0; i < 10; ++i) { 800 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 801 { 802 bar(); 803 } 804 } 805 #pragma omp for simd 806 for (int i = 0; i < 10; ++i) { 807 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 808 { 809 bar(); 810 } 811 } 812 #pragma omp for simd 813 for (int i = 0; i < 10; ++i) { 814 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 815 { 816 bar(); 817 } 818 } 819 #pragma omp for simd 820 for (int i = 0; i < 10; ++i) { 821 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 822 for (int i = 0; i < 10; ++i) 823 ; 824 } 825 #pragma omp for simd 826 for (int i = 0; i < 10; ++i) { 827 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 828 for (int i = 0; i < 10; ++i) 829 ; 830 } 831 #pragma omp for simd 832 for (int i = 0; i < 10; ++i) { 833 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 834 { 835 bar(); 836 } 837 } 838 #pragma omp for simd 839 for (int i = 0; i < 10; ++i) { 840 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 841 { 842 bar(); 843 } 844 } 845 #pragma omp for simd 846 for (int i = 0; i < 10; ++i) { 847 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 848 { 849 bar(); 850 } 851 } 852 #pragma omp for simd 853 for (int i = 0; i < 10; ++i) { 854 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 855 bar(); 856 } 857 #pragma omp for simd 858 for (int i = 0; i < 10; ++i) { 859 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 860 bar(); 861 } 862 #pragma omp for simd 863 for (int i = 0; i < 10; ++i) { 864 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 865 bar(); 866 } 867 #pragma omp for simd 868 for (int i = 0; i < 10; ++i) { 869 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 870 bar(); 871 } 872 #pragma omp for simd 873 for (int i = 0; i < 10; ++i) { 874 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 875 bar(); 876 } 877 #pragma omp for simd 878 for (int i = 0; i < 10; ++i) { 879 #pragma omp ordered simd // OK 880 bar(); 881 } 882 #pragma omp for simd 883 for (int i = 0; i < 10; ++i) { 884 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 885 bar(); 886 } 887 #pragma omp for simd 888 for (int i = 0; i < 10; ++i) { 889 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 890 ++a; 891 } 892 #pragma omp for simd 893 for (int i = 0; i < 10; ++i) { 894 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 895 ++a; 896 } 897 #pragma omp for simd 898 for (int i = 0; i < 10; ++i) { 899 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 900 ++a; 901 } 902 #pragma omp for simd 903 for (int i = 0; i < 10; ++i) { 904 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 905 for (int i = 0; i < 10; ++i) 906 ; 907 } 908 #pragma omp for simd 909 for (int i = 0; i < 10; ++i) { 910 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 911 ++a; 912 } 913 #pragma omp for simd 914 for (int i = 0; i < 10; ++i) { 915 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 916 ++a; 917 } 918 #pragma omp for simd 919 for (int i = 0; i < 10; ++i) { 920 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 921 ++a; 922 } 923 #pragma omp for simd 924 for (int i = 0; i < 10; ++i) { 925 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 926 for (int i = 0; i < 10; ++i) 927 ++a; 928 } 929 #pragma omp for simd 930 for (int i = 0; i < 10; ++i) { 931 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 932 for (int j = 0; j < 10; ++j) 933 ; 934 } 935 #pragma omp for simd 936 for (int i = 0; i < 10; ++i) { 937 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 938 bar(); 939 } 940 #pragma omp for simd 941 for (int i = 0; i < 10; ++i) { 942 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 943 for (int j = 0; j < 10; ++j) 944 ; 945 } 946 #pragma omp for simd 947 for (int i = 0; i < 10; ++i) { 948 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 949 for (int j = 0; j < 10; ++j) 950 ; 951 } 952 #pragma omp for simd 953 for (int i = 0; i < 10; ++i) { 954 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 955 for (int j = 0; j < 10; ++j) 956 ; 957 } 958 #pragma omp for simd 959 for (int i = 0; i < 10; ++i) { 960 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 961 for (int j = 0; j < 10; ++j) 962 ; 963 } 964 #pragma omp for simd 965 for (int i = 0; i < 10; ++i) { 966 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 967 for (int j = 0; j < 10; ++j) 968 ; 969 } 970 #pragma omp for simd 971 for (int i = 0; i < 10; ++i) { 972 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 973 for (int j = 0; j < 10; ++j) 974 ; 975 } 976 #pragma omp for simd 977 for (int i = 0; i < 10; ++i) { 978 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 979 for (int j = 0; j < 10; ++j) 980 ; 981 } 982 #pragma omp for simd 983 for (int i = 0; i < 10; ++i) { 984 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 985 for (int j = 0; j < 10; ++j) 986 ; 987 } 988 #pragma omp for simd 989 for (int i = 0; i < 10; ++i) { 990 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 991 a++; 992 } 993 #pragma omp for simd 994 for (int i = 0; i < 10; ++i) { 995 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 996 for (int j = 0; j < 10; ++j) 997 ; 998 } 999 #pragma omp for simd 1000 for (int i = 0; i < 10; ++i) { 1001 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1002 for (int j = 0; j < 10; ++j) 1003 ; 1004 } 1005 #pragma omp for simd 1006 for (int i = 0; i < 10; ++i) { 1007 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1008 for (int j = 0; j < 10; ++j) 1009 ; 1010 } 1011 #pragma omp for simd 1012 for (int i = 0; i < 10; ++i) { 1013 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1014 for (int j = 0; j < 10; ++j) 1015 ; 1016 } 1017 1018 // SECTIONS DIRECTIVE 1019 #pragma omp sections 1020 { 1021 #pragma omp for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1022 for (int i = 0; i < 10; ++i) 1023 ; 1024 } 1025 #pragma omp sections 1026 { 1027 #pragma omp simd 1028 for (int i = 0; i < 10; ++i) 1029 ; 1030 } 1031 #pragma omp sections 1032 { 1033 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1034 for (int i = 0; i < 10; ++i) 1035 ; 1036 } 1037 #pragma omp sections 1038 { 1039 #pragma omp parallel 1040 for (int i = 0; i < 10; ++i) 1041 ; 1042 } 1043 #pragma omp sections 1044 { 1045 #pragma omp sections // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1046 { 1047 bar(); 1048 } 1049 } 1050 #pragma omp sections 1051 { 1052 #pragma omp section 1053 { 1054 bar(); 1055 } 1056 } 1057 #pragma omp sections 1058 { 1059 #pragma omp parallel 1060 { 1061 #pragma omp single // OK 1062 { 1063 bar(); 1064 } 1065 #pragma omp for // OK 1066 for (int i = 0; i < 10; ++i) 1067 ; 1068 #pragma omp sections // OK 1069 { 1070 bar(); 1071 } 1072 } 1073 } 1074 #pragma omp sections 1075 { 1076 #pragma omp parallel master 1077 { 1078 bar(); 1079 } 1080 } 1081 #pragma omp sections 1082 { 1083 #pragma omp parallel 1084 { 1085 #pragma omp master // OK 1086 { 1087 bar(); 1088 } 1089 #pragma omp for // OK 1090 for (int i = 0; i < 10; ++i) 1091 ; 1092 #pragma omp master // OK 1093 { 1094 bar(); 1095 } 1096 } 1097 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1098 bar(); 1099 } 1100 #pragma omp sections 1101 { 1102 #pragma omp parallel 1103 { 1104 #pragma omp critical(A) // OK 1105 { 1106 bar(); 1107 } 1108 #pragma omp for // OK 1109 for (int i = 0; i < 10; ++i) 1110 ; 1111 #pragma omp critical // OK 1112 { 1113 bar(); 1114 } 1115 } 1116 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1117 bar(); 1118 } 1119 #pragma omp sections 1120 { 1121 #pragma omp parallel for 1122 for (int i = 0; i < 10; ++i) 1123 ; 1124 } 1125 #pragma omp sections 1126 { 1127 #pragma omp parallel for simd 1128 for (int i = 0; i < 10; ++i) 1129 ; 1130 } 1131 #pragma omp sections 1132 { 1133 #pragma omp parallel sections 1134 { 1135 bar(); 1136 } 1137 } 1138 #pragma omp sections 1139 { 1140 #pragma omp task 1141 { 1142 bar(); 1143 } 1144 } 1145 #pragma omp sections 1146 { 1147 #pragma omp taskyield 1148 } 1149 #pragma omp sections 1150 { 1151 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1152 } 1153 #pragma omp sections 1154 { 1155 #pragma omp taskwait 1156 } 1157 #pragma omp sections 1158 { 1159 #pragma omp flush 1160 } 1161 #pragma omp sections 1162 { 1163 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 1164 bar(); 1165 } 1166 #pragma omp sections 1167 { 1168 #pragma omp atomic 1169 ++a; 1170 } 1171 #pragma omp sections 1172 { 1173 #pragma omp target 1174 ++a; 1175 } 1176 #pragma omp sections 1177 { 1178 #pragma omp target parallel 1179 ++a; 1180 } 1181 #pragma omp sections 1182 { 1183 #pragma omp target parallel for 1184 for (int i = 0; i < 10; ++i) 1185 ; 1186 } 1187 #pragma omp sections 1188 { 1189 #pragma omp target enter data map(to: a) 1190 } 1191 #pragma omp sections 1192 { 1193 #pragma omp target exit data map(from: a) 1194 } 1195 #pragma omp sections 1196 { 1197 #pragma omp teams // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 1198 ++a; 1199 } 1200 #pragma omp sections 1201 { 1202 #pragma omp taskloop 1203 for (int i = 0; i < 10; ++i) 1204 ++a; 1205 } 1206 #pragma omp sections 1207 { 1208 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 1209 for (int i = 0; i < 10; ++i) 1210 ; 1211 } 1212 #pragma omp sections 1213 { 1214 #pragma omp target update to(a) 1215 } 1216 #pragma omp sections 1217 { 1218 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 1219 for (int i = 0; i < 10; ++i) 1220 ; 1221 } 1222 #pragma omp sections 1223 { 1224 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 1225 for (int i = 0; i < 10; ++i) 1226 ; 1227 } 1228 #pragma omp sections 1229 { 1230 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 1231 for (int i = 0; i < 10; ++i) 1232 ; 1233 } 1234 #pragma omp sections 1235 { 1236 #pragma omp target simd // OK 1237 for (int i = 0; i < 10; ++i) 1238 ; 1239 } 1240 #pragma omp sections 1241 { 1242 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 1243 for (int i = 0; i < 10; ++i) 1244 ; 1245 } 1246 #pragma omp sections 1247 { 1248 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 1249 for (int i = 0; i < 10; ++i) 1250 ; 1251 } 1252 #pragma omp sections 1253 { 1254 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1255 for (int i = 0; i < 10; ++i) 1256 ; 1257 } 1258 #pragma omp sections 1259 { 1260 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1261 for (int i = 0; i < 10; ++i) 1262 ; 1263 } 1264 #pragma omp sections 1265 { 1266 #pragma omp target teams // OK 1267 ++a; 1268 } 1269 #pragma omp sections 1270 { 1271 #pragma omp target teams distribute // OK 1272 for (int i = 0; i < 10; ++i) 1273 ; 1274 } 1275 #pragma omp sections 1276 { 1277 #pragma omp target teams distribute parallel for // OK 1278 for (int i = 0; i < 10; ++i) 1279 ; 1280 } 1281 #pragma omp sections 1282 { 1283 #pragma omp target teams distribute parallel for simd // OK 1284 for (int i = 0; i < 10; ++i) 1285 ; 1286 } 1287 #pragma omp sections 1288 { 1289 #pragma omp target teams distribute simd // OK 1290 for (int i = 0; i < 10; ++i) 1291 ; 1292 } 1293 1294 // SECTION DIRECTIVE 1295 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1296 { 1297 bar(); 1298 } 1299 #pragma omp sections 1300 { 1301 #pragma omp section 1302 { 1303 #pragma omp for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1304 for (int i = 0; i < 10; ++i) 1305 ; 1306 } 1307 } 1308 #pragma omp sections 1309 { 1310 #pragma omp section 1311 { 1312 #pragma omp simd 1313 for (int i = 0; i < 10; ++i) 1314 ; 1315 } 1316 } 1317 #pragma omp sections 1318 { 1319 #pragma omp section 1320 { 1321 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1322 for (int i = 0; i < 10; ++i) 1323 ; 1324 } 1325 } 1326 #pragma omp sections 1327 { 1328 #pragma omp section 1329 { 1330 #pragma omp parallel 1331 for (int i = 0; i < 10; ++i) 1332 ; 1333 } 1334 } 1335 #pragma omp sections 1336 { 1337 #pragma omp section 1338 { 1339 #pragma omp sections // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1340 { 1341 bar(); 1342 } 1343 } 1344 } 1345 #pragma omp sections 1346 { 1347 #pragma omp section 1348 { 1349 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1350 { 1351 bar(); 1352 } 1353 } 1354 } 1355 #pragma omp sections 1356 { 1357 #pragma omp section 1358 { 1359 #pragma omp parallel master 1360 bar(); 1361 #pragma omp critical 1362 bar(); 1363 } 1364 } 1365 #pragma omp sections 1366 { 1367 #pragma omp section 1368 { 1369 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 1370 bar(); 1371 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1372 bar(); 1373 #pragma omp critical 1374 bar(); 1375 } 1376 } 1377 #pragma omp sections 1378 { 1379 #pragma omp section 1380 { 1381 #pragma omp parallel 1382 { 1383 #pragma omp single // OK 1384 { 1385 bar(); 1386 } 1387 #pragma omp for // OK 1388 for (int i = 0; i < 10; ++i) 1389 ; 1390 #pragma omp for simd // OK 1391 for (int i = 0; i < 10; ++i) 1392 ; 1393 #pragma omp sections // OK 1394 { 1395 bar(); 1396 } 1397 } 1398 } 1399 } 1400 #pragma omp sections 1401 { 1402 #pragma omp section 1403 { 1404 #pragma omp parallel for 1405 for (int i = 0; i < 10; ++i) 1406 ; 1407 } 1408 } 1409 #pragma omp sections 1410 { 1411 #pragma omp section 1412 { 1413 #pragma omp parallel for simd 1414 for (int i = 0; i < 10; ++i) 1415 ; 1416 } 1417 } 1418 #pragma omp sections 1419 { 1420 #pragma omp section 1421 { 1422 #pragma omp parallel sections 1423 { 1424 bar(); 1425 } 1426 } 1427 } 1428 #pragma omp sections 1429 { 1430 #pragma omp section 1431 { 1432 #pragma omp task 1433 { 1434 bar(); 1435 } 1436 } 1437 } 1438 #pragma omp sections 1439 { 1440 #pragma omp section 1441 { 1442 #pragma omp taskyield 1443 bar(); 1444 } 1445 } 1446 #pragma omp sections 1447 { 1448 #pragma omp section 1449 { 1450 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1451 bar(); 1452 } 1453 } 1454 #pragma omp sections 1455 { 1456 #pragma omp section 1457 { 1458 #pragma omp taskwait 1459 bar(); 1460 } 1461 } 1462 #pragma omp sections 1463 { 1464 #pragma omp section 1465 { 1466 #pragma omp flush 1467 bar(); 1468 } 1469 } 1470 #pragma omp sections 1471 { 1472 #pragma omp section 1473 { 1474 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 1475 bar(); 1476 } 1477 } 1478 #pragma omp sections 1479 { 1480 #pragma omp section 1481 #pragma omp atomic 1482 ++a; 1483 } 1484 #pragma omp sections 1485 { 1486 #pragma omp section 1487 #pragma omp target 1488 ++a; 1489 } 1490 #pragma omp sections 1491 { 1492 #pragma omp section 1493 #pragma omp target parallel 1494 ++a; 1495 } 1496 #pragma omp sections 1497 { 1498 #pragma omp section 1499 { 1500 #pragma omp target parallel for 1501 for (int i = 0; i < 10; ++i) 1502 ; 1503 } 1504 } 1505 #pragma omp sections 1506 { 1507 #pragma omp section 1508 { 1509 #pragma omp target enter data map(to: a) 1510 ++a; 1511 } 1512 } 1513 #pragma omp sections 1514 { 1515 #pragma omp section 1516 { 1517 #pragma omp target exit data map(from: a) 1518 ++a; 1519 } 1520 } 1521 #pragma omp sections 1522 { 1523 #pragma omp section 1524 #pragma omp teams // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 1525 ++a; 1526 } 1527 #pragma omp sections 1528 { 1529 #pragma omp section 1530 #pragma omp taskloop 1531 for (int i = 0; i < 10; ++i) 1532 ++a; 1533 } 1534 #pragma omp sections 1535 { 1536 #pragma omp section 1537 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 1538 for (int i = 0; i < 10; ++i) 1539 ; 1540 } 1541 #pragma omp sections 1542 { 1543 #pragma omp section 1544 { 1545 bar(); 1546 #pragma omp target update to(a) 1547 } 1548 } 1549 #pragma omp sections 1550 { 1551 #pragma omp section 1552 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 1553 for (int i = 0; i < 10; ++i) 1554 ; 1555 } 1556 #pragma omp sections 1557 { 1558 #pragma omp section 1559 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 1560 for (int i = 0; i < 10; ++i) 1561 ; 1562 } 1563 #pragma omp sections 1564 { 1565 #pragma omp section 1566 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 1567 for (int i = 0; i < 10; ++i) 1568 ; 1569 } 1570 #pragma omp sections 1571 { 1572 #pragma omp section 1573 #pragma omp target simd // OK 1574 for (int i = 0; i < 10; ++i) 1575 ; 1576 } 1577 #pragma omp sections 1578 { 1579 #pragma omp section 1580 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 1581 for (int i = 0; i < 10; ++i) 1582 ; 1583 } 1584 #pragma omp sections 1585 { 1586 #pragma omp section 1587 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 1588 for (int i = 0; i < 10; ++i) 1589 ; 1590 } 1591 #pragma omp sections 1592 { 1593 #pragma omp section 1594 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1595 for (int i = 0; i < 10; ++i) 1596 ; 1597 } 1598 #pragma omp sections 1599 { 1600 #pragma omp section 1601 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1602 for (int i = 0; i < 10; ++i) 1603 ; 1604 } 1605 #pragma omp sections 1606 { 1607 #pragma omp section 1608 #pragma omp target teams // OK 1609 ++a; 1610 } 1611 #pragma omp sections 1612 { 1613 #pragma omp section 1614 #pragma omp target teams distribute // OK 1615 for (int i = 0; i < 10; ++i) 1616 ; 1617 } 1618 #pragma omp sections 1619 { 1620 #pragma omp section 1621 #pragma omp target teams distribute parallel for // OK 1622 for (int i = 0; i < 10; ++i) 1623 ; 1624 } 1625 #pragma omp sections 1626 { 1627 #pragma omp section 1628 #pragma omp target teams distribute parallel for simd // OK 1629 for (int i = 0; i < 10; ++i) 1630 ; 1631 } 1632 #pragma omp sections 1633 { 1634 #pragma omp section 1635 #pragma omp target teams distribute simd // OK 1636 for (int i = 0; i < 10; ++i) 1637 ; 1638 } 1639 1640 // SINGLE DIRECTIVE 1641 #pragma omp single 1642 { 1643 #pragma omp for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1644 for (int i = 0; i < 10; ++i) 1645 ; 1646 } 1647 #pragma omp single 1648 { 1649 #pragma omp simd 1650 for (int i = 0; i < 10; ++i) 1651 ; 1652 } 1653 #pragma omp single 1654 { 1655 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1656 for (int i = 0; i < 10; ++i) 1657 ; 1658 } 1659 #pragma omp single 1660 { 1661 #pragma omp parallel 1662 for (int i = 0; i < 10; ++i) 1663 ; 1664 } 1665 #pragma omp single 1666 { 1667 #pragma omp single // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 1668 { 1669 bar(); 1670 } 1671 } 1672 #pragma omp single 1673 { 1674 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1675 { 1676 bar(); 1677 } 1678 } 1679 #pragma omp single 1680 { 1681 #pragma omp parallel master 1682 { 1683 bar(); 1684 } 1685 } 1686 #pragma omp single 1687 { 1688 #pragma omp critical 1689 { 1690 bar(); 1691 } 1692 } 1693 #pragma omp single 1694 { 1695 #pragma omp sections // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1696 { 1697 bar(); 1698 } 1699 } 1700 #pragma omp single 1701 { 1702 #pragma omp parallel 1703 { 1704 #pragma omp single // OK 1705 { 1706 bar(); 1707 } 1708 #pragma omp for // OK 1709 for (int i = 0; i < 10; ++i) 1710 ; 1711 #pragma omp for simd // OK 1712 for (int i = 0; i < 10; ++i) 1713 ; 1714 #pragma omp sections // OK 1715 { 1716 bar(); 1717 } 1718 } 1719 } 1720 #pragma omp single 1721 { 1722 #pragma omp parallel for 1723 for (int i = 0; i < 10; ++i) 1724 ; 1725 } 1726 #pragma omp single 1727 { 1728 #pragma omp parallel for simd 1729 for (int i = 0; i < 10; ++i) 1730 ; 1731 } 1732 #pragma omp single 1733 { 1734 #pragma omp parallel sections 1735 { 1736 bar(); 1737 } 1738 } 1739 #pragma omp single 1740 { 1741 #pragma omp task 1742 { 1743 bar(); 1744 } 1745 } 1746 #pragma omp single 1747 { 1748 #pragma omp taskyield 1749 bar(); 1750 } 1751 #pragma omp single 1752 { 1753 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1754 bar(); 1755 } 1756 #pragma omp single 1757 { 1758 #pragma omp taskwait 1759 bar(); 1760 } 1761 #pragma omp single 1762 { 1763 #pragma omp flush 1764 bar(); 1765 } 1766 #pragma omp single 1767 { 1768 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 1769 bar(); 1770 } 1771 #pragma omp single 1772 { 1773 #pragma omp atomic 1774 ++a; 1775 } 1776 #pragma omp single 1777 { 1778 #pragma omp target 1779 ++a; 1780 } 1781 #pragma omp single 1782 { 1783 #pragma omp target parallel 1784 ++a; 1785 } 1786 #pragma omp single 1787 { 1788 #pragma omp target parallel for 1789 for (int i = 0; i < 10; ++i) 1790 ; 1791 } 1792 #pragma omp single 1793 { 1794 #pragma omp target enter data map(to: a) 1795 ++a; 1796 } 1797 #pragma omp single 1798 { 1799 #pragma omp target exit data map(from: a) 1800 ++a; 1801 } 1802 #pragma omp single 1803 { 1804 #pragma omp teams // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 1805 ++a; 1806 } 1807 #pragma omp single 1808 { 1809 #pragma omp taskloop 1810 for (int i = 0; i < 10; ++i) 1811 ++a; 1812 } 1813 #pragma omp single 1814 { 1815 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 1816 for (int i = 0; i < 10; ++i) 1817 ; 1818 } 1819 #pragma omp single 1820 { 1821 #pragma omp target update to(a) 1822 bar(); 1823 } 1824 #pragma omp single 1825 { 1826 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 1827 for (int i = 0; i < 10; ++i) 1828 ; 1829 } 1830 #pragma omp single 1831 { 1832 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 1833 for (int i = 0; i < 10; ++i) 1834 ; 1835 } 1836 #pragma omp single 1837 { 1838 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 1839 for (int i = 0; i < 10; ++i) 1840 ; 1841 } 1842 #pragma omp single 1843 { 1844 #pragma omp target simd // OK 1845 for (int i = 0; i < 10; ++i) 1846 ; 1847 } 1848 #pragma omp single 1849 { 1850 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 1851 for (int i = 0; i < 10; ++i) 1852 ; 1853 } 1854 #pragma omp single 1855 { 1856 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 1857 for (int i = 0; i < 10; ++i) 1858 ; 1859 } 1860 #pragma omp single 1861 { 1862 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1863 for (int i = 0; i < 10; ++i) 1864 ; 1865 } 1866 #pragma omp single 1867 { 1868 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1869 for (int i = 0; i < 10; ++i) 1870 ; 1871 } 1872 #pragma omp single 1873 { 1874 #pragma omp target teams // OK 1875 ++a; 1876 } 1877 #pragma omp single 1878 { 1879 #pragma omp target teams distribute // OK 1880 for (int i = 0; i < 10; ++i) 1881 ; 1882 } 1883 #pragma omp single 1884 { 1885 #pragma omp target teams distribute parallel for // OK 1886 for (int i = 0; i < 10; ++i) 1887 ; 1888 } 1889 #pragma omp single 1890 { 1891 #pragma omp target teams distribute parallel for simd // OK 1892 for (int i = 0; i < 10; ++i) 1893 ; 1894 } 1895 #pragma omp single 1896 { 1897 #pragma omp target teams distribute simd // OK 1898 for (int i = 0; i < 10; ++i) 1899 ; 1900 } 1901 1902 // MASTER DIRECTIVE 1903 #pragma omp master 1904 { 1905 #pragma omp for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 1906 for (int i = 0; i < 10; ++i) 1907 ; 1908 } 1909 #pragma omp master 1910 { 1911 #pragma omp simd 1912 for (int i = 0; i < 10; ++i) 1913 ; 1914 } 1915 #pragma omp master 1916 { 1917 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 1918 for (int i = 0; i < 10; ++i) 1919 ; 1920 } 1921 #pragma omp master 1922 { 1923 #pragma omp parallel 1924 for (int i = 0; i < 10; ++i) 1925 ; 1926 } 1927 #pragma omp master 1928 { 1929 #pragma omp single // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 1930 { 1931 bar(); 1932 } 1933 } 1934 #pragma omp master 1935 { 1936 #pragma omp master // OK, though second 'master' is redundant 1937 { 1938 bar(); 1939 } 1940 } 1941 #pragma omp master 1942 { 1943 #pragma omp critical 1944 { 1945 bar(); 1946 } 1947 } 1948 #pragma omp master 1949 { 1950 #pragma omp sections // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 1951 { 1952 bar(); 1953 } 1954 } 1955 #pragma omp master 1956 { 1957 #pragma omp parallel 1958 { 1959 #pragma omp master // OK 1960 { 1961 bar(); 1962 } 1963 #pragma omp for // OK 1964 for (int i = 0; i < 10; ++i) 1965 ; 1966 #pragma omp for simd // OK 1967 for (int i = 0; i < 10; ++i) 1968 ; 1969 #pragma omp sections // OK 1970 { 1971 bar(); 1972 } 1973 } 1974 } 1975 #pragma omp master 1976 { 1977 #pragma omp parallel master // OK 1978 { 1979 bar(); 1980 } 1981 #pragma omp parallel 1982 { 1983 #pragma omp for // OK 1984 for (int i = 0; i < 10; ++i) 1985 ; 1986 #pragma omp for simd // OK 1987 for (int i = 0; i < 10; ++i) 1988 ; 1989 #pragma omp sections // OK 1990 { 1991 bar(); 1992 } 1993 } 1994 } 1995 #pragma omp master 1996 { 1997 #pragma omp parallel for 1998 for (int i = 0; i < 10; ++i) 1999 ; 2000 } 2001 #pragma omp master 2002 { 2003 #pragma omp parallel for simd 2004 for (int i = 0; i < 10; ++i) 2005 ; 2006 } 2007 #pragma omp master 2008 { 2009 #pragma omp parallel sections 2010 { 2011 bar(); 2012 } 2013 } 2014 #pragma omp master 2015 { 2016 #pragma omp task 2017 { 2018 bar(); 2019 } 2020 } 2021 #pragma omp master 2022 { 2023 #pragma omp taskyield 2024 bar(); 2025 } 2026 #pragma omp master 2027 { 2028 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 2029 bar(); 2030 } 2031 #pragma omp master 2032 { 2033 #pragma omp taskwait 2034 bar(); 2035 } 2036 #pragma omp master 2037 { 2038 #pragma omp flush 2039 bar(); 2040 } 2041 #pragma omp master 2042 { 2043 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 2044 bar(); 2045 } 2046 #pragma omp master 2047 { 2048 #pragma omp atomic 2049 ++a; 2050 } 2051 #pragma omp master 2052 { 2053 #pragma omp target 2054 ++a; 2055 } 2056 #pragma omp master 2057 { 2058 #pragma omp target parallel 2059 ++a; 2060 } 2061 #pragma omp master 2062 { 2063 #pragma omp target parallel for 2064 for (int i = 0; i < 10; ++i) 2065 ; 2066 } 2067 #pragma omp master 2068 { 2069 #pragma omp target enter data map(to: a) 2070 ++a; 2071 } 2072 #pragma omp master 2073 { 2074 #pragma omp target exit data map(from: a) 2075 ++a; 2076 } 2077 #pragma omp master 2078 { 2079 #pragma omp teams // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 2080 ++a; 2081 } 2082 #pragma omp master 2083 { 2084 #pragma omp taskloop 2085 for (int i = 0; i < 10; ++i) 2086 ++a; 2087 } 2088 #pragma omp master 2089 { 2090 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 2091 for (int i = 0; i < 10; ++i) 2092 ; 2093 } 2094 #pragma omp master 2095 { 2096 #pragma omp target update to(a) 2097 bar(); 2098 } 2099 #pragma omp master 2100 { 2101 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 2102 for (int i = 0; i < 10; ++i) 2103 ; 2104 } 2105 #pragma omp master 2106 { 2107 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 2108 for (int i = 0; i < 10; ++i) 2109 ; 2110 } 2111 #pragma omp master 2112 { 2113 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 2114 for (int i = 0; i < 10; ++i) 2115 ; 2116 } 2117 #pragma omp master 2118 { 2119 #pragma omp target simd // OK 2120 for (int i = 0; i < 10; ++i) 2121 ; 2122 } 2123 #pragma omp master 2124 { 2125 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 2126 for (int i = 0; i < 10; ++i) 2127 ; 2128 } 2129 #pragma omp master 2130 { 2131 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 2132 for (int i = 0; i < 10; ++i) 2133 ; 2134 } 2135 #pragma omp master 2136 { 2137 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2138 for (int i = 0; i < 10; ++i) 2139 ; 2140 } 2141 #pragma omp master 2142 { 2143 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2144 for (int i = 0; i < 10; ++i) 2145 ; 2146 } 2147 #pragma omp master 2148 { 2149 #pragma omp target teams // OK 2150 a++; 2151 } 2152 #pragma omp master 2153 { 2154 #pragma omp target teams distribute // OK 2155 for (int i = 0; i < 10; ++i) 2156 ; 2157 } 2158 #pragma omp master 2159 { 2160 #pragma omp target teams distribute parallel for // OK 2161 for (int i = 0; i < 10; ++i) 2162 ; 2163 } 2164 #pragma omp master 2165 { 2166 #pragma omp target teams distribute parallel for simd // OK 2167 for (int i = 0; i < 10; ++i) 2168 ; 2169 } 2170 #pragma omp master 2171 { 2172 #pragma omp target teams distribute simd // OK 2173 for (int i = 0; i < 10; ++i) 2174 ; 2175 } 2176 2177 // CRITICAL DIRECTIVE 2178 #pragma omp critical 2179 { 2180 #pragma omp for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 2181 for (int i = 0; i < 10; ++i) 2182 ; 2183 } 2184 #pragma omp critical 2185 { 2186 #pragma omp simd 2187 for (int i = 0; i < 10; ++i) 2188 ; 2189 } 2190 #pragma omp critical 2191 { 2192 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 2193 for (int i = 0; i < 10; ++i) 2194 ; 2195 } 2196 #pragma omp critical 2197 { 2198 #pragma omp parallel 2199 for (int i = 0; i < 10; ++i) 2200 ; 2201 } 2202 #pragma omp critical 2203 { 2204 #pragma omp single // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 2205 { 2206 bar(); 2207 } 2208 } 2209 #pragma omp critical 2210 { 2211 #pragma omp master // OK, though second 'master' is redundant 2212 { 2213 bar(); 2214 } 2215 } 2216 #pragma omp critical 2217 { 2218 #pragma omp critical 2219 { 2220 bar(); 2221 } 2222 } 2223 #pragma omp critical 2224 { 2225 #pragma omp sections // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 2226 { 2227 bar(); 2228 } 2229 } 2230 #pragma omp critical 2231 { 2232 #pragma omp parallel 2233 { 2234 #pragma omp master // OK 2235 { 2236 bar(); 2237 } 2238 #pragma omp for // OK 2239 for (int i = 0; i < 10; ++i) 2240 ; 2241 #pragma omp for simd // OK 2242 for (int i = 0; i < 10; ++i) 2243 ; 2244 #pragma omp sections // OK 2245 { 2246 bar(); 2247 } 2248 } 2249 } 2250 #pragma omp critical 2251 { 2252 #pragma omp parallel master 2253 { 2254 bar(); 2255 } 2256 } 2257 #pragma omp critical 2258 { 2259 #pragma omp parallel for 2260 for (int i = 0; i < 10; ++i) 2261 ; 2262 } 2263 #pragma omp critical 2264 { 2265 #pragma omp parallel for simd 2266 for (int i = 0; i < 10; ++i) 2267 ; 2268 } 2269 #pragma omp critical 2270 { 2271 #pragma omp parallel sections 2272 { 2273 bar(); 2274 } 2275 } 2276 #pragma omp critical 2277 { 2278 #pragma omp task 2279 { 2280 bar(); 2281 } 2282 } 2283 #pragma omp critical 2284 { 2285 #pragma omp taskyield 2286 bar(); 2287 } 2288 #pragma omp critical 2289 { 2290 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2291 bar(); 2292 } 2293 #pragma omp critical 2294 { 2295 #pragma omp taskwait 2296 bar(); 2297 } 2298 #pragma omp critical(Tuzik) 2299 { 2300 #pragma omp critical(grelka) 2301 bar(); 2302 } 2303 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2304 { 2305 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2306 { 2307 #pragma omp critical(Tuzik) 2308 { 2309 #pragma omp parallel 2310 #pragma omp critical(grelka) 2311 { 2312 bar(); 2313 } 2314 } 2315 } 2316 } 2317 #pragma omp critical 2318 { 2319 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 2320 bar(); 2321 } 2322 #pragma omp critical 2323 { 2324 #pragma omp atomic 2325 ++a; 2326 } 2327 #pragma omp critical 2328 { 2329 #pragma omp target 2330 ++a; 2331 } 2332 #pragma omp critical 2333 { 2334 #pragma omp target parallel 2335 ++a; 2336 } 2337 #pragma omp critical 2338 { 2339 #pragma omp target parallel for 2340 for (int i = 0; i < 10; ++i) 2341 ; 2342 } 2343 #pragma omp critical 2344 { 2345 #pragma omp target enter data map(to: a) 2346 ++a; 2347 } 2348 #pragma omp critical 2349 { 2350 #pragma omp target exit data map(from: a) 2351 ++a; 2352 } 2353 #pragma omp critical 2354 { 2355 #pragma omp teams // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 2356 ++a; 2357 } 2358 #pragma omp critical 2359 { 2360 #pragma omp taskloop 2361 for (int i = 0; i < 10; ++i) 2362 ++a; 2363 } 2364 #pragma omp critical 2365 { 2366 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 2367 for (int i = 0; i < 10; ++i) 2368 ; 2369 } 2370 #pragma omp critical 2371 { 2372 #pragma omp target update to(a) 2373 bar(); 2374 } 2375 #pragma omp critical 2376 { 2377 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 2378 for (int i = 0; i < 10; ++i) 2379 ; 2380 } 2381 #pragma omp critical 2382 { 2383 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 2384 for (int i = 0; i < 10; ++i) 2385 ; 2386 } 2387 #pragma omp critical 2388 { 2389 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 2390 for (int i = 0; i < 10; ++i) 2391 ; 2392 } 2393 #pragma omp critical 2394 { 2395 #pragma omp target simd // OK 2396 for (int i = 0; i < 10; ++i) 2397 ; 2398 } 2399 #pragma omp critical 2400 { 2401 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 2402 for (int i = 0; i < 10; ++i) 2403 ; 2404 } 2405 #pragma omp critical 2406 { 2407 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 2408 for (int i = 0; i < 10; ++i) 2409 ; 2410 } 2411 #pragma omp critical 2412 { 2413 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2414 for (int i = 0; i < 10; ++i) 2415 ; 2416 } 2417 #pragma omp critical 2418 { 2419 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2420 for (int i = 0; i < 10; ++i) 2421 ; 2422 } 2423 #pragma omp critical 2424 { 2425 #pragma omp target teams // OK 2426 a++; 2427 } 2428 #pragma omp critical 2429 { 2430 #pragma omp target teams distribute // OK 2431 for (int i = 0; i < 10; ++i) 2432 ; 2433 } 2434 #pragma omp critical 2435 { 2436 #pragma omp target teams distribute parallel for // OK 2437 for (int i = 0; i < 10; ++i) 2438 ; 2439 } 2440 #pragma omp critical 2441 { 2442 #pragma omp target teams distribute parallel for simd // OK 2443 for (int i = 0; i < 10; ++i) 2444 ; 2445 } 2446 #pragma omp critical 2447 { 2448 #pragma omp target teams distribute simd // OK 2449 for (int i = 0; i < 10; ++i) 2450 ; 2451 } 2452 2453 // PARALLEL FOR DIRECTIVE 2454 #pragma omp parallel for 2455 for (int i = 0; i < 10; ++i) { 2456 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 2457 for (int i = 0; i < 10; ++i) 2458 ; 2459 } 2460 #pragma omp parallel for 2461 for (int i = 0; i < 10; ++i) { 2462 #pragma omp simd 2463 for (int i = 0; i < 10; ++i) 2464 ; 2465 } 2466 #pragma omp parallel for 2467 for (int i = 0; i < 10; ++i) { 2468 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 2469 for (int i = 0; i < 10; ++i) 2470 ; 2471 } 2472 #pragma omp parallel for 2473 for (int i = 0; i < 10; ++i) { 2474 #pragma omp parallel 2475 for (int i = 0; i < 10; ++i) 2476 ; 2477 } 2478 #pragma omp parallel for 2479 for (int i = 0; i < 10; ++i) { 2480 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 2481 { 2482 bar(); 2483 } 2484 } 2485 #pragma omp parallel for 2486 for (int i = 0; i < 10; ++i) { 2487 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2488 { 2489 bar(); 2490 } 2491 } 2492 #pragma omp parallel for 2493 for (int i = 0; i < 10; ++i) { 2494 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 2495 { 2496 bar(); 2497 } 2498 } 2499 2500 #pragma omp parallel for 2501 for (int i = 0; i < 10; ++i) { 2502 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2503 { 2504 bar(); 2505 } 2506 } 2507 2508 #pragma omp parallel for 2509 for (int i = 0; i < 10; ++i) { 2510 #pragma omp critical 2511 { 2512 bar(); 2513 } 2514 } 2515 2516 #pragma omp parallel for 2517 for (int i = 0; i < 10; ++i) { 2518 #pragma omp parallel 2519 { 2520 #pragma omp single // OK 2521 { 2522 bar(); 2523 } 2524 #pragma omp for // OK 2525 for (int i = 0; i < 10; ++i) 2526 ; 2527 #pragma omp for simd // OK 2528 for (int i = 0; i < 10; ++i) 2529 ; 2530 #pragma omp sections // OK 2531 { 2532 bar(); 2533 } 2534 } 2535 } 2536 #pragma omp parallel for 2537 for (int i = 0; i < 10; ++i) { 2538 #pragma omp parallel for 2539 for (int i = 0; i < 10; ++i) 2540 ; 2541 } 2542 #pragma omp parallel for 2543 for (int i = 0; i < 10; ++i) { 2544 #pragma omp parallel for simd 2545 for (int i = 0; i < 10; ++i) 2546 ; 2547 } 2548 #pragma omp parallel for 2549 for (int i = 0; i < 10; ++i) { 2550 #pragma omp parallel sections 2551 { 2552 bar(); 2553 } 2554 } 2555 #pragma omp parallel for 2556 for (int i = 0; i < 10; ++i) { 2557 #pragma omp task 2558 { 2559 bar(); 2560 } 2561 } 2562 #pragma omp parallel for 2563 for (int i = 0; i < 10; ++i) { 2564 #pragma omp taskyield 2565 bar(); 2566 } 2567 #pragma omp parallel for 2568 for (int i = 0; i < 10; ++i) { 2569 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2570 bar(); 2571 } 2572 #pragma omp parallel for 2573 for (int i = 0; i < 10; ++i) { 2574 #pragma omp taskwait 2575 bar(); 2576 } 2577 #pragma omp parallel for 2578 for (int i = 0; i < 10; ++i) { 2579 #pragma omp flush 2580 bar(); 2581 } 2582 #pragma omp parallel for 2583 for (int i = 0; i < 10; ++i) { 2584 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 2585 bar(); 2586 } 2587 #pragma omp parallel for ordered 2588 for (int i = 0; i < 10; ++i) { 2589 #pragma omp ordered // OK 2590 bar(); 2591 } 2592 #pragma omp parallel for 2593 for (int i = 0; i < 10; ++i) { 2594 #pragma omp atomic 2595 ++a; 2596 } 2597 #pragma omp parallel for 2598 for (int i = 0; i < 10; ++i) { 2599 #pragma omp target 2600 ++a; 2601 } 2602 #pragma omp parallel for 2603 for (int i = 0; i < 10; ++i) { 2604 #pragma omp target parallel 2605 ++a; 2606 } 2607 #pragma omp parallel for 2608 for (int i = 0; i < 10; ++i) { 2609 #pragma omp target parallel for 2610 for (int i = 0; i < 10; ++i) 2611 ; 2612 } 2613 #pragma omp parallel for 2614 for (int i = 0; i < 10; ++i) { 2615 #pragma omp target enter data map(to: a) 2616 ++a; 2617 } 2618 #pragma omp parallel for 2619 for (int i = 0; i < 10; ++i) { 2620 #pragma omp target exit data map(from: a) 2621 ++a; 2622 } 2623 #pragma omp parallel for 2624 for (int i = 0; i < 10; ++i) { 2625 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 2626 ++a; 2627 } 2628 #pragma omp parallel for 2629 for (int i = 0; i < 10; ++i) { 2630 #pragma omp taskloop 2631 for (int i = 0; i < 10; ++i) 2632 ++a; 2633 } 2634 #pragma omp parallel for 2635 for (int i = 0; i < 10; ++i) { 2636 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 2637 for (int j = 0; j < 10; ++j) 2638 ; 2639 } 2640 #pragma omp parallel for 2641 for (int i = 0; i < 10; ++i) { 2642 #pragma omp target update to(a) 2643 } 2644 #pragma omp parallel for 2645 for (int i = 0; i < 10; ++i) { 2646 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 2647 for (int j = 0; j < 10; ++j) 2648 ; 2649 } 2650 #pragma omp parallel for 2651 for (int i = 0; i < 10; ++i) { 2652 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 2653 for (int j = 0; j < 10; ++j) 2654 ; 2655 } 2656 #pragma omp parallel for 2657 for (int i = 0; i < 10; ++i) { 2658 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 2659 for (int j = 0; j < 10; ++j) 2660 ; 2661 } 2662 #pragma omp parallel for 2663 for (int i = 0; i < 10; ++i) { 2664 #pragma omp target simd // OK 2665 for (int j = 0; j < 10; ++j) 2666 ; 2667 } 2668 #pragma omp parallel for 2669 for (int i = 0; i < 10; ++i) { 2670 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 2671 for (int j = 0; j < 10; ++j) 2672 ; 2673 } 2674 #pragma omp parallel for 2675 for (int i = 0; i < 10; ++i) { 2676 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 2677 for (int j = 0; j < 10; ++j) 2678 ; 2679 } 2680 #pragma omp parallel for 2681 for (int i = 0; i < 10; ++i) { 2682 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2683 for (int j = 0; j < 10; ++j) 2684 ; 2685 } 2686 #pragma omp parallel for 2687 for (int i = 0; i < 10; ++i) { 2688 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2689 for (int j = 0; j < 10; ++j) 2690 ; 2691 } 2692 #pragma omp parallel for 2693 for (int i = 0; i < 10; ++i) { 2694 #pragma omp target teams // OK 2695 a++; 2696 } 2697 #pragma omp parallel for 2698 for (int i = 0; i < 10; ++i) { 2699 #pragma omp target teams distribute // OK 2700 for (int j = 0; j < 10; ++j) 2701 ; 2702 } 2703 #pragma omp parallel for 2704 for (int i = 0; i < 10; ++i) { 2705 #pragma omp target teams distribute parallel for // OK 2706 for (int j = 0; j < 10; ++j) 2707 ; 2708 } 2709 #pragma omp parallel for 2710 for (int i = 0; i < 10; ++i) { 2711 #pragma omp target teams distribute parallel for simd // OK 2712 for (int j = 0; j < 10; ++j) 2713 ; 2714 } 2715 #pragma omp parallel for 2716 for (int i = 0; i < 10; ++i) { 2717 #pragma omp target teams distribute simd // OK 2718 for (int j = 0; j < 10; ++j) 2719 ; 2720 } 2721 2722 // PARALLEL FOR SIMD DIRECTIVE 2723 #pragma omp parallel for simd 2724 for (int i = 0; i < 10; ++i) { 2725 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2726 for (int i = 0; i < 10; ++i) 2727 ; 2728 } 2729 #pragma omp parallel for simd 2730 for (int i = 0; i < 10; ++i) { 2731 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2732 for (int i = 0; i < 10; ++i) 2733 ; 2734 } 2735 #pragma omp parallel for simd 2736 for (int i = 0; i < 10; ++i) { 2737 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2738 for (int i = 0; i < 10; ++i) 2739 ; 2740 } 2741 #pragma omp parallel for simd 2742 for (int i = 0; i < 10; ++i) { 2743 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2744 for (int i = 0; i < 10; ++i) 2745 ; 2746 } 2747 #pragma omp parallel for simd 2748 for (int i = 0; i < 10; ++i) { 2749 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2750 { 2751 bar(); 2752 } 2753 } 2754 #pragma omp parallel for simd 2755 for (int i = 0; i < 10; ++i) { 2756 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2757 { 2758 bar(); 2759 } 2760 } 2761 #pragma omp parallel for simd 2762 for (int i = 0; i < 10; ++i) { 2763 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2764 { 2765 bar(); 2766 } 2767 } 2768 2769 #pragma omp parallel for simd 2770 for (int i = 0; i < 10; ++i) { 2771 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2772 { 2773 bar(); 2774 } 2775 } 2776 2777 #pragma omp parallel for simd 2778 for (int i = 0; i < 10; ++i) { 2779 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2780 { 2781 bar(); 2782 } 2783 } 2784 2785 #pragma omp parallel for simd 2786 for (int i = 0; i < 10; ++i) { 2787 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2788 { 2789 #pragma omp single 2790 { 2791 bar(); 2792 } 2793 #pragma omp for 2794 for (int i = 0; i < 10; ++i) 2795 ; 2796 #pragma omp for simd 2797 for (int i = 0; i < 10; ++i) 2798 ; 2799 #pragma omp sections 2800 { 2801 bar(); 2802 } 2803 } 2804 } 2805 #pragma omp parallel for simd 2806 for (int i = 0; i < 10; ++i) { 2807 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2808 for (int i = 0; i < 10; ++i) 2809 ; 2810 } 2811 #pragma omp parallel for simd 2812 for (int i = 0; i < 10; ++i) { 2813 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2814 for (int i = 0; i < 10; ++i) 2815 ; 2816 } 2817 #pragma omp parallel for simd 2818 for (int i = 0; i < 10; ++i) { 2819 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2820 { 2821 bar(); 2822 } 2823 } 2824 #pragma omp parallel for simd 2825 for (int i = 0; i < 10; ++i) { 2826 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2827 { 2828 bar(); 2829 } 2830 } 2831 #pragma omp parallel for simd 2832 for (int i = 0; i < 10; ++i) { 2833 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2834 bar(); 2835 } 2836 #pragma omp parallel for simd 2837 for (int i = 0; i < 10; ++i) { 2838 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2839 bar(); 2840 } 2841 #pragma omp parallel for simd 2842 for (int i = 0; i < 10; ++i) { 2843 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2844 bar(); 2845 } 2846 #pragma omp parallel for simd 2847 for (int i = 0; i < 10; ++i) { 2848 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2849 bar(); 2850 } 2851 #pragma omp parallel for simd 2852 for (int i = 0; i < 10; ++i) { 2853 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2854 bar(); 2855 } 2856 #pragma omp parallel for simd 2857 for (int i = 0; i < 10; ++i) { 2858 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2859 bar(); 2860 } 2861 #pragma omp parallel for simd 2862 for (int i = 0; i < 10; ++i) { 2863 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 2864 ++a; 2865 } 2866 #pragma omp parallel for simd 2867 for (int i = 0; i < 10; ++i) { 2868 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2869 ++a; 2870 } 2871 #pragma omp parallel for simd 2872 for (int i = 0; i < 10; ++i) { 2873 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2874 ++a; 2875 } 2876 #pragma omp parallel for simd 2877 for (int i = 0; i < 10; ++i) { 2878 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2879 for (int i = 0; i < 10; ++i) 2880 ; 2881 } 2882 #pragma omp parallel for simd 2883 for (int i = 0; i < 10; ++i) { 2884 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2885 ++a; 2886 } 2887 #pragma omp parallel for simd 2888 for (int i = 0; i < 10; ++i) { 2889 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2890 ++a; 2891 } 2892 #pragma omp parallel for simd 2893 for (int i = 0; i < 10; ++i) { 2894 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2895 ++a; 2896 } 2897 #pragma omp parallel for simd 2898 for (int i = 0; i < 10; ++i) { 2899 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2900 for (int i = 0; i < 10; ++i) 2901 ++a; 2902 } 2903 #pragma omp parallel for simd 2904 for (int i = 0; i < 10; ++i) { 2905 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2906 for (int j = 0; j < 10; ++j) 2907 ; 2908 } 2909 #pragma omp parallel for simd 2910 for (int i = 0; i < 10; ++i) { 2911 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2912 bar(); 2913 } 2914 #pragma omp parallel for simd 2915 for (int i = 0; i < 10; ++i) { 2916 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2917 for (int j = 0; j < 10; ++j) 2918 ; 2919 } 2920 #pragma omp parallel for simd 2921 for (int i = 0; i < 10; ++i) { 2922 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2923 for (int j = 0; j < 10; ++j) 2924 ; 2925 } 2926 #pragma omp parallel for simd 2927 for (int i = 0; i < 10; ++i) { 2928 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2929 for (int j = 0; j < 10; ++j) 2930 ; 2931 } 2932 #pragma omp parallel for simd 2933 for (int i = 0; i < 10; ++i) { 2934 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2935 for (int j = 0; j < 10; ++j) 2936 ; 2937 } 2938 #pragma omp parallel for simd 2939 for (int i = 0; i < 10; ++i) { 2940 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2941 for (int j = 0; j < 10; ++j) 2942 ; 2943 } 2944 #pragma omp parallel for simd 2945 for (int i = 0; i < 10; ++i) { 2946 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2947 for (int j = 0; j < 10; ++j) 2948 ; 2949 } 2950 #pragma omp parallel for simd 2951 for (int i = 0; i < 10; ++i) { 2952 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2953 for (int j = 0; j < 10; ++j) 2954 ; 2955 } 2956 #pragma omp parallel for simd 2957 for (int i = 0; i < 10; ++i) { 2958 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2959 for (int j = 0; j < 10; ++j) 2960 ; 2961 } 2962 #pragma omp parallel for simd 2963 for (int i = 0; i < 10; ++i) { 2964 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2965 a++; 2966 } 2967 #pragma omp parallel for simd 2968 for (int i = 0; i < 10; ++i) { 2969 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2970 for (int j = 0; j < 10; ++j) 2971 ; 2972 } 2973 #pragma omp parallel for simd 2974 for (int i = 0; i < 10; ++i) { 2975 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2976 for (int j = 0; j < 10; ++j) 2977 ; 2978 } 2979 #pragma omp parallel for simd 2980 for (int i = 0; i < 10; ++i) { 2981 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2982 for (int j = 0; j < 10; ++j) 2983 ; 2984 } 2985 #pragma omp parallel for simd 2986 for (int i = 0; i < 10; ++i) { 2987 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2988 for (int j = 0; j < 10; ++j) 2989 ; 2990 } 2991 2992 // PARALLEL MASTER DIRECTIVE 2993 #pragma omp parallel master 2994 { 2995 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 2996 for (int i = 0; i < 10; ++i) 2997 ; 2998 } 2999 #pragma omp parallel master 3000 { 3001 #pragma omp simd 3002 for (int i = 0; i < 10; ++i) 3003 ; 3004 } 3005 #pragma omp parallel master 3006 { 3007 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3008 for (int i = 0; i < 10; ++i) 3009 ; 3010 } 3011 #pragma omp parallel master 3012 { 3013 #pragma omp parallel 3014 for (int i = 0; i < 10; ++i) 3015 ; 3016 } 3017 #pragma omp parallel master 3018 { 3019 #pragma omp single // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3020 { 3021 bar(); 3022 } 3023 } 3024 #pragma omp parallel master 3025 { 3026 #pragma omp master // OK, though second 'master' is redundant 3027 { 3028 bar(); 3029 } 3030 } 3031 #pragma omp parallel master 3032 { 3033 #pragma omp critical 3034 { 3035 bar(); 3036 } 3037 } 3038 #pragma omp parallel master 3039 { 3040 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3041 { 3042 bar(); 3043 } 3044 } 3045 #pragma omp parallel master 3046 { 3047 #pragma omp parallel 3048 { 3049 #pragma omp parallel master // OK 3050 { 3051 bar(); 3052 } 3053 #pragma omp for // OK 3054 for (int i = 0; i < 10; ++i) 3055 ; 3056 #pragma omp for simd // OK 3057 for (int i = 0; i < 10; ++i) 3058 ; 3059 #pragma omp sections // OK 3060 { 3061 bar(); 3062 } 3063 } 3064 } 3065 #pragma omp parallel master 3066 { 3067 #pragma omp parallel master // OK 3068 { 3069 bar(); 3070 } 3071 #pragma omp parallel 3072 { 3073 #pragma omp for // OK 3074 for (int i = 0; i < 10; ++i) 3075 ; 3076 #pragma omp for simd // OK 3077 for (int i = 0; i < 10; ++i) 3078 ; 3079 #pragma omp sections // OK 3080 { 3081 bar(); 3082 } 3083 } 3084 } 3085 #pragma omp parallel master 3086 { 3087 #pragma omp parallel for 3088 for (int i = 0; i < 10; ++i) 3089 ; 3090 } 3091 #pragma omp parallel master 3092 { 3093 #pragma omp parallel for simd 3094 for (int i = 0; i < 10; ++i) 3095 ; 3096 } 3097 #pragma omp parallel master 3098 { 3099 #pragma omp parallel sections 3100 { 3101 bar(); 3102 } 3103 } 3104 #pragma omp parallel master 3105 { 3106 #pragma omp task 3107 { 3108 bar(); 3109 } 3110 } 3111 #pragma omp parallel master 3112 { 3113 #pragma omp taskyield 3114 bar(); 3115 } 3116 #pragma omp parallel master 3117 { 3118 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3119 bar(); 3120 } 3121 #pragma omp parallel master 3122 { 3123 #pragma omp taskwait 3124 bar(); 3125 } 3126 #pragma omp parallel master 3127 { 3128 #pragma omp flush 3129 bar(); 3130 } 3131 #pragma omp parallel master 3132 { 3133 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3134 bar(); 3135 } 3136 #pragma omp parallel master 3137 { 3138 #pragma omp atomic 3139 ++a; 3140 } 3141 #pragma omp parallel master 3142 { 3143 #pragma omp target 3144 ++a; 3145 } 3146 #pragma omp parallel master 3147 { 3148 #pragma omp target parallel 3149 ++a; 3150 } 3151 #pragma omp parallel master 3152 { 3153 #pragma omp target parallel for 3154 for (int i = 0; i < 10; ++i) 3155 ; 3156 } 3157 #pragma omp parallel master 3158 { 3159 #pragma omp target enter data map(to: a) 3160 ++a; 3161 } 3162 #pragma omp parallel master 3163 { 3164 #pragma omp target exit data map(from: a) 3165 ++a; 3166 } 3167 #pragma omp parallel master 3168 { 3169 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3170 ++a; 3171 } 3172 #pragma omp parallel master 3173 { 3174 #pragma omp taskloop 3175 for (int i = 0; i < 10; ++i) 3176 ++a; 3177 } 3178 #pragma omp parallel master 3179 { 3180 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3181 for (int i = 0; i < 10; ++i) 3182 ; 3183 } 3184 #pragma omp parallel master 3185 { 3186 #pragma omp target update to(a) 3187 bar(); 3188 } 3189 #pragma omp parallel master 3190 { 3191 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3192 for (int i = 0; i < 10; ++i) 3193 ; 3194 } 3195 #pragma omp parallel master 3196 { 3197 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3198 for (int i = 0; i < 10; ++i) 3199 ; 3200 } 3201 #pragma omp parallel master 3202 { 3203 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3204 for (int i = 0; i < 10; ++i) 3205 ; 3206 } 3207 #pragma omp parallel master 3208 { 3209 #pragma omp target simd // OK 3210 for (int i = 0; i < 10; ++i) 3211 ; 3212 } 3213 #pragma omp parallel master 3214 { 3215 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3216 for (int i = 0; i < 10; ++i) 3217 ; 3218 } 3219 #pragma omp parallel master 3220 { 3221 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3222 for (int i = 0; i < 10; ++i) 3223 ; 3224 } 3225 #pragma omp parallel master 3226 { 3227 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3228 for (int i = 0; i < 10; ++i) 3229 ; 3230 } 3231 #pragma omp parallel master 3232 { 3233 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3234 for (int i = 0; i < 10; ++i) 3235 ; 3236 } 3237 #pragma omp parallel master 3238 { 3239 #pragma omp target teams // OK 3240 a++; 3241 } 3242 #pragma omp parallel master 3243 { 3244 #pragma omp target teams distribute // OK 3245 for (int i = 0; i < 10; ++i) 3246 ; 3247 } 3248 #pragma omp parallel master 3249 { 3250 #pragma omp target teams distribute parallel for // OK 3251 for (int i = 0; i < 10; ++i) 3252 ; 3253 } 3254 #pragma omp parallel master 3255 { 3256 #pragma omp target teams distribute parallel for simd // OK 3257 for (int i = 0; i < 10; ++i) 3258 ; 3259 } 3260 #pragma omp parallel master 3261 { 3262 #pragma omp target teams distribute simd // OK 3263 for (int i = 0; i < 10; ++i) 3264 ; 3265 } 3266 3267 // PARALLEL SECTIONS DIRECTIVE 3268 #pragma omp parallel sections 3269 { 3270 #pragma omp for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3271 for (int i = 0; i < 10; ++i) 3272 ; 3273 } 3274 #pragma omp parallel sections 3275 { 3276 #pragma omp simd 3277 for (int i = 0; i < 10; ++i) 3278 ; 3279 } 3280 #pragma omp parallel sections 3281 { 3282 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3283 for (int i = 0; i < 10; ++i) 3284 ; 3285 } 3286 #pragma omp parallel sections 3287 { 3288 #pragma omp parallel 3289 for (int i = 0; i < 10; ++i) 3290 ; 3291 } 3292 #pragma omp parallel sections 3293 { 3294 #pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3295 { 3296 bar(); 3297 } 3298 } 3299 #pragma omp parallel sections 3300 { 3301 #pragma omp section 3302 { 3303 bar(); 3304 } 3305 } 3306 #pragma omp parallel sections 3307 { 3308 #pragma omp section 3309 { 3310 #pragma omp single // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3311 bar(); 3312 } 3313 } 3314 #pragma omp parallel sections 3315 { 3316 #pragma omp section 3317 { 3318 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 3319 bar(); 3320 } 3321 } 3322 #pragma omp parallel sections 3323 { 3324 #pragma omp section 3325 { 3326 #pragma omp critical 3327 bar(); 3328 } 3329 } 3330 #pragma omp parallel sections 3331 { 3332 #pragma omp parallel 3333 { 3334 #pragma omp single // OK 3335 { 3336 bar(); 3337 } 3338 #pragma omp for // OK 3339 for (int i = 0; i < 10; ++i) 3340 ; 3341 #pragma omp for simd // OK 3342 for (int i = 0; i < 10; ++i) 3343 ; 3344 #pragma omp sections // OK 3345 { 3346 bar(); 3347 } 3348 } 3349 } 3350 #pragma omp parallel sections 3351 { 3352 #pragma omp parallel for 3353 for (int i = 0; i < 10; ++i) 3354 ; 3355 } 3356 #pragma omp parallel sections 3357 { 3358 #pragma omp parallel for simd 3359 for (int i = 0; i < 10; ++i) 3360 ; 3361 } 3362 #pragma omp parallel sections 3363 { 3364 #pragma omp parallel sections 3365 { 3366 bar(); 3367 } 3368 } 3369 #pragma omp parallel sections 3370 { 3371 #pragma omp task 3372 { 3373 bar(); 3374 } 3375 } 3376 #pragma omp parallel sections 3377 { 3378 #pragma omp taskyield 3379 } 3380 #pragma omp parallel sections 3381 { 3382 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3383 } 3384 #pragma omp parallel sections 3385 { 3386 #pragma omp taskwait 3387 } 3388 #pragma omp parallel sections 3389 { 3390 #pragma omp flush 3391 } 3392 #pragma omp parallel sections 3393 { 3394 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3395 bar(); 3396 } 3397 #pragma omp parallel sections 3398 { 3399 #pragma omp atomic 3400 ++a; 3401 } 3402 #pragma omp parallel sections 3403 { 3404 #pragma omp target 3405 ++a; 3406 } 3407 #pragma omp parallel sections 3408 { 3409 #pragma omp target parallel 3410 ++a; 3411 } 3412 #pragma omp parallel sections 3413 { 3414 #pragma omp target parallel for 3415 for (int i = 0; i < 10; ++i) 3416 ; 3417 } 3418 #pragma omp parallel sections 3419 { 3420 #pragma omp target enter data map(to: a) 3421 } 3422 #pragma omp parallel sections 3423 { 3424 #pragma omp target exit data map(from: a) 3425 } 3426 #pragma omp parallel sections 3427 { 3428 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3429 ++a; 3430 } 3431 #pragma omp parallel sections 3432 { 3433 #pragma omp taskloop 3434 for (int i = 0; i < 10; ++i) 3435 ++a; 3436 } 3437 #pragma omp parallel sections 3438 { 3439 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3440 for (int i = 0; i < 10; ++i) 3441 ; 3442 } 3443 #pragma omp parallel sections 3444 { 3445 #pragma omp target update to(a) 3446 } 3447 #pragma omp parallel sections 3448 { 3449 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3450 for (int i = 0; i < 10; ++i) 3451 ; 3452 } 3453 #pragma omp parallel sections 3454 { 3455 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3456 for (int i = 0; i < 10; ++i) 3457 ; 3458 } 3459 #pragma omp parallel sections 3460 { 3461 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3462 for (int i = 0; i < 10; ++i) 3463 ; 3464 } 3465 #pragma omp parallel sections 3466 { 3467 #pragma omp target simd // OK 3468 for (int i = 0; i < 10; ++i) 3469 ; 3470 } 3471 #pragma omp parallel sections 3472 { 3473 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3474 for (int i = 0; i < 10; ++i) 3475 ; 3476 } 3477 #pragma omp parallel sections 3478 { 3479 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3480 for (int i = 0; i < 10; ++i) 3481 ; 3482 } 3483 #pragma omp parallel sections 3484 { 3485 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3486 for (int i = 0; i < 10; ++i) 3487 ; 3488 } 3489 #pragma omp parallel sections 3490 { 3491 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3492 for (int i = 0; i < 10; ++i) 3493 ; 3494 } 3495 #pragma omp parallel sections 3496 { 3497 #pragma omp target teams // OK 3498 a++; 3499 } 3500 #pragma omp parallel sections 3501 { 3502 #pragma omp target teams distribute // OK 3503 for (int i = 0; i < 10; ++i) 3504 ; 3505 } 3506 #pragma omp parallel sections 3507 { 3508 #pragma omp target teams distribute parallel for // OK 3509 for (int i = 0; i < 10; ++i) 3510 ; 3511 } 3512 #pragma omp parallel sections 3513 { 3514 #pragma omp target teams distribute parallel for simd // OK 3515 for (int i = 0; i < 10; ++i) 3516 ; 3517 } 3518 #pragma omp parallel sections 3519 { 3520 #pragma omp target teams distribute simd // OK 3521 for (int i = 0; i < 10; ++i) 3522 ; 3523 } 3524 3525 // TASK DIRECTIVE 3526 #pragma omp task 3527 #pragma omp for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3528 for (int i = 0; i < 10; ++i) 3529 ; 3530 #pragma omp task 3531 #pragma omp simd 3532 for (int i = 0; i < 10; ++i) 3533 ; 3534 #pragma omp task 3535 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3536 for (int i = 0; i < 10; ++i) 3537 ; 3538 #pragma omp task 3539 #pragma omp sections // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3540 { 3541 bar(); 3542 } 3543 #pragma omp task 3544 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3545 { 3546 bar(); 3547 } 3548 #pragma omp task 3549 #pragma omp single // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3550 bar(); 3551 #pragma omp task 3552 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3553 bar(); 3554 #pragma omp task 3555 #pragma omp critical 3556 bar(); 3557 3558 #pragma omp task 3559 #pragma omp parallel for 3560 for (int i = 0; i < 10; ++i) 3561 ; 3562 #pragma omp task 3563 #pragma omp parallel for simd 3564 for (int i = 0; i < 10; ++i) 3565 ; 3566 #pragma omp task 3567 #pragma omp parallel sections 3568 { 3569 bar(); 3570 } 3571 #pragma omp task 3572 #pragma omp task 3573 { 3574 bar(); 3575 } 3576 #pragma omp task 3577 { 3578 #pragma omp taskyield 3579 bar(); 3580 } 3581 #pragma omp task 3582 { 3583 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3584 bar(); 3585 } 3586 #pragma omp task 3587 { 3588 #pragma omp taskwait 3589 bar(); 3590 } 3591 #pragma omp task 3592 { 3593 #pragma omp flush 3594 bar(); 3595 } 3596 #pragma omp task 3597 { 3598 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3599 bar(); 3600 } 3601 #pragma omp task 3602 { 3603 #pragma omp atomic 3604 ++a; 3605 } 3606 #pragma omp task 3607 { 3608 #pragma omp target 3609 ++a; 3610 } 3611 #pragma omp task 3612 { 3613 #pragma omp target parallel 3614 ++a; 3615 } 3616 #pragma omp task 3617 #pragma omp target parallel for 3618 for (int i = 0; i < 10; ++i) 3619 ; 3620 #pragma omp task 3621 { 3622 #pragma omp target enter data map(to: a) 3623 ++a; 3624 } 3625 #pragma omp task 3626 { 3627 #pragma omp target exit data map(from: a) 3628 ++a; 3629 } 3630 #pragma omp task 3631 { 3632 #pragma omp teams // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3633 ++a; 3634 } 3635 #pragma omp task 3636 { 3637 #pragma omp taskloop 3638 for (int i = 0; i < 10; ++i) 3639 ++a; 3640 } 3641 #pragma omp task 3642 { 3643 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3644 for (int i = 0; i < 10; ++i) 3645 ; 3646 } 3647 #pragma omp task 3648 { 3649 #pragma omp target update to(a) 3650 bar(); 3651 } 3652 #pragma omp task 3653 { 3654 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3655 for (int i = 0; i < 10; ++i) 3656 ; 3657 } 3658 #pragma omp task 3659 { 3660 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3661 for (int i = 0; i < 10; ++i) 3662 ; 3663 } 3664 #pragma omp task 3665 { 3666 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3667 for (int i = 0; i < 10; ++i) 3668 ; 3669 } 3670 #pragma omp task 3671 { 3672 #pragma omp target simd // OK 3673 for (int i = 0; i < 10; ++i) 3674 ; 3675 } 3676 #pragma omp task 3677 { 3678 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3679 for (int i = 0; i < 10; ++i) 3680 ; 3681 } 3682 #pragma omp task 3683 { 3684 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3685 for (int i = 0; i < 10; ++i) 3686 ; 3687 } 3688 #pragma omp task 3689 { 3690 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3691 for (int i = 0; i < 10; ++i) 3692 ; 3693 } 3694 #pragma omp task 3695 { 3696 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3697 for (int i = 0; i < 10; ++i) 3698 ; 3699 } 3700 #pragma omp task 3701 { 3702 #pragma omp target teams // OK 3703 a++; 3704 } 3705 #pragma omp task 3706 { 3707 #pragma omp target teams distribute // OK 3708 for (int i = 0; i < 10; ++i) 3709 ; 3710 } 3711 #pragma omp task 3712 { 3713 #pragma omp target teams distribute parallel for // OK 3714 for (int i = 0; i < 10; ++i) 3715 ; 3716 } 3717 #pragma omp task 3718 { 3719 #pragma omp target teams distribute parallel for simd // OK 3720 for (int i = 0; i < 10; ++i) 3721 ; 3722 } 3723 #pragma omp task 3724 { 3725 #pragma omp target teams distribute simd // OK 3726 for (int i = 0; i < 10; ++i) 3727 ; 3728 } 3729 3730 // ORDERED DIRECTIVE 3731 #pragma omp ordered 3732 { 3733 #pragma omp for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 3734 for (int i = 0; i < 10; ++i) 3735 ; 3736 } 3737 #pragma omp ordered 3738 { 3739 #pragma omp simd 3740 for (int i = 0; i < 10; ++i) 3741 ; 3742 } 3743 #pragma omp ordered 3744 { 3745 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 3746 for (int i = 0; i < 10; ++i) 3747 ; 3748 } 3749 #pragma omp ordered 3750 { 3751 #pragma omp parallel 3752 for (int i = 0; i < 10; ++i) 3753 ; 3754 } 3755 #pragma omp ordered 3756 { 3757 #pragma omp single // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 3758 { 3759 bar(); 3760 } 3761 } 3762 #pragma omp ordered 3763 { 3764 #pragma omp master // OK, though second 'ordered' is redundant 3765 { 3766 bar(); 3767 } 3768 } 3769 #pragma omp ordered 3770 { 3771 #pragma omp critical 3772 { 3773 bar(); 3774 } 3775 } 3776 #pragma omp ordered 3777 { 3778 #pragma omp sections // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 3779 { 3780 bar(); 3781 } 3782 } 3783 #pragma omp ordered 3784 { 3785 #pragma omp parallel for ordered 3786 for (int j = 0; j < 10; ++j) { 3787 #pragma omp ordered // OK 3788 { 3789 bar(); 3790 } 3791 } 3792 } 3793 #pragma omp ordered 3794 { 3795 #pragma omp parallel for simd ordered 3796 for (int j = 0; j < 10; ++j) { 3797 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3798 { 3799 bar(); 3800 } 3801 } 3802 } 3803 #pragma omp ordered 3804 { 3805 #pragma omp parallel for simd ordered 3806 for (int j = 0; j < 10; ++j) { 3807 #pragma omp ordered simd 3808 { 3809 bar(); 3810 } 3811 } 3812 } 3813 #pragma omp ordered 3814 { 3815 #pragma omp parallel for 3816 for (int i = 0; i < 10; ++i) 3817 ; 3818 } 3819 #pragma omp ordered 3820 { 3821 #pragma omp parallel for simd 3822 for (int i = 0; i < 10; ++i) 3823 ; 3824 } 3825 #pragma omp ordered 3826 { 3827 #pragma omp parallel sections 3828 { 3829 bar(); 3830 } 3831 } 3832 #pragma omp ordered 3833 { 3834 #pragma omp task 3835 { 3836 bar(); 3837 } 3838 } 3839 #pragma omp ordered 3840 { 3841 #pragma omp taskyield 3842 bar(); 3843 } 3844 #pragma omp ordered 3845 { 3846 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3847 bar(); 3848 } 3849 #pragma omp ordered 3850 { 3851 #pragma omp taskwait 3852 bar(); 3853 } 3854 #pragma omp ordered 3855 { 3856 #pragma omp flush 3857 bar(); 3858 } 3859 #pragma omp ordered 3860 { 3861 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 3862 bar(); 3863 } 3864 #pragma omp ordered 3865 { 3866 #pragma omp atomic 3867 ++a; 3868 } 3869 #pragma omp ordered 3870 { 3871 #pragma omp target 3872 ++a; 3873 } 3874 #pragma omp ordered 3875 { 3876 #pragma omp target parallel 3877 ++a; 3878 } 3879 #pragma omp ordered 3880 { 3881 #pragma omp target parallel for ordered 3882 for (int j = 0; j < 10; ++j) { 3883 #pragma omp ordered // OK 3884 { 3885 bar(); 3886 } 3887 } 3888 } 3889 #pragma omp ordered 3890 { 3891 #pragma omp target parallel for 3892 for (int i = 0; i < 10; ++i) 3893 ; 3894 } 3895 #pragma omp ordered 3896 { 3897 #pragma omp target enter data map(to: a) 3898 ++a; 3899 } 3900 #pragma omp ordered 3901 { 3902 #pragma omp target exit data map(from: a) 3903 ++a; 3904 } 3905 #pragma omp ordered 3906 { 3907 #pragma omp teams // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 3908 ++a; 3909 } 3910 #pragma omp ordered 3911 { 3912 #pragma omp taskloop 3913 for (int i = 0; i < 10; ++i) 3914 ++a; 3915 } 3916 #pragma omp ordered 3917 { 3918 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 3919 for (int i = 0; i < 10; ++i) 3920 ; 3921 } 3922 #pragma omp ordered 3923 { 3924 bar(); 3925 #pragma omp target update to(a) 3926 bar(); 3927 } 3928 #pragma omp ordered 3929 { 3930 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 3931 for (int i = 0; i < 10; ++i) 3932 ; 3933 } 3934 #pragma omp ordered 3935 { 3936 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 3937 for (int i = 0; i < 10; ++i) 3938 ; 3939 } 3940 #pragma omp ordered 3941 { 3942 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 3943 for (int i = 0; i < 10; ++i) 3944 ; 3945 } 3946 #pragma omp ordered 3947 { 3948 #pragma omp target simd // OK 3949 for (int i = 0; i < 10; ++i) 3950 ; 3951 } 3952 #pragma omp ordered 3953 { 3954 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 3955 for (int i = 0; i < 10; ++i) 3956 ; 3957 } 3958 #pragma omp ordered 3959 { 3960 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 3961 for (int i = 0; i < 10; ++i) 3962 ; 3963 } 3964 #pragma omp ordered 3965 { 3966 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3967 for (int i = 0; i < 10; ++i) 3968 ; 3969 } 3970 #pragma omp ordered 3971 { 3972 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3973 for (int i = 0; i < 10; ++i) 3974 ; 3975 } 3976 #pragma omp ordered 3977 { 3978 #pragma omp target teams // OK 3979 a++; 3980 } 3981 #pragma omp ordered 3982 { 3983 #pragma omp target teams distribute // OK 3984 for (int i = 0; i < 10; ++i) 3985 ; 3986 } 3987 #pragma omp ordered 3988 { 3989 #pragma omp target teams distribute parallel for // OK 3990 for (int i = 0; i < 10; ++i) 3991 ; 3992 } 3993 #pragma omp ordered 3994 { 3995 #pragma omp target teams distribute parallel for simd // OK 3996 for (int i = 0; i < 10; ++i) 3997 ; 3998 } 3999 #pragma omp ordered 4000 { 4001 #pragma omp target teams distribute simd // OK 4002 for (int i = 0; i < 10; ++i) 4003 ; 4004 } 4005 4006 // ATOMIC DIRECTIVE 4007 #pragma omp atomic 4008 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4009 // expected-note@+1 {{expected an expression statement}} 4010 { 4011 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4012 for (int i = 0; i < 10; ++i) 4013 ; 4014 } 4015 #pragma omp atomic 4016 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4017 // expected-note@+1 {{expected an expression statement}} 4018 { 4019 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4020 for (int i = 0; i < 10; ++i) 4021 ; 4022 } 4023 #pragma omp atomic 4024 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4025 // expected-note@+1 {{expected an expression statement}} 4026 { 4027 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4028 for (int i = 0; i < 10; ++i) 4029 ; 4030 } 4031 #pragma omp atomic 4032 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4033 // expected-note@+1 {{expected an expression statement}} 4034 { 4035 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4036 for (int i = 0; i < 10; ++i) 4037 ; 4038 } 4039 #pragma omp atomic 4040 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4041 // expected-note@+1 {{expected an expression statement}} 4042 { 4043 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4044 { 4045 bar(); 4046 } 4047 } 4048 #pragma omp atomic 4049 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4050 // expected-note@+1 {{expected an expression statement}} 4051 { 4052 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4053 { 4054 bar(); 4055 } 4056 } 4057 #pragma omp atomic 4058 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4059 // expected-note@+1 {{expected an expression statement}} 4060 { 4061 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4062 { 4063 bar(); 4064 } 4065 } 4066 #pragma omp atomic 4067 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4068 // expected-note@+1 {{expected an expression statement}} 4069 { 4070 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4071 { 4072 bar(); 4073 } 4074 } 4075 #pragma omp atomic 4076 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4077 // expected-note@+1 {{expected an expression statement}} 4078 { 4079 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4080 { 4081 bar(); 4082 } 4083 } 4084 #pragma omp atomic 4085 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4086 // expected-note@+1 {{expected an expression statement}} 4087 { 4088 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4089 { 4090 bar(); 4091 } 4092 } 4093 #pragma omp atomic 4094 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4095 // expected-note@+1 {{expected an expression statement}} 4096 { 4097 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4098 for (int i = 0; i < 10; ++i) 4099 ; 4100 } 4101 #pragma omp atomic 4102 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4103 // expected-note@+1 {{expected an expression statement}} 4104 { 4105 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4106 for (int i = 0; i < 10; ++i) 4107 ; 4108 } 4109 #pragma omp atomic 4110 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4111 // expected-note@+1 {{expected an expression statement}} 4112 { 4113 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4114 { 4115 bar(); 4116 } 4117 } 4118 #pragma omp atomic 4119 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4120 // expected-note@+1 {{expected an expression statement}} 4121 { 4122 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4123 { 4124 bar(); 4125 } 4126 } 4127 #pragma omp atomic 4128 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4129 // expected-note@+1 {{expected an expression statement}} 4130 { 4131 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4132 bar(); 4133 } 4134 #pragma omp atomic 4135 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4136 // expected-note@+1 {{expected an expression statement}} 4137 { 4138 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4139 bar(); 4140 } 4141 #pragma omp atomic 4142 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4143 // expected-note@+1 {{expected an expression statement}} 4144 { 4145 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4146 bar(); 4147 } 4148 #pragma omp atomic 4149 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4150 // expected-note@+1 {{expected an expression statement}} 4151 { 4152 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4153 bar(); 4154 } 4155 #pragma omp atomic 4156 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4157 // expected-note@+1 {{expected an expression statement}} 4158 { 4159 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4160 bar(); 4161 } 4162 #pragma omp atomic 4163 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4164 // expected-note@+1 {{expected an expression statement}} 4165 { 4166 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4167 ++a; 4168 } 4169 #pragma omp atomic 4170 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4171 // expected-note@+1 {{expected an expression statement}} 4172 { 4173 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4174 ++a; 4175 } 4176 #pragma omp atomic 4177 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4178 // expected-note@+1 {{expected an expression statement}} 4179 { 4180 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4181 ++a; 4182 } 4183 #pragma omp atomic 4184 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4185 // expected-note@+1 {{expected an expression statement}} 4186 { 4187 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4188 for (int i = 0; i < 10; ++i) 4189 ; 4190 } 4191 #pragma omp atomic 4192 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4193 // expected-note@+1 {{expected an expression statement}} 4194 { 4195 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4196 ++a; 4197 } 4198 #pragma omp atomic 4199 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4200 // expected-note@+1 {{expected an expression statement}} 4201 { 4202 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4203 ++a; 4204 } 4205 #pragma omp atomic 4206 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4207 // expected-note@+1 {{expected an expression statement}} 4208 { 4209 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4210 ++a; 4211 } 4212 #pragma omp atomic 4213 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4214 // expected-note@+1 {{expected an expression statement}} 4215 { 4216 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4217 for (int i = 0; i < 10; ++i) 4218 ++a; 4219 } 4220 #pragma omp atomic 4221 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4222 // expected-note@+1 {{expected an expression statement}} 4223 { 4224 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4225 for (int i = 0; i < 10; ++i) 4226 ; 4227 } 4228 #pragma omp atomic 4229 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4230 // expected-note@+1 {{expected an expression statement}} 4231 { 4232 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4233 bar(); 4234 } 4235 #pragma omp atomic 4236 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4237 // expected-note@+1 {{expected an expression statement}} 4238 { 4239 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4240 for (int i = 0; i < 10; ++i) 4241 ; 4242 } 4243 #pragma omp atomic 4244 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4245 // expected-note@+1 {{expected an expression statement}} 4246 { 4247 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4248 for (int i = 0; i < 10; ++i) 4249 ; 4250 } 4251 #pragma omp atomic 4252 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4253 // expected-note@+1 {{expected an expression statement}} 4254 { 4255 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4256 for (int i = 0; i < 10; ++i) 4257 ; 4258 } 4259 #pragma omp atomic 4260 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4261 // expected-note@+1 {{expected an expression statement}} 4262 { 4263 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4264 for (int i = 0; i < 10; ++i) 4265 ; 4266 } 4267 #pragma omp atomic 4268 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4269 // expected-note@+1 {{expected an expression statement}} 4270 { 4271 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4272 for (int i = 0; i < 10; ++i) 4273 ; 4274 } 4275 #pragma omp atomic 4276 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4277 // expected-note@+1 {{expected an expression statement}} 4278 { 4279 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4280 for (int i = 0; i < 10; ++i) 4281 ; 4282 } 4283 #pragma omp atomic 4284 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4285 // expected-note@+1 {{expected an expression statement}} 4286 { 4287 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4288 for (int i = 0; i < 10; ++i) 4289 ; 4290 } 4291 #pragma omp atomic 4292 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4293 // expected-note@+1 {{expected an expression statement}} 4294 { 4295 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4296 for (int i = 0; i < 10; ++i) 4297 ; 4298 } 4299 #pragma omp atomic 4300 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4301 // expected-note@+1 {{expected an expression statement}} 4302 { 4303 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4304 a++; 4305 } 4306 #pragma omp atomic 4307 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4308 // expected-note@+1 {{expected an expression statement}} 4309 { 4310 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4311 for (int i = 0; i < 10; ++i) 4312 ; 4313 } 4314 #pragma omp atomic 4315 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4316 // expected-note@+1 {{expected an expression statement}} 4317 { 4318 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4319 for (int i = 0; i < 10; ++i) 4320 ; 4321 } 4322 #pragma omp atomic 4323 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4324 // expected-note@+1 {{expected an expression statement}} 4325 { 4326 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4327 for (int i = 0; i < 10; ++i) 4328 ; 4329 } 4330 #pragma omp atomic 4331 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 4332 // expected-note@+1 {{expected an expression statement}} 4333 { 4334 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4335 for (int i = 0; i < 10; ++i) 4336 ; 4337 } 4338 4339 // TARGET DIRECTIVE 4340 #pragma omp target 4341 #pragma omp parallel 4342 bar(); 4343 #pragma omp target 4344 #pragma omp for 4345 for (int i = 0; i < 10; ++i) 4346 ; 4347 #pragma omp target 4348 #pragma omp simd 4349 for (int i = 0; i < 10; ++i) 4350 ; 4351 #pragma omp target 4352 #pragma omp for simd 4353 for (int i = 0; i < 10; ++i) 4354 ; 4355 #pragma omp target 4356 #pragma omp sections 4357 { 4358 bar(); 4359 } 4360 #pragma omp target 4361 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 4362 { 4363 bar(); 4364 } 4365 #pragma omp target 4366 #pragma omp single 4367 bar(); 4368 4369 #pragma omp target 4370 #pragma omp master 4371 { 4372 bar(); 4373 } 4374 #pragma omp target 4375 #pragma omp critical 4376 { 4377 bar(); 4378 } 4379 #pragma omp target 4380 #pragma omp parallel for 4381 for (int i = 0; i < 10; ++i) 4382 ; 4383 #pragma omp target 4384 #pragma omp parallel for simd 4385 for (int i = 0; i < 10; ++i) 4386 ; 4387 #pragma omp target 4388 #pragma omp parallel sections 4389 { 4390 bar(); 4391 } 4392 #pragma omp target 4393 #pragma omp task 4394 { 4395 bar(); 4396 } 4397 #pragma omp target 4398 { 4399 #pragma omp taskyield 4400 bar(); 4401 } 4402 #pragma omp target 4403 { 4404 #pragma omp barrier 4405 bar(); 4406 } 4407 #pragma omp target 4408 { 4409 #pragma omp taskwait 4410 bar(); 4411 } 4412 #pragma omp target 4413 { 4414 #pragma omp flush 4415 bar(); 4416 } 4417 #pragma omp target 4418 { 4419 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 4420 bar(); 4421 } 4422 #pragma omp target 4423 { 4424 #pragma omp atomic 4425 ++a; 4426 } 4427 #pragma omp target 4428 { 4429 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4430 ++a; 4431 } 4432 #pragma omp target 4433 { 4434 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4435 ++a; 4436 } 4437 #pragma omp target 4438 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4439 for (int i = 0; i < 10; ++i) 4440 ; 4441 #pragma omp target 4442 { 4443 #pragma omp teams 4444 ++a; 4445 } 4446 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4447 { 4448 #pragma omp teams // expected-note {{directive outside teams construct here}} 4449 ++a; 4450 #pragma omp teams // expected-note {{nested teams construct here}} 4451 ++a; 4452 } 4453 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4454 { 4455 ++a; // expected-note {{statement outside teams construct here}} 4456 #pragma omp teams // expected-note {{nested teams construct here}} 4457 ++a; 4458 } 4459 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4460 { 4461 while (0) // expected-note {{statement outside teams construct here}} 4462 #pragma omp teams // expected-note {{nested teams construct here}} 4463 ++a; 4464 } 4465 #pragma omp target 4466 { 4467 #pragma omp taskloop 4468 for (int i = 0; i < 10; ++i) 4469 ++a; 4470 } 4471 #pragma omp target 4472 { 4473 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 4474 for (int i = 0; i < 10; ++i) 4475 ; 4476 } 4477 #pragma omp target 4478 { 4479 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4480 } 4481 #pragma omp target 4482 { 4483 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4484 } 4485 #pragma omp target 4486 { 4487 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4488 } 4489 #pragma omp target 4490 { 4491 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 4492 for (int i = 0; i < 10; ++i) 4493 ; 4494 } 4495 #pragma omp target 4496 { 4497 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 4498 for (int i = 0; i < 10; ++i) 4499 ; 4500 } 4501 #pragma omp target 4502 { 4503 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 4504 for (int i = 0; i < 10; ++i) 4505 ; 4506 } 4507 #pragma omp target 4508 { 4509 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4510 for (int i = 0; i < 10; ++i) 4511 ; 4512 } 4513 #pragma omp target 4514 { 4515 #pragma omp teams distribute // OK 4516 for (int i = 0; i < 10; ++i) 4517 ; 4518 } 4519 #pragma omp target 4520 { 4521 #pragma omp teams distribute simd // OK 4522 for (int i = 0; i < 10; ++i) 4523 ; 4524 } 4525 #pragma omp target 4526 { 4527 #pragma omp teams distribute parallel for simd // OK 4528 for (int i = 0; i < 10; ++i) 4529 ; 4530 } 4531 #pragma omp target 4532 { 4533 #pragma omp teams distribute parallel for // OK 4534 for (int i = 0; i < 10; ++i) 4535 ; 4536 } 4537 #pragma omp target 4538 { 4539 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4540 for (int i = 0; i < 10; ++i) 4541 ; 4542 } 4543 #pragma omp target 4544 { 4545 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4546 for (int i = 0; i < 10; ++i) 4547 ; 4548 } 4549 #pragma omp target 4550 { 4551 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4552 for (int i = 0; i < 10; ++i) 4553 ; 4554 } 4555 #pragma omp target 4556 { 4557 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4558 for (int i = 0; i < 10; ++i) 4559 ; 4560 } 4561 #pragma omp target 4562 { 4563 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4564 for (int i = 0; i < 10; ++i) 4565 ; 4566 } 4567 4568 // TARGET PARALLEL DIRECTIVE 4569 #pragma omp target parallel 4570 #pragma omp parallel 4571 bar(); 4572 #pragma omp target parallel 4573 #pragma omp for 4574 for (int i = 0; i < 10; ++i) 4575 ; 4576 #pragma omp target parallel 4577 #pragma omp simd 4578 for (int i = 0; i < 10; ++i) 4579 ; 4580 #pragma omp target parallel 4581 #pragma omp for simd 4582 for (int i = 0; i < 10; ++i) 4583 ; 4584 #pragma omp target parallel 4585 #pragma omp sections 4586 { 4587 bar(); 4588 } 4589 #pragma omp target parallel 4590 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 4591 { 4592 bar(); 4593 } 4594 #pragma omp target parallel 4595 #pragma omp single 4596 bar(); 4597 4598 #pragma omp target parallel 4599 #pragma omp master 4600 { 4601 bar(); 4602 } 4603 #pragma omp target 4604 #pragma omp parallel master 4605 { 4606 bar(); 4607 } 4608 #pragma omp target parallel 4609 #pragma omp critical 4610 { 4611 bar(); 4612 } 4613 #pragma omp target parallel 4614 #pragma omp parallel for 4615 for (int i = 0; i < 10; ++i) 4616 ; 4617 #pragma omp target parallel 4618 #pragma omp parallel for simd 4619 for (int i = 0; i < 10; ++i) 4620 ; 4621 #pragma omp target parallel 4622 #pragma omp parallel sections 4623 { 4624 bar(); 4625 } 4626 #pragma omp target parallel 4627 #pragma omp task 4628 { 4629 bar(); 4630 } 4631 #pragma omp target parallel 4632 { 4633 #pragma omp taskyield 4634 bar(); 4635 } 4636 #pragma omp target parallel 4637 { 4638 #pragma omp barrier 4639 bar(); 4640 } 4641 #pragma omp target parallel 4642 { 4643 #pragma omp taskwait 4644 bar(); 4645 } 4646 #pragma omp target parallel 4647 { 4648 #pragma omp flush 4649 bar(); 4650 } 4651 #pragma omp target parallel 4652 { 4653 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 4654 bar(); 4655 } 4656 #pragma omp target parallel 4657 { 4658 #pragma omp atomic 4659 ++a; 4660 } 4661 #pragma omp target parallel 4662 { 4663 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 4664 ++a; 4665 } 4666 #pragma omp target parallel 4667 { 4668 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 4669 ++a; 4670 } 4671 #pragma omp target parallel 4672 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4673 for (int i = 0; i < 10; ++i) 4674 ; 4675 #pragma omp target parallel 4676 { 4677 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 4678 ++a; 4679 } 4680 #pragma omp target parallel 4681 { 4682 ++a; 4683 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 4684 ++a; 4685 } 4686 #pragma omp target parallel 4687 { 4688 #pragma omp taskloop 4689 for (int i = 0; i < 10; ++i) 4690 ++a; 4691 } 4692 #pragma omp target parallel 4693 { 4694 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 4695 for (int i = 0; i < 10; ++i) 4696 ; 4697 } 4698 #pragma omp target parallel 4699 { 4700 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4701 } 4702 #pragma omp target parallel 4703 { 4704 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4705 } 4706 #pragma omp target parallel 4707 { 4708 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4709 } 4710 #pragma omp target parallel 4711 { 4712 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 4713 for (int i = 0; i < 10; ++i) 4714 ; 4715 } 4716 #pragma omp target parallel 4717 { 4718 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 4719 for (int i = 0; i < 10; ++i) 4720 ; 4721 } 4722 #pragma omp target parallel 4723 { 4724 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 4725 for (int i = 0; i < 10; ++i) 4726 ; 4727 } 4728 #pragma omp target parallel 4729 { 4730 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4731 for (int i = 0; i < 10; ++i) 4732 ; 4733 } 4734 #pragma omp target parallel 4735 { 4736 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 4737 for (int i = 0; i < 10; ++i) 4738 ; 4739 } 4740 #pragma omp target parallel 4741 { 4742 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 4743 for (int i = 0; i < 10; ++i) 4744 ; 4745 } 4746 #pragma omp target parallel 4747 { 4748 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4749 for (int i = 0; i < 10; ++i) 4750 ; 4751 } 4752 #pragma omp target parallel 4753 { 4754 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4755 for (int i = 0; i < 10; ++i) 4756 ; 4757 } 4758 #pragma omp target parallel 4759 { 4760 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 4761 a++; 4762 } 4763 #pragma omp target parallel 4764 { 4765 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 4766 for (int i = 0; i < 10; ++i) 4767 ; 4768 } 4769 #pragma omp target parallel 4770 { 4771 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4772 for (int i = 0; i < 10; ++i) 4773 ; 4774 } 4775 #pragma omp target parallel 4776 { 4777 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4778 for (int i = 0; i < 10; ++i) 4779 ; 4780 } 4781 #pragma omp target parallel 4782 { 4783 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4784 for (int i = 0; i < 10; ++i) 4785 ; 4786 } 4787 4788 // TARGET PARALLEL FOR DIRECTIVE 4789 #pragma omp target parallel for 4790 for (int i = 0; i < 10; ++i) { 4791 #pragma omp for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 4792 for (int i = 0; i < 10; ++i) 4793 ; 4794 } 4795 #pragma omp target parallel for 4796 for (int i = 0; i < 10; ++i) { 4797 #pragma omp simd 4798 for (int i = 0; i < 10; ++i) 4799 ; 4800 } 4801 #pragma omp target parallel for 4802 for (int i = 0; i < 10; ++i) { 4803 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 4804 for (int i = 0; i < 10; ++i) 4805 ; 4806 } 4807 #pragma omp target parallel for 4808 for (int i = 0; i < 10; ++i) { 4809 #pragma omp parallel 4810 for (int i = 0; i < 10; ++i) 4811 ; 4812 } 4813 #pragma omp target parallel for 4814 for (int i = 0; i < 10; ++i) { 4815 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 4816 { 4817 bar(); 4818 } 4819 } 4820 #pragma omp target parallel for 4821 for (int i = 0; i < 10; ++i) { 4822 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4823 { 4824 bar(); 4825 } 4826 } 4827 #pragma omp target parallel for 4828 for (int i = 0; i < 10; ++i) { 4829 #pragma omp single // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 4830 { 4831 bar(); 4832 } 4833 } 4834 4835 #pragma omp target parallel for 4836 for (int i = 0; i < 10; ++i) { 4837 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4838 { 4839 bar(); 4840 } 4841 } 4842 4843 #pragma omp target parallel for 4844 for (int i = 0; i < 10; ++i) { 4845 #pragma omp critical 4846 { 4847 bar(); 4848 } 4849 } 4850 4851 #pragma omp target parallel for 4852 for (int i = 0; i < 10; ++i) { 4853 #pragma omp parallel 4854 { 4855 #pragma omp single // OK 4856 { 4857 bar(); 4858 } 4859 #pragma omp for // OK 4860 for (int i = 0; i < 10; ++i) 4861 ; 4862 #pragma omp for simd // OK 4863 for (int i = 0; i < 10; ++i) 4864 ; 4865 #pragma omp sections // OK 4866 { 4867 bar(); 4868 } 4869 } 4870 } 4871 #pragma omp target parallel for 4872 for (int i = 0; i < 10; ++i) { 4873 #pragma omp parallel for 4874 for (int i = 0; i < 10; ++i) 4875 ; 4876 } 4877 #pragma omp target parallel for 4878 for (int i = 0; i < 10; ++i) { 4879 #pragma omp parallel for simd 4880 for (int i = 0; i < 10; ++i) 4881 ; 4882 } 4883 #pragma omp target parallel for 4884 for (int i = 0; i < 10; ++i) { 4885 #pragma omp parallel sections 4886 { 4887 bar(); 4888 } 4889 } 4890 #pragma omp target parallel for 4891 for (int i = 0; i < 10; ++i) { 4892 #pragma omp task 4893 { 4894 bar(); 4895 } 4896 } 4897 #pragma omp target parallel for 4898 for (int i = 0; i < 10; ++i) { 4899 #pragma omp taskyield 4900 bar(); 4901 } 4902 #pragma omp target parallel for 4903 for (int i = 0; i < 10; ++i) { 4904 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4905 bar(); 4906 } 4907 #pragma omp target parallel for 4908 for (int i = 0; i < 10; ++i) { 4909 #pragma omp taskwait 4910 bar(); 4911 } 4912 #pragma omp target parallel for 4913 for (int i = 0; i < 10; ++i) { 4914 #pragma omp flush 4915 bar(); 4916 } 4917 #pragma omp target parallel for 4918 for (int i = 0; i < 10; ++i) { 4919 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 4920 bar(); 4921 } 4922 #pragma omp target parallel for ordered 4923 for (int i = 0; i < 10; ++i) { 4924 #pragma omp ordered // OK 4925 bar(); 4926 } 4927 #pragma omp target parallel for 4928 for (int i = 0; i < 10; ++i) { 4929 #pragma omp atomic 4930 ++a; 4931 } 4932 #pragma omp target parallel for 4933 for (int i = 0; i < 10; ++i) { 4934 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 4935 ++a; 4936 } 4937 #pragma omp target parallel for 4938 for (int i = 0; i < 10; ++i) { 4939 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 4940 ++a; 4941 } 4942 #pragma omp target parallel for 4943 for (int i = 0; i < 10; ++i) { 4944 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4945 for (int i = 0; i < 10; ++i) 4946 ; 4947 } 4948 #pragma omp target parallel for 4949 for (int i = 0; i < 10; ++i) { 4950 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4951 ++a; 4952 } 4953 #pragma omp target parallel for 4954 for (int i = 0; i < 10; ++i) { 4955 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4956 ++a; 4957 } 4958 #pragma omp target parallel for 4959 for (int i = 0; i < 10; ++i) { 4960 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 4961 ++a; 4962 } 4963 #pragma omp target parallel for 4964 for (int i = 0; i < 10; ++i) { 4965 #pragma omp taskloop 4966 for (int i = 0; i < 10; ++i) 4967 ++a; 4968 } 4969 #pragma omp target parallel for 4970 for (int i = 0; i < 10; ++i) { 4971 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 4972 for (int j = 0; j < 10; ++j) 4973 ; 4974 } 4975 #pragma omp target parallel for 4976 for (int i = 0; i < 10; ++i) { 4977 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4978 } 4979 #pragma omp target parallel for 4980 for (int i = 0; i < 10; ++i) { 4981 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 4982 for (int j = 0; j < 10; ++j) 4983 ; 4984 } 4985 #pragma omp target parallel for 4986 for (int i = 0; i < 10; ++i) { 4987 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 4988 for (int j = 0; j < 10; ++j) 4989 ; 4990 } 4991 #pragma omp target parallel for 4992 for (int i = 0; i < 10; ++i) { 4993 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 4994 for (int j = 0; j < 10; ++j) 4995 ; 4996 } 4997 #pragma omp target parallel for 4998 for (int i = 0; i < 10; ++i) { 4999 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5000 for (int j = 0; j < 10; ++j) 5001 ; 5002 } 5003 #pragma omp target parallel for 5004 for (int i = 0; i < 10; ++i) { 5005 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5006 for (int j = 0; j < 10; ++j) 5007 ; 5008 } 5009 #pragma omp target parallel for 5010 for (int i = 0; i < 10; ++i) { 5011 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5012 for (int j = 0; j < 10; ++j) 5013 ; 5014 } 5015 #pragma omp target parallel for 5016 for (int i = 0; i < 10; ++i) { 5017 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5018 for (int j = 0; j < 10; ++j) 5019 ; 5020 } 5021 #pragma omp target parallel for 5022 for (int i = 0; i < 10; ++i) { 5023 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5024 for (int j = 0; j < 10; ++j) 5025 ; 5026 } 5027 #pragma omp target parallel for 5028 for (int i = 0; i < 10; ++i) { 5029 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 5030 a++; 5031 } 5032 #pragma omp target parallel for 5033 for (int i = 0; i < 10; ++i) { 5034 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 5035 for (int j = 0; j < 10; ++j) 5036 ; 5037 } 5038 #pragma omp target parallel for 5039 for (int i = 0; i < 10; ++i) { 5040 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5041 for (int j = 0; j < 10; ++j) 5042 ; 5043 } 5044 #pragma omp target parallel for 5045 for (int i = 0; i < 10; ++i) { 5046 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5047 for (int j = 0; j < 10; ++j) 5048 ; 5049 } 5050 #pragma omp target parallel for 5051 for (int i = 0; i < 10; ++i) { 5052 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5053 for (int j = 0; j < 10; ++j) 5054 ; 5055 } 5056 5057 // TEAMS DIRECTIVE 5058 #pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5059 bar(); 5060 #pragma omp target 5061 #pragma omp teams 5062 #pragma omp parallel 5063 bar(); 5064 #pragma omp target 5065 #pragma omp teams 5066 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 5067 for (int i = 0; i < 10; ++i) 5068 ; 5069 #pragma omp target 5070 #pragma omp teams 5071 #pragma omp simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 5072 for (int i = 0; i < 10; ++i) 5073 ; 5074 #pragma omp target 5075 #pragma omp teams 5076 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 5077 for (int i = 0; i < 10; ++i) 5078 ; 5079 #pragma omp target 5080 #pragma omp teams 5081 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 5082 { 5083 bar(); 5084 } 5085 #pragma omp target 5086 #pragma omp teams 5087 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 5088 { 5089 bar(); 5090 } 5091 #pragma omp target 5092 #pragma omp teams 5093 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 5094 bar(); 5095 5096 #pragma omp target 5097 #pragma omp teams 5098 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 5099 { 5100 bar(); 5101 } 5102 #pragma omp target 5103 #pragma omp teams 5104 #pragma omp critical // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 5105 { 5106 bar(); 5107 } 5108 #pragma omp target 5109 #pragma omp teams 5110 #pragma omp parallel for 5111 for (int i = 0; i < 10; ++i) 5112 ; 5113 #pragma omp target 5114 #pragma omp teams 5115 #pragma omp parallel for simd 5116 for (int i = 0; i < 10; ++i) 5117 ; 5118 #pragma omp target 5119 #pragma omp teams 5120 #pragma omp parallel sections 5121 { 5122 bar(); 5123 } 5124 #pragma omp target 5125 #pragma omp teams 5126 #pragma omp task // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 5127 { 5128 bar(); 5129 } 5130 #pragma omp target 5131 #pragma omp teams 5132 { 5133 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 5134 bar(); 5135 } 5136 #pragma omp target 5137 #pragma omp teams 5138 { 5139 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 5140 bar(); 5141 } 5142 #pragma omp target 5143 #pragma omp teams 5144 { 5145 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 5146 bar(); 5147 } 5148 #pragma omp target 5149 #pragma omp teams 5150 { 5151 #pragma omp flush // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 5152 bar(); 5153 } 5154 #pragma omp target 5155 #pragma omp teams 5156 { 5157 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 5158 bar(); 5159 } 5160 #pragma omp target 5161 #pragma omp teams 5162 { 5163 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 5164 ++a; 5165 } 5166 #pragma omp target 5167 #pragma omp teams 5168 { 5169 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5170 ++a; 5171 } 5172 #pragma omp target 5173 #pragma omp teams 5174 { 5175 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5176 ++a; 5177 } 5178 #pragma omp target 5179 #pragma omp teams 5180 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5181 for (int i = 0; i < 10; ++i) 5182 ; 5183 #pragma omp target 5184 #pragma omp teams 5185 { 5186 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5187 ++a; 5188 } 5189 #pragma omp target 5190 #pragma omp teams 5191 { 5192 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5193 ++a; 5194 } 5195 #pragma omp target 5196 #pragma omp teams 5197 { 5198 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 5199 ++a; 5200 } 5201 #pragma omp target 5202 #pragma omp teams 5203 { 5204 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 5205 for (int i = 0; i < 10; ++i) 5206 ++a; 5207 } 5208 #pragma omp target 5209 #pragma omp teams 5210 #pragma omp distribute 5211 for (int i = 0; i < 10; ++i) 5212 ; 5213 #pragma omp target 5214 #pragma omp teams 5215 #pragma omp distribute 5216 for (int i = 0; i < 10; ++i) 5217 ; 5218 #pragma omp distribute 5219 for (int j = 0; j < 10; ++j) 5220 ; 5221 #pragma omp target 5222 #pragma omp teams 5223 { 5224 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5225 } 5226 #pragma omp target 5227 #pragma omp teams 5228 { 5229 #pragma omp distribute parallel for 5230 for (int i = 0; i < 10; ++i) 5231 ; 5232 #pragma omp distribute parallel for 5233 for (int j = 0; j < 10; ++j) 5234 ; 5235 } 5236 #pragma omp target 5237 #pragma omp teams 5238 { 5239 #pragma omp distribute parallel for simd 5240 for (int i = 0; i < 10; ++i) 5241 ; 5242 #pragma omp distribute parallel for simd 5243 for (int j = 0; j < 10; ++j) 5244 ; 5245 } 5246 #pragma omp target 5247 #pragma omp teams 5248 { 5249 #pragma omp distribute simd 5250 for (int i = 0; i < 10; ++i) 5251 ; 5252 #pragma omp distribute simd 5253 for (int j = 0; j < 10; ++j) 5254 ; 5255 } 5256 #pragma omp target 5257 #pragma omp teams 5258 { 5259 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5260 for (int i = 0; i < 10; ++i) 5261 ; 5262 } 5263 #pragma omp target 5264 #pragma omp teams 5265 { 5266 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5267 for (int i = 0; i < 10; ++i) 5268 ; 5269 } 5270 #pragma omp target 5271 #pragma omp teams 5272 { 5273 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5274 for (int i = 0; i < 10; ++i) 5275 ; 5276 } 5277 #pragma omp target 5278 #pragma omp teams 5279 { 5280 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5281 for (int i = 0; i < 10; ++i) 5282 ; 5283 } 5284 #pragma omp target 5285 #pragma omp teams 5286 { 5287 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5288 for (int i = 0; i < 10; ++i) 5289 ; 5290 } 5291 #pragma omp target 5292 #pragma omp teams 5293 { 5294 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5295 a++; 5296 } 5297 #pragma omp target 5298 #pragma omp teams 5299 { 5300 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5301 for (int i = 0; i < 10; ++i) 5302 ; 5303 } 5304 #pragma omp target 5305 #pragma omp teams 5306 { 5307 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5308 for (int i = 0; i < 10; ++i) 5309 ; 5310 } 5311 #pragma omp target 5312 #pragma omp teams 5313 { 5314 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5315 for (int i = 0; i < 10; ++i) 5316 ; 5317 } 5318 #pragma omp target 5319 #pragma omp teams 5320 { 5321 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5322 for (int i = 0; i < 10; ++i) 5323 ; 5324 } 5325 5326 // TASKLOOP DIRECTIVE 5327 #pragma omp taskloop 5328 for (int i = 0; i < 10; ++i) { 5329 #pragma omp for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 5330 for (int i = 0; i < 10; ++i) 5331 ; 5332 } 5333 #pragma omp taskloop 5334 for (int i = 0; i < 10; ++i) { 5335 #pragma omp simd 5336 for (int i = 0; i < 10; ++i) 5337 ; 5338 } 5339 #pragma omp taskloop 5340 for (int i = 0; i < 10; ++i) { 5341 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 5342 for (int i = 0; i < 10; ++i) 5343 ; 5344 } 5345 #pragma omp taskloop 5346 for (int i = 0; i < 10; ++i) { 5347 #pragma omp parallel 5348 for (int i = 0; i < 10; ++i) 5349 ; 5350 } 5351 #pragma omp taskloop 5352 for (int i = 0; i < 10; ++i) { 5353 #pragma omp sections // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 5354 { 5355 bar(); 5356 } 5357 } 5358 #pragma omp taskloop 5359 for (int i = 0; i < 10; ++i) { 5360 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 5361 { 5362 bar(); 5363 } 5364 } 5365 #pragma omp taskloop 5366 for (int i = 0; i < 10; ++i) { 5367 #pragma omp single // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 5368 { 5369 bar(); 5370 } 5371 } 5372 5373 #pragma omp taskloop 5374 for (int i = 0; i < 10; ++i) { 5375 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5376 { 5377 bar(); 5378 } 5379 } 5380 #pragma omp taskloop 5381 for (int i = 0; i < 10; ++i) { 5382 #pragma omp critical 5383 { 5384 bar(); 5385 } 5386 } 5387 #pragma omp taskloop 5388 for (int i = 0; i < 10; ++i) { 5389 #pragma omp parallel 5390 { 5391 #pragma omp single // OK 5392 { 5393 bar(); 5394 } 5395 #pragma omp for // OK 5396 for (int i = 0; i < 10; ++i) 5397 ; 5398 #pragma omp sections // OK 5399 { 5400 bar(); 5401 } 5402 } 5403 } 5404 #pragma omp taskloop 5405 for (int i = 0; i < 10; ++i) { 5406 #pragma omp parallel for 5407 for (int i = 0; i < 10; ++i) 5408 ; 5409 } 5410 #pragma omp taskloop 5411 for (int i = 0; i < 10; ++i) { 5412 #pragma omp parallel for simd 5413 for (int i = 0; i < 10; ++i) 5414 ; 5415 } 5416 #pragma omp taskloop 5417 for (int i = 0; i < 10; ++i) { 5418 #pragma omp parallel sections 5419 { 5420 bar(); 5421 } 5422 } 5423 #pragma omp taskloop 5424 for (int i = 0; i < 10; ++i) { 5425 #pragma omp task 5426 { 5427 bar(); 5428 } 5429 } 5430 #pragma omp taskloop 5431 for (int i = 0; i < 10; ++i) { 5432 #pragma omp taskyield 5433 bar(); 5434 } 5435 #pragma omp taskloop 5436 for (int i = 0; i < 10; ++i) { 5437 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5438 bar(); 5439 } 5440 #pragma omp taskloop 5441 for (int i = 0; i < 10; ++i) { 5442 #pragma omp taskwait 5443 bar(); 5444 } 5445 #pragma omp taskloop 5446 for (int i = 0; i < 10; ++i) { 5447 #pragma omp flush 5448 bar(); 5449 } 5450 #pragma omp taskloop 5451 for (int i = 0; i < 10; ++i) { 5452 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 5453 bar(); 5454 } 5455 #pragma omp taskloop 5456 for (int i = 0; i < 10; ++i) { 5457 #pragma omp atomic 5458 ++a; 5459 } 5460 #pragma omp taskloop 5461 for (int i = 0; i < 10; ++i) { 5462 #pragma omp target 5463 ++a; 5464 } 5465 #pragma omp taskloop 5466 for (int i = 0; i < 10; ++i) { 5467 #pragma omp target parallel 5468 ++a; 5469 } 5470 #pragma omp taskloop 5471 for (int i = 0; i < 10; ++i) { 5472 #pragma omp target parallel for 5473 for (int i = 0; i < 10; ++i) 5474 ; 5475 } 5476 #pragma omp taskloop 5477 for (int i = 0; i < 10; ++i) { 5478 #pragma omp target enter data map(to: a) 5479 ++a; 5480 } 5481 #pragma omp taskloop 5482 for (int i = 0; i < 10; ++i) { 5483 #pragma omp target exit data map(from: a) 5484 ++a; 5485 } 5486 #pragma omp taskloop 5487 for (int i = 0; i < 10; ++i) { 5488 #pragma omp teams // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 5489 ++a; 5490 } 5491 #pragma omp taskloop 5492 for (int i = 0; i < 10; ++i) { 5493 #pragma omp taskloop 5494 for (int i = 0; i < 10; ++i) 5495 ++a; 5496 } 5497 #pragma omp taskloop 5498 for (int i = 0; i < 10; ++i) { 5499 #pragma omp target update to(a) 5500 bar(); 5501 } 5502 #pragma omp taskloop 5503 for (int i = 0; i < 10; ++i) { 5504 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 5505 for (int j = 0; j < 10; ++j) 5506 ++a; 5507 } 5508 #pragma omp taskloop 5509 for (int i = 0; i < 10; ++i) { 5510 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 5511 for (int j = 0; j < 10; ++j) 5512 ++a; 5513 } 5514 #pragma omp taskloop 5515 for (int i = 0; i < 10; ++i) { 5516 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 5517 for (int j = 0; j < 10; ++j) 5518 ++a; 5519 } 5520 #pragma omp taskloop 5521 for (int i = 0; i < 10; ++i) { 5522 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 5523 for (int j = 0; j < 10; ++j) 5524 ++a; 5525 } 5526 #pragma omp taskloop 5527 for (int i = 0; i < 10; ++i) { 5528 #pragma omp target simd // OK 5529 for (int j = 0; j < 10; ++j) 5530 ++a; 5531 } 5532 #pragma omp taskloop 5533 for (int i = 0; i < 10; ++i) { 5534 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 5535 for (int j = 0; j < 10; ++j) 5536 ++a; 5537 } 5538 #pragma omp taskloop 5539 for (int i = 0; i < 10; ++i) { 5540 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 5541 for (int j = 0; j < 10; ++j) 5542 ++a; 5543 } 5544 #pragma omp taskloop 5545 for (int i = 0; i < 10; ++i) { 5546 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5547 for (int j = 0; j < 10; ++j) 5548 ++a; 5549 } 5550 #pragma omp taskloop 5551 for (int i = 0; i < 10; ++i) { 5552 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5553 for (int j = 0; j < 10; ++j) 5554 ++a; 5555 } 5556 #pragma omp taskloop 5557 for (int i = 0; i < 10; ++i) { 5558 #pragma omp target teams // OK 5559 ++a; 5560 } 5561 #pragma omp taskloop 5562 for (int i = 0; i < 10; ++i) { 5563 #pragma omp target teams distribute // OK 5564 for (int j = 0; j < 10; ++j) 5565 ++a; 5566 } 5567 #pragma omp taskloop 5568 for (int i = 0; i < 10; ++i) { 5569 #pragma omp target teams distribute parallel for // OK 5570 for (int j = 0; j < 10; ++j) 5571 ++a; 5572 } 5573 #pragma omp taskloop 5574 for (int i = 0; i < 10; ++i) { 5575 #pragma omp target teams distribute parallel for simd // OK 5576 for (int j = 0; j < 10; ++j) 5577 ++a; 5578 } 5579 #pragma omp taskloop 5580 for (int i = 0; i < 10; ++i) { 5581 #pragma omp target teams distribute simd // OK 5582 for (int j = 0; j < 10; ++j) 5583 ++a; 5584 } 5585 5586 // DISTRIBUTE DIRECTIVE 5587 #pragma omp target 5588 #pragma omp teams 5589 #pragma omp distribute 5590 for (int i = 0; i < 10; ++i) { 5591 #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?}} 5592 for (int i = 0; i < 10; ++i) 5593 ; 5594 } 5595 #pragma omp target 5596 #pragma omp teams 5597 #pragma omp distribute 5598 for (int i = 0; i < 10; ++i) { 5599 #pragma omp for 5600 for (int i = 0; i < 10; ++i) 5601 ; 5602 } 5603 #pragma omp target 5604 #pragma omp teams 5605 #pragma omp distribute 5606 for (int i = 0; i < 10; ++i) { 5607 #pragma omp simd 5608 for (int i = 0; i < 10; ++i) 5609 ; 5610 } 5611 #pragma omp target 5612 #pragma omp teams 5613 #pragma omp distribute 5614 for (int i = 0; i < 10; ++i) { 5615 #pragma omp for simd 5616 for (int i = 0; i < 10; ++i) 5617 ; 5618 } 5619 #pragma omp target 5620 #pragma omp teams 5621 #pragma omp distribute 5622 for (int i = 0; i < 10; ++i) { 5623 #pragma omp parallel 5624 for (int i = 0; i < 10; ++i) 5625 ; 5626 } 5627 #pragma omp target 5628 #pragma omp teams 5629 #pragma omp distribute 5630 for (int i = 0; i < 10; ++i) { 5631 #pragma omp sections 5632 { 5633 bar(); 5634 } 5635 } 5636 #pragma omp target 5637 #pragma omp teams 5638 #pragma omp distribute 5639 for (int i = 0; i < 10; ++i) { 5640 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 5641 { 5642 bar(); 5643 } 5644 } 5645 #pragma omp target 5646 #pragma omp teams 5647 #pragma omp distribute 5648 for (int i = 0; i < 10; ++i) { 5649 #pragma omp single 5650 { 5651 bar(); 5652 } 5653 } 5654 #pragma omp target 5655 #pragma omp teams 5656 #pragma omp distribute 5657 for (int i = 0; i < 10; ++i) { 5658 #pragma omp master 5659 { 5660 bar(); 5661 } 5662 } 5663 #pragma omp target 5664 #pragma omp teams 5665 #pragma omp distribute 5666 for (int i = 0; i < 10; ++i) { 5667 #pragma omp critical 5668 { 5669 bar(); 5670 } 5671 } 5672 #pragma omp target 5673 #pragma omp teams 5674 #pragma omp distribute 5675 for (int i = 0; i < 10; ++i) { 5676 #pragma omp parallel 5677 { 5678 #pragma omp single 5679 { 5680 bar(); 5681 } 5682 } 5683 } 5684 #pragma omp target 5685 #pragma omp teams 5686 #pragma omp distribute 5687 for (int i = 0; i < 10; ++i) { 5688 #pragma omp parallel for 5689 for (int i = 0; i < 10; ++i) 5690 ; 5691 } 5692 #pragma omp target 5693 #pragma omp teams 5694 #pragma omp distribute 5695 for (int i = 0; i < 10; ++i) { 5696 #pragma omp parallel for simd 5697 for (int i = 0; i < 10; ++i) 5698 ; 5699 } 5700 #pragma omp target 5701 #pragma omp teams 5702 #pragma omp distribute 5703 for (int i = 0; i < 10; ++i) { 5704 #pragma omp parallel sections 5705 { 5706 bar(); 5707 } 5708 } 5709 #pragma omp target 5710 #pragma omp teams 5711 #pragma omp distribute 5712 for (int i = 0; i < 10; ++i) { 5713 #pragma omp task 5714 { 5715 bar(); 5716 } 5717 } 5718 #pragma omp target 5719 #pragma omp teams 5720 #pragma omp distribute 5721 for (int i = 0; i < 10; ++i) { 5722 #pragma omp taskyield 5723 bar(); 5724 } 5725 #pragma omp target 5726 #pragma omp teams 5727 #pragma omp distribute 5728 for (int i = 0; i < 10; ++i) { 5729 #pragma omp barrier 5730 bar(); 5731 } 5732 #pragma omp target 5733 #pragma omp teams 5734 #pragma omp distribute 5735 for (int i = 0; i < 10; ++i) { 5736 #pragma omp taskwait 5737 bar(); 5738 } 5739 #pragma omp target 5740 #pragma omp teams 5741 #pragma omp distribute 5742 for (int i = 0; i < 10; ++i) { 5743 #pragma omp flush 5744 bar(); 5745 } 5746 #pragma omp target 5747 #pragma omp teams 5748 #pragma omp distribute 5749 for (int i = 0; i < 10; ++i) { 5750 #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?}} 5751 bar(); 5752 } 5753 #pragma omp target 5754 #pragma omp teams 5755 #pragma omp distribute 5756 for (int i = 0; i < 10; ++i) { 5757 #pragma omp atomic 5758 ++a; 5759 } 5760 #pragma omp target 5761 #pragma omp teams 5762 #pragma omp distribute 5763 for (int i = 0; i < 10; ++i) { 5764 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5765 ++a; 5766 } 5767 #pragma omp target 5768 #pragma omp teams 5769 #pragma omp distribute 5770 for (int i = 0; i < 10; ++i) { 5771 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5772 ++a; 5773 } 5774 #pragma omp target 5775 #pragma omp teams 5776 #pragma omp distribute 5777 for (int i = 0; i < 10; ++i) { 5778 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5779 for (int i = 0; i < 10; ++i) 5780 ; 5781 } 5782 #pragma omp target 5783 #pragma omp teams 5784 #pragma omp distribute 5785 for (int i = 0; i < 10; ++i) { 5786 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5787 ++a; 5788 } 5789 #pragma omp target 5790 #pragma omp teams 5791 #pragma omp distribute 5792 for (int i = 0; i < 10; ++i) { 5793 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5794 ++a; 5795 } 5796 #pragma omp target 5797 #pragma omp teams 5798 #pragma omp distribute 5799 for (int i = 0; i < 10; ++i) { 5800 #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?}} 5801 ++a; 5802 } 5803 #pragma omp target 5804 #pragma omp teams 5805 #pragma omp distribute 5806 for (int i = 0; i < 10; ++i) { 5807 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5808 ++a; 5809 } 5810 #pragma omp target 5811 #pragma omp teams 5812 #pragma omp distribute 5813 for (int i = 0; i < 10; ++i) { 5814 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5815 for (int j = 0; j < 10; ++j) 5816 ; 5817 } 5818 #pragma omp target 5819 #pragma omp teams 5820 #pragma omp distribute 5821 for (int i = 0; i < 10; ++i) { 5822 #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?}} 5823 for (int j = 0; j < 10; ++j) 5824 ; 5825 } 5826 #pragma omp target 5827 #pragma omp teams 5828 #pragma omp distribute 5829 for (int i = 0; i < 10; ++i) { 5830 #pragma omp teams 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?}} 5831 for (int j = 0; j < 10; ++j) 5832 ; 5833 } 5834 #pragma omp target 5835 #pragma omp teams 5836 #pragma omp distribute 5837 for (int i = 0; i < 10; ++i) { 5838 #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?}} 5839 for (int j = 0; j < 10; ++j) 5840 ; 5841 } 5842 #pragma omp target 5843 #pragma omp teams 5844 #pragma omp distribute 5845 for (int i = 0; i < 10; ++i) { 5846 #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?}} 5847 for (int j = 0; j < 10; ++j) 5848 ; 5849 } 5850 #pragma omp target 5851 #pragma omp teams 5852 #pragma omp distribute 5853 for (int i = 0; i < 10; ++i) { 5854 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5855 a++; 5856 } 5857 #pragma omp target 5858 #pragma omp teams 5859 #pragma omp distribute 5860 for (int i = 0; i < 10; ++i) { 5861 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5862 for (int j = 0; j < 10; ++j) 5863 ; 5864 } 5865 #pragma omp target 5866 #pragma omp teams 5867 #pragma omp distribute 5868 for (int i = 0; i < 10; ++i) { 5869 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5870 for (int j = 0; j < 10; ++j) 5871 ; 5872 } 5873 #pragma omp target 5874 #pragma omp teams 5875 #pragma omp distribute 5876 for (int i = 0; i < 10; ++i) { 5877 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5878 for (int j = 0; j < 10; ++j) 5879 ; 5880 } 5881 #pragma omp target 5882 #pragma omp teams 5883 #pragma omp distribute 5884 for (int i = 0; i < 10; ++i) { 5885 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5886 for (int j = 0; j < 10; ++j) 5887 ; 5888 } 5889 5890 // DISTRIBUTE PARALLEL FOR DIRECTIVE 5891 #pragma omp target 5892 #pragma omp teams 5893 #pragma omp distribute parallel for 5894 for (int i = 0; i < 10; ++i) { 5895 #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?}} 5896 for (int i = 0; i < 10; ++i) 5897 ; 5898 } 5899 #pragma omp target 5900 #pragma omp teams 5901 #pragma omp distribute parallel for 5902 for (int i = 0; i < 10; ++i) { 5903 #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?}} 5904 for (int i = 0; i < 10; ++i) 5905 ; 5906 } 5907 #pragma omp target 5908 #pragma omp teams 5909 #pragma omp distribute parallel for 5910 for (int i = 0; i < 10; ++i) { 5911 #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?}} 5912 for (int i = 0; i < 10; ++i) 5913 ; 5914 } 5915 #pragma omp target 5916 #pragma omp teams 5917 #pragma omp distribute parallel for 5918 for (int i = 0; i < 10; ++i) { 5919 #pragma omp simd 5920 for (int i = 0; i < 10; ++i) 5921 ; 5922 } 5923 #pragma omp target 5924 #pragma omp teams 5925 #pragma omp distribute parallel for 5926 for (int i = 0; i < 10; ++i) { 5927 #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?}} 5928 for (int i = 0; i < 10; ++i) 5929 ; 5930 } 5931 #pragma omp target 5932 #pragma omp teams 5933 #pragma omp distribute parallel for 5934 for (int i = 0; i < 10; ++i) { 5935 #pragma omp parallel 5936 for (int i = 0; i < 10; ++i) 5937 ; 5938 } 5939 #pragma omp target 5940 #pragma omp teams 5941 #pragma omp distribute parallel for 5942 for (int i = 0; i < 10; ++i) { 5943 #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?}} 5944 { 5945 bar(); 5946 } 5947 } 5948 #pragma omp target 5949 #pragma omp teams 5950 #pragma omp distribute parallel for 5951 for (int i = 0; i < 10; ++i) { 5952 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 5953 { 5954 bar(); 5955 } 5956 } 5957 #pragma omp target 5958 #pragma omp teams 5959 #pragma omp distribute parallel for 5960 for (int i = 0; i < 10; ++i) { 5961 #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?}} 5962 { 5963 bar(); 5964 } 5965 } 5966 #pragma omp target 5967 #pragma omp teams 5968 #pragma omp distribute parallel for 5969 for (int i = 0; i < 10; ++i) { 5970 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5971 { 5972 bar(); 5973 } 5974 } 5975 #pragma omp target 5976 #pragma omp teams 5977 #pragma omp distribute parallel for 5978 for (int i = 0; i < 10; ++i) { 5979 #pragma omp critical 5980 { 5981 bar(); 5982 } 5983 } 5984 #pragma omp target 5985 #pragma omp teams 5986 #pragma omp distribute parallel for 5987 for (int i = 0; i < 10; ++i) { 5988 #pragma omp parallel 5989 { 5990 #pragma omp single 5991 { 5992 bar(); 5993 } 5994 } 5995 } 5996 #pragma omp target 5997 #pragma omp teams 5998 #pragma omp distribute parallel for 5999 for (int i = 0; i < 10; ++i) { 6000 #pragma omp parallel for 6001 for (int i = 0; i < 10; ++i) 6002 ; 6003 } 6004 #pragma omp target 6005 #pragma omp teams 6006 #pragma omp distribute parallel for 6007 for (int i = 0; i < 10; ++i) { 6008 #pragma omp parallel for simd 6009 for (int i = 0; i < 10; ++i) 6010 ; 6011 } 6012 #pragma omp target 6013 #pragma omp teams 6014 #pragma omp distribute parallel for 6015 for (int i = 0; i < 10; ++i) { 6016 #pragma omp parallel sections 6017 { 6018 bar(); 6019 } 6020 } 6021 #pragma omp target 6022 #pragma omp teams 6023 #pragma omp distribute parallel for 6024 for (int i = 0; i < 10; ++i) { 6025 #pragma omp task 6026 { 6027 bar(); 6028 } 6029 } 6030 #pragma omp target 6031 #pragma omp teams 6032 #pragma omp distribute parallel for 6033 for (int i = 0; i < 10; ++i) { 6034 #pragma omp taskyield 6035 bar(); 6036 } 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 barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6042 bar(); 6043 } 6044 #pragma omp target 6045 #pragma omp teams 6046 #pragma omp distribute parallel for 6047 for (int i = 0; i < 10; ++i) { 6048 #pragma omp taskwait 6049 bar(); 6050 } 6051 #pragma omp target 6052 #pragma omp teams 6053 #pragma omp distribute parallel for 6054 for (int i = 0; i < 10; ++i) { 6055 #pragma omp flush 6056 bar(); 6057 } 6058 #pragma omp target 6059 #pragma omp teams 6060 #pragma omp distribute parallel for 6061 for (int i = 0; i < 10; ++i) { 6062 #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?}} 6063 bar(); 6064 } 6065 #pragma omp target 6066 #pragma omp teams 6067 #pragma omp distribute parallel for 6068 for (int i = 0; i < 10; ++i) { 6069 #pragma omp atomic 6070 ++a; 6071 } 6072 #pragma omp target 6073 #pragma omp teams 6074 #pragma omp distribute parallel for 6075 for (int i = 0; i < 10; ++i) { 6076 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6077 ++a; 6078 } 6079 #pragma omp target 6080 #pragma omp teams 6081 #pragma omp distribute parallel for 6082 for (int i = 0; i < 10; ++i) { 6083 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6084 ++a; 6085 } 6086 #pragma omp target 6087 #pragma omp teams 6088 #pragma omp distribute parallel for 6089 for (int i = 0; i < 10; ++i) { 6090 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6091 for (int i = 0; i < 10; ++i) 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 target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6099 ++a; 6100 } 6101 #pragma omp target 6102 #pragma omp teams 6103 #pragma omp distribute parallel for 6104 for (int i = 0; i < 10; ++i) { 6105 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6106 ++a; 6107 } 6108 #pragma omp target 6109 #pragma omp teams 6110 #pragma omp distribute parallel for 6111 for (int i = 0; i < 10; ++i) { 6112 #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?}} 6113 ++a; 6114 } 6115 #pragma omp target 6116 #pragma omp teams 6117 #pragma omp distribute parallel for 6118 for (int i = 0; i < 10; ++i) { 6119 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6120 ++a; 6121 } 6122 #pragma omp target 6123 #pragma omp teams 6124 #pragma omp distribute parallel for 6125 for (int i = 0; i < 10; ++i) { 6126 #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?}} 6127 for (int i = 0; i < 10; ++i) 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 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?}} 6135 for (int i = 0; i < 10; ++i) 6136 ; 6137 } 6138 #pragma omp target 6139 #pragma omp teams 6140 #pragma omp distribute parallel for 6141 for (int i = 0; i < 10; ++i) { 6142 #pragma omp teams 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?}} 6143 for (int i = 0; i < 10; ++i) 6144 ; 6145 } 6146 #pragma omp target 6147 #pragma omp teams 6148 #pragma omp distribute parallel for 6149 for (int i = 0; i < 10; ++i) { 6150 #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?}} 6151 for (int i = 0; i < 10; ++i) 6152 ; 6153 } 6154 #pragma omp target 6155 #pragma omp teams 6156 #pragma omp distribute parallel for 6157 for (int i = 0; i < 10; ++i) { 6158 #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?}} 6159 for (int i = 0; i < 10; ++i) 6160 ; 6161 } 6162 #pragma omp target 6163 #pragma omp teams 6164 #pragma omp distribute parallel for 6165 for (int i = 0; i < 10; ++i) { 6166 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6167 a++; 6168 } 6169 #pragma omp target 6170 #pragma omp teams 6171 #pragma omp distribute parallel for 6172 for (int i = 0; i < 10; ++i) { 6173 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6174 for (int i = 0; i < 10; ++i) 6175 ; 6176 } 6177 #pragma omp target 6178 #pragma omp teams 6179 #pragma omp distribute parallel for 6180 for (int i = 0; i < 10; ++i) { 6181 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6182 for (int i = 0; i < 10; ++i) 6183 ; 6184 } 6185 #pragma omp target 6186 #pragma omp teams 6187 #pragma omp distribute parallel for 6188 for (int i = 0; i < 10; ++i) { 6189 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6190 for (int i = 0; i < 10; ++i) 6191 ; 6192 } 6193 #pragma omp target 6194 #pragma omp teams 6195 #pragma omp distribute parallel for 6196 for (int i = 0; i < 10; ++i) { 6197 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6198 for (int i = 0; i < 10; ++i) 6199 ; 6200 } 6201 6202 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6203 #pragma omp target 6204 #pragma omp teams 6205 #pragma omp distribute parallel for simd 6206 for (int i = 0; i < 10; ++i) { 6207 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6208 for (int i = 0; i < 10; ++i) 6209 ; 6210 } 6211 #pragma omp target 6212 #pragma omp teams 6213 #pragma omp distribute parallel for simd 6214 for (int i = 0; i < 10; ++i) { 6215 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6216 for (int i = 0; i < 10; ++i) 6217 ; 6218 } 6219 #pragma omp target 6220 #pragma omp teams 6221 #pragma omp distribute parallel for simd 6222 for (int i = 0; i < 10; ++i) { 6223 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6224 for (int i = 0; i < 10; ++i) 6225 ; 6226 } 6227 #pragma omp target 6228 #pragma omp teams 6229 #pragma omp distribute parallel for simd 6230 for (int i = 0; i < 10; ++i) { 6231 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6232 for (int i = 0; i < 10; ++i) 6233 ; 6234 } 6235 #pragma omp target 6236 #pragma omp teams 6237 #pragma omp distribute parallel for simd 6238 for (int i = 0; i < 10; ++i) { 6239 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6240 for (int i = 0; i < 10; ++i) 6241 ; 6242 } 6243 #pragma omp target 6244 #pragma omp teams 6245 #pragma omp distribute parallel for simd 6246 for (int i = 0; i < 10; ++i) { 6247 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6248 for (int i = 0; i < 10; ++i) 6249 ; 6250 } 6251 #pragma omp target 6252 #pragma omp teams 6253 #pragma omp distribute parallel for simd 6254 for (int i = 0; i < 10; ++i) { 6255 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6256 { 6257 bar(); 6258 } 6259 } 6260 #pragma omp target 6261 #pragma omp teams 6262 #pragma omp distribute parallel for simd 6263 for (int i = 0; i < 10; ++i) { 6264 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6265 { 6266 bar(); 6267 } 6268 } 6269 #pragma omp target 6270 #pragma omp teams 6271 #pragma omp distribute parallel for simd 6272 for (int i = 0; i < 10; ++i) { 6273 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6274 { 6275 bar(); 6276 } 6277 } 6278 #pragma omp target 6279 #pragma omp teams 6280 #pragma omp distribute parallel for simd 6281 for (int i = 0; i < 10; ++i) { 6282 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6283 { 6284 bar(); 6285 } 6286 } 6287 #pragma omp target 6288 #pragma omp teams 6289 #pragma omp distribute parallel for simd 6290 for (int i = 0; i < 10; ++i) { 6291 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6292 { 6293 bar(); 6294 } 6295 } 6296 #pragma omp target 6297 #pragma omp teams 6298 #pragma omp distribute parallel for simd 6299 for (int i = 0; i < 10; ++i) { 6300 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6301 { 6302 #pragma omp single 6303 { 6304 bar(); 6305 } 6306 } 6307 } 6308 #pragma omp target 6309 #pragma omp teams 6310 #pragma omp distribute parallel for simd 6311 for (int i = 0; i < 10; ++i) { 6312 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6313 for (int i = 0; i < 10; ++i) 6314 ; 6315 } 6316 #pragma omp target 6317 #pragma omp teams 6318 #pragma omp distribute parallel for simd 6319 for (int i = 0; i < 10; ++i) { 6320 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6321 for (int i = 0; i < 10; ++i) 6322 ; 6323 } 6324 #pragma omp target 6325 #pragma omp teams 6326 #pragma omp distribute parallel for simd 6327 for (int i = 0; i < 10; ++i) { 6328 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6329 { 6330 bar(); 6331 } 6332 } 6333 #pragma omp target 6334 #pragma omp teams 6335 #pragma omp distribute parallel for simd 6336 for (int i = 0; i < 10; ++i) { 6337 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6338 { 6339 bar(); 6340 } 6341 } 6342 #pragma omp target 6343 #pragma omp teams 6344 #pragma omp distribute parallel for simd 6345 for (int i = 0; i < 10; ++i) { 6346 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6347 bar(); 6348 } 6349 #pragma omp target 6350 #pragma omp teams 6351 #pragma omp distribute parallel for simd 6352 for (int i = 0; i < 10; ++i) { 6353 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6354 bar(); 6355 } 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 taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6361 bar(); 6362 } 6363 #pragma omp target 6364 #pragma omp teams 6365 #pragma omp distribute parallel for simd 6366 for (int i = 0; i < 10; ++i) { 6367 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6368 bar(); 6369 } 6370 #pragma omp target 6371 #pragma omp teams 6372 #pragma omp distribute parallel for simd 6373 for (int i = 0; i < 10; ++i) { 6374 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6375 bar(); 6376 } 6377 #pragma omp target 6378 #pragma omp teams 6379 #pragma omp distribute parallel for simd 6380 for (int i = 0; i < 10; ++i) { 6381 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6382 ++a; 6383 } 6384 #pragma omp target 6385 #pragma omp teams 6386 #pragma omp distribute parallel for simd 6387 for (int i = 0; i < 10; ++i) { 6388 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6389 ++a; 6390 } 6391 #pragma omp target 6392 #pragma omp teams 6393 #pragma omp distribute parallel for simd 6394 for (int i = 0; i < 10; ++i) { 6395 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6396 ++a; 6397 } 6398 #pragma omp target 6399 #pragma omp teams 6400 #pragma omp distribute parallel for simd 6401 for (int i = 0; i < 10; ++i) { 6402 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6403 for (int i = 0; i < 10; ++i) 6404 ; 6405 } 6406 #pragma omp target 6407 #pragma omp teams 6408 #pragma omp distribute parallel for simd 6409 for (int i = 0; i < 10; ++i) { 6410 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6411 ++a; 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 target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6418 ++a; 6419 } 6420 #pragma omp target 6421 #pragma omp teams 6422 #pragma omp distribute parallel for simd 6423 for (int i = 0; i < 10; ++i) { 6424 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6425 ++a; 6426 } 6427 #pragma omp target 6428 #pragma omp teams 6429 #pragma omp distribute parallel for simd 6430 for (int i = 0; i < 10; ++i) { 6431 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6432 ++a; 6433 } 6434 #pragma omp target 6435 #pragma omp teams 6436 #pragma omp distribute parallel for simd 6437 for (int i = 0; i < 10; ++i) { 6438 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6439 for (int i = 0; i < 10; ++i) 6440 ++a; 6441 } 6442 #pragma omp target 6443 #pragma omp teams 6444 #pragma omp distribute parallel for simd 6445 for (int i = 0; i < 10; ++i) { 6446 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6447 for (int i = 0; i < 10; ++i) 6448 ++a; 6449 } 6450 #pragma omp target 6451 #pragma omp teams 6452 #pragma omp distribute parallel for simd 6453 for (int i = 0; i < 10; ++i) { 6454 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6455 for (int i = 0; i < 10; ++i) 6456 ++a; 6457 } 6458 #pragma omp target 6459 #pragma omp teams 6460 #pragma omp distribute parallel for simd 6461 for (int i = 0; i < 10; ++i) { 6462 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6463 for (int i = 0; i < 10; ++i) 6464 ++a; 6465 } 6466 #pragma omp target 6467 #pragma omp teams 6468 #pragma omp distribute parallel for simd 6469 for (int i = 0; i < 10; ++i) { 6470 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6471 for (int i = 0; i < 10; ++i) 6472 ++a; 6473 } 6474 #pragma omp target 6475 #pragma omp teams 6476 #pragma omp distribute parallel for simd 6477 for (int i = 0; i < 10; ++i) { 6478 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6479 for (int i = 0; i < 10; ++i) 6480 ++a; 6481 } 6482 #pragma omp target 6483 #pragma omp teams 6484 #pragma omp distribute parallel for simd 6485 for (int i = 0; i < 10; ++i) { 6486 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6487 ++a; 6488 } 6489 #pragma omp target 6490 #pragma omp teams 6491 #pragma omp distribute parallel for simd 6492 for (int i = 0; i < 10; ++i) { 6493 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6494 for (int i = 0; i < 10; ++i) 6495 ++a; 6496 } 6497 #pragma omp target 6498 #pragma omp teams 6499 #pragma omp distribute parallel for simd 6500 for (int i = 0; i < 10; ++i) { 6501 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6502 for (int i = 0; i < 10; ++i) 6503 ++a; 6504 } 6505 #pragma omp target 6506 #pragma omp teams 6507 #pragma omp distribute parallel for simd 6508 for (int i = 0; i < 10; ++i) { 6509 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6510 for (int i = 0; i < 10; ++i) 6511 ++a; 6512 } 6513 #pragma omp target 6514 #pragma omp teams 6515 #pragma omp distribute parallel for simd 6516 for (int i = 0; i < 10; ++i) { 6517 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6518 for (int i = 0; i < 10; ++i) 6519 ++a; 6520 } 6521 6522 // TARGET SIMD DIRECTIVE 6523 #pragma omp target simd 6524 for (int i = 0; i < 10; ++i) { 6525 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6526 for (int i = 0; i < 10; ++i) 6527 ; 6528 } 6529 #pragma omp target simd 6530 for (int i = 0; i < 10; ++i) { 6531 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6532 for (int i = 0; i < 10; ++i) 6533 ; 6534 } 6535 #pragma omp target simd 6536 for (int i = 0; i < 10; ++i) { 6537 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6538 for (int i = 0; i < 10; ++i) 6539 ; 6540 } 6541 #pragma omp target simd 6542 for (int i = 0; i < 10; ++i) { 6543 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6544 for (int i = 0; i < 10; ++i) 6545 ; 6546 } 6547 #pragma omp target simd 6548 for (int i = 0; i < 10; ++i) { 6549 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6550 for (int i = 0; i < 10; ++i) 6551 ; 6552 } 6553 #pragma omp target simd 6554 for (int i = 0; i < 10; ++i) { 6555 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6556 for (int i = 0; i < 10; ++i) 6557 ; 6558 } 6559 #pragma omp target simd 6560 for (int i = 0; i < 10; ++i) { 6561 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6562 { 6563 bar(); 6564 } 6565 } 6566 #pragma omp target simd 6567 for (int i = 0; i < 10; ++i) { 6568 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6569 { 6570 bar(); 6571 } 6572 } 6573 #pragma omp target simd 6574 for (int i = 0; i < 10; ++i) { 6575 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6576 { 6577 bar(); 6578 } 6579 } 6580 #pragma omp target simd 6581 for (int i = 0; i < 10; ++i) { 6582 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6583 { 6584 bar(); 6585 } 6586 } 6587 #pragma omp target simd 6588 for (int i = 0; i < 10; ++i) { 6589 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6590 { 6591 bar(); 6592 } 6593 } 6594 #pragma omp target simd 6595 for (int i = 0; i < 10; ++i) { 6596 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6597 { 6598 #pragma omp single 6599 { 6600 bar(); 6601 } 6602 } 6603 } 6604 #pragma omp target simd 6605 for (int i = 0; i < 10; ++i) { 6606 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6607 for (int i = 0; i < 10; ++i) 6608 ; 6609 } 6610 #pragma omp target simd 6611 for (int i = 0; i < 10; ++i) { 6612 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6613 for (int i = 0; i < 10; ++i) 6614 ; 6615 } 6616 #pragma omp target simd 6617 for (int i = 0; i < 10; ++i) { 6618 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6619 { 6620 bar(); 6621 } 6622 } 6623 #pragma omp target simd 6624 for (int i = 0; i < 10; ++i) { 6625 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6626 { 6627 bar(); 6628 } 6629 } 6630 #pragma omp target simd 6631 for (int i = 0; i < 10; ++i) { 6632 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6633 bar(); 6634 } 6635 #pragma omp target simd 6636 for (int i = 0; i < 10; ++i) { 6637 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6638 bar(); 6639 } 6640 #pragma omp target simd 6641 for (int i = 0; i < 10; ++i) { 6642 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6643 bar(); 6644 } 6645 #pragma omp target simd 6646 for (int i = 0; i < 10; ++i) { 6647 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6648 bar(); 6649 } 6650 #pragma omp target simd 6651 for (int i = 0; i < 10; ++i) { 6652 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6653 bar(); 6654 } 6655 #pragma omp target simd 6656 for (int i = 0; i < 10; ++i) { 6657 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6658 ++a; 6659 } 6660 #pragma omp target simd 6661 for (int i = 0; i < 10; ++i) { 6662 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6663 ++a; 6664 } 6665 #pragma omp target simd 6666 for (int i = 0; i < 10; ++i) { 6667 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6668 ++a; 6669 } 6670 #pragma omp target simd 6671 for (int i = 0; i < 10; ++i) { 6672 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6673 for (int i = 0; i < 10; ++i) 6674 ; 6675 } 6676 #pragma omp target simd 6677 for (int i = 0; i < 10; ++i) { 6678 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6679 ++a; 6680 } 6681 #pragma omp target simd 6682 for (int i = 0; i < 10; ++i) { 6683 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6684 ++a; 6685 } 6686 #pragma omp target simd 6687 for (int i = 0; i < 10; ++i) { 6688 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6689 ++a; 6690 } 6691 #pragma omp target simd 6692 for (int i = 0; i < 10; ++i) { 6693 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6694 ++a; 6695 } 6696 #pragma omp target simd 6697 for (int i = 0; i < 10; ++i) { 6698 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6699 for (int i = 0; i < 10; ++i) 6700 ++a; 6701 } 6702 #pragma omp target simd 6703 for (int i = 0; i < 10; ++i) { 6704 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6705 for (int i = 0; i < 10; ++i) 6706 ++a; 6707 } 6708 #pragma omp target simd 6709 for (int i = 0; i < 10; ++i) { 6710 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6711 for (int i = 0; i < 10; ++i) 6712 ++a; 6713 } 6714 #pragma omp target simd 6715 for (int i = 0; i < 10; ++i) { 6716 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6717 for (int i = 0; i < 10; ++i) 6718 ++a; 6719 } 6720 #pragma omp target simd 6721 for (int i = 0; i < 10; ++i) { 6722 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6723 for (int i = 0; i < 10; ++i) 6724 ++a; 6725 } 6726 #pragma omp target simd 6727 for (int i = 0; i < 10; ++i) { 6728 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6729 for (int i = 0; i < 10; ++i) 6730 ++a; 6731 } 6732 #pragma omp target simd 6733 for (int i = 0; i < 10; ++i) { 6734 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6735 for (int i = 0; i < 10; ++i) 6736 ++a; 6737 } 6738 #pragma omp target simd 6739 for (int i = 0; i < 10; ++i) { 6740 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6741 for (int i = 0; i < 10; ++i) 6742 ++a; 6743 } 6744 6745 // TEAMS DISTRIBUTE DIRECTIVE 6746 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6747 for (int i = 0; i < 10; ++i) 6748 ; 6749 #pragma omp target 6750 #pragma omp teams distribute 6751 for (int i = 0; i < 10; ++i) { 6752 #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?}} 6753 for (int i = 0; i < 10; ++i) 6754 ; 6755 } 6756 #pragma omp target 6757 #pragma omp teams distribute 6758 for (int i = 0; i < 10; ++i) { 6759 #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?}} 6760 for (int i = 0; i < 10; ++i) 6761 ; 6762 } 6763 #pragma omp target 6764 #pragma omp teams distribute 6765 for (int i = 0; i < 10; ++i) { 6766 #pragma omp for // OK 6767 for (int i = 0; i < 10; ++i) 6768 ; 6769 } 6770 #pragma omp target 6771 #pragma omp teams distribute 6772 for (int i = 0; i < 10; ++i) { 6773 #pragma omp simd // OK 6774 for (int i = 0; i < 10; ++i) 6775 ; 6776 } 6777 #pragma omp target 6778 #pragma omp teams distribute 6779 for (int i = 0; i < 10; ++i) { 6780 #pragma omp for simd // OK 6781 for (int i = 0; i < 10; ++i) 6782 ; 6783 } 6784 #pragma omp target 6785 #pragma omp teams distribute 6786 for (int i = 0; i < 10; ++i) { 6787 #pragma omp parallel // OK 6788 for (int i = 0; i < 10; ++i) 6789 ; 6790 } 6791 #pragma omp target 6792 #pragma omp teams distribute 6793 for (int i = 0; i < 10; ++i) { 6794 #pragma omp sections // OK 6795 { 6796 bar(); 6797 } 6798 } 6799 #pragma omp target 6800 #pragma omp teams distribute 6801 for (int i = 0; i < 10; ++i) { 6802 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6803 { 6804 bar(); 6805 } 6806 } 6807 #pragma omp target 6808 #pragma omp teams distribute 6809 for (int i = 0; i < 10; ++i) { 6810 #pragma omp single // OK 6811 { 6812 bar(); 6813 } 6814 } 6815 #pragma omp target 6816 #pragma omp teams distribute 6817 for (int i = 0; i < 10; ++i) { 6818 #pragma omp master // OK 6819 { 6820 bar(); 6821 } 6822 } 6823 #pragma omp target 6824 #pragma omp teams distribute 6825 for (int i = 0; i < 10; ++i) { 6826 #pragma omp critical // OK 6827 { 6828 bar(); 6829 } 6830 } 6831 #pragma omp target 6832 #pragma omp teams distribute 6833 for (int i = 0; i < 10; ++i) { 6834 #pragma omp parallel // OK 6835 { 6836 #pragma omp single 6837 { 6838 bar(); 6839 } 6840 } 6841 } 6842 #pragma omp target 6843 #pragma omp teams distribute 6844 for (int i = 0; i < 10; ++i) { 6845 #pragma omp parallel for // OK 6846 for (int i = 0; i < 10; ++i) 6847 ; 6848 } 6849 #pragma omp target 6850 #pragma omp teams distribute 6851 for (int i = 0; i < 10; ++i) { 6852 #pragma omp parallel for simd // OK 6853 for (int i = 0; i < 10; ++i) 6854 ; 6855 } 6856 #pragma omp target 6857 #pragma omp teams distribute 6858 for (int i = 0; i < 10; ++i) { 6859 #pragma omp parallel sections // OK 6860 { 6861 bar(); 6862 } 6863 } 6864 #pragma omp target 6865 #pragma omp teams distribute 6866 for (int i = 0; i < 10; ++i) { 6867 #pragma omp task // OK 6868 { 6869 bar(); 6870 } 6871 } 6872 #pragma omp target 6873 #pragma omp teams distribute 6874 for (int i = 0; i < 10; ++i) { 6875 #pragma omp taskyield // OK 6876 bar(); 6877 } 6878 #pragma omp target 6879 #pragma omp teams distribute 6880 for (int i = 0; i < 10; ++i) { 6881 #pragma omp barrier // OK 6882 bar(); 6883 } 6884 #pragma omp target 6885 #pragma omp teams distribute 6886 for (int i = 0; i < 10; ++i) { 6887 #pragma omp taskwait // OK 6888 bar(); 6889 } 6890 #pragma omp target 6891 #pragma omp teams distribute 6892 for (int i = 0; i < 10; ++i) { 6893 #pragma omp flush // OK 6894 bar(); 6895 } 6896 #pragma omp target 6897 #pragma omp teams distribute 6898 for (int i = 0; i < 10; ++i) { 6899 #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?}} 6900 bar(); 6901 } 6902 #pragma omp target 6903 #pragma omp teams distribute 6904 for (int i = 0; i < 10; ++i) { 6905 #pragma omp atomic // OK 6906 ++a; 6907 } 6908 #pragma omp target 6909 #pragma omp teams distribute 6910 for (int i = 0; i < 10; ++i) { 6911 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6912 ++a; 6913 } 6914 #pragma omp target 6915 #pragma omp teams distribute 6916 for (int i = 0; i < 10; ++i) { 6917 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6918 ++a; 6919 } 6920 #pragma omp target 6921 #pragma omp teams distribute 6922 for (int i = 0; i < 10; ++i) { 6923 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6924 for (int i = 0; i < 10; ++i) 6925 ; 6926 } 6927 #pragma omp target 6928 #pragma omp teams distribute 6929 for (int i = 0; i < 10; ++i) { 6930 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6931 ++a; 6932 } 6933 #pragma omp target 6934 #pragma omp teams distribute 6935 for (int i = 0; i < 10; ++i) { 6936 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6937 ++a; 6938 } 6939 #pragma omp target 6940 #pragma omp teams distribute 6941 for (int i = 0; i < 10; ++i) { 6942 #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?}} 6943 ++a; 6944 } 6945 #pragma omp target 6946 #pragma omp teams distribute 6947 for (int i = 0; i < 10; ++i) { 6948 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6949 ++a; 6950 } 6951 #pragma omp target 6952 #pragma omp teams distribute 6953 for (int i = 0; i < 10; ++i) { 6954 #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?}} 6955 for (int i = 0; i < 10; ++i) 6956 ++a; 6957 } 6958 #pragma omp target 6959 #pragma omp teams distribute 6960 for (int i = 0; i < 10; ++i) { 6961 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6962 for (int i = 0; i < 10; ++i) 6963 ++a; 6964 } 6965 #pragma omp target 6966 #pragma omp teams distribute 6967 for (int i = 0; i < 10; ++i) { 6968 #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?}} 6969 for (int i = 0; i < 10; ++i) 6970 ++a; 6971 } 6972 #pragma omp target 6973 #pragma omp teams distribute 6974 for (int i = 0; i < 10; ++i) { 6975 #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?}} 6976 for (int i = 0; i < 10; ++i) 6977 ++a; 6978 } 6979 #pragma omp target 6980 #pragma omp teams distribute 6981 for (int i = 0; i < 10; ++i) { 6982 #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?}} 6983 for (int i = 0; i < 10; ++i) 6984 ++a; 6985 } 6986 #pragma omp target 6987 #pragma omp teams distribute 6988 for (int i = 0; i < 10; ++i) { 6989 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6990 for (int i = 0; i < 10; ++i) 6991 ++a; 6992 } 6993 #pragma omp target 6994 #pragma omp teams distribute 6995 for (int i = 0; i < 10; ++i) { 6996 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6997 for (int i = 0; i < 10; ++i) 6998 ++a; 6999 } 7000 #pragma omp target 7001 #pragma omp teams distribute 7002 for (int i = 0; i < 10; ++i) { 7003 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7004 for (int i = 0; i < 10; ++i) 7005 ++a; 7006 } 7007 7008 // TEAMS DISTRIBUTE DIRECTIVE 7009 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7010 for (int i = 0; i < 10; ++i) 7011 ; 7012 #pragma omp target 7013 #pragma omp teams distribute 7014 for (int i = 0; i < 10; ++i) { 7015 #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?}} 7016 for (int i = 0; i < 10; ++i) 7017 ; 7018 } 7019 #pragma omp target 7020 #pragma omp teams distribute 7021 for (int i = 0; i < 10; ++i) { 7022 #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?}} 7023 for (int i = 0; i < 10; ++i) 7024 ; 7025 } 7026 #pragma omp target 7027 #pragma omp teams distribute 7028 for (int i = 0; i < 10; ++i) { 7029 #pragma omp for // OK 7030 for (int i = 0; i < 10; ++i) 7031 ; 7032 } 7033 #pragma omp target 7034 #pragma omp teams distribute 7035 for (int i = 0; i < 10; ++i) { 7036 #pragma omp simd // OK 7037 for (int i = 0; i < 10; ++i) 7038 ; 7039 } 7040 #pragma omp target 7041 #pragma omp teams distribute 7042 for (int i = 0; i < 10; ++i) { 7043 #pragma omp for simd // OK 7044 for (int i = 0; i < 10; ++i) 7045 ; 7046 } 7047 #pragma omp target 7048 #pragma omp teams distribute 7049 for (int i = 0; i < 10; ++i) { 7050 #pragma omp parallel // OK 7051 for (int i = 0; i < 10; ++i) 7052 ; 7053 } 7054 #pragma omp target 7055 #pragma omp teams distribute 7056 for (int i = 0; i < 10; ++i) { 7057 #pragma omp sections // OK 7058 { 7059 bar(); 7060 } 7061 } 7062 #pragma omp target 7063 #pragma omp teams distribute 7064 for (int i = 0; i < 10; ++i) { 7065 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 7066 { 7067 bar(); 7068 } 7069 } 7070 #pragma omp target 7071 #pragma omp teams distribute 7072 for (int i = 0; i < 10; ++i) { 7073 #pragma omp single // OK 7074 { 7075 bar(); 7076 } 7077 } 7078 #pragma omp target 7079 #pragma omp teams distribute 7080 for (int i = 0; i < 10; ++i) { 7081 #pragma omp master // OK 7082 { 7083 bar(); 7084 } 7085 } 7086 #pragma omp target 7087 #pragma omp teams distribute 7088 for (int i = 0; i < 10; ++i) { 7089 #pragma omp critical // OK 7090 { 7091 bar(); 7092 } 7093 } 7094 #pragma omp target 7095 #pragma omp teams distribute 7096 for (int i = 0; i < 10; ++i) { 7097 #pragma omp parallel // OK 7098 { 7099 #pragma omp single 7100 { 7101 bar(); 7102 } 7103 } 7104 } 7105 #pragma omp target 7106 #pragma omp teams distribute 7107 for (int i = 0; i < 10; ++i) { 7108 #pragma omp parallel for // OK 7109 for (int i = 0; i < 10; ++i) 7110 ; 7111 } 7112 #pragma omp target 7113 #pragma omp teams distribute 7114 for (int i = 0; i < 10; ++i) { 7115 #pragma omp parallel for simd // OK 7116 for (int i = 0; i < 10; ++i) 7117 ; 7118 } 7119 #pragma omp target 7120 #pragma omp teams distribute 7121 for (int i = 0; i < 10; ++i) { 7122 #pragma omp parallel sections // OK 7123 { 7124 bar(); 7125 } 7126 } 7127 #pragma omp target 7128 #pragma omp teams distribute 7129 for (int i = 0; i < 10; ++i) { 7130 #pragma omp task // OK 7131 { 7132 bar(); 7133 } 7134 } 7135 #pragma omp target 7136 #pragma omp teams distribute 7137 for (int i = 0; i < 10; ++i) { 7138 #pragma omp taskyield // OK 7139 bar(); 7140 } 7141 #pragma omp target 7142 #pragma omp teams distribute 7143 for (int i = 0; i < 10; ++i) { 7144 #pragma omp barrier // OK 7145 bar(); 7146 } 7147 #pragma omp target 7148 #pragma omp teams distribute 7149 for (int i = 0; i < 10; ++i) { 7150 #pragma omp taskwait // OK 7151 bar(); 7152 } 7153 #pragma omp target 7154 #pragma omp teams distribute 7155 for (int i = 0; i < 10; ++i) { 7156 #pragma omp flush // OK 7157 bar(); 7158 } 7159 #pragma omp target 7160 #pragma omp teams distribute 7161 for (int i = 0; i < 10; ++i) { 7162 #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?}} 7163 bar(); 7164 } 7165 #pragma omp target 7166 #pragma omp teams distribute 7167 for (int i = 0; i < 10; ++i) { 7168 #pragma omp atomic // OK 7169 ++a; 7170 } 7171 #pragma omp target 7172 #pragma omp teams distribute 7173 for (int i = 0; i < 10; ++i) { 7174 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7175 ++a; 7176 } 7177 #pragma omp target 7178 #pragma omp teams distribute 7179 for (int i = 0; i < 10; ++i) { 7180 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7181 ++a; 7182 } 7183 #pragma omp target 7184 #pragma omp teams distribute 7185 for (int i = 0; i < 10; ++i) { 7186 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' 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 target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7194 ++a; 7195 } 7196 #pragma omp target 7197 #pragma omp teams distribute 7198 for (int i = 0; i < 10; ++i) { 7199 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7200 ++a; 7201 } 7202 #pragma omp target 7203 #pragma omp teams distribute 7204 for (int i = 0; i < 10; ++i) { 7205 #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?}} 7206 ++a; 7207 } 7208 #pragma omp target 7209 #pragma omp teams distribute 7210 for (int i = 0; i < 10; ++i) { 7211 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7212 ++a; 7213 } 7214 #pragma omp target 7215 #pragma omp teams distribute 7216 for (int i = 0; i < 10; ++i) { 7217 #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?}} 7218 for (int i = 0; i < 10; ++i) 7219 ++a; 7220 } 7221 #pragma omp target 7222 #pragma omp teams distribute 7223 for (int i = 0; i < 10; ++i) { 7224 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7225 for (int i = 0; i < 10; ++i) 7226 ++a; 7227 } 7228 #pragma omp target 7229 #pragma omp teams distribute 7230 for (int i = 0; i < 10; ++i) { 7231 #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?}} 7232 for (int i = 0; i < 10; ++i) 7233 ++a; 7234 } 7235 #pragma omp target 7236 #pragma omp teams distribute 7237 for (int i = 0; i < 10; ++i) { 7238 #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?}} 7239 for (int i = 0; i < 10; ++i) 7240 ++a; 7241 } 7242 #pragma omp target 7243 #pragma omp teams distribute 7244 for (int i = 0; i < 10; ++i) { 7245 #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?}} 7246 for (int i = 0; i < 10; ++i) 7247 ++a; 7248 } 7249 #pragma omp target 7250 #pragma omp teams distribute 7251 for (int i = 0; i < 10; ++i) { 7252 #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?}} 7253 for (int i = 0; i < 10; ++i) 7254 ++a; 7255 } 7256 #pragma omp target 7257 #pragma omp teams distribute 7258 for (int i = 0; i < 10; ++i) { 7259 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7260 ++a; 7261 } 7262 #pragma omp target 7263 #pragma omp teams distribute 7264 for (int i = 0; i < 10; ++i) { 7265 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7266 for (int i = 0; i < 10; ++i) 7267 ++a; 7268 } 7269 #pragma omp target 7270 #pragma omp teams distribute 7271 for (int i = 0; i < 10; ++i) { 7272 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7273 for (int i = 0; i < 10; ++i) 7274 ++a; 7275 } 7276 #pragma omp target 7277 #pragma omp teams distribute 7278 for (int i = 0; i < 10; ++i) { 7279 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7280 for (int i = 0; i < 10; ++i) 7281 ++a; 7282 } 7283 #pragma omp target 7284 #pragma omp teams distribute 7285 for (int i = 0; i < 10; ++i) { 7286 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7287 for (int i = 0; i < 10; ++i) 7288 ++a; 7289 } 7290 7291 // TEAMS DISTRIBUTE SIMD DIRECTIVE 7292 #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?}} 7293 for (int i = 0; i < 10; ++i) 7294 ; 7295 #pragma omp target 7296 #pragma omp teams distribute simd 7297 for (int i = 0; i < 10; ++i) { 7298 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7299 for (int i = 0; i < 10; ++i) 7300 ; 7301 } 7302 #pragma omp target 7303 #pragma omp teams distribute simd 7304 for (int i = 0; i < 10; ++i) { 7305 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7306 for (int i = 0; i < 10; ++i) 7307 ; 7308 } 7309 #pragma omp target 7310 #pragma omp teams distribute simd 7311 for (int i = 0; i < 10; ++i) { 7312 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7313 for (int i = 0; i < 10; ++i) 7314 ; 7315 } 7316 #pragma omp target 7317 #pragma omp teams distribute simd 7318 for (int i = 0; i < 10; ++i) { 7319 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7320 for (int i = 0; i < 10; ++i) 7321 ; 7322 } 7323 #pragma omp target 7324 #pragma omp teams distribute simd 7325 for (int i = 0; i < 10; ++i) { 7326 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7327 for (int i = 0; i < 10; ++i) 7328 ; 7329 } 7330 #pragma omp target 7331 #pragma omp teams distribute simd 7332 for (int i = 0; i < 10; ++i) { 7333 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7334 for (int i = 0; i < 10; ++i) 7335 ; 7336 } 7337 #pragma omp target 7338 #pragma omp teams distribute simd 7339 for (int i = 0; i < 10; ++i) { 7340 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7341 { 7342 bar(); 7343 } 7344 } 7345 #pragma omp target 7346 #pragma omp teams distribute simd 7347 for (int i = 0; i < 10; ++i) { 7348 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7349 { 7350 bar(); 7351 } 7352 } 7353 #pragma omp target 7354 #pragma omp teams distribute simd 7355 for (int i = 0; i < 10; ++i) { 7356 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7357 { 7358 bar(); 7359 } 7360 } 7361 #pragma omp target 7362 #pragma omp teams distribute simd 7363 for (int i = 0; i < 10; ++i) { 7364 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7365 { 7366 bar(); 7367 } 7368 } 7369 #pragma omp target 7370 #pragma omp teams distribute simd 7371 for (int i = 0; i < 10; ++i) { 7372 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7373 { 7374 bar(); 7375 } 7376 } 7377 #pragma omp target 7378 #pragma omp teams distribute simd 7379 for (int i = 0; i < 10; ++i) { 7380 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7381 { 7382 #pragma omp single 7383 { 7384 bar(); 7385 } 7386 } 7387 } 7388 #pragma omp target 7389 #pragma omp teams distribute simd 7390 for (int i = 0; i < 10; ++i) { 7391 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7392 for (int i = 0; i < 10; ++i) 7393 ; 7394 } 7395 #pragma omp target 7396 #pragma omp teams distribute simd 7397 for (int i = 0; i < 10; ++i) { 7398 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7399 for (int i = 0; i < 10; ++i) 7400 ; 7401 } 7402 #pragma omp target 7403 #pragma omp teams distribute simd 7404 for (int i = 0; i < 10; ++i) { 7405 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7406 { 7407 bar(); 7408 } 7409 } 7410 #pragma omp target 7411 #pragma omp teams distribute simd 7412 for (int i = 0; i < 10; ++i) { 7413 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7414 { 7415 bar(); 7416 } 7417 } 7418 #pragma omp target 7419 #pragma omp teams distribute simd 7420 for (int i = 0; i < 10; ++i) { 7421 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7422 bar(); 7423 } 7424 #pragma omp target 7425 #pragma omp teams distribute simd 7426 for (int i = 0; i < 10; ++i) { 7427 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7428 bar(); 7429 } 7430 #pragma omp target 7431 #pragma omp teams distribute simd 7432 for (int i = 0; i < 10; ++i) { 7433 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7434 bar(); 7435 } 7436 #pragma omp target 7437 #pragma omp teams distribute simd 7438 for (int i = 0; i < 10; ++i) { 7439 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7440 bar(); 7441 } 7442 #pragma omp target 7443 #pragma omp teams distribute simd 7444 for (int i = 0; i < 10; ++i) { 7445 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7446 bar(); 7447 } 7448 #pragma omp target 7449 #pragma omp teams distribute simd 7450 for (int i = 0; i < 10; ++i) { 7451 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7452 ++a; 7453 } 7454 #pragma omp target 7455 #pragma omp teams distribute simd 7456 for (int i = 0; i < 10; ++i) { 7457 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7458 ++a; 7459 } 7460 #pragma omp target 7461 #pragma omp teams distribute simd 7462 for (int i = 0; i < 10; ++i) { 7463 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7464 ++a; 7465 } 7466 #pragma omp target 7467 #pragma omp teams distribute simd 7468 for (int i = 0; i < 10; ++i) { 7469 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7470 for (int i = 0; i < 10; ++i) 7471 ; 7472 } 7473 #pragma omp target 7474 #pragma omp teams distribute simd 7475 for (int i = 0; i < 10; ++i) { 7476 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7477 ++a; 7478 } 7479 #pragma omp target 7480 #pragma omp teams distribute simd 7481 for (int i = 0; i < 10; ++i) { 7482 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7483 ++a; 7484 } 7485 #pragma omp target 7486 #pragma omp teams distribute simd 7487 for (int i = 0; i < 10; ++i) { 7488 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7489 ++a; 7490 } 7491 #pragma omp target 7492 #pragma omp teams distribute simd 7493 for (int i = 0; i < 10; ++i) { 7494 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7495 ++a; 7496 } 7497 #pragma omp target 7498 #pragma omp teams distribute simd 7499 for (int i = 0; i < 10; ++i) { 7500 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7501 for (int i = 0; i < 10; ++i) 7502 ++a; 7503 } 7504 #pragma omp target 7505 #pragma omp teams distribute simd 7506 for (int i = 0; i < 10; ++i) { 7507 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7508 for (int i = 0; i < 10; ++i) 7509 ++a; 7510 } 7511 #pragma omp target 7512 #pragma omp teams distribute simd 7513 for (int i = 0; i < 10; ++i) { 7514 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7515 for (int i = 0; i < 10; ++i) 7516 ++a; 7517 } 7518 #pragma omp target 7519 #pragma omp teams distribute simd 7520 for (int i = 0; i < 10; ++i) { 7521 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7522 for (int i = 0; i < 10; ++i) 7523 ++a; 7524 } 7525 #pragma omp target 7526 #pragma omp teams distribute simd 7527 for (int i = 0; i < 10; ++i) { 7528 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7529 for (int i = 0; i < 10; ++i) 7530 ++a; 7531 } 7532 #pragma omp target 7533 #pragma omp teams distribute simd 7534 for (int i = 0; i < 10; ++i) { 7535 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7536 for (int i = 0; i < 10; ++i) 7537 ++a; 7538 } 7539 #pragma omp target 7540 #pragma omp teams distribute simd 7541 for (int i = 0; i < 10; ++i) { 7542 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7543 ++a; 7544 } 7545 #pragma omp target 7546 #pragma omp teams distribute simd 7547 for (int i = 0; i < 10; ++i) { 7548 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7549 for (int i = 0; i < 10; ++i) 7550 ++a; 7551 } 7552 #pragma omp target 7553 #pragma omp teams distribute simd 7554 for (int i = 0; i < 10; ++i) { 7555 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7556 for (int i = 0; i < 10; ++i) 7557 ++a; 7558 } 7559 #pragma omp target 7560 #pragma omp teams distribute simd 7561 for (int i = 0; i < 10; ++i) { 7562 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7563 for (int i = 0; i < 10; ++i) 7564 ++a; 7565 } 7566 #pragma omp target 7567 #pragma omp teams distribute simd 7568 for (int i = 0; i < 10; ++i) { 7569 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7570 for (int i = 0; i < 10; ++i) 7571 ++a; 7572 } 7573 7574 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 7575 #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?}} 7576 for (int i = 0; i < 10; ++i) 7577 ; 7578 #pragma omp target 7579 #pragma omp teams distribute parallel for simd 7580 for (int i = 0; i < 10; ++i) { 7581 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7582 for (int i = 0; i < 10; ++i) 7583 ; 7584 } 7585 #pragma omp target 7586 #pragma omp teams distribute parallel for simd 7587 for (int i = 0; i < 10; ++i) { 7588 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7589 for (int i = 0; i < 10; ++i) 7590 ; 7591 } 7592 #pragma omp target 7593 #pragma omp teams distribute parallel for simd 7594 for (int i = 0; i < 10; ++i) { 7595 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7596 for (int i = 0; i < 10; ++i) 7597 ; 7598 } 7599 #pragma omp target 7600 #pragma omp teams distribute parallel for simd 7601 for (int i = 0; i < 10; ++i) { 7602 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7603 for (int i = 0; i < 10; ++i) 7604 ; 7605 } 7606 #pragma omp target 7607 #pragma omp teams distribute parallel for simd 7608 for (int i = 0; i < 10; ++i) { 7609 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7610 for (int i = 0; i < 10; ++i) 7611 ; 7612 } 7613 #pragma omp target 7614 #pragma omp teams distribute parallel for simd 7615 for (int i = 0; i < 10; ++i) { 7616 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7617 for (int i = 0; i < 10; ++i) 7618 ; 7619 } 7620 #pragma omp target 7621 #pragma omp teams distribute parallel for simd 7622 for (int i = 0; i < 10; ++i) { 7623 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7624 { 7625 bar(); 7626 } 7627 } 7628 #pragma omp target 7629 #pragma omp teams distribute parallel for simd 7630 for (int i = 0; i < 10; ++i) { 7631 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7632 { 7633 bar(); 7634 } 7635 } 7636 #pragma omp target 7637 #pragma omp teams distribute parallel for simd 7638 for (int i = 0; i < 10; ++i) { 7639 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7640 { 7641 bar(); 7642 } 7643 } 7644 #pragma omp target 7645 #pragma omp teams distribute parallel for simd 7646 for (int i = 0; i < 10; ++i) { 7647 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7648 { 7649 bar(); 7650 } 7651 } 7652 #pragma omp target 7653 #pragma omp teams distribute parallel for simd 7654 for (int i = 0; i < 10; ++i) { 7655 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7656 { 7657 bar(); 7658 } 7659 } 7660 #pragma omp target 7661 #pragma omp teams distribute parallel for simd 7662 for (int i = 0; i < 10; ++i) { 7663 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7664 { 7665 #pragma omp single 7666 { 7667 bar(); 7668 } 7669 } 7670 } 7671 #pragma omp target 7672 #pragma omp teams distribute parallel for simd 7673 for (int i = 0; i < 10; ++i) { 7674 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7675 for (int i = 0; i < 10; ++i) 7676 ; 7677 } 7678 #pragma omp target 7679 #pragma omp teams distribute parallel for simd 7680 for (int i = 0; i < 10; ++i) { 7681 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7682 for (int i = 0; i < 10; ++i) 7683 ; 7684 } 7685 #pragma omp target 7686 #pragma omp teams distribute parallel for simd 7687 for (int i = 0; i < 10; ++i) { 7688 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7689 { 7690 bar(); 7691 } 7692 } 7693 #pragma omp target 7694 #pragma omp teams distribute parallel for simd 7695 for (int i = 0; i < 10; ++i) { 7696 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7697 { 7698 bar(); 7699 } 7700 } 7701 #pragma omp target 7702 #pragma omp teams distribute parallel for simd 7703 for (int i = 0; i < 10; ++i) { 7704 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7705 bar(); 7706 } 7707 #pragma omp target 7708 #pragma omp teams distribute parallel for simd 7709 for (int i = 0; i < 10; ++i) { 7710 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7711 bar(); 7712 } 7713 #pragma omp target 7714 #pragma omp teams distribute parallel for simd 7715 for (int i = 0; i < 10; ++i) { 7716 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7717 bar(); 7718 } 7719 #pragma omp target 7720 #pragma omp teams distribute parallel for simd 7721 for (int i = 0; i < 10; ++i) { 7722 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7723 bar(); 7724 } 7725 #pragma omp target 7726 #pragma omp teams distribute parallel for simd 7727 for (int i = 0; i < 10; ++i) { 7728 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7729 bar(); 7730 } 7731 #pragma omp target 7732 #pragma omp teams distribute parallel for simd 7733 for (int i = 0; i < 10; ++i) { 7734 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7735 ++a; 7736 } 7737 #pragma omp target 7738 #pragma omp teams distribute parallel for simd 7739 for (int i = 0; i < 10; ++i) { 7740 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7741 ++a; 7742 } 7743 #pragma omp target 7744 #pragma omp teams distribute parallel for simd 7745 for (int i = 0; i < 10; ++i) { 7746 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7747 ++a; 7748 } 7749 #pragma omp target 7750 #pragma omp teams distribute parallel for simd 7751 for (int i = 0; i < 10; ++i) { 7752 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7753 for (int i = 0; i < 10; ++i) 7754 ; 7755 } 7756 #pragma omp target 7757 #pragma omp teams distribute parallel for simd 7758 for (int i = 0; i < 10; ++i) { 7759 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7760 ++a; 7761 } 7762 #pragma omp target 7763 #pragma omp teams distribute parallel for simd 7764 for (int i = 0; i < 10; ++i) { 7765 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7766 ++a; 7767 } 7768 #pragma omp target 7769 #pragma omp teams distribute parallel for simd 7770 for (int i = 0; i < 10; ++i) { 7771 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7772 ++a; 7773 } 7774 #pragma omp target 7775 #pragma omp teams distribute parallel for simd 7776 for (int i = 0; i < 10; ++i) { 7777 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7778 ++a; 7779 } 7780 #pragma omp target 7781 #pragma omp teams distribute parallel for simd 7782 for (int i = 0; i < 10; ++i) { 7783 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7784 for (int i = 0; i < 10; ++i) 7785 ++a; 7786 } 7787 #pragma omp target 7788 #pragma omp teams distribute parallel for simd 7789 for (int i = 0; i < 10; ++i) { 7790 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7791 for (int i = 0; i < 10; ++i) 7792 ++a; 7793 } 7794 #pragma omp target 7795 #pragma omp teams distribute parallel for simd 7796 for (int i = 0; i < 10; ++i) { 7797 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7798 for (int i = 0; i < 10; ++i) 7799 ++a; 7800 } 7801 #pragma omp target 7802 #pragma omp teams distribute parallel for simd 7803 for (int i = 0; i < 10; ++i) { 7804 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7805 for (int i = 0; i < 10; ++i) 7806 ++a; 7807 } 7808 #pragma omp target 7809 #pragma omp teams distribute parallel for simd 7810 for (int i = 0; i < 10; ++i) { 7811 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7812 for (int i = 0; i < 10; ++i) 7813 ++a; 7814 } 7815 #pragma omp target 7816 #pragma omp teams distribute parallel for simd 7817 for (int i = 0; i < 10; ++i) { 7818 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7819 for (int i = 0; i < 10; ++i) 7820 ++a; 7821 } 7822 #pragma omp target 7823 #pragma omp teams distribute parallel for simd 7824 for (int i = 0; i < 10; ++i) { 7825 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7826 ++a; 7827 } 7828 #pragma omp target 7829 #pragma omp teams distribute parallel for simd 7830 for (int i = 0; i < 10; ++i) { 7831 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7832 for (int i = 0; i < 10; ++i) 7833 ++a; 7834 } 7835 #pragma omp target 7836 #pragma omp teams distribute parallel for simd 7837 for (int i = 0; i < 10; ++i) { 7838 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7839 for (int i = 0; i < 10; ++i) 7840 ++a; 7841 } 7842 #pragma omp target 7843 #pragma omp teams distribute parallel for simd 7844 for (int i = 0; i < 10; ++i) { 7845 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7846 for (int i = 0; i < 10; ++i) 7847 ++a; 7848 } 7849 #pragma omp target 7850 #pragma omp teams distribute parallel for simd 7851 for (int i = 0; i < 10; ++i) { 7852 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7853 for (int i = 0; i < 10; ++i) 7854 ++a; 7855 } 7856 7857 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 7858 #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?}} 7859 for (int i = 0; i < 10; ++i) 7860 ; 7861 #pragma omp target 7862 #pragma omp teams distribute parallel for 7863 for (int i = 0; i < 10; ++i) { 7864 #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?}} 7865 for (int i = 0; i < 10; ++i) 7866 ; 7867 } 7868 #pragma omp target 7869 #pragma omp teams distribute parallel for 7870 for (int i = 0; i < 10; ++i) { 7871 #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?}} 7872 for (int i = 0; i < 10; ++i) 7873 ; 7874 } 7875 #pragma omp target 7876 #pragma omp teams distribute parallel for 7877 for (int i = 0; i < 10; ++i) { 7878 #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?}} 7879 for (int i = 0; i < 10; ++i) 7880 ; 7881 } 7882 #pragma omp target 7883 #pragma omp teams distribute parallel for 7884 for (int i = 0; i < 10; ++i) { 7885 #pragma omp simd // OK 7886 for (int i = 0; i < 10; ++i) 7887 ; 7888 } 7889 #pragma omp target 7890 #pragma omp teams distribute parallel for 7891 for (int i = 0; i < 10; ++i) { 7892 #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?}} 7893 for (int i = 0; i < 10; ++i) 7894 ; 7895 } 7896 #pragma omp target 7897 #pragma omp teams distribute parallel for 7898 for (int i = 0; i < 10; ++i) { 7899 #pragma omp parallel // OK 7900 for (int i = 0; i < 10; ++i) 7901 ; 7902 } 7903 #pragma omp target 7904 #pragma omp teams distribute parallel for 7905 for (int i = 0; i < 10; ++i) { 7906 #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?}} 7907 { 7908 bar(); 7909 } 7910 } 7911 #pragma omp target 7912 #pragma omp teams distribute parallel for 7913 for (int i = 0; i < 10; ++i) { 7914 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 7915 { 7916 bar(); 7917 } 7918 } 7919 #pragma omp target 7920 #pragma omp teams distribute parallel for 7921 for (int i = 0; i < 10; ++i) { 7922 #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?}} 7923 { 7924 bar(); 7925 } 7926 } 7927 #pragma omp target 7928 #pragma omp teams distribute parallel for 7929 for (int i = 0; i < 10; ++i) { 7930 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7931 { 7932 bar(); 7933 } 7934 } 7935 #pragma omp target 7936 #pragma omp teams distribute parallel for 7937 for (int i = 0; i < 10; ++i) { 7938 #pragma omp critical // OK 7939 { 7940 bar(); 7941 } 7942 } 7943 #pragma omp target 7944 #pragma omp teams distribute parallel for 7945 for (int i = 0; i < 10; ++i) { 7946 #pragma omp parallel // OK 7947 { 7948 #pragma omp single 7949 { 7950 bar(); 7951 } 7952 } 7953 } 7954 #pragma omp target 7955 #pragma omp teams distribute parallel for 7956 for (int i = 0; i < 10; ++i) { 7957 #pragma omp parallel for // OK 7958 for (int i = 0; i < 10; ++i) 7959 ; 7960 } 7961 #pragma omp target 7962 #pragma omp teams distribute parallel for 7963 for (int i = 0; i < 10; ++i) { 7964 #pragma omp parallel for simd // OK 7965 for (int i = 0; i < 10; ++i) 7966 ; 7967 } 7968 #pragma omp target 7969 #pragma omp teams distribute parallel for 7970 for (int i = 0; i < 10; ++i) { 7971 #pragma omp parallel sections // OK 7972 { 7973 bar(); 7974 } 7975 } 7976 #pragma omp target 7977 #pragma omp teams distribute parallel for 7978 for (int i = 0; i < 10; ++i) { 7979 #pragma omp task // OK 7980 { 7981 bar(); 7982 } 7983 } 7984 #pragma omp target 7985 #pragma omp teams distribute parallel for 7986 for (int i = 0; i < 10; ++i) { 7987 #pragma omp taskyield // OK 7988 bar(); 7989 } 7990 #pragma omp target 7991 #pragma omp teams distribute parallel for 7992 for (int i = 0; i < 10; ++i) { 7993 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7994 bar(); 7995 } 7996 #pragma omp target 7997 #pragma omp teams distribute parallel for 7998 for (int i = 0; i < 10; ++i) { 7999 #pragma omp taskwait // OK 8000 bar(); 8001 } 8002 #pragma omp target 8003 #pragma omp teams distribute parallel for 8004 for (int i = 0; i < 10; ++i) { 8005 #pragma omp flush // OK 8006 bar(); 8007 } 8008 #pragma omp target 8009 #pragma omp teams distribute parallel for 8010 for (int i = 0; i < 10; ++i) { 8011 #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?}} 8012 bar(); 8013 } 8014 #pragma omp target 8015 #pragma omp teams distribute parallel for 8016 for (int i = 0; i < 10; ++i) { 8017 #pragma omp atomic // OK 8018 ++a; 8019 } 8020 #pragma omp target 8021 #pragma omp teams distribute parallel for 8022 for (int i = 0; i < 10; ++i) { 8023 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 8024 ++a; 8025 } 8026 #pragma omp target 8027 #pragma omp teams distribute parallel for 8028 for (int i = 0; i < 10; ++i) { 8029 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 8030 ++a; 8031 } 8032 #pragma omp target 8033 #pragma omp teams distribute parallel for 8034 for (int i = 0; i < 10; ++i) { 8035 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 8036 for (int i = 0; i < 10; ++i) 8037 ; 8038 } 8039 #pragma omp target 8040 #pragma omp teams distribute parallel for 8041 for (int i = 0; i < 10; ++i) { 8042 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 8043 ++a; 8044 } 8045 #pragma omp target 8046 #pragma omp teams distribute parallel for 8047 for (int i = 0; i < 10; ++i) { 8048 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 8049 ++a; 8050 } 8051 #pragma omp target 8052 #pragma omp teams distribute parallel for 8053 for (int i = 0; i < 10; ++i) { 8054 #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?}} 8055 ++a; 8056 } 8057 #pragma omp target 8058 #pragma omp teams distribute parallel for 8059 for (int i = 0; i < 10; ++i) { 8060 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 8061 ++a; 8062 } 8063 #pragma omp target 8064 #pragma omp teams distribute parallel for 8065 for (int i = 0; i < 10; ++i) { 8066 #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?}} 8067 for (int i = 0; i < 10; ++i) 8068 ++a; 8069 } 8070 #pragma omp target 8071 #pragma omp teams distribute parallel for 8072 for (int i = 0; i < 10; ++i) { 8073 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 8074 for (int i = 0; i < 10; ++i) 8075 ++a; 8076 } 8077 #pragma omp target 8078 #pragma omp teams distribute parallel for 8079 for (int i = 0; i < 10; ++i) { 8080 #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?}} 8081 for (int i = 0; i < 10; ++i) 8082 ++a; 8083 } 8084 #pragma omp target 8085 #pragma omp teams distribute parallel for 8086 for (int i = 0; i < 10; ++i) { 8087 #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?}} 8088 for (int i = 0; i < 10; ++i) 8089 ++a; 8090 } 8091 #pragma omp target 8092 #pragma omp teams distribute parallel for 8093 for (int i = 0; i < 10; ++i) { 8094 #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?}} 8095 for (int i = 0; i < 10; ++i) 8096 ++a; 8097 } 8098 #pragma omp target 8099 #pragma omp teams distribute parallel for 8100 for (int i = 0; i < 10; ++i) { 8101 #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?}} 8102 for (int i = 0; i < 10; ++i) 8103 ++a; 8104 } 8105 #pragma omp target 8106 #pragma omp teams distribute parallel for 8107 for (int i = 0; i < 10; ++i) { 8108 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 8109 ++a; 8110 } 8111 #pragma omp target 8112 #pragma omp teams distribute parallel for 8113 for (int i = 0; i < 10; ++i) { 8114 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 8115 for (int i = 0; i < 10; ++i) 8116 ++a; 8117 } 8118 #pragma omp target 8119 #pragma omp teams distribute parallel for 8120 for (int i = 0; i < 10; ++i) { 8121 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 8122 for (int i = 0; i < 10; ++i) 8123 ++a; 8124 } 8125 #pragma omp target 8126 #pragma omp teams distribute parallel for 8127 for (int i = 0; i < 10; ++i) { 8128 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 8129 for (int i = 0; i < 10; ++i) 8130 ++a; 8131 } 8132 #pragma omp target 8133 #pragma omp teams distribute parallel for 8134 for (int i = 0; i < 10; ++i) { 8135 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 8136 for (int i = 0; i < 10; ++i) 8137 ++a; 8138 } 8139 8140 // TARGET TEAMS DIRECTIVE 8141 #pragma omp target teams 8142 #pragma omp parallel 8143 bar(); 8144 #pragma omp target teams 8145 #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?}} 8146 for (int i = 0; i < 10; ++i) 8147 ; 8148 #pragma omp target teams 8149 #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?}} 8150 for (int i = 0; i < 10; ++i) 8151 ; 8152 #pragma omp target teams 8153 #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?}} 8154 for (int i = 0; i < 10; ++i) 8155 ; 8156 #pragma omp target teams 8157 #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?}} 8158 { 8159 bar(); 8160 } 8161 #pragma omp target teams 8162 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 8163 { 8164 bar(); 8165 } 8166 #pragma omp target teams 8167 #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?}} 8168 bar(); 8169 8170 #pragma omp target teams 8171 #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?}} 8172 { 8173 bar(); 8174 } 8175 #pragma omp target teams 8176 #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?}} 8177 { 8178 bar(); 8179 } 8180 #pragma omp target teams 8181 #pragma omp parallel for 8182 for (int i = 0; i < 10; ++i) 8183 ; 8184 #pragma omp target teams 8185 #pragma omp parallel for simd 8186 for (int i = 0; i < 10; ++i) 8187 ; 8188 #pragma omp target teams 8189 #pragma omp parallel sections 8190 { 8191 bar(); 8192 } 8193 #pragma omp target teams 8194 #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?}} 8195 { 8196 bar(); 8197 } 8198 #pragma omp target teams 8199 { 8200 #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?}} 8201 bar(); 8202 } 8203 #pragma omp target teams 8204 { 8205 #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?}} 8206 bar(); 8207 } 8208 #pragma omp target teams 8209 { 8210 #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?}} 8211 bar(); 8212 } 8213 #pragma omp target teams 8214 { 8215 #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?}} 8216 bar(); 8217 } 8218 #pragma omp target teams 8219 { 8220 #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?}} 8221 bar(); 8222 } 8223 #pragma omp target teams 8224 { 8225 #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?}} 8226 ++a; 8227 } 8228 #pragma omp target teams 8229 { 8230 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 8231 ++a; 8232 } 8233 #pragma omp target teams 8234 { 8235 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 8236 ++a; 8237 } 8238 #pragma omp target teams 8239 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8240 for (int i = 0; i < 10; ++i) 8241 ; 8242 #pragma omp target teams 8243 { 8244 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8245 } 8246 #pragma omp target teams 8247 { 8248 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8249 } 8250 #pragma omp target teams 8251 { 8252 #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?}} 8253 ++a; 8254 } 8255 #pragma omp target teams 8256 { 8257 #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?}} 8258 for (int i = 0; i < 10; ++i) 8259 ++a; 8260 } 8261 #pragma omp target teams 8262 #pragma omp distribute 8263 for (int i = 0; i < 10; ++i) 8264 ; 8265 #pragma omp target teams 8266 { 8267 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 8268 ++a; 8269 } 8270 #pragma omp target teams 8271 #pragma omp distribute parallel for 8272 for (int i = 0; i < 10; ++i) 8273 ; 8274 #pragma omp target teams 8275 { 8276 #pragma omp distribute parallel for 8277 for (int i = 0; i < 10; ++i) 8278 ; 8279 #pragma omp distribute parallel for 8280 for (int j = 0; j < 10; ++j) 8281 ; 8282 } 8283 #pragma omp target teams 8284 { 8285 #pragma omp distribute parallel for simd 8286 for (int i = 0; i < 10; ++i) 8287 ; 8288 #pragma omp distribute parallel for simd 8289 for (int j = 0; j < 10; ++j) 8290 ; 8291 } 8292 #pragma omp target teams 8293 { 8294 #pragma omp distribute simd 8295 for (int i = 0; i < 10; ++i) 8296 ; 8297 #pragma omp distribute simd 8298 for (int j = 0; j < 10; ++j) 8299 ; 8300 } 8301 #pragma omp target teams 8302 { 8303 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 8304 for (int i = 0; i < 10; ++i) 8305 ; 8306 } 8307 #pragma omp target teams 8308 { 8309 #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?}} 8310 for (int i = 0; i < 10; ++i) 8311 ; 8312 } 8313 #pragma omp target teams 8314 { 8315 #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?}} 8316 for (int i = 0; i < 10; ++i) 8317 ; 8318 } 8319 #pragma omp target teams 8320 { 8321 #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?}} 8322 for (int i = 0; i < 10; ++i) 8323 ; 8324 } 8325 #pragma omp target teams 8326 { 8327 #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?}} 8328 for (int i = 0; i < 10; ++i) 8329 ; 8330 } 8331 #pragma omp target teams 8332 { 8333 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 8334 a++; 8335 } 8336 #pragma omp target teams 8337 { 8338 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 8339 for (int i = 0; i < 10; ++i) 8340 ; 8341 } 8342 #pragma omp target teams 8343 { 8344 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8345 for (int i = 0; i < 10; ++i) 8346 ; 8347 } 8348 #pragma omp target teams 8349 { 8350 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 8351 for (int i = 0; i < 10; ++i) 8352 ; 8353 } 8354 #pragma omp target teams 8355 { 8356 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 8357 for (int i = 0; i < 10; ++i) 8358 ; 8359 } 8360 8361 // TARGET TEAMS DISTRIBUTE DIRECTIVE 8362 #pragma omp target teams distribute // OK 8363 for (int i = 0; i < 10; ++i) 8364 ; 8365 #pragma omp target teams distribute 8366 for (int i = 0; i < 10; ++i) { 8367 #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?}} 8368 for (int i = 0; i < 10; ++i) 8369 ; 8370 } 8371 #pragma omp target teams distribute 8372 for (int i = 0; i < 10; ++i) { 8373 #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?}} 8374 for (int i = 0; i < 10; ++i) 8375 ; 8376 } 8377 #pragma omp target teams distribute 8378 for (int i = 0; i < 10; ++i) { 8379 #pragma omp for // OK 8380 for (int i = 0; i < 10; ++i) 8381 ; 8382 } 8383 #pragma omp target teams distribute 8384 for (int i = 0; i < 10; ++i) { 8385 #pragma omp simd // OK 8386 for (int i = 0; i < 10; ++i) 8387 ; 8388 } 8389 #pragma omp target teams distribute 8390 for (int i = 0; i < 10; ++i) { 8391 #pragma omp for simd // OK 8392 for (int i = 0; i < 10; ++i) 8393 ; 8394 } 8395 #pragma omp target teams distribute 8396 for (int i = 0; i < 10; ++i) { 8397 #pragma omp parallel // OK 8398 for (int i = 0; i < 10; ++i) 8399 ; 8400 } 8401 #pragma omp target teams distribute 8402 for (int i = 0; i < 10; ++i) { 8403 #pragma omp sections // OK 8404 { 8405 bar(); 8406 } 8407 } 8408 #pragma omp target teams distribute 8409 for (int i = 0; i < 10; ++i) { 8410 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8411 { 8412 bar(); 8413 } 8414 } 8415 #pragma omp target teams distribute 8416 for (int i = 0; i < 10; ++i) { 8417 #pragma omp single // OK 8418 { 8419 bar(); 8420 } 8421 } 8422 #pragma omp target teams distribute 8423 for (int i = 0; i < 10; ++i) { 8424 #pragma omp master // OK 8425 { 8426 bar(); 8427 } 8428 } 8429 #pragma omp target teams distribute 8430 for (int i = 0; i < 10; ++i) { 8431 #pragma omp critical // OK 8432 { 8433 bar(); 8434 } 8435 } 8436 #pragma omp target teams distribute 8437 for (int i = 0; i < 10; ++i) { 8438 #pragma omp parallel // OK 8439 { 8440 #pragma omp single 8441 { 8442 bar(); 8443 } 8444 } 8445 } 8446 #pragma omp target teams distribute 8447 for (int i = 0; i < 10; ++i) { 8448 #pragma omp parallel for // OK 8449 for (int i = 0; i < 10; ++i) 8450 ; 8451 } 8452 #pragma omp target teams distribute 8453 for (int i = 0; i < 10; ++i) { 8454 #pragma omp parallel for simd // OK 8455 for (int i = 0; i < 10; ++i) 8456 ; 8457 } 8458 #pragma omp target teams distribute 8459 for (int i = 0; i < 10; ++i) { 8460 #pragma omp parallel sections // OK 8461 { 8462 bar(); 8463 } 8464 } 8465 #pragma omp target teams distribute 8466 for (int i = 0; i < 10; ++i) { 8467 #pragma omp task // OK 8468 { 8469 bar(); 8470 } 8471 } 8472 #pragma omp target teams distribute 8473 for (int i = 0; i < 10; ++i) { 8474 #pragma omp taskyield // OK 8475 bar(); 8476 } 8477 #pragma omp target teams distribute 8478 for (int i = 0; i < 10; ++i) { 8479 #pragma omp barrier // OK 8480 bar(); 8481 } 8482 #pragma omp target teams distribute 8483 for (int i = 0; i < 10; ++i) { 8484 #pragma omp taskwait // OK 8485 bar(); 8486 } 8487 #pragma omp target teams distribute 8488 for (int i = 0; i < 10; ++i) { 8489 #pragma omp flush // OK 8490 bar(); 8491 } 8492 #pragma omp target teams distribute 8493 for (int i = 0; i < 10; ++i) { 8494 #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?}} 8495 bar(); 8496 } 8497 #pragma omp target teams distribute 8498 for (int i = 0; i < 10; ++i) { 8499 #pragma omp atomic // OK 8500 ++a; 8501 } 8502 #pragma omp target teams distribute 8503 for (int i = 0; i < 10; ++i) { 8504 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8505 ++a; 8506 } 8507 #pragma omp target teams distribute 8508 for (int i = 0; i < 10; ++i) { 8509 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8510 ++a; 8511 } 8512 #pragma omp target teams distribute 8513 for (int i = 0; i < 10; ++i) { 8514 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8515 for (int i = 0; i < 10; ++i) 8516 ; 8517 } 8518 #pragma omp target teams distribute 8519 for (int i = 0; i < 10; ++i) { 8520 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8521 ++a; 8522 } 8523 #pragma omp target teams distribute 8524 for (int i = 0; i < 10; ++i) { 8525 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8526 ++a; 8527 } 8528 #pragma omp target teams distribute 8529 for (int i = 0; i < 10; ++i) { 8530 #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?}} 8531 ++a; 8532 } 8533 #pragma omp target teams distribute 8534 for (int i = 0; i < 10; ++i) { 8535 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8536 ++a; 8537 } 8538 #pragma omp target teams distribute 8539 for (int i = 0; i < 10; ++i) { 8540 #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?}} 8541 for (int i = 0; i < 10; ++i) 8542 ++a; 8543 } 8544 #pragma omp target teams distribute 8545 for (int i = 0; i < 10; ++i) { 8546 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8547 for (int i = 0; i < 10; ++i) 8548 ++a; 8549 } 8550 #pragma omp target teams distribute 8551 for (int i = 0; i < 10; ++i) { 8552 #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?}} 8553 for (int i = 0; i < 10; ++i) 8554 ++a; 8555 } 8556 #pragma omp target teams distribute 8557 for (int i = 0; i < 10; ++i) { 8558 #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?}} 8559 for (int i = 0; i < 10; ++i) 8560 ++a; 8561 } 8562 #pragma omp target teams distribute 8563 for (int i = 0; i < 10; ++i) { 8564 #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?}} 8565 for (int i = 0; i < 10; ++i) 8566 ++a; 8567 } 8568 #pragma omp target teams distribute 8569 for (int i = 0; i < 10; ++i) { 8570 #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?}} 8571 for (int i = 0; i < 10; ++i) 8572 ; 8573 } 8574 #pragma omp target teams distribute 8575 for (int i = 0; i < 10; ++i) { 8576 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8577 a++; 8578 } 8579 #pragma omp target teams distribute 8580 for (int i = 0; i < 10; ++i) { 8581 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8582 for (int i = 0; i < 10; ++i) 8583 ; 8584 } 8585 #pragma omp target teams distribute 8586 for (int i = 0; i < 10; ++i) { 8587 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8588 for (int i = 0; i < 10; ++i) 8589 ; 8590 } 8591 #pragma omp target teams distribute 8592 for (int i = 0; i < 10; ++i) { 8593 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8594 for (int i = 0; i < 10; ++i) 8595 ; 8596 } 8597 #pragma omp target teams distribute 8598 for (int i = 0; i < 10; ++i) { 8599 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8600 for (int i = 0; i < 10; ++i) 8601 ; 8602 } 8603 8604 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8605 #pragma omp target teams distribute parallel for // OK 8606 for (int i = 0; i < 10; ++i) 8607 ; 8608 #pragma omp target teams distribute parallel for 8609 for (int i = 0; i < 10; ++i) { 8610 #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?}} 8611 for (int i = 0; i < 10; ++i) 8612 ; 8613 } 8614 #pragma omp target teams distribute parallel for 8615 for (int i = 0; i < 10; ++i) { 8616 #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?}} 8617 for (int i = 0; i < 10; ++i) 8618 ; 8619 } 8620 #pragma omp target teams distribute parallel for 8621 for (int i = 0; i < 10; ++i) { 8622 #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?}} 8623 for (int i = 0; i < 10; ++i) 8624 ; 8625 } 8626 #pragma omp target teams distribute parallel for 8627 for (int i = 0; i < 10; ++i) { 8628 #pragma omp simd // OK 8629 for (int i = 0; i < 10; ++i) 8630 ; 8631 } 8632 #pragma omp target teams distribute parallel for 8633 for (int i = 0; i < 10; ++i) { 8634 #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?}} 8635 for (int i = 0; i < 10; ++i) 8636 ; 8637 } 8638 #pragma omp target teams distribute parallel for 8639 for (int i = 0; i < 10; ++i) { 8640 #pragma omp parallel // OK 8641 for (int i = 0; i < 10; ++i) 8642 ; 8643 } 8644 #pragma omp target teams distribute parallel for 8645 for (int i = 0; i < 10; ++i) { 8646 #pragma omp 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?}} 8647 { 8648 bar(); 8649 } 8650 } 8651 #pragma omp target teams distribute parallel for 8652 for (int i = 0; i < 10; ++i) { 8653 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 8654 { 8655 bar(); 8656 } 8657 } 8658 #pragma omp target teams distribute parallel for 8659 for (int i = 0; i < 10; ++i) { 8660 #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?}} 8661 { 8662 bar(); 8663 } 8664 } 8665 #pragma omp target teams distribute parallel for 8666 for (int i = 0; i < 10; ++i) { 8667 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8668 { 8669 bar(); 8670 } 8671 } 8672 #pragma omp target teams distribute parallel for 8673 for (int i = 0; i < 10; ++i) { 8674 #pragma omp critical // OK 8675 { 8676 bar(); 8677 } 8678 } 8679 #pragma omp target teams distribute parallel for 8680 for (int i = 0; i < 10; ++i) { 8681 #pragma omp parallel // OK 8682 { 8683 #pragma omp single 8684 { 8685 bar(); 8686 } 8687 } 8688 } 8689 #pragma omp target teams distribute parallel for 8690 for (int i = 0; i < 10; ++i) { 8691 #pragma omp parallel for // OK 8692 for (int i = 0; i < 10; ++i) 8693 ; 8694 } 8695 #pragma omp target teams distribute parallel for 8696 for (int i = 0; i < 10; ++i) { 8697 #pragma omp parallel for simd // OK 8698 for (int i = 0; i < 10; ++i) 8699 ; 8700 } 8701 #pragma omp target teams distribute parallel for 8702 for (int i = 0; i < 10; ++i) { 8703 #pragma omp parallel sections // OK 8704 { 8705 bar(); 8706 } 8707 } 8708 #pragma omp target teams distribute parallel for 8709 for (int i = 0; i < 10; ++i) { 8710 #pragma omp task // OK 8711 { 8712 bar(); 8713 } 8714 } 8715 #pragma omp target teams distribute parallel for 8716 for (int i = 0; i < 10; ++i) { 8717 #pragma omp taskyield // OK 8718 bar(); 8719 } 8720 #pragma omp target teams distribute parallel for 8721 for (int i = 0; i < 10; ++i) { 8722 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8723 bar(); 8724 } 8725 #pragma omp target teams distribute parallel for 8726 for (int i = 0; i < 10; ++i) { 8727 #pragma omp taskwait // OK 8728 bar(); 8729 } 8730 #pragma omp target teams distribute parallel for 8731 for (int i = 0; i < 10; ++i) { 8732 #pragma omp flush // OK 8733 bar(); 8734 } 8735 #pragma omp target teams distribute parallel for 8736 for (int i = 0; i < 10; ++i) { 8737 #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?}} 8738 bar(); 8739 } 8740 #pragma omp target teams distribute parallel for 8741 for (int i = 0; i < 10; ++i) { 8742 #pragma omp atomic // OK 8743 ++a; 8744 } 8745 #pragma omp target teams distribute parallel for 8746 for (int i = 0; i < 10; ++i) { 8747 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8748 ++a; 8749 } 8750 #pragma omp target teams distribute parallel for 8751 for (int i = 0; i < 10; ++i) { 8752 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8753 ++a; 8754 } 8755 #pragma omp target teams distribute parallel for 8756 for (int i = 0; i < 10; ++i) { 8757 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8758 for (int i = 0; i < 10; ++i) 8759 ; 8760 } 8761 #pragma omp target teams distribute parallel for 8762 for (int i = 0; i < 10; ++i) { 8763 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8764 ++a; 8765 } 8766 #pragma omp target teams distribute parallel for 8767 for (int i = 0; i < 10; ++i) { 8768 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8769 ++a; 8770 } 8771 #pragma omp target teams distribute parallel for 8772 for (int i = 0; i < 10; ++i) { 8773 #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?}} 8774 ++a; 8775 } 8776 #pragma omp target teams distribute parallel for 8777 for (int i = 0; i < 10; ++i) { 8778 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8779 ++a; 8780 } 8781 #pragma omp target teams distribute parallel for 8782 for (int i = 0; i < 10; ++i) { 8783 #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?}} 8784 for (int i = 0; i < 10; ++i) 8785 ++a; 8786 } 8787 #pragma omp target teams distribute parallel for 8788 for (int i = 0; i < 10; ++i) { 8789 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8790 for (int i = 0; i < 10; ++i) 8791 ++a; 8792 } 8793 #pragma omp target teams distribute parallel for 8794 for (int i = 0; i < 10; ++i) { 8795 #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?}} 8796 for (int i = 0; i < 10; ++i) 8797 ++a; 8798 } 8799 #pragma omp target teams distribute parallel for 8800 for (int i = 0; i < 10; ++i) { 8801 #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?}} 8802 for (int i = 0; i < 10; ++i) 8803 ++a; 8804 } 8805 #pragma omp target teams distribute parallel for 8806 for (int i = 0; i < 10; ++i) { 8807 #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?}} 8808 for (int i = 0; i < 10; ++i) 8809 ++a; 8810 } 8811 #pragma omp target teams distribute parallel for 8812 for (int i = 0; i < 10; ++i) { 8813 #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?}} 8814 for (int i = 0; i < 10; ++i) 8815 ; 8816 } 8817 #pragma omp target teams distribute parallel for 8818 for (int i = 0; i < 10; ++i) { 8819 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8820 a++; 8821 } 8822 #pragma omp target teams distribute parallel for 8823 for (int i = 0; i < 10; ++i) { 8824 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8825 for (int i = 0; i < 10; ++i) 8826 ; 8827 } 8828 #pragma omp target teams distribute parallel for 8829 for (int i = 0; i < 10; ++i) { 8830 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8831 for (int i = 0; i < 10; ++i) 8832 ; 8833 } 8834 #pragma omp target teams distribute parallel for 8835 for (int i = 0; i < 10; ++i) { 8836 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8837 for (int i = 0; i < 10; ++i) 8838 ; 8839 } 8840 #pragma omp target teams distribute parallel for 8841 for (int i = 0; i < 10; ++i) { 8842 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8843 for (int i = 0; i < 10; ++i) 8844 ; 8845 } 8846 8847 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 8848 #pragma omp target teams distribute parallel for simd // OK 8849 for (int i = 0; i < 10; ++i) 8850 ; 8851 #pragma omp target teams distribute parallel for simd 8852 for (int i = 0; i < 10; ++i) { 8853 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8854 for (int i = 0; i < 10; ++i) 8855 ; 8856 } 8857 #pragma omp target teams distribute parallel for simd 8858 for (int i = 0; i < 10; ++i) { 8859 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8860 for (int i = 0; i < 10; ++i) 8861 ; 8862 } 8863 #pragma omp target teams distribute parallel for simd 8864 for (int i = 0; i < 10; ++i) { 8865 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8866 for (int i = 0; i < 10; ++i) 8867 ; 8868 } 8869 #pragma omp target teams distribute parallel for simd 8870 for (int i = 0; i < 10; ++i) { 8871 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8872 for (int i = 0; i < 10; ++i) 8873 ; 8874 } 8875 #pragma omp target teams distribute parallel for simd 8876 for (int i = 0; i < 10; ++i) { 8877 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8878 for (int i = 0; i < 10; ++i) 8879 ; 8880 } 8881 #pragma omp target teams distribute parallel for simd 8882 for (int i = 0; i < 10; ++i) { 8883 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8884 for (int i = 0; i < 10; ++i) 8885 ; 8886 } 8887 #pragma omp target teams distribute parallel for simd 8888 for (int i = 0; i < 10; ++i) { 8889 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8890 { 8891 bar(); 8892 } 8893 } 8894 #pragma omp target teams distribute parallel for simd 8895 for (int i = 0; i < 10; ++i) { 8896 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8897 { 8898 bar(); 8899 } 8900 } 8901 #pragma omp target teams distribute parallel for simd 8902 for (int i = 0; i < 10; ++i) { 8903 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8904 { 8905 bar(); 8906 } 8907 } 8908 #pragma omp target teams distribute parallel for simd 8909 for (int i = 0; i < 10; ++i) { 8910 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8911 { 8912 bar(); 8913 } 8914 } 8915 #pragma omp target teams distribute parallel for simd 8916 for (int i = 0; i < 10; ++i) { 8917 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8918 { 8919 bar(); 8920 } 8921 } 8922 #pragma omp target teams distribute parallel for simd 8923 for (int i = 0; i < 10; ++i) { 8924 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8925 { 8926 #pragma omp single 8927 { 8928 bar(); 8929 } 8930 } 8931 } 8932 #pragma omp target teams distribute parallel for simd 8933 for (int i = 0; i < 10; ++i) { 8934 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8935 for (int i = 0; i < 10; ++i) 8936 ; 8937 } 8938 #pragma omp target teams distribute parallel for simd 8939 for (int i = 0; i < 10; ++i) { 8940 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8941 for (int i = 0; i < 10; ++i) 8942 ; 8943 } 8944 #pragma omp target teams distribute parallel for simd 8945 for (int i = 0; i < 10; ++i) { 8946 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8947 { 8948 bar(); 8949 } 8950 } 8951 #pragma omp target teams distribute parallel for simd 8952 for (int i = 0; i < 10; ++i) { 8953 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8954 { 8955 bar(); 8956 } 8957 } 8958 #pragma omp target teams distribute parallel for simd 8959 for (int i = 0; i < 10; ++i) { 8960 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8961 bar(); 8962 } 8963 #pragma omp target teams distribute parallel for simd 8964 for (int i = 0; i < 10; ++i) { 8965 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8966 bar(); 8967 } 8968 #pragma omp target teams distribute parallel for simd 8969 for (int i = 0; i < 10; ++i) { 8970 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8971 bar(); 8972 } 8973 #pragma omp target teams distribute parallel for simd 8974 for (int i = 0; i < 10; ++i) { 8975 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8976 bar(); 8977 } 8978 #pragma omp target teams distribute parallel for simd 8979 for (int i = 0; i < 10; ++i) { 8980 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8981 bar(); 8982 } 8983 #pragma omp target teams distribute parallel for simd 8984 for (int i = 0; i < 10; ++i) { 8985 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 8986 ++a; 8987 } 8988 #pragma omp target teams distribute parallel for simd 8989 for (int i = 0; i < 10; ++i) { 8990 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8991 ++a; 8992 } 8993 #pragma omp target teams distribute parallel for simd 8994 for (int i = 0; i < 10; ++i) { 8995 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8996 ++a; 8997 } 8998 #pragma omp target teams distribute parallel for simd 8999 for (int i = 0; i < 10; ++i) { 9000 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9001 for (int i = 0; i < 10; ++i) 9002 ; 9003 } 9004 #pragma omp target teams distribute parallel for simd 9005 for (int i = 0; i < 10; ++i) { 9006 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9007 ++a; 9008 } 9009 #pragma omp target teams distribute parallel for simd 9010 for (int i = 0; i < 10; ++i) { 9011 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9012 ++a; 9013 } 9014 #pragma omp target teams distribute parallel for simd 9015 for (int i = 0; i < 10; ++i) { 9016 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9017 ++a; 9018 } 9019 #pragma omp target teams distribute parallel for simd 9020 for (int i = 0; i < 10; ++i) { 9021 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9022 ++a; 9023 } 9024 #pragma omp target teams distribute parallel for simd 9025 for (int i = 0; i < 10; ++i) { 9026 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9027 for (int i = 0; i < 10; ++i) 9028 ++a; 9029 } 9030 #pragma omp target teams distribute parallel for simd 9031 for (int i = 0; i < 10; ++i) { 9032 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9033 for (int i = 0; i < 10; ++i) 9034 ++a; 9035 } 9036 #pragma omp target teams distribute parallel for simd 9037 for (int i = 0; i < 10; ++i) { 9038 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9039 for (int i = 0; i < 10; ++i) 9040 ++a; 9041 } 9042 #pragma omp target teams distribute parallel for simd 9043 for (int i = 0; i < 10; ++i) { 9044 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9045 for (int i = 0; i < 10; ++i) 9046 ++a; 9047 } 9048 #pragma omp target teams distribute parallel for simd 9049 for (int i = 0; i < 10; ++i) { 9050 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9051 for (int i = 0; i < 10; ++i) 9052 ++a; 9053 } 9054 #pragma omp target teams distribute parallel for simd 9055 for (int i = 0; i < 10; ++i) { 9056 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9057 for (int i = 0; i < 10; ++i) 9058 ; 9059 } 9060 #pragma omp target teams distribute parallel for simd 9061 for (int i = 0; i < 10; ++i) { 9062 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9063 a++; 9064 } 9065 #pragma omp target teams distribute parallel for simd 9066 for (int i = 0; i < 10; ++i) { 9067 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9068 for (int i = 0; i < 10; ++i) 9069 ; 9070 } 9071 #pragma omp target teams distribute parallel for simd 9072 for (int i = 0; i < 10; ++i) { 9073 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9074 for (int i = 0; i < 10; ++i) 9075 ; 9076 } 9077 #pragma omp target teams distribute parallel for simd 9078 for (int i = 0; i < 10; ++i) { 9079 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9080 for (int i = 0; i < 10; ++i) 9081 ; 9082 } 9083 #pragma omp target teams distribute parallel for simd 9084 for (int i = 0; i < 10; ++i) { 9085 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9086 for (int i = 0; i < 10; ++i) 9087 ; 9088 } 9089 9090 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 9091 #pragma omp target teams distribute simd // OK 9092 for (int i = 0; i < 10; ++i) 9093 ; 9094 #pragma omp target teams distribute simd 9095 for (int i = 0; i < 10; ++i) { 9096 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9097 for (int i = 0; i < 10; ++i) 9098 ; 9099 } 9100 #pragma omp target teams distribute simd 9101 for (int i = 0; i < 10; ++i) { 9102 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9103 for (int i = 0; i < 10; ++i) 9104 ; 9105 } 9106 #pragma omp target teams distribute simd 9107 for (int i = 0; i < 10; ++i) { 9108 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9109 for (int i = 0; i < 10; ++i) 9110 ; 9111 } 9112 #pragma omp target teams distribute simd 9113 for (int i = 0; i < 10; ++i) { 9114 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9115 for (int i = 0; i < 10; ++i) 9116 ; 9117 } 9118 #pragma omp target teams distribute simd 9119 for (int i = 0; i < 10; ++i) { 9120 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9121 for (int i = 0; i < 10; ++i) 9122 ; 9123 } 9124 #pragma omp target teams distribute simd 9125 for (int i = 0; i < 10; ++i) { 9126 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9127 for (int i = 0; i < 10; ++i) 9128 ; 9129 } 9130 #pragma omp target teams distribute simd 9131 for (int i = 0; i < 10; ++i) { 9132 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9133 { 9134 bar(); 9135 } 9136 } 9137 #pragma omp target teams distribute simd 9138 for (int i = 0; i < 10; ++i) { 9139 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9140 { 9141 bar(); 9142 } 9143 } 9144 #pragma omp target teams distribute simd 9145 for (int i = 0; i < 10; ++i) { 9146 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9147 { 9148 bar(); 9149 } 9150 } 9151 #pragma omp target teams distribute simd 9152 for (int i = 0; i < 10; ++i) { 9153 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9154 { 9155 bar(); 9156 } 9157 } 9158 #pragma omp target teams distribute simd 9159 for (int i = 0; i < 10; ++i) { 9160 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9161 { 9162 bar(); 9163 } 9164 } 9165 #pragma omp target teams distribute simd 9166 for (int i = 0; i < 10; ++i) { 9167 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9168 { 9169 #pragma omp single 9170 { 9171 bar(); 9172 } 9173 } 9174 } 9175 #pragma omp target teams distribute simd 9176 for (int i = 0; i < 10; ++i) { 9177 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9178 for (int i = 0; i < 10; ++i) 9179 ; 9180 } 9181 #pragma omp target teams distribute simd 9182 for (int i = 0; i < 10; ++i) { 9183 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9184 for (int i = 0; i < 10; ++i) 9185 ; 9186 } 9187 #pragma omp target teams distribute simd 9188 for (int i = 0; i < 10; ++i) { 9189 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9190 { 9191 bar(); 9192 } 9193 } 9194 #pragma omp target teams distribute simd 9195 for (int i = 0; i < 10; ++i) { 9196 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9197 { 9198 bar(); 9199 } 9200 } 9201 #pragma omp target teams distribute simd 9202 for (int i = 0; i < 10; ++i) { 9203 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9204 bar(); 9205 } 9206 #pragma omp target teams distribute simd 9207 for (int i = 0; i < 10; ++i) { 9208 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9209 bar(); 9210 } 9211 #pragma omp target teams distribute simd 9212 for (int i = 0; i < 10; ++i) { 9213 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9214 bar(); 9215 } 9216 #pragma omp target teams distribute simd 9217 for (int i = 0; i < 10; ++i) { 9218 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9219 bar(); 9220 } 9221 #pragma omp target teams distribute simd 9222 for (int i = 0; i < 10; ++i) { 9223 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9224 bar(); 9225 } 9226 #pragma omp target teams distribute simd 9227 for (int i = 0; i < 10; ++i) { 9228 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 9229 ++a; 9230 } 9231 #pragma omp target teams distribute simd 9232 for (int i = 0; i < 10; ++i) { 9233 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9234 ++a; 9235 } 9236 #pragma omp target teams distribute simd 9237 for (int i = 0; i < 10; ++i) { 9238 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9239 ++a; 9240 } 9241 #pragma omp target teams distribute simd 9242 for (int i = 0; i < 10; ++i) { 9243 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9244 for (int i = 0; i < 10; ++i) 9245 ; 9246 } 9247 #pragma omp target teams distribute simd 9248 for (int i = 0; i < 10; ++i) { 9249 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9250 ++a; 9251 } 9252 #pragma omp target teams distribute simd 9253 for (int i = 0; i < 10; ++i) { 9254 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9255 ++a; 9256 } 9257 #pragma omp target teams distribute simd 9258 for (int i = 0; i < 10; ++i) { 9259 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9260 ++a; 9261 } 9262 #pragma omp target teams distribute simd 9263 for (int i = 0; i < 10; ++i) { 9264 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9265 ++a; 9266 } 9267 #pragma omp target teams distribute simd 9268 for (int i = 0; i < 10; ++i) { 9269 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9270 for (int i = 0; i < 10; ++i) 9271 ++a; 9272 } 9273 #pragma omp target teams distribute simd 9274 for (int i = 0; i < 10; ++i) { 9275 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9276 for (int i = 0; i < 10; ++i) 9277 ++a; 9278 } 9279 #pragma omp target teams distribute simd 9280 for (int i = 0; i < 10; ++i) { 9281 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9282 for (int i = 0; i < 10; ++i) 9283 ++a; 9284 } 9285 #pragma omp target teams distribute simd 9286 for (int i = 0; i < 10; ++i) { 9287 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9288 for (int i = 0; i < 10; ++i) 9289 ++a; 9290 } 9291 #pragma omp target teams distribute simd 9292 for (int i = 0; i < 10; ++i) { 9293 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9294 for (int i = 0; i < 10; ++i) 9295 ++a; 9296 } 9297 #pragma omp target teams distribute simd 9298 for (int i = 0; i < 10; ++i) { 9299 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9300 for (int i = 0; i < 10; ++i) 9301 ; 9302 } 9303 #pragma omp target teams distribute simd 9304 for (int i = 0; i < 10; ++i) { 9305 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9306 a++; 9307 } 9308 #pragma omp target teams distribute simd 9309 for (int i = 0; i < 10; ++i) { 9310 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9311 for (int i = 0; i < 10; ++i) 9312 ; 9313 } 9314 #pragma omp target teams distribute simd 9315 for (int i = 0; i < 10; ++i) { 9316 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9317 for (int i = 0; i < 10; ++i) 9318 ; 9319 } 9320 #pragma omp target teams distribute simd 9321 for (int i = 0; i < 10; ++i) { 9322 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9323 for (int i = 0; i < 10; ++i) 9324 ; 9325 } 9326 #pragma omp target teams distribute simd 9327 for (int i = 0; i < 10; ++i) { 9328 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9329 for (int i = 0; i < 10; ++i) 9330 ; 9331 } 9332 9333 } 9334 9335 void foo() { 9336 int a = 0; 9337 // PARALLEL DIRECTIVE 9338 #pragma omp parallel 9339 #pragma omp for 9340 for (int i = 0; i < 10; ++i) 9341 ; 9342 #pragma omp parallel 9343 #pragma omp simd 9344 for (int i = 0; i < 10; ++i) 9345 ; 9346 #pragma omp parallel 9347 #pragma omp for simd 9348 for (int i = 0; i < 10; ++i) 9349 ; 9350 #pragma omp parallel 9351 #pragma omp sections 9352 { 9353 bar(); 9354 } 9355 #pragma omp parallel 9356 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 9357 { 9358 bar(); 9359 } 9360 #pragma omp parallel 9361 #pragma omp sections 9362 { 9363 bar(); 9364 } 9365 #pragma omp parallel 9366 #pragma omp single 9367 bar(); 9368 #pragma omp parallel 9369 #pragma omp master 9370 bar(); 9371 #pragma omp parallel master 9372 bar(); 9373 #pragma omp parallel 9374 #pragma omp critical 9375 bar(); 9376 #pragma omp parallel 9377 #pragma omp parallel for 9378 for (int i = 0; i < 10; ++i) 9379 ; 9380 #pragma omp parallel 9381 #pragma omp parallel for simd 9382 for (int i = 0; i < 10; ++i) 9383 ; 9384 #pragma omp parallel 9385 #pragma omp parallel sections 9386 { 9387 bar(); 9388 } 9389 #pragma omp parallel 9390 #pragma omp task 9391 { 9392 bar(); 9393 } 9394 #pragma omp parallel 9395 { 9396 #pragma omp taskyield 9397 bar(); 9398 } 9399 #pragma omp parallel 9400 { 9401 #pragma omp barrier 9402 bar(); 9403 } 9404 #pragma omp parallel 9405 { 9406 #pragma omp taskwait 9407 bar(); 9408 } 9409 #pragma omp parallel 9410 { 9411 #pragma omp flush 9412 bar(); 9413 } 9414 #pragma omp parallel 9415 { 9416 #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?}} 9417 bar(); 9418 } 9419 #pragma omp parallel 9420 { 9421 #pragma omp atomic 9422 ++a; 9423 } 9424 #pragma omp parallel 9425 { 9426 #pragma omp target 9427 ++a; 9428 } 9429 #pragma omp parallel 9430 { 9431 #pragma omp target parallel 9432 ++a; 9433 } 9434 #pragma omp parallel 9435 #pragma omp target parallel for 9436 for (int i = 0; i < 10; ++i) 9437 ; 9438 #pragma omp parallel 9439 { 9440 #pragma omp target enter data map(to: a) 9441 ++a; 9442 } 9443 #pragma omp parallel 9444 { 9445 #pragma omp target exit data map(from: a) 9446 ++a; 9447 } 9448 #pragma omp parallel 9449 { 9450 #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?}} 9451 ++a; 9452 } 9453 #pragma omp parallel 9454 { 9455 #pragma omp taskloop 9456 for (int i = 0; i < 10; ++i) 9457 ++a; 9458 } 9459 #pragma omp parallel 9460 { 9461 #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?}} 9462 for (int i = 0; i < 10; ++i) 9463 ; 9464 } 9465 #pragma omp parallel 9466 { 9467 #pragma omp target update to(a) 9468 a++; 9469 } 9470 #pragma omp parallel 9471 { 9472 #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?}} 9473 for (int i = 0; i < 10; ++i) 9474 ; 9475 } 9476 #pragma omp parallel 9477 { 9478 #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?}} 9479 for (int i = 0; i < 10; ++i) 9480 ; 9481 } 9482 #pragma omp parallel 9483 { 9484 #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?}} 9485 for (int i = 0; i < 10; ++i) 9486 ; 9487 } 9488 #pragma omp parallel 9489 { 9490 #pragma omp target simd // OK 9491 for (int i = 0; i < 10; ++i) 9492 ; 9493 } 9494 #pragma omp parallel 9495 { 9496 #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?}} 9497 for (int i = 0; i < 10; ++i) 9498 ; 9499 } 9500 #pragma omp parallel 9501 { 9502 #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?}} 9503 for (int i = 0; i < 10; ++i) 9504 ; 9505 } 9506 #pragma omp parallel 9507 { 9508 #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?}} 9509 for (int i = 0; i < 10; ++i) 9510 ; 9511 } 9512 #pragma omp parallel 9513 { 9514 #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?}} 9515 for (int i = 0; i < 10; ++i) 9516 ; 9517 } 9518 #pragma omp parallel 9519 { 9520 #pragma omp target teams // OK 9521 a++; 9522 } 9523 #pragma omp parallel 9524 { 9525 #pragma omp target teams distribute // OK 9526 for (int i = 0; i < 10; ++i) 9527 ; 9528 } 9529 #pragma omp parallel 9530 { 9531 #pragma omp target teams distribute parallel for // OK 9532 for (int i = 0; i < 10; ++i) 9533 ; 9534 } 9535 #pragma omp parallel 9536 { 9537 #pragma omp target teams distribute parallel for simd // OK 9538 for (int i = 0; i < 10; ++i) 9539 ; 9540 } 9541 #pragma omp parallel 9542 { 9543 #pragma omp target teams distribute simd // OK 9544 for (int i = 0; i < 10; ++i) 9545 ; 9546 } 9547 9548 // SIMD DIRECTIVE 9549 #pragma omp simd 9550 for (int i = 0; i < 10; ++i) { 9551 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9552 for (int i = 0; i < 10; ++i) 9553 ; 9554 } 9555 #pragma omp simd 9556 for (int i = 0; i < 10; ++i) { 9557 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9558 for (int i = 0; i < 10; ++i) 9559 ; 9560 } 9561 #pragma omp simd 9562 for (int i = 0; i < 10; ++i) { 9563 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9564 for (int i = 0; i < 10; ++i) 9565 ; 9566 } 9567 #pragma omp simd 9568 for (int i = 0; i < 10; ++i) { 9569 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9570 for (int i = 0; i < 10; ++i) 9571 ; 9572 } 9573 #pragma omp simd 9574 for (int i = 0; i < 10; ++i) { 9575 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9576 { 9577 bar(); 9578 } 9579 } 9580 #pragma omp simd 9581 for (int i = 0; i < 10; ++i) { 9582 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9583 { 9584 bar(); 9585 } 9586 } 9587 #pragma omp simd 9588 for (int i = 0; i < 10; ++i) { 9589 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9590 bar(); 9591 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9592 bar(); 9593 } 9594 #pragma omp simd 9595 for (int i = 0; i < 10; ++i) { 9596 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9597 bar(); 9598 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9599 bar(); 9600 } 9601 #pragma omp simd 9602 for (int i = 0; i < 10; ++i) { 9603 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9604 for (int i = 0; i < 10; ++i) 9605 ; 9606 } 9607 #pragma omp simd 9608 for (int i = 0; i < 10; ++i) { 9609 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9610 for (int i = 0; i < 10; ++i) 9611 ; 9612 } 9613 #pragma omp simd 9614 for (int i = 0; i < 10; ++i) { 9615 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9616 { 9617 bar(); 9618 } 9619 } 9620 #pragma omp simd 9621 for (int i = 0; i < 10; ++i) { 9622 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9623 { 9624 bar(); 9625 } 9626 } 9627 #pragma omp simd 9628 for (int i = 0; i < 10; ++i) { 9629 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9630 bar(); 9631 } 9632 #pragma omp simd 9633 for (int i = 0; i < 10; ++i) { 9634 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9635 bar(); 9636 } 9637 #pragma omp simd 9638 for (int i = 0; i < 10; ++i) { 9639 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9640 bar(); 9641 } 9642 #pragma omp simd 9643 for (int i = 0; i < 10; ++i) { 9644 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9645 bar(); 9646 } 9647 #pragma omp simd 9648 for (int i = 0; i < 10; ++i) { 9649 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9650 bar(); 9651 } 9652 #pragma omp simd 9653 for (int i = 0; i < 10; ++i) { 9654 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9655 ++a; 9656 } 9657 #pragma omp simd 9658 for (int i = 0; i < 10; ++i) { 9659 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9660 ++a; 9661 } 9662 #pragma omp simd 9663 for (int i = 0; i < 10; ++i) { 9664 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9665 ++a; 9666 } 9667 #pragma omp simd 9668 for (int i = 0; i < 10; ++i) { 9669 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9670 for (int i = 0; i < 10; ++i) 9671 ; 9672 } 9673 #pragma omp simd 9674 for (int i = 0; i < 10; ++i) { 9675 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9676 ++a; 9677 } 9678 #pragma omp simd 9679 for (int i = 0; i < 10; ++i) { 9680 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9681 ++a; 9682 } 9683 #pragma omp simd 9684 for (int i = 0; i < 10; ++i) { 9685 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9686 ++a; 9687 } 9688 #pragma omp simd 9689 for (int i = 0; i < 10; ++i) { 9690 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9691 for (int i = 0; i < 10; ++i) 9692 ++a; 9693 } 9694 #pragma omp simd 9695 for (int i = 0; i < 10; ++i) { 9696 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9697 for (int j = 0; j < 10; ++j) 9698 ; 9699 } 9700 #pragma omp simd 9701 for (int i = 0; i < 10; ++i) { 9702 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9703 a++; 9704 } 9705 #pragma omp simd 9706 for (int i = 0; i < 10; ++i) { 9707 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9708 for (int j = 0; j < 10; ++j) 9709 ; 9710 } 9711 #pragma omp simd 9712 for (int i = 0; i < 10; ++i) { 9713 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9714 for (int j = 0; j < 10; ++j) 9715 ; 9716 } 9717 #pragma omp simd 9718 for (int i = 0; i < 10; ++i) { 9719 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9720 for (int j = 0; j < 10; ++j) 9721 ; 9722 } 9723 #pragma omp simd 9724 for (int i = 0; i < 10; ++i) { 9725 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9726 for (int j = 0; j < 10; ++j) 9727 ; 9728 } 9729 #pragma omp simd 9730 for (int i = 0; i < 10; ++i) { 9731 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9732 for (int j = 0; j < 10; ++j) 9733 ; 9734 } 9735 #pragma omp simd 9736 for (int i = 0; i < 10; ++i) { 9737 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9738 for (int j = 0; j < 10; ++j) 9739 ; 9740 } 9741 #pragma omp simd 9742 for (int i = 0; i < 10; ++i) { 9743 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9744 for (int j = 0; j < 10; ++j) 9745 ; 9746 } 9747 #pragma omp simd 9748 for (int i = 0; i < 10; ++i) { 9749 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9750 for (int j = 0; j < 10; ++j) 9751 ; 9752 } 9753 #pragma omp simd 9754 for (int i = 0; i < 10; ++i) { 9755 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9756 a++; 9757 } 9758 #pragma omp simd 9759 for (int i = 0; i < 10; ++i) { 9760 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9761 for (int j = 0; j < 10; ++j) 9762 ; 9763 } 9764 #pragma omp simd 9765 for (int i = 0; i < 10; ++i) { 9766 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9767 for (int j = 0; j < 10; ++j) 9768 ; 9769 } 9770 #pragma omp simd 9771 for (int i = 0; i < 10; ++i) { 9772 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9773 for (int j = 0; j < 10; ++j) 9774 ; 9775 } 9776 #pragma omp simd 9777 for (int i = 0; i < 10; ++i) { 9778 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9779 for (int j = 0; j < 10; ++j) 9780 ; 9781 } 9782 9783 // FOR DIRECTIVE 9784 #pragma omp for 9785 for (int i = 0; i < 10; ++i) { 9786 #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?}} 9787 for (int i = 0; i < 10; ++i) 9788 ; 9789 } 9790 #pragma omp for 9791 for (int i = 0; i < 10; ++i) { 9792 #pragma omp simd 9793 for (int i = 0; i < 10; ++i) 9794 ; 9795 } 9796 #pragma omp for 9797 for (int i = 0; i < 10; ++i) { 9798 #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?}} 9799 for (int i = 0; i < 10; ++i) 9800 ; 9801 } 9802 #pragma omp for 9803 for (int i = 0; i < 10; ++i) { 9804 #pragma omp parallel 9805 for (int i = 0; i < 10; ++i) 9806 ; 9807 } 9808 #pragma omp for 9809 for (int i = 0; i < 10; ++i) { 9810 #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?}} 9811 { 9812 bar(); 9813 } 9814 } 9815 #pragma omp for 9816 for (int i = 0; i < 10; ++i) { 9817 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 9818 { 9819 bar(); 9820 } 9821 } 9822 #pragma omp for 9823 for (int i = 0; i < 10; ++i) { 9824 #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?}} 9825 bar(); 9826 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 9827 bar(); 9828 #pragma omp critical 9829 bar(); 9830 } 9831 #pragma omp for 9832 for (int i = 0; i < 10; ++i) { 9833 #pragma omp parallel 9834 { 9835 #pragma omp single // OK 9836 { 9837 bar(); 9838 } 9839 #pragma omp for // OK 9840 for (int i = 0; i < 10; ++i) 9841 ; 9842 #pragma omp for simd // OK 9843 for (int i = 0; i < 10; ++i) 9844 ; 9845 #pragma omp sections // OK 9846 { 9847 bar(); 9848 } 9849 } 9850 } 9851 #pragma omp for 9852 for (int i = 0; i < 10; ++i) { 9853 #pragma omp parallel for 9854 for (int i = 0; i < 10; ++i) 9855 ; 9856 } 9857 #pragma omp for 9858 for (int i = 0; i < 10; ++i) { 9859 #pragma omp parallel for simd 9860 for (int i = 0; i < 10; ++i) 9861 ; 9862 } 9863 #pragma omp for 9864 for (int i = 0; i < 10; ++i) { 9865 #pragma omp parallel sections 9866 { 9867 bar(); 9868 } 9869 } 9870 #pragma omp for 9871 for (int i = 0; i < 10; ++i) { 9872 #pragma omp task 9873 { 9874 bar(); 9875 } 9876 } 9877 #pragma omp for 9878 for (int i = 0; i < 10; ++i) { 9879 #pragma omp taskyield 9880 bar(); 9881 } 9882 #pragma omp for 9883 for (int i = 0; i < 10; ++i) { 9884 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 9885 bar(); 9886 } 9887 #pragma omp for 9888 for (int i = 0; i < 10; ++i) { 9889 #pragma omp taskwait 9890 bar(); 9891 } 9892 #pragma omp for 9893 for (int i = 0; i < 10; ++i) { 9894 #pragma omp flush 9895 bar(); 9896 } 9897 #pragma omp for 9898 for (int i = 0; i < 10; ++i) { 9899 #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?}} 9900 bar(); 9901 } 9902 #pragma omp for ordered 9903 for (int i = 0; i < 10; ++i) { 9904 #pragma omp ordered // OK 9905 bar(); 9906 } 9907 #pragma omp for 9908 for (int i = 0; i < 10; ++i) { 9909 #pragma omp atomic 9910 ++a; 9911 } 9912 #pragma omp for 9913 for (int i = 0; i < 10; ++i) { 9914 #pragma omp target 9915 ++a; 9916 } 9917 #pragma omp for 9918 for (int i = 0; i < 10; ++i) { 9919 #pragma omp target parallel 9920 ++a; 9921 } 9922 #pragma omp for 9923 for (int i = 0; i < 10; ++i) { 9924 #pragma omp target parallel for 9925 for (int i = 0; i < 10; ++i) 9926 ; 9927 } 9928 #pragma omp for 9929 for (int i = 0; i < 10; ++i) { 9930 #pragma omp target enter data map(to: a) 9931 ++a; 9932 } 9933 #pragma omp for 9934 for (int i = 0; i < 10; ++i) { 9935 #pragma omp target exit data map(from: a) 9936 ++a; 9937 } 9938 #pragma omp for 9939 for (int i = 0; i < 10; ++i) { 9940 #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?}} 9941 ++a; 9942 } 9943 #pragma omp for 9944 for (int i = 0; i < 10; ++i) { 9945 #pragma omp taskloop 9946 for (int i = 0; i < 10; ++i) 9947 ++a; 9948 } 9949 #pragma omp for 9950 for (int i = 0; i < 10; ++i) { 9951 #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?}} 9952 for (int j = 0; j < 10; ++j) 9953 ; 9954 } 9955 #pragma omp for 9956 for (int i = 0; i < 10; ++i) { 9957 #pragma omp target update to(a) 9958 ++a; 9959 } 9960 #pragma omp for 9961 for (int i = 0; i < 10; ++i) { 9962 #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?}} 9963 for (int j = 0; j < 10; ++j) 9964 ; 9965 } 9966 #pragma omp for 9967 for (int i = 0; i < 10; ++i) { 9968 #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?}} 9969 for (int j = 0; j < 10; ++j) 9970 ; 9971 } 9972 #pragma omp for 9973 for (int i = 0; i < 10; ++i) { 9974 #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?}} 9975 for (int j = 0; j < 10; ++j) 9976 ; 9977 } 9978 #pragma omp for 9979 for (int i = 0; i < 10; ++i) { 9980 #pragma omp target simd // OK 9981 for (int j = 0; j < 10; ++j) 9982 ; 9983 } 9984 #pragma omp for 9985 for (int i = 0; i < 10; ++i) { 9986 #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?}} 9987 for (int j = 0; j < 10; ++j) 9988 ; 9989 } 9990 #pragma omp for 9991 for (int i = 0; i < 10; ++i) { 9992 #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?}} 9993 for (int j = 0; j < 10; ++j) 9994 ; 9995 } 9996 #pragma omp for 9997 for (int i = 0; i < 10; ++i) { 9998 #pragma omp 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?}} 9999 for (int j = 0; j < 10; ++j) 10000 ; 10001 } 10002 #pragma omp for 10003 for (int i = 0; i < 10; ++i) { 10004 #pragma omp 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?}} 10005 for (int j = 0; j < 10; ++j) 10006 ; 10007 } 10008 #pragma omp for 10009 for (int i = 0; i < 10; ++i) { 10010 #pragma omp target teams // OK 10011 a++; 10012 } 10013 #pragma omp for 10014 for (int i = 0; i < 10; ++i) { 10015 #pragma omp target teams distribute // OK 10016 for (int j = 0; j < 10; ++j) 10017 ; 10018 } 10019 #pragma omp for 10020 for (int i = 0; i < 10; ++i) { 10021 #pragma omp target teams distribute parallel for // OK 10022 for (int j = 0; j < 10; ++j) 10023 ; 10024 } 10025 #pragma omp for 10026 for (int i = 0; i < 10; ++i) { 10027 #pragma omp target teams distribute parallel for simd // OK 10028 for (int j = 0; j < 10; ++j) 10029 ; 10030 } 10031 #pragma omp for 10032 for (int i = 0; i < 10; ++i) { 10033 #pragma omp target teams distribute simd // OK 10034 for (int j = 0; j < 10; ++j) 10035 ; 10036 } 10037 10038 // FOR SIMD DIRECTIVE 10039 #pragma omp for simd 10040 for (int i = 0; i < 10; ++i) { 10041 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10042 for (int i = 0; i < 10; ++i) 10043 ; 10044 } 10045 #pragma omp for simd 10046 for (int i = 0; i < 10; ++i) { 10047 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10048 for (int i = 0; i < 10; ++i) 10049 ; 10050 } 10051 #pragma omp for simd 10052 for (int i = 0; i < 10; ++i) { 10053 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10054 for (int i = 0; i < 10; ++i) 10055 ; 10056 } 10057 #pragma omp for simd 10058 for (int i = 0; i < 10; ++i) { 10059 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10060 for (int i = 0; i < 10; ++i) 10061 ; 10062 } 10063 #pragma omp for simd 10064 for (int i = 0; i < 10; ++i) { 10065 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10066 { 10067 bar(); 10068 } 10069 } 10070 #pragma omp for simd 10071 for (int i = 0; i < 10; ++i) { 10072 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10073 { 10074 bar(); 10075 } 10076 } 10077 #pragma omp for simd 10078 for (int i = 0; i < 10; ++i) { 10079 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10080 bar(); 10081 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10082 bar(); 10083 } 10084 #pragma omp for simd 10085 for (int i = 0; i < 10; ++i) { 10086 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10087 bar(); 10088 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10089 bar(); 10090 } 10091 #pragma omp for simd 10092 for (int i = 0; i < 10; ++i) { 10093 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10094 for (int i = 0; i < 10; ++i) 10095 ; 10096 } 10097 #pragma omp for simd 10098 for (int i = 0; i < 10; ++i) { 10099 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10100 for (int i = 0; i < 10; ++i) 10101 ; 10102 } 10103 #pragma omp for simd 10104 for (int i = 0; i < 10; ++i) { 10105 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10106 { 10107 bar(); 10108 } 10109 } 10110 #pragma omp for simd 10111 for (int i = 0; i < 10; ++i) { 10112 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10113 { 10114 bar(); 10115 } 10116 } 10117 #pragma omp for simd 10118 for (int i = 0; i < 10; ++i) { 10119 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10120 bar(); 10121 } 10122 #pragma omp for simd 10123 for (int i = 0; i < 10; ++i) { 10124 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10125 bar(); 10126 } 10127 #pragma omp for simd 10128 for (int i = 0; i < 10; ++i) { 10129 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10130 bar(); 10131 } 10132 #pragma omp for simd 10133 for (int i = 0; i < 10; ++i) { 10134 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10135 bar(); 10136 } 10137 #pragma omp for simd 10138 for (int i = 0; i < 10; ++i) { 10139 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10140 bar(); 10141 } 10142 #pragma omp for simd 10143 for (int i = 0; i < 10; ++i) { 10144 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 10145 ++a; 10146 } 10147 #pragma omp for simd 10148 for (int i = 0; i < 10; ++i) { 10149 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10150 ++a; 10151 } 10152 #pragma omp for simd 10153 for (int i = 0; i < 10; ++i) { 10154 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10155 ++a; 10156 } 10157 #pragma omp for simd 10158 for (int i = 0; i < 10; ++i) { 10159 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10160 for (int i = 0; i < 10; ++i) 10161 ; 10162 } 10163 #pragma omp for simd 10164 for (int i = 0; i < 10; ++i) { 10165 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10166 ++a; 10167 } 10168 #pragma omp for simd 10169 for (int i = 0; i < 10; ++i) { 10170 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10171 ++a; 10172 } 10173 #pragma omp for simd 10174 for (int i = 0; i < 10; ++i) { 10175 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10176 ++a; 10177 } 10178 #pragma omp for simd 10179 for (int i = 0; i < 10; ++i) { 10180 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10181 for (int i = 0; i < 10; ++i) 10182 ++a; 10183 } 10184 #pragma omp for simd 10185 for (int i = 0; i < 10; ++i) { 10186 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10187 for (int j = 0; j < 10; ++j) 10188 ; 10189 } 10190 #pragma omp for simd 10191 for (int i = 0; i < 10; ++i) { 10192 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10193 ++a; 10194 } 10195 #pragma omp for simd 10196 for (int i = 0; i < 10; ++i) { 10197 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10198 for (int j = 0; j < 10; ++j) 10199 ; 10200 } 10201 #pragma omp for simd 10202 for (int i = 0; i < 10; ++i) { 10203 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10204 for (int j = 0; j < 10; ++j) 10205 ; 10206 } 10207 #pragma omp for simd 10208 for (int i = 0; i < 10; ++i) { 10209 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10210 for (int j = 0; j < 10; ++j) 10211 ; 10212 } 10213 #pragma omp for simd 10214 for (int i = 0; i < 10; ++i) { 10215 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10216 for (int j = 0; j < 10; ++j) 10217 ; 10218 } 10219 #pragma omp for simd 10220 for (int i = 0; i < 10; ++i) { 10221 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10222 for (int j = 0; j < 10; ++j) 10223 ; 10224 } 10225 #pragma omp for simd 10226 for (int i = 0; i < 10; ++i) { 10227 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10228 for (int j = 0; j < 10; ++j) 10229 ; 10230 } 10231 #pragma omp for simd 10232 for (int i = 0; i < 10; ++i) { 10233 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10234 for (int j = 0; j < 10; ++j) 10235 ; 10236 } 10237 #pragma omp for simd 10238 for (int i = 0; i < 10; ++i) { 10239 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10240 for (int j = 0; j < 10; ++j) 10241 ; 10242 } 10243 #pragma omp for simd 10244 for (int i = 0; i < 10; ++i) { 10245 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10246 a++; 10247 } 10248 #pragma omp for simd 10249 for (int i = 0; i < 10; ++i) { 10250 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10251 for (int j = 0; j < 10; ++j) 10252 ; 10253 } 10254 #pragma omp for simd 10255 for (int i = 0; i < 10; ++i) { 10256 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10257 for (int j = 0; j < 10; ++j) 10258 ; 10259 } 10260 #pragma omp for simd 10261 for (int i = 0; i < 10; ++i) { 10262 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10263 for (int j = 0; j < 10; ++j) 10264 ; 10265 } 10266 #pragma omp for simd 10267 for (int i = 0; i < 10; ++i) { 10268 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10269 for (int j = 0; j < 10; ++j) 10270 ; 10271 } 10272 10273 // SECTIONS DIRECTIVE 10274 #pragma omp sections 10275 { 10276 #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?}} 10277 for (int i = 0; i < 10; ++i) 10278 ; 10279 } 10280 #pragma omp sections 10281 { 10282 #pragma omp simd 10283 for (int i = 0; i < 10; ++i) 10284 ; 10285 } 10286 #pragma omp sections 10287 { 10288 #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?}} 10289 for (int i = 0; i < 10; ++i) 10290 ; 10291 } 10292 #pragma omp sections 10293 { 10294 #pragma omp parallel 10295 for (int i = 0; i < 10; ++i) 10296 ; 10297 } 10298 #pragma omp sections 10299 { 10300 #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?}} 10301 { 10302 bar(); 10303 } 10304 } 10305 #pragma omp sections 10306 { 10307 #pragma omp section 10308 { 10309 bar(); 10310 } 10311 } 10312 #pragma omp sections 10313 { 10314 #pragma omp critical 10315 bar(); 10316 #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?}} 10317 bar(); 10318 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 10319 bar(); 10320 } 10321 #pragma omp sections 10322 { 10323 #pragma omp parallel 10324 { 10325 #pragma omp single // OK 10326 { 10327 bar(); 10328 } 10329 #pragma omp for // OK 10330 for (int i = 0; i < 10; ++i) 10331 ; 10332 #pragma omp for simd // OK 10333 for (int i = 0; i < 10; ++i) 10334 ; 10335 #pragma omp sections // OK 10336 { 10337 bar(); 10338 } 10339 } 10340 } 10341 #pragma omp sections 10342 { 10343 #pragma omp parallel for 10344 for (int i = 0; i < 10; ++i) 10345 ; 10346 } 10347 #pragma omp sections 10348 { 10349 #pragma omp parallel for simd 10350 for (int i = 0; i < 10; ++i) 10351 ; 10352 } 10353 #pragma omp sections 10354 { 10355 #pragma omp parallel sections 10356 { 10357 bar(); 10358 } 10359 } 10360 #pragma omp sections 10361 { 10362 #pragma omp task 10363 { 10364 bar(); 10365 } 10366 } 10367 #pragma omp sections 10368 { 10369 #pragma omp taskyield 10370 } 10371 #pragma omp sections 10372 { 10373 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 10374 bar(); 10375 } 10376 #pragma omp sections 10377 { 10378 #pragma omp taskwait 10379 } 10380 #pragma omp sections 10381 { 10382 #pragma omp flush 10383 } 10384 #pragma omp sections 10385 { 10386 #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?}} 10387 bar(); 10388 } 10389 #pragma omp sections 10390 { 10391 #pragma omp atomic 10392 ++a; 10393 } 10394 #pragma omp sections 10395 { 10396 #pragma omp target 10397 ++a; 10398 } 10399 #pragma omp sections 10400 { 10401 #pragma omp target parallel 10402 ++a; 10403 } 10404 #pragma omp sections 10405 { 10406 #pragma omp target parallel for 10407 for (int i = 0; i < 10; ++i) 10408 ; 10409 } 10410 #pragma omp sections 10411 { 10412 #pragma omp target enter data map(to: a) 10413 } 10414 #pragma omp sections 10415 { 10416 #pragma omp target exit data map(from: a) 10417 } 10418 #pragma omp sections 10419 { 10420 #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?}} 10421 ++a; 10422 } 10423 #pragma omp sections 10424 { 10425 #pragma omp taskloop 10426 for (int i = 0; i < 10; ++i) 10427 ++a; 10428 } 10429 #pragma omp sections 10430 { 10431 #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?}} 10432 for (int i = 0; i < 10; ++i) 10433 ; 10434 } 10435 #pragma omp sections 10436 { 10437 #pragma omp target update to(a) 10438 } 10439 #pragma omp sections 10440 { 10441 #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?}} 10442 for (int i = 0; i < 10; ++i) 10443 ; 10444 } 10445 #pragma omp sections 10446 { 10447 #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?}} 10448 for (int i = 0; i < 10; ++i) 10449 ; 10450 } 10451 #pragma omp sections 10452 { 10453 #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?}} 10454 for (int i = 0; i < 10; ++i) 10455 ; 10456 } 10457 #pragma omp sections 10458 { 10459 #pragma omp target simd // OK 10460 for (int i = 0; i < 10; ++i) 10461 ; 10462 } 10463 #pragma omp sections 10464 { 10465 #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?}} 10466 for (int i = 0; i < 10; ++i) 10467 ; 10468 } 10469 #pragma omp sections 10470 { 10471 #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?}} 10472 for (int i = 0; i < 10; ++i) 10473 ; 10474 } 10475 #pragma omp sections 10476 { 10477 #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?}} 10478 for (int i = 0; i < 10; ++i) 10479 ; 10480 } 10481 #pragma omp sections 10482 { 10483 #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?}} 10484 for (int i = 0; i < 10; ++i) 10485 ; 10486 } 10487 #pragma omp sections 10488 { 10489 #pragma omp target teams // OK 10490 a++; 10491 } 10492 #pragma omp sections 10493 { 10494 #pragma omp target teams distribute // OK 10495 for (int i = 0; i < 10; ++i) 10496 ; 10497 } 10498 #pragma omp sections 10499 { 10500 #pragma omp target teams distribute parallel for // OK 10501 for (int i = 0; i < 10; ++i) 10502 ; 10503 } 10504 #pragma omp sections 10505 { 10506 #pragma omp target teams distribute parallel for simd // OK 10507 for (int i = 0; i < 10; ++i) 10508 ; 10509 } 10510 #pragma omp sections 10511 { 10512 #pragma omp target teams distribute simd // OK 10513 for (int i = 0; i < 10; ++i) 10514 ; 10515 } 10516 10517 // SECTION DIRECTIVE 10518 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 10519 { 10520 bar(); 10521 } 10522 #pragma omp sections 10523 { 10524 #pragma omp section 10525 { 10526 #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?}} 10527 for (int i = 0; i < 10; ++i) 10528 ; 10529 } 10530 } 10531 #pragma omp sections 10532 { 10533 #pragma omp section 10534 { 10535 #pragma omp simd 10536 for (int i = 0; i < 10; ++i) 10537 ; 10538 } 10539 } 10540 #pragma omp sections 10541 { 10542 #pragma omp section 10543 { 10544 #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?}} 10545 for (int i = 0; i < 10; ++i) 10546 ; 10547 } 10548 } 10549 #pragma omp sections 10550 { 10551 #pragma omp section 10552 { 10553 #pragma omp parallel 10554 for (int i = 0; i < 10; ++i) 10555 ; 10556 } 10557 } 10558 #pragma omp sections 10559 { 10560 #pragma omp section 10561 { 10562 #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?}} 10563 { 10564 bar(); 10565 } 10566 } 10567 } 10568 #pragma omp sections 10569 { 10570 #pragma omp section 10571 { 10572 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 10573 { 10574 bar(); 10575 } 10576 } 10577 } 10578 #pragma omp sections 10579 { 10580 #pragma omp section 10581 { 10582 #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?}} 10583 bar(); 10584 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 10585 bar(); 10586 #pragma omp critical 10587 bar(); 10588 } 10589 } 10590 #pragma omp sections 10591 { 10592 #pragma omp section 10593 { 10594 #pragma omp parallel 10595 { 10596 #pragma omp single // OK 10597 { 10598 bar(); 10599 } 10600 #pragma omp for // OK 10601 for (int i = 0; i < 10; ++i) 10602 ; 10603 #pragma omp for simd // OK 10604 for (int i = 0; i < 10; ++i) 10605 ; 10606 #pragma omp sections // OK 10607 { 10608 bar(); 10609 } 10610 } 10611 } 10612 } 10613 #pragma omp sections 10614 { 10615 #pragma omp section 10616 { 10617 #pragma omp parallel for 10618 for (int i = 0; i < 10; ++i) 10619 ; 10620 } 10621 } 10622 #pragma omp sections 10623 { 10624 #pragma omp section 10625 { 10626 #pragma omp parallel for simd 10627 for (int i = 0; i < 10; ++i) 10628 ; 10629 } 10630 } 10631 #pragma omp sections 10632 { 10633 #pragma omp section 10634 { 10635 #pragma omp parallel sections 10636 { 10637 bar(); 10638 } 10639 } 10640 } 10641 #pragma omp sections 10642 { 10643 #pragma omp section 10644 { 10645 #pragma omp task 10646 { 10647 bar(); 10648 } 10649 } 10650 } 10651 #pragma omp sections 10652 { 10653 #pragma omp section 10654 { 10655 #pragma omp taskyield 10656 bar(); 10657 } 10658 } 10659 #pragma omp sections 10660 { 10661 #pragma omp section 10662 { 10663 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 10664 bar(); 10665 } 10666 } 10667 #pragma omp sections 10668 { 10669 #pragma omp section 10670 { 10671 #pragma omp taskwait 10672 bar(); 10673 } 10674 } 10675 #pragma omp sections 10676 { 10677 #pragma omp section 10678 { 10679 #pragma omp flush 10680 bar(); 10681 } 10682 } 10683 #pragma omp sections 10684 { 10685 #pragma omp section 10686 { 10687 #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?}} 10688 bar(); 10689 } 10690 } 10691 #pragma omp sections 10692 { 10693 #pragma omp section 10694 { 10695 #pragma omp atomic 10696 ++a; 10697 } 10698 } 10699 #pragma omp sections 10700 { 10701 #pragma omp section 10702 { 10703 #pragma omp target 10704 ++a; 10705 } 10706 } 10707 #pragma omp sections 10708 { 10709 #pragma omp section 10710 { 10711 #pragma omp target parallel 10712 ++a; 10713 } 10714 } 10715 #pragma omp sections 10716 { 10717 #pragma omp section 10718 { 10719 #pragma omp target parallel for 10720 for (int i = 0; i < 10; ++i) 10721 ; 10722 } 10723 } 10724 #pragma omp sections 10725 { 10726 #pragma omp section 10727 { 10728 #pragma omp target enter data map(to: a) 10729 ++a; 10730 } 10731 } 10732 #pragma omp sections 10733 { 10734 #pragma omp section 10735 { 10736 #pragma omp target exit data map(from: a) 10737 ++a; 10738 } 10739 } 10740 #pragma omp sections 10741 { 10742 #pragma omp section 10743 { 10744 #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?}} 10745 ++a; 10746 } 10747 } 10748 #pragma omp sections 10749 { 10750 #pragma omp section 10751 { 10752 #pragma omp taskloop 10753 for (int i = 0; i < 10; ++i) 10754 ++a; 10755 } 10756 } 10757 #pragma omp sections 10758 { 10759 #pragma omp section 10760 #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?}} 10761 for (int i = 0; i < 10; ++i) 10762 ; 10763 } 10764 #pragma omp sections 10765 { 10766 #pragma omp section 10767 { 10768 #pragma omp target update to(a) 10769 a++; 10770 } 10771 } 10772 #pragma omp sections 10773 { 10774 #pragma omp section 10775 #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?}} 10776 for (int i = 0; i < 10; ++i) 10777 ; 10778 } 10779 #pragma omp sections 10780 { 10781 #pragma omp section 10782 #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?}} 10783 for (int i = 0; i < 10; ++i) 10784 ; 10785 } 10786 #pragma omp sections 10787 { 10788 #pragma omp section 10789 #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?}} 10790 for (int i = 0; i < 10; ++i) 10791 ; 10792 } 10793 #pragma omp sections 10794 { 10795 #pragma omp section 10796 #pragma omp target simd // OK 10797 for (int i = 0; i < 10; ++i) 10798 ; 10799 } 10800 #pragma omp sections 10801 { 10802 #pragma omp section 10803 #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?}} 10804 for (int i = 0; i < 10; ++i) 10805 ; 10806 } 10807 #pragma omp sections 10808 { 10809 #pragma omp section 10810 #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?}} 10811 for (int i = 0; i < 10; ++i) 10812 ; 10813 } 10814 #pragma omp sections 10815 { 10816 #pragma omp section 10817 #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?}} 10818 for (int i = 0; i < 10; ++i) 10819 ; 10820 } 10821 #pragma omp sections 10822 { 10823 #pragma omp section 10824 #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?}} 10825 for (int i = 0; i < 10; ++i) 10826 ; 10827 } 10828 #pragma omp sections 10829 { 10830 #pragma omp section 10831 #pragma omp target teams // OK 10832 a++; 10833 } 10834 #pragma omp sections 10835 { 10836 #pragma omp section 10837 #pragma omp target teams distribute // OK 10838 for (int i = 0; i < 10; ++i) 10839 ; 10840 } 10841 #pragma omp sections 10842 { 10843 #pragma omp section 10844 #pragma omp target teams distribute parallel for // OK 10845 for (int i = 0; i < 10; ++i) 10846 ; 10847 } 10848 #pragma omp sections 10849 { 10850 #pragma omp section 10851 #pragma omp target teams distribute parallel for simd // OK 10852 for (int i = 0; i < 10; ++i) 10853 ; 10854 } 10855 #pragma omp sections 10856 { 10857 #pragma omp section 10858 #pragma omp target teams distribute simd // OK 10859 for (int i = 0; i < 10; ++i) 10860 ; 10861 } 10862 10863 // SINGLE DIRECTIVE 10864 #pragma omp single 10865 { 10866 #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?}} 10867 for (int i = 0; i < 10; ++i) 10868 ; 10869 } 10870 #pragma omp single 10871 { 10872 #pragma omp simd 10873 for (int i = 0; i < 10; ++i) 10874 ; 10875 } 10876 #pragma omp single 10877 { 10878 #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?}} 10879 for (int i = 0; i < 10; ++i) 10880 ; 10881 } 10882 #pragma omp single 10883 { 10884 #pragma omp parallel 10885 for (int i = 0; i < 10; ++i) 10886 ; 10887 } 10888 #pragma omp single 10889 { 10890 #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?}} 10891 { 10892 bar(); 10893 } 10894 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 10895 bar(); 10896 #pragma omp critical 10897 bar(); 10898 } 10899 #pragma omp single 10900 { 10901 #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?}} 10902 { 10903 bar(); 10904 } 10905 } 10906 #pragma omp single 10907 { 10908 #pragma omp parallel 10909 { 10910 #pragma omp single // OK 10911 { 10912 bar(); 10913 } 10914 #pragma omp for // OK 10915 for (int i = 0; i < 10; ++i) 10916 ; 10917 #pragma omp for simd // OK 10918 for (int i = 0; i < 10; ++i) 10919 ; 10920 #pragma omp sections // OK 10921 { 10922 bar(); 10923 } 10924 } 10925 } 10926 #pragma omp single 10927 { 10928 #pragma omp parallel for 10929 for (int i = 0; i < 10; ++i) 10930 ; 10931 } 10932 #pragma omp single 10933 { 10934 #pragma omp parallel for simd 10935 for (int i = 0; i < 10; ++i) 10936 ; 10937 } 10938 #pragma omp single 10939 { 10940 #pragma omp parallel sections 10941 { 10942 bar(); 10943 } 10944 } 10945 #pragma omp single 10946 { 10947 #pragma omp task 10948 { 10949 bar(); 10950 } 10951 } 10952 #pragma omp single 10953 { 10954 #pragma omp taskyield 10955 bar(); 10956 } 10957 #pragma omp single 10958 { 10959 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 10960 bar(); 10961 } 10962 #pragma omp single 10963 { 10964 #pragma omp taskwait 10965 bar(); 10966 } 10967 #pragma omp single 10968 { 10969 #pragma omp flush 10970 bar(); 10971 } 10972 #pragma omp single 10973 { 10974 #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?}} 10975 bar(); 10976 } 10977 #pragma omp single 10978 { 10979 #pragma omp atomic 10980 ++a; 10981 } 10982 #pragma omp single 10983 { 10984 #pragma omp target 10985 ++a; 10986 } 10987 #pragma omp single 10988 { 10989 #pragma omp target parallel 10990 ++a; 10991 } 10992 #pragma omp single 10993 { 10994 #pragma omp target parallel for 10995 for (int i = 0; i < 10; ++i) 10996 ; 10997 } 10998 #pragma omp single 10999 { 11000 #pragma omp target enter data map(to: a) 11001 ++a; 11002 } 11003 #pragma omp single 11004 { 11005 #pragma omp target exit data map(from: a) 11006 ++a; 11007 } 11008 #pragma omp single 11009 { 11010 #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?}} 11011 ++a; 11012 } 11013 #pragma omp single 11014 { 11015 #pragma omp taskloop 11016 for (int i = 0; i < 10; ++i) 11017 ++a; 11018 } 11019 #pragma omp single 11020 { 11021 #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?}} 11022 for (int i = 0; i < 10; ++i) 11023 ; 11024 } 11025 #pragma omp single 11026 { 11027 #pragma omp target update to(a) 11028 a++; 11029 } 11030 #pragma omp single 11031 { 11032 #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?}} 11033 for (int i = 0; i < 10; ++i) 11034 ; 11035 } 11036 #pragma omp single 11037 { 11038 #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?}} 11039 for (int i = 0; i < 10; ++i) 11040 ; 11041 } 11042 #pragma omp single 11043 { 11044 #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?}} 11045 for (int i = 0; i < 10; ++i) 11046 ; 11047 } 11048 #pragma omp single 11049 { 11050 #pragma omp target simd // OK 11051 for (int i = 0; i < 10; ++i) 11052 ; 11053 } 11054 #pragma omp single 11055 { 11056 #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?}} 11057 for (int i = 0; i < 10; ++i) 11058 ; 11059 } 11060 #pragma omp single 11061 { 11062 #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?}} 11063 for (int i = 0; i < 10; ++i) 11064 ; 11065 } 11066 #pragma omp single 11067 { 11068 #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?}} 11069 for (int i = 0; i < 10; ++i) 11070 ; 11071 } 11072 #pragma omp single 11073 { 11074 #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?}} 11075 for (int i = 0; i < 10; ++i) 11076 ; 11077 } 11078 #pragma omp single 11079 { 11080 #pragma omp target teams // oK 11081 a++; 11082 } 11083 #pragma omp single 11084 { 11085 #pragma omp target teams distribute // OK 11086 for (int i = 0; i < 10; ++i) 11087 ; 11088 } 11089 #pragma omp single 11090 { 11091 #pragma omp target teams distribute parallel for // OK 11092 for (int i = 0; i < 10; ++i) 11093 ; 11094 } 11095 #pragma omp single 11096 { 11097 #pragma omp target teams distribute parallel for simd // OK 11098 for (int i = 0; i < 10; ++i) 11099 ; 11100 } 11101 #pragma omp single 11102 { 11103 #pragma omp target teams distribute simd // OK 11104 for (int i = 0; i < 10; ++i) 11105 ; 11106 } 11107 11108 // MASTER DIRECTIVE 11109 #pragma omp master 11110 { 11111 #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?}} 11112 for (int i = 0; i < 10; ++i) 11113 ; 11114 } 11115 #pragma omp master 11116 { 11117 #pragma omp simd 11118 for (int i = 0; i < 10; ++i) 11119 ; 11120 } 11121 #pragma omp master 11122 { 11123 #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?}} 11124 for (int i = 0; i < 10; ++i) 11125 ; 11126 } 11127 #pragma omp master 11128 { 11129 #pragma omp parallel 11130 for (int i = 0; i < 10; ++i) 11131 ; 11132 } 11133 #pragma omp parallel master 11134 { 11135 for (int i = 0; i < 10; ++i) 11136 ; 11137 } 11138 #pragma omp master 11139 { 11140 #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?}} 11141 { 11142 bar(); 11143 } 11144 } 11145 #pragma omp master 11146 { 11147 #pragma omp master // OK, though second 'master' is redundant 11148 { 11149 bar(); 11150 } 11151 } 11152 #pragma omp master 11153 { 11154 #pragma omp critical 11155 { 11156 bar(); 11157 } 11158 } 11159 #pragma omp master 11160 { 11161 #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?}} 11162 { 11163 bar(); 11164 } 11165 } 11166 #pragma omp master 11167 { 11168 #pragma omp parallel 11169 { 11170 #pragma omp master // OK 11171 { 11172 bar(); 11173 } 11174 #pragma omp for // OK 11175 for (int i = 0; i < 10; ++i) 11176 ; 11177 #pragma omp for simd // OK 11178 for (int i = 0; i < 10; ++i) 11179 ; 11180 #pragma omp sections // OK 11181 { 11182 bar(); 11183 } 11184 } 11185 } 11186 #pragma omp master 11187 { 11188 #pragma omp parallel master 11189 { 11190 bar(); 11191 } 11192 } 11193 #pragma omp master 11194 { 11195 #pragma omp parallel for 11196 for (int i = 0; i < 10; ++i) 11197 ; 11198 } 11199 #pragma omp master 11200 { 11201 #pragma omp parallel for simd 11202 for (int i = 0; i < 10; ++i) 11203 ; 11204 } 11205 #pragma omp master 11206 { 11207 #pragma omp parallel sections 11208 { 11209 bar(); 11210 } 11211 } 11212 #pragma omp master 11213 { 11214 #pragma omp task 11215 { 11216 bar(); 11217 } 11218 } 11219 #pragma omp master 11220 { 11221 #pragma omp taskyield 11222 bar(); 11223 } 11224 #pragma omp master 11225 { 11226 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 11227 bar(); 11228 } 11229 #pragma omp master 11230 { 11231 #pragma omp taskwait 11232 bar(); 11233 } 11234 #pragma omp master 11235 { 11236 #pragma omp flush 11237 bar(); 11238 } 11239 #pragma omp master 11240 { 11241 #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?}} 11242 bar(); 11243 } 11244 #pragma omp master 11245 { 11246 #pragma omp atomic 11247 ++a; 11248 } 11249 #pragma omp master 11250 { 11251 #pragma omp target 11252 ++a; 11253 } 11254 #pragma omp master 11255 { 11256 #pragma omp target parallel 11257 ++a; 11258 } 11259 #pragma omp master 11260 { 11261 #pragma omp target parallel for 11262 for (int i = 0; i < 10; ++i) 11263 ; 11264 } 11265 #pragma omp master 11266 { 11267 #pragma omp target enter data map(to: a) 11268 ++a; 11269 } 11270 #pragma omp master 11271 { 11272 #pragma omp target exit data map(from: a) 11273 ++a; 11274 } 11275 #pragma omp master 11276 { 11277 #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?}} 11278 ++a; 11279 } 11280 #pragma omp master 11281 { 11282 #pragma omp taskloop 11283 for (int i = 0; i < 10; ++i) 11284 ++a; 11285 } 11286 #pragma omp master 11287 { 11288 #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?}} 11289 for (int i = 0; i < 10; ++i) 11290 ; 11291 } 11292 #pragma omp master 11293 { 11294 #pragma omp target update to(a) 11295 ++a; 11296 } 11297 #pragma omp master 11298 { 11299 #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?}} 11300 for (int i = 0; i < 10; ++i) 11301 ; 11302 } 11303 #pragma omp master 11304 { 11305 #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?}} 11306 for (int i = 0; i < 10; ++i) 11307 ; 11308 } 11309 #pragma omp master 11310 { 11311 #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?}} 11312 for (int i = 0; i < 10; ++i) 11313 ; 11314 } 11315 #pragma omp master 11316 { 11317 #pragma omp target simd // OK 11318 for (int i = 0; i < 10; ++i) 11319 ; 11320 } 11321 #pragma omp master 11322 { 11323 #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?}} 11324 for (int i = 0; i < 10; ++i) 11325 ; 11326 } 11327 #pragma omp master 11328 { 11329 #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?}} 11330 for (int i = 0; i < 10; ++i) 11331 ; 11332 } 11333 #pragma omp master 11334 { 11335 #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?}} 11336 for (int i = 0; i < 10; ++i) 11337 ; 11338 } 11339 #pragma omp master 11340 { 11341 #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?}} 11342 for (int i = 0; i < 10; ++i) 11343 ; 11344 } 11345 #pragma omp master 11346 { 11347 #pragma omp target teams // OK 11348 a++; 11349 } 11350 #pragma omp master 11351 { 11352 #pragma omp target teams distribute // OK 11353 for (int i = 0; i < 10; ++i) 11354 ; 11355 } 11356 #pragma omp master 11357 { 11358 #pragma omp target teams distribute parallel for // OK 11359 for (int i = 0; i < 10; ++i) 11360 ; 11361 } 11362 #pragma omp master 11363 { 11364 #pragma omp target teams distribute parallel for simd // OK 11365 for (int i = 0; i < 10; ++i) 11366 ; 11367 } 11368 #pragma omp master 11369 { 11370 #pragma omp target teams distribute simd // OK 11371 for (int i = 0; i < 10; ++i) 11372 ; 11373 } 11374 11375 // CRITICAL DIRECTIVE 11376 #pragma omp critical 11377 { 11378 #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?}} 11379 for (int i = 0; i < 10; ++i) 11380 ; 11381 } 11382 #pragma omp critical 11383 { 11384 #pragma omp simd 11385 for (int i = 0; i < 10; ++i) 11386 ; 11387 } 11388 #pragma omp critical 11389 { 11390 #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?}} 11391 for (int i = 0; i < 10; ++i) 11392 ; 11393 } 11394 #pragma omp critical 11395 { 11396 #pragma omp parallel 11397 for (int i = 0; i < 10; ++i) 11398 ; 11399 } 11400 #pragma omp critical 11401 { 11402 #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?}} 11403 { 11404 bar(); 11405 } 11406 } 11407 #pragma omp critical 11408 { 11409 #pragma omp master // OK, though second 'master' is redundant 11410 { 11411 bar(); 11412 } 11413 } 11414 #pragma omp critical 11415 { 11416 #pragma omp critical 11417 { 11418 bar(); 11419 } 11420 } 11421 #pragma omp critical 11422 { 11423 #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?}} 11424 { 11425 bar(); 11426 } 11427 } 11428 #pragma omp critical 11429 { 11430 #pragma omp parallel 11431 { 11432 #pragma omp master // OK 11433 { 11434 bar(); 11435 } 11436 #pragma omp for // OK 11437 for (int i = 0; i < 10; ++i) 11438 ; 11439 #pragma omp for simd // OK 11440 for (int i = 0; i < 10; ++i) 11441 ; 11442 #pragma omp sections // OK 11443 { 11444 bar(); 11445 } 11446 } 11447 } 11448 #pragma omp critical 11449 { 11450 #pragma omp parallel for 11451 for (int i = 0; i < 10; ++i) 11452 ; 11453 } 11454 #pragma omp critical 11455 { 11456 #pragma omp parallel for simd 11457 for (int i = 0; i < 10; ++i) 11458 ; 11459 } 11460 #pragma omp critical 11461 { 11462 #pragma omp parallel sections 11463 { 11464 bar(); 11465 } 11466 } 11467 #pragma omp critical 11468 { 11469 #pragma omp task 11470 { 11471 bar(); 11472 } 11473 } 11474 #pragma omp critical 11475 { 11476 #pragma omp taskyield 11477 bar(); 11478 } 11479 #pragma omp critical 11480 { 11481 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 11482 bar(); 11483 } 11484 #pragma omp critical 11485 { 11486 #pragma omp taskwait 11487 bar(); 11488 } 11489 #pragma omp critical(Belka) 11490 { 11491 #pragma omp critical(Strelka) 11492 bar(); 11493 } 11494 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 11495 { 11496 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 11497 { 11498 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 11499 { 11500 #pragma omp parallel 11501 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 11502 { 11503 bar(); 11504 } 11505 } 11506 } 11507 } 11508 #pragma omp critical 11509 { 11510 #pragma omp flush 11511 bar(); 11512 } 11513 #pragma omp critical 11514 { 11515 #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?}} 11516 bar(); 11517 } 11518 #pragma omp critical 11519 { 11520 #pragma omp atomic 11521 ++a; 11522 } 11523 #pragma omp critical 11524 { 11525 #pragma omp target 11526 ++a; 11527 } 11528 #pragma omp critical 11529 { 11530 #pragma omp target parallel 11531 ++a; 11532 } 11533 #pragma omp critical 11534 { 11535 #pragma omp target parallel for 11536 for (int i = 0; i < 10; ++i) 11537 ; 11538 } 11539 #pragma omp critical 11540 { 11541 #pragma omp target enter data map(to: a) 11542 ++a; 11543 } 11544 #pragma omp critical 11545 { 11546 #pragma omp target exit data map(from: a) 11547 ++a; 11548 } 11549 #pragma omp critical 11550 { 11551 #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?}} 11552 ++a; 11553 } 11554 #pragma omp critical 11555 { 11556 #pragma omp taskloop 11557 for (int i = 0; i < 10; ++i) 11558 ++a; 11559 } 11560 #pragma omp critical 11561 { 11562 #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?}} 11563 for (int i = 0; i < 10; ++i) 11564 ; 11565 } 11566 #pragma omp critical 11567 { 11568 #pragma omp target update to(a) 11569 a++; 11570 } 11571 #pragma omp critical 11572 { 11573 #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?}} 11574 for (int i = 0; i < 10; ++i) 11575 ; 11576 } 11577 #pragma omp critical 11578 { 11579 #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?}} 11580 for (int i = 0; i < 10; ++i) 11581 ; 11582 } 11583 #pragma omp critical 11584 { 11585 #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?}} 11586 for (int i = 0; i < 10; ++i) 11587 ; 11588 } 11589 #pragma omp critical 11590 { 11591 #pragma omp target simd // OK 11592 for (int i = 0; i < 10; ++i) 11593 ; 11594 } 11595 #pragma omp critical 11596 { 11597 #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?}} 11598 for (int i = 0; i < 10; ++i) 11599 ; 11600 } 11601 #pragma omp critical 11602 { 11603 #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?}} 11604 for (int i = 0; i < 10; ++i) 11605 ; 11606 } 11607 #pragma omp critical 11608 { 11609 #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?}} 11610 for (int i = 0; i < 10; ++i) 11611 ; 11612 } 11613 #pragma omp critical 11614 { 11615 #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?}} 11616 for (int i = 0; i < 10; ++i) 11617 ; 11618 } 11619 #pragma omp critical 11620 { 11621 #pragma omp target teams // OK 11622 a++; 11623 } 11624 #pragma omp critical 11625 { 11626 #pragma omp target teams distribute // OK 11627 for (int i = 0; i < 10; ++i) 11628 ; 11629 } 11630 #pragma omp critical 11631 { 11632 #pragma omp target teams distribute parallel for // OK 11633 for (int i = 0; i < 10; ++i) 11634 ; 11635 } 11636 #pragma omp critical 11637 { 11638 #pragma omp target teams distribute parallel for simd // OK 11639 for (int i = 0; i < 10; ++i) 11640 ; 11641 } 11642 #pragma omp critical 11643 { 11644 #pragma omp target teams distribute simd // OK 11645 for (int i = 0; i < 10; ++i) 11646 ; 11647 } 11648 11649 // PARALLEL FOR DIRECTIVE 11650 #pragma omp parallel for 11651 for (int i = 0; i < 10; ++i) { 11652 #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?}} 11653 for (int i = 0; i < 10; ++i) 11654 ; 11655 } 11656 #pragma omp parallel for 11657 for (int i = 0; i < 10; ++i) { 11658 #pragma omp simd 11659 for (int i = 0; i < 10; ++i) 11660 ; 11661 } 11662 #pragma omp parallel for 11663 for (int i = 0; i < 10; ++i) { 11664 #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?}} 11665 for (int i = 0; i < 10; ++i) 11666 ; 11667 } 11668 11669 #pragma omp parallel for 11670 for (int i = 0; i < 10; ++i) { 11671 #pragma omp parallel 11672 for (int i = 0; i < 10; ++i) 11673 ; 11674 } 11675 #pragma omp parallel for 11676 for (int i = 0; i < 10; ++i) { 11677 #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?}} 11678 { 11679 bar(); 11680 } 11681 } 11682 #pragma omp parallel for 11683 for (int i = 0; i < 10; ++i) { 11684 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 11685 { 11686 bar(); 11687 } 11688 } 11689 #pragma omp parallel for 11690 for (int i = 0; i < 10; ++i) { 11691 #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?}} 11692 { 11693 bar(); 11694 } 11695 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11696 { 11697 bar(); 11698 } 11699 #pragma omp critical 11700 { 11701 bar(); 11702 } 11703 } 11704 #pragma omp parallel for 11705 for (int i = 0; i < 10; ++i) { 11706 #pragma omp parallel 11707 { 11708 #pragma omp single // OK 11709 { 11710 bar(); 11711 } 11712 #pragma omp master // OK 11713 { 11714 bar(); 11715 } 11716 #pragma omp critical // OK 11717 { 11718 bar(); 11719 } 11720 #pragma omp for // OK 11721 for (int i = 0; i < 10; ++i) 11722 ; 11723 #pragma omp for simd // OK 11724 for (int i = 0; i < 10; ++i) 11725 ; 11726 #pragma omp sections // OK 11727 { 11728 bar(); 11729 } 11730 } 11731 } 11732 #pragma omp parallel for 11733 for (int i = 0; i < 10; ++i) { 11734 #pragma omp parallel for 11735 for (int i = 0; i < 10; ++i) 11736 ; 11737 } 11738 #pragma omp parallel for 11739 for (int i = 0; i < 10; ++i) { 11740 #pragma omp parallel for simd 11741 for (int i = 0; i < 10; ++i) 11742 ; 11743 } 11744 #pragma omp parallel for 11745 for (int i = 0; i < 10; ++i) { 11746 #pragma omp parallel sections 11747 { 11748 bar(); 11749 } 11750 } 11751 #pragma omp parallel for 11752 for (int i = 0; i < 10; ++i) { 11753 #pragma omp task 11754 { 11755 bar(); 11756 } 11757 } 11758 #pragma omp parallel for 11759 for (int i = 0; i < 10; ++i) { 11760 #pragma omp taskyield 11761 bar(); 11762 } 11763 #pragma omp parallel for 11764 for (int i = 0; i < 10; ++i) { 11765 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11766 bar(); 11767 } 11768 #pragma omp parallel for 11769 for (int i = 0; i < 10; ++i) { 11770 #pragma omp taskwait 11771 bar(); 11772 } 11773 #pragma omp parallel for 11774 for (int i = 0; i < 10; ++i) { 11775 #pragma omp flush 11776 bar(); 11777 } 11778 #pragma omp parallel for 11779 for (int i = 0; i < 10; ++i) { 11780 #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?}} 11781 bar(); 11782 } 11783 #pragma omp parallel for ordered 11784 for (int i = 0; i < 10; ++i) { 11785 #pragma omp ordered // OK 11786 bar(); 11787 } 11788 #pragma omp parallel for 11789 for (int i = 0; i < 10; ++i) { 11790 #pragma omp atomic 11791 ++a; 11792 } 11793 #pragma omp parallel for 11794 for (int i = 0; i < 10; ++i) { 11795 #pragma omp target 11796 ++a; 11797 } 11798 #pragma omp parallel for 11799 for (int i = 0; i < 10; ++i) { 11800 #pragma omp target parallel 11801 ++a; 11802 } 11803 #pragma omp parallel for 11804 for (int i = 0; i < 10; ++i) { 11805 #pragma omp target parallel for 11806 for (int i = 0; i < 10; ++i) 11807 ; 11808 } 11809 #pragma omp parallel for 11810 for (int i = 0; i < 10; ++i) { 11811 #pragma omp target enter data map(to: a) 11812 ++a; 11813 } 11814 #pragma omp parallel for 11815 for (int i = 0; i < 10; ++i) { 11816 #pragma omp target exit data map(from: a) 11817 ++a; 11818 } 11819 #pragma omp parallel for 11820 for (int i = 0; i < 10; ++i) { 11821 #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?}} 11822 ++a; 11823 } 11824 #pragma omp parallel for 11825 for (int i = 0; i < 10; ++i) { 11826 #pragma omp taskloop 11827 for (int i = 0; i < 10; ++i) 11828 ++a; 11829 } 11830 #pragma omp parallel for 11831 for (int i = 0; i < 10; ++i) { 11832 #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?}} 11833 for (int j = 0; j < 10; ++j) 11834 ; 11835 } 11836 #pragma omp parallel for 11837 for (int i = 0; i < 10; ++i) { 11838 #pragma omp target update to(a) 11839 a++; 11840 } 11841 #pragma omp parallel for 11842 for (int i = 0; i < 10; ++i) { 11843 #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?}} 11844 for (int j = 0; j < 10; ++j) 11845 ; 11846 } 11847 #pragma omp parallel for 11848 for (int i = 0; i < 10; ++i) { 11849 #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?}} 11850 for (int j = 0; j < 10; ++j) 11851 ; 11852 } 11853 #pragma omp parallel for 11854 for (int i = 0; i < 10; ++i) { 11855 #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?}} 11856 for (int j = 0; j < 10; ++j) 11857 ; 11858 } 11859 #pragma omp parallel for 11860 for (int i = 0; i < 10; ++i) { 11861 #pragma omp target simd // OK 11862 for (int j = 0; j < 10; ++j) 11863 ; 11864 } 11865 #pragma omp parallel for 11866 for (int i = 0; i < 10; ++i) { 11867 #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?}} 11868 for (int j = 0; j < 10; ++j) 11869 ; 11870 } 11871 #pragma omp parallel for 11872 for (int i = 0; i < 10; ++i) { 11873 #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?}} 11874 for (int j = 0; j < 10; ++j) 11875 ; 11876 } 11877 #pragma omp parallel for 11878 for (int i = 0; i < 10; ++i) { 11879 #pragma omp 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?}} 11880 for (int j = 0; j < 10; ++j) 11881 ; 11882 } 11883 #pragma omp parallel for 11884 for (int i = 0; i < 10; ++i) { 11885 #pragma omp 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?}} 11886 for (int j = 0; j < 10; ++j) 11887 ; 11888 } 11889 #pragma omp parallel for 11890 for (int i = 0; i < 10; ++i) { 11891 #pragma omp target teams // OK 11892 a++; 11893 } 11894 #pragma omp parallel for 11895 for (int i = 0; i < 10; ++i) { 11896 #pragma omp target teams distribute // OK 11897 for (int j = 0; j < 10; ++j) 11898 ; 11899 } 11900 #pragma omp parallel for 11901 for (int i = 0; i < 10; ++i) { 11902 #pragma omp target teams distribute parallel for // OK 11903 for (int j = 0; j < 10; ++j) 11904 ; 11905 } 11906 #pragma omp parallel for 11907 for (int i = 0; i < 10; ++i) { 11908 #pragma omp target teams distribute parallel for simd // OK 11909 for (int j = 0; j < 10; ++j) 11910 ; 11911 } 11912 #pragma omp parallel for 11913 for (int i = 0; i < 10; ++i) { 11914 #pragma omp target teams distribute simd // OK 11915 for (int j = 0; j < 10; ++j) 11916 ; 11917 } 11918 11919 // PARALLEL FOR SIMD DIRECTIVE 11920 #pragma omp parallel for simd 11921 for (int i = 0; i < 10; ++i) { 11922 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11923 for (int i = 0; i < 10; ++i) 11924 ; 11925 } 11926 #pragma omp parallel for simd 11927 for (int i = 0; i < 10; ++i) { 11928 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11929 for (int i = 0; i < 10; ++i) 11930 ; 11931 } 11932 #pragma omp parallel for simd 11933 for (int i = 0; i < 10; ++i) { 11934 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11935 for (int i = 0; i < 10; ++i) 11936 ; 11937 } 11938 #pragma omp parallel for simd 11939 for (int i = 0; i < 10; ++i) { 11940 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11941 for (int i = 0; i < 10; ++i) 11942 ; 11943 } 11944 #pragma omp parallel for simd 11945 for (int i = 0; i < 10; ++i) { 11946 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11947 { 11948 bar(); 11949 } 11950 } 11951 #pragma omp parallel for simd 11952 for (int i = 0; i < 10; ++i) { 11953 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11954 { 11955 bar(); 11956 } 11957 } 11958 #pragma omp parallel for simd 11959 for (int i = 0; i < 10; ++i) { 11960 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11961 { 11962 bar(); 11963 } 11964 } 11965 11966 #pragma omp parallel for simd 11967 for (int i = 0; i < 10; ++i) { 11968 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11969 { 11970 bar(); 11971 } 11972 } 11973 11974 #pragma omp parallel for simd 11975 for (int i = 0; i < 10; ++i) { 11976 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11977 { 11978 bar(); 11979 } 11980 } 11981 11982 #pragma omp parallel for simd 11983 for (int i = 0; i < 10; ++i) { 11984 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11985 { 11986 #pragma omp single 11987 { 11988 bar(); 11989 } 11990 #pragma omp for 11991 for (int i = 0; i < 10; ++i) 11992 ; 11993 #pragma omp for simd 11994 for (int i = 0; i < 10; ++i) 11995 ; 11996 #pragma omp sections 11997 { 11998 bar(); 11999 } 12000 } 12001 } 12002 #pragma omp parallel for simd 12003 for (int i = 0; i < 10; ++i) { 12004 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12005 for (int i = 0; i < 10; ++i) 12006 ; 12007 } 12008 #pragma omp parallel for simd 12009 for (int i = 0; i < 10; ++i) { 12010 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 12011 for (int i = 0; i < 10; ++i) 12012 ; 12013 } 12014 #pragma omp parallel for simd 12015 for (int i = 0; i < 10; ++i) { 12016 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12017 { 12018 bar(); 12019 } 12020 } 12021 #pragma omp parallel for simd 12022 for (int i = 0; i < 10; ++i) { 12023 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12024 { 12025 bar(); 12026 } 12027 } 12028 #pragma omp parallel for simd 12029 for (int i = 0; i < 10; ++i) { 12030 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12031 bar(); 12032 } 12033 #pragma omp parallel for simd 12034 for (int i = 0; i < 10; ++i) { 12035 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12036 bar(); 12037 } 12038 #pragma omp parallel for simd 12039 for (int i = 0; i < 10; ++i) { 12040 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12041 bar(); 12042 } 12043 #pragma omp parallel for simd 12044 for (int i = 0; i < 10; ++i) { 12045 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12046 bar(); 12047 } 12048 #pragma omp parallel for simd 12049 for (int i = 0; i < 10; ++i) { 12050 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12051 bar(); 12052 } 12053 #pragma omp parallel for simd 12054 for (int i = 0; i < 10; ++i) { 12055 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12056 bar(); 12057 } 12058 #pragma omp parallel for simd 12059 for (int i = 0; i < 10; ++i) { 12060 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 12061 ++a; 12062 } 12063 #pragma omp parallel for simd 12064 for (int i = 0; i < 10; ++i) { 12065 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12066 ++a; 12067 } 12068 #pragma omp parallel for simd 12069 for (int i = 0; i < 10; ++i) { 12070 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12071 ++a; 12072 } 12073 #pragma omp parallel for simd 12074 for (int i = 0; i < 10; ++i) { 12075 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12076 for (int i = 0; i < 10; ++i) 12077 ; 12078 } 12079 #pragma omp parallel for simd 12080 for (int i = 0; i < 10; ++i) { 12081 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12082 ++a; 12083 } 12084 #pragma omp parallel for simd 12085 for (int i = 0; i < 10; ++i) { 12086 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12087 ++a; 12088 } 12089 #pragma omp parallel for simd 12090 for (int i = 0; i < 10; ++i) { 12091 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12092 ++a; 12093 } 12094 #pragma omp parallel for simd 12095 for (int i = 0; i < 10; ++i) { 12096 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12097 for (int i = 0; i < 10; ++i) 12098 ++a; 12099 } 12100 #pragma omp parallel for simd 12101 for (int i = 0; i < 10; ++i) { 12102 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12103 for (int j = 0; j < 10; ++j) 12104 ; 12105 } 12106 #pragma omp parallel for simd 12107 for (int i = 0; i < 10; ++i) { 12108 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12109 a++; 12110 } 12111 #pragma omp parallel for simd 12112 for (int i = 0; i < 10; ++i) { 12113 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12114 for (int j = 0; j < 10; ++j) 12115 ; 12116 } 12117 #pragma omp parallel for simd 12118 for (int i = 0; i < 10; ++i) { 12119 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12120 for (int j = 0; j < 10; ++j) 12121 ; 12122 } 12123 #pragma omp parallel for simd 12124 for (int i = 0; i < 10; ++i) { 12125 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12126 for (int j = 0; j < 10; ++j) 12127 ; 12128 } 12129 #pragma omp parallel for simd 12130 for (int i = 0; i < 10; ++i) { 12131 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12132 for (int j = 0; j < 10; ++j) 12133 ; 12134 } 12135 #pragma omp parallel for simd 12136 for (int i = 0; i < 10; ++i) { 12137 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12138 for (int j = 0; j < 10; ++j) 12139 ; 12140 } 12141 #pragma omp parallel for simd 12142 for (int i = 0; i < 10; ++i) { 12143 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12144 for (int j = 0; j < 10; ++j) 12145 ; 12146 } 12147 #pragma omp parallel for simd 12148 for (int i = 0; i < 10; ++i) { 12149 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12150 for (int j = 0; j < 10; ++j) 12151 ; 12152 } 12153 #pragma omp parallel for simd 12154 for (int i = 0; i < 10; ++i) { 12155 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12156 for (int j = 0; j < 10; ++j) 12157 ; 12158 } 12159 #pragma omp parallel for simd 12160 for (int i = 0; i < 10; ++i) { 12161 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12162 a++; 12163 } 12164 #pragma omp parallel for simd 12165 for (int i = 0; i < 10; ++i) { 12166 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12167 for (int j = 0; j < 10; ++j) 12168 ; 12169 } 12170 #pragma omp parallel for simd 12171 for (int i = 0; i < 10; ++i) { 12172 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12173 for (int j = 0; j < 10; ++j) 12174 ; 12175 } 12176 #pragma omp parallel for simd 12177 for (int i = 0; i < 10; ++i) { 12178 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12179 for (int j = 0; j < 10; ++j) 12180 ; 12181 } 12182 #pragma omp parallel for simd 12183 for (int i = 0; i < 10; ++i) { 12184 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12185 for (int j = 0; j < 10; ++j) 12186 ; 12187 } 12188 12189 // PARALLEL SECTIONS DIRECTIVE 12190 #pragma omp parallel sections 12191 { 12192 #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?}} 12193 for (int i = 0; i < 10; ++i) 12194 ; 12195 } 12196 #pragma omp parallel sections 12197 { 12198 #pragma omp simd 12199 for (int i = 0; i < 10; ++i) 12200 ; 12201 } 12202 #pragma omp parallel sections 12203 { 12204 #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?}} 12205 for (int i = 0; i < 10; ++i) 12206 ; 12207 } 12208 #pragma omp parallel sections 12209 { 12210 #pragma omp parallel 12211 for (int i = 0; i < 10; ++i) 12212 ; 12213 } 12214 #pragma omp parallel sections 12215 { 12216 #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?}} 12217 { 12218 bar(); 12219 } 12220 } 12221 #pragma omp parallel sections 12222 { 12223 #pragma omp section 12224 { 12225 bar(); 12226 } 12227 } 12228 #pragma omp parallel sections 12229 { 12230 #pragma omp section 12231 { 12232 #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?}} 12233 bar(); 12234 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 12235 bar(); 12236 #pragma omp critical 12237 bar(); 12238 } 12239 } 12240 #pragma omp parallel sections 12241 { 12242 #pragma omp parallel 12243 { 12244 #pragma omp single // OK 12245 { 12246 bar(); 12247 } 12248 #pragma omp master // OK 12249 { 12250 bar(); 12251 } 12252 #pragma omp critical // OK 12253 { 12254 bar(); 12255 } 12256 #pragma omp for // OK 12257 for (int i = 0; i < 10; ++i) 12258 ; 12259 #pragma omp for simd // OK 12260 for (int i = 0; i < 10; ++i) 12261 ; 12262 #pragma omp sections // OK 12263 { 12264 bar(); 12265 } 12266 } 12267 } 12268 #pragma omp parallel sections 12269 { 12270 #pragma omp parallel for 12271 for (int i = 0; i < 10; ++i) 12272 ; 12273 } 12274 #pragma omp parallel sections 12275 { 12276 #pragma omp parallel for simd 12277 for (int i = 0; i < 10; ++i) 12278 ; 12279 } 12280 #pragma omp parallel sections 12281 { 12282 #pragma omp parallel sections 12283 { 12284 bar(); 12285 } 12286 } 12287 #pragma omp parallel sections 12288 { 12289 #pragma omp task 12290 { 12291 bar(); 12292 } 12293 } 12294 #pragma omp parallel sections 12295 { 12296 #pragma omp taskyield 12297 } 12298 #pragma omp parallel sections 12299 { 12300 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12301 } 12302 #pragma omp parallel sections 12303 { 12304 #pragma omp taskwait 12305 } 12306 #pragma omp parallel sections 12307 { 12308 #pragma omp flush 12309 } 12310 #pragma omp parallel sections 12311 { 12312 #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?}} 12313 bar(); 12314 } 12315 #pragma omp parallel sections 12316 { 12317 #pragma omp atomic 12318 ++a; 12319 } 12320 #pragma omp parallel sections 12321 { 12322 #pragma omp target 12323 ++a; 12324 } 12325 #pragma omp parallel sections 12326 { 12327 #pragma omp target parallel 12328 ++a; 12329 } 12330 #pragma omp parallel sections 12331 { 12332 #pragma omp target parallel for 12333 for (int i = 0; i < 10; ++i) 12334 ; 12335 } 12336 #pragma omp parallel sections 12337 { 12338 #pragma omp target enter data map(to: a) 12339 } 12340 #pragma omp parallel sections 12341 { 12342 #pragma omp target exit data map(from: a) 12343 } 12344 #pragma omp parallel sections 12345 { 12346 #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?}} 12347 ++a; 12348 } 12349 #pragma omp parallel sections 12350 { 12351 #pragma omp taskloop 12352 for (int i = 0; i < 10; ++i) 12353 ++a; 12354 } 12355 #pragma omp parallel sections 12356 { 12357 #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?}} 12358 for (int i = 0; i < 10; ++i) 12359 ; 12360 } 12361 #pragma omp parallel sections 12362 { 12363 #pragma omp target update to(a) 12364 } 12365 #pragma omp parallel sections 12366 { 12367 #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?}} 12368 for (int i = 0; i < 10; ++i) 12369 ; 12370 } 12371 #pragma omp parallel sections 12372 { 12373 #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?}} 12374 for (int i = 0; i < 10; ++i) 12375 ; 12376 } 12377 #pragma omp parallel sections 12378 { 12379 #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?}} 12380 for (int i = 0; i < 10; ++i) 12381 ; 12382 } 12383 #pragma omp parallel sections 12384 { 12385 #pragma omp target simd // OK 12386 for (int i = 0; i < 10; ++i) 12387 ; 12388 } 12389 #pragma omp parallel sections 12390 { 12391 #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?}} 12392 for (int i = 0; i < 10; ++i) 12393 ; 12394 } 12395 #pragma omp parallel sections 12396 { 12397 #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?}} 12398 for (int i = 0; i < 10; ++i) 12399 ; 12400 } 12401 #pragma omp parallel sections 12402 { 12403 #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?}} 12404 for (int i = 0; i < 10; ++i) 12405 ; 12406 } 12407 #pragma omp parallel sections 12408 { 12409 #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?}} 12410 for (int i = 0; i < 10; ++i) 12411 ; 12412 } 12413 #pragma omp parallel sections 12414 { 12415 #pragma omp target teams // OK 12416 a++; 12417 } 12418 #pragma omp parallel sections 12419 { 12420 #pragma omp target teams distribute // OK 12421 for (int i = 0; i < 10; ++i) 12422 ; 12423 } 12424 #pragma omp parallel sections 12425 { 12426 #pragma omp target teams distribute parallel for // OK 12427 for (int i = 0; i < 10; ++i) 12428 ; 12429 } 12430 #pragma omp parallel sections 12431 { 12432 #pragma omp target teams distribute parallel for simd // OK 12433 for (int i = 0; i < 10; ++i) 12434 ; 12435 } 12436 #pragma omp parallel sections 12437 { 12438 #pragma omp target teams distribute simd // OK 12439 for (int i = 0; i < 10; ++i) 12440 ; 12441 } 12442 12443 // TASK DIRECTIVE 12444 #pragma omp task 12445 #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?}} 12446 for (int i = 0; i < 10; ++i) 12447 ; 12448 #pragma omp task 12449 #pragma omp simd 12450 for (int i = 0; i < 10; ++i) 12451 ; 12452 #pragma omp task 12453 #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?}} 12454 for (int i = 0; i < 10; ++i) 12455 ; 12456 #pragma omp task 12457 #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?}} 12458 { 12459 bar(); 12460 } 12461 #pragma omp task 12462 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 12463 { 12464 bar(); 12465 } 12466 #pragma omp task 12467 #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?}} 12468 bar(); 12469 #pragma omp task 12470 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 12471 bar(); 12472 #pragma omp task 12473 #pragma omp critical 12474 bar(); 12475 #pragma omp task 12476 #pragma omp parallel for 12477 for (int i = 0; i < 10; ++i) 12478 ; 12479 #pragma omp task 12480 #pragma omp parallel for simd 12481 for (int i = 0; i < 10; ++i) 12482 ; 12483 #pragma omp task 12484 #pragma omp parallel sections 12485 { 12486 bar(); 12487 } 12488 #pragma omp task 12489 #pragma omp task 12490 { 12491 bar(); 12492 } 12493 #pragma omp task 12494 { 12495 #pragma omp taskyield 12496 bar(); 12497 } 12498 #pragma omp task 12499 { 12500 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 12501 bar(); 12502 } 12503 #pragma omp task 12504 { 12505 #pragma omp taskwait 12506 bar(); 12507 } 12508 #pragma omp task 12509 { 12510 #pragma omp flush 12511 bar(); 12512 } 12513 #pragma omp task 12514 { 12515 #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?}} 12516 bar(); 12517 } 12518 #pragma omp task 12519 { 12520 #pragma omp atomic 12521 ++a; 12522 } 12523 #pragma omp task 12524 { 12525 #pragma omp target 12526 ++a; 12527 } 12528 #pragma omp task 12529 { 12530 #pragma omp target parallel 12531 ++a; 12532 } 12533 #pragma omp task 12534 #pragma omp target parallel for 12535 for (int i = 0; i < 10; ++i) 12536 ; 12537 #pragma omp task 12538 { 12539 #pragma omp target enter data map(to: a) 12540 ++a; 12541 } 12542 #pragma omp task 12543 { 12544 #pragma omp target exit data map(from: a) 12545 ++a; 12546 } 12547 #pragma omp task 12548 { 12549 #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?}} 12550 ++a; 12551 } 12552 #pragma omp task 12553 { 12554 #pragma omp taskloop 12555 for (int i = 0; i < 10; ++i) 12556 ++a; 12557 } 12558 #pragma omp task 12559 { 12560 #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?}} 12561 for (int i = 0; i < 10; ++i) 12562 ; 12563 } 12564 #pragma omp task 12565 { 12566 #pragma omp target update to(a) 12567 a++; 12568 } 12569 #pragma omp task 12570 { 12571 #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?}} 12572 for (int i = 0; i < 10; ++i) 12573 ; 12574 } 12575 #pragma omp task 12576 { 12577 #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?}} 12578 for (int i = 0; i < 10; ++i) 12579 ; 12580 } 12581 #pragma omp task 12582 { 12583 #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?}} 12584 for (int i = 0; i < 10; ++i) 12585 ; 12586 } 12587 #pragma omp task 12588 { 12589 #pragma omp target simd // OK 12590 for (int i = 0; i < 10; ++i) 12591 ; 12592 } 12593 #pragma omp task 12594 { 12595 #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?}} 12596 for (int i = 0; i < 10; ++i) 12597 ; 12598 } 12599 #pragma omp task 12600 { 12601 #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?}} 12602 for (int i = 0; i < 10; ++i) 12603 ; 12604 } 12605 #pragma omp task 12606 { 12607 #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?}} 12608 for (int i = 0; i < 10; ++i) 12609 ; 12610 } 12611 #pragma omp task 12612 { 12613 #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?}} 12614 for (int i = 0; i < 10; ++i) 12615 ; 12616 } 12617 #pragma omp task 12618 { 12619 #pragma omp target teams // OK 12620 a++; 12621 } 12622 #pragma omp task 12623 { 12624 #pragma omp target teams distribute // OK 12625 for (int i = 0; i < 10; ++i) 12626 ; 12627 } 12628 #pragma omp task 12629 { 12630 #pragma omp target teams distribute parallel for // OK 12631 for (int i = 0; i < 10; ++i) 12632 ; 12633 } 12634 #pragma omp task 12635 { 12636 #pragma omp target teams distribute parallel for simd // OK 12637 for (int i = 0; i < 10; ++i) 12638 ; 12639 } 12640 #pragma omp task 12641 { 12642 #pragma omp target teams distribute simd // OK 12643 for (int i = 0; i < 10; ++i) 12644 ; 12645 } 12646 12647 // ATOMIC DIRECTIVE 12648 #pragma omp atomic 12649 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12650 // expected-note@+1 {{expected an expression statement}} 12651 { 12652 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12653 for (int i = 0; i < 10; ++i) 12654 ; 12655 } 12656 #pragma omp atomic 12657 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12658 // expected-note@+1 {{expected an expression statement}} 12659 { 12660 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12661 for (int i = 0; i < 10; ++i) 12662 ; 12663 } 12664 #pragma omp atomic 12665 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12666 // expected-note@+1 {{expected an expression statement}} 12667 { 12668 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12669 for (int i = 0; i < 10; ++i) 12670 ; 12671 } 12672 #pragma omp atomic 12673 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12674 // expected-note@+1 {{expected an expression statement}} 12675 { 12676 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12677 for (int i = 0; i < 10; ++i) 12678 ; 12679 } 12680 #pragma omp atomic 12681 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12682 // expected-note@+1 {{expected an expression statement}} 12683 { 12684 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12685 { 12686 bar(); 12687 } 12688 } 12689 #pragma omp atomic 12690 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12691 // expected-note@+1 {{expected an expression statement}} 12692 { 12693 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12694 { 12695 bar(); 12696 } 12697 } 12698 #pragma omp atomic 12699 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12700 // expected-note@+1 {{expected an expression statement}} 12701 { 12702 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12703 { 12704 bar(); 12705 } 12706 } 12707 #pragma omp atomic 12708 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12709 // expected-note@+1 {{expected an expression statement}} 12710 { 12711 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12712 { 12713 bar(); 12714 } 12715 } 12716 #pragma omp atomic 12717 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12718 // expected-note@+1 {{expected an expression statement}} 12719 { 12720 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12721 { 12722 bar(); 12723 } 12724 } 12725 #pragma omp atomic 12726 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12727 // expected-note@+1 {{expected an expression statement}} 12728 { 12729 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12730 for (int i = 0; i < 10; ++i) 12731 ; 12732 } 12733 #pragma omp atomic 12734 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12735 // expected-note@+1 {{expected an expression statement}} 12736 { 12737 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12738 for (int i = 0; i < 10; ++i) 12739 ; 12740 } 12741 #pragma omp atomic 12742 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12743 // expected-note@+1 {{expected an expression statement}} 12744 { 12745 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12746 { 12747 bar(); 12748 } 12749 } 12750 #pragma omp atomic 12751 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12752 // expected-note@+1 {{expected an expression statement}} 12753 { 12754 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12755 { 12756 bar(); 12757 } 12758 } 12759 #pragma omp atomic 12760 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12761 // expected-note@+1 {{expected an expression statement}} 12762 { 12763 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12764 bar(); 12765 } 12766 #pragma omp atomic 12767 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12768 // expected-note@+1 {{expected an expression statement}} 12769 { 12770 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12771 bar(); 12772 } 12773 #pragma omp atomic 12774 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12775 // expected-note@+1 {{expected an expression statement}} 12776 { 12777 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12778 bar(); 12779 } 12780 #pragma omp atomic 12781 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12782 // expected-note@+1 {{expected an expression statement}} 12783 { 12784 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12785 bar(); 12786 } 12787 #pragma omp atomic 12788 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12789 // expected-note@+1 {{expected an expression statement}} 12790 { 12791 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12792 bar(); 12793 } 12794 #pragma omp atomic 12795 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12796 // expected-note@+1 {{expected an expression statement}} 12797 { 12798 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12799 ++a; 12800 } 12801 #pragma omp atomic 12802 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12803 // expected-note@+1 {{expected an expression statement}} 12804 { 12805 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12806 ++a; 12807 } 12808 #pragma omp atomic 12809 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12810 // expected-note@+1 {{expected an expression statement}} 12811 { 12812 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12813 ++a; 12814 } 12815 #pragma omp atomic 12816 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12817 // expected-note@+1 {{expected an expression statement}} 12818 { 12819 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12820 for (int i = 0; i < 10; ++i) 12821 ; 12822 } 12823 #pragma omp atomic 12824 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12825 // expected-note@+1 {{expected an expression statement}} 12826 { 12827 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12828 ++a; 12829 } 12830 #pragma omp atomic 12831 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12832 // expected-note@+1 {{expected an expression statement}} 12833 { 12834 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12835 ++a; 12836 } 12837 #pragma omp atomic 12838 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12839 // expected-note@+1 {{expected an expression statement}} 12840 { 12841 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12842 ++a; 12843 } 12844 #pragma omp atomic 12845 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12846 // expected-note@+1 {{expected an expression statement}} 12847 { 12848 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12849 for (int i = 0; i < 10; ++i) 12850 ++a; 12851 } 12852 #pragma omp atomic 12853 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12854 // expected-note@+1 {{expected an expression statement}} 12855 { 12856 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12857 for (int i = 0; i < 10; ++i) 12858 ; 12859 } 12860 #pragma omp atomic 12861 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12862 // expected-note@+1 {{expected an expression statement}} 12863 { 12864 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12865 } 12866 #pragma omp atomic 12867 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12868 // expected-note@+1 {{expected an expression statement}} 12869 { 12870 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12871 for (int i = 0; i < 10; ++i) 12872 ; 12873 } 12874 #pragma omp atomic 12875 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12876 // expected-note@+1 {{expected an expression statement}} 12877 { 12878 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12879 for (int i = 0; i < 10; ++i) 12880 ; 12881 } 12882 #pragma omp atomic 12883 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12884 // expected-note@+1 {{expected an expression statement}} 12885 { 12886 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12887 for (int i = 0; i < 10; ++i) 12888 ; 12889 } 12890 #pragma omp atomic 12891 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12892 // expected-note@+1 {{expected an expression statement}} 12893 { 12894 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12895 for (int i = 0; i < 10; ++i) 12896 ; 12897 } 12898 #pragma omp atomic 12899 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12900 // expected-note@+1 {{expected an expression statement}} 12901 { 12902 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12903 for (int i = 0; i < 10; ++i) 12904 ; 12905 } 12906 #pragma omp atomic 12907 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12908 // expected-note@+1 {{expected an expression statement}} 12909 { 12910 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12911 for (int i = 0; i < 10; ++i) 12912 ; 12913 } 12914 #pragma omp atomic 12915 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12916 // expected-note@+1 {{expected an expression statement}} 12917 { 12918 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12919 for (int i = 0; i < 10; ++i) 12920 ; 12921 } 12922 #pragma omp atomic 12923 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12924 // expected-note@+1 {{expected an expression statement}} 12925 { 12926 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12927 for (int i = 0; i < 10; ++i) 12928 ; 12929 } 12930 #pragma omp atomic 12931 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12932 // expected-note@+1 {{expected an expression statement}} 12933 { 12934 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12935 a++; 12936 } 12937 #pragma omp atomic 12938 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12939 // expected-note@+1 {{expected an expression statement}} 12940 { 12941 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12942 for (int i = 0; i < 10; ++i) 12943 ; 12944 } 12945 #pragma omp atomic 12946 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12947 // expected-note@+1 {{expected an expression statement}} 12948 { 12949 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12950 for (int i = 0; i < 10; ++i) 12951 ; 12952 } 12953 #pragma omp atomic 12954 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12955 // expected-note@+1 {{expected an expression statement}} 12956 { 12957 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12958 for (int i = 0; i < 10; ++i) 12959 ; 12960 } 12961 #pragma omp atomic 12962 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12963 // expected-note@+1 {{expected an expression statement}} 12964 { 12965 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12966 for (int i = 0; i < 10; ++i) 12967 ; 12968 } 12969 12970 // TARGET DIRECTIVE 12971 #pragma omp target 12972 #pragma omp parallel 12973 bar(); 12974 #pragma omp target 12975 #pragma omp for 12976 for (int i = 0; i < 10; ++i) 12977 ; 12978 #pragma omp target 12979 #pragma omp simd 12980 for (int i = 0; i < 10; ++i) 12981 ; 12982 #pragma omp target 12983 #pragma omp for simd 12984 for (int i = 0; i < 10; ++i) 12985 ; 12986 #pragma omp target 12987 #pragma omp sections 12988 { 12989 bar(); 12990 } 12991 #pragma omp target 12992 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 12993 { 12994 bar(); 12995 } 12996 #pragma omp target 12997 #pragma omp single 12998 bar(); 12999 13000 #pragma omp target 13001 #pragma omp master 13002 { 13003 bar(); 13004 } 13005 #pragma omp target 13006 #pragma omp critical 13007 { 13008 bar(); 13009 } 13010 #pragma omp target 13011 #pragma omp parallel for 13012 for (int i = 0; i < 10; ++i) 13013 ; 13014 #pragma omp target 13015 #pragma omp parallel for simd 13016 for (int i = 0; i < 10; ++i) 13017 ; 13018 #pragma omp target 13019 #pragma omp parallel sections 13020 { 13021 bar(); 13022 } 13023 #pragma omp target 13024 #pragma omp task 13025 { 13026 bar(); 13027 } 13028 #pragma omp target 13029 { 13030 #pragma omp taskyield 13031 bar(); 13032 } 13033 #pragma omp target 13034 { 13035 #pragma omp barrier 13036 bar(); 13037 } 13038 #pragma omp target 13039 { 13040 #pragma omp taskwait 13041 bar(); 13042 } 13043 #pragma omp target 13044 { 13045 #pragma omp flush 13046 bar(); 13047 } 13048 #pragma omp target 13049 { 13050 #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?}} 13051 bar(); 13052 } 13053 #pragma omp target 13054 { 13055 #pragma omp atomic 13056 ++a; 13057 } 13058 #pragma omp target 13059 { 13060 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13061 ++a; 13062 } 13063 #pragma omp target 13064 { 13065 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13066 ++a; 13067 } 13068 #pragma omp target 13069 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13070 for (int i = 0; i < 10; ++i) 13071 ; 13072 #pragma omp target 13073 { 13074 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13075 } 13076 #pragma omp target 13077 { 13078 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13079 } 13080 #pragma omp target 13081 { 13082 #pragma omp teams 13083 ++a; 13084 } 13085 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13086 { 13087 #pragma omp teams // expected-note {{directive outside teams construct here}} 13088 ++a; 13089 #pragma omp teams // expected-note {{nested teams construct here}} 13090 ++a; 13091 } 13092 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13093 { 13094 ++a; // expected-note {{statement outside teams construct here}} 13095 #pragma omp teams // expected-note {{nested teams construct here}} 13096 ++a; 13097 } 13098 #pragma omp target 13099 { 13100 #pragma omp taskloop 13101 for (int i = 0; i < 10; ++i) 13102 ++a; 13103 } 13104 #pragma omp target 13105 { 13106 #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?}} 13107 for (int i = 0; i < 10; ++i) 13108 ; 13109 } 13110 #pragma omp atomic 13111 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 13112 // expected-note@+1 {{expected an expression statement}} 13113 { 13114 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13115 a++; 13116 } 13117 #pragma omp target 13118 { 13119 #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?}} 13120 for (int i = 0; i < 10; ++i) 13121 ; 13122 } 13123 #pragma omp target 13124 { 13125 #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?}} 13126 for (int i = 0; i < 10; ++i) 13127 ; 13128 } 13129 #pragma omp target 13130 { 13131 #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?}} 13132 for (int i = 0; i < 10; ++i) 13133 ; 13134 } 13135 #pragma omp target 13136 { 13137 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13138 for (int i = 0; i < 10; ++i) 13139 ; 13140 } 13141 #pragma omp target 13142 { 13143 #pragma omp teams distribute // OK 13144 for (int i = 0; i < 10; ++i) 13145 ; 13146 } 13147 #pragma omp target 13148 { 13149 #pragma omp teams distribute simd // OK 13150 for (int i = 0; i < 10; ++i) 13151 ; 13152 } 13153 #pragma omp target 13154 { 13155 #pragma omp teams distribute parallel for simd // OK 13156 for (int i = 0; i < 10; ++i) 13157 ; 13158 } 13159 #pragma omp target 13160 { 13161 #pragma omp teams distribute parallel for // OK 13162 for (int i = 0; i < 10; ++i) 13163 ; 13164 } 13165 #pragma omp target 13166 { 13167 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13168 a++; 13169 } 13170 #pragma omp target 13171 { 13172 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13173 for (int i = 0; i < 10; ++i) 13174 ; 13175 } 13176 #pragma omp target 13177 { 13178 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13179 for (int i = 0; i < 10; ++i) 13180 ; 13181 } 13182 #pragma omp target 13183 { 13184 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13185 for (int i = 0; i < 10; ++i) 13186 ; 13187 } 13188 #pragma omp target 13189 { 13190 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13191 for (int i = 0; i < 10; ++i) 13192 ; 13193 } 13194 13195 // TARGET PARALLEL DIRECTIVE 13196 #pragma omp target parallel 13197 #pragma omp parallel 13198 bar(); 13199 #pragma omp target parallel 13200 #pragma omp for 13201 for (int i = 0; i < 10; ++i) 13202 ; 13203 #pragma omp target parallel 13204 #pragma omp simd 13205 for (int i = 0; i < 10; ++i) 13206 ; 13207 #pragma omp target parallel 13208 #pragma omp for simd 13209 for (int i = 0; i < 10; ++i) 13210 ; 13211 #pragma omp target parallel 13212 #pragma omp sections 13213 { 13214 bar(); 13215 } 13216 #pragma omp target parallel 13217 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 13218 { 13219 bar(); 13220 } 13221 #pragma omp target parallel 13222 #pragma omp single 13223 bar(); 13224 13225 #pragma omp target parallel 13226 #pragma omp master 13227 { 13228 bar(); 13229 } 13230 #pragma omp target parallel 13231 #pragma omp critical 13232 { 13233 bar(); 13234 } 13235 #pragma omp target parallel 13236 #pragma omp parallel for 13237 for (int i = 0; i < 10; ++i) 13238 ; 13239 #pragma omp target parallel 13240 #pragma omp parallel for simd 13241 for (int i = 0; i < 10; ++i) 13242 ; 13243 #pragma omp target parallel 13244 #pragma omp parallel sections 13245 { 13246 bar(); 13247 } 13248 #pragma omp target parallel 13249 #pragma omp task 13250 { 13251 bar(); 13252 } 13253 #pragma omp target parallel 13254 { 13255 #pragma omp taskyield 13256 bar(); 13257 } 13258 #pragma omp target parallel 13259 { 13260 #pragma omp barrier 13261 bar(); 13262 } 13263 #pragma omp target parallel 13264 { 13265 #pragma omp taskwait 13266 bar(); 13267 } 13268 #pragma omp target parallel 13269 { 13270 #pragma omp flush 13271 bar(); 13272 } 13273 #pragma omp target parallel 13274 { 13275 #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?}} 13276 bar(); 13277 } 13278 #pragma omp target parallel 13279 { 13280 #pragma omp atomic 13281 ++a; 13282 } 13283 #pragma omp target parallel 13284 { 13285 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 13286 ++a; 13287 } 13288 #pragma omp target parallel 13289 { 13290 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 13291 ++a; 13292 } 13293 #pragma omp target parallel 13294 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13295 for (int i = 0; i < 10; ++i) 13296 ; 13297 #pragma omp target parallel 13298 { 13299 #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?}} 13300 ++a; 13301 } 13302 #pragma omp target parallel 13303 { 13304 ++a; 13305 #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?}} 13306 ++a; 13307 } 13308 #pragma omp target parallel 13309 { 13310 #pragma omp taskloop 13311 for (int i = 0; i < 10; ++i) 13312 ++a; 13313 } 13314 #pragma omp target parallel 13315 { 13316 #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?}} 13317 for (int i = 0; i < 10; ++i) 13318 ; 13319 } 13320 #pragma omp target parallel 13321 { 13322 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13323 } 13324 #pragma omp target parallel 13325 { 13326 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13327 } 13328 #pragma omp target parallel 13329 { 13330 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13331 } 13332 #pragma omp target parallel 13333 { 13334 #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?}} 13335 for (int i = 0; i < 10; ++i) 13336 ; 13337 } 13338 #pragma omp target parallel 13339 { 13340 #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?}} 13341 for (int i = 0; i < 10; ++i) 13342 ; 13343 } 13344 #pragma omp target parallel 13345 { 13346 #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?}} 13347 for (int i = 0; i < 10; ++i) 13348 ; 13349 } 13350 #pragma omp target parallel 13351 { 13352 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 13353 for (int i = 0; i < 10; ++i) 13354 ; 13355 } 13356 #pragma omp target parallel 13357 { 13358 #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?}} 13359 for (int i = 0; i < 10; ++i) 13360 ; 13361 } 13362 #pragma omp target parallel 13363 { 13364 #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?}} 13365 for (int i = 0; i < 10; ++i) 13366 ; 13367 } 13368 #pragma omp target parallel 13369 { 13370 #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?}} 13371 for (int i = 0; i < 10; ++i) 13372 ; 13373 } 13374 #pragma omp target parallel 13375 { 13376 #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?}} 13377 for (int i = 0; i < 10; ++i) 13378 ; 13379 } 13380 #pragma omp target parallel 13381 { 13382 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 13383 a++; 13384 } 13385 #pragma omp target parallel 13386 { 13387 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 13388 for (int i = 0; i < 10; ++i) 13389 ; 13390 } 13391 #pragma omp target parallel 13392 { 13393 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13394 for (int i = 0; i < 10; ++i) 13395 ; 13396 } 13397 #pragma omp target parallel 13398 { 13399 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13400 for (int i = 0; i < 10; ++i) 13401 ; 13402 } 13403 #pragma omp target parallel 13404 { 13405 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13406 for (int i = 0; i < 10; ++i) 13407 ; 13408 } 13409 13410 // TARGET PARALLEL FOR DIRECTIVE 13411 #pragma omp target parallel for 13412 for (int i = 0; i < 10; ++i) { 13413 #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?}} 13414 for (int i = 0; i < 10; ++i) 13415 ; 13416 } 13417 #pragma omp target parallel for 13418 for (int i = 0; i < 10; ++i) { 13419 #pragma omp simd 13420 for (int i = 0; i < 10; ++i) 13421 ; 13422 } 13423 #pragma omp target parallel for 13424 for (int i = 0; i < 10; ++i) { 13425 #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?}} 13426 for (int i = 0; i < 10; ++i) 13427 ; 13428 } 13429 #pragma omp target parallel for 13430 for (int i = 0; i < 10; ++i) { 13431 #pragma omp parallel 13432 for (int i = 0; i < 10; ++i) 13433 ; 13434 } 13435 #pragma omp target parallel for 13436 for (int i = 0; i < 10; ++i) { 13437 #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?}} 13438 { 13439 bar(); 13440 } 13441 } 13442 #pragma omp target parallel for 13443 for (int i = 0; i < 10; ++i) { 13444 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 13445 { 13446 bar(); 13447 } 13448 } 13449 #pragma omp target parallel for 13450 for (int i = 0; i < 10; ++i) { 13451 #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?}} 13452 { 13453 bar(); 13454 } 13455 } 13456 13457 #pragma omp target parallel for 13458 for (int i = 0; i < 10; ++i) { 13459 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13460 { 13461 bar(); 13462 } 13463 } 13464 13465 #pragma omp target parallel for 13466 for (int i = 0; i < 10; ++i) { 13467 #pragma omp critical 13468 { 13469 bar(); 13470 } 13471 } 13472 13473 #pragma omp target parallel for 13474 for (int i = 0; i < 10; ++i) { 13475 #pragma omp parallel 13476 { 13477 #pragma omp single // OK 13478 { 13479 bar(); 13480 } 13481 #pragma omp for // OK 13482 for (int i = 0; i < 10; ++i) 13483 ; 13484 #pragma omp for simd // OK 13485 for (int i = 0; i < 10; ++i) 13486 ; 13487 #pragma omp sections // OK 13488 { 13489 bar(); 13490 } 13491 } 13492 } 13493 #pragma omp target parallel for 13494 for (int i = 0; i < 10; ++i) { 13495 #pragma omp parallel for 13496 for (int i = 0; i < 10; ++i) 13497 ; 13498 } 13499 #pragma omp target parallel for 13500 for (int i = 0; i < 10; ++i) { 13501 #pragma omp parallel for simd 13502 for (int i = 0; i < 10; ++i) 13503 ; 13504 } 13505 #pragma omp target parallel for 13506 for (int i = 0; i < 10; ++i) { 13507 #pragma omp parallel sections 13508 { 13509 bar(); 13510 } 13511 } 13512 #pragma omp target parallel for 13513 for (int i = 0; i < 10; ++i) { 13514 #pragma omp task 13515 { 13516 bar(); 13517 } 13518 } 13519 #pragma omp target parallel for 13520 for (int i = 0; i < 10; ++i) { 13521 #pragma omp taskyield 13522 bar(); 13523 } 13524 #pragma omp target parallel for 13525 for (int i = 0; i < 10; ++i) { 13526 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13527 bar(); 13528 } 13529 #pragma omp target parallel for 13530 for (int i = 0; i < 10; ++i) { 13531 #pragma omp taskwait 13532 bar(); 13533 } 13534 #pragma omp target parallel for 13535 for (int i = 0; i < 10; ++i) { 13536 #pragma omp flush 13537 bar(); 13538 } 13539 #pragma omp target parallel for 13540 for (int i = 0; i < 10; ++i) { 13541 #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?}} 13542 bar(); 13543 } 13544 #pragma omp target parallel for ordered 13545 for (int i = 0; i < 10; ++i) { 13546 #pragma omp ordered // OK 13547 bar(); 13548 } 13549 #pragma omp target parallel for 13550 for (int i = 0; i < 10; ++i) { 13551 #pragma omp atomic 13552 ++a; 13553 } 13554 #pragma omp target parallel for 13555 for (int i = 0; i < 10; ++i) { 13556 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 13557 ++a; 13558 } 13559 #pragma omp target parallel for 13560 for (int i = 0; i < 10; ++i) { 13561 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 13562 ++a; 13563 } 13564 #pragma omp target parallel for 13565 for (int i = 0; i < 10; ++i) { 13566 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13567 for (int i = 0; i < 10; ++i) 13568 ; 13569 } 13570 #pragma omp target parallel for 13571 for (int i = 0; i < 10; ++i) { 13572 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13573 ++a; 13574 } 13575 #pragma omp target parallel for 13576 for (int i = 0; i < 10; ++i) { 13577 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13578 ++a; 13579 } 13580 #pragma omp target parallel for 13581 for (int i = 0; i < 10; ++i) { 13582 #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?}} 13583 ++a; 13584 } 13585 #pragma omp target parallel for 13586 for (int i = 0; i < 10; ++i) { 13587 #pragma omp taskloop 13588 for (int i = 0; i < 10; ++i) 13589 ++a; 13590 } 13591 #pragma omp target parallel for 13592 for (int i = 0; i < 10; ++i) { 13593 #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?}} 13594 for (int j = 0; j < 10; ++j) 13595 ; 13596 } 13597 #pragma omp target parallel for 13598 for (int i = 0; i < 10; ++i) { 13599 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13600 a++; 13601 } 13602 #pragma omp target parallel for 13603 for (int i = 0; i < 10; ++i) { 13604 #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?}} 13605 for (int j = 0; j < 10; ++j) 13606 ; 13607 } 13608 #pragma omp target parallel for 13609 for (int i = 0; i < 10; ++i) { 13610 #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?}} 13611 for (int j = 0; j < 10; ++j) 13612 ; 13613 } 13614 #pragma omp target parallel for 13615 for (int i = 0; i < 10; ++i) { 13616 #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?}} 13617 for (int j = 0; j < 10; ++j) 13618 ; 13619 } 13620 #pragma omp target parallel for 13621 for (int i = 0; i < 10; ++i) { 13622 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13623 for (int j = 0; j < 10; ++j) 13624 ; 13625 } 13626 #pragma omp target parallel for 13627 for (int i = 0; i < 10; ++i) { 13628 #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?}} 13629 for (int j = 0; j < 10; ++j) 13630 ; 13631 } 13632 #pragma omp target parallel for 13633 for (int i = 0; i < 10; ++i) { 13634 #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?}} 13635 for (int j = 0; j < 10; ++j) 13636 ; 13637 } 13638 #pragma omp target parallel for 13639 for (int i = 0; i < 10; ++i) { 13640 #pragma omp 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?}} 13641 for (int j = 0; j < 10; ++j) 13642 ; 13643 } 13644 #pragma omp target parallel for 13645 for (int i = 0; i < 10; ++i) { 13646 #pragma omp 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?}} 13647 for (int j = 0; j < 10; ++j) 13648 ; 13649 } 13650 #pragma omp target parallel for 13651 for (int i = 0; i < 10; ++i) { 13652 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 13653 a++; 13654 } 13655 #pragma omp target parallel for 13656 for (int i = 0; i < 10; ++i) { 13657 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 13658 for (int j = 0; j < 10; ++j) 13659 ; 13660 } 13661 #pragma omp target parallel for 13662 for (int i = 0; i < 10; ++i) { 13663 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13664 for (int j = 0; j < 10; ++j) 13665 ; 13666 } 13667 #pragma omp target parallel for 13668 for (int i = 0; i < 10; ++i) { 13669 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13670 for (int j = 0; j < 10; ++j) 13671 ; 13672 } 13673 #pragma omp target parallel for 13674 for (int i = 0; i < 10; ++i) { 13675 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13676 for (int j = 0; j < 10; ++j) 13677 ; 13678 } 13679 13680 // TEAMS DIRECTIVE 13681 #pragma omp target 13682 #pragma omp teams 13683 #pragma omp parallel 13684 bar(); 13685 #pragma omp target 13686 #pragma omp teams 13687 #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?}} 13688 for (int i = 0; i < 10; ++i) 13689 ; 13690 #pragma omp target 13691 #pragma omp teams 13692 #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?}} 13693 for (int i = 0; i < 10; ++i) 13694 ; 13695 #pragma omp target 13696 #pragma omp teams 13697 #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?}} 13698 for (int i = 0; i < 10; ++i) 13699 ; 13700 #pragma omp target 13701 #pragma omp teams 13702 #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?}} 13703 { 13704 bar(); 13705 } 13706 #pragma omp target 13707 #pragma omp teams 13708 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 13709 { 13710 bar(); 13711 } 13712 #pragma omp target 13713 #pragma omp teams 13714 #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?}} 13715 bar(); 13716 13717 #pragma omp target 13718 #pragma omp teams 13719 #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?}} 13720 { 13721 bar(); 13722 } 13723 #pragma omp target 13724 #pragma omp teams 13725 #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?}} 13726 { 13727 bar(); 13728 } 13729 #pragma omp target 13730 #pragma omp teams 13731 #pragma omp parallel for 13732 for (int i = 0; i < 10; ++i) 13733 ; 13734 #pragma omp target 13735 #pragma omp teams 13736 #pragma omp parallel for simd 13737 for (int i = 0; i < 10; ++i) 13738 ; 13739 #pragma omp target 13740 #pragma omp teams 13741 #pragma omp parallel sections 13742 { 13743 bar(); 13744 } 13745 #pragma omp target 13746 #pragma omp teams 13747 #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?}} 13748 { 13749 bar(); 13750 } 13751 #pragma omp target 13752 #pragma omp teams 13753 { 13754 #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?}} 13755 bar(); 13756 } 13757 #pragma omp target 13758 #pragma omp teams 13759 { 13760 #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?}} 13761 bar(); 13762 } 13763 #pragma omp target 13764 #pragma omp teams 13765 { 13766 #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?}} 13767 bar(); 13768 } 13769 #pragma omp target 13770 #pragma omp teams 13771 { 13772 #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?}} 13773 bar(); 13774 } 13775 #pragma omp target 13776 #pragma omp teams 13777 { 13778 #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?}} 13779 bar(); 13780 } 13781 #pragma omp target 13782 #pragma omp teams 13783 { 13784 #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?}} 13785 ++a; 13786 } 13787 #pragma omp target 13788 #pragma omp teams 13789 { 13790 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13791 ++a; 13792 } 13793 #pragma omp target 13794 #pragma omp teams 13795 { 13796 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13797 ++a; 13798 } 13799 #pragma omp target 13800 #pragma omp teams 13801 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13802 for (int i = 0; i < 10; ++i) 13803 ; 13804 #pragma omp target 13805 #pragma omp teams 13806 { 13807 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13808 } 13809 #pragma omp target 13810 #pragma omp teams 13811 { 13812 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13813 } 13814 #pragma omp target 13815 #pragma omp teams 13816 { 13817 #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?}} 13818 ++a; 13819 } 13820 #pragma omp target 13821 #pragma omp teams 13822 { 13823 #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?}} 13824 for (int i = 0; i < 10; ++i) 13825 ++a; 13826 } 13827 #pragma omp target 13828 #pragma omp teams 13829 #pragma omp distribute 13830 for (int i = 0; i < 10; ++i) 13831 ; 13832 #pragma omp target 13833 #pragma omp teams 13834 #pragma omp distribute 13835 for (int i = 0; i < 10; ++i) 13836 ; 13837 #pragma omp distribute 13838 for (int j = 0; j < 10; ++j) 13839 ; 13840 #pragma omp target 13841 #pragma omp teams 13842 { 13843 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13844 ++a; 13845 } 13846 #pragma omp target 13847 #pragma omp teams 13848 #pragma omp distribute parallel for 13849 for (int i = 0; i < 10; ++i) 13850 ; 13851 #pragma omp target 13852 #pragma omp teams 13853 { 13854 #pragma omp distribute parallel for 13855 for (int i = 0; i < 10; ++i) 13856 ; 13857 #pragma omp distribute parallel for 13858 for (int j = 0; j < 10; ++j) 13859 ; 13860 } 13861 #pragma omp target 13862 #pragma omp teams 13863 { 13864 #pragma omp distribute parallel for simd 13865 for (int i = 0; i < 10; ++i) 13866 ; 13867 #pragma omp distribute parallel for simd 13868 for (int j = 0; j < 10; ++j) 13869 ; 13870 } 13871 #pragma omp target 13872 #pragma omp teams 13873 { 13874 #pragma omp distribute simd 13875 for (int i = 0; i < 10; ++i) 13876 ; 13877 #pragma omp distribute simd 13878 for (int j = 0; j < 10; ++j) 13879 ; 13880 } 13881 #pragma omp target 13882 #pragma omp teams 13883 { 13884 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13885 for (int i = 0; i < 10; ++i) 13886 ; 13887 } 13888 #pragma omp target 13889 #pragma omp teams 13890 { 13891 #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?}} 13892 for (int i = 0; i < 10; ++i) 13893 ; 13894 } 13895 #pragma omp target 13896 #pragma omp teams 13897 { 13898 #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?}} 13899 for (int i = 0; i < 10; ++i) 13900 ; 13901 } 13902 #pragma omp target 13903 #pragma omp teams 13904 { 13905 #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?}} 13906 for (int i = 0; i < 10; ++i) 13907 ; 13908 } 13909 #pragma omp target 13910 #pragma omp teams 13911 { 13912 #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?}} 13913 for (int i = 0; i < 10; ++i) 13914 ; 13915 } 13916 #pragma omp target 13917 #pragma omp teams 13918 { 13919 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13920 a++; 13921 } 13922 #pragma omp target 13923 #pragma omp teams 13924 { 13925 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13926 for (int i = 0; i < 10; ++i) 13927 ; 13928 } 13929 #pragma omp target 13930 #pragma omp teams 13931 { 13932 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13933 for (int i = 0; i < 10; ++i) 13934 ; 13935 } 13936 #pragma omp target 13937 #pragma omp teams 13938 { 13939 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13940 for (int i = 0; i < 10; ++i) 13941 ; 13942 } 13943 #pragma omp target 13944 #pragma omp teams 13945 { 13946 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13947 for (int i = 0; i < 10; ++i) 13948 ; 13949 } 13950 13951 // TASKLOOP DIRECTIVE 13952 #pragma omp taskloop 13953 for (int i = 0; i < 10; ++i) { 13954 #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?}} 13955 for (int i = 0; i < 10; ++i) 13956 ; 13957 } 13958 #pragma omp taskloop 13959 for (int i = 0; i < 10; ++i) { 13960 #pragma omp simd 13961 for (int i = 0; i < 10; ++i) 13962 ; 13963 } 13964 #pragma omp taskloop 13965 for (int i = 0; i < 10; ++i) { 13966 #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?}} 13967 for (int i = 0; i < 10; ++i) 13968 ; 13969 } 13970 #pragma omp taskloop 13971 for (int i = 0; i < 10; ++i) { 13972 #pragma omp parallel 13973 for (int i = 0; i < 10; ++i) 13974 ; 13975 } 13976 #pragma omp taskloop 13977 for (int i = 0; i < 10; ++i) { 13978 #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?}} 13979 { 13980 bar(); 13981 } 13982 } 13983 #pragma omp taskloop 13984 for (int i = 0; i < 10; ++i) { 13985 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 13986 { 13987 bar(); 13988 } 13989 } 13990 #pragma omp taskloop 13991 for (int i = 0; i < 10; ++i) { 13992 #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?}} 13993 { 13994 bar(); 13995 } 13996 } 13997 13998 #pragma omp taskloop 13999 for (int i = 0; i < 10; ++i) { 14000 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14001 { 14002 bar(); 14003 } 14004 } 14005 #pragma omp taskloop 14006 for (int i = 0; i < 10; ++i) { 14007 #pragma omp critical 14008 { 14009 bar(); 14010 } 14011 } 14012 #pragma omp taskloop 14013 for (int i = 0; i < 10; ++i) { 14014 #pragma omp parallel 14015 { 14016 #pragma omp single // OK 14017 { 14018 bar(); 14019 } 14020 #pragma omp for // OK 14021 for (int i = 0; i < 10; ++i) 14022 ; 14023 #pragma omp sections // OK 14024 { 14025 bar(); 14026 } 14027 } 14028 } 14029 #pragma omp taskloop 14030 for (int i = 0; i < 10; ++i) { 14031 #pragma omp parallel for 14032 for (int i = 0; i < 10; ++i) 14033 ; 14034 } 14035 #pragma omp taskloop 14036 for (int i = 0; i < 10; ++i) { 14037 #pragma omp parallel for simd 14038 for (int i = 0; i < 10; ++i) 14039 ; 14040 } 14041 #pragma omp taskloop 14042 for (int i = 0; i < 10; ++i) { 14043 #pragma omp parallel sections 14044 { 14045 bar(); 14046 } 14047 } 14048 #pragma omp taskloop 14049 for (int i = 0; i < 10; ++i) { 14050 #pragma omp task 14051 { 14052 bar(); 14053 } 14054 } 14055 #pragma omp taskloop 14056 for (int i = 0; i < 10; ++i) { 14057 #pragma omp taskyield 14058 bar(); 14059 } 14060 #pragma omp taskloop 14061 for (int i = 0; i < 10; ++i) { 14062 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14063 bar(); 14064 } 14065 #pragma omp taskloop 14066 for (int i = 0; i < 10; ++i) { 14067 #pragma omp taskwait 14068 bar(); 14069 } 14070 #pragma omp taskloop 14071 for (int i = 0; i < 10; ++i) { 14072 #pragma omp flush 14073 bar(); 14074 } 14075 #pragma omp taskloop 14076 for (int i = 0; i < 10; ++i) { 14077 #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?}} 14078 bar(); 14079 } 14080 #pragma omp taskloop 14081 for (int i = 0; i < 10; ++i) { 14082 #pragma omp atomic 14083 ++a; 14084 } 14085 #pragma omp taskloop 14086 for (int i = 0; i < 10; ++i) { 14087 #pragma omp target 14088 ++a; 14089 } 14090 #pragma omp taskloop 14091 for (int i = 0; i < 10; ++i) { 14092 #pragma omp target parallel 14093 ++a; 14094 } 14095 #pragma omp taskloop 14096 for (int i = 0; i < 10; ++i) { 14097 #pragma omp target parallel for 14098 for (int i = 0; i < 10; ++i) 14099 ; 14100 } 14101 #pragma omp taskloop 14102 for (int i = 0; i < 10; ++i) { 14103 #pragma omp target enter data map(to: a) 14104 ++a; 14105 } 14106 #pragma omp taskloop 14107 for (int i = 0; i < 10; ++i) { 14108 #pragma omp target exit data map(from: a) 14109 ++a; 14110 } 14111 #pragma omp taskloop 14112 for (int i = 0; i < 10; ++i) { 14113 #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?}} 14114 ++a; 14115 } 14116 #pragma omp taskloop 14117 for (int i = 0; i < 10; ++i) { 14118 #pragma omp taskloop 14119 for (int i = 0; i < 10; ++i) 14120 ++a; 14121 } 14122 #pragma omp taskloop 14123 for (int i = 0; i < 10; ++i) { 14124 #pragma omp target update to(a) 14125 ++a; 14126 } 14127 #pragma omp taskloop 14128 for (int i = 0; i < 10; ++i) { 14129 #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?}} 14130 for (int i = 0; i < 10; ++i) 14131 ; 14132 } 14133 #pragma omp taskloop 14134 for (int i = 0; i < 10; ++i) { 14135 #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?}} 14136 for (int i = 0; i < 10; ++i) 14137 ; 14138 } 14139 #pragma omp taskloop 14140 for (int i = 0; i < 10; ++i) { 14141 #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?}} 14142 for (int i = 0; i < 10; ++i) 14143 ; 14144 } 14145 #pragma omp taskloop 14146 for (int i = 0; i < 10; ++i) { 14147 #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?}} 14148 for (int i = 0; i < 10; ++i) 14149 ; 14150 } 14151 #pragma omp taskloop 14152 for (int i = 0; i < 10; ++i) { 14153 #pragma omp target simd // OK 14154 for (int i = 0; i < 10; ++i) 14155 ; 14156 } 14157 #pragma omp taskloop 14158 for (int i = 0; i < 10; ++i) { 14159 #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?}} 14160 for (int i = 0; i < 10; ++i) 14161 ; 14162 } 14163 #pragma omp taskloop 14164 for (int i = 0; i < 10; ++i) { 14165 #pragma omp 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?}} 14166 for (int i = 0; i < 10; ++i) 14167 ; 14168 } 14169 #pragma omp taskloop 14170 for (int i = 0; i < 10; ++i) { 14171 #pragma omp 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?}} 14172 for (int i = 0; i < 10; ++i) 14173 ; 14174 } 14175 #pragma omp taskloop 14176 for (int i = 0; i < 10; ++i) { 14177 #pragma omp 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?}} 14178 for (int i = 0; i < 10; ++i) 14179 ; 14180 } 14181 #pragma omp taskloop 14182 for (int i = 0; i < 10; ++i) { 14183 #pragma omp target teams // OK 14184 a++; 14185 } 14186 #pragma omp taskloop 14187 for (int i = 0; i < 10; ++i) { 14188 #pragma omp target teams distribute // OK 14189 for (int i = 0; i < 10; ++i) 14190 ; 14191 } 14192 #pragma omp taskloop 14193 for (int i = 0; i < 10; ++i) { 14194 #pragma omp target teams distribute parallel for // OK 14195 for (int i = 0; i < 10; ++i) 14196 ; 14197 } 14198 #pragma omp taskloop 14199 for (int i = 0; i < 10; ++i) { 14200 #pragma omp target teams distribute parallel for simd // OK 14201 for (int i = 0; i < 10; ++i) 14202 ; 14203 } 14204 #pragma omp taskloop 14205 for (int i = 0; i < 10; ++i) { 14206 #pragma omp target teams distribute simd // OK 14207 for (int i = 0; i < 10; ++i) 14208 ; 14209 } 14210 14211 // DISTRIBUTE DIRECTIVE 14212 #pragma omp target 14213 #pragma omp teams 14214 #pragma omp distribute 14215 for (int i = 0; i < 10; ++i) { 14216 #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?}} 14217 for (int i = 0; i < 10; ++i) 14218 ; 14219 } 14220 #pragma omp target 14221 #pragma omp teams 14222 #pragma omp distribute 14223 for (int i = 0; i < 10; ++i) { 14224 #pragma omp for 14225 for (int i = 0; i < 10; ++i) 14226 ; 14227 } 14228 #pragma omp target 14229 #pragma omp teams 14230 #pragma omp distribute 14231 for (int i = 0; i < 10; ++i) { 14232 #pragma omp simd 14233 for (int i = 0; i < 10; ++i) 14234 ; 14235 } 14236 #pragma omp target 14237 #pragma omp teams 14238 #pragma omp distribute 14239 for (int i = 0; i < 10; ++i) { 14240 #pragma omp for simd 14241 for (int i = 0; i < 10; ++i) 14242 ; 14243 } 14244 #pragma omp target 14245 #pragma omp teams 14246 #pragma omp distribute 14247 for (int i = 0; i < 10; ++i) { 14248 #pragma omp parallel 14249 for (int i = 0; i < 10; ++i) 14250 ; 14251 } 14252 #pragma omp target 14253 #pragma omp teams 14254 #pragma omp distribute 14255 for (int i = 0; i < 10; ++i) { 14256 #pragma omp sections 14257 { 14258 bar(); 14259 } 14260 } 14261 #pragma omp target 14262 #pragma omp teams 14263 #pragma omp distribute 14264 for (int i = 0; i < 10; ++i) { 14265 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 14266 { 14267 bar(); 14268 } 14269 } 14270 #pragma omp target 14271 #pragma omp teams 14272 #pragma omp distribute 14273 for (int i = 0; i < 10; ++i) { 14274 #pragma omp single 14275 { 14276 bar(); 14277 } 14278 } 14279 #pragma omp target 14280 #pragma omp teams 14281 #pragma omp distribute 14282 for (int i = 0; i < 10; ++i) { 14283 #pragma omp master 14284 { 14285 bar(); 14286 } 14287 } 14288 #pragma omp target 14289 #pragma omp teams 14290 #pragma omp distribute 14291 for (int i = 0; i < 10; ++i) { 14292 #pragma omp critical 14293 { 14294 bar(); 14295 } 14296 } 14297 #pragma omp target 14298 #pragma omp teams 14299 #pragma omp distribute 14300 for (int i = 0; i < 10; ++i) { 14301 #pragma omp parallel 14302 { 14303 #pragma omp single 14304 { 14305 bar(); 14306 } 14307 } 14308 } 14309 #pragma omp target 14310 #pragma omp teams 14311 #pragma omp distribute 14312 for (int i = 0; i < 10; ++i) { 14313 #pragma omp parallel for 14314 for (int i = 0; i < 10; ++i) 14315 ; 14316 } 14317 #pragma omp target 14318 #pragma omp teams 14319 #pragma omp distribute 14320 for (int i = 0; i < 10; ++i) { 14321 #pragma omp parallel for simd 14322 for (int i = 0; i < 10; ++i) 14323 ; 14324 } 14325 #pragma omp target 14326 #pragma omp teams 14327 #pragma omp distribute 14328 for (int i = 0; i < 10; ++i) { 14329 #pragma omp parallel sections 14330 { 14331 bar(); 14332 } 14333 } 14334 #pragma omp target 14335 #pragma omp teams 14336 #pragma omp distribute 14337 for (int i = 0; i < 10; ++i) { 14338 #pragma omp task 14339 { 14340 bar(); 14341 } 14342 } 14343 #pragma omp target 14344 #pragma omp teams 14345 #pragma omp distribute 14346 for (int i = 0; i < 10; ++i) { 14347 #pragma omp taskyield 14348 bar(); 14349 } 14350 #pragma omp target 14351 #pragma omp teams 14352 #pragma omp distribute 14353 for (int i = 0; i < 10; ++i) { 14354 #pragma omp barrier 14355 bar(); 14356 } 14357 #pragma omp target 14358 #pragma omp teams 14359 #pragma omp distribute 14360 for (int i = 0; i < 10; ++i) { 14361 #pragma omp taskwait 14362 bar(); 14363 } 14364 #pragma omp target 14365 #pragma omp teams 14366 #pragma omp distribute 14367 for (int i = 0; i < 10; ++i) { 14368 #pragma omp flush 14369 bar(); 14370 } 14371 #pragma omp target 14372 #pragma omp teams 14373 #pragma omp distribute 14374 for (int i = 0; i < 10; ++i) { 14375 #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?}} 14376 bar(); 14377 } 14378 #pragma omp target 14379 #pragma omp teams 14380 #pragma omp distribute 14381 for (int i = 0; i < 10; ++i) { 14382 #pragma omp atomic 14383 ++a; 14384 } 14385 #pragma omp target 14386 #pragma omp teams 14387 #pragma omp distribute 14388 for (int i = 0; i < 10; ++i) { 14389 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14390 ++a; 14391 } 14392 #pragma omp target 14393 #pragma omp teams 14394 #pragma omp distribute 14395 for (int i = 0; i < 10; ++i) { 14396 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14397 ++a; 14398 } 14399 #pragma omp target 14400 #pragma omp teams 14401 #pragma omp distribute 14402 for (int i = 0; i < 10; ++i) { 14403 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14404 for (int i = 0; i < 10; ++i) 14405 ; 14406 } 14407 #pragma omp target 14408 #pragma omp teams 14409 #pragma omp distribute 14410 for (int i = 0; i < 10; ++i) { 14411 #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?}} 14412 ++a; 14413 } 14414 #pragma omp target 14415 #pragma omp teams 14416 #pragma omp distribute 14417 for (int i = 0; i < 10; ++i) { 14418 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14419 ++a; 14420 } 14421 #pragma omp target 14422 #pragma omp teams 14423 #pragma omp distribute 14424 for (int i = 0; i < 10; ++i) { 14425 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14426 ++a; 14427 } 14428 #pragma omp target 14429 #pragma omp teams 14430 #pragma omp distribute 14431 for (int i = 0; i < 10; ++i) { 14432 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14433 ++a; 14434 } 14435 #pragma omp target 14436 #pragma omp teams 14437 #pragma omp distribute 14438 for (int i = 0; i < 10; ++i) { 14439 #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?}} 14440 for (int i = 0; i < 10; ++i) 14441 ++a; 14442 } 14443 #pragma omp target 14444 #pragma omp teams 14445 #pragma omp distribute 14446 for (int i = 0; i < 10; ++i) { 14447 #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?}} 14448 for (int i = 0; i < 10; ++i) 14449 ++a; 14450 } 14451 #pragma omp target 14452 #pragma omp teams 14453 #pragma omp distribute 14454 for (int i = 0; i < 10; ++i) { 14455 #pragma omp 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?}} 14456 for (int i = 0; i < 10; ++i) 14457 ++a; 14458 } 14459 #pragma omp target 14460 #pragma omp teams 14461 #pragma omp distribute 14462 for (int i = 0; i < 10; ++i) { 14463 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14464 for (int i = 0; i < 10; ++i) 14465 ++a; 14466 } 14467 #pragma omp target 14468 #pragma omp teams 14469 #pragma omp distribute 14470 for (int i = 0; i < 10; ++i) { 14471 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14472 for (int i = 0; i < 10; ++i) 14473 ++a; 14474 } 14475 #pragma omp target 14476 #pragma omp teams 14477 #pragma omp distribute 14478 for (int i = 0; i < 10; ++i) { 14479 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14480 for (int i = 0; i < 10; ++i) 14481 ++a; 14482 } 14483 #pragma omp target 14484 #pragma omp teams 14485 #pragma omp distribute 14486 for (int i = 0; i < 10; ++i) { 14487 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14488 for (int i = 0; i < 10; ++i) 14489 ++a; 14490 } 14491 #pragma omp target 14492 #pragma omp teams 14493 #pragma omp distribute 14494 for (int i = 0; i < 10; ++i) { 14495 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14496 for (int i = 0; i < 10; ++i) 14497 ++a; 14498 } 14499 #pragma omp target 14500 #pragma omp teams 14501 #pragma omp distribute 14502 for (int i = 0; i < 10; ++i) { 14503 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14504 for (int i = 0; i < 10; ++i) 14505 ++a; 14506 } 14507 #pragma omp target 14508 #pragma omp teams 14509 #pragma omp distribute 14510 for (int i = 0; i < 10; ++i) { 14511 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14512 for (int i = 0; i < 10; ++i) 14513 ++a; 14514 } 14515 #pragma omp target 14516 #pragma omp teams 14517 #pragma omp distribute 14518 for (int i = 0; i < 10; ++i) { 14519 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14520 for (int i = 0; i < 10; ++i) 14521 ++a; 14522 } 14523 14524 // DISTRIBUTE PARALLEL FOR DIRECTIVE 14525 #pragma omp target 14526 #pragma omp teams 14527 #pragma omp distribute parallel for 14528 for (int i = 0; i < 10; ++i) { 14529 #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?}} 14530 for (int i = 0; i < 10; ++i) 14531 ; 14532 } 14533 14534 #pragma omp target 14535 #pragma omp teams 14536 #pragma omp distribute parallel for 14537 for (int i = 0; i < 10; ++i) { 14538 #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?}} 14539 for (int i = 0; i < 10; ++i) 14540 ; 14541 } 14542 #pragma omp target 14543 #pragma omp teams 14544 #pragma omp distribute parallel for 14545 for (int i = 0; i < 10; ++i) { 14546 #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?}} 14547 for (int i = 0; i < 10; ++i) 14548 ; 14549 } 14550 #pragma omp target 14551 #pragma omp teams 14552 #pragma omp distribute parallel for 14553 for (int i = 0; i < 10; ++i) { 14554 #pragma omp simd 14555 for (int i = 0; i < 10; ++i) 14556 ; 14557 } 14558 #pragma omp target 14559 #pragma omp teams 14560 #pragma omp distribute parallel for 14561 for (int i = 0; i < 10; ++i) { 14562 #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?}} 14563 for (int i = 0; i < 10; ++i) 14564 ; 14565 } 14566 #pragma omp target 14567 #pragma omp teams 14568 #pragma omp distribute parallel for 14569 for (int i = 0; i < 10; ++i) { 14570 #pragma omp parallel 14571 for (int i = 0; i < 10; ++i) 14572 ; 14573 } 14574 #pragma omp target 14575 #pragma omp teams 14576 #pragma omp distribute parallel for 14577 for (int i = 0; i < 10; ++i) { 14578 #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?}} 14579 { 14580 bar(); 14581 } 14582 } 14583 #pragma omp target 14584 #pragma omp teams 14585 #pragma omp distribute parallel for 14586 for (int i = 0; i < 10; ++i) { 14587 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 14588 { 14589 bar(); 14590 } 14591 } 14592 #pragma omp target 14593 #pragma omp teams 14594 #pragma omp distribute parallel for 14595 for (int i = 0; i < 10; ++i) { 14596 #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?}} 14597 { 14598 bar(); 14599 } 14600 } 14601 #pragma omp target 14602 #pragma omp teams 14603 #pragma omp distribute parallel for 14604 for (int i = 0; i < 10; ++i) { 14605 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14606 { 14607 bar(); 14608 } 14609 } 14610 #pragma omp target 14611 #pragma omp teams 14612 #pragma omp distribute parallel for 14613 for (int i = 0; i < 10; ++i) { 14614 #pragma omp critical 14615 { 14616 bar(); 14617 } 14618 } 14619 #pragma omp target 14620 #pragma omp teams 14621 #pragma omp distribute parallel for 14622 for (int i = 0; i < 10; ++i) { 14623 #pragma omp parallel 14624 { 14625 #pragma omp single 14626 { 14627 bar(); 14628 } 14629 } 14630 } 14631 #pragma omp target 14632 #pragma omp teams 14633 #pragma omp distribute parallel for 14634 for (int i = 0; i < 10; ++i) { 14635 #pragma omp parallel for 14636 for (int i = 0; i < 10; ++i) 14637 ; 14638 } 14639 #pragma omp target 14640 #pragma omp teams 14641 #pragma omp distribute parallel for 14642 for (int i = 0; i < 10; ++i) { 14643 #pragma omp parallel for simd 14644 for (int i = 0; i < 10; ++i) 14645 ; 14646 } 14647 #pragma omp target 14648 #pragma omp teams 14649 #pragma omp distribute parallel for 14650 for (int i = 0; i < 10; ++i) { 14651 #pragma omp parallel sections 14652 { 14653 bar(); 14654 } 14655 } 14656 #pragma omp target 14657 #pragma omp teams 14658 #pragma omp distribute parallel for 14659 for (int i = 0; i < 10; ++i) { 14660 #pragma omp task 14661 { 14662 bar(); 14663 } 14664 } 14665 #pragma omp target 14666 #pragma omp teams 14667 #pragma omp distribute parallel for 14668 for (int i = 0; i < 10; ++i) { 14669 #pragma omp taskyield 14670 bar(); 14671 } 14672 #pragma omp target 14673 #pragma omp teams 14674 #pragma omp distribute parallel for 14675 for (int i = 0; i < 10; ++i) { 14676 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14677 bar(); 14678 } 14679 #pragma omp target 14680 #pragma omp teams 14681 #pragma omp distribute parallel for 14682 for (int i = 0; i < 10; ++i) { 14683 #pragma omp taskwait 14684 bar(); 14685 } 14686 #pragma omp target 14687 #pragma omp teams 14688 #pragma omp distribute parallel for 14689 for (int i = 0; i < 10; ++i) { 14690 #pragma omp flush 14691 bar(); 14692 } 14693 #pragma omp target 14694 #pragma omp teams 14695 #pragma omp distribute parallel for 14696 for (int i = 0; i < 10; ++i) { 14697 #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?}} 14698 bar(); 14699 } 14700 #pragma omp target 14701 #pragma omp teams 14702 #pragma omp distribute parallel for 14703 for (int i = 0; i < 10; ++i) { 14704 #pragma omp atomic 14705 ++a; 14706 } 14707 #pragma omp target 14708 #pragma omp teams 14709 #pragma omp distribute parallel for 14710 for (int i = 0; i < 10; ++i) { 14711 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14712 ++a; 14713 } 14714 #pragma omp target 14715 #pragma omp teams 14716 #pragma omp distribute parallel for 14717 for (int i = 0; i < 10; ++i) { 14718 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14719 ++a; 14720 } 14721 #pragma omp target 14722 #pragma omp teams 14723 #pragma omp distribute parallel for 14724 for (int i = 0; i < 10; ++i) { 14725 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14726 for (int i = 0; i < 10; ++i) 14727 ; 14728 } 14729 #pragma omp target 14730 #pragma omp teams 14731 #pragma omp distribute parallel for 14732 for (int i = 0; i < 10; ++i) { 14733 #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?}} 14734 ++a; 14735 } 14736 #pragma omp target 14737 #pragma omp teams 14738 #pragma omp distribute parallel for 14739 for (int i = 0; i < 10; ++i) { 14740 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14741 ++a; 14742 } 14743 #pragma omp target 14744 #pragma omp teams 14745 #pragma omp distribute parallel for 14746 for (int i = 0; i < 10; ++i) { 14747 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14748 ++a; 14749 } 14750 #pragma omp target 14751 #pragma omp teams 14752 #pragma omp distribute parallel for 14753 for (int i = 0; i < 10; ++i) { 14754 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14755 ++a; 14756 } 14757 #pragma omp target 14758 #pragma omp teams 14759 #pragma omp distribute parallel for 14760 for (int i = 0; i < 10; ++i) { 14761 #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?}} 14762 for (int i = 0; i < 10; ++i) 14763 ++a; 14764 } 14765 #pragma omp target 14766 #pragma omp teams 14767 #pragma omp distribute parallel for 14768 for (int i = 0; i < 10; ++i) { 14769 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14770 for (int i = 0; i < 10; ++i) 14771 ++a; 14772 } 14773 #pragma omp target 14774 #pragma omp teams 14775 #pragma omp distribute parallel for 14776 for (int i = 0; i < 10; ++i) { 14777 #pragma omp 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?}} 14778 for (int i = 0; i < 10; ++i) 14779 ++a; 14780 } 14781 #pragma omp target 14782 #pragma omp teams 14783 #pragma omp distribute parallel for 14784 for (int i = 0; i < 10; ++i) { 14785 #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?}} 14786 for (int i = 0; i < 10; ++i) 14787 ++a; 14788 } 14789 #pragma omp target 14790 #pragma omp teams 14791 #pragma omp distribute parallel for 14792 for (int i = 0; i < 10; ++i) { 14793 #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?}} 14794 for (int i = 0; i < 10; ++i) 14795 ++a; 14796 } 14797 #pragma omp target 14798 #pragma omp teams 14799 #pragma omp distribute parallel for 14800 for (int i = 0; i < 10; ++i) { 14801 #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?}} 14802 for (int i = 0; i < 10; ++i) 14803 ++a; 14804 } 14805 #pragma omp target 14806 #pragma omp teams 14807 #pragma omp distribute parallel for 14808 for (int i = 0; i < 10; ++i) { 14809 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14810 ++a; 14811 } 14812 #pragma omp target 14813 #pragma omp teams 14814 #pragma omp distribute parallel for 14815 for (int i = 0; i < 10; ++i) { 14816 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14817 for (int i = 0; i < 10; ++i) 14818 ++a; 14819 } 14820 #pragma omp target 14821 #pragma omp teams 14822 #pragma omp distribute parallel for 14823 for (int i = 0; i < 10; ++i) { 14824 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14825 for (int i = 0; i < 10; ++i) 14826 ++a; 14827 } 14828 #pragma omp target 14829 #pragma omp teams 14830 #pragma omp distribute parallel for 14831 for (int i = 0; i < 10; ++i) { 14832 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14833 for (int i = 0; i < 10; ++i) 14834 ++a; 14835 } 14836 #pragma omp target 14837 #pragma omp teams 14838 #pragma omp distribute parallel for 14839 for (int i = 0; i < 10; ++i) { 14840 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14841 for (int i = 0; i < 10; ++i) 14842 ++a; 14843 } 14844 14845 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 14846 #pragma omp target 14847 #pragma omp teams 14848 #pragma omp distribute parallel for simd 14849 for (int i = 0; i < 10; ++i) { 14850 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14851 for (int i = 0; i < 10; ++i) 14852 ; 14853 } 14854 #pragma omp target 14855 #pragma omp teams 14856 #pragma omp distribute parallel for simd 14857 for (int i = 0; i < 10; ++i) { 14858 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14859 for (int i = 0; i < 10; ++i) 14860 ; 14861 } 14862 #pragma omp target 14863 #pragma omp teams 14864 #pragma omp distribute parallel for simd 14865 for (int i = 0; i < 10; ++i) { 14866 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14867 for (int i = 0; i < 10; ++i) 14868 ; 14869 } 14870 #pragma omp target 14871 #pragma omp teams 14872 #pragma omp distribute parallel for simd 14873 for (int i = 0; i < 10; ++i) { 14874 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 14875 for (int i = 0; i < 10; ++i) 14876 ; 14877 } 14878 #pragma omp target 14879 #pragma omp teams 14880 #pragma omp distribute parallel for simd 14881 for (int i = 0; i < 10; ++i) { 14882 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14883 for (int i = 0; i < 10; ++i) 14884 ; 14885 } 14886 #pragma omp target 14887 #pragma omp teams 14888 #pragma omp distribute parallel for simd 14889 for (int i = 0; i < 10; ++i) { 14890 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14891 for (int i = 0; i < 10; ++i) 14892 ; 14893 } 14894 #pragma omp target 14895 #pragma omp teams 14896 #pragma omp distribute parallel for simd 14897 for (int i = 0; i < 10; ++i) { 14898 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14899 { 14900 bar(); 14901 } 14902 } 14903 #pragma omp target 14904 #pragma omp teams 14905 #pragma omp distribute parallel for simd 14906 for (int i = 0; i < 10; ++i) { 14907 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14908 { 14909 bar(); 14910 } 14911 } 14912 #pragma omp target 14913 #pragma omp teams 14914 #pragma omp distribute parallel for simd 14915 for (int i = 0; i < 10; ++i) { 14916 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14917 { 14918 bar(); 14919 } 14920 } 14921 #pragma omp target 14922 #pragma omp teams 14923 #pragma omp distribute parallel for simd 14924 for (int i = 0; i < 10; ++i) { 14925 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14926 { 14927 bar(); 14928 } 14929 } 14930 #pragma omp target 14931 #pragma omp teams 14932 #pragma omp distribute parallel for simd 14933 for (int i = 0; i < 10; ++i) { 14934 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14935 { 14936 bar(); 14937 } 14938 } 14939 #pragma omp target 14940 #pragma omp teams 14941 #pragma omp distribute parallel for simd 14942 for (int i = 0; i < 10; ++i) { 14943 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14944 { 14945 #pragma omp single 14946 { 14947 bar(); 14948 } 14949 } 14950 } 14951 #pragma omp target 14952 #pragma omp teams 14953 #pragma omp distribute parallel for simd 14954 for (int i = 0; i < 10; ++i) { 14955 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14956 for (int i = 0; i < 10; ++i) 14957 ; 14958 } 14959 #pragma omp target 14960 #pragma omp teams 14961 #pragma omp distribute parallel for simd 14962 for (int i = 0; i < 10; ++i) { 14963 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14964 for (int i = 0; i < 10; ++i) 14965 ; 14966 } 14967 #pragma omp target 14968 #pragma omp teams 14969 #pragma omp distribute parallel for simd 14970 for (int i = 0; i < 10; ++i) { 14971 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14972 { 14973 bar(); 14974 } 14975 } 14976 #pragma omp target 14977 #pragma omp teams 14978 #pragma omp distribute parallel for simd 14979 for (int i = 0; i < 10; ++i) { 14980 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14981 { 14982 bar(); 14983 } 14984 } 14985 #pragma omp target 14986 #pragma omp teams 14987 #pragma omp distribute parallel for simd 14988 for (int i = 0; i < 10; ++i) { 14989 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14990 bar(); 14991 } 14992 #pragma omp target 14993 #pragma omp teams 14994 #pragma omp distribute parallel for simd 14995 for (int i = 0; i < 10; ++i) { 14996 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14997 bar(); 14998 } 14999 #pragma omp target 15000 #pragma omp teams 15001 #pragma omp distribute parallel for simd 15002 for (int i = 0; i < 10; ++i) { 15003 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15004 bar(); 15005 } 15006 #pragma omp target 15007 #pragma omp teams 15008 #pragma omp distribute parallel for simd 15009 for (int i = 0; i < 10; ++i) { 15010 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15011 bar(); 15012 } 15013 #pragma omp target 15014 #pragma omp teams 15015 #pragma omp distribute parallel for simd 15016 for (int i = 0; i < 10; ++i) { 15017 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15018 bar(); 15019 } 15020 #pragma omp target 15021 #pragma omp teams 15022 #pragma omp distribute parallel for simd 15023 for (int i = 0; i < 10; ++i) { 15024 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15025 ++a; 15026 } 15027 #pragma omp target 15028 #pragma omp teams 15029 #pragma omp distribute parallel for simd 15030 for (int i = 0; i < 10; ++i) { 15031 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15032 ++a; 15033 } 15034 #pragma omp target 15035 #pragma omp teams 15036 #pragma omp distribute parallel for simd 15037 for (int i = 0; i < 10; ++i) { 15038 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15039 ++a; 15040 } 15041 #pragma omp target 15042 #pragma omp teams 15043 #pragma omp distribute parallel for simd 15044 for (int i = 0; i < 10; ++i) { 15045 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15046 ++a; 15047 } 15048 #pragma omp target 15049 #pragma omp teams 15050 #pragma omp distribute parallel for simd 15051 for (int i = 0; i < 10; ++i) { 15052 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15053 ++a; 15054 } 15055 #pragma omp target 15056 #pragma omp teams 15057 #pragma omp distribute parallel for simd 15058 for (int i = 0; i < 10; ++i) { 15059 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15060 ++a; 15061 } 15062 #pragma omp target 15063 #pragma omp teams 15064 #pragma omp distribute parallel for simd 15065 for (int i = 0; i < 10; ++i) { 15066 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15067 ++a; 15068 } 15069 #pragma omp target 15070 #pragma omp teams 15071 #pragma omp distribute parallel for simd 15072 for (int i = 0; i < 10; ++i) { 15073 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15074 for (int i = 0; i < 10; ++i) 15075 ; 15076 } 15077 #pragma omp target 15078 #pragma omp teams 15079 #pragma omp distribute parallel for simd 15080 for (int i = 0; i < 10; ++i) { 15081 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15082 for (int i = 0; i < 10; ++i) 15083 ; 15084 } 15085 #pragma omp target 15086 #pragma omp teams 15087 #pragma omp distribute parallel for simd 15088 for (int i = 0; i < 10; ++i) { 15089 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15090 for (int i = 0; i < 10; ++i) 15091 ; 15092 } 15093 #pragma omp target 15094 #pragma omp teams 15095 #pragma omp distribute parallel for simd 15096 for (int i = 0; i < 10; ++i) { 15097 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15098 for (int i = 0; i < 10; ++i) 15099 ; 15100 } 15101 #pragma omp target 15102 #pragma omp teams 15103 #pragma omp distribute parallel for simd 15104 for (int i = 0; i < 10; ++i) { 15105 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15106 for (int i = 0; i < 10; ++i) 15107 ; 15108 } 15109 #pragma omp target 15110 #pragma omp teams 15111 #pragma omp distribute parallel for simd 15112 for (int i = 0; i < 10; ++i) { 15113 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15114 for (int i = 0; i < 10; ++i) 15115 ; 15116 } 15117 #pragma omp target 15118 #pragma omp teams 15119 #pragma omp distribute parallel for simd 15120 for (int i = 0; i < 10; ++i) { 15121 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15122 a++; 15123 } 15124 #pragma omp target 15125 #pragma omp teams 15126 #pragma omp distribute parallel for simd 15127 for (int i = 0; i < 10; ++i) { 15128 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15129 for (int i = 0; i < 10; ++i) 15130 ; 15131 } 15132 #pragma omp target 15133 #pragma omp teams 15134 #pragma omp distribute parallel for simd 15135 for (int i = 0; i < 10; ++i) { 15136 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15137 for (int i = 0; i < 10; ++i) 15138 ; 15139 } 15140 #pragma omp target 15141 #pragma omp teams 15142 #pragma omp distribute parallel for simd 15143 for (int i = 0; i < 10; ++i) { 15144 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15145 for (int i = 0; i < 10; ++i) 15146 ; 15147 } 15148 #pragma omp target 15149 #pragma omp teams 15150 #pragma omp distribute parallel for simd 15151 for (int i = 0; i < 10; ++i) { 15152 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15153 for (int i = 0; i < 10; ++i) 15154 ; 15155 } 15156 15157 // DISTRIBUTE SIMD DIRECTIVE 15158 #pragma omp target 15159 #pragma omp teams 15160 #pragma omp distribute simd 15161 for (int i = 0; i < 10; ++i) { 15162 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15163 for (int i = 0; i < 10; ++i) 15164 ; 15165 } 15166 #pragma omp target 15167 #pragma omp teams 15168 #pragma omp distribute simd 15169 for (int i = 0; i < 10; ++i) { 15170 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15171 for (int i = 0; i < 10; ++i) 15172 ; 15173 } 15174 #pragma omp target 15175 #pragma omp teams 15176 #pragma omp distribute simd 15177 for (int i = 0; i < 10; ++i) { 15178 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15179 for (int i = 0; i < 10; ++i) 15180 ; 15181 } 15182 #pragma omp target 15183 #pragma omp teams 15184 #pragma omp distribute simd 15185 for (int i = 0; i < 10; ++i) { 15186 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15187 for (int i = 0; i < 10; ++i) 15188 ; 15189 } 15190 #pragma omp target 15191 #pragma omp teams 15192 #pragma omp distribute simd 15193 for (int i = 0; i < 10; ++i) { 15194 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15195 for (int i = 0; i < 10; ++i) 15196 ; 15197 } 15198 #pragma omp target 15199 #pragma omp teams 15200 #pragma omp distribute simd 15201 for (int i = 0; i < 10; ++i) { 15202 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15203 for (int i = 0; i < 10; ++i) 15204 ; 15205 } 15206 #pragma omp target 15207 #pragma omp teams 15208 #pragma omp distribute simd 15209 for (int i = 0; i < 10; ++i) { 15210 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15211 { 15212 bar(); 15213 } 15214 } 15215 #pragma omp target 15216 #pragma omp teams 15217 #pragma omp distribute simd 15218 for (int i = 0; i < 10; ++i) { 15219 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15220 { 15221 bar(); 15222 } 15223 } 15224 #pragma omp target 15225 #pragma omp teams 15226 #pragma omp distribute simd 15227 for (int i = 0; i < 10; ++i) { 15228 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15229 { 15230 bar(); 15231 } 15232 } 15233 #pragma omp target 15234 #pragma omp teams 15235 #pragma omp distribute simd 15236 for (int i = 0; i < 10; ++i) { 15237 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15238 { 15239 bar(); 15240 } 15241 } 15242 #pragma omp target 15243 #pragma omp teams 15244 #pragma omp distribute simd 15245 for (int i = 0; i < 10; ++i) { 15246 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15247 { 15248 bar(); 15249 } 15250 } 15251 #pragma omp target 15252 #pragma omp teams 15253 #pragma omp distribute simd 15254 for (int i = 0; i < 10; ++i) { 15255 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15256 { 15257 #pragma omp single 15258 { 15259 bar(); 15260 } 15261 } 15262 } 15263 #pragma omp target 15264 #pragma omp teams 15265 #pragma omp distribute simd 15266 for (int i = 0; i < 10; ++i) { 15267 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15268 for (int i = 0; i < 10; ++i) 15269 ; 15270 } 15271 #pragma omp target 15272 #pragma omp teams 15273 #pragma omp distribute simd 15274 for (int i = 0; i < 10; ++i) { 15275 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15276 for (int i = 0; i < 10; ++i) 15277 ; 15278 } 15279 #pragma omp target 15280 #pragma omp teams 15281 #pragma omp distribute simd 15282 for (int i = 0; i < 10; ++i) { 15283 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15284 { 15285 bar(); 15286 } 15287 } 15288 #pragma omp target 15289 #pragma omp teams 15290 #pragma omp distribute simd 15291 for (int i = 0; i < 10; ++i) { 15292 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15293 { 15294 bar(); 15295 } 15296 } 15297 #pragma omp target 15298 #pragma omp teams 15299 #pragma omp distribute simd 15300 for (int i = 0; i < 10; ++i) { 15301 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15302 bar(); 15303 } 15304 #pragma omp target 15305 #pragma omp teams 15306 #pragma omp distribute simd 15307 for (int i = 0; i < 10; ++i) { 15308 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15309 bar(); 15310 } 15311 #pragma omp target 15312 #pragma omp teams 15313 #pragma omp distribute simd 15314 for (int i = 0; i < 10; ++i) { 15315 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15316 bar(); 15317 } 15318 #pragma omp target 15319 #pragma omp teams 15320 #pragma omp distribute simd 15321 for (int i = 0; i < 10; ++i) { 15322 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15323 bar(); 15324 } 15325 #pragma omp target 15326 #pragma omp teams 15327 #pragma omp distribute simd 15328 for (int i = 0; i < 10; ++i) { 15329 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15330 bar(); 15331 } 15332 #pragma omp target 15333 #pragma omp teams 15334 #pragma omp distribute simd 15335 for (int i = 0; i < 10; ++i) { 15336 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15337 ++a; 15338 } 15339 #pragma omp target 15340 #pragma omp teams 15341 #pragma omp distribute simd 15342 for (int i = 0; i < 10; ++i) { 15343 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15344 ++a; 15345 } 15346 #pragma omp target 15347 #pragma omp teams 15348 #pragma omp distribute simd 15349 for (int i = 0; i < 10; ++i) { 15350 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15351 ++a; 15352 } 15353 #pragma omp target 15354 #pragma omp teams 15355 #pragma omp distribute simd 15356 for (int i = 0; i < 10; ++i) { 15357 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15358 ++a; 15359 } 15360 #pragma omp target 15361 #pragma omp teams 15362 #pragma omp distribute simd 15363 for (int i = 0; i < 10; ++i) { 15364 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15365 ++a; 15366 } 15367 #pragma omp target 15368 #pragma omp teams 15369 #pragma omp distribute simd 15370 for (int i = 0; i < 10; ++i) { 15371 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15372 ++a; 15373 } 15374 #pragma omp target 15375 #pragma omp teams 15376 #pragma omp distribute simd 15377 for (int i = 0; i < 10; ++i) { 15378 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15379 ++a; 15380 } 15381 #pragma omp target 15382 #pragma omp teams 15383 #pragma omp distribute simd 15384 for (int i = 0; i < 10; ++i) { 15385 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15386 for (int i = 0; i < 10; ++i) 15387 ; 15388 } 15389 #pragma omp target 15390 #pragma omp teams 15391 #pragma omp distribute simd 15392 for (int i = 0; i < 10; ++i) { 15393 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15394 for (int i = 0; i < 10; ++i) 15395 ; 15396 } 15397 #pragma omp target 15398 #pragma omp teams 15399 #pragma omp distribute simd 15400 for (int i = 0; i < 10; ++i) { 15401 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15402 for (int i = 0; i < 10; ++i) 15403 ; 15404 } 15405 #pragma omp target 15406 #pragma omp teams 15407 #pragma omp distribute simd 15408 for (int i = 0; i < 10; ++i) { 15409 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15410 for (int i = 0; i < 10; ++i) 15411 ; 15412 } 15413 #pragma omp target 15414 #pragma omp teams 15415 #pragma omp distribute simd 15416 for (int i = 0; i < 10; ++i) { 15417 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15418 for (int i = 0; i < 10; ++i) 15419 ; 15420 } 15421 #pragma omp target 15422 #pragma omp teams 15423 #pragma omp distribute simd 15424 for (int i = 0; i < 10; ++i) { 15425 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15426 for (int i = 0; i < 10; ++i) 15427 ; 15428 } 15429 #pragma omp target 15430 #pragma omp teams 15431 #pragma omp distribute simd 15432 for (int i = 0; i < 10; ++i) { 15433 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15434 a++; 15435 } 15436 #pragma omp target 15437 #pragma omp teams 15438 #pragma omp distribute simd 15439 for (int i = 0; i < 10; ++i) { 15440 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15441 for (int i = 0; i < 10; ++i) 15442 ; 15443 } 15444 #pragma omp target 15445 #pragma omp teams 15446 #pragma omp distribute simd 15447 for (int i = 0; i < 10; ++i) { 15448 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15449 for (int i = 0; i < 10; ++i) 15450 ; 15451 } 15452 #pragma omp target 15453 #pragma omp teams 15454 #pragma omp distribute simd 15455 for (int i = 0; i < 10; ++i) { 15456 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15457 for (int i = 0; i < 10; ++i) 15458 ; 15459 } 15460 #pragma omp target 15461 #pragma omp teams 15462 #pragma omp distribute simd 15463 for (int i = 0; i < 10; ++i) { 15464 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15465 for (int i = 0; i < 10; ++i) 15466 ; 15467 } 15468 15469 // TARGET SIMD DIRECTIVE 15470 #pragma omp target simd 15471 for (int i = 0; i < 10; ++i) { 15472 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15473 for (int i = 0; i < 10; ++i) 15474 ; 15475 } 15476 #pragma omp target simd 15477 for (int i = 0; i < 10; ++i) { 15478 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15479 for (int i = 0; i < 10; ++i) 15480 ; 15481 } 15482 #pragma omp target simd 15483 for (int i = 0; i < 10; ++i) { 15484 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15485 for (int i = 0; i < 10; ++i) 15486 ; 15487 } 15488 #pragma omp target simd 15489 for (int i = 0; i < 10; ++i) { 15490 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15491 for (int i = 0; i < 10; ++i) 15492 ; 15493 } 15494 #pragma omp target simd 15495 for (int i = 0; i < 10; ++i) { 15496 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15497 for (int i = 0; i < 10; ++i) 15498 ; 15499 } 15500 #pragma omp target simd 15501 for (int i = 0; i < 10; ++i) { 15502 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15503 for (int i = 0; i < 10; ++i) 15504 ; 15505 } 15506 #pragma omp target simd 15507 for (int i = 0; i < 10; ++i) { 15508 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15509 { 15510 bar(); 15511 } 15512 } 15513 #pragma omp target simd 15514 for (int i = 0; i < 10; ++i) { 15515 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15516 { 15517 bar(); 15518 } 15519 } 15520 #pragma omp target simd 15521 for (int i = 0; i < 10; ++i) { 15522 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15523 { 15524 bar(); 15525 } 15526 } 15527 #pragma omp target simd 15528 for (int i = 0; i < 10; ++i) { 15529 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15530 { 15531 bar(); 15532 } 15533 } 15534 #pragma omp target simd 15535 for (int i = 0; i < 10; ++i) { 15536 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15537 { 15538 bar(); 15539 } 15540 } 15541 #pragma omp target 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 { 15545 #pragma omp single 15546 { 15547 bar(); 15548 } 15549 } 15550 } 15551 #pragma omp target simd 15552 for (int i = 0; i < 10; ++i) { 15553 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15554 for (int i = 0; i < 10; ++i) 15555 ; 15556 } 15557 #pragma omp target simd 15558 for (int i = 0; i < 10; ++i) { 15559 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15560 for (int i = 0; i < 10; ++i) 15561 ; 15562 } 15563 #pragma omp target simd 15564 for (int i = 0; i < 10; ++i) { 15565 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15566 { 15567 bar(); 15568 } 15569 } 15570 #pragma omp target simd 15571 for (int i = 0; i < 10; ++i) { 15572 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15573 { 15574 bar(); 15575 } 15576 } 15577 #pragma omp target simd 15578 for (int i = 0; i < 10; ++i) { 15579 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15580 bar(); 15581 } 15582 #pragma omp target simd 15583 for (int i = 0; i < 10; ++i) { 15584 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15585 bar(); 15586 } 15587 #pragma omp target simd 15588 for (int i = 0; i < 10; ++i) { 15589 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15590 bar(); 15591 } 15592 #pragma omp target simd 15593 for (int i = 0; i < 10; ++i) { 15594 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15595 bar(); 15596 } 15597 #pragma omp target simd 15598 for (int i = 0; i < 10; ++i) { 15599 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15600 bar(); 15601 } 15602 #pragma omp target simd 15603 for (int i = 0; i < 10; ++i) { 15604 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15605 ++a; 15606 } 15607 #pragma omp target simd 15608 for (int i = 0; i < 10; ++i) { 15609 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15610 ++a; 15611 } 15612 #pragma omp target simd 15613 for (int i = 0; i < 10; ++i) { 15614 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15615 ++a; 15616 } 15617 #pragma omp target simd 15618 for (int i = 0; i < 10; ++i) { 15619 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15620 ++a; 15621 } 15622 #pragma omp target simd 15623 for (int i = 0; i < 10; ++i) { 15624 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15625 ++a; 15626 } 15627 #pragma omp target simd 15628 for (int i = 0; i < 10; ++i) { 15629 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15630 ++a; 15631 } 15632 #pragma omp target simd 15633 for (int i = 0; i < 10; ++i) { 15634 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15635 ++a; 15636 } 15637 #pragma omp target simd 15638 for (int i = 0; i < 10; ++i) { 15639 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15640 for (int i = 0; i < 10; ++i) 15641 ; 15642 } 15643 #pragma omp target simd 15644 for (int i = 0; i < 10; ++i) { 15645 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15646 for (int i = 0; i < 10; ++i) 15647 ; 15648 } 15649 #pragma omp target simd 15650 for (int i = 0; i < 10; ++i) { 15651 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15652 for (int i = 0; i < 10; ++i) 15653 ; 15654 } 15655 #pragma omp target simd 15656 for (int i = 0; i < 10; ++i) { 15657 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15658 for (int i = 0; i < 10; ++i) 15659 ; 15660 } 15661 #pragma omp target simd 15662 for (int i = 0; i < 10; ++i) { 15663 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15664 for (int i = 0; i < 10; ++i) 15665 ; 15666 } 15667 #pragma omp target simd 15668 for (int i = 0; i < 10; ++i) { 15669 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15670 for (int i = 0; i < 10; ++i) 15671 ; 15672 } 15673 #pragma omp target simd 15674 for (int i = 0; i < 10; ++i) { 15675 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15676 a++; 15677 } 15678 #pragma omp target simd 15679 for (int i = 0; i < 10; ++i) { 15680 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15681 for (int i = 0; i < 10; ++i) 15682 ; 15683 } 15684 #pragma omp target simd 15685 for (int i = 0; i < 10; ++i) { 15686 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15687 for (int i = 0; i < 10; ++i) 15688 ; 15689 } 15690 #pragma omp target simd 15691 for (int i = 0; i < 10; ++i) { 15692 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15693 for (int i = 0; i < 10; ++i) 15694 ; 15695 } 15696 #pragma omp target simd 15697 for (int i = 0; i < 10; ++i) { 15698 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15699 for (int i = 0; i < 10; ++i) 15700 ; 15701 } 15702 15703 // TEAMS DISTRIBUTE DIRECTIVE 15704 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 15705 for (int i = 0; i < 10; ++i) 15706 ; 15707 #pragma omp target 15708 #pragma omp teams distribute 15709 for (int i = 0; i < 10; ++i) { 15710 #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?}} 15711 for (int i = 0; i < 10; ++i) 15712 ; 15713 } 15714 #pragma omp target 15715 #pragma omp teams distribute 15716 for (int i = 0; i < 10; ++i) { 15717 #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?}} 15718 for (int i = 0; i < 10; ++i) 15719 ; 15720 } 15721 #pragma omp target 15722 #pragma omp teams distribute 15723 for (int i = 0; i < 10; ++i) { 15724 #pragma omp for // OK 15725 for (int i = 0; i < 10; ++i) 15726 ; 15727 } 15728 #pragma omp target 15729 #pragma omp teams distribute 15730 for (int i = 0; i < 10; ++i) { 15731 #pragma omp simd // OK 15732 for (int i = 0; i < 10; ++i) 15733 ; 15734 } 15735 #pragma omp target 15736 #pragma omp teams distribute 15737 for (int i = 0; i < 10; ++i) { 15738 #pragma omp for simd // OK 15739 for (int i = 0; i < 10; ++i) 15740 ; 15741 } 15742 #pragma omp target 15743 #pragma omp teams distribute 15744 for (int i = 0; i < 10; ++i) { 15745 #pragma omp parallel // OK 15746 for (int i = 0; i < 10; ++i) 15747 ; 15748 } 15749 #pragma omp target 15750 #pragma omp teams distribute 15751 for (int i = 0; i < 10; ++i) { 15752 #pragma omp sections // OK 15753 { 15754 bar(); 15755 } 15756 } 15757 #pragma omp target 15758 #pragma omp teams distribute 15759 for (int i = 0; i < 10; ++i) { 15760 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 15761 { 15762 bar(); 15763 } 15764 } 15765 #pragma omp target 15766 #pragma omp teams distribute 15767 for (int i = 0; i < 10; ++i) { 15768 #pragma omp single // OK 15769 { 15770 bar(); 15771 } 15772 } 15773 #pragma omp target 15774 #pragma omp teams distribute 15775 for (int i = 0; i < 10; ++i) { 15776 #pragma omp master // OK 15777 { 15778 bar(); 15779 } 15780 } 15781 #pragma omp target 15782 #pragma omp teams distribute 15783 for (int i = 0; i < 10; ++i) { 15784 #pragma omp critical // OK 15785 { 15786 bar(); 15787 } 15788 } 15789 #pragma omp target 15790 #pragma omp teams distribute 15791 for (int i = 0; i < 10; ++i) { 15792 #pragma omp parallel // OK 15793 { 15794 #pragma omp single 15795 { 15796 bar(); 15797 } 15798 } 15799 } 15800 #pragma omp target 15801 #pragma omp teams distribute 15802 for (int i = 0; i < 10; ++i) { 15803 #pragma omp parallel for // OK 15804 for (int i = 0; i < 10; ++i) 15805 ; 15806 } 15807 #pragma omp target 15808 #pragma omp teams distribute 15809 for (int i = 0; i < 10; ++i) { 15810 #pragma omp parallel for simd // OK 15811 for (int i = 0; i < 10; ++i) 15812 ; 15813 } 15814 #pragma omp target 15815 #pragma omp teams distribute 15816 for (int i = 0; i < 10; ++i) { 15817 #pragma omp parallel sections // OK 15818 { 15819 bar(); 15820 } 15821 } 15822 #pragma omp target 15823 #pragma omp teams distribute 15824 for (int i = 0; i < 10; ++i) { 15825 #pragma omp task // OK 15826 { 15827 bar(); 15828 } 15829 } 15830 #pragma omp target 15831 #pragma omp teams distribute 15832 for (int i = 0; i < 10; ++i) { 15833 #pragma omp taskyield // OK 15834 bar(); 15835 } 15836 #pragma omp target 15837 #pragma omp teams distribute 15838 for (int i = 0; i < 10; ++i) { 15839 #pragma omp barrier // OK 15840 bar(); 15841 } 15842 #pragma omp target 15843 #pragma omp teams distribute 15844 for (int i = 0; i < 10; ++i) { 15845 #pragma omp taskwait // OK 15846 bar(); 15847 } 15848 #pragma omp target 15849 #pragma omp teams distribute 15850 for (int i = 0; i < 10; ++i) { 15851 #pragma omp flush // OK 15852 bar(); 15853 } 15854 #pragma omp target 15855 #pragma omp teams distribute 15856 for (int i = 0; i < 10; ++i) { 15857 #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?}} 15858 bar(); 15859 } 15860 #pragma omp target 15861 #pragma omp teams distribute 15862 for (int i = 0; i < 10; ++i) { 15863 #pragma omp atomic // OK 15864 ++a; 15865 } 15866 #pragma omp target 15867 #pragma omp teams distribute 15868 for (int i = 0; i < 10; ++i) { 15869 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15870 ++a; 15871 } 15872 #pragma omp target 15873 #pragma omp teams distribute 15874 for (int i = 0; i < 10; ++i) { 15875 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15876 ++a; 15877 } 15878 #pragma omp target 15879 #pragma omp teams distribute 15880 for (int i = 0; i < 10; ++i) { 15881 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15882 for (int i = 0; i < 10; ++i) 15883 ; 15884 } 15885 #pragma omp target 15886 #pragma omp teams distribute 15887 for (int i = 0; i < 10; ++i) { 15888 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15889 ++a; 15890 } 15891 #pragma omp target 15892 #pragma omp teams distribute 15893 for (int i = 0; i < 10; ++i) { 15894 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15895 ++a; 15896 } 15897 #pragma omp target 15898 #pragma omp teams distribute 15899 for (int i = 0; i < 10; ++i) { 15900 #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?}} 15901 ++a; 15902 } 15903 #pragma omp target 15904 #pragma omp teams distribute 15905 for (int i = 0; i < 10; ++i) { 15906 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15907 ++a; 15908 } 15909 #pragma omp target 15910 #pragma omp teams distribute 15911 for (int i = 0; i < 10; ++i) { 15912 #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?}} 15913 for (int i = 0; i < 10; ++i) 15914 ++a; 15915 } 15916 #pragma omp target 15917 #pragma omp teams distribute 15918 for (int i = 0; i < 10; ++i) { 15919 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15920 for (int i = 0; i < 10; ++i) 15921 ++a; 15922 } 15923 #pragma omp target 15924 #pragma omp teams distribute 15925 for (int i = 0; i < 10; ++i) { 15926 #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?}} 15927 for (int i = 0; i < 10; ++i) 15928 ++a; 15929 } 15930 #pragma omp target 15931 #pragma omp teams distribute 15932 for (int i = 0; i < 10; ++i) { 15933 #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?}} 15934 for (int i = 0; i < 10; ++i) 15935 ++a; 15936 } 15937 #pragma omp target 15938 #pragma omp teams distribute 15939 for (int i = 0; i < 10; ++i) { 15940 #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?}} 15941 for (int i = 0; i < 10; ++i) 15942 ++a; 15943 } 15944 #pragma omp target 15945 #pragma omp teams distribute 15946 for (int i = 0; i < 10; ++i) { 15947 #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?}} 15948 for (int i = 0; i < 10; ++i) 15949 ++a; 15950 } 15951 #pragma omp target 15952 #pragma omp teams distribute 15953 for (int i = 0; i < 10; ++i) { 15954 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15955 ++a; 15956 } 15957 #pragma omp target 15958 #pragma omp teams distribute 15959 for (int i = 0; i < 10; ++i) { 15960 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15961 for (int i = 0; i < 10; ++i) 15962 ++a; 15963 } 15964 #pragma omp target 15965 #pragma omp teams distribute 15966 for (int i = 0; i < 10; ++i) { 15967 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15968 for (int i = 0; i < 10; ++i) 15969 ++a; 15970 } 15971 #pragma omp target 15972 #pragma omp teams distribute 15973 for (int i = 0; i < 10; ++i) { 15974 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15975 for (int i = 0; i < 10; ++i) 15976 ++a; 15977 } 15978 #pragma omp target 15979 #pragma omp teams distribute 15980 for (int i = 0; i < 10; ++i) { 15981 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15982 for (int i = 0; i < 10; ++i) 15983 ++a; 15984 } 15985 15986 // TEAMS DISTRIBUTE SIMD DIRECTIVE 15987 #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?}} 15988 for (int i = 0; i < 10; ++i) 15989 ; 15990 #pragma omp target 15991 #pragma omp teams distribute simd 15992 for (int i = 0; i < 10; ++i) { 15993 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15994 for (int i = 0; i < 10; ++i) 15995 ; 15996 } 15997 #pragma omp target 15998 #pragma omp teams distribute simd 15999 for (int i = 0; i < 10; ++i) { 16000 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16001 for (int i = 0; i < 10; ++i) 16002 ; 16003 } 16004 #pragma omp target 16005 #pragma omp teams distribute simd 16006 for (int i = 0; i < 10; ++i) { 16007 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16008 for (int i = 0; i < 10; ++i) 16009 ; 16010 } 16011 #pragma omp target 16012 #pragma omp teams distribute simd 16013 for (int i = 0; i < 10; ++i) { 16014 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16015 for (int i = 0; i < 10; ++i) 16016 ; 16017 } 16018 #pragma omp target 16019 #pragma omp teams distribute simd 16020 for (int i = 0; i < 10; ++i) { 16021 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16022 for (int i = 0; i < 10; ++i) 16023 ; 16024 } 16025 #pragma omp target 16026 #pragma omp teams distribute simd 16027 for (int i = 0; i < 10; ++i) { 16028 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16029 for (int i = 0; i < 10; ++i) 16030 ; 16031 } 16032 #pragma omp target 16033 #pragma omp teams distribute simd 16034 for (int i = 0; i < 10; ++i) { 16035 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16036 { 16037 bar(); 16038 } 16039 } 16040 #pragma omp target 16041 #pragma omp teams distribute simd 16042 for (int i = 0; i < 10; ++i) { 16043 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16044 { 16045 bar(); 16046 } 16047 } 16048 #pragma omp target 16049 #pragma omp teams distribute simd 16050 for (int i = 0; i < 10; ++i) { 16051 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16052 { 16053 bar(); 16054 } 16055 } 16056 #pragma omp target 16057 #pragma omp teams distribute simd 16058 for (int i = 0; i < 10; ++i) { 16059 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16060 { 16061 bar(); 16062 } 16063 } 16064 #pragma omp target 16065 #pragma omp teams distribute simd 16066 for (int i = 0; i < 10; ++i) { 16067 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16068 { 16069 bar(); 16070 } 16071 } 16072 #pragma omp target 16073 #pragma omp teams distribute simd 16074 for (int i = 0; i < 10; ++i) { 16075 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16076 { 16077 #pragma omp single 16078 { 16079 bar(); 16080 } 16081 } 16082 } 16083 #pragma omp target 16084 #pragma omp teams distribute simd 16085 for (int i = 0; i < 10; ++i) { 16086 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16087 for (int i = 0; i < 10; ++i) 16088 ; 16089 } 16090 #pragma omp target 16091 #pragma omp teams distribute simd 16092 for (int i = 0; i < 10; ++i) { 16093 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16094 for (int i = 0; i < 10; ++i) 16095 ; 16096 } 16097 #pragma omp target 16098 #pragma omp teams distribute simd 16099 for (int i = 0; i < 10; ++i) { 16100 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16101 { 16102 bar(); 16103 } 16104 } 16105 #pragma omp target 16106 #pragma omp teams distribute simd 16107 for (int i = 0; i < 10; ++i) { 16108 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16109 { 16110 bar(); 16111 } 16112 } 16113 #pragma omp target 16114 #pragma omp teams distribute simd 16115 for (int i = 0; i < 10; ++i) { 16116 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16117 bar(); 16118 } 16119 #pragma omp target 16120 #pragma omp teams distribute simd 16121 for (int i = 0; i < 10; ++i) { 16122 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16123 bar(); 16124 } 16125 #pragma omp target 16126 #pragma omp teams distribute simd 16127 for (int i = 0; i < 10; ++i) { 16128 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16129 bar(); 16130 } 16131 #pragma omp target 16132 #pragma omp teams distribute simd 16133 for (int i = 0; i < 10; ++i) { 16134 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16135 bar(); 16136 } 16137 #pragma omp target 16138 #pragma omp teams distribute simd 16139 for (int i = 0; i < 10; ++i) { 16140 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16141 bar(); 16142 } 16143 #pragma omp target 16144 #pragma omp teams distribute simd 16145 for (int i = 0; i < 10; ++i) { 16146 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16147 ++a; 16148 } 16149 #pragma omp target 16150 #pragma omp teams distribute simd 16151 for (int i = 0; i < 10; ++i) { 16152 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16153 ++a; 16154 } 16155 #pragma omp target 16156 #pragma omp teams distribute simd 16157 for (int i = 0; i < 10; ++i) { 16158 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16159 ++a; 16160 } 16161 #pragma omp target 16162 #pragma omp teams distribute simd 16163 for (int i = 0; i < 10; ++i) { 16164 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16165 for (int i = 0; i < 10; ++i) 16166 ; 16167 } 16168 #pragma omp target 16169 #pragma omp teams distribute simd 16170 for (int i = 0; i < 10; ++i) { 16171 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16172 ++a; 16173 } 16174 #pragma omp target 16175 #pragma omp teams distribute simd 16176 for (int i = 0; i < 10; ++i) { 16177 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16178 ++a; 16179 } 16180 #pragma omp target 16181 #pragma omp teams distribute simd 16182 for (int i = 0; i < 10; ++i) { 16183 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16184 ++a; 16185 } 16186 #pragma omp target 16187 #pragma omp teams distribute simd 16188 for (int i = 0; i < 10; ++i) { 16189 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16190 ++a; 16191 } 16192 #pragma omp target 16193 #pragma omp teams distribute simd 16194 for (int i = 0; i < 10; ++i) { 16195 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16196 for (int i = 0; i < 10; ++i) 16197 ++a; 16198 } 16199 #pragma omp target 16200 #pragma omp teams distribute simd 16201 for (int i = 0; i < 10; ++i) { 16202 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16203 for (int i = 0; i < 10; ++i) 16204 ++a; 16205 } 16206 #pragma omp target 16207 #pragma omp teams distribute simd 16208 for (int i = 0; i < 10; ++i) { 16209 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16210 for (int i = 0; i < 10; ++i) 16211 ++a; 16212 } 16213 #pragma omp target 16214 #pragma omp teams distribute simd 16215 for (int i = 0; i < 10; ++i) { 16216 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16217 for (int i = 0; i < 10; ++i) 16218 ++a; 16219 } 16220 #pragma omp target 16221 #pragma omp teams distribute simd 16222 for (int i = 0; i < 10; ++i) { 16223 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16224 for (int i = 0; i < 10; ++i) 16225 ++a; 16226 } 16227 #pragma omp target 16228 #pragma omp teams distribute simd 16229 for (int i = 0; i < 10; ++i) { 16230 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16231 for (int i = 0; i < 10; ++i) 16232 ++a; 16233 } 16234 #pragma omp target 16235 #pragma omp teams distribute simd 16236 for (int i = 0; i < 10; ++i) { 16237 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16238 ++a; 16239 } 16240 #pragma omp target 16241 #pragma omp teams distribute simd 16242 for (int i = 0; i < 10; ++i) { 16243 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16244 for (int i = 0; i < 10; ++i) 16245 ++a; 16246 } 16247 #pragma omp target 16248 #pragma omp teams distribute simd 16249 for (int i = 0; i < 10; ++i) { 16250 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16251 for (int i = 0; i < 10; ++i) 16252 ++a; 16253 } 16254 #pragma omp target 16255 #pragma omp teams distribute simd 16256 for (int i = 0; i < 10; ++i) { 16257 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16258 for (int i = 0; i < 10; ++i) 16259 ++a; 16260 } 16261 #pragma omp target 16262 #pragma omp teams distribute simd 16263 for (int i = 0; i < 10; ++i) { 16264 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16265 for (int i = 0; i < 10; ++i) 16266 ++a; 16267 } 16268 16269 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 16270 #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?}} 16271 for (int i = 0; i < 10; ++i) 16272 ; 16273 #pragma omp target 16274 #pragma omp teams distribute parallel for simd 16275 for (int i = 0; i < 10; ++i) { 16276 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16277 for (int i = 0; i < 10; ++i) 16278 ; 16279 } 16280 #pragma omp target 16281 #pragma omp teams distribute parallel for simd 16282 for (int i = 0; i < 10; ++i) { 16283 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16284 for (int i = 0; i < 10; ++i) 16285 ; 16286 } 16287 #pragma omp target 16288 #pragma omp teams distribute parallel for simd 16289 for (int i = 0; i < 10; ++i) { 16290 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16291 for (int i = 0; i < 10; ++i) 16292 ; 16293 } 16294 #pragma omp target 16295 #pragma omp teams distribute parallel for simd 16296 for (int i = 0; i < 10; ++i) { 16297 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16298 for (int i = 0; i < 10; ++i) 16299 ; 16300 } 16301 #pragma omp target 16302 #pragma omp teams distribute parallel for simd 16303 for (int i = 0; i < 10; ++i) { 16304 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16305 for (int i = 0; i < 10; ++i) 16306 ; 16307 } 16308 #pragma omp target 16309 #pragma omp teams distribute parallel for simd 16310 for (int i = 0; i < 10; ++i) { 16311 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16312 for (int i = 0; i < 10; ++i) 16313 ; 16314 } 16315 #pragma omp target 16316 #pragma omp teams distribute parallel for simd 16317 for (int i = 0; i < 10; ++i) { 16318 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16319 { 16320 bar(); 16321 } 16322 } 16323 #pragma omp target 16324 #pragma omp teams distribute parallel for simd 16325 for (int i = 0; i < 10; ++i) { 16326 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16327 { 16328 bar(); 16329 } 16330 } 16331 #pragma omp target 16332 #pragma omp teams distribute parallel for simd 16333 for (int i = 0; i < 10; ++i) { 16334 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16335 { 16336 bar(); 16337 } 16338 } 16339 #pragma omp target 16340 #pragma omp teams distribute parallel for simd 16341 for (int i = 0; i < 10; ++i) { 16342 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16343 { 16344 bar(); 16345 } 16346 } 16347 #pragma omp target 16348 #pragma omp teams distribute parallel for simd 16349 for (int i = 0; i < 10; ++i) { 16350 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16351 { 16352 bar(); 16353 } 16354 } 16355 #pragma omp target 16356 #pragma omp teams distribute parallel for simd 16357 for (int i = 0; i < 10; ++i) { 16358 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16359 { 16360 #pragma omp single 16361 { 16362 bar(); 16363 } 16364 } 16365 } 16366 #pragma omp target 16367 #pragma omp teams distribute parallel for simd 16368 for (int i = 0; i < 10; ++i) { 16369 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16370 for (int i = 0; i < 10; ++i) 16371 ; 16372 } 16373 #pragma omp target 16374 #pragma omp teams distribute parallel for simd 16375 for (int i = 0; i < 10; ++i) { 16376 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16377 for (int i = 0; i < 10; ++i) 16378 ; 16379 } 16380 #pragma omp target 16381 #pragma omp teams distribute parallel for simd 16382 for (int i = 0; i < 10; ++i) { 16383 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16384 { 16385 bar(); 16386 } 16387 } 16388 #pragma omp target 16389 #pragma omp teams distribute parallel for simd 16390 for (int i = 0; i < 10; ++i) { 16391 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16392 { 16393 bar(); 16394 } 16395 } 16396 #pragma omp target 16397 #pragma omp teams distribute parallel for simd 16398 for (int i = 0; i < 10; ++i) { 16399 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16400 bar(); 16401 } 16402 #pragma omp target 16403 #pragma omp teams distribute parallel for simd 16404 for (int i = 0; i < 10; ++i) { 16405 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16406 bar(); 16407 } 16408 #pragma omp target 16409 #pragma omp teams distribute parallel for simd 16410 for (int i = 0; i < 10; ++i) { 16411 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16412 bar(); 16413 } 16414 #pragma omp target 16415 #pragma omp teams distribute parallel for simd 16416 for (int i = 0; i < 10; ++i) { 16417 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16418 bar(); 16419 } 16420 #pragma omp target 16421 #pragma omp teams distribute parallel for simd 16422 for (int i = 0; i < 10; ++i) { 16423 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16424 bar(); 16425 } 16426 #pragma omp target 16427 #pragma omp teams distribute parallel for simd 16428 for (int i = 0; i < 10; ++i) { 16429 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16430 ++a; 16431 } 16432 #pragma omp target 16433 #pragma omp teams distribute parallel for simd 16434 for (int i = 0; i < 10; ++i) { 16435 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16436 ++a; 16437 } 16438 #pragma omp target 16439 #pragma omp teams distribute parallel for simd 16440 for (int i = 0; i < 10; ++i) { 16441 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16442 ++a; 16443 } 16444 #pragma omp target 16445 #pragma omp teams distribute parallel for simd 16446 for (int i = 0; i < 10; ++i) { 16447 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16448 for (int i = 0; i < 10; ++i) 16449 ; 16450 } 16451 #pragma omp target 16452 #pragma omp teams distribute parallel for simd 16453 for (int i = 0; i < 10; ++i) { 16454 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16455 ++a; 16456 } 16457 #pragma omp target 16458 #pragma omp teams distribute parallel for simd 16459 for (int i = 0; i < 10; ++i) { 16460 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16461 ++a; 16462 } 16463 #pragma omp target 16464 #pragma omp teams distribute parallel for simd 16465 for (int i = 0; i < 10; ++i) { 16466 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16467 ++a; 16468 } 16469 #pragma omp target 16470 #pragma omp teams distribute parallel for simd 16471 for (int i = 0; i < 10; ++i) { 16472 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16473 ++a; 16474 } 16475 #pragma omp target 16476 #pragma omp teams distribute parallel for simd 16477 for (int i = 0; i < 10; ++i) { 16478 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16479 for (int i = 0; i < 10; ++i) 16480 ++a; 16481 } 16482 #pragma omp target 16483 #pragma omp teams distribute parallel for simd 16484 for (int i = 0; i < 10; ++i) { 16485 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16486 for (int i = 0; i < 10; ++i) 16487 ++a; 16488 } 16489 #pragma omp target 16490 #pragma omp teams distribute parallel for simd 16491 for (int i = 0; i < 10; ++i) { 16492 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16493 for (int i = 0; i < 10; ++i) 16494 ++a; 16495 } 16496 #pragma omp target 16497 #pragma omp teams distribute parallel for simd 16498 for (int i = 0; i < 10; ++i) { 16499 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16500 for (int i = 0; i < 10; ++i) 16501 ++a; 16502 } 16503 #pragma omp target 16504 #pragma omp teams distribute parallel for simd 16505 for (int i = 0; i < 10; ++i) { 16506 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16507 for (int i = 0; i < 10; ++i) 16508 ++a; 16509 } 16510 #pragma omp target 16511 #pragma omp teams distribute parallel for simd 16512 for (int i = 0; i < 10; ++i) { 16513 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16514 for (int i = 0; i < 10; ++i) 16515 ++a; 16516 } 16517 #pragma omp target 16518 #pragma omp teams distribute parallel for simd 16519 for (int i = 0; i < 10; ++i) { 16520 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16521 ++a; 16522 } 16523 #pragma omp target 16524 #pragma omp teams distribute parallel for simd 16525 for (int i = 0; i < 10; ++i) { 16526 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16527 for (int i = 0; i < 10; ++i) 16528 ++a; 16529 } 16530 #pragma omp target 16531 #pragma omp teams distribute parallel for simd 16532 for (int i = 0; i < 10; ++i) { 16533 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16534 for (int i = 0; i < 10; ++i) 16535 ++a; 16536 } 16537 #pragma omp target 16538 #pragma omp teams distribute parallel for simd 16539 for (int i = 0; i < 10; ++i) { 16540 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16541 for (int i = 0; i < 10; ++i) 16542 ++a; 16543 } 16544 #pragma omp target 16545 #pragma omp teams distribute parallel for simd 16546 for (int i = 0; i < 10; ++i) { 16547 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16548 for (int i = 0; i < 10; ++i) 16549 ++a; 16550 } 16551 16552 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16553 #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?}} 16554 for (int i = 0; i < 10; ++i) 16555 ; 16556 #pragma omp target 16557 #pragma omp teams distribute parallel for 16558 for (int i = 0; i < 10; ++i) { 16559 #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?}} 16560 for (int i = 0; i < 10; ++i) 16561 ; 16562 } 16563 #pragma omp target 16564 #pragma omp teams distribute parallel for 16565 for (int i = 0; i < 10; ++i) { 16566 #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?}} 16567 for (int i = 0; i < 10; ++i) 16568 ; 16569 } 16570 #pragma omp target 16571 #pragma omp teams distribute parallel for 16572 for (int i = 0; i < 10; ++i) { 16573 #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?}} 16574 for (int i = 0; i < 10; ++i) 16575 ; 16576 } 16577 #pragma omp target 16578 #pragma omp teams distribute parallel for 16579 for (int i = 0; i < 10; ++i) { 16580 #pragma omp simd // OK 16581 for (int i = 0; i < 10; ++i) 16582 ; 16583 } 16584 #pragma omp target 16585 #pragma omp teams distribute parallel for 16586 for (int i = 0; i < 10; ++i) { 16587 #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?}} 16588 for (int i = 0; i < 10; ++i) 16589 ; 16590 } 16591 #pragma omp target 16592 #pragma omp teams distribute parallel for 16593 for (int i = 0; i < 10; ++i) { 16594 #pragma omp parallel // OK 16595 for (int i = 0; i < 10; ++i) 16596 ; 16597 } 16598 #pragma omp target 16599 #pragma omp teams distribute parallel for 16600 for (int i = 0; i < 10; ++i) { 16601 #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?}} 16602 { 16603 bar(); 16604 } 16605 } 16606 #pragma omp target 16607 #pragma omp teams distribute parallel for 16608 for (int i = 0; i < 10; ++i) { 16609 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 16610 { 16611 bar(); 16612 } 16613 } 16614 #pragma omp target 16615 #pragma omp teams distribute parallel for 16616 for (int i = 0; i < 10; ++i) { 16617 #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?}} 16618 { 16619 bar(); 16620 } 16621 } 16622 #pragma omp target 16623 #pragma omp teams distribute parallel for 16624 for (int i = 0; i < 10; ++i) { 16625 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16626 { 16627 bar(); 16628 } 16629 } 16630 #pragma omp target 16631 #pragma omp teams distribute parallel for 16632 for (int i = 0; i < 10; ++i) { 16633 #pragma omp critical // OK 16634 { 16635 bar(); 16636 } 16637 } 16638 #pragma omp target 16639 #pragma omp teams distribute parallel for 16640 for (int i = 0; i < 10; ++i) { 16641 #pragma omp parallel // OK 16642 { 16643 #pragma omp single 16644 { 16645 bar(); 16646 } 16647 } 16648 } 16649 #pragma omp target 16650 #pragma omp teams distribute parallel for 16651 for (int i = 0; i < 10; ++i) { 16652 #pragma omp parallel for // OK 16653 for (int i = 0; i < 10; ++i) 16654 ; 16655 } 16656 #pragma omp target 16657 #pragma omp teams distribute parallel for 16658 for (int i = 0; i < 10; ++i) { 16659 #pragma omp parallel for simd // OK 16660 for (int i = 0; i < 10; ++i) 16661 ; 16662 } 16663 #pragma omp target 16664 #pragma omp teams distribute parallel for 16665 for (int i = 0; i < 10; ++i) { 16666 #pragma omp parallel sections // OK 16667 { 16668 bar(); 16669 } 16670 } 16671 #pragma omp target 16672 #pragma omp teams distribute parallel for 16673 for (int i = 0; i < 10; ++i) { 16674 #pragma omp task // OK 16675 { 16676 bar(); 16677 } 16678 } 16679 #pragma omp target 16680 #pragma omp teams distribute parallel for 16681 for (int i = 0; i < 10; ++i) { 16682 #pragma omp taskyield // OK 16683 bar(); 16684 } 16685 #pragma omp target 16686 #pragma omp teams distribute parallel for 16687 for (int i = 0; i < 10; ++i) { 16688 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16689 bar(); 16690 } 16691 #pragma omp target 16692 #pragma omp teams distribute parallel for 16693 for (int i = 0; i < 10; ++i) { 16694 #pragma omp taskwait // OK 16695 bar(); 16696 } 16697 #pragma omp target 16698 #pragma omp teams distribute parallel for 16699 for (int i = 0; i < 10; ++i) { 16700 #pragma omp flush // OK 16701 bar(); 16702 } 16703 #pragma omp target 16704 #pragma omp teams distribute parallel for 16705 for (int i = 0; i < 10; ++i) { 16706 #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?}} 16707 bar(); 16708 } 16709 #pragma omp target 16710 #pragma omp teams distribute parallel for 16711 for (int i = 0; i < 10; ++i) { 16712 #pragma omp atomic // OK 16713 ++a; 16714 } 16715 #pragma omp target 16716 #pragma omp teams distribute parallel for 16717 for (int i = 0; i < 10; ++i) { 16718 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16719 ++a; 16720 } 16721 #pragma omp target 16722 #pragma omp teams distribute parallel for 16723 for (int i = 0; i < 10; ++i) { 16724 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16725 ++a; 16726 } 16727 #pragma omp target 16728 #pragma omp teams distribute parallel for 16729 for (int i = 0; i < 10; ++i) { 16730 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16731 for (int i = 0; i < 10; ++i) 16732 ; 16733 } 16734 #pragma omp target 16735 #pragma omp teams distribute parallel for 16736 for (int i = 0; i < 10; ++i) { 16737 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16738 ++a; 16739 } 16740 #pragma omp target 16741 #pragma omp teams distribute parallel for 16742 for (int i = 0; i < 10; ++i) { 16743 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16744 ++a; 16745 } 16746 #pragma omp target 16747 #pragma omp teams distribute parallel for 16748 for (int i = 0; i < 10; ++i) { 16749 #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?}} 16750 ++a; 16751 } 16752 #pragma omp target 16753 #pragma omp teams distribute parallel for 16754 for (int i = 0; i < 10; ++i) { 16755 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16756 ++a; 16757 } 16758 #pragma omp target 16759 #pragma omp teams distribute parallel for 16760 for (int i = 0; i < 10; ++i) { 16761 #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?}} 16762 for (int i = 0; i < 10; ++i) 16763 ++a; 16764 } 16765 #pragma omp target 16766 #pragma omp teams distribute parallel for 16767 for (int i = 0; i < 10; ++i) { 16768 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16769 for (int i = 0; i < 10; ++i) 16770 ++a; 16771 } 16772 #pragma omp target 16773 #pragma omp teams distribute parallel for 16774 for (int i = 0; i < 10; ++i) { 16775 #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?}} 16776 for (int i = 0; i < 10; ++i) 16777 ++a; 16778 } 16779 #pragma omp target 16780 #pragma omp teams distribute parallel for 16781 for (int i = 0; i < 10; ++i) { 16782 #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?}} 16783 for (int i = 0; i < 10; ++i) 16784 ++a; 16785 } 16786 #pragma omp target 16787 #pragma omp teams distribute parallel for 16788 for (int i = 0; i < 10; ++i) { 16789 #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?}} 16790 for (int i = 0; i < 10; ++i) 16791 ++a; 16792 } 16793 #pragma omp target 16794 #pragma omp teams distribute parallel for 16795 for (int i = 0; i < 10; ++i) { 16796 #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?}} 16797 for (int i = 0; i < 10; ++i) 16798 ++a; 16799 } 16800 #pragma omp target 16801 #pragma omp teams distribute parallel for 16802 for (int i = 0; i < 10; ++i) { 16803 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16804 ++a; 16805 } 16806 #pragma omp target 16807 #pragma omp teams distribute parallel for 16808 for (int i = 0; i < 10; ++i) { 16809 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16810 for (int i = 0; i < 10; ++i) 16811 ++a; 16812 } 16813 #pragma omp target 16814 #pragma omp teams distribute parallel for 16815 for (int i = 0; i < 10; ++i) { 16816 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16817 for (int i = 0; i < 10; ++i) 16818 ++a; 16819 } 16820 #pragma omp target 16821 #pragma omp teams distribute parallel for 16822 for (int i = 0; i < 10; ++i) { 16823 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16824 for (int i = 0; i < 10; ++i) 16825 ++a; 16826 } 16827 #pragma omp target 16828 #pragma omp teams distribute parallel for 16829 for (int i = 0; i < 10; ++i) { 16830 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16831 for (int i = 0; i < 10; ++i) 16832 ++a; 16833 } 16834 16835 // TARGET TEAMS DIRECTIVE 16836 #pragma omp target teams 16837 #pragma omp parallel 16838 bar(); 16839 #pragma omp target teams 16840 #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?}} 16841 for (int i = 0; i < 10; ++i) 16842 ; 16843 #pragma omp target teams 16844 #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?}} 16845 for (int i = 0; i < 10; ++i) 16846 ; 16847 #pragma omp target teams 16848 #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?}} 16849 for (int i = 0; i < 10; ++i) 16850 ; 16851 #pragma omp target teams 16852 #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?}} 16853 { 16854 bar(); 16855 } 16856 #pragma omp target teams 16857 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 16858 { 16859 bar(); 16860 } 16861 #pragma omp target teams 16862 #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?}} 16863 bar(); 16864 16865 #pragma omp target teams 16866 #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?}} 16867 { 16868 bar(); 16869 } 16870 #pragma omp target teams 16871 #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?}} 16872 { 16873 bar(); 16874 } 16875 #pragma omp target teams 16876 #pragma omp parallel for 16877 for (int i = 0; i < 10; ++i) 16878 ; 16879 #pragma omp target teams 16880 #pragma omp parallel for simd 16881 for (int i = 0; i < 10; ++i) 16882 ; 16883 #pragma omp target teams 16884 #pragma omp parallel sections 16885 { 16886 bar(); 16887 } 16888 #pragma omp target teams 16889 #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?}} 16890 { 16891 bar(); 16892 } 16893 #pragma omp target teams 16894 { 16895 #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?}} 16896 bar(); 16897 } 16898 #pragma omp target teams 16899 { 16900 #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?}} 16901 bar(); 16902 } 16903 #pragma omp target teams 16904 { 16905 #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?}} 16906 bar(); 16907 } 16908 #pragma omp target teams 16909 { 16910 #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?}} 16911 bar(); 16912 } 16913 #pragma omp target teams 16914 { 16915 #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?}} 16916 bar(); 16917 } 16918 #pragma omp target teams 16919 { 16920 #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?}} 16921 ++a; 16922 } 16923 #pragma omp target teams 16924 { 16925 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 16926 ++a; 16927 } 16928 #pragma omp target teams 16929 { 16930 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 16931 ++a; 16932 } 16933 #pragma omp target teams 16934 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 16935 for (int i = 0; i < 10; ++i) 16936 ; 16937 #pragma omp target teams 16938 { 16939 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16940 } 16941 #pragma omp target teams 16942 { 16943 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16944 } 16945 #pragma omp target teams 16946 { 16947 #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?}} 16948 ++a; 16949 } 16950 #pragma omp target teams 16951 { 16952 #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?}} 16953 for (int i = 0; i < 10; ++i) 16954 ++a; 16955 } 16956 #pragma omp target teams 16957 #pragma omp distribute 16958 for (int i = 0; i < 10; ++i) 16959 ; 16960 #pragma omp target teams 16961 { 16962 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 16963 ++a; 16964 } 16965 #pragma omp target teams 16966 #pragma omp distribute parallel for 16967 for (int i = 0; i < 10; ++i) 16968 ; 16969 #pragma omp target teams 16970 { 16971 #pragma omp distribute parallel for 16972 for (int i = 0; i < 10; ++i) 16973 ; 16974 #pragma omp distribute parallel for 16975 for (int j = 0; j < 10; ++j) 16976 ; 16977 } 16978 #pragma omp target teams 16979 { 16980 #pragma omp distribute parallel for simd 16981 for (int i = 0; i < 10; ++i) 16982 ; 16983 #pragma omp distribute parallel for simd 16984 for (int j = 0; j < 10; ++j) 16985 ; 16986 } 16987 #pragma omp target teams 16988 { 16989 #pragma omp distribute simd 16990 for (int i = 0; i < 10; ++i) 16991 ; 16992 #pragma omp distribute simd 16993 for (int j = 0; j < 10; ++j) 16994 ; 16995 } 16996 #pragma omp target teams 16997 { 16998 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 16999 for (int i = 0; i < 10; ++i) 17000 ; 17001 } 17002 #pragma omp target teams 17003 { 17004 #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?}} 17005 for (int i = 0; i < 10; ++i) 17006 ; 17007 } 17008 #pragma omp target teams 17009 { 17010 #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?}} 17011 for (int i = 0; i < 10; ++i) 17012 ; 17013 } 17014 #pragma omp target teams 17015 { 17016 #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?}} 17017 for (int i = 0; i < 10; ++i) 17018 ; 17019 } 17020 #pragma omp target teams 17021 { 17022 #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?}} 17023 for (int i = 0; i < 10; ++i) 17024 ; 17025 } 17026 #pragma omp target teams 17027 { 17028 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 17029 a++; 17030 } 17031 #pragma omp target teams 17032 { 17033 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 17034 for (int i = 0; i < 10; ++i) 17035 ; 17036 } 17037 #pragma omp target teams 17038 { 17039 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17040 for (int i = 0; i < 10; ++i) 17041 ; 17042 } 17043 #pragma omp target teams 17044 { 17045 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 17046 for (int i = 0; i < 10; ++i) 17047 ; 17048 } 17049 #pragma omp target teams 17050 { 17051 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 17052 for (int i = 0; i < 10; ++i) 17053 ; 17054 } 17055 17056 // TARGET TEAMS DISTRIBUTE DIRECTIVE 17057 #pragma omp target teams distribute // OK 17058 for (int i = 0; i < 10; ++i) 17059 ; 17060 #pragma omp target teams distribute 17061 for (int i = 0; i < 10; ++i) { 17062 #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?}} 17063 for (int i = 0; i < 10; ++i) 17064 ; 17065 } 17066 #pragma omp target teams distribute 17067 for (int i = 0; i < 10; ++i) { 17068 #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?}} 17069 for (int i = 0; i < 10; ++i) 17070 ; 17071 } 17072 #pragma omp target teams distribute 17073 for (int i = 0; i < 10; ++i) { 17074 #pragma omp for // OK 17075 for (int i = 0; i < 10; ++i) 17076 ; 17077 } 17078 #pragma omp target teams distribute 17079 for (int i = 0; i < 10; ++i) { 17080 #pragma omp simd // OK 17081 for (int i = 0; i < 10; ++i) 17082 ; 17083 } 17084 #pragma omp target teams distribute 17085 for (int i = 0; i < 10; ++i) { 17086 #pragma omp for simd // OK 17087 for (int i = 0; i < 10; ++i) 17088 ; 17089 } 17090 #pragma omp target teams distribute 17091 for (int i = 0; i < 10; ++i) { 17092 #pragma omp parallel // OK 17093 for (int i = 0; i < 10; ++i) 17094 ; 17095 } 17096 #pragma omp target teams distribute 17097 for (int i = 0; i < 10; ++i) { 17098 #pragma omp sections // OK 17099 { 17100 bar(); 17101 } 17102 } 17103 #pragma omp target teams distribute 17104 for (int i = 0; i < 10; ++i) { 17105 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 17106 { 17107 bar(); 17108 } 17109 } 17110 #pragma omp target teams distribute 17111 for (int i = 0; i < 10; ++i) { 17112 #pragma omp single // OK 17113 { 17114 bar(); 17115 } 17116 } 17117 #pragma omp target teams distribute 17118 for (int i = 0; i < 10; ++i) { 17119 #pragma omp master // OK 17120 { 17121 bar(); 17122 } 17123 } 17124 #pragma omp target teams distribute 17125 for (int i = 0; i < 10; ++i) { 17126 #pragma omp critical // OK 17127 { 17128 bar(); 17129 } 17130 } 17131 #pragma omp target teams distribute 17132 for (int i = 0; i < 10; ++i) { 17133 #pragma omp parallel // OK 17134 { 17135 #pragma omp single 17136 { 17137 bar(); 17138 } 17139 } 17140 } 17141 #pragma omp target teams distribute 17142 for (int i = 0; i < 10; ++i) { 17143 #pragma omp parallel for // OK 17144 for (int i = 0; i < 10; ++i) 17145 ; 17146 } 17147 #pragma omp target teams distribute 17148 for (int i = 0; i < 10; ++i) { 17149 #pragma omp parallel for simd // OK 17150 for (int i = 0; i < 10; ++i) 17151 ; 17152 } 17153 #pragma omp target teams distribute 17154 for (int i = 0; i < 10; ++i) { 17155 #pragma omp parallel sections // OK 17156 { 17157 bar(); 17158 } 17159 } 17160 #pragma omp target teams distribute 17161 for (int i = 0; i < 10; ++i) { 17162 #pragma omp task // OK 17163 { 17164 bar(); 17165 } 17166 } 17167 #pragma omp target teams distribute 17168 for (int i = 0; i < 10; ++i) { 17169 #pragma omp taskyield // OK 17170 bar(); 17171 } 17172 #pragma omp target teams distribute 17173 for (int i = 0; i < 10; ++i) { 17174 #pragma omp barrier // OK 17175 bar(); 17176 } 17177 #pragma omp target teams distribute 17178 for (int i = 0; i < 10; ++i) { 17179 #pragma omp taskwait // OK 17180 bar(); 17181 } 17182 #pragma omp target teams distribute 17183 for (int i = 0; i < 10; ++i) { 17184 #pragma omp flush // OK 17185 bar(); 17186 } 17187 #pragma omp target teams distribute 17188 for (int i = 0; i < 10; ++i) { 17189 #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?}} 17190 bar(); 17191 } 17192 #pragma omp target teams distribute 17193 for (int i = 0; i < 10; ++i) { 17194 #pragma omp atomic // OK 17195 ++a; 17196 } 17197 #pragma omp target teams distribute 17198 for (int i = 0; i < 10; ++i) { 17199 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17200 ++a; 17201 } 17202 #pragma omp target teams distribute 17203 for (int i = 0; i < 10; ++i) { 17204 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17205 ++a; 17206 } 17207 #pragma omp target teams distribute 17208 for (int i = 0; i < 10; ++i) { 17209 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17210 for (int i = 0; i < 10; ++i) 17211 ; 17212 } 17213 #pragma omp target teams distribute 17214 for (int i = 0; i < 10; ++i) { 17215 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17216 ++a; 17217 } 17218 #pragma omp target teams distribute 17219 for (int i = 0; i < 10; ++i) { 17220 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17221 ++a; 17222 } 17223 #pragma omp target teams distribute 17224 for (int i = 0; i < 10; ++i) { 17225 #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?}} 17226 ++a; 17227 } 17228 #pragma omp target teams distribute 17229 for (int i = 0; i < 10; ++i) { 17230 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17231 ++a; 17232 } 17233 #pragma omp target teams distribute 17234 for (int i = 0; i < 10; ++i) { 17235 #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?}} 17236 for (int i = 0; i < 10; ++i) 17237 ++a; 17238 } 17239 #pragma omp target teams distribute 17240 for (int i = 0; i < 10; ++i) { 17241 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17242 for (int i = 0; i < 10; ++i) 17243 ++a; 17244 } 17245 #pragma omp target teams distribute 17246 for (int i = 0; i < 10; ++i) { 17247 #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?}} 17248 for (int i = 0; i < 10; ++i) 17249 ++a; 17250 } 17251 #pragma omp target teams distribute 17252 for (int i = 0; i < 10; ++i) { 17253 #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?}} 17254 for (int i = 0; i < 10; ++i) 17255 ++a; 17256 } 17257 #pragma omp target teams distribute 17258 for (int i = 0; i < 10; ++i) { 17259 #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?}} 17260 for (int i = 0; i < 10; ++i) 17261 ++a; 17262 } 17263 #pragma omp target teams distribute 17264 for (int i = 0; i < 10; ++i) { 17265 #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?}} 17266 for (int i = 0; i < 10; ++i) 17267 ++a; 17268 } 17269 #pragma omp target teams distribute 17270 for (int i = 0; i < 10; ++i) { 17271 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17272 ++a; 17273 } 17274 #pragma omp target teams distribute 17275 for (int i = 0; i < 10; ++i) { 17276 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17277 for (int i = 0; i < 10; ++i) 17278 ++a; 17279 } 17280 #pragma omp target teams distribute 17281 for (int i = 0; i < 10; ++i) { 17282 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17283 for (int i = 0; i < 10; ++i) 17284 ++a; 17285 } 17286 #pragma omp target teams distribute 17287 for (int i = 0; i < 10; ++i) { 17288 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17289 for (int i = 0; i < 10; ++i) 17290 ++a; 17291 } 17292 #pragma omp target teams distribute 17293 for (int i = 0; i < 10; ++i) { 17294 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17295 for (int i = 0; i < 10; ++i) 17296 ++a; 17297 } 17298 17299 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 17300 #pragma omp target teams distribute parallel for // OK 17301 for (int i = 0; i < 10; ++i) 17302 ; 17303 #pragma omp target teams distribute parallel for 17304 for (int i = 0; i < 10; ++i) { 17305 #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?}} 17306 for (int i = 0; i < 10; ++i) 17307 ; 17308 } 17309 #pragma omp target teams distribute parallel for 17310 for (int i = 0; i < 10; ++i) { 17311 #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?}} 17312 for (int i = 0; i < 10; ++i) 17313 ; 17314 } 17315 #pragma omp target teams distribute parallel for 17316 for (int i = 0; i < 10; ++i) { 17317 #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?}} 17318 for (int i = 0; i < 10; ++i) 17319 ; 17320 } 17321 #pragma omp target teams distribute parallel for 17322 for (int i = 0; i < 10; ++i) { 17323 #pragma omp simd // OK 17324 for (int i = 0; i < 10; ++i) 17325 ; 17326 } 17327 #pragma omp target teams distribute parallel for 17328 for (int i = 0; i < 10; ++i) { 17329 #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?}} 17330 for (int i = 0; i < 10; ++i) 17331 ; 17332 } 17333 #pragma omp target teams distribute parallel for 17334 for (int i = 0; i < 10; ++i) { 17335 #pragma omp parallel // OK 17336 for (int i = 0; i < 10; ++i) 17337 ; 17338 } 17339 #pragma omp target teams distribute parallel for 17340 for (int i = 0; i < 10; ++i) { 17341 #pragma omp 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?}} 17342 { 17343 bar(); 17344 } 17345 } 17346 #pragma omp target teams distribute parallel for 17347 for (int i = 0; i < 10; ++i) { 17348 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 17349 { 17350 bar(); 17351 } 17352 } 17353 #pragma omp target teams distribute parallel for 17354 for (int i = 0; i < 10; ++i) { 17355 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17356 { 17357 bar(); 17358 } 17359 } 17360 #pragma omp target teams distribute parallel for 17361 for (int i = 0; i < 10; ++i) { 17362 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17363 { 17364 bar(); 17365 } 17366 } 17367 #pragma omp target teams distribute parallel for 17368 for (int i = 0; i < 10; ++i) { 17369 #pragma omp critical // OK 17370 { 17371 bar(); 17372 } 17373 } 17374 #pragma omp target teams distribute parallel for 17375 for (int i = 0; i < 10; ++i) { 17376 #pragma omp parallel // OK 17377 { 17378 #pragma omp single 17379 { 17380 bar(); 17381 } 17382 } 17383 } 17384 #pragma omp target teams distribute parallel for 17385 for (int i = 0; i < 10; ++i) { 17386 #pragma omp parallel for // OK 17387 for (int i = 0; i < 10; ++i) 17388 ; 17389 } 17390 #pragma omp target teams distribute parallel for 17391 for (int i = 0; i < 10; ++i) { 17392 #pragma omp parallel for simd // OK 17393 for (int i = 0; i < 10; ++i) 17394 ; 17395 } 17396 #pragma omp target teams distribute parallel for 17397 for (int i = 0; i < 10; ++i) { 17398 #pragma omp parallel sections // OK 17399 { 17400 bar(); 17401 } 17402 } 17403 #pragma omp target teams distribute parallel for 17404 for (int i = 0; i < 10; ++i) { 17405 #pragma omp task // OK 17406 { 17407 bar(); 17408 } 17409 } 17410 #pragma omp target teams distribute parallel for 17411 for (int i = 0; i < 10; ++i) { 17412 #pragma omp taskyield // OK 17413 bar(); 17414 } 17415 #pragma omp target teams distribute parallel for 17416 for (int i = 0; i < 10; ++i) { 17417 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17418 bar(); 17419 } 17420 #pragma omp target teams distribute parallel for 17421 for (int i = 0; i < 10; ++i) { 17422 #pragma omp taskwait // OK 17423 bar(); 17424 } 17425 #pragma omp target teams distribute parallel for 17426 for (int i = 0; i < 10; ++i) { 17427 #pragma omp flush // OK 17428 bar(); 17429 } 17430 #pragma omp target teams distribute parallel for 17431 for (int i = 0; i < 10; ++i) { 17432 #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?}} 17433 bar(); 17434 } 17435 #pragma omp target teams distribute parallel for 17436 for (int i = 0; i < 10; ++i) { 17437 #pragma omp atomic // OK 17438 ++a; 17439 } 17440 #pragma omp target teams distribute parallel for 17441 for (int i = 0; i < 10; ++i) { 17442 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17443 ++a; 17444 } 17445 #pragma omp target teams distribute parallel for 17446 for (int i = 0; i < 10; ++i) { 17447 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17448 ++a; 17449 } 17450 #pragma omp target teams distribute parallel for 17451 for (int i = 0; i < 10; ++i) { 17452 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17453 for (int i = 0; i < 10; ++i) 17454 ; 17455 } 17456 #pragma omp target teams distribute parallel for 17457 for (int i = 0; i < 10; ++i) { 17458 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17459 ++a; 17460 } 17461 #pragma omp target teams distribute parallel for 17462 for (int i = 0; i < 10; ++i) { 17463 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17464 ++a; 17465 } 17466 #pragma omp target teams distribute parallel for 17467 for (int i = 0; i < 10; ++i) { 17468 #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?}} 17469 ++a; 17470 } 17471 #pragma omp target teams distribute parallel for 17472 for (int i = 0; i < 10; ++i) { 17473 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17474 ++a; 17475 } 17476 #pragma omp target teams distribute parallel for 17477 for (int i = 0; i < 10; ++i) { 17478 #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?}} 17479 for (int i = 0; i < 10; ++i) 17480 ++a; 17481 } 17482 #pragma omp target teams distribute parallel for 17483 for (int i = 0; i < 10; ++i) { 17484 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17485 for (int i = 0; i < 10; ++i) 17486 ++a; 17487 } 17488 #pragma omp target teams distribute parallel for 17489 for (int i = 0; i < 10; ++i) { 17490 #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?}} 17491 for (int i = 0; i < 10; ++i) 17492 ++a; 17493 } 17494 #pragma omp target teams distribute parallel for 17495 for (int i = 0; i < 10; ++i) { 17496 #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?}} 17497 for (int i = 0; i < 10; ++i) 17498 ++a; 17499 } 17500 #pragma omp target teams distribute parallel for 17501 for (int i = 0; i < 10; ++i) { 17502 #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?}} 17503 for (int i = 0; i < 10; ++i) 17504 ++a; 17505 } 17506 #pragma omp target teams distribute parallel for 17507 for (int i = 0; i < 10; ++i) { 17508 #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?}} 17509 for (int i = 0; i < 10; ++i) 17510 ++a; 17511 } 17512 #pragma omp target teams distribute parallel for 17513 for (int i = 0; i < 10; ++i) { 17514 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17515 ++a; 17516 } 17517 #pragma omp target teams distribute parallel for 17518 for (int i = 0; i < 10; ++i) { 17519 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17520 for (int i = 0; i < 10; ++i) 17521 ++a; 17522 } 17523 #pragma omp target teams distribute parallel for 17524 for (int i = 0; i < 10; ++i) { 17525 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17526 for (int i = 0; i < 10; ++i) 17527 ++a; 17528 } 17529 #pragma omp target teams distribute parallel for 17530 for (int i = 0; i < 10; ++i) { 17531 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17532 for (int i = 0; i < 10; ++i) 17533 ++a; 17534 } 17535 #pragma omp target teams distribute parallel for 17536 for (int i = 0; i < 10; ++i) { 17537 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17538 for (int i = 0; i < 10; ++i) 17539 ++a; 17540 } 17541 17542 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 17543 #pragma omp target teams distribute parallel for simd // OK 17544 for (int i = 0; i < 10; ++i) 17545 ; 17546 #pragma omp target teams distribute parallel for simd 17547 for (int i = 0; i < 10; ++i) { 17548 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17549 for (int i = 0; i < 10; ++i) 17550 ; 17551 } 17552 #pragma omp target teams distribute parallel for simd 17553 for (int i = 0; i < 10; ++i) { 17554 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17555 for (int i = 0; i < 10; ++i) 17556 ; 17557 } 17558 #pragma omp target teams distribute parallel for simd 17559 for (int i = 0; i < 10; ++i) { 17560 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17561 for (int i = 0; i < 10; ++i) 17562 ; 17563 } 17564 #pragma omp target teams distribute parallel for simd 17565 for (int i = 0; i < 10; ++i) { 17566 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17567 for (int i = 0; i < 10; ++i) 17568 ; 17569 } 17570 #pragma omp target teams distribute parallel for simd 17571 for (int i = 0; i < 10; ++i) { 17572 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17573 for (int i = 0; i < 10; ++i) 17574 ; 17575 } 17576 #pragma omp target teams distribute parallel for simd 17577 for (int i = 0; i < 10; ++i) { 17578 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17579 for (int i = 0; i < 10; ++i) 17580 ; 17581 } 17582 #pragma omp target teams distribute parallel for simd 17583 for (int i = 0; i < 10; ++i) { 17584 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17585 { 17586 bar(); 17587 } 17588 } 17589 #pragma omp target teams distribute parallel for simd 17590 for (int i = 0; i < 10; ++i) { 17591 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17592 { 17593 bar(); 17594 } 17595 } 17596 #pragma omp target teams distribute parallel for simd 17597 for (int i = 0; i < 10; ++i) { 17598 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17599 { 17600 bar(); 17601 } 17602 } 17603 #pragma omp target teams distribute parallel for simd 17604 for (int i = 0; i < 10; ++i) { 17605 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17606 { 17607 bar(); 17608 } 17609 } 17610 #pragma omp target teams distribute parallel for simd 17611 for (int i = 0; i < 10; ++i) { 17612 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17613 { 17614 bar(); 17615 } 17616 } 17617 #pragma omp target teams distribute parallel for simd 17618 for (int i = 0; i < 10; ++i) { 17619 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17620 { 17621 #pragma omp single 17622 { 17623 bar(); 17624 } 17625 } 17626 } 17627 #pragma omp target teams distribute parallel for simd 17628 for (int i = 0; i < 10; ++i) { 17629 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17630 for (int i = 0; i < 10; ++i) 17631 ; 17632 } 17633 #pragma omp target teams distribute parallel for simd 17634 for (int i = 0; i < 10; ++i) { 17635 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17636 for (int i = 0; i < 10; ++i) 17637 ; 17638 } 17639 #pragma omp target teams distribute parallel for simd 17640 for (int i = 0; i < 10; ++i) { 17641 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17642 { 17643 bar(); 17644 } 17645 } 17646 #pragma omp target teams distribute parallel for simd 17647 for (int i = 0; i < 10; ++i) { 17648 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17649 { 17650 bar(); 17651 } 17652 } 17653 #pragma omp target teams distribute parallel for simd 17654 for (int i = 0; i < 10; ++i) { 17655 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17656 bar(); 17657 } 17658 #pragma omp target teams distribute parallel for simd 17659 for (int i = 0; i < 10; ++i) { 17660 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17661 bar(); 17662 } 17663 #pragma omp target teams distribute parallel for simd 17664 for (int i = 0; i < 10; ++i) { 17665 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17666 bar(); 17667 } 17668 #pragma omp target teams distribute parallel for simd 17669 for (int i = 0; i < 10; ++i) { 17670 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17671 bar(); 17672 } 17673 #pragma omp target teams distribute parallel for simd 17674 for (int i = 0; i < 10; ++i) { 17675 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17676 bar(); 17677 } 17678 #pragma omp target teams distribute parallel for simd 17679 for (int i = 0; i < 10; ++i) { 17680 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 17681 ++a; 17682 } 17683 #pragma omp target teams distribute parallel for simd 17684 for (int i = 0; i < 10; ++i) { 17685 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17686 ++a; 17687 } 17688 #pragma omp target teams distribute parallel for simd 17689 for (int i = 0; i < 10; ++i) { 17690 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17691 ++a; 17692 } 17693 #pragma omp target teams distribute parallel for simd 17694 for (int i = 0; i < 10; ++i) { 17695 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17696 for (int i = 0; i < 10; ++i) 17697 ; 17698 } 17699 #pragma omp target teams distribute parallel for simd 17700 for (int i = 0; i < 10; ++i) { 17701 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17702 ++a; 17703 } 17704 #pragma omp target teams distribute parallel for simd 17705 for (int i = 0; i < 10; ++i) { 17706 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17707 ++a; 17708 } 17709 #pragma omp target teams distribute parallel for simd 17710 for (int i = 0; i < 10; ++i) { 17711 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17712 ++a; 17713 } 17714 #pragma omp target teams distribute parallel for simd 17715 for (int i = 0; i < 10; ++i) { 17716 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17717 ++a; 17718 } 17719 #pragma omp target teams distribute parallel for simd 17720 for (int i = 0; i < 10; ++i) { 17721 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17722 for (int i = 0; i < 10; ++i) 17723 ++a; 17724 } 17725 #pragma omp target teams distribute parallel for simd 17726 for (int i = 0; i < 10; ++i) { 17727 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17728 for (int i = 0; i < 10; ++i) 17729 ++a; 17730 } 17731 #pragma omp target teams distribute parallel for simd 17732 for (int i = 0; i < 10; ++i) { 17733 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17734 for (int i = 0; i < 10; ++i) 17735 ++a; 17736 } 17737 #pragma omp target teams distribute parallel for simd 17738 for (int i = 0; i < 10; ++i) { 17739 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17740 for (int i = 0; i < 10; ++i) 17741 ++a; 17742 } 17743 #pragma omp target teams distribute parallel for simd 17744 for (int i = 0; i < 10; ++i) { 17745 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17746 for (int i = 0; i < 10; ++i) 17747 ++a; 17748 } 17749 #pragma omp target teams distribute parallel for simd 17750 for (int i = 0; i < 10; ++i) { 17751 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17752 for (int i = 0; i < 10; ++i) 17753 ; 17754 } 17755 #pragma omp target teams distribute parallel for simd 17756 for (int i = 0; i < 10; ++i) { 17757 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17758 a++; 17759 } 17760 #pragma omp target teams distribute parallel for simd 17761 for (int i = 0; i < 10; ++i) { 17762 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17763 for (int i = 0; i < 10; ++i) 17764 ; 17765 } 17766 #pragma omp target teams distribute parallel for simd 17767 for (int i = 0; i < 10; ++i) { 17768 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17769 for (int i = 0; i < 10; ++i) 17770 ; 17771 } 17772 #pragma omp target teams distribute parallel for simd 17773 for (int i = 0; i < 10; ++i) { 17774 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17775 for (int i = 0; i < 10; ++i) 17776 ; 17777 } 17778 #pragma omp target teams distribute parallel for simd 17779 for (int i = 0; i < 10; ++i) { 17780 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17781 for (int i = 0; i < 10; ++i) 17782 ; 17783 } 17784 17785 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 17786 #pragma omp target teams distribute simd // OK 17787 for (int i = 0; i < 10; ++i) 17788 ; 17789 #pragma omp target teams distribute simd 17790 for (int i = 0; i < 10; ++i) { 17791 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17792 for (int i = 0; i < 10; ++i) 17793 ; 17794 } 17795 #pragma omp target teams distribute simd 17796 for (int i = 0; i < 10; ++i) { 17797 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17798 for (int i = 0; i < 10; ++i) 17799 ; 17800 } 17801 #pragma omp target teams distribute simd 17802 for (int i = 0; i < 10; ++i) { 17803 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17804 for (int i = 0; i < 10; ++i) 17805 ; 17806 } 17807 #pragma omp target teams distribute simd 17808 for (int i = 0; i < 10; ++i) { 17809 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17810 for (int i = 0; i < 10; ++i) 17811 ; 17812 } 17813 #pragma omp target teams distribute simd 17814 for (int i = 0; i < 10; ++i) { 17815 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17816 for (int i = 0; i < 10; ++i) 17817 ; 17818 } 17819 #pragma omp target teams distribute simd 17820 for (int i = 0; i < 10; ++i) { 17821 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17822 for (int i = 0; i < 10; ++i) 17823 ; 17824 } 17825 #pragma omp target teams distribute simd 17826 for (int i = 0; i < 10; ++i) { 17827 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17828 { 17829 bar(); 17830 } 17831 } 17832 #pragma omp target teams distribute simd 17833 for (int i = 0; i < 10; ++i) { 17834 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17835 { 17836 bar(); 17837 } 17838 } 17839 #pragma omp target teams distribute simd 17840 for (int i = 0; i < 10; ++i) { 17841 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17842 { 17843 bar(); 17844 } 17845 } 17846 #pragma omp target teams distribute simd 17847 for (int i = 0; i < 10; ++i) { 17848 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17849 { 17850 bar(); 17851 } 17852 } 17853 #pragma omp target teams distribute simd 17854 for (int i = 0; i < 10; ++i) { 17855 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17856 { 17857 bar(); 17858 } 17859 } 17860 #pragma omp target teams distribute simd 17861 for (int i = 0; i < 10; ++i) { 17862 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17863 { 17864 #pragma omp single 17865 { 17866 bar(); 17867 } 17868 } 17869 } 17870 #pragma omp target teams distribute simd 17871 for (int i = 0; i < 10; ++i) { 17872 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17873 for (int i = 0; i < 10; ++i) 17874 ; 17875 } 17876 #pragma omp target teams distribute simd 17877 for (int i = 0; i < 10; ++i) { 17878 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17879 for (int i = 0; i < 10; ++i) 17880 ; 17881 } 17882 #pragma omp target teams distribute simd 17883 for (int i = 0; i < 10; ++i) { 17884 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17885 { 17886 bar(); 17887 } 17888 } 17889 #pragma omp target teams distribute simd 17890 for (int i = 0; i < 10; ++i) { 17891 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17892 { 17893 bar(); 17894 } 17895 } 17896 #pragma omp target teams distribute simd 17897 for (int i = 0; i < 10; ++i) { 17898 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17899 bar(); 17900 } 17901 #pragma omp target teams distribute simd 17902 for (int i = 0; i < 10; ++i) { 17903 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17904 bar(); 17905 } 17906 #pragma omp target teams distribute simd 17907 for (int i = 0; i < 10; ++i) { 17908 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17909 bar(); 17910 } 17911 #pragma omp target teams distribute simd 17912 for (int i = 0; i < 10; ++i) { 17913 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17914 bar(); 17915 } 17916 #pragma omp target teams distribute simd 17917 for (int i = 0; i < 10; ++i) { 17918 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17919 bar(); 17920 } 17921 #pragma omp target teams distribute simd 17922 for (int i = 0; i < 10; ++i) { 17923 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}OK 17924 ++a; 17925 } 17926 #pragma omp target teams distribute simd 17927 for (int i = 0; i < 10; ++i) { 17928 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17929 ++a; 17930 } 17931 #pragma omp target teams distribute simd 17932 for (int i = 0; i < 10; ++i) { 17933 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17934 ++a; 17935 } 17936 #pragma omp target teams distribute simd 17937 for (int i = 0; i < 10; ++i) { 17938 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17939 for (int i = 0; i < 10; ++i) 17940 ; 17941 } 17942 #pragma omp target teams distribute simd 17943 for (int i = 0; i < 10; ++i) { 17944 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17945 ++a; 17946 } 17947 #pragma omp target teams distribute simd 17948 for (int i = 0; i < 10; ++i) { 17949 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17950 ++a; 17951 } 17952 #pragma omp target teams distribute simd 17953 for (int i = 0; i < 10; ++i) { 17954 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17955 ++a; 17956 } 17957 #pragma omp target teams distribute simd 17958 for (int i = 0; i < 10; ++i) { 17959 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17960 ++a; 17961 } 17962 #pragma omp target teams distribute simd 17963 for (int i = 0; i < 10; ++i) { 17964 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17965 for (int i = 0; i < 10; ++i) 17966 ++a; 17967 } 17968 #pragma omp target teams distribute simd 17969 for (int i = 0; i < 10; ++i) { 17970 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17971 for (int i = 0; i < 10; ++i) 17972 ++a; 17973 } 17974 #pragma omp target teams distribute simd 17975 for (int i = 0; i < 10; ++i) { 17976 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17977 for (int i = 0; i < 10; ++i) 17978 ++a; 17979 } 17980 #pragma omp target teams distribute simd 17981 for (int i = 0; i < 10; ++i) { 17982 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17983 for (int i = 0; i < 10; ++i) 17984 ++a; 17985 } 17986 #pragma omp target teams distribute simd 17987 for (int i = 0; i < 10; ++i) { 17988 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17989 for (int i = 0; i < 10; ++i) 17990 ++a; 17991 } 17992 #pragma omp target teams distribute simd 17993 for (int i = 0; i < 10; ++i) { 17994 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17995 for (int i = 0; i < 10; ++i) 17996 ; 17997 } 17998 #pragma omp target teams distribute simd 17999 for (int i = 0; i < 10; ++i) { 18000 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18001 a++; 18002 } 18003 #pragma omp target teams distribute simd 18004 for (int i = 0; i < 10; ++i) { 18005 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18006 for (int i = 0; i < 10; ++i) 18007 ; 18008 } 18009 #pragma omp target teams distribute simd 18010 for (int i = 0; i < 10; ++i) { 18011 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18012 for (int i = 0; i < 10; ++i) 18013 ; 18014 } 18015 #pragma omp target teams distribute simd 18016 for (int i = 0; i < 10; ++i) { 18017 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18018 for (int i = 0; i < 10; ++i) 18019 ; 18020 } 18021 #pragma omp target teams distribute simd 18022 for (int i = 0; i < 10; ++i) { 18023 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18024 for (int i = 0; i < 10; ++i) 18025 ; 18026 } 18027 18028 return foo<int>(); 18029 } 18030 18031