1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -fno-openmp-extensions -verify=expected,omp45,omp45warn,omp %s 2 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fno-openmp-extensions -verify=expected,omp50,omp %s 3 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-extensions -verify=expected,omp50 %s 4 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45,omp -fno-openmp-extensions -Wno-openmp %s 5 // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45,omp -fno-openmp-extensions -Wno-source-uses-openmp %s 6 7 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -fno-openmp-extensions -verify=expected,omp45,omp45warn,omp %s 8 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp50,omp -fno-openmp-extensions %s 9 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 10 11 void bar(); 12 13 template <class T> 14 void foo() { 15 T a = T(); 16 // PARALLEL DIRECTIVE 17 #pragma omp parallel 18 #pragma omp for 19 for (int i = 0; i < 10; ++i) 20 ; 21 #pragma omp parallel 22 #pragma omp simd 23 for (int i = 0; i < 10; ++i) 24 ; 25 #pragma omp parallel 26 #pragma omp for simd 27 for (int i = 0; i < 10; ++i) 28 ; 29 #pragma omp parallel 30 #pragma omp sections 31 { 32 bar(); 33 } 34 #pragma omp parallel 35 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 36 { 37 bar(); 38 } 39 #pragma omp parallel 40 #pragma omp single 41 bar(); 42 43 #pragma omp parallel 44 #pragma omp master 45 { 46 bar(); 47 } 48 #pragma omp parallel 49 #pragma omp critical 50 { 51 bar(); 52 } 53 #pragma omp parallel 54 #pragma omp parallel for 55 for (int i = 0; i < 10; ++i) 56 ; 57 #pragma omp parallel 58 #pragma omp parallel for simd 59 for (int i = 0; i < 10; ++i) 60 ; 61 #pragma omp parallel 62 #pragma omp parallel sections 63 { 64 bar(); 65 } 66 #pragma omp parallel 67 #pragma omp parallel master 68 { 69 bar(); 70 } 71 #pragma omp parallel 72 #pragma omp task 73 { 74 bar(); 75 } 76 #pragma omp parallel 77 { 78 #pragma omp taskyield 79 bar(); 80 } 81 #pragma omp parallel 82 { 83 #pragma omp barrier 84 bar(); 85 } 86 #pragma omp parallel 87 { 88 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 89 bar(); 90 } 91 #pragma omp parallel 92 { 93 #pragma omp taskwait 94 bar(); 95 } 96 #pragma omp parallel 97 { 98 #pragma omp flush 99 bar(); 100 } 101 #pragma omp parallel 102 { 103 #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?}} 104 bar(); 105 } 106 #pragma omp parallel 107 { 108 #pragma omp atomic 109 ++a; 110 } 111 #pragma omp parallel 112 { 113 #pragma omp target 114 ++a; 115 } 116 #pragma omp parallel 117 { 118 #pragma omp target parallel 119 ++a; 120 } 121 #pragma omp parallel 122 { 123 #pragma omp target parallel for 124 for (int i = 0; i < 10; ++i) 125 ; 126 } 127 #pragma omp parallel 128 { 129 #pragma omp target enter data map(to: a) 130 ++a; 131 } 132 #pragma omp parallel 133 { 134 #pragma omp target exit data map(from: a) 135 ++a; 136 } 137 #pragma omp parallel 138 { 139 #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?}} 140 ++a; 141 } 142 #pragma omp parallel 143 { 144 #pragma omp taskloop 145 for (int i = 0; i < 10; ++i) 146 ++a; 147 } 148 #pragma omp parallel 149 { 150 #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?}} 151 for (int i = 0; i < 10; ++i) 152 ; 153 } 154 #pragma omp parallel 155 { 156 #pragma omp target update to(a) 157 } 158 #pragma omp parallel 159 { 160 #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?}} 161 for (int i = 0; i < 10; ++i) 162 ; 163 } 164 #pragma omp parallel 165 { 166 #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?}} 167 for (int i = 0; i < 10; ++i) 168 ; 169 } 170 #pragma omp parallel 171 { 172 #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?}} 173 for (int i = 0; i < 10; ++i) 174 ; 175 } 176 #pragma omp parallel 177 { 178 #pragma omp target simd // OK 179 for (int i = 0; i < 10; ++i) 180 ; 181 } 182 #pragma omp parallel 183 { 184 #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?}} 185 for (int i = 0; i < 10; ++i) 186 ; 187 } 188 #pragma omp parallel 189 { 190 #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?}} 191 for (int i = 0; i < 10; ++i) 192 ; 193 } 194 #pragma omp parallel 195 { 196 #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?}} 197 for (int i = 0; i < 10; ++i) 198 ; 199 } 200 #pragma omp parallel 201 { 202 #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?}} 203 for (int i = 0; i < 10; ++i) 204 ; 205 } 206 #pragma omp parallel 207 { 208 #pragma omp target teams // OK 209 ++a; 210 } 211 #pragma omp parallel 212 { 213 #pragma omp target teams distribute // OK 214 for (int i = 0; i < 10; ++i) 215 ; 216 } 217 #pragma omp parallel 218 { 219 #pragma omp target teams distribute parallel for // OK 220 for (int i = 0; i < 10; ++i) 221 ; 222 } 223 #pragma omp parallel 224 { 225 #pragma omp target teams distribute parallel for simd // OK 226 for (int i = 0; i < 10; ++i) 227 ; 228 } 229 #pragma omp parallel 230 { 231 #pragma omp target teams distribute simd // OK 232 for (int i = 0; i < 10; ++i) 233 ; 234 } 235 236 // SIMD DIRECTIVE 237 #pragma omp simd 238 for (int i = 0; i < 10; ++i) { 239 #pragma omp for // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{OpenMP constructs may not be nested inside a simd region except for ordered simd, simd, scan, or atomic directive}} 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 simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 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 for simd // 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 parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 258 for (int i = 0; i < 10; ++i) 259 ; 260 } 261 #pragma omp simd 262 for (int i = 0; i < 10; ++i) { 263 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 264 { 265 bar(); 266 } 267 } 268 #pragma omp simd 269 for (int i = 0; i < 10; ++i) { 270 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 271 { 272 bar(); 273 } 274 } 275 #pragma omp simd 276 for (int i = 0; i < 10; ++i) { 277 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 278 { 279 bar(); 280 } 281 } 282 #pragma omp simd 283 for (int i = 0; i < 10; ++i) { 284 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 285 { 286 bar(); 287 } 288 } 289 #pragma omp simd 290 for (int i = 0; i < 10; ++i) { 291 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 292 { 293 bar(); 294 } 295 } 296 #pragma omp simd 297 for (int i = 0; i < 10; ++i) { 298 #pragma omp parallel for // 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 for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 305 for (int i = 0; i < 10; ++i) 306 ; 307 } 308 #pragma omp simd 309 for (int i = 0; i < 10; ++i) { 310 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 311 { 312 bar(); 313 } 314 } 315 #pragma omp simd 316 for (int i = 0; i < 10; ++i) { 317 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 318 { 319 bar(); 320 } 321 } 322 #pragma omp simd 323 for (int i = 0; i < 10; ++i) { 324 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 325 { 326 bar(); 327 } 328 } 329 #pragma omp simd 330 for (int i = 0; i < 10; ++i) { 331 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 332 bar(); 333 } 334 #pragma omp simd 335 for (int i = 0; i < 10; ++i) { 336 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 337 bar(); 338 } 339 #pragma omp simd 340 for (int i = 0; i < 10; ++i) { 341 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 342 bar(); 343 } 344 #pragma omp simd 345 for (int i = 0; i < 10; ++i) { 346 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 347 bar(); 348 } 349 #pragma omp simd 350 for (int i = 0; i < 10; ++i) { 351 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 352 bar(); 353 } 354 #pragma omp simd 355 for (int i = 0; i < 10; ++i) { 356 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 357 bar(); 358 } 359 #pragma omp simd 360 for (int i = 0; i < 10; ++i) { 361 #pragma omp ordered simd // OK 362 bar(); 363 } 364 #pragma omp simd 365 for (int i = 0; i < 10; ++i) { 366 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 367 bar(); 368 } 369 #pragma omp simd 370 for (int i = 0; i < 10; ++i) { 371 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 372 ++a; 373 } 374 #pragma omp simd 375 for (int i = 0; i < 10; ++i) { 376 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 377 ++a; 378 } 379 #pragma omp simd 380 for (int i = 0; i < 10; ++i) { 381 #pragma omp target parallel // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 387 for (int i = 0; i < 10; ++i) 388 ; 389 } 390 #pragma omp simd 391 for (int i = 0; i < 10; ++i) { 392 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 393 ++a; 394 } 395 #pragma omp simd 396 for (int i = 0; i < 10; ++i) { 397 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 398 ++a; 399 } 400 #pragma omp simd 401 for (int i = 0; i < 10; ++i) { 402 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 403 ++a; 404 } 405 #pragma omp simd 406 for (int i = 0; i < 10; ++i) { 407 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 408 for (int i = 0; i < 10; ++i) 409 ++a; 410 } 411 #pragma omp simd 412 for (int i = 0; i < 10; ++i) { 413 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 414 for (int j = 0; j < 10; ++j) 415 ; 416 } 417 #pragma omp simd 418 for (int i = 0; i < 10; ++i) { 419 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 420 } 421 #pragma omp simd 422 for (int i = 0; i < 10; ++i) { 423 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 424 for (int j = 0; j < 10; ++j) 425 ; 426 } 427 #pragma omp simd 428 for (int i = 0; i < 10; ++i) { 429 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 430 for (int j = 0; j < 10; ++j) 431 ; 432 } 433 #pragma omp simd 434 for (int i = 0; i < 10; ++i) { 435 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 436 for (int j = 0; j < 10; ++j) 437 ; 438 } 439 #pragma omp simd 440 for (int i = 0; i < 10; ++i) { 441 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 442 for (int j = 0; j < 10; ++j) 443 ; 444 } 445 #pragma omp simd 446 for (int i = 0; i < 10; ++i) { 447 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 448 for (int j = 0; j < 10; ++j) 449 ; 450 } 451 #pragma omp simd 452 for (int i = 0; i < 10; ++i) { 453 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 454 for (int j = 0; j < 10; ++j) 455 ; 456 } 457 #pragma omp simd 458 for (int i = 0; i < 10; ++i) { 459 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 460 for (int j = 0; j < 10; ++j) 461 ; 462 } 463 #pragma omp simd 464 for (int i = 0; i < 10; ++i) { 465 #pragma omp teams distribute parallel for // 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 // expected-error {{OpenMP constructs may not be nested inside a simd region}} 472 ++a; 473 } 474 #pragma omp simd 475 for (int i = 0; i < 10; ++i) { 476 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 477 for (int j = 0; j < 10; ++j) 478 ; 479 } 480 #pragma omp simd 481 for (int i = 0; i < 10; ++i) { 482 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 483 for (int j = 0; j < 10; ++j) 484 ; 485 } 486 #pragma omp simd 487 for (int i = 0; i < 10; ++i) { 488 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 489 for (int j = 0; j < 10; ++j) 490 ; 491 } 492 #pragma omp simd 493 for (int i = 0; i < 10; ++i) { 494 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 495 for (int j = 0; j < 10; ++j) 496 ; 497 } 498 499 // FOR DIRECTIVE 500 #pragma omp for 501 for (int i = 0; i < 10; ++i) { 502 #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?}} 503 for (int i = 0; i < 10; ++i) 504 ; 505 } 506 #pragma omp for 507 for (int i = 0; i < 10; ++i) { 508 #pragma omp simd 509 for (int i = 0; i < 10; ++i) 510 ; 511 } 512 #pragma omp for 513 for (int i = 0; i < 10; ++i) { 514 #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?}} 515 for (int i = 0; i < 10; ++i) 516 ; 517 } 518 #pragma omp for 519 for (int i = 0; i < 10; ++i) { 520 #pragma omp parallel 521 for (int i = 0; i < 10; ++i) 522 ; 523 } 524 #pragma omp for 525 for (int i = 0; i < 10; ++i) { 526 #pragma omp sections // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 527 { 528 bar(); 529 } 530 } 531 #pragma omp for 532 for (int i = 0; i < 10; ++i) { 533 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 534 { 535 bar(); 536 } 537 } 538 #pragma omp for 539 for (int i = 0; i < 10; ++i) { 540 #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?}} 541 { 542 bar(); 543 } 544 } 545 546 #pragma omp for 547 for (int i = 0; i < 10; ++i) { 548 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 549 { 550 bar(); 551 } 552 } 553 #pragma omp for 554 for (int i = 0; i < 10; ++i) { 555 #pragma omp critical 556 { 557 bar(); 558 } 559 } 560 #pragma omp for 561 for (int i = 0; i < 10; ++i) { 562 #pragma omp parallel 563 { 564 #pragma omp single // OK 565 { 566 bar(); 567 } 568 #pragma omp for // OK 569 for (int i = 0; i < 10; ++i) 570 ; 571 #pragma omp sections // OK 572 { 573 bar(); 574 } 575 } 576 } 577 #pragma omp for 578 for (int i = 0; i < 10; ++i) { 579 #pragma omp parallel for 580 for (int i = 0; i < 10; ++i) 581 ; 582 } 583 #pragma omp for 584 for (int i = 0; i < 10; ++i) { 585 #pragma omp parallel for simd 586 for (int i = 0; i < 10; ++i) 587 ; 588 } 589 #pragma omp for 590 for (int i = 0; i < 10; ++i) { 591 #pragma omp parallel master 592 { 593 bar(); 594 } 595 } 596 #pragma omp for 597 for (int i = 0; i < 10; ++i) { 598 #pragma omp parallel sections 599 { 600 bar(); 601 } 602 } 603 #pragma omp for 604 for (int i = 0; i < 10; ++i) { 605 #pragma omp task 606 { 607 bar(); 608 } 609 } 610 #pragma omp for 611 for (int i = 0; i < 10; ++i) { 612 #pragma omp taskyield 613 bar(); 614 } 615 #pragma omp for 616 for (int i = 0; i < 10; ++i) { 617 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 618 bar(); 619 } 620 #pragma omp for 621 for (int i = 0; i < 10; ++i) { 622 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 623 bar(); 624 } 625 #pragma omp for 626 for (int i = 0; i < 10; ++i) { 627 #pragma omp taskwait 628 bar(); 629 } 630 #pragma omp for 631 for (int i = 0; i < 10; ++i) { 632 #pragma omp flush 633 bar(); 634 } 635 #pragma omp for 636 for (int i = 0; i < 10; ++i) { 637 #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?}} 638 bar(); 639 } 640 #pragma omp for ordered 641 for (int i = 0; i < 10; ++i) { 642 #pragma omp ordered // OK 643 bar(); 644 } 645 #pragma omp for 646 for (int i = 0; i < 10; ++i) { 647 #pragma omp atomic 648 ++a; 649 } 650 #pragma omp for 651 for (int i = 0; i < 10; ++i) { 652 #pragma omp target 653 ++a; 654 } 655 #pragma omp for 656 for (int i = 0; i < 10; ++i) { 657 #pragma omp target parallel 658 ++a; 659 } 660 #pragma omp for 661 for (int i = 0; i < 10; ++i) { 662 #pragma omp target parallel for 663 for (int i = 0; i < 10; ++i) 664 ; 665 } 666 #pragma omp for 667 for (int i = 0; i < 10; ++i) { 668 #pragma omp target enter data map(to: a) 669 ++a; 670 } 671 #pragma omp for 672 for (int i = 0; i < 10; ++i) { 673 #pragma omp target exit data map(from: a) 674 ++a; 675 } 676 #pragma omp for 677 for (int i = 0; i < 10; ++i) { 678 #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?}} 679 ++a; 680 } 681 #pragma omp for 682 for (int i = 0; i < 10; ++i) { 683 #pragma omp taskloop 684 for (int i = 0; i < 10; ++i) 685 ++a; 686 } 687 #pragma omp for 688 for (int i = 0; i < 10; ++i) { 689 #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?}} 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 target update to(a) 696 } 697 #pragma omp for 698 for (int i = 0; i < 10; ++i) { 699 #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?}} 700 for (int j = 0; j < 10; ++j) 701 ; 702 } 703 #pragma omp for 704 for (int i = 0; i < 10; ++i) { 705 #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?}} 706 for (int j = 0; j < 10; ++j) 707 ; 708 } 709 #pragma omp for 710 for (int i = 0; i < 10; ++i) { 711 #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?}} 712 for (int j = 0; j < 10; ++j) 713 ; 714 } 715 #pragma omp for 716 for (int i = 0; i < 10; ++i) { 717 #pragma omp target simd // OK 718 for (int j = 0; j < 10; ++j) 719 ; 720 } 721 #pragma omp for 722 for (int i = 0; i < 10; ++i) { 723 #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?}} 724 for (int j = 0; j < 10; ++j) 725 ; 726 } 727 #pragma omp for 728 for (int i = 0; i < 10; ++i) { 729 #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?}} 730 for (int j = 0; j < 10; ++j) 731 ; 732 } 733 #pragma omp for 734 for (int i = 0; i < 10; ++i) { 735 #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?}} 736 for (int j = 0; j < 10; ++j) 737 ; 738 } 739 #pragma omp for 740 for (int i = 0; i < 10; ++i) { 741 #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?}} 742 for (int j = 0; j < 10; ++j) 743 ; 744 } 745 #pragma omp for 746 for (int i = 0; i < 10; ++i) { 747 #pragma omp target teams // OK 748 ++a; 749 } 750 #pragma omp for 751 for (int i = 0; i < 10; ++i) { 752 #pragma omp target teams distribute // OK 753 for (int j = 0; j < 10; ++j) 754 ; 755 } 756 #pragma omp for 757 for (int i = 0; i < 10; ++i) { 758 #pragma omp target teams distribute parallel for // OK 759 for (int j = 0; j < 10; ++j) 760 ; 761 } 762 #pragma omp for 763 for (int i = 0; i < 10; ++i) { 764 #pragma omp target teams distribute parallel for simd // OK 765 for (int j = 0; j < 10; ++j) 766 ; 767 } 768 #pragma omp for 769 for (int i = 0; i < 10; ++i) { 770 #pragma omp target teams distribute simd // OK 771 for (int j = 0; j < 10; ++j) 772 ; 773 } 774 775 // FOR SIMD DIRECTIVE 776 #pragma omp for simd 777 for (int i = 0; i < 10; ++i) { 778 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 779 for (int i = 0; i < 10; ++i) 780 ; 781 } 782 #pragma omp for simd 783 for (int i = 0; i < 10; ++i) { 784 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 785 for (int i = 0; i < 10; ++i) 786 ; 787 } 788 #pragma omp for simd 789 for (int i = 0; i < 10; ++i) { 790 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 791 for (int i = 0; i < 10; ++i) 792 ; 793 } 794 #pragma omp for simd 795 for (int i = 0; i < 10; ++i) { 796 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 797 for (int i = 0; i < 10; ++i) 798 ; 799 } 800 #pragma omp for simd 801 for (int i = 0; i < 10; ++i) { 802 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 803 { 804 bar(); 805 } 806 } 807 #pragma omp for simd 808 for (int i = 0; i < 10; ++i) { 809 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 810 { 811 bar(); 812 } 813 } 814 #pragma omp for simd 815 for (int i = 0; i < 10; ++i) { 816 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 817 { 818 bar(); 819 } 820 } 821 #pragma omp for simd 822 for (int i = 0; i < 10; ++i) { 823 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 824 { 825 bar(); 826 } 827 } 828 #pragma omp for simd 829 for (int i = 0; i < 10; ++i) { 830 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 831 { 832 bar(); 833 } 834 } 835 #pragma omp for simd 836 for (int i = 0; i < 10; ++i) { 837 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 838 for (int i = 0; i < 10; ++i) 839 ; 840 } 841 #pragma omp for simd 842 for (int i = 0; i < 10; ++i) { 843 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 844 for (int i = 0; i < 10; ++i) 845 ; 846 } 847 #pragma omp for simd 848 for (int i = 0; i < 10; ++i) { 849 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 850 { 851 bar(); 852 } 853 } 854 #pragma omp for simd 855 for (int i = 0; i < 10; ++i) { 856 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 857 { 858 bar(); 859 } 860 } 861 #pragma omp for simd 862 for (int i = 0; i < 10; ++i) { 863 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 864 { 865 bar(); 866 } 867 } 868 #pragma omp for simd 869 for (int i = 0; i < 10; ++i) { 870 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 871 bar(); 872 } 873 #pragma omp for simd 874 for (int i = 0; i < 10; ++i) { 875 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 876 bar(); 877 } 878 #pragma omp for simd 879 for (int i = 0; i < 10; ++i) { 880 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 881 bar(); 882 } 883 #pragma omp for simd 884 for (int i = 0; i < 10; ++i) { 885 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 886 bar(); 887 } 888 #pragma omp for simd 889 for (int i = 0; i < 10; ++i) { 890 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 891 bar(); 892 } 893 #pragma omp for simd 894 for (int i = 0; i < 10; ++i) { 895 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 896 bar(); 897 } 898 #pragma omp for simd 899 for (int i = 0; i < 10; ++i) { 900 #pragma omp ordered simd // OK 901 bar(); 902 } 903 #pragma omp for simd 904 for (int i = 0; i < 10; ++i) { 905 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 906 bar(); 907 } 908 #pragma omp for simd 909 for (int i = 0; i < 10; ++i) { 910 #pragma omp atomic // omp45-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 // 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 target parallel // 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 target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 926 for (int i = 0; i < 10; ++i) 927 ; 928 } 929 #pragma omp for simd 930 for (int i = 0; i < 10; ++i) { 931 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 932 ++a; 933 } 934 #pragma omp for simd 935 for (int i = 0; i < 10; ++i) { 936 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 937 ++a; 938 } 939 #pragma omp for simd 940 for (int i = 0; i < 10; ++i) { 941 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 942 ++a; 943 } 944 #pragma omp for simd 945 for (int i = 0; i < 10; ++i) { 946 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 947 for (int i = 0; i < 10; ++i) 948 ++a; 949 } 950 #pragma omp for simd 951 for (int i = 0; i < 10; ++i) { 952 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 953 for (int j = 0; j < 10; ++j) 954 ; 955 } 956 #pragma omp for simd 957 for (int i = 0; i < 10; ++i) { 958 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 959 bar(); 960 } 961 #pragma omp for simd 962 for (int i = 0; i < 10; ++i) { 963 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 964 for (int j = 0; j < 10; ++j) 965 ; 966 } 967 #pragma omp for simd 968 for (int i = 0; i < 10; ++i) { 969 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 970 for (int j = 0; j < 10; ++j) 971 ; 972 } 973 #pragma omp for simd 974 for (int i = 0; i < 10; ++i) { 975 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 976 for (int j = 0; j < 10; ++j) 977 ; 978 } 979 #pragma omp for simd 980 for (int i = 0; i < 10; ++i) { 981 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 982 for (int j = 0; j < 10; ++j) 983 ; 984 } 985 #pragma omp for simd 986 for (int i = 0; i < 10; ++i) { 987 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 988 for (int j = 0; j < 10; ++j) 989 ; 990 } 991 #pragma omp for simd 992 for (int i = 0; i < 10; ++i) { 993 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 994 for (int j = 0; j < 10; ++j) 995 ; 996 } 997 #pragma omp for simd 998 for (int i = 0; i < 10; ++i) { 999 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1000 for (int j = 0; j < 10; ++j) 1001 ; 1002 } 1003 #pragma omp for simd 1004 for (int i = 0; i < 10; ++i) { 1005 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1006 for (int j = 0; j < 10; ++j) 1007 ; 1008 } 1009 #pragma omp for simd 1010 for (int i = 0; i < 10; ++i) { 1011 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1012 a++; 1013 } 1014 #pragma omp for simd 1015 for (int i = 0; i < 10; ++i) { 1016 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1017 for (int j = 0; j < 10; ++j) 1018 ; 1019 } 1020 #pragma omp for simd 1021 for (int i = 0; i < 10; ++i) { 1022 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1023 for (int j = 0; j < 10; ++j) 1024 ; 1025 } 1026 #pragma omp for simd 1027 for (int i = 0; i < 10; ++i) { 1028 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1029 for (int j = 0; j < 10; ++j) 1030 ; 1031 } 1032 #pragma omp for simd 1033 for (int i = 0; i < 10; ++i) { 1034 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 1035 for (int j = 0; j < 10; ++j) 1036 ; 1037 } 1038 1039 // SECTIONS DIRECTIVE 1040 #pragma omp sections 1041 { 1042 #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?}} 1043 for (int i = 0; i < 10; ++i) 1044 ; 1045 } 1046 #pragma omp sections 1047 { 1048 #pragma omp simd 1049 for (int i = 0; i < 10; ++i) 1050 ; 1051 } 1052 #pragma omp sections 1053 { 1054 #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?}} 1055 for (int i = 0; i < 10; ++i) 1056 ; 1057 } 1058 #pragma omp sections 1059 { 1060 #pragma omp parallel 1061 for (int i = 0; i < 10; ++i) 1062 ; 1063 } 1064 #pragma omp sections 1065 { 1066 #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?}} 1067 { 1068 bar(); 1069 } 1070 } 1071 #pragma omp sections 1072 { 1073 #pragma omp section 1074 { 1075 bar(); 1076 } 1077 } 1078 #pragma omp sections 1079 { 1080 #pragma omp parallel 1081 { 1082 #pragma omp single // OK 1083 { 1084 bar(); 1085 } 1086 #pragma omp for // OK 1087 for (int i = 0; i < 10; ++i) 1088 ; 1089 #pragma omp sections // OK 1090 { 1091 bar(); 1092 } 1093 } 1094 } 1095 #pragma omp sections 1096 { 1097 #pragma omp parallel master 1098 { 1099 bar(); 1100 } 1101 } 1102 #pragma omp sections 1103 { 1104 #pragma omp parallel 1105 { 1106 #pragma omp master // OK 1107 { 1108 bar(); 1109 } 1110 #pragma omp for // OK 1111 for (int i = 0; i < 10; ++i) 1112 ; 1113 #pragma omp master // OK 1114 { 1115 bar(); 1116 } 1117 } 1118 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1119 bar(); 1120 } 1121 #pragma omp sections 1122 { 1123 #pragma omp parallel 1124 { 1125 #pragma omp critical(A) // OK 1126 { 1127 bar(); 1128 } 1129 #pragma omp for // OK 1130 for (int i = 0; i < 10; ++i) 1131 ; 1132 #pragma omp critical // OK 1133 { 1134 bar(); 1135 } 1136 } 1137 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1138 bar(); 1139 } 1140 #pragma omp sections 1141 { 1142 #pragma omp parallel for 1143 for (int i = 0; i < 10; ++i) 1144 ; 1145 } 1146 #pragma omp sections 1147 { 1148 #pragma omp parallel for simd 1149 for (int i = 0; i < 10; ++i) 1150 ; 1151 } 1152 #pragma omp sections 1153 { 1154 #pragma omp parallel sections 1155 { 1156 bar(); 1157 } 1158 } 1159 #pragma omp sections 1160 { 1161 #pragma omp task 1162 { 1163 bar(); 1164 } 1165 } 1166 #pragma omp sections 1167 { 1168 #pragma omp taskyield 1169 } 1170 #pragma omp sections 1171 { 1172 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1173 } 1174 #pragma omp sections 1175 { 1176 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}} 1177 } 1178 #pragma omp sections 1179 { 1180 #pragma omp taskwait 1181 } 1182 #pragma omp sections 1183 { 1184 #pragma omp flush 1185 } 1186 #pragma omp sections 1187 { 1188 #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?}} 1189 bar(); 1190 } 1191 #pragma omp sections 1192 { 1193 #pragma omp atomic 1194 ++a; 1195 } 1196 #pragma omp sections 1197 { 1198 #pragma omp target 1199 ++a; 1200 } 1201 #pragma omp sections 1202 { 1203 #pragma omp target parallel 1204 ++a; 1205 } 1206 #pragma omp sections 1207 { 1208 #pragma omp target parallel for 1209 for (int i = 0; i < 10; ++i) 1210 ; 1211 } 1212 #pragma omp sections 1213 { 1214 #pragma omp target enter data map(to: a) 1215 } 1216 #pragma omp sections 1217 { 1218 #pragma omp target exit data map(from: a) 1219 } 1220 #pragma omp sections 1221 { 1222 #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?}} 1223 ++a; 1224 } 1225 #pragma omp sections 1226 { 1227 #pragma omp taskloop 1228 for (int i = 0; i < 10; ++i) 1229 ++a; 1230 } 1231 #pragma omp sections 1232 { 1233 #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?}} 1234 for (int i = 0; i < 10; ++i) 1235 ; 1236 } 1237 #pragma omp sections 1238 { 1239 #pragma omp target update to(a) 1240 } 1241 #pragma omp sections 1242 { 1243 #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?}} 1244 for (int i = 0; i < 10; ++i) 1245 ; 1246 } 1247 #pragma omp sections 1248 { 1249 #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?}} 1250 for (int i = 0; i < 10; ++i) 1251 ; 1252 } 1253 #pragma omp sections 1254 { 1255 #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?}} 1256 for (int i = 0; i < 10; ++i) 1257 ; 1258 } 1259 #pragma omp sections 1260 { 1261 #pragma omp target simd // OK 1262 for (int i = 0; i < 10; ++i) 1263 ; 1264 } 1265 #pragma omp sections 1266 { 1267 #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?}} 1268 for (int i = 0; i < 10; ++i) 1269 ; 1270 } 1271 #pragma omp sections 1272 { 1273 #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?}} 1274 for (int i = 0; i < 10; ++i) 1275 ; 1276 } 1277 #pragma omp sections 1278 { 1279 #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?}} 1280 for (int i = 0; i < 10; ++i) 1281 ; 1282 } 1283 #pragma omp sections 1284 { 1285 #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?}} 1286 for (int i = 0; i < 10; ++i) 1287 ; 1288 } 1289 #pragma omp sections 1290 { 1291 #pragma omp target teams // OK 1292 ++a; 1293 } 1294 #pragma omp sections 1295 { 1296 #pragma omp target teams distribute // OK 1297 for (int i = 0; i < 10; ++i) 1298 ; 1299 } 1300 #pragma omp sections 1301 { 1302 #pragma omp target teams distribute parallel for // OK 1303 for (int i = 0; i < 10; ++i) 1304 ; 1305 } 1306 #pragma omp sections 1307 { 1308 #pragma omp target teams distribute parallel for simd // OK 1309 for (int i = 0; i < 10; ++i) 1310 ; 1311 } 1312 #pragma omp sections 1313 { 1314 #pragma omp target teams distribute simd // OK 1315 for (int i = 0; i < 10; ++i) 1316 ; 1317 } 1318 1319 // SECTION DIRECTIVE 1320 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1321 { 1322 bar(); 1323 } 1324 #pragma omp sections 1325 { 1326 #pragma omp section 1327 { 1328 #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?}} 1329 for (int i = 0; i < 10; ++i) 1330 ; 1331 } 1332 } 1333 #pragma omp sections 1334 { 1335 #pragma omp section 1336 { 1337 #pragma omp simd 1338 for (int i = 0; i < 10; ++i) 1339 ; 1340 } 1341 } 1342 #pragma omp sections 1343 { 1344 #pragma omp section 1345 { 1346 #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?}} 1347 for (int i = 0; i < 10; ++i) 1348 ; 1349 } 1350 } 1351 #pragma omp sections 1352 { 1353 #pragma omp section 1354 { 1355 #pragma omp parallel 1356 for (int i = 0; i < 10; ++i) 1357 ; 1358 } 1359 } 1360 #pragma omp sections 1361 { 1362 #pragma omp section 1363 { 1364 #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?}} 1365 { 1366 bar(); 1367 } 1368 } 1369 } 1370 #pragma omp sections 1371 { 1372 #pragma omp section 1373 { 1374 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1375 { 1376 bar(); 1377 } 1378 } 1379 } 1380 #pragma omp sections 1381 { 1382 #pragma omp section 1383 { 1384 #pragma omp parallel master 1385 bar(); 1386 #pragma omp critical 1387 bar(); 1388 } 1389 } 1390 #pragma omp sections 1391 { 1392 #pragma omp section 1393 { 1394 #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?}} 1395 bar(); 1396 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1397 bar(); 1398 #pragma omp critical 1399 bar(); 1400 } 1401 } 1402 #pragma omp sections 1403 { 1404 #pragma omp section 1405 { 1406 #pragma omp parallel 1407 { 1408 #pragma omp single // OK 1409 { 1410 bar(); 1411 } 1412 #pragma omp for // OK 1413 for (int i = 0; i < 10; ++i) 1414 ; 1415 #pragma omp for simd // OK 1416 for (int i = 0; i < 10; ++i) 1417 ; 1418 #pragma omp sections // OK 1419 { 1420 bar(); 1421 } 1422 } 1423 } 1424 } 1425 #pragma omp sections 1426 { 1427 #pragma omp section 1428 { 1429 #pragma omp parallel for 1430 for (int i = 0; i < 10; ++i) 1431 ; 1432 } 1433 } 1434 #pragma omp sections 1435 { 1436 #pragma omp section 1437 { 1438 #pragma omp parallel for simd 1439 for (int i = 0; i < 10; ++i) 1440 ; 1441 } 1442 } 1443 #pragma omp sections 1444 { 1445 #pragma omp section 1446 { 1447 #pragma omp parallel sections 1448 { 1449 bar(); 1450 } 1451 } 1452 } 1453 #pragma omp sections 1454 { 1455 #pragma omp section 1456 { 1457 #pragma omp task 1458 { 1459 bar(); 1460 } 1461 } 1462 } 1463 #pragma omp sections 1464 { 1465 #pragma omp section 1466 { 1467 #pragma omp taskyield 1468 bar(); 1469 } 1470 } 1471 #pragma omp sections 1472 { 1473 #pragma omp section 1474 { 1475 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1476 bar(); 1477 } 1478 } 1479 #pragma omp sections 1480 { 1481 #pragma omp section 1482 { 1483 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}} 1484 bar(); 1485 } 1486 } 1487 #pragma omp sections 1488 { 1489 #pragma omp section 1490 { 1491 #pragma omp taskwait 1492 bar(); 1493 } 1494 } 1495 #pragma omp sections 1496 { 1497 #pragma omp section 1498 { 1499 #pragma omp flush 1500 bar(); 1501 } 1502 } 1503 #pragma omp sections 1504 { 1505 #pragma omp section 1506 { 1507 #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?}} 1508 bar(); 1509 } 1510 } 1511 #pragma omp sections 1512 { 1513 #pragma omp section 1514 #pragma omp atomic 1515 ++a; 1516 } 1517 #pragma omp sections 1518 { 1519 #pragma omp section 1520 #pragma omp target 1521 ++a; 1522 } 1523 #pragma omp sections 1524 { 1525 #pragma omp section 1526 #pragma omp target parallel 1527 ++a; 1528 } 1529 #pragma omp sections 1530 { 1531 #pragma omp section 1532 { 1533 #pragma omp target parallel for 1534 for (int i = 0; i < 10; ++i) 1535 ; 1536 } 1537 } 1538 #pragma omp sections 1539 { 1540 #pragma omp section 1541 { 1542 #pragma omp target enter data map(to: a) 1543 ++a; 1544 } 1545 } 1546 #pragma omp sections 1547 { 1548 #pragma omp section 1549 { 1550 #pragma omp target exit data map(from: a) 1551 ++a; 1552 } 1553 } 1554 #pragma omp sections 1555 { 1556 #pragma omp section 1557 #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?}} 1558 ++a; 1559 } 1560 #pragma omp sections 1561 { 1562 #pragma omp section 1563 #pragma omp taskloop 1564 for (int i = 0; i < 10; ++i) 1565 ++a; 1566 } 1567 #pragma omp sections 1568 { 1569 #pragma omp section 1570 #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?}} 1571 for (int i = 0; i < 10; ++i) 1572 ; 1573 } 1574 #pragma omp sections 1575 { 1576 #pragma omp section 1577 { 1578 bar(); 1579 #pragma omp target update to(a) 1580 } 1581 } 1582 #pragma omp sections 1583 { 1584 #pragma omp section 1585 #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?}} 1586 for (int i = 0; i < 10; ++i) 1587 ; 1588 } 1589 #pragma omp sections 1590 { 1591 #pragma omp section 1592 #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?}} 1593 for (int i = 0; i < 10; ++i) 1594 ; 1595 } 1596 #pragma omp sections 1597 { 1598 #pragma omp section 1599 #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?}} 1600 for (int i = 0; i < 10; ++i) 1601 ; 1602 } 1603 #pragma omp sections 1604 { 1605 #pragma omp section 1606 #pragma omp target simd // OK 1607 for (int i = 0; i < 10; ++i) 1608 ; 1609 } 1610 #pragma omp sections 1611 { 1612 #pragma omp section 1613 #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?}} 1614 for (int i = 0; i < 10; ++i) 1615 ; 1616 } 1617 #pragma omp sections 1618 { 1619 #pragma omp section 1620 #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?}} 1621 for (int i = 0; i < 10; ++i) 1622 ; 1623 } 1624 #pragma omp sections 1625 { 1626 #pragma omp section 1627 #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?}} 1628 for (int i = 0; i < 10; ++i) 1629 ; 1630 } 1631 #pragma omp sections 1632 { 1633 #pragma omp section 1634 #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?}} 1635 for (int i = 0; i < 10; ++i) 1636 ; 1637 } 1638 #pragma omp sections 1639 { 1640 #pragma omp section 1641 #pragma omp target teams // OK 1642 ++a; 1643 } 1644 #pragma omp sections 1645 { 1646 #pragma omp section 1647 #pragma omp target teams distribute // OK 1648 for (int i = 0; i < 10; ++i) 1649 ; 1650 } 1651 #pragma omp sections 1652 { 1653 #pragma omp section 1654 #pragma omp target teams distribute parallel for // OK 1655 for (int i = 0; i < 10; ++i) 1656 ; 1657 } 1658 #pragma omp sections 1659 { 1660 #pragma omp section 1661 #pragma omp target teams distribute parallel for simd // OK 1662 for (int i = 0; i < 10; ++i) 1663 ; 1664 } 1665 #pragma omp sections 1666 { 1667 #pragma omp section 1668 #pragma omp target teams distribute simd // OK 1669 for (int i = 0; i < 10; ++i) 1670 ; 1671 } 1672 1673 // SINGLE DIRECTIVE 1674 #pragma omp single 1675 { 1676 #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?}} 1677 for (int i = 0; i < 10; ++i) 1678 ; 1679 } 1680 #pragma omp single 1681 { 1682 #pragma omp simd 1683 for (int i = 0; i < 10; ++i) 1684 ; 1685 } 1686 #pragma omp single 1687 { 1688 #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?}} 1689 for (int i = 0; i < 10; ++i) 1690 ; 1691 } 1692 #pragma omp single 1693 { 1694 #pragma omp parallel 1695 for (int i = 0; i < 10; ++i) 1696 ; 1697 } 1698 #pragma omp single 1699 { 1700 #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?}} 1701 { 1702 bar(); 1703 } 1704 } 1705 #pragma omp single 1706 { 1707 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1708 { 1709 bar(); 1710 } 1711 } 1712 #pragma omp single 1713 { 1714 #pragma omp parallel master 1715 { 1716 bar(); 1717 } 1718 } 1719 #pragma omp single 1720 { 1721 #pragma omp critical 1722 { 1723 bar(); 1724 } 1725 } 1726 #pragma omp single 1727 { 1728 #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?}} 1729 { 1730 bar(); 1731 } 1732 } 1733 #pragma omp single 1734 { 1735 #pragma omp parallel 1736 { 1737 #pragma omp single // OK 1738 { 1739 bar(); 1740 } 1741 #pragma omp for // OK 1742 for (int i = 0; i < 10; ++i) 1743 ; 1744 #pragma omp for simd // OK 1745 for (int i = 0; i < 10; ++i) 1746 ; 1747 #pragma omp sections // OK 1748 { 1749 bar(); 1750 } 1751 } 1752 } 1753 #pragma omp single 1754 { 1755 #pragma omp parallel for 1756 for (int i = 0; i < 10; ++i) 1757 ; 1758 } 1759 #pragma omp single 1760 { 1761 #pragma omp parallel for simd 1762 for (int i = 0; i < 10; ++i) 1763 ; 1764 } 1765 #pragma omp single 1766 { 1767 #pragma omp parallel sections 1768 { 1769 bar(); 1770 } 1771 } 1772 #pragma omp single 1773 { 1774 #pragma omp task 1775 { 1776 bar(); 1777 } 1778 } 1779 #pragma omp single 1780 { 1781 #pragma omp taskyield 1782 bar(); 1783 } 1784 #pragma omp single 1785 { 1786 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1787 bar(); 1788 } 1789 #pragma omp single 1790 { 1791 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}} 1792 bar(); 1793 } 1794 #pragma omp single 1795 { 1796 #pragma omp taskwait 1797 bar(); 1798 } 1799 #pragma omp single 1800 { 1801 #pragma omp flush 1802 bar(); 1803 } 1804 #pragma omp single 1805 { 1806 #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?}} 1807 bar(); 1808 } 1809 #pragma omp single 1810 { 1811 #pragma omp atomic 1812 ++a; 1813 } 1814 #pragma omp single 1815 { 1816 #pragma omp target 1817 ++a; 1818 } 1819 #pragma omp single 1820 { 1821 #pragma omp target parallel 1822 ++a; 1823 } 1824 #pragma omp single 1825 { 1826 #pragma omp target parallel for 1827 for (int i = 0; i < 10; ++i) 1828 ; 1829 } 1830 #pragma omp single 1831 { 1832 #pragma omp target enter data map(to: a) 1833 ++a; 1834 } 1835 #pragma omp single 1836 { 1837 #pragma omp target exit data map(from: a) 1838 ++a; 1839 } 1840 #pragma omp single 1841 { 1842 #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?}} 1843 ++a; 1844 } 1845 #pragma omp single 1846 { 1847 #pragma omp taskloop 1848 for (int i = 0; i < 10; ++i) 1849 ++a; 1850 } 1851 #pragma omp single 1852 { 1853 #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?}} 1854 for (int i = 0; i < 10; ++i) 1855 ; 1856 } 1857 #pragma omp single 1858 { 1859 #pragma omp target update to(a) 1860 bar(); 1861 } 1862 #pragma omp single 1863 { 1864 #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?}} 1865 for (int i = 0; i < 10; ++i) 1866 ; 1867 } 1868 #pragma omp single 1869 { 1870 #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?}} 1871 for (int i = 0; i < 10; ++i) 1872 ; 1873 } 1874 #pragma omp single 1875 { 1876 #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?}} 1877 for (int i = 0; i < 10; ++i) 1878 ; 1879 } 1880 #pragma omp single 1881 { 1882 #pragma omp target simd // OK 1883 for (int i = 0; i < 10; ++i) 1884 ; 1885 } 1886 #pragma omp single 1887 { 1888 #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?}} 1889 for (int i = 0; i < 10; ++i) 1890 ; 1891 } 1892 #pragma omp single 1893 { 1894 #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?}} 1895 for (int i = 0; i < 10; ++i) 1896 ; 1897 } 1898 #pragma omp single 1899 { 1900 #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?}} 1901 for (int i = 0; i < 10; ++i) 1902 ; 1903 } 1904 #pragma omp single 1905 { 1906 #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?}} 1907 for (int i = 0; i < 10; ++i) 1908 ; 1909 } 1910 #pragma omp single 1911 { 1912 #pragma omp target teams // OK 1913 ++a; 1914 } 1915 #pragma omp single 1916 { 1917 #pragma omp target teams distribute // OK 1918 for (int i = 0; i < 10; ++i) 1919 ; 1920 } 1921 #pragma omp single 1922 { 1923 #pragma omp target teams distribute parallel for // OK 1924 for (int i = 0; i < 10; ++i) 1925 ; 1926 } 1927 #pragma omp single 1928 { 1929 #pragma omp target teams distribute parallel for simd // OK 1930 for (int i = 0; i < 10; ++i) 1931 ; 1932 } 1933 #pragma omp single 1934 { 1935 #pragma omp target teams distribute simd // OK 1936 for (int i = 0; i < 10; ++i) 1937 ; 1938 } 1939 1940 // MASTER DIRECTIVE 1941 #pragma omp master 1942 { 1943 #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?}} 1944 for (int i = 0; i < 10; ++i) 1945 ; 1946 } 1947 #pragma omp master 1948 { 1949 #pragma omp simd 1950 for (int i = 0; i < 10; ++i) 1951 ; 1952 } 1953 #pragma omp master 1954 { 1955 #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?}} 1956 for (int i = 0; i < 10; ++i) 1957 ; 1958 } 1959 #pragma omp master 1960 { 1961 #pragma omp parallel 1962 for (int i = 0; i < 10; ++i) 1963 ; 1964 } 1965 #pragma omp master 1966 { 1967 #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?}} 1968 { 1969 bar(); 1970 } 1971 } 1972 #pragma omp master 1973 { 1974 #pragma omp master // OK, though second 'master' is redundant 1975 { 1976 bar(); 1977 } 1978 } 1979 #pragma omp master 1980 { 1981 #pragma omp critical 1982 { 1983 bar(); 1984 } 1985 } 1986 #pragma omp master 1987 { 1988 #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?}} 1989 { 1990 bar(); 1991 } 1992 } 1993 #pragma omp master 1994 { 1995 #pragma omp parallel 1996 { 1997 #pragma omp master // OK 1998 { 1999 bar(); 2000 } 2001 #pragma omp for // OK 2002 for (int i = 0; i < 10; ++i) 2003 ; 2004 #pragma omp for simd // OK 2005 for (int i = 0; i < 10; ++i) 2006 ; 2007 #pragma omp sections // OK 2008 { 2009 bar(); 2010 } 2011 } 2012 } 2013 #pragma omp master 2014 { 2015 #pragma omp parallel master // OK 2016 { 2017 bar(); 2018 } 2019 #pragma omp parallel 2020 { 2021 #pragma omp for // OK 2022 for (int i = 0; i < 10; ++i) 2023 ; 2024 #pragma omp for simd // OK 2025 for (int i = 0; i < 10; ++i) 2026 ; 2027 #pragma omp sections // OK 2028 { 2029 bar(); 2030 } 2031 } 2032 } 2033 #pragma omp master 2034 { 2035 #pragma omp parallel for 2036 for (int i = 0; i < 10; ++i) 2037 ; 2038 } 2039 #pragma omp master 2040 { 2041 #pragma omp parallel for simd 2042 for (int i = 0; i < 10; ++i) 2043 ; 2044 } 2045 #pragma omp master 2046 { 2047 #pragma omp parallel sections 2048 { 2049 bar(); 2050 } 2051 } 2052 #pragma omp master 2053 { 2054 #pragma omp task 2055 { 2056 bar(); 2057 } 2058 } 2059 #pragma omp master 2060 { 2061 #pragma omp taskyield 2062 bar(); 2063 } 2064 #pragma omp master 2065 { 2066 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 2067 bar(); 2068 } 2069 #pragma omp master 2070 { 2071 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}} 2072 bar(); 2073 } 2074 #pragma omp master 2075 { 2076 #pragma omp taskwait 2077 bar(); 2078 } 2079 #pragma omp master 2080 { 2081 #pragma omp flush 2082 bar(); 2083 } 2084 #pragma omp master 2085 { 2086 #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?}} 2087 bar(); 2088 } 2089 #pragma omp master 2090 { 2091 #pragma omp atomic 2092 ++a; 2093 } 2094 #pragma omp master 2095 { 2096 #pragma omp target 2097 ++a; 2098 } 2099 #pragma omp master 2100 { 2101 #pragma omp target parallel 2102 ++a; 2103 } 2104 #pragma omp master 2105 { 2106 #pragma omp target parallel for 2107 for (int i = 0; i < 10; ++i) 2108 ; 2109 } 2110 #pragma omp master 2111 { 2112 #pragma omp target enter data map(to: a) 2113 ++a; 2114 } 2115 #pragma omp master 2116 { 2117 #pragma omp target exit data map(from: a) 2118 ++a; 2119 } 2120 #pragma omp master 2121 { 2122 #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?}} 2123 ++a; 2124 } 2125 #pragma omp master 2126 { 2127 #pragma omp taskloop 2128 for (int i = 0; i < 10; ++i) 2129 ++a; 2130 } 2131 #pragma omp master 2132 { 2133 #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?}} 2134 for (int i = 0; i < 10; ++i) 2135 ; 2136 } 2137 #pragma omp master 2138 { 2139 #pragma omp target update to(a) 2140 bar(); 2141 } 2142 #pragma omp master 2143 { 2144 #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?}} 2145 for (int i = 0; i < 10; ++i) 2146 ; 2147 } 2148 #pragma omp master 2149 { 2150 #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?}} 2151 for (int i = 0; i < 10; ++i) 2152 ; 2153 } 2154 #pragma omp master 2155 { 2156 #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?}} 2157 for (int i = 0; i < 10; ++i) 2158 ; 2159 } 2160 #pragma omp master 2161 { 2162 #pragma omp target simd // OK 2163 for (int i = 0; i < 10; ++i) 2164 ; 2165 } 2166 #pragma omp master 2167 { 2168 #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?}} 2169 for (int i = 0; i < 10; ++i) 2170 ; 2171 } 2172 #pragma omp master 2173 { 2174 #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?}} 2175 for (int i = 0; i < 10; ++i) 2176 ; 2177 } 2178 #pragma omp master 2179 { 2180 #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?}} 2181 for (int i = 0; i < 10; ++i) 2182 ; 2183 } 2184 #pragma omp master 2185 { 2186 #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?}} 2187 for (int i = 0; i < 10; ++i) 2188 ; 2189 } 2190 #pragma omp master 2191 { 2192 #pragma omp target teams // OK 2193 a++; 2194 } 2195 #pragma omp master 2196 { 2197 #pragma omp target teams distribute // OK 2198 for (int i = 0; i < 10; ++i) 2199 ; 2200 } 2201 #pragma omp master 2202 { 2203 #pragma omp target teams distribute parallel for // OK 2204 for (int i = 0; i < 10; ++i) 2205 ; 2206 } 2207 #pragma omp master 2208 { 2209 #pragma omp target teams distribute parallel for simd // OK 2210 for (int i = 0; i < 10; ++i) 2211 ; 2212 } 2213 #pragma omp master 2214 { 2215 #pragma omp target teams distribute simd // OK 2216 for (int i = 0; i < 10; ++i) 2217 ; 2218 } 2219 2220 // CRITICAL DIRECTIVE 2221 #pragma omp critical 2222 { 2223 #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?}} 2224 for (int i = 0; i < 10; ++i) 2225 ; 2226 } 2227 #pragma omp critical 2228 { 2229 #pragma omp simd 2230 for (int i = 0; i < 10; ++i) 2231 ; 2232 } 2233 #pragma omp critical 2234 { 2235 #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?}} 2236 for (int i = 0; i < 10; ++i) 2237 ; 2238 } 2239 #pragma omp critical 2240 { 2241 #pragma omp parallel 2242 for (int i = 0; i < 10; ++i) 2243 ; 2244 } 2245 #pragma omp critical 2246 { 2247 #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?}} 2248 { 2249 bar(); 2250 } 2251 } 2252 #pragma omp critical 2253 { 2254 #pragma omp master // OK, though second 'master' is redundant 2255 { 2256 bar(); 2257 } 2258 } 2259 #pragma omp critical 2260 { 2261 #pragma omp critical 2262 { 2263 bar(); 2264 } 2265 } 2266 #pragma omp critical 2267 { 2268 #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?}} 2269 { 2270 bar(); 2271 } 2272 } 2273 #pragma omp critical 2274 { 2275 #pragma omp parallel 2276 { 2277 #pragma omp master // OK 2278 { 2279 bar(); 2280 } 2281 #pragma omp for // OK 2282 for (int i = 0; i < 10; ++i) 2283 ; 2284 #pragma omp for simd // OK 2285 for (int i = 0; i < 10; ++i) 2286 ; 2287 #pragma omp sections // OK 2288 { 2289 bar(); 2290 } 2291 } 2292 } 2293 #pragma omp critical 2294 { 2295 #pragma omp parallel master 2296 { 2297 bar(); 2298 } 2299 } 2300 #pragma omp critical 2301 { 2302 #pragma omp parallel for 2303 for (int i = 0; i < 10; ++i) 2304 ; 2305 } 2306 #pragma omp critical 2307 { 2308 #pragma omp parallel for simd 2309 for (int i = 0; i < 10; ++i) 2310 ; 2311 } 2312 #pragma omp critical 2313 { 2314 #pragma omp parallel sections 2315 { 2316 bar(); 2317 } 2318 } 2319 #pragma omp critical 2320 { 2321 #pragma omp task 2322 { 2323 bar(); 2324 } 2325 } 2326 #pragma omp critical 2327 { 2328 #pragma omp taskyield 2329 bar(); 2330 } 2331 #pragma omp critical 2332 { 2333 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2334 bar(); 2335 } 2336 #pragma omp critical 2337 { 2338 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}} 2339 bar(); 2340 } 2341 #pragma omp critical 2342 { 2343 #pragma omp taskwait 2344 bar(); 2345 } 2346 #pragma omp critical(Tuzik) 2347 { 2348 #pragma omp critical(grelka) 2349 bar(); 2350 } 2351 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2352 { 2353 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2354 { 2355 #pragma omp critical(Tuzik) 2356 { 2357 #pragma omp parallel 2358 #pragma omp critical(grelka) 2359 { 2360 bar(); 2361 } 2362 } 2363 } 2364 } 2365 #pragma omp critical 2366 { 2367 #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?}} 2368 bar(); 2369 } 2370 #pragma omp critical 2371 { 2372 #pragma omp atomic 2373 ++a; 2374 } 2375 #pragma omp critical 2376 { 2377 #pragma omp target 2378 ++a; 2379 } 2380 #pragma omp critical 2381 { 2382 #pragma omp target parallel 2383 ++a; 2384 } 2385 #pragma omp critical 2386 { 2387 #pragma omp target parallel for 2388 for (int i = 0; i < 10; ++i) 2389 ; 2390 } 2391 #pragma omp critical 2392 { 2393 #pragma omp target enter data map(to: a) 2394 ++a; 2395 } 2396 #pragma omp critical 2397 { 2398 #pragma omp target exit data map(from: a) 2399 ++a; 2400 } 2401 #pragma omp critical 2402 { 2403 #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?}} 2404 ++a; 2405 } 2406 #pragma omp critical 2407 { 2408 #pragma omp taskloop 2409 for (int i = 0; i < 10; ++i) 2410 ++a; 2411 } 2412 #pragma omp critical 2413 { 2414 #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?}} 2415 for (int i = 0; i < 10; ++i) 2416 ; 2417 } 2418 #pragma omp critical 2419 { 2420 #pragma omp target update to(a) 2421 bar(); 2422 } 2423 #pragma omp critical 2424 { 2425 #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?}} 2426 for (int i = 0; i < 10; ++i) 2427 ; 2428 } 2429 #pragma omp critical 2430 { 2431 #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?}} 2432 for (int i = 0; i < 10; ++i) 2433 ; 2434 } 2435 #pragma omp critical 2436 { 2437 #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?}} 2438 for (int i = 0; i < 10; ++i) 2439 ; 2440 } 2441 #pragma omp critical 2442 { 2443 #pragma omp target simd // OK 2444 for (int i = 0; i < 10; ++i) 2445 ; 2446 } 2447 #pragma omp critical 2448 { 2449 #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?}} 2450 for (int i = 0; i < 10; ++i) 2451 ; 2452 } 2453 #pragma omp critical 2454 { 2455 #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?}} 2456 for (int i = 0; i < 10; ++i) 2457 ; 2458 } 2459 #pragma omp critical 2460 { 2461 #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?}} 2462 for (int i = 0; i < 10; ++i) 2463 ; 2464 } 2465 #pragma omp critical 2466 { 2467 #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?}} 2468 for (int i = 0; i < 10; ++i) 2469 ; 2470 } 2471 #pragma omp critical 2472 { 2473 #pragma omp target teams // OK 2474 a++; 2475 } 2476 #pragma omp critical 2477 { 2478 #pragma omp target teams distribute // OK 2479 for (int i = 0; i < 10; ++i) 2480 ; 2481 } 2482 #pragma omp critical 2483 { 2484 #pragma omp target teams distribute parallel for // OK 2485 for (int i = 0; i < 10; ++i) 2486 ; 2487 } 2488 #pragma omp critical 2489 { 2490 #pragma omp target teams distribute parallel for simd // OK 2491 for (int i = 0; i < 10; ++i) 2492 ; 2493 } 2494 #pragma omp critical 2495 { 2496 #pragma omp target teams distribute simd // OK 2497 for (int i = 0; i < 10; ++i) 2498 ; 2499 } 2500 2501 // PARALLEL FOR DIRECTIVE 2502 #pragma omp parallel for 2503 for (int i = 0; i < 10; ++i) { 2504 #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?}} 2505 for (int i = 0; i < 10; ++i) 2506 ; 2507 } 2508 #pragma omp parallel for 2509 for (int i = 0; i < 10; ++i) { 2510 #pragma omp simd 2511 for (int i = 0; i < 10; ++i) 2512 ; 2513 } 2514 #pragma omp parallel for 2515 for (int i = 0; i < 10; ++i) { 2516 #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?}} 2517 for (int i = 0; i < 10; ++i) 2518 ; 2519 } 2520 #pragma omp parallel for 2521 for (int i = 0; i < 10; ++i) { 2522 #pragma omp parallel 2523 for (int i = 0; i < 10; ++i) 2524 ; 2525 } 2526 #pragma omp parallel for 2527 for (int i = 0; i < 10; ++i) { 2528 #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?}} 2529 { 2530 bar(); 2531 } 2532 } 2533 #pragma omp parallel for 2534 for (int i = 0; i < 10; ++i) { 2535 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2536 { 2537 bar(); 2538 } 2539 } 2540 #pragma omp parallel for 2541 for (int i = 0; i < 10; ++i) { 2542 #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?}} 2543 { 2544 bar(); 2545 } 2546 } 2547 2548 #pragma omp parallel for 2549 for (int i = 0; i < 10; ++i) { 2550 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2551 { 2552 bar(); 2553 } 2554 } 2555 2556 #pragma omp parallel for 2557 for (int i = 0; i < 10; ++i) { 2558 #pragma omp critical 2559 { 2560 bar(); 2561 } 2562 } 2563 2564 #pragma omp parallel for 2565 for (int i = 0; i < 10; ++i) { 2566 #pragma omp parallel 2567 { 2568 #pragma omp single // OK 2569 { 2570 bar(); 2571 } 2572 #pragma omp for // OK 2573 for (int i = 0; i < 10; ++i) 2574 ; 2575 #pragma omp for simd // OK 2576 for (int i = 0; i < 10; ++i) 2577 ; 2578 #pragma omp sections // OK 2579 { 2580 bar(); 2581 } 2582 } 2583 } 2584 #pragma omp parallel for 2585 for (int i = 0; i < 10; ++i) { 2586 #pragma omp parallel for 2587 for (int i = 0; i < 10; ++i) 2588 ; 2589 } 2590 #pragma omp parallel for 2591 for (int i = 0; i < 10; ++i) { 2592 #pragma omp parallel for simd 2593 for (int i = 0; i < 10; ++i) 2594 ; 2595 } 2596 #pragma omp parallel for 2597 for (int i = 0; i < 10; ++i) { 2598 #pragma omp parallel sections 2599 { 2600 bar(); 2601 } 2602 } 2603 #pragma omp parallel for 2604 for (int i = 0; i < 10; ++i) { 2605 #pragma omp task 2606 { 2607 bar(); 2608 } 2609 } 2610 #pragma omp parallel for 2611 for (int i = 0; i < 10; ++i) { 2612 #pragma omp taskyield 2613 bar(); 2614 } 2615 #pragma omp parallel for 2616 for (int i = 0; i < 10; ++i) { 2617 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2618 bar(); 2619 } 2620 #pragma omp parallel for 2621 for (int i = 0; i < 10; ++i) { 2622 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 2623 bar(); 2624 } 2625 #pragma omp parallel for 2626 for (int i = 0; i < 10; ++i) { 2627 #pragma omp taskwait 2628 bar(); 2629 } 2630 #pragma omp parallel for 2631 for (int i = 0; i < 10; ++i) { 2632 #pragma omp flush 2633 bar(); 2634 } 2635 #pragma omp parallel for 2636 for (int i = 0; i < 10; ++i) { 2637 #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?}} 2638 bar(); 2639 } 2640 #pragma omp parallel for ordered 2641 for (int i = 0; i < 10; ++i) { 2642 #pragma omp ordered // OK 2643 bar(); 2644 } 2645 #pragma omp parallel for 2646 for (int i = 0; i < 10; ++i) { 2647 #pragma omp atomic 2648 ++a; 2649 } 2650 #pragma omp parallel for 2651 for (int i = 0; i < 10; ++i) { 2652 #pragma omp target 2653 ++a; 2654 } 2655 #pragma omp parallel for 2656 for (int i = 0; i < 10; ++i) { 2657 #pragma omp target parallel 2658 ++a; 2659 } 2660 #pragma omp parallel for 2661 for (int i = 0; i < 10; ++i) { 2662 #pragma omp target parallel for 2663 for (int i = 0; i < 10; ++i) 2664 ; 2665 } 2666 #pragma omp parallel for 2667 for (int i = 0; i < 10; ++i) { 2668 #pragma omp target enter data map(to: a) 2669 ++a; 2670 } 2671 #pragma omp parallel for 2672 for (int i = 0; i < 10; ++i) { 2673 #pragma omp target exit data map(from: a) 2674 ++a; 2675 } 2676 #pragma omp parallel for 2677 for (int i = 0; i < 10; ++i) { 2678 #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?}} 2679 ++a; 2680 } 2681 #pragma omp parallel for 2682 for (int i = 0; i < 10; ++i) { 2683 #pragma omp taskloop 2684 for (int i = 0; i < 10; ++i) 2685 ++a; 2686 } 2687 #pragma omp parallel for 2688 for (int i = 0; i < 10; ++i) { 2689 #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?}} 2690 for (int j = 0; j < 10; ++j) 2691 ; 2692 } 2693 #pragma omp parallel for 2694 for (int i = 0; i < 10; ++i) { 2695 #pragma omp target update to(a) 2696 } 2697 #pragma omp parallel for 2698 for (int i = 0; i < 10; ++i) { 2699 #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?}} 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 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?}} 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 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?}} 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 simd // OK 2718 for (int j = 0; j < 10; ++j) 2719 ; 2720 } 2721 #pragma omp parallel for 2722 for (int i = 0; i < 10; ++i) { 2723 #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?}} 2724 for (int j = 0; j < 10; ++j) 2725 ; 2726 } 2727 #pragma omp parallel for 2728 for (int i = 0; i < 10; ++i) { 2729 #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?}} 2730 for (int j = 0; j < 10; ++j) 2731 ; 2732 } 2733 #pragma omp parallel for 2734 for (int i = 0; i < 10; ++i) { 2735 #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?}} 2736 for (int j = 0; j < 10; ++j) 2737 ; 2738 } 2739 #pragma omp parallel for 2740 for (int i = 0; i < 10; ++i) { 2741 #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?}} 2742 for (int j = 0; j < 10; ++j) 2743 ; 2744 } 2745 #pragma omp parallel for 2746 for (int i = 0; i < 10; ++i) { 2747 #pragma omp target teams // OK 2748 a++; 2749 } 2750 #pragma omp parallel for 2751 for (int i = 0; i < 10; ++i) { 2752 #pragma omp target teams distribute // OK 2753 for (int j = 0; j < 10; ++j) 2754 ; 2755 } 2756 #pragma omp parallel for 2757 for (int i = 0; i < 10; ++i) { 2758 #pragma omp target teams distribute parallel for // OK 2759 for (int j = 0; j < 10; ++j) 2760 ; 2761 } 2762 #pragma omp parallel for 2763 for (int i = 0; i < 10; ++i) { 2764 #pragma omp target teams distribute parallel for simd // OK 2765 for (int j = 0; j < 10; ++j) 2766 ; 2767 } 2768 #pragma omp parallel for 2769 for (int i = 0; i < 10; ++i) { 2770 #pragma omp target teams distribute simd // OK 2771 for (int j = 0; j < 10; ++j) 2772 ; 2773 } 2774 2775 // PARALLEL FOR SIMD DIRECTIVE 2776 #pragma omp parallel for simd 2777 for (int i = 0; i < 10; ++i) { 2778 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2779 for (int i = 0; i < 10; ++i) 2780 ; 2781 } 2782 #pragma omp parallel for simd 2783 for (int i = 0; i < 10; ++i) { 2784 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2785 for (int i = 0; i < 10; ++i) 2786 ; 2787 } 2788 #pragma omp parallel for simd 2789 for (int i = 0; i < 10; ++i) { 2790 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2791 for (int i = 0; i < 10; ++i) 2792 ; 2793 } 2794 #pragma omp parallel for simd 2795 for (int i = 0; i < 10; ++i) { 2796 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2797 for (int i = 0; i < 10; ++i) 2798 ; 2799 } 2800 #pragma omp parallel for simd 2801 for (int i = 0; i < 10; ++i) { 2802 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2803 { 2804 bar(); 2805 } 2806 } 2807 #pragma omp parallel for simd 2808 for (int i = 0; i < 10; ++i) { 2809 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2810 { 2811 bar(); 2812 } 2813 } 2814 #pragma omp parallel for simd 2815 for (int i = 0; i < 10; ++i) { 2816 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2817 { 2818 bar(); 2819 } 2820 } 2821 2822 #pragma omp parallel for simd 2823 for (int i = 0; i < 10; ++i) { 2824 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2825 { 2826 bar(); 2827 } 2828 } 2829 2830 #pragma omp parallel for simd 2831 for (int i = 0; i < 10; ++i) { 2832 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2833 { 2834 bar(); 2835 } 2836 } 2837 2838 #pragma omp parallel for simd 2839 for (int i = 0; i < 10; ++i) { 2840 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2841 { 2842 #pragma omp single 2843 { 2844 bar(); 2845 } 2846 #pragma omp for 2847 for (int i = 0; i < 10; ++i) 2848 ; 2849 #pragma omp for simd 2850 for (int i = 0; i < 10; ++i) 2851 ; 2852 #pragma omp sections 2853 { 2854 bar(); 2855 } 2856 } 2857 } 2858 #pragma omp parallel for simd 2859 for (int i = 0; i < 10; ++i) { 2860 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2861 for (int i = 0; i < 10; ++i) 2862 ; 2863 } 2864 #pragma omp parallel for simd 2865 for (int i = 0; i < 10; ++i) { 2866 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2867 for (int i = 0; i < 10; ++i) 2868 ; 2869 } 2870 #pragma omp parallel for simd 2871 for (int i = 0; i < 10; ++i) { 2872 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2873 { 2874 bar(); 2875 } 2876 } 2877 #pragma omp parallel for simd 2878 for (int i = 0; i < 10; ++i) { 2879 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2880 { 2881 bar(); 2882 } 2883 } 2884 #pragma omp parallel for simd 2885 for (int i = 0; i < 10; ++i) { 2886 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2887 bar(); 2888 } 2889 #pragma omp parallel for simd 2890 for (int i = 0; i < 10; ++i) { 2891 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2892 bar(); 2893 } 2894 #pragma omp parallel for simd 2895 for (int i = 0; i < 10; ++i) { 2896 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 2897 bar(); 2898 } 2899 #pragma omp parallel for simd 2900 for (int i = 0; i < 10; ++i) { 2901 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2902 bar(); 2903 } 2904 #pragma omp parallel for simd 2905 for (int i = 0; i < 10; ++i) { 2906 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2907 bar(); 2908 } 2909 #pragma omp parallel for simd 2910 for (int i = 0; i < 10; ++i) { 2911 #pragma omp ordered // 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 ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2917 bar(); 2918 } 2919 #pragma omp parallel for simd 2920 for (int i = 0; i < 10; ++i) { 2921 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 2922 ++a; 2923 } 2924 #pragma omp parallel for simd 2925 for (int i = 0; i < 10; ++i) { 2926 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2927 ++a; 2928 } 2929 #pragma omp parallel for simd 2930 for (int i = 0; i < 10; ++i) { 2931 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2932 ++a; 2933 } 2934 #pragma omp parallel for simd 2935 for (int i = 0; i < 10; ++i) { 2936 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2937 for (int i = 0; i < 10; ++i) 2938 ; 2939 } 2940 #pragma omp parallel for simd 2941 for (int i = 0; i < 10; ++i) { 2942 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2943 ++a; 2944 } 2945 #pragma omp parallel for simd 2946 for (int i = 0; i < 10; ++i) { 2947 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2948 ++a; 2949 } 2950 #pragma omp parallel for simd 2951 for (int i = 0; i < 10; ++i) { 2952 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2953 ++a; 2954 } 2955 #pragma omp parallel for simd 2956 for (int i = 0; i < 10; ++i) { 2957 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2958 for (int i = 0; i < 10; ++i) 2959 ++a; 2960 } 2961 #pragma omp parallel for simd 2962 for (int i = 0; i < 10; ++i) { 2963 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2964 for (int j = 0; j < 10; ++j) 2965 ; 2966 } 2967 #pragma omp parallel for simd 2968 for (int i = 0; i < 10; ++i) { 2969 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2970 bar(); 2971 } 2972 #pragma omp parallel for simd 2973 for (int i = 0; i < 10; ++i) { 2974 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2975 for (int j = 0; j < 10; ++j) 2976 ; 2977 } 2978 #pragma omp parallel for simd 2979 for (int i = 0; i < 10; ++i) { 2980 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2981 for (int j = 0; j < 10; ++j) 2982 ; 2983 } 2984 #pragma omp parallel for simd 2985 for (int i = 0; i < 10; ++i) { 2986 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2987 for (int j = 0; j < 10; ++j) 2988 ; 2989 } 2990 #pragma omp parallel for simd 2991 for (int i = 0; i < 10; ++i) { 2992 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2993 for (int j = 0; j < 10; ++j) 2994 ; 2995 } 2996 #pragma omp parallel for simd 2997 for (int i = 0; i < 10; ++i) { 2998 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2999 for (int j = 0; j < 10; ++j) 3000 ; 3001 } 3002 #pragma omp parallel for simd 3003 for (int i = 0; i < 10; ++i) { 3004 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3005 for (int j = 0; j < 10; ++j) 3006 ; 3007 } 3008 #pragma omp parallel for simd 3009 for (int i = 0; i < 10; ++i) { 3010 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3011 for (int j = 0; j < 10; ++j) 3012 ; 3013 } 3014 #pragma omp parallel for simd 3015 for (int i = 0; i < 10; ++i) { 3016 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3017 for (int j = 0; j < 10; ++j) 3018 ; 3019 } 3020 #pragma omp parallel for simd 3021 for (int i = 0; i < 10; ++i) { 3022 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3023 a++; 3024 } 3025 #pragma omp parallel for simd 3026 for (int i = 0; i < 10; ++i) { 3027 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3028 for (int j = 0; j < 10; ++j) 3029 ; 3030 } 3031 #pragma omp parallel for simd 3032 for (int i = 0; i < 10; ++i) { 3033 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3034 for (int j = 0; j < 10; ++j) 3035 ; 3036 } 3037 #pragma omp parallel for simd 3038 for (int i = 0; i < 10; ++i) { 3039 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3040 for (int j = 0; j < 10; ++j) 3041 ; 3042 } 3043 #pragma omp parallel for simd 3044 for (int i = 0; i < 10; ++i) { 3045 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3046 for (int j = 0; j < 10; ++j) 3047 ; 3048 } 3049 3050 // PARALLEL MASTER DIRECTIVE 3051 #pragma omp parallel master 3052 { 3053 #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?}} 3054 for (int i = 0; i < 10; ++i) 3055 ; 3056 } 3057 #pragma omp parallel master 3058 { 3059 #pragma omp simd 3060 for (int i = 0; i < 10; ++i) 3061 ; 3062 } 3063 #pragma omp parallel master 3064 { 3065 #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?}} 3066 for (int i = 0; i < 10; ++i) 3067 ; 3068 } 3069 #pragma omp parallel master 3070 { 3071 #pragma omp parallel 3072 for (int i = 0; i < 10; ++i) 3073 ; 3074 } 3075 #pragma omp parallel master 3076 { 3077 #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?}} 3078 { 3079 bar(); 3080 } 3081 } 3082 #pragma omp parallel master 3083 { 3084 #pragma omp master // OK, though second 'master' is redundant 3085 { 3086 bar(); 3087 } 3088 } 3089 #pragma omp parallel master 3090 { 3091 #pragma omp critical 3092 { 3093 bar(); 3094 } 3095 } 3096 #pragma omp parallel master 3097 { 3098 #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?}} 3099 { 3100 bar(); 3101 } 3102 } 3103 #pragma omp parallel master 3104 { 3105 #pragma omp parallel 3106 { 3107 #pragma omp parallel master // OK 3108 { 3109 bar(); 3110 } 3111 #pragma omp for // OK 3112 for (int i = 0; i < 10; ++i) 3113 ; 3114 #pragma omp for simd // OK 3115 for (int i = 0; i < 10; ++i) 3116 ; 3117 #pragma omp sections // OK 3118 { 3119 bar(); 3120 } 3121 } 3122 } 3123 #pragma omp parallel master 3124 { 3125 #pragma omp parallel master // OK 3126 { 3127 bar(); 3128 } 3129 #pragma omp parallel 3130 { 3131 #pragma omp for // OK 3132 for (int i = 0; i < 10; ++i) 3133 ; 3134 #pragma omp for simd // OK 3135 for (int i = 0; i < 10; ++i) 3136 ; 3137 #pragma omp sections // OK 3138 { 3139 bar(); 3140 } 3141 } 3142 } 3143 #pragma omp parallel master 3144 { 3145 #pragma omp parallel for 3146 for (int i = 0; i < 10; ++i) 3147 ; 3148 } 3149 #pragma omp parallel master 3150 { 3151 #pragma omp parallel for simd 3152 for (int i = 0; i < 10; ++i) 3153 ; 3154 } 3155 #pragma omp parallel master 3156 { 3157 #pragma omp parallel sections 3158 { 3159 bar(); 3160 } 3161 } 3162 #pragma omp parallel master 3163 { 3164 #pragma omp task 3165 { 3166 bar(); 3167 } 3168 } 3169 #pragma omp parallel master 3170 { 3171 #pragma omp taskyield 3172 bar(); 3173 } 3174 #pragma omp parallel master 3175 { 3176 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3177 bar(); 3178 } 3179 #pragma omp parallel master 3180 { 3181 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}} 3182 bar(); 3183 } 3184 #pragma omp parallel master 3185 { 3186 #pragma omp taskwait 3187 bar(); 3188 } 3189 #pragma omp parallel master 3190 { 3191 #pragma omp flush 3192 bar(); 3193 } 3194 #pragma omp parallel master 3195 { 3196 #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?}} 3197 bar(); 3198 } 3199 #pragma omp parallel master 3200 { 3201 #pragma omp atomic 3202 ++a; 3203 } 3204 #pragma omp parallel master 3205 { 3206 #pragma omp target 3207 ++a; 3208 } 3209 #pragma omp parallel master 3210 { 3211 #pragma omp target parallel 3212 ++a; 3213 } 3214 #pragma omp parallel master 3215 { 3216 #pragma omp target parallel for 3217 for (int i = 0; i < 10; ++i) 3218 ; 3219 } 3220 #pragma omp parallel master 3221 { 3222 #pragma omp target enter data map(to: a) 3223 ++a; 3224 } 3225 #pragma omp parallel master 3226 { 3227 #pragma omp target exit data map(from: a) 3228 ++a; 3229 } 3230 #pragma omp parallel master 3231 { 3232 #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?}} 3233 ++a; 3234 } 3235 #pragma omp parallel master 3236 { 3237 #pragma omp taskloop 3238 for (int i = 0; i < 10; ++i) 3239 ++a; 3240 } 3241 #pragma omp parallel master 3242 { 3243 #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?}} 3244 for (int i = 0; i < 10; ++i) 3245 ; 3246 } 3247 #pragma omp parallel master 3248 { 3249 #pragma omp target update to(a) 3250 bar(); 3251 } 3252 #pragma omp parallel master 3253 { 3254 #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?}} 3255 for (int i = 0; i < 10; ++i) 3256 ; 3257 } 3258 #pragma omp parallel master 3259 { 3260 #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?}} 3261 for (int i = 0; i < 10; ++i) 3262 ; 3263 } 3264 #pragma omp parallel master 3265 { 3266 #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?}} 3267 for (int i = 0; i < 10; ++i) 3268 ; 3269 } 3270 #pragma omp parallel master 3271 { 3272 #pragma omp target simd // OK 3273 for (int i = 0; i < 10; ++i) 3274 ; 3275 } 3276 #pragma omp parallel master 3277 { 3278 #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?}} 3279 for (int i = 0; i < 10; ++i) 3280 ; 3281 } 3282 #pragma omp parallel master 3283 { 3284 #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?}} 3285 for (int i = 0; i < 10; ++i) 3286 ; 3287 } 3288 #pragma omp parallel master 3289 { 3290 #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?}} 3291 for (int i = 0; i < 10; ++i) 3292 ; 3293 } 3294 #pragma omp parallel master 3295 { 3296 #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?}} 3297 for (int i = 0; i < 10; ++i) 3298 ; 3299 } 3300 #pragma omp parallel master 3301 { 3302 #pragma omp target teams // OK 3303 a++; 3304 } 3305 #pragma omp parallel master 3306 { 3307 #pragma omp target teams distribute // OK 3308 for (int i = 0; i < 10; ++i) 3309 ; 3310 } 3311 #pragma omp parallel master 3312 { 3313 #pragma omp target teams distribute parallel for // OK 3314 for (int i = 0; i < 10; ++i) 3315 ; 3316 } 3317 #pragma omp parallel master 3318 { 3319 #pragma omp target teams distribute parallel for simd // OK 3320 for (int i = 0; i < 10; ++i) 3321 ; 3322 } 3323 #pragma omp parallel master 3324 { 3325 #pragma omp target teams distribute simd // OK 3326 for (int i = 0; i < 10; ++i) 3327 ; 3328 } 3329 3330 // PARALLEL SECTIONS DIRECTIVE 3331 #pragma omp parallel sections 3332 { 3333 #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?}} 3334 for (int i = 0; i < 10; ++i) 3335 ; 3336 } 3337 #pragma omp parallel sections 3338 { 3339 #pragma omp simd 3340 for (int i = 0; i < 10; ++i) 3341 ; 3342 } 3343 #pragma omp parallel sections 3344 { 3345 #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?}} 3346 for (int i = 0; i < 10; ++i) 3347 ; 3348 } 3349 #pragma omp parallel sections 3350 { 3351 #pragma omp parallel 3352 for (int i = 0; i < 10; ++i) 3353 ; 3354 } 3355 #pragma omp parallel sections 3356 { 3357 #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?}} 3358 { 3359 bar(); 3360 } 3361 } 3362 #pragma omp parallel sections 3363 { 3364 #pragma omp section 3365 { 3366 bar(); 3367 } 3368 } 3369 #pragma omp parallel sections 3370 { 3371 #pragma omp section 3372 { 3373 #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?}} 3374 bar(); 3375 } 3376 } 3377 #pragma omp parallel sections 3378 { 3379 #pragma omp section 3380 { 3381 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 3382 bar(); 3383 } 3384 } 3385 #pragma omp parallel sections 3386 { 3387 #pragma omp section 3388 { 3389 #pragma omp critical 3390 bar(); 3391 } 3392 } 3393 #pragma omp parallel sections 3394 { 3395 #pragma omp parallel 3396 { 3397 #pragma omp single // OK 3398 { 3399 bar(); 3400 } 3401 #pragma omp for // OK 3402 for (int i = 0; i < 10; ++i) 3403 ; 3404 #pragma omp for simd // OK 3405 for (int i = 0; i < 10; ++i) 3406 ; 3407 #pragma omp sections // OK 3408 { 3409 bar(); 3410 } 3411 } 3412 } 3413 #pragma omp parallel sections 3414 { 3415 #pragma omp parallel for 3416 for (int i = 0; i < 10; ++i) 3417 ; 3418 } 3419 #pragma omp parallel sections 3420 { 3421 #pragma omp parallel for simd 3422 for (int i = 0; i < 10; ++i) 3423 ; 3424 } 3425 #pragma omp parallel sections 3426 { 3427 #pragma omp parallel sections 3428 { 3429 bar(); 3430 } 3431 } 3432 #pragma omp parallel sections 3433 { 3434 #pragma omp task 3435 { 3436 bar(); 3437 } 3438 } 3439 #pragma omp parallel sections 3440 { 3441 #pragma omp taskyield 3442 } 3443 #pragma omp parallel sections 3444 { 3445 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3446 } 3447 #pragma omp parallel sections 3448 { 3449 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3450 } 3451 #pragma omp parallel sections 3452 { 3453 #pragma omp taskwait 3454 } 3455 #pragma omp parallel sections 3456 { 3457 #pragma omp flush 3458 } 3459 #pragma omp parallel sections 3460 { 3461 #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?}} 3462 bar(); 3463 } 3464 #pragma omp parallel sections 3465 { 3466 #pragma omp atomic 3467 ++a; 3468 } 3469 #pragma omp parallel sections 3470 { 3471 #pragma omp target 3472 ++a; 3473 } 3474 #pragma omp parallel sections 3475 { 3476 #pragma omp target parallel 3477 ++a; 3478 } 3479 #pragma omp parallel sections 3480 { 3481 #pragma omp target parallel for 3482 for (int i = 0; i < 10; ++i) 3483 ; 3484 } 3485 #pragma omp parallel sections 3486 { 3487 #pragma omp target enter data map(to: a) 3488 } 3489 #pragma omp parallel sections 3490 { 3491 #pragma omp target exit data map(from: a) 3492 } 3493 #pragma omp parallel sections 3494 { 3495 #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?}} 3496 ++a; 3497 } 3498 #pragma omp parallel sections 3499 { 3500 #pragma omp taskloop 3501 for (int i = 0; i < 10; ++i) 3502 ++a; 3503 } 3504 #pragma omp parallel sections 3505 { 3506 #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?}} 3507 for (int i = 0; i < 10; ++i) 3508 ; 3509 } 3510 #pragma omp parallel sections 3511 { 3512 #pragma omp target update to(a) 3513 } 3514 #pragma omp parallel sections 3515 { 3516 #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?}} 3517 for (int i = 0; i < 10; ++i) 3518 ; 3519 } 3520 #pragma omp parallel sections 3521 { 3522 #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?}} 3523 for (int i = 0; i < 10; ++i) 3524 ; 3525 } 3526 #pragma omp parallel sections 3527 { 3528 #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?}} 3529 for (int i = 0; i < 10; ++i) 3530 ; 3531 } 3532 #pragma omp parallel sections 3533 { 3534 #pragma omp target simd // OK 3535 for (int i = 0; i < 10; ++i) 3536 ; 3537 } 3538 #pragma omp parallel sections 3539 { 3540 #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?}} 3541 for (int i = 0; i < 10; ++i) 3542 ; 3543 } 3544 #pragma omp parallel sections 3545 { 3546 #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?}} 3547 for (int i = 0; i < 10; ++i) 3548 ; 3549 } 3550 #pragma omp parallel sections 3551 { 3552 #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?}} 3553 for (int i = 0; i < 10; ++i) 3554 ; 3555 } 3556 #pragma omp parallel sections 3557 { 3558 #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?}} 3559 for (int i = 0; i < 10; ++i) 3560 ; 3561 } 3562 #pragma omp parallel sections 3563 { 3564 #pragma omp target teams // OK 3565 a++; 3566 } 3567 #pragma omp parallel sections 3568 { 3569 #pragma omp target teams distribute // OK 3570 for (int i = 0; i < 10; ++i) 3571 ; 3572 } 3573 #pragma omp parallel sections 3574 { 3575 #pragma omp target teams distribute parallel for // OK 3576 for (int i = 0; i < 10; ++i) 3577 ; 3578 } 3579 #pragma omp parallel sections 3580 { 3581 #pragma omp target teams distribute parallel for simd // OK 3582 for (int i = 0; i < 10; ++i) 3583 ; 3584 } 3585 #pragma omp parallel sections 3586 { 3587 #pragma omp target teams distribute simd // OK 3588 for (int i = 0; i < 10; ++i) 3589 ; 3590 } 3591 3592 // TASK DIRECTIVE 3593 #pragma omp task 3594 #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?}} 3595 for (int i = 0; i < 10; ++i) 3596 ; 3597 #pragma omp task 3598 #pragma omp simd 3599 for (int i = 0; i < 10; ++i) 3600 ; 3601 #pragma omp task 3602 #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?}} 3603 for (int i = 0; i < 10; ++i) 3604 ; 3605 #pragma omp task 3606 #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?}} 3607 { 3608 bar(); 3609 } 3610 #pragma omp task 3611 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3612 { 3613 bar(); 3614 } 3615 #pragma omp task 3616 #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?}} 3617 bar(); 3618 #pragma omp task 3619 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3620 bar(); 3621 #pragma omp task 3622 #pragma omp critical 3623 bar(); 3624 3625 #pragma omp task 3626 #pragma omp parallel for 3627 for (int i = 0; i < 10; ++i) 3628 ; 3629 #pragma omp task 3630 #pragma omp parallel for simd 3631 for (int i = 0; i < 10; ++i) 3632 ; 3633 #pragma omp task 3634 #pragma omp parallel sections 3635 { 3636 bar(); 3637 } 3638 #pragma omp task 3639 #pragma omp task 3640 { 3641 bar(); 3642 } 3643 #pragma omp task 3644 { 3645 #pragma omp taskyield 3646 bar(); 3647 } 3648 #pragma omp task 3649 { 3650 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3651 bar(); 3652 } 3653 #pragma omp task 3654 { 3655 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}} 3656 bar(); 3657 } 3658 #pragma omp task 3659 { 3660 #pragma omp taskwait 3661 bar(); 3662 } 3663 #pragma omp task 3664 { 3665 #pragma omp flush 3666 bar(); 3667 } 3668 #pragma omp task 3669 { 3670 #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?}} 3671 bar(); 3672 } 3673 #pragma omp task 3674 { 3675 #pragma omp atomic 3676 ++a; 3677 } 3678 #pragma omp task 3679 { 3680 #pragma omp target 3681 ++a; 3682 } 3683 #pragma omp task 3684 { 3685 #pragma omp target parallel 3686 ++a; 3687 } 3688 #pragma omp task 3689 #pragma omp target parallel for 3690 for (int i = 0; i < 10; ++i) 3691 ; 3692 #pragma omp task 3693 { 3694 #pragma omp target enter data map(to: a) 3695 ++a; 3696 } 3697 #pragma omp task 3698 { 3699 #pragma omp target exit data map(from: a) 3700 ++a; 3701 } 3702 #pragma omp task 3703 { 3704 #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?}} 3705 ++a; 3706 } 3707 #pragma omp task 3708 { 3709 #pragma omp taskloop 3710 for (int i = 0; i < 10; ++i) 3711 ++a; 3712 } 3713 #pragma omp task 3714 { 3715 #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?}} 3716 for (int i = 0; i < 10; ++i) 3717 ; 3718 } 3719 #pragma omp task 3720 { 3721 #pragma omp target update to(a) 3722 bar(); 3723 } 3724 #pragma omp task 3725 { 3726 #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?}} 3727 for (int i = 0; i < 10; ++i) 3728 ; 3729 } 3730 #pragma omp task 3731 { 3732 #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?}} 3733 for (int i = 0; i < 10; ++i) 3734 ; 3735 } 3736 #pragma omp task 3737 { 3738 #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?}} 3739 for (int i = 0; i < 10; ++i) 3740 ; 3741 } 3742 #pragma omp task 3743 { 3744 #pragma omp target simd // OK 3745 for (int i = 0; i < 10; ++i) 3746 ; 3747 } 3748 #pragma omp task 3749 { 3750 #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?}} 3751 for (int i = 0; i < 10; ++i) 3752 ; 3753 } 3754 #pragma omp task 3755 { 3756 #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?}} 3757 for (int i = 0; i < 10; ++i) 3758 ; 3759 } 3760 #pragma omp task 3761 { 3762 #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?}} 3763 for (int i = 0; i < 10; ++i) 3764 ; 3765 } 3766 #pragma omp task 3767 { 3768 #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?}} 3769 for (int i = 0; i < 10; ++i) 3770 ; 3771 } 3772 #pragma omp task 3773 { 3774 #pragma omp target teams // OK 3775 a++; 3776 } 3777 #pragma omp task 3778 { 3779 #pragma omp target teams distribute // OK 3780 for (int i = 0; i < 10; ++i) 3781 ; 3782 } 3783 #pragma omp task 3784 { 3785 #pragma omp target teams distribute parallel for // OK 3786 for (int i = 0; i < 10; ++i) 3787 ; 3788 } 3789 #pragma omp task 3790 { 3791 #pragma omp target teams distribute parallel for simd // OK 3792 for (int i = 0; i < 10; ++i) 3793 ; 3794 } 3795 #pragma omp task 3796 { 3797 #pragma omp target teams distribute simd // OK 3798 for (int i = 0; i < 10; ++i) 3799 ; 3800 } 3801 3802 // ORDERED DIRECTIVE 3803 #pragma omp ordered 3804 { 3805 #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?}} 3806 for (int i = 0; i < 10; ++i) 3807 ; 3808 } 3809 #pragma omp ordered 3810 { 3811 #pragma omp simd 3812 for (int i = 0; i < 10; ++i) 3813 ; 3814 } 3815 #pragma omp ordered 3816 { 3817 #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?}} 3818 for (int i = 0; i < 10; ++i) 3819 ; 3820 } 3821 #pragma omp ordered 3822 { 3823 #pragma omp parallel 3824 for (int i = 0; i < 10; ++i) 3825 ; 3826 } 3827 #pragma omp ordered 3828 { 3829 #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?}} 3830 { 3831 bar(); 3832 } 3833 } 3834 #pragma omp ordered 3835 { 3836 #pragma omp master // OK, though second 'ordered' is redundant 3837 { 3838 bar(); 3839 } 3840 } 3841 #pragma omp ordered 3842 { 3843 #pragma omp critical 3844 { 3845 bar(); 3846 } 3847 } 3848 #pragma omp ordered 3849 { 3850 #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?}} 3851 { 3852 bar(); 3853 } 3854 } 3855 #pragma omp ordered 3856 { 3857 #pragma omp parallel for ordered 3858 for (int j = 0; j < 10; ++j) { 3859 #pragma omp ordered // OK 3860 { 3861 bar(); 3862 } 3863 } 3864 } 3865 #pragma omp ordered 3866 { 3867 #pragma omp parallel for simd ordered 3868 for (int j = 0; j < 10; ++j) { 3869 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3870 { 3871 bar(); 3872 } 3873 } 3874 } 3875 #pragma omp ordered 3876 { 3877 #pragma omp parallel for simd ordered 3878 for (int j = 0; j < 10; ++j) { 3879 #pragma omp ordered simd 3880 { 3881 bar(); 3882 } 3883 } 3884 } 3885 #pragma omp ordered 3886 { 3887 #pragma omp parallel for 3888 for (int i = 0; i < 10; ++i) 3889 ; 3890 } 3891 #pragma omp ordered 3892 { 3893 #pragma omp parallel for simd 3894 for (int i = 0; i < 10; ++i) 3895 ; 3896 } 3897 #pragma omp ordered 3898 { 3899 #pragma omp parallel sections 3900 { 3901 bar(); 3902 } 3903 } 3904 #pragma omp ordered 3905 { 3906 #pragma omp task 3907 { 3908 bar(); 3909 } 3910 } 3911 #pragma omp ordered 3912 { 3913 #pragma omp taskyield 3914 bar(); 3915 } 3916 #pragma omp ordered 3917 { 3918 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3919 bar(); 3920 } 3921 #pragma omp ordered 3922 { 3923 #pragma omp scan // expected-error {{region cannot be closely nested inside 'ordered' region}} 3924 bar(); 3925 } 3926 #pragma omp ordered 3927 { 3928 #pragma omp taskwait 3929 bar(); 3930 } 3931 #pragma omp ordered 3932 { 3933 #pragma omp flush 3934 bar(); 3935 } 3936 #pragma omp ordered 3937 { 3938 #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?}} 3939 bar(); 3940 } 3941 #pragma omp ordered 3942 { 3943 #pragma omp atomic 3944 ++a; 3945 } 3946 #pragma omp ordered 3947 { 3948 #pragma omp target 3949 ++a; 3950 } 3951 #pragma omp ordered 3952 { 3953 #pragma omp target parallel 3954 ++a; 3955 } 3956 #pragma omp ordered 3957 { 3958 #pragma omp target parallel for ordered 3959 for (int j = 0; j < 10; ++j) { 3960 #pragma omp ordered // OK 3961 { 3962 bar(); 3963 } 3964 } 3965 } 3966 #pragma omp ordered 3967 { 3968 #pragma omp target parallel for 3969 for (int i = 0; i < 10; ++i) 3970 ; 3971 } 3972 #pragma omp ordered 3973 { 3974 #pragma omp target enter data map(to: a) 3975 ++a; 3976 } 3977 #pragma omp ordered 3978 { 3979 #pragma omp target exit data map(from: a) 3980 ++a; 3981 } 3982 #pragma omp ordered 3983 { 3984 #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?}} 3985 ++a; 3986 } 3987 #pragma omp ordered 3988 { 3989 #pragma omp taskloop 3990 for (int i = 0; i < 10; ++i) 3991 ++a; 3992 } 3993 #pragma omp ordered 3994 { 3995 #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?}} 3996 for (int i = 0; i < 10; ++i) 3997 ; 3998 } 3999 #pragma omp ordered 4000 { 4001 bar(); 4002 #pragma omp target update to(a) 4003 bar(); 4004 } 4005 #pragma omp ordered 4006 { 4007 #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?}} 4008 for (int i = 0; i < 10; ++i) 4009 ; 4010 } 4011 #pragma omp ordered 4012 { 4013 #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?}} 4014 for (int i = 0; i < 10; ++i) 4015 ; 4016 } 4017 #pragma omp ordered 4018 { 4019 #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?}} 4020 for (int i = 0; i < 10; ++i) 4021 ; 4022 } 4023 #pragma omp ordered 4024 { 4025 #pragma omp target simd // OK 4026 for (int i = 0; i < 10; ++i) 4027 ; 4028 } 4029 #pragma omp ordered 4030 { 4031 #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?}} 4032 for (int i = 0; i < 10; ++i) 4033 ; 4034 } 4035 #pragma omp ordered 4036 { 4037 #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?}} 4038 for (int i = 0; i < 10; ++i) 4039 ; 4040 } 4041 #pragma omp ordered 4042 { 4043 #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?}} 4044 for (int i = 0; i < 10; ++i) 4045 ; 4046 } 4047 #pragma omp ordered 4048 { 4049 #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?}} 4050 for (int i = 0; i < 10; ++i) 4051 ; 4052 } 4053 #pragma omp ordered 4054 { 4055 #pragma omp target teams // OK 4056 a++; 4057 } 4058 #pragma omp ordered 4059 { 4060 #pragma omp target teams distribute // OK 4061 for (int i = 0; i < 10; ++i) 4062 ; 4063 } 4064 #pragma omp ordered 4065 { 4066 #pragma omp target teams distribute parallel for // OK 4067 for (int i = 0; i < 10; ++i) 4068 ; 4069 } 4070 #pragma omp ordered 4071 { 4072 #pragma omp target teams distribute parallel for simd // OK 4073 for (int i = 0; i < 10; ++i) 4074 ; 4075 } 4076 #pragma omp ordered 4077 { 4078 #pragma omp target teams distribute simd // OK 4079 for (int i = 0; i < 10; ++i) 4080 ; 4081 } 4082 4083 // ATOMIC DIRECTIVE 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 lvalue expression with scalar type}} 4086 // expected-note@+1 {{expected an expression statement}} 4087 { 4088 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4089 for (int i = 0; i < 10; ++i) 4090 ; 4091 } 4092 #pragma omp atomic 4093 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4094 // expected-note@+1 {{expected an expression statement}} 4095 { 4096 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4097 for (int i = 0; i < 10; ++i) 4098 ; 4099 } 4100 #pragma omp atomic 4101 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4102 // expected-note@+1 {{expected an expression statement}} 4103 { 4104 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4105 for (int i = 0; i < 10; ++i) 4106 ; 4107 } 4108 #pragma omp atomic 4109 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4110 // expected-note@+1 {{expected an expression statement}} 4111 { 4112 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4113 for (int i = 0; i < 10; ++i) 4114 ; 4115 } 4116 #pragma omp atomic 4117 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4118 // expected-note@+1 {{expected an expression statement}} 4119 { 4120 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4121 { 4122 bar(); 4123 } 4124 } 4125 #pragma omp atomic 4126 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4127 // expected-note@+1 {{expected an expression statement}} 4128 { 4129 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4130 { 4131 bar(); 4132 } 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 lvalue expression with scalar type}} 4136 // expected-note@+1 {{expected an expression statement}} 4137 { 4138 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4139 { 4140 bar(); 4141 } 4142 } 4143 #pragma omp atomic 4144 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4145 // expected-note@+1 {{expected an expression statement}} 4146 { 4147 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4148 { 4149 bar(); 4150 } 4151 } 4152 #pragma omp atomic 4153 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4154 // expected-note@+1 {{expected an expression statement}} 4155 { 4156 #pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4157 { 4158 bar(); 4159 } 4160 } 4161 #pragma omp atomic 4162 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4163 // expected-note@+1 {{expected an expression statement}} 4164 { 4165 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4166 { 4167 bar(); 4168 } 4169 } 4170 #pragma omp atomic 4171 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4172 // expected-note@+1 {{expected an expression statement}} 4173 { 4174 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4175 for (int i = 0; i < 10; ++i) 4176 ; 4177 } 4178 #pragma omp atomic 4179 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4180 // expected-note@+1 {{expected an expression statement}} 4181 { 4182 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4183 for (int i = 0; i < 10; ++i) 4184 ; 4185 } 4186 #pragma omp atomic 4187 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4188 // expected-note@+1 {{expected an expression statement}} 4189 { 4190 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4191 { 4192 bar(); 4193 } 4194 } 4195 #pragma omp atomic 4196 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4197 // expected-note@+1 {{expected an expression statement}} 4198 { 4199 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4200 { 4201 bar(); 4202 } 4203 } 4204 #pragma omp atomic 4205 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4206 // expected-note@+1 {{expected an expression statement}} 4207 { 4208 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4209 bar(); 4210 } 4211 #pragma omp atomic 4212 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4213 // expected-note@+1 {{expected an expression statement}} 4214 { 4215 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4216 bar(); 4217 } 4218 #pragma omp atomic 4219 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4220 // expected-note@+1 {{expected an expression statement}} 4221 { 4222 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4223 bar(); 4224 } 4225 #pragma omp atomic 4226 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4227 // expected-note@+1 {{expected an expression statement}} 4228 { 4229 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4230 bar(); 4231 } 4232 #pragma omp atomic 4233 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4234 // expected-note@+1 {{expected an expression statement}} 4235 { 4236 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4237 bar(); 4238 } 4239 #pragma omp atomic 4240 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4241 // expected-note@+1 {{expected an expression statement}} 4242 { 4243 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4244 bar(); 4245 } 4246 #pragma omp atomic 4247 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4248 // expected-note@+1 {{expected an expression statement}} 4249 { 4250 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4251 ++a; 4252 } 4253 #pragma omp atomic 4254 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4255 // expected-note@+1 {{expected an expression statement}} 4256 { 4257 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4258 ++a; 4259 } 4260 #pragma omp atomic 4261 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4262 // expected-note@+1 {{expected an expression statement}} 4263 { 4264 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4265 ++a; 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 lvalue expression with scalar type}} 4269 // expected-note@+1 {{expected an expression statement}} 4270 { 4271 #pragma omp target parallel for // 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 lvalue expression with scalar type}} 4277 // expected-note@+1 {{expected an expression statement}} 4278 { 4279 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4280 ++a; 4281 } 4282 #pragma omp atomic 4283 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4284 // expected-note@+1 {{expected an expression statement}} 4285 { 4286 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4287 ++a; 4288 } 4289 #pragma omp atomic 4290 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4291 // expected-note@+1 {{expected an expression statement}} 4292 { 4293 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4294 ++a; 4295 } 4296 #pragma omp atomic 4297 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4298 // expected-note@+1 {{expected an expression statement}} 4299 { 4300 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4301 for (int i = 0; i < 10; ++i) 4302 ++a; 4303 } 4304 #pragma omp atomic 4305 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4306 // expected-note@+1 {{expected an expression statement}} 4307 { 4308 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4309 for (int i = 0; i < 10; ++i) 4310 ; 4311 } 4312 #pragma omp atomic 4313 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4314 // expected-note@+1 {{expected an expression statement}} 4315 { 4316 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4317 bar(); 4318 } 4319 #pragma omp atomic 4320 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4321 // expected-note@+1 {{expected an expression statement}} 4322 { 4323 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4324 for (int i = 0; i < 10; ++i) 4325 ; 4326 } 4327 #pragma omp atomic 4328 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4329 // expected-note@+1 {{expected an expression statement}} 4330 { 4331 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4332 for (int i = 0; i < 10; ++i) 4333 ; 4334 } 4335 #pragma omp atomic 4336 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4337 // expected-note@+1 {{expected an expression statement}} 4338 { 4339 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4340 for (int i = 0; i < 10; ++i) 4341 ; 4342 } 4343 #pragma omp atomic 4344 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4345 // expected-note@+1 {{expected an expression statement}} 4346 { 4347 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4348 for (int i = 0; i < 10; ++i) 4349 ; 4350 } 4351 #pragma omp atomic 4352 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4353 // expected-note@+1 {{expected an expression statement}} 4354 { 4355 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4356 for (int i = 0; i < 10; ++i) 4357 ; 4358 } 4359 #pragma omp atomic 4360 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4361 // expected-note@+1 {{expected an expression statement}} 4362 { 4363 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4364 for (int i = 0; i < 10; ++i) 4365 ; 4366 } 4367 #pragma omp atomic 4368 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4369 // expected-note@+1 {{expected an expression statement}} 4370 { 4371 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4372 for (int i = 0; i < 10; ++i) 4373 ; 4374 } 4375 #pragma omp atomic 4376 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4377 // expected-note@+1 {{expected an expression statement}} 4378 { 4379 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4380 for (int i = 0; i < 10; ++i) 4381 ; 4382 } 4383 #pragma omp atomic 4384 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4385 // expected-note@+1 {{expected an expression statement}} 4386 { 4387 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4388 a++; 4389 } 4390 #pragma omp atomic 4391 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4392 // expected-note@+1 {{expected an expression statement}} 4393 { 4394 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4395 for (int i = 0; i < 10; ++i) 4396 ; 4397 } 4398 #pragma omp atomic 4399 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4400 // expected-note@+1 {{expected an expression statement}} 4401 { 4402 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4403 for (int i = 0; i < 10; ++i) 4404 ; 4405 } 4406 #pragma omp atomic 4407 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4408 // expected-note@+1 {{expected an expression statement}} 4409 { 4410 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4411 for (int i = 0; i < 10; ++i) 4412 ; 4413 } 4414 #pragma omp atomic 4415 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 4416 // expected-note@+1 {{expected an expression statement}} 4417 { 4418 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 4419 for (int i = 0; i < 10; ++i) 4420 ; 4421 } 4422 4423 // TARGET DIRECTIVE 4424 #pragma omp target 4425 #pragma omp parallel 4426 bar(); 4427 #pragma omp target 4428 #pragma omp for 4429 for (int i = 0; i < 10; ++i) 4430 ; 4431 #pragma omp target 4432 #pragma omp simd 4433 for (int i = 0; i < 10; ++i) 4434 ; 4435 #pragma omp target 4436 #pragma omp for simd 4437 for (int i = 0; i < 10; ++i) 4438 ; 4439 #pragma omp target 4440 #pragma omp sections 4441 { 4442 bar(); 4443 } 4444 #pragma omp target 4445 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 4446 { 4447 bar(); 4448 } 4449 #pragma omp target 4450 #pragma omp single 4451 bar(); 4452 4453 #pragma omp target 4454 #pragma omp master 4455 { 4456 bar(); 4457 } 4458 #pragma omp target 4459 #pragma omp critical 4460 { 4461 bar(); 4462 } 4463 #pragma omp target 4464 #pragma omp parallel for 4465 for (int i = 0; i < 10; ++i) 4466 ; 4467 #pragma omp target 4468 #pragma omp parallel for simd 4469 for (int i = 0; i < 10; ++i) 4470 ; 4471 #pragma omp target 4472 #pragma omp parallel sections 4473 { 4474 bar(); 4475 } 4476 #pragma omp target 4477 #pragma omp task 4478 { 4479 bar(); 4480 } 4481 #pragma omp target 4482 { 4483 #pragma omp taskyield 4484 bar(); 4485 } 4486 #pragma omp target 4487 { 4488 #pragma omp barrier 4489 bar(); 4490 } 4491 #pragma omp target 4492 { 4493 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 4494 bar(); 4495 } 4496 #pragma omp target 4497 { 4498 #pragma omp taskwait 4499 bar(); 4500 } 4501 #pragma omp target 4502 { 4503 #pragma omp flush 4504 bar(); 4505 } 4506 #pragma omp target 4507 { 4508 #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?}} 4509 bar(); 4510 } 4511 #pragma omp target 4512 { 4513 #pragma omp atomic 4514 ++a; 4515 } 4516 #pragma omp target 4517 { 4518 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4519 ++a; 4520 } 4521 #pragma omp target 4522 { 4523 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4524 ++a; 4525 } 4526 #pragma omp target 4527 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4528 for (int i = 0; i < 10; ++i) 4529 ; 4530 #pragma omp target 4531 { 4532 #pragma omp teams 4533 ++a; 4534 } 4535 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4536 { 4537 #pragma omp teams // expected-note {{directive outside teams construct here}} 4538 ++a; 4539 #pragma omp teams // expected-note {{nested teams construct here}} 4540 ++a; 4541 } 4542 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4543 { 4544 ++a; // expected-note {{statement outside teams construct here}} 4545 #pragma omp teams // expected-note {{nested teams construct here}} 4546 ++a; 4547 } 4548 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4549 { 4550 while (0) // expected-note {{statement outside teams construct here}} 4551 #pragma omp teams // expected-note {{nested teams construct here}} 4552 ++a; 4553 } 4554 #pragma omp target 4555 { 4556 #pragma omp taskloop 4557 for (int i = 0; i < 10; ++i) 4558 ++a; 4559 } 4560 #pragma omp target 4561 { 4562 #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?}} 4563 for (int i = 0; i < 10; ++i) 4564 ; 4565 } 4566 #pragma omp target 4567 { 4568 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4569 } 4570 #pragma omp target 4571 { 4572 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4573 } 4574 #pragma omp target 4575 { 4576 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4577 } 4578 #pragma omp target 4579 { 4580 #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?}} 4581 for (int i = 0; i < 10; ++i) 4582 ; 4583 } 4584 #pragma omp target 4585 { 4586 #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?}} 4587 for (int i = 0; i < 10; ++i) 4588 ; 4589 } 4590 #pragma omp target 4591 { 4592 #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?}} 4593 for (int i = 0; i < 10; ++i) 4594 ; 4595 } 4596 #pragma omp target 4597 { 4598 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4599 for (int i = 0; i < 10; ++i) 4600 ; 4601 } 4602 #pragma omp target 4603 { 4604 #pragma omp teams distribute // OK 4605 for (int i = 0; i < 10; ++i) 4606 ; 4607 } 4608 #pragma omp target 4609 { 4610 #pragma omp teams distribute simd // OK 4611 for (int i = 0; i < 10; ++i) 4612 ; 4613 } 4614 #pragma omp target 4615 { 4616 #pragma omp teams distribute parallel for simd // OK 4617 for (int i = 0; i < 10; ++i) 4618 ; 4619 } 4620 #pragma omp target 4621 { 4622 #pragma omp teams distribute parallel for // OK 4623 for (int i = 0; i < 10; ++i) 4624 ; 4625 } 4626 #pragma omp target 4627 { 4628 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4629 for (int i = 0; i < 10; ++i) 4630 ; 4631 } 4632 #pragma omp target 4633 { 4634 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4635 for (int i = 0; i < 10; ++i) 4636 ; 4637 } 4638 #pragma omp target 4639 { 4640 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4641 for (int i = 0; i < 10; ++i) 4642 ; 4643 } 4644 #pragma omp target 4645 { 4646 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4647 for (int i = 0; i < 10; ++i) 4648 ; 4649 } 4650 #pragma omp target 4651 { 4652 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4653 for (int i = 0; i < 10; ++i) 4654 ; 4655 } 4656 4657 // TARGET PARALLEL DIRECTIVE 4658 #pragma omp target parallel 4659 #pragma omp parallel 4660 bar(); 4661 #pragma omp target parallel 4662 #pragma omp for 4663 for (int i = 0; i < 10; ++i) 4664 ; 4665 #pragma omp target parallel 4666 #pragma omp simd 4667 for (int i = 0; i < 10; ++i) 4668 ; 4669 #pragma omp target parallel 4670 #pragma omp for simd 4671 for (int i = 0; i < 10; ++i) 4672 ; 4673 #pragma omp target parallel 4674 #pragma omp sections 4675 { 4676 bar(); 4677 } 4678 #pragma omp target parallel 4679 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 4680 { 4681 bar(); 4682 } 4683 #pragma omp target parallel 4684 #pragma omp single 4685 bar(); 4686 4687 #pragma omp target parallel 4688 #pragma omp master 4689 { 4690 bar(); 4691 } 4692 #pragma omp target 4693 #pragma omp parallel master 4694 { 4695 bar(); 4696 } 4697 #pragma omp target parallel 4698 #pragma omp critical 4699 { 4700 bar(); 4701 } 4702 #pragma omp target parallel 4703 #pragma omp parallel for 4704 for (int i = 0; i < 10; ++i) 4705 ; 4706 #pragma omp target parallel 4707 #pragma omp parallel for simd 4708 for (int i = 0; i < 10; ++i) 4709 ; 4710 #pragma omp target parallel 4711 #pragma omp parallel sections 4712 { 4713 bar(); 4714 } 4715 #pragma omp target parallel 4716 #pragma omp task 4717 { 4718 bar(); 4719 } 4720 #pragma omp target parallel 4721 { 4722 #pragma omp taskyield 4723 bar(); 4724 } 4725 #pragma omp target parallel 4726 { 4727 #pragma omp barrier 4728 bar(); 4729 } 4730 #pragma omp target parallel 4731 { 4732 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 4733 bar(); 4734 } 4735 #pragma omp target parallel 4736 { 4737 #pragma omp taskwait 4738 bar(); 4739 } 4740 #pragma omp target parallel 4741 { 4742 #pragma omp flush 4743 bar(); 4744 } 4745 #pragma omp target parallel 4746 { 4747 #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?}} 4748 bar(); 4749 } 4750 #pragma omp target parallel 4751 { 4752 #pragma omp atomic 4753 ++a; 4754 } 4755 #pragma omp target parallel 4756 { 4757 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 4758 ++a; 4759 } 4760 #pragma omp target parallel 4761 { 4762 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 4763 ++a; 4764 } 4765 #pragma omp target parallel 4766 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4767 for (int i = 0; i < 10; ++i) 4768 ; 4769 #pragma omp target parallel 4770 { 4771 #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?}} 4772 ++a; 4773 } 4774 #pragma omp target parallel 4775 { 4776 ++a; 4777 #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?}} 4778 ++a; 4779 } 4780 #pragma omp target parallel 4781 { 4782 #pragma omp taskloop 4783 for (int i = 0; i < 10; ++i) 4784 ++a; 4785 } 4786 #pragma omp target parallel 4787 { 4788 #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?}} 4789 for (int i = 0; i < 10; ++i) 4790 ; 4791 } 4792 #pragma omp target parallel 4793 { 4794 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4795 } 4796 #pragma omp target parallel 4797 { 4798 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4799 } 4800 #pragma omp target parallel 4801 { 4802 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4803 } 4804 #pragma omp target parallel 4805 { 4806 #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?}} 4807 for (int i = 0; i < 10; ++i) 4808 ; 4809 } 4810 #pragma omp target parallel 4811 { 4812 #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?}} 4813 for (int i = 0; i < 10; ++i) 4814 ; 4815 } 4816 #pragma omp target parallel 4817 { 4818 #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?}} 4819 for (int i = 0; i < 10; ++i) 4820 ; 4821 } 4822 #pragma omp target parallel 4823 { 4824 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4825 for (int i = 0; i < 10; ++i) 4826 ; 4827 } 4828 #pragma omp target parallel 4829 { 4830 #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?}} 4831 for (int i = 0; i < 10; ++i) 4832 ; 4833 } 4834 #pragma omp target parallel 4835 { 4836 #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?}} 4837 for (int i = 0; i < 10; ++i) 4838 ; 4839 } 4840 #pragma omp target parallel 4841 { 4842 #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?}} 4843 for (int i = 0; i < 10; ++i) 4844 ; 4845 } 4846 #pragma omp target parallel 4847 { 4848 #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?}} 4849 for (int i = 0; i < 10; ++i) 4850 ; 4851 } 4852 #pragma omp target parallel 4853 { 4854 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 4855 a++; 4856 } 4857 #pragma omp target parallel 4858 { 4859 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 4860 for (int i = 0; i < 10; ++i) 4861 ; 4862 } 4863 #pragma omp target parallel 4864 { 4865 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4866 for (int i = 0; i < 10; ++i) 4867 ; 4868 } 4869 #pragma omp target parallel 4870 { 4871 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4872 for (int i = 0; i < 10; ++i) 4873 ; 4874 } 4875 #pragma omp target parallel 4876 { 4877 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4878 for (int i = 0; i < 10; ++i) 4879 ; 4880 } 4881 4882 // TARGET PARALLEL FOR DIRECTIVE 4883 #pragma omp target parallel for 4884 for (int i = 0; i < 10; ++i) { 4885 #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?}} 4886 for (int i = 0; i < 10; ++i) 4887 ; 4888 } 4889 #pragma omp target parallel for 4890 for (int i = 0; i < 10; ++i) { 4891 #pragma omp simd 4892 for (int i = 0; i < 10; ++i) 4893 ; 4894 } 4895 #pragma omp target parallel for 4896 for (int i = 0; i < 10; ++i) { 4897 #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?}} 4898 for (int i = 0; i < 10; ++i) 4899 ; 4900 } 4901 #pragma omp target parallel for 4902 for (int i = 0; i < 10; ++i) { 4903 #pragma omp parallel 4904 for (int i = 0; i < 10; ++i) 4905 ; 4906 } 4907 #pragma omp target parallel for 4908 for (int i = 0; i < 10; ++i) { 4909 #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?}} 4910 { 4911 bar(); 4912 } 4913 } 4914 #pragma omp target parallel for 4915 for (int i = 0; i < 10; ++i) { 4916 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4917 { 4918 bar(); 4919 } 4920 } 4921 #pragma omp target parallel for 4922 for (int i = 0; i < 10; ++i) { 4923 #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?}} 4924 { 4925 bar(); 4926 } 4927 } 4928 4929 #pragma omp target parallel for 4930 for (int i = 0; i < 10; ++i) { 4931 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4932 { 4933 bar(); 4934 } 4935 } 4936 4937 #pragma omp target parallel for 4938 for (int i = 0; i < 10; ++i) { 4939 #pragma omp critical 4940 { 4941 bar(); 4942 } 4943 } 4944 4945 #pragma omp target parallel for 4946 for (int i = 0; i < 10; ++i) { 4947 #pragma omp parallel 4948 { 4949 #pragma omp single // OK 4950 { 4951 bar(); 4952 } 4953 #pragma omp for // OK 4954 for (int i = 0; i < 10; ++i) 4955 ; 4956 #pragma omp for simd // OK 4957 for (int i = 0; i < 10; ++i) 4958 ; 4959 #pragma omp sections // OK 4960 { 4961 bar(); 4962 } 4963 } 4964 } 4965 #pragma omp target parallel for 4966 for (int i = 0; i < 10; ++i) { 4967 #pragma omp parallel for 4968 for (int i = 0; i < 10; ++i) 4969 ; 4970 } 4971 #pragma omp target parallel for 4972 for (int i = 0; i < 10; ++i) { 4973 #pragma omp parallel for simd 4974 for (int i = 0; i < 10; ++i) 4975 ; 4976 } 4977 #pragma omp target parallel for 4978 for (int i = 0; i < 10; ++i) { 4979 #pragma omp parallel sections 4980 { 4981 bar(); 4982 } 4983 } 4984 #pragma omp target parallel for 4985 for (int i = 0; i < 10; ++i) { 4986 #pragma omp task 4987 { 4988 bar(); 4989 } 4990 } 4991 #pragma omp target parallel for 4992 for (int i = 0; i < 10; ++i) { 4993 #pragma omp taskyield 4994 bar(); 4995 } 4996 #pragma omp target parallel for 4997 for (int i = 0; i < 10; ++i) { 4998 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4999 bar(); 5000 } 5001 #pragma omp target parallel for 5002 for (int i = 0; i < 10; ++i) { 5003 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 5004 bar(); 5005 } 5006 #pragma omp target parallel for 5007 for (int i = 0; i < 10; ++i) { 5008 #pragma omp taskwait 5009 bar(); 5010 } 5011 #pragma omp target parallel for 5012 for (int i = 0; i < 10; ++i) { 5013 #pragma omp flush 5014 bar(); 5015 } 5016 #pragma omp target parallel for 5017 for (int i = 0; i < 10; ++i) { 5018 #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?}} 5019 bar(); 5020 } 5021 #pragma omp target parallel for ordered 5022 for (int i = 0; i < 10; ++i) { 5023 #pragma omp ordered // OK 5024 bar(); 5025 } 5026 #pragma omp target parallel for 5027 for (int i = 0; i < 10; ++i) { 5028 #pragma omp atomic 5029 ++a; 5030 } 5031 #pragma omp target parallel for 5032 for (int i = 0; i < 10; ++i) { 5033 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 5034 ++a; 5035 } 5036 #pragma omp target parallel for 5037 for (int i = 0; i < 10; ++i) { 5038 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 5039 ++a; 5040 } 5041 #pragma omp target parallel for 5042 for (int i = 0; i < 10; ++i) { 5043 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5044 for (int i = 0; i < 10; ++i) 5045 ; 5046 } 5047 #pragma omp target parallel for 5048 for (int i = 0; i < 10; ++i) { 5049 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5050 ++a; 5051 } 5052 #pragma omp target parallel for 5053 for (int i = 0; i < 10; ++i) { 5054 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5055 ++a; 5056 } 5057 #pragma omp target parallel for 5058 for (int i = 0; i < 10; ++i) { 5059 #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?}} 5060 ++a; 5061 } 5062 #pragma omp target parallel for 5063 for (int i = 0; i < 10; ++i) { 5064 #pragma omp taskloop 5065 for (int i = 0; i < 10; ++i) 5066 ++a; 5067 } 5068 #pragma omp target parallel for 5069 for (int i = 0; i < 10; ++i) { 5070 #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?}} 5071 for (int j = 0; j < 10; ++j) 5072 ; 5073 } 5074 #pragma omp target parallel for 5075 for (int i = 0; i < 10; ++i) { 5076 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 5077 } 5078 #pragma omp target parallel for 5079 for (int i = 0; i < 10; ++i) { 5080 #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?}} 5081 for (int j = 0; j < 10; ++j) 5082 ; 5083 } 5084 #pragma omp target parallel for 5085 for (int i = 0; i < 10; ++i) { 5086 #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?}} 5087 for (int j = 0; j < 10; ++j) 5088 ; 5089 } 5090 #pragma omp target parallel for 5091 for (int i = 0; i < 10; ++i) { 5092 #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?}} 5093 for (int j = 0; j < 10; ++j) 5094 ; 5095 } 5096 #pragma omp target parallel for 5097 for (int i = 0; i < 10; ++i) { 5098 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5099 for (int j = 0; j < 10; ++j) 5100 ; 5101 } 5102 #pragma omp target parallel for 5103 for (int i = 0; i < 10; ++i) { 5104 #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?}} 5105 for (int j = 0; j < 10; ++j) 5106 ; 5107 } 5108 #pragma omp target parallel for 5109 for (int i = 0; i < 10; ++i) { 5110 #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?}} 5111 for (int j = 0; j < 10; ++j) 5112 ; 5113 } 5114 #pragma omp target parallel for 5115 for (int i = 0; i < 10; ++i) { 5116 #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?}} 5117 for (int j = 0; j < 10; ++j) 5118 ; 5119 } 5120 #pragma omp target parallel for 5121 for (int i = 0; i < 10; ++i) { 5122 #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?}} 5123 for (int j = 0; j < 10; ++j) 5124 ; 5125 } 5126 #pragma omp target parallel for 5127 for (int i = 0; i < 10; ++i) { 5128 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 5129 a++; 5130 } 5131 #pragma omp target parallel for 5132 for (int i = 0; i < 10; ++i) { 5133 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 5134 for (int j = 0; j < 10; ++j) 5135 ; 5136 } 5137 #pragma omp target parallel for 5138 for (int i = 0; i < 10; ++i) { 5139 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 5140 for (int j = 0; j < 10; ++j) 5141 ; 5142 } 5143 #pragma omp target parallel for 5144 for (int i = 0; i < 10; ++i) { 5145 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5146 for (int j = 0; j < 10; ++j) 5147 ; 5148 } 5149 #pragma omp target parallel for 5150 for (int i = 0; i < 10; ++i) { 5151 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 5152 for (int j = 0; j < 10; ++j) 5153 ; 5154 } 5155 5156 // TEAMS DIRECTIVE 5157 #pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5158 bar(); 5159 #pragma omp target 5160 #pragma omp teams 5161 #pragma omp parallel 5162 bar(); 5163 #pragma omp target 5164 #pragma omp teams 5165 #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?}} 5166 for (int i = 0; i < 10; ++i) 5167 ; 5168 #pragma omp target 5169 #pragma omp teams 5170 #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?}} 5171 for (int i = 0; i < 10; ++i) 5172 ; 5173 #pragma omp target 5174 #pragma omp teams 5175 #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?}} 5176 for (int i = 0; i < 10; ++i) 5177 ; 5178 #pragma omp target 5179 #pragma omp teams 5180 #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?}} 5181 { 5182 bar(); 5183 } 5184 #pragma omp target 5185 #pragma omp teams 5186 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 5187 { 5188 bar(); 5189 } 5190 #pragma omp target 5191 #pragma omp teams 5192 #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?}} 5193 bar(); 5194 5195 #pragma omp target 5196 #pragma omp teams 5197 #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?}} 5198 { 5199 bar(); 5200 } 5201 #pragma omp target 5202 #pragma omp teams 5203 #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?}} 5204 { 5205 bar(); 5206 } 5207 #pragma omp target 5208 #pragma omp teams 5209 #pragma omp parallel for 5210 for (int i = 0; i < 10; ++i) 5211 ; 5212 #pragma omp target 5213 #pragma omp teams 5214 #pragma omp parallel for simd 5215 for (int i = 0; i < 10; ++i) 5216 ; 5217 #pragma omp target 5218 #pragma omp teams 5219 #pragma omp parallel sections 5220 { 5221 bar(); 5222 } 5223 #pragma omp target 5224 #pragma omp teams 5225 #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?}} 5226 { 5227 bar(); 5228 } 5229 #pragma omp target 5230 #pragma omp teams 5231 { 5232 #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?}} 5233 bar(); 5234 } 5235 #pragma omp target 5236 #pragma omp teams 5237 { 5238 #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?}} 5239 bar(); 5240 } 5241 #pragma omp target 5242 #pragma omp teams 5243 { 5244 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 5245 bar(); 5246 } 5247 #pragma omp target 5248 #pragma omp teams 5249 { 5250 #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?}} 5251 bar(); 5252 } 5253 #pragma omp target 5254 #pragma omp teams 5255 { 5256 #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?}} 5257 bar(); 5258 } 5259 #pragma omp target 5260 #pragma omp teams 5261 { 5262 #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?}} 5263 bar(); 5264 } 5265 #pragma omp target 5266 #pragma omp teams 5267 { 5268 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 5269 ++a; 5270 } 5271 #pragma omp target 5272 #pragma omp teams 5273 { 5274 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5275 ++a; 5276 } 5277 #pragma omp target 5278 #pragma omp teams 5279 { 5280 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5281 ++a; 5282 } 5283 #pragma omp target 5284 #pragma omp teams 5285 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5286 for (int i = 0; i < 10; ++i) 5287 ; 5288 #pragma omp target 5289 #pragma omp teams 5290 { 5291 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5292 ++a; 5293 } 5294 #pragma omp target 5295 #pragma omp teams 5296 { 5297 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5298 ++a; 5299 } 5300 #pragma omp target 5301 #pragma omp teams 5302 { 5303 #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?}} 5304 ++a; 5305 } 5306 #pragma omp target 5307 #pragma omp teams 5308 { 5309 #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?}} 5310 for (int i = 0; i < 10; ++i) 5311 ++a; 5312 } 5313 #pragma omp target 5314 #pragma omp teams 5315 #pragma omp distribute 5316 for (int i = 0; i < 10; ++i) 5317 ; 5318 #pragma omp target 5319 #pragma omp teams 5320 #pragma omp distribute 5321 for (int i = 0; i < 10; ++i) 5322 ; 5323 #pragma omp distribute 5324 for (int j = 0; j < 10; ++j) 5325 ; 5326 #pragma omp target 5327 #pragma omp teams 5328 { 5329 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5330 } 5331 #pragma omp target 5332 #pragma omp teams 5333 { 5334 #pragma omp distribute parallel for 5335 for (int i = 0; i < 10; ++i) 5336 ; 5337 #pragma omp distribute parallel for 5338 for (int j = 0; j < 10; ++j) 5339 ; 5340 } 5341 #pragma omp target 5342 #pragma omp teams 5343 { 5344 #pragma omp distribute parallel for simd 5345 for (int i = 0; i < 10; ++i) 5346 ; 5347 #pragma omp distribute parallel for simd 5348 for (int j = 0; j < 10; ++j) 5349 ; 5350 } 5351 #pragma omp target 5352 #pragma omp teams 5353 { 5354 #pragma omp distribute simd 5355 for (int i = 0; i < 10; ++i) 5356 ; 5357 #pragma omp distribute simd 5358 for (int j = 0; j < 10; ++j) 5359 ; 5360 } 5361 #pragma omp target 5362 #pragma omp teams 5363 { 5364 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5365 for (int i = 0; i < 10; ++i) 5366 ; 5367 } 5368 #pragma omp target 5369 #pragma omp teams 5370 { 5371 #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?}} 5372 for (int i = 0; i < 10; ++i) 5373 ; 5374 } 5375 #pragma omp target 5376 #pragma omp teams 5377 { 5378 #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?}} 5379 for (int i = 0; i < 10; ++i) 5380 ; 5381 } 5382 #pragma omp target 5383 #pragma omp teams 5384 { 5385 #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?}} 5386 for (int i = 0; i < 10; ++i) 5387 ; 5388 } 5389 #pragma omp target 5390 #pragma omp teams 5391 { 5392 #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?}} 5393 for (int i = 0; i < 10; ++i) 5394 ; 5395 } 5396 #pragma omp target 5397 #pragma omp teams 5398 { 5399 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5400 a++; 5401 } 5402 #pragma omp target 5403 #pragma omp teams 5404 { 5405 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5406 for (int i = 0; i < 10; ++i) 5407 ; 5408 } 5409 #pragma omp target 5410 #pragma omp teams 5411 { 5412 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5413 for (int i = 0; i < 10; ++i) 5414 ; 5415 } 5416 #pragma omp target 5417 #pragma omp teams 5418 { 5419 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5420 for (int i = 0; i < 10; ++i) 5421 ; 5422 } 5423 #pragma omp target 5424 #pragma omp teams 5425 { 5426 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5427 for (int i = 0; i < 10; ++i) 5428 ; 5429 } 5430 5431 // TASKLOOP DIRECTIVE 5432 #pragma omp taskloop 5433 for (int i = 0; i < 10; ++i) { 5434 #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?}} 5435 for (int i = 0; i < 10; ++i) 5436 ; 5437 } 5438 #pragma omp taskloop 5439 for (int i = 0; i < 10; ++i) { 5440 #pragma omp simd 5441 for (int i = 0; i < 10; ++i) 5442 ; 5443 } 5444 #pragma omp taskloop 5445 for (int i = 0; i < 10; ++i) { 5446 #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?}} 5447 for (int i = 0; i < 10; ++i) 5448 ; 5449 } 5450 #pragma omp taskloop 5451 for (int i = 0; i < 10; ++i) { 5452 #pragma omp parallel 5453 for (int i = 0; i < 10; ++i) 5454 ; 5455 } 5456 #pragma omp taskloop 5457 for (int i = 0; i < 10; ++i) { 5458 #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?}} 5459 { 5460 bar(); 5461 } 5462 } 5463 #pragma omp taskloop 5464 for (int i = 0; i < 10; ++i) { 5465 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 5466 { 5467 bar(); 5468 } 5469 } 5470 #pragma omp taskloop 5471 for (int i = 0; i < 10; ++i) { 5472 #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?}} 5473 { 5474 bar(); 5475 } 5476 } 5477 5478 #pragma omp taskloop 5479 for (int i = 0; i < 10; ++i) { 5480 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5481 { 5482 bar(); 5483 } 5484 } 5485 #pragma omp taskloop 5486 for (int i = 0; i < 10; ++i) { 5487 #pragma omp critical 5488 { 5489 bar(); 5490 } 5491 } 5492 #pragma omp taskloop 5493 for (int i = 0; i < 10; ++i) { 5494 #pragma omp parallel 5495 { 5496 #pragma omp single // OK 5497 { 5498 bar(); 5499 } 5500 #pragma omp for // OK 5501 for (int i = 0; i < 10; ++i) 5502 ; 5503 #pragma omp sections // OK 5504 { 5505 bar(); 5506 } 5507 } 5508 } 5509 #pragma omp taskloop 5510 for (int i = 0; i < 10; ++i) { 5511 #pragma omp parallel for 5512 for (int i = 0; i < 10; ++i) 5513 ; 5514 } 5515 #pragma omp taskloop 5516 for (int i = 0; i < 10; ++i) { 5517 #pragma omp parallel for simd 5518 for (int i = 0; i < 10; ++i) 5519 ; 5520 } 5521 #pragma omp taskloop 5522 for (int i = 0; i < 10; ++i) { 5523 #pragma omp parallel sections 5524 { 5525 bar(); 5526 } 5527 } 5528 #pragma omp taskloop 5529 for (int i = 0; i < 10; ++i) { 5530 #pragma omp task 5531 { 5532 bar(); 5533 } 5534 } 5535 #pragma omp taskloop 5536 for (int i = 0; i < 10; ++i) { 5537 #pragma omp taskyield 5538 bar(); 5539 } 5540 #pragma omp taskloop 5541 for (int i = 0; i < 10; ++i) { 5542 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5543 bar(); 5544 } 5545 #pragma omp taskloop 5546 for (int i = 0; i < 10; ++i) { 5547 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5548 bar(); 5549 } 5550 #pragma omp taskloop 5551 for (int i = 0; i < 10; ++i) { 5552 #pragma omp taskwait 5553 bar(); 5554 } 5555 #pragma omp taskloop 5556 for (int i = 0; i < 10; ++i) { 5557 #pragma omp flush 5558 bar(); 5559 } 5560 #pragma omp taskloop 5561 for (int i = 0; i < 10; ++i) { 5562 #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?}} 5563 bar(); 5564 } 5565 #pragma omp taskloop 5566 for (int i = 0; i < 10; ++i) { 5567 #pragma omp atomic 5568 ++a; 5569 } 5570 #pragma omp taskloop 5571 for (int i = 0; i < 10; ++i) { 5572 #pragma omp target 5573 ++a; 5574 } 5575 #pragma omp taskloop 5576 for (int i = 0; i < 10; ++i) { 5577 #pragma omp target parallel 5578 ++a; 5579 } 5580 #pragma omp taskloop 5581 for (int i = 0; i < 10; ++i) { 5582 #pragma omp target parallel for 5583 for (int i = 0; i < 10; ++i) 5584 ; 5585 } 5586 #pragma omp taskloop 5587 for (int i = 0; i < 10; ++i) { 5588 #pragma omp target enter data map(to: a) 5589 ++a; 5590 } 5591 #pragma omp taskloop 5592 for (int i = 0; i < 10; ++i) { 5593 #pragma omp target exit data map(from: a) 5594 ++a; 5595 } 5596 #pragma omp taskloop 5597 for (int i = 0; i < 10; ++i) { 5598 #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?}} 5599 ++a; 5600 } 5601 #pragma omp taskloop 5602 for (int i = 0; i < 10; ++i) { 5603 #pragma omp taskloop 5604 for (int i = 0; i < 10; ++i) 5605 ++a; 5606 } 5607 #pragma omp taskloop 5608 for (int i = 0; i < 10; ++i) { 5609 #pragma omp target update to(a) 5610 bar(); 5611 } 5612 #pragma omp taskloop 5613 for (int i = 0; i < 10; ++i) { 5614 #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?}} 5615 for (int j = 0; j < 10; ++j) 5616 ++a; 5617 } 5618 #pragma omp taskloop 5619 for (int i = 0; i < 10; ++i) { 5620 #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?}} 5621 for (int j = 0; j < 10; ++j) 5622 ++a; 5623 } 5624 #pragma omp taskloop 5625 for (int i = 0; i < 10; ++i) { 5626 #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?}} 5627 for (int j = 0; j < 10; ++j) 5628 ++a; 5629 } 5630 #pragma omp taskloop 5631 for (int i = 0; i < 10; ++i) { 5632 #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?}} 5633 for (int j = 0; j < 10; ++j) 5634 ++a; 5635 } 5636 #pragma omp taskloop 5637 for (int i = 0; i < 10; ++i) { 5638 #pragma omp target simd // OK 5639 for (int j = 0; j < 10; ++j) 5640 ++a; 5641 } 5642 #pragma omp taskloop 5643 for (int i = 0; i < 10; ++i) { 5644 #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?}} 5645 for (int j = 0; j < 10; ++j) 5646 ++a; 5647 } 5648 #pragma omp taskloop 5649 for (int i = 0; i < 10; ++i) { 5650 #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?}} 5651 for (int j = 0; j < 10; ++j) 5652 ++a; 5653 } 5654 #pragma omp taskloop 5655 for (int i = 0; i < 10; ++i) { 5656 #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?}} 5657 for (int j = 0; j < 10; ++j) 5658 ++a; 5659 } 5660 #pragma omp taskloop 5661 for (int i = 0; i < 10; ++i) { 5662 #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?}} 5663 for (int j = 0; j < 10; ++j) 5664 ++a; 5665 } 5666 #pragma omp taskloop 5667 for (int i = 0; i < 10; ++i) { 5668 #pragma omp target teams // OK 5669 ++a; 5670 } 5671 #pragma omp taskloop 5672 for (int i = 0; i < 10; ++i) { 5673 #pragma omp target teams distribute // OK 5674 for (int j = 0; j < 10; ++j) 5675 ++a; 5676 } 5677 #pragma omp taskloop 5678 for (int i = 0; i < 10; ++i) { 5679 #pragma omp target teams distribute parallel for // OK 5680 for (int j = 0; j < 10; ++j) 5681 ++a; 5682 } 5683 #pragma omp taskloop 5684 for (int i = 0; i < 10; ++i) { 5685 #pragma omp target teams distribute parallel for simd // OK 5686 for (int j = 0; j < 10; ++j) 5687 ++a; 5688 } 5689 #pragma omp taskloop 5690 for (int i = 0; i < 10; ++i) { 5691 #pragma omp target teams distribute simd // OK 5692 for (int j = 0; j < 10; ++j) 5693 ++a; 5694 } 5695 #pragma omp taskloop 5696 for (int i = 0; i < 10; ++i) { 5697 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 5698 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}} 5699 } 5700 #pragma omp taskloop 5701 for (int i = 0; i < 10; ++i) { 5702 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5703 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5704 } 5705 #pragma omp master taskloop 5706 for (int i = 0; i < 10; ++i) { 5707 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 5708 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}} 5709 } 5710 #pragma omp master taskloop 5711 for (int i = 0; i < 10; ++i) { 5712 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 5713 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}} 5714 } 5715 #pragma omp parallel master taskloop 5716 for (int i = 0; i < 10; ++i) { 5717 #pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5718 #pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5719 } 5720 #pragma omp parallel master taskloop 5721 for (int i = 0; i < 10; ++i) { 5722 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5723 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}} 5724 } 5725 5726 // DISTRIBUTE DIRECTIVE 5727 #pragma omp target 5728 #pragma omp teams 5729 #pragma omp distribute 5730 for (int i = 0; i < 10; ++i) { 5731 #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?}} 5732 for (int i = 0; i < 10; ++i) 5733 ; 5734 } 5735 #pragma omp target 5736 #pragma omp teams 5737 #pragma omp distribute 5738 for (int i = 0; i < 10; ++i) { 5739 #pragma omp for 5740 for (int i = 0; i < 10; ++i) 5741 ; 5742 } 5743 #pragma omp target 5744 #pragma omp teams 5745 #pragma omp distribute 5746 for (int i = 0; i < 10; ++i) { 5747 #pragma omp simd 5748 for (int i = 0; i < 10; ++i) 5749 ; 5750 } 5751 #pragma omp target 5752 #pragma omp teams 5753 #pragma omp distribute 5754 for (int i = 0; i < 10; ++i) { 5755 #pragma omp for simd 5756 for (int i = 0; i < 10; ++i) 5757 ; 5758 } 5759 #pragma omp target 5760 #pragma omp teams 5761 #pragma omp distribute 5762 for (int i = 0; i < 10; ++i) { 5763 #pragma omp parallel 5764 for (int i = 0; i < 10; ++i) 5765 ; 5766 } 5767 #pragma omp target 5768 #pragma omp teams 5769 #pragma omp distribute 5770 for (int i = 0; i < 10; ++i) { 5771 #pragma omp sections 5772 { 5773 bar(); 5774 } 5775 } 5776 #pragma omp target 5777 #pragma omp teams 5778 #pragma omp distribute 5779 for (int i = 0; i < 10; ++i) { 5780 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 5781 { 5782 bar(); 5783 } 5784 } 5785 #pragma omp target 5786 #pragma omp teams 5787 #pragma omp distribute 5788 for (int i = 0; i < 10; ++i) { 5789 #pragma omp single 5790 { 5791 bar(); 5792 } 5793 } 5794 #pragma omp target 5795 #pragma omp teams 5796 #pragma omp distribute 5797 for (int i = 0; i < 10; ++i) { 5798 #pragma omp master 5799 { 5800 bar(); 5801 } 5802 } 5803 #pragma omp target 5804 #pragma omp teams 5805 #pragma omp distribute 5806 for (int i = 0; i < 10; ++i) { 5807 #pragma omp critical 5808 { 5809 bar(); 5810 } 5811 } 5812 #pragma omp target 5813 #pragma omp teams 5814 #pragma omp distribute 5815 for (int i = 0; i < 10; ++i) { 5816 #pragma omp parallel 5817 { 5818 #pragma omp single 5819 { 5820 bar(); 5821 } 5822 } 5823 } 5824 #pragma omp target 5825 #pragma omp teams 5826 #pragma omp distribute 5827 for (int i = 0; i < 10; ++i) { 5828 #pragma omp parallel for 5829 for (int i = 0; i < 10; ++i) 5830 ; 5831 } 5832 #pragma omp target 5833 #pragma omp teams 5834 #pragma omp distribute 5835 for (int i = 0; i < 10; ++i) { 5836 #pragma omp parallel for simd 5837 for (int i = 0; i < 10; ++i) 5838 ; 5839 } 5840 #pragma omp target 5841 #pragma omp teams 5842 #pragma omp distribute 5843 for (int i = 0; i < 10; ++i) { 5844 #pragma omp parallel sections 5845 { 5846 bar(); 5847 } 5848 } 5849 #pragma omp target 5850 #pragma omp teams 5851 #pragma omp distribute 5852 for (int i = 0; i < 10; ++i) { 5853 #pragma omp task 5854 { 5855 bar(); 5856 } 5857 } 5858 #pragma omp target 5859 #pragma omp teams 5860 #pragma omp distribute 5861 for (int i = 0; i < 10; ++i) { 5862 #pragma omp taskyield 5863 bar(); 5864 } 5865 #pragma omp target 5866 #pragma omp teams 5867 #pragma omp distribute 5868 for (int i = 0; i < 10; ++i) { 5869 #pragma omp barrier 5870 bar(); 5871 } 5872 #pragma omp target 5873 #pragma omp teams 5874 #pragma omp distribute 5875 for (int i = 0; i < 10; ++i) { 5876 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 5877 bar(); 5878 } 5879 #pragma omp target 5880 #pragma omp teams 5881 #pragma omp distribute 5882 for (int i = 0; i < 10; ++i) { 5883 #pragma omp taskwait 5884 bar(); 5885 } 5886 #pragma omp target 5887 #pragma omp teams 5888 #pragma omp distribute 5889 for (int i = 0; i < 10; ++i) { 5890 #pragma omp flush 5891 bar(); 5892 } 5893 #pragma omp target 5894 #pragma omp teams 5895 #pragma omp distribute 5896 for (int i = 0; i < 10; ++i) { 5897 #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?}} 5898 bar(); 5899 } 5900 #pragma omp target 5901 #pragma omp teams 5902 #pragma omp distribute 5903 for (int i = 0; i < 10; ++i) { 5904 #pragma omp atomic 5905 ++a; 5906 } 5907 #pragma omp target 5908 #pragma omp teams 5909 #pragma omp distribute 5910 for (int i = 0; i < 10; ++i) { 5911 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5912 ++a; 5913 } 5914 #pragma omp target 5915 #pragma omp teams 5916 #pragma omp distribute 5917 for (int i = 0; i < 10; ++i) { 5918 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5919 ++a; 5920 } 5921 #pragma omp target 5922 #pragma omp teams 5923 #pragma omp distribute 5924 for (int i = 0; i < 10; ++i) { 5925 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5926 for (int i = 0; i < 10; ++i) 5927 ; 5928 } 5929 #pragma omp target 5930 #pragma omp teams 5931 #pragma omp distribute 5932 for (int i = 0; i < 10; ++i) { 5933 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5934 ++a; 5935 } 5936 #pragma omp target 5937 #pragma omp teams 5938 #pragma omp distribute 5939 for (int i = 0; i < 10; ++i) { 5940 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5941 ++a; 5942 } 5943 #pragma omp target 5944 #pragma omp teams 5945 #pragma omp distribute 5946 for (int i = 0; i < 10; ++i) { 5947 #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?}} 5948 ++a; 5949 } 5950 #pragma omp target 5951 #pragma omp teams 5952 #pragma omp distribute 5953 for (int i = 0; i < 10; ++i) { 5954 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5955 ++a; 5956 } 5957 #pragma omp target 5958 #pragma omp teams 5959 #pragma omp distribute 5960 for (int i = 0; i < 10; ++i) { 5961 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5962 for (int j = 0; j < 10; ++j) 5963 ; 5964 } 5965 #pragma omp target 5966 #pragma omp teams 5967 #pragma omp distribute 5968 for (int i = 0; i < 10; ++i) { 5969 #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?}} 5970 for (int j = 0; j < 10; ++j) 5971 ; 5972 } 5973 #pragma omp target 5974 #pragma omp teams 5975 #pragma omp distribute 5976 for (int i = 0; i < 10; ++i) { 5977 #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?}} 5978 for (int j = 0; j < 10; ++j) 5979 ; 5980 } 5981 #pragma omp target 5982 #pragma omp teams 5983 #pragma omp distribute 5984 for (int i = 0; i < 10; ++i) { 5985 #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?}} 5986 for (int j = 0; j < 10; ++j) 5987 ; 5988 } 5989 #pragma omp target 5990 #pragma omp teams 5991 #pragma omp distribute 5992 for (int i = 0; i < 10; ++i) { 5993 #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?}} 5994 for (int j = 0; j < 10; ++j) 5995 ; 5996 } 5997 #pragma omp target 5998 #pragma omp teams 5999 #pragma omp distribute 6000 for (int i = 0; i < 10; ++i) { 6001 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6002 a++; 6003 } 6004 #pragma omp target 6005 #pragma omp teams 6006 #pragma omp distribute 6007 for (int i = 0; i < 10; ++i) { 6008 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6009 for (int j = 0; j < 10; ++j) 6010 ; 6011 } 6012 #pragma omp target 6013 #pragma omp teams 6014 #pragma omp distribute 6015 for (int i = 0; i < 10; ++i) { 6016 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6017 for (int j = 0; j < 10; ++j) 6018 ; 6019 } 6020 #pragma omp target 6021 #pragma omp teams 6022 #pragma omp distribute 6023 for (int i = 0; i < 10; ++i) { 6024 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6025 for (int j = 0; j < 10; ++j) 6026 ; 6027 } 6028 #pragma omp target 6029 #pragma omp teams 6030 #pragma omp distribute 6031 for (int i = 0; i < 10; ++i) { 6032 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6033 for (int j = 0; j < 10; ++j) 6034 ; 6035 } 6036 6037 // DISTRIBUTE PARALLEL FOR DIRECTIVE 6038 #pragma omp target 6039 #pragma omp teams 6040 #pragma omp distribute parallel for 6041 for (int i = 0; i < 10; ++i) { 6042 #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?}} 6043 for (int i = 0; i < 10; ++i) 6044 ; 6045 } 6046 #pragma omp target 6047 #pragma omp teams 6048 #pragma omp distribute parallel for 6049 for (int i = 0; i < 10; ++i) { 6050 #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?}} 6051 for (int i = 0; i < 10; ++i) 6052 ; 6053 } 6054 #pragma omp target 6055 #pragma omp teams 6056 #pragma omp distribute parallel for 6057 for (int i = 0; i < 10; ++i) { 6058 #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?}} 6059 for (int i = 0; i < 10; ++i) 6060 ; 6061 } 6062 #pragma omp target 6063 #pragma omp teams 6064 #pragma omp distribute parallel for 6065 for (int i = 0; i < 10; ++i) { 6066 #pragma omp simd 6067 for (int i = 0; i < 10; ++i) 6068 ; 6069 } 6070 #pragma omp target 6071 #pragma omp teams 6072 #pragma omp distribute parallel for 6073 for (int i = 0; i < 10; ++i) { 6074 #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?}} 6075 for (int i = 0; i < 10; ++i) 6076 ; 6077 } 6078 #pragma omp target 6079 #pragma omp teams 6080 #pragma omp distribute parallel for 6081 for (int i = 0; i < 10; ++i) { 6082 #pragma omp parallel 6083 for (int i = 0; i < 10; ++i) 6084 ; 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 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?}} 6091 { 6092 bar(); 6093 } 6094 } 6095 #pragma omp target 6096 #pragma omp teams 6097 #pragma omp distribute parallel for 6098 for (int i = 0; i < 10; ++i) { 6099 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 6100 { 6101 bar(); 6102 } 6103 } 6104 #pragma omp target 6105 #pragma omp teams 6106 #pragma omp distribute parallel for 6107 for (int i = 0; i < 10; ++i) { 6108 #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?}} 6109 { 6110 bar(); 6111 } 6112 } 6113 #pragma omp target 6114 #pragma omp teams 6115 #pragma omp distribute parallel for 6116 for (int i = 0; i < 10; ++i) { 6117 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6118 { 6119 bar(); 6120 } 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 critical 6127 { 6128 bar(); 6129 } 6130 } 6131 #pragma omp target 6132 #pragma omp teams 6133 #pragma omp distribute parallel for 6134 for (int i = 0; i < 10; ++i) { 6135 #pragma omp parallel 6136 { 6137 #pragma omp single 6138 { 6139 bar(); 6140 } 6141 } 6142 } 6143 #pragma omp target 6144 #pragma omp teams 6145 #pragma omp distribute parallel for 6146 for (int i = 0; i < 10; ++i) { 6147 #pragma omp parallel for 6148 for (int i = 0; i < 10; ++i) 6149 ; 6150 } 6151 #pragma omp target 6152 #pragma omp teams 6153 #pragma omp distribute parallel for 6154 for (int i = 0; i < 10; ++i) { 6155 #pragma omp parallel for simd 6156 for (int i = 0; i < 10; ++i) 6157 ; 6158 } 6159 #pragma omp target 6160 #pragma omp teams 6161 #pragma omp distribute parallel for 6162 for (int i = 0; i < 10; ++i) { 6163 #pragma omp parallel sections 6164 { 6165 bar(); 6166 } 6167 } 6168 #pragma omp target 6169 #pragma omp teams 6170 #pragma omp distribute parallel for 6171 for (int i = 0; i < 10; ++i) { 6172 #pragma omp task 6173 { 6174 bar(); 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 taskyield 6182 bar(); 6183 } 6184 #pragma omp target 6185 #pragma omp teams 6186 #pragma omp distribute parallel for 6187 for (int i = 0; i < 10; ++i) { 6188 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6189 bar(); 6190 } 6191 #pragma omp target 6192 #pragma omp teams 6193 #pragma omp distribute parallel for 6194 for (int i = 0; i < 10; ++i) { 6195 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 6196 bar(); 6197 } 6198 #pragma omp target 6199 #pragma omp teams 6200 #pragma omp distribute parallel for 6201 for (int i = 0; i < 10; ++i) { 6202 #pragma omp taskwait 6203 bar(); 6204 } 6205 #pragma omp target 6206 #pragma omp teams 6207 #pragma omp distribute parallel for 6208 for (int i = 0; i < 10; ++i) { 6209 #pragma omp flush 6210 bar(); 6211 } 6212 #pragma omp target 6213 #pragma omp teams 6214 #pragma omp distribute parallel for 6215 for (int i = 0; i < 10; ++i) { 6216 #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?}} 6217 bar(); 6218 } 6219 #pragma omp target 6220 #pragma omp teams 6221 #pragma omp distribute parallel for 6222 for (int i = 0; i < 10; ++i) { 6223 #pragma omp atomic 6224 ++a; 6225 } 6226 #pragma omp target 6227 #pragma omp teams 6228 #pragma omp distribute parallel for 6229 for (int i = 0; i < 10; ++i) { 6230 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6231 ++a; 6232 } 6233 #pragma omp target 6234 #pragma omp teams 6235 #pragma omp distribute parallel for 6236 for (int i = 0; i < 10; ++i) { 6237 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6238 ++a; 6239 } 6240 #pragma omp target 6241 #pragma omp teams 6242 #pragma omp distribute parallel for 6243 for (int i = 0; i < 10; ++i) { 6244 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6245 for (int i = 0; i < 10; ++i) 6246 ; 6247 } 6248 #pragma omp target 6249 #pragma omp teams 6250 #pragma omp distribute parallel for 6251 for (int i = 0; i < 10; ++i) { 6252 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6253 ++a; 6254 } 6255 #pragma omp target 6256 #pragma omp teams 6257 #pragma omp distribute parallel for 6258 for (int i = 0; i < 10; ++i) { 6259 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6260 ++a; 6261 } 6262 #pragma omp target 6263 #pragma omp teams 6264 #pragma omp distribute parallel for 6265 for (int i = 0; i < 10; ++i) { 6266 #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?}} 6267 ++a; 6268 } 6269 #pragma omp target 6270 #pragma omp teams 6271 #pragma omp distribute parallel for 6272 for (int i = 0; i < 10; ++i) { 6273 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6274 ++a; 6275 } 6276 #pragma omp target 6277 #pragma omp teams 6278 #pragma omp distribute parallel for 6279 for (int i = 0; i < 10; ++i) { 6280 #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?}} 6281 for (int i = 0; i < 10; ++i) 6282 ; 6283 } 6284 #pragma omp target 6285 #pragma omp teams 6286 #pragma omp distribute parallel for 6287 for (int i = 0; i < 10; ++i) { 6288 #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?}} 6289 for (int i = 0; i < 10; ++i) 6290 ; 6291 } 6292 #pragma omp target 6293 #pragma omp teams 6294 #pragma omp distribute parallel for 6295 for (int i = 0; i < 10; ++i) { 6296 #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?}} 6297 for (int i = 0; i < 10; ++i) 6298 ; 6299 } 6300 #pragma omp target 6301 #pragma omp teams 6302 #pragma omp distribute parallel for 6303 for (int i = 0; i < 10; ++i) { 6304 #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?}} 6305 for (int i = 0; i < 10; ++i) 6306 ; 6307 } 6308 #pragma omp target 6309 #pragma omp teams 6310 #pragma omp distribute parallel for 6311 for (int i = 0; i < 10; ++i) { 6312 #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?}} 6313 for (int i = 0; i < 10; ++i) 6314 ; 6315 } 6316 #pragma omp target 6317 #pragma omp teams 6318 #pragma omp distribute parallel for 6319 for (int i = 0; i < 10; ++i) { 6320 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6321 a++; 6322 } 6323 #pragma omp target 6324 #pragma omp teams 6325 #pragma omp distribute parallel for 6326 for (int i = 0; i < 10; ++i) { 6327 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6328 for (int i = 0; i < 10; ++i) 6329 ; 6330 } 6331 #pragma omp target 6332 #pragma omp teams 6333 #pragma omp distribute parallel for 6334 for (int i = 0; i < 10; ++i) { 6335 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6336 for (int i = 0; i < 10; ++i) 6337 ; 6338 } 6339 #pragma omp target 6340 #pragma omp teams 6341 #pragma omp distribute parallel for 6342 for (int i = 0; i < 10; ++i) { 6343 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6344 for (int i = 0; i < 10; ++i) 6345 ; 6346 } 6347 #pragma omp target 6348 #pragma omp teams 6349 #pragma omp distribute parallel for 6350 for (int i = 0; i < 10; ++i) { 6351 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6352 for (int i = 0; i < 10; ++i) 6353 ; 6354 } 6355 6356 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6357 #pragma omp target 6358 #pragma omp teams 6359 #pragma omp distribute parallel for simd 6360 for (int i = 0; i < 10; ++i) { 6361 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6362 for (int i = 0; i < 10; ++i) 6363 ; 6364 } 6365 #pragma omp target 6366 #pragma omp teams 6367 #pragma omp distribute parallel for simd 6368 for (int i = 0; i < 10; ++i) { 6369 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6370 for (int i = 0; i < 10; ++i) 6371 ; 6372 } 6373 #pragma omp target 6374 #pragma omp teams 6375 #pragma omp distribute parallel for simd 6376 for (int i = 0; i < 10; ++i) { 6377 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6378 for (int i = 0; i < 10; ++i) 6379 ; 6380 } 6381 #pragma omp target 6382 #pragma omp teams 6383 #pragma omp distribute parallel for simd 6384 for (int i = 0; i < 10; ++i) { 6385 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6386 for (int i = 0; i < 10; ++i) 6387 ; 6388 } 6389 #pragma omp target 6390 #pragma omp teams 6391 #pragma omp distribute parallel for simd 6392 for (int i = 0; i < 10; ++i) { 6393 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6394 for (int i = 0; i < 10; ++i) 6395 ; 6396 } 6397 #pragma omp target 6398 #pragma omp teams 6399 #pragma omp distribute parallel for simd 6400 for (int i = 0; i < 10; ++i) { 6401 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6402 for (int i = 0; i < 10; ++i) 6403 ; 6404 } 6405 #pragma omp target 6406 #pragma omp teams 6407 #pragma omp distribute parallel for simd 6408 for (int i = 0; i < 10; ++i) { 6409 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6410 { 6411 bar(); 6412 } 6413 } 6414 #pragma omp target 6415 #pragma omp teams 6416 #pragma omp distribute parallel for simd 6417 for (int i = 0; i < 10; ++i) { 6418 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6419 { 6420 bar(); 6421 } 6422 } 6423 #pragma omp target 6424 #pragma omp teams 6425 #pragma omp distribute parallel for simd 6426 for (int i = 0; i < 10; ++i) { 6427 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6428 { 6429 bar(); 6430 } 6431 } 6432 #pragma omp target 6433 #pragma omp teams 6434 #pragma omp distribute parallel for simd 6435 for (int i = 0; i < 10; ++i) { 6436 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6437 { 6438 bar(); 6439 } 6440 } 6441 #pragma omp target 6442 #pragma omp teams 6443 #pragma omp distribute parallel for simd 6444 for (int i = 0; i < 10; ++i) { 6445 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6446 { 6447 bar(); 6448 } 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 parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6455 { 6456 #pragma omp single 6457 { 6458 bar(); 6459 } 6460 } 6461 } 6462 #pragma omp target 6463 #pragma omp teams 6464 #pragma omp distribute parallel for simd 6465 for (int i = 0; i < 10; ++i) { 6466 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6467 for (int i = 0; i < 10; ++i) 6468 ; 6469 } 6470 #pragma omp target 6471 #pragma omp teams 6472 #pragma omp distribute parallel for simd 6473 for (int i = 0; i < 10; ++i) { 6474 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6475 for (int i = 0; i < 10; ++i) 6476 ; 6477 } 6478 #pragma omp target 6479 #pragma omp teams 6480 #pragma omp distribute parallel for simd 6481 for (int i = 0; i < 10; ++i) { 6482 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6483 { 6484 bar(); 6485 } 6486 } 6487 #pragma omp target 6488 #pragma omp teams 6489 #pragma omp distribute parallel for simd 6490 for (int i = 0; i < 10; ++i) { 6491 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6492 { 6493 bar(); 6494 } 6495 } 6496 #pragma omp target 6497 #pragma omp teams 6498 #pragma omp distribute parallel for simd 6499 for (int i = 0; i < 10; ++i) { 6500 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6501 bar(); 6502 } 6503 #pragma omp target 6504 #pragma omp teams 6505 #pragma omp distribute parallel for simd 6506 for (int i = 0; i < 10; ++i) { 6507 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6508 bar(); 6509 } 6510 #pragma omp target 6511 #pragma omp teams 6512 #pragma omp distribute parallel for simd 6513 for (int i = 0; i < 10; ++i) { 6514 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 6515 bar(); 6516 } 6517 #pragma omp target 6518 #pragma omp teams 6519 #pragma omp distribute parallel for simd 6520 for (int i = 0; i < 10; ++i) { 6521 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6522 bar(); 6523 } 6524 #pragma omp target 6525 #pragma omp teams 6526 #pragma omp distribute parallel for simd 6527 for (int i = 0; i < 10; ++i) { 6528 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6529 bar(); 6530 } 6531 #pragma omp target 6532 #pragma omp teams 6533 #pragma omp distribute parallel for simd 6534 for (int i = 0; i < 10; ++i) { 6535 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6536 bar(); 6537 } 6538 #pragma omp target 6539 #pragma omp teams 6540 #pragma omp distribute parallel for simd 6541 for (int i = 0; i < 10; ++i) { 6542 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6543 ++a; 6544 } 6545 #pragma omp target 6546 #pragma omp teams 6547 #pragma omp distribute parallel for simd 6548 for (int i = 0; i < 10; ++i) { 6549 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6550 ++a; 6551 } 6552 #pragma omp target 6553 #pragma omp teams 6554 #pragma omp distribute parallel for simd 6555 for (int i = 0; i < 10; ++i) { 6556 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6557 ++a; 6558 } 6559 #pragma omp target 6560 #pragma omp teams 6561 #pragma omp distribute parallel for simd 6562 for (int i = 0; i < 10; ++i) { 6563 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6564 for (int i = 0; i < 10; ++i) 6565 ; 6566 } 6567 #pragma omp target 6568 #pragma omp teams 6569 #pragma omp distribute parallel for simd 6570 for (int i = 0; i < 10; ++i) { 6571 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6572 ++a; 6573 } 6574 #pragma omp target 6575 #pragma omp teams 6576 #pragma omp distribute parallel for simd 6577 for (int i = 0; i < 10; ++i) { 6578 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6579 ++a; 6580 } 6581 #pragma omp target 6582 #pragma omp teams 6583 #pragma omp distribute parallel for simd 6584 for (int i = 0; i < 10; ++i) { 6585 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6586 ++a; 6587 } 6588 #pragma omp target 6589 #pragma omp teams 6590 #pragma omp distribute parallel for simd 6591 for (int i = 0; i < 10; ++i) { 6592 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6593 ++a; 6594 } 6595 #pragma omp target 6596 #pragma omp teams 6597 #pragma omp distribute parallel for simd 6598 for (int i = 0; i < 10; ++i) { 6599 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6600 for (int i = 0; i < 10; ++i) 6601 ++a; 6602 } 6603 #pragma omp target 6604 #pragma omp teams 6605 #pragma omp distribute parallel for simd 6606 for (int i = 0; i < 10; ++i) { 6607 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6608 for (int i = 0; i < 10; ++i) 6609 ++a; 6610 } 6611 #pragma omp target 6612 #pragma omp teams 6613 #pragma omp distribute parallel for simd 6614 for (int i = 0; i < 10; ++i) { 6615 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6616 for (int i = 0; i < 10; ++i) 6617 ++a; 6618 } 6619 #pragma omp target 6620 #pragma omp teams 6621 #pragma omp distribute parallel for simd 6622 for (int i = 0; i < 10; ++i) { 6623 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6624 for (int i = 0; i < 10; ++i) 6625 ++a; 6626 } 6627 #pragma omp target 6628 #pragma omp teams 6629 #pragma omp distribute parallel for simd 6630 for (int i = 0; i < 10; ++i) { 6631 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6632 for (int i = 0; i < 10; ++i) 6633 ++a; 6634 } 6635 #pragma omp target 6636 #pragma omp teams 6637 #pragma omp distribute parallel for simd 6638 for (int i = 0; i < 10; ++i) { 6639 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6640 for (int i = 0; i < 10; ++i) 6641 ++a; 6642 } 6643 #pragma omp target 6644 #pragma omp teams 6645 #pragma omp distribute parallel for simd 6646 for (int i = 0; i < 10; ++i) { 6647 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6648 ++a; 6649 } 6650 #pragma omp target 6651 #pragma omp teams 6652 #pragma omp distribute parallel for simd 6653 for (int i = 0; i < 10; ++i) { 6654 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6655 for (int i = 0; i < 10; ++i) 6656 ++a; 6657 } 6658 #pragma omp target 6659 #pragma omp teams 6660 #pragma omp distribute parallel for simd 6661 for (int i = 0; i < 10; ++i) { 6662 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6663 for (int i = 0; i < 10; ++i) 6664 ++a; 6665 } 6666 #pragma omp target 6667 #pragma omp teams 6668 #pragma omp distribute parallel for simd 6669 for (int i = 0; i < 10; ++i) { 6670 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6671 for (int i = 0; i < 10; ++i) 6672 ++a; 6673 } 6674 #pragma omp target 6675 #pragma omp teams 6676 #pragma omp distribute parallel for simd 6677 for (int i = 0; i < 10; ++i) { 6678 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6679 for (int i = 0; i < 10; ++i) 6680 ++a; 6681 } 6682 6683 // TARGET SIMD DIRECTIVE 6684 #pragma omp target simd 6685 for (int i = 0; i < 10; ++i) { 6686 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6687 for (int i = 0; i < 10; ++i) 6688 ; 6689 } 6690 #pragma omp target simd 6691 for (int i = 0; i < 10; ++i) { 6692 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6693 for (int i = 0; i < 10; ++i) 6694 ; 6695 } 6696 #pragma omp target simd 6697 for (int i = 0; i < 10; ++i) { 6698 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6699 for (int i = 0; i < 10; ++i) 6700 ; 6701 } 6702 #pragma omp target simd 6703 for (int i = 0; i < 10; ++i) { 6704 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6705 for (int i = 0; i < 10; ++i) 6706 ; 6707 } 6708 #pragma omp target simd 6709 for (int i = 0; i < 10; ++i) { 6710 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6711 for (int i = 0; i < 10; ++i) 6712 ; 6713 } 6714 #pragma omp target simd 6715 for (int i = 0; i < 10; ++i) { 6716 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6717 for (int i = 0; i < 10; ++i) 6718 ; 6719 } 6720 #pragma omp target simd 6721 for (int i = 0; i < 10; ++i) { 6722 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6723 { 6724 bar(); 6725 } 6726 } 6727 #pragma omp target simd 6728 for (int i = 0; i < 10; ++i) { 6729 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6730 { 6731 bar(); 6732 } 6733 } 6734 #pragma omp target simd 6735 for (int i = 0; i < 10; ++i) { 6736 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6737 { 6738 bar(); 6739 } 6740 } 6741 #pragma omp target simd 6742 for (int i = 0; i < 10; ++i) { 6743 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6744 { 6745 bar(); 6746 } 6747 } 6748 #pragma omp target simd 6749 for (int i = 0; i < 10; ++i) { 6750 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6751 { 6752 bar(); 6753 } 6754 } 6755 #pragma omp target simd 6756 for (int i = 0; i < 10; ++i) { 6757 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6758 { 6759 #pragma omp single 6760 { 6761 bar(); 6762 } 6763 } 6764 } 6765 #pragma omp target simd 6766 for (int i = 0; i < 10; ++i) { 6767 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6768 for (int i = 0; i < 10; ++i) 6769 ; 6770 } 6771 #pragma omp target simd 6772 for (int i = 0; i < 10; ++i) { 6773 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6774 for (int i = 0; i < 10; ++i) 6775 ; 6776 } 6777 #pragma omp target simd 6778 for (int i = 0; i < 10; ++i) { 6779 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6780 { 6781 bar(); 6782 } 6783 } 6784 #pragma omp target simd 6785 for (int i = 0; i < 10; ++i) { 6786 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6787 { 6788 bar(); 6789 } 6790 } 6791 #pragma omp target simd 6792 for (int i = 0; i < 10; ++i) { 6793 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6794 bar(); 6795 } 6796 #pragma omp target simd 6797 for (int i = 0; i < 10; ++i) { 6798 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6799 bar(); 6800 } 6801 #pragma omp target simd 6802 for (int i = 0; i < 10; ++i) { 6803 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 6804 bar(); 6805 } 6806 #pragma omp target simd 6807 for (int i = 0; i < 10; ++i) { 6808 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6809 bar(); 6810 } 6811 #pragma omp target simd 6812 for (int i = 0; i < 10; ++i) { 6813 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6814 bar(); 6815 } 6816 #pragma omp target simd 6817 for (int i = 0; i < 10; ++i) { 6818 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6819 bar(); 6820 } 6821 #pragma omp target simd 6822 for (int i = 0; i < 10; ++i) { 6823 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 6824 ++a; 6825 } 6826 #pragma omp target simd 6827 for (int i = 0; i < 10; ++i) { 6828 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6829 ++a; 6830 } 6831 #pragma omp target simd 6832 for (int i = 0; i < 10; ++i) { 6833 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6834 ++a; 6835 } 6836 #pragma omp target simd 6837 for (int i = 0; i < 10; ++i) { 6838 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6839 for (int i = 0; i < 10; ++i) 6840 ; 6841 } 6842 #pragma omp target simd 6843 for (int i = 0; i < 10; ++i) { 6844 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6845 ++a; 6846 } 6847 #pragma omp target simd 6848 for (int i = 0; i < 10; ++i) { 6849 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6850 ++a; 6851 } 6852 #pragma omp target simd 6853 for (int i = 0; i < 10; ++i) { 6854 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6855 ++a; 6856 } 6857 #pragma omp target simd 6858 for (int i = 0; i < 10; ++i) { 6859 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6860 ++a; 6861 } 6862 #pragma omp target simd 6863 for (int i = 0; i < 10; ++i) { 6864 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6865 for (int i = 0; i < 10; ++i) 6866 ++a; 6867 } 6868 #pragma omp target simd 6869 for (int i = 0; i < 10; ++i) { 6870 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6871 for (int i = 0; i < 10; ++i) 6872 ++a; 6873 } 6874 #pragma omp target simd 6875 for (int i = 0; i < 10; ++i) { 6876 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6877 for (int i = 0; i < 10; ++i) 6878 ++a; 6879 } 6880 #pragma omp target simd 6881 for (int i = 0; i < 10; ++i) { 6882 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6883 for (int i = 0; i < 10; ++i) 6884 ++a; 6885 } 6886 #pragma omp target simd 6887 for (int i = 0; i < 10; ++i) { 6888 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6889 for (int i = 0; i < 10; ++i) 6890 ++a; 6891 } 6892 #pragma omp target simd 6893 for (int i = 0; i < 10; ++i) { 6894 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6895 for (int i = 0; i < 10; ++i) 6896 ++a; 6897 } 6898 #pragma omp target simd 6899 for (int i = 0; i < 10; ++i) { 6900 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6901 for (int i = 0; i < 10; ++i) 6902 ++a; 6903 } 6904 #pragma omp target simd 6905 for (int i = 0; i < 10; ++i) { 6906 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6907 for (int i = 0; i < 10; ++i) 6908 ++a; 6909 } 6910 6911 // TEAMS DISTRIBUTE DIRECTIVE 6912 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6913 for (int i = 0; i < 10; ++i) 6914 ; 6915 #pragma omp target 6916 #pragma omp teams distribute 6917 for (int i = 0; i < 10; ++i) { 6918 #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?}} 6919 for (int i = 0; i < 10; ++i) 6920 ; 6921 } 6922 #pragma omp target 6923 #pragma omp teams distribute 6924 for (int i = 0; i < 10; ++i) { 6925 #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?}} 6926 for (int i = 0; i < 10; ++i) 6927 ; 6928 } 6929 #pragma omp target 6930 #pragma omp teams distribute 6931 for (int i = 0; i < 10; ++i) { 6932 #pragma omp for // OK 6933 for (int i = 0; i < 10; ++i) 6934 ; 6935 } 6936 #pragma omp target 6937 #pragma omp teams distribute 6938 for (int i = 0; i < 10; ++i) { 6939 #pragma omp simd // OK 6940 for (int i = 0; i < 10; ++i) 6941 ; 6942 } 6943 #pragma omp target 6944 #pragma omp teams distribute 6945 for (int i = 0; i < 10; ++i) { 6946 #pragma omp for simd // OK 6947 for (int i = 0; i < 10; ++i) 6948 ; 6949 } 6950 #pragma omp target 6951 #pragma omp teams distribute 6952 for (int i = 0; i < 10; ++i) { 6953 #pragma omp parallel // OK 6954 for (int i = 0; i < 10; ++i) 6955 ; 6956 } 6957 #pragma omp target 6958 #pragma omp teams distribute 6959 for (int i = 0; i < 10; ++i) { 6960 #pragma omp sections // OK 6961 { 6962 bar(); 6963 } 6964 } 6965 #pragma omp target 6966 #pragma omp teams distribute 6967 for (int i = 0; i < 10; ++i) { 6968 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6969 { 6970 bar(); 6971 } 6972 } 6973 #pragma omp target 6974 #pragma omp teams distribute 6975 for (int i = 0; i < 10; ++i) { 6976 #pragma omp single // OK 6977 { 6978 bar(); 6979 } 6980 } 6981 #pragma omp target 6982 #pragma omp teams distribute 6983 for (int i = 0; i < 10; ++i) { 6984 #pragma omp master // OK 6985 { 6986 bar(); 6987 } 6988 } 6989 #pragma omp target 6990 #pragma omp teams distribute 6991 for (int i = 0; i < 10; ++i) { 6992 #pragma omp critical // OK 6993 { 6994 bar(); 6995 } 6996 } 6997 #pragma omp target 6998 #pragma omp teams distribute 6999 for (int i = 0; i < 10; ++i) { 7000 #pragma omp parallel // OK 7001 { 7002 #pragma omp single 7003 { 7004 bar(); 7005 } 7006 } 7007 } 7008 #pragma omp target 7009 #pragma omp teams distribute 7010 for (int i = 0; i < 10; ++i) { 7011 #pragma omp parallel for // OK 7012 for (int i = 0; i < 10; ++i) 7013 ; 7014 } 7015 #pragma omp target 7016 #pragma omp teams distribute 7017 for (int i = 0; i < 10; ++i) { 7018 #pragma omp parallel for simd // OK 7019 for (int i = 0; i < 10; ++i) 7020 ; 7021 } 7022 #pragma omp target 7023 #pragma omp teams distribute 7024 for (int i = 0; i < 10; ++i) { 7025 #pragma omp parallel sections // OK 7026 { 7027 bar(); 7028 } 7029 } 7030 #pragma omp target 7031 #pragma omp teams distribute 7032 for (int i = 0; i < 10; ++i) { 7033 #pragma omp task // OK 7034 { 7035 bar(); 7036 } 7037 } 7038 #pragma omp target 7039 #pragma omp teams distribute 7040 for (int i = 0; i < 10; ++i) { 7041 #pragma omp taskyield // OK 7042 bar(); 7043 } 7044 #pragma omp target 7045 #pragma omp teams distribute 7046 for (int i = 0; i < 10; ++i) { 7047 #pragma omp barrier // OK 7048 bar(); 7049 } 7050 #pragma omp target 7051 #pragma omp teams distribute 7052 for (int i = 0; i < 10; ++i) { 7053 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7054 bar(); 7055 } 7056 #pragma omp target 7057 #pragma omp teams distribute 7058 for (int i = 0; i < 10; ++i) { 7059 #pragma omp taskwait // OK 7060 bar(); 7061 } 7062 #pragma omp target 7063 #pragma omp teams distribute 7064 for (int i = 0; i < 10; ++i) { 7065 #pragma omp flush // OK 7066 bar(); 7067 } 7068 #pragma omp target 7069 #pragma omp teams distribute 7070 for (int i = 0; i < 10; ++i) { 7071 #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?}} 7072 bar(); 7073 } 7074 #pragma omp target 7075 #pragma omp teams distribute 7076 for (int i = 0; i < 10; ++i) { 7077 #pragma omp atomic // OK 7078 ++a; 7079 } 7080 #pragma omp target 7081 #pragma omp teams distribute 7082 for (int i = 0; i < 10; ++i) { 7083 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7084 ++a; 7085 } 7086 #pragma omp target 7087 #pragma omp teams distribute 7088 for (int i = 0; i < 10; ++i) { 7089 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7090 ++a; 7091 } 7092 #pragma omp target 7093 #pragma omp teams distribute 7094 for (int i = 0; i < 10; ++i) { 7095 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7096 for (int i = 0; i < 10; ++i) 7097 ; 7098 } 7099 #pragma omp target 7100 #pragma omp teams distribute 7101 for (int i = 0; i < 10; ++i) { 7102 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7103 ++a; 7104 } 7105 #pragma omp target 7106 #pragma omp teams distribute 7107 for (int i = 0; i < 10; ++i) { 7108 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7109 ++a; 7110 } 7111 #pragma omp target 7112 #pragma omp teams distribute 7113 for (int i = 0; i < 10; ++i) { 7114 #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?}} 7115 ++a; 7116 } 7117 #pragma omp target 7118 #pragma omp teams distribute 7119 for (int i = 0; i < 10; ++i) { 7120 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7121 ++a; 7122 } 7123 #pragma omp target 7124 #pragma omp teams distribute 7125 for (int i = 0; i < 10; ++i) { 7126 #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?}} 7127 for (int i = 0; i < 10; ++i) 7128 ++a; 7129 } 7130 #pragma omp target 7131 #pragma omp teams distribute 7132 for (int i = 0; i < 10; ++i) { 7133 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7134 for (int i = 0; i < 10; ++i) 7135 ++a; 7136 } 7137 #pragma omp target 7138 #pragma omp teams distribute 7139 for (int i = 0; i < 10; ++i) { 7140 #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?}} 7141 for (int i = 0; i < 10; ++i) 7142 ++a; 7143 } 7144 #pragma omp target 7145 #pragma omp teams distribute 7146 for (int i = 0; i < 10; ++i) { 7147 #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?}} 7148 for (int i = 0; i < 10; ++i) 7149 ++a; 7150 } 7151 #pragma omp target 7152 #pragma omp teams distribute 7153 for (int i = 0; i < 10; ++i) { 7154 #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?}} 7155 for (int i = 0; i < 10; ++i) 7156 ++a; 7157 } 7158 #pragma omp target 7159 #pragma omp teams distribute 7160 for (int i = 0; i < 10; ++i) { 7161 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7162 for (int i = 0; i < 10; ++i) 7163 ++a; 7164 } 7165 #pragma omp target 7166 #pragma omp teams distribute 7167 for (int i = 0; i < 10; ++i) { 7168 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7169 for (int i = 0; i < 10; ++i) 7170 ++a; 7171 } 7172 #pragma omp target 7173 #pragma omp teams distribute 7174 for (int i = 0; i < 10; ++i) { 7175 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7176 for (int i = 0; i < 10; ++i) 7177 ++a; 7178 } 7179 7180 // TEAMS DISTRIBUTE DIRECTIVE 7181 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7182 for (int i = 0; i < 10; ++i) 7183 ; 7184 #pragma omp target 7185 #pragma omp teams distribute 7186 for (int i = 0; i < 10; ++i) { 7187 #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?}} 7188 for (int i = 0; i < 10; ++i) 7189 ; 7190 } 7191 #pragma omp target 7192 #pragma omp teams distribute 7193 for (int i = 0; i < 10; ++i) { 7194 #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?}} 7195 for (int i = 0; i < 10; ++i) 7196 ; 7197 } 7198 #pragma omp target 7199 #pragma omp teams distribute 7200 for (int i = 0; i < 10; ++i) { 7201 #pragma omp for // OK 7202 for (int i = 0; i < 10; ++i) 7203 ; 7204 } 7205 #pragma omp target 7206 #pragma omp teams distribute 7207 for (int i = 0; i < 10; ++i) { 7208 #pragma omp simd // OK 7209 for (int i = 0; i < 10; ++i) 7210 ; 7211 } 7212 #pragma omp target 7213 #pragma omp teams distribute 7214 for (int i = 0; i < 10; ++i) { 7215 #pragma omp for simd // OK 7216 for (int i = 0; i < 10; ++i) 7217 ; 7218 } 7219 #pragma omp target 7220 #pragma omp teams distribute 7221 for (int i = 0; i < 10; ++i) { 7222 #pragma omp parallel // OK 7223 for (int i = 0; i < 10; ++i) 7224 ; 7225 } 7226 #pragma omp target 7227 #pragma omp teams distribute 7228 for (int i = 0; i < 10; ++i) { 7229 #pragma omp sections // OK 7230 { 7231 bar(); 7232 } 7233 } 7234 #pragma omp target 7235 #pragma omp teams distribute 7236 for (int i = 0; i < 10; ++i) { 7237 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 7238 { 7239 bar(); 7240 } 7241 } 7242 #pragma omp target 7243 #pragma omp teams distribute 7244 for (int i = 0; i < 10; ++i) { 7245 #pragma omp single // OK 7246 { 7247 bar(); 7248 } 7249 } 7250 #pragma omp target 7251 #pragma omp teams distribute 7252 for (int i = 0; i < 10; ++i) { 7253 #pragma omp master // OK 7254 { 7255 bar(); 7256 } 7257 } 7258 #pragma omp target 7259 #pragma omp teams distribute 7260 for (int i = 0; i < 10; ++i) { 7261 #pragma omp critical // OK 7262 { 7263 bar(); 7264 } 7265 } 7266 #pragma omp target 7267 #pragma omp teams distribute 7268 for (int i = 0; i < 10; ++i) { 7269 #pragma omp parallel // OK 7270 { 7271 #pragma omp single 7272 { 7273 bar(); 7274 } 7275 } 7276 } 7277 #pragma omp target 7278 #pragma omp teams distribute 7279 for (int i = 0; i < 10; ++i) { 7280 #pragma omp parallel for // OK 7281 for (int i = 0; i < 10; ++i) 7282 ; 7283 } 7284 #pragma omp target 7285 #pragma omp teams distribute 7286 for (int i = 0; i < 10; ++i) { 7287 #pragma omp parallel for simd // OK 7288 for (int i = 0; i < 10; ++i) 7289 ; 7290 } 7291 #pragma omp target 7292 #pragma omp teams distribute 7293 for (int i = 0; i < 10; ++i) { 7294 #pragma omp parallel sections // OK 7295 { 7296 bar(); 7297 } 7298 } 7299 #pragma omp target 7300 #pragma omp teams distribute 7301 for (int i = 0; i < 10; ++i) { 7302 #pragma omp task // OK 7303 { 7304 bar(); 7305 } 7306 } 7307 #pragma omp target 7308 #pragma omp teams distribute 7309 for (int i = 0; i < 10; ++i) { 7310 #pragma omp taskyield // OK 7311 bar(); 7312 } 7313 #pragma omp target 7314 #pragma omp teams distribute 7315 for (int i = 0; i < 10; ++i) { 7316 #pragma omp barrier // OK 7317 bar(); 7318 } 7319 #pragma omp target 7320 #pragma omp teams distribute 7321 for (int i = 0; i < 10; ++i) { 7322 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7323 bar(); 7324 } 7325 #pragma omp target 7326 #pragma omp teams distribute 7327 for (int i = 0; i < 10; ++i) { 7328 #pragma omp taskwait // OK 7329 bar(); 7330 } 7331 #pragma omp target 7332 #pragma omp teams distribute 7333 for (int i = 0; i < 10; ++i) { 7334 #pragma omp flush // OK 7335 bar(); 7336 } 7337 #pragma omp target 7338 #pragma omp teams distribute 7339 for (int i = 0; i < 10; ++i) { 7340 #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?}} 7341 bar(); 7342 } 7343 #pragma omp target 7344 #pragma omp teams distribute 7345 for (int i = 0; i < 10; ++i) { 7346 #pragma omp atomic // OK 7347 ++a; 7348 } 7349 #pragma omp target 7350 #pragma omp teams distribute 7351 for (int i = 0; i < 10; ++i) { 7352 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7353 ++a; 7354 } 7355 #pragma omp target 7356 #pragma omp teams distribute 7357 for (int i = 0; i < 10; ++i) { 7358 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7359 ++a; 7360 } 7361 #pragma omp target 7362 #pragma omp teams distribute 7363 for (int i = 0; i < 10; ++i) { 7364 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7365 for (int i = 0; i < 10; ++i) 7366 ; 7367 } 7368 #pragma omp target 7369 #pragma omp teams distribute 7370 for (int i = 0; i < 10; ++i) { 7371 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7372 ++a; 7373 } 7374 #pragma omp target 7375 #pragma omp teams distribute 7376 for (int i = 0; i < 10; ++i) { 7377 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7378 ++a; 7379 } 7380 #pragma omp target 7381 #pragma omp teams distribute 7382 for (int i = 0; i < 10; ++i) { 7383 #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?}} 7384 ++a; 7385 } 7386 #pragma omp target 7387 #pragma omp teams distribute 7388 for (int i = 0; i < 10; ++i) { 7389 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7390 ++a; 7391 } 7392 #pragma omp target 7393 #pragma omp teams distribute 7394 for (int i = 0; i < 10; ++i) { 7395 #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?}} 7396 for (int i = 0; i < 10; ++i) 7397 ++a; 7398 } 7399 #pragma omp target 7400 #pragma omp teams distribute 7401 for (int i = 0; i < 10; ++i) { 7402 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7403 for (int i = 0; i < 10; ++i) 7404 ++a; 7405 } 7406 #pragma omp target 7407 #pragma omp teams distribute 7408 for (int i = 0; i < 10; ++i) { 7409 #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?}} 7410 for (int i = 0; i < 10; ++i) 7411 ++a; 7412 } 7413 #pragma omp target 7414 #pragma omp teams distribute 7415 for (int i = 0; i < 10; ++i) { 7416 #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?}} 7417 for (int i = 0; i < 10; ++i) 7418 ++a; 7419 } 7420 #pragma omp target 7421 #pragma omp teams distribute 7422 for (int i = 0; i < 10; ++i) { 7423 #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?}} 7424 for (int i = 0; i < 10; ++i) 7425 ++a; 7426 } 7427 #pragma omp target 7428 #pragma omp teams distribute 7429 for (int i = 0; i < 10; ++i) { 7430 #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?}} 7431 for (int i = 0; i < 10; ++i) 7432 ++a; 7433 } 7434 #pragma omp target 7435 #pragma omp teams distribute 7436 for (int i = 0; i < 10; ++i) { 7437 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7438 ++a; 7439 } 7440 #pragma omp target 7441 #pragma omp teams distribute 7442 for (int i = 0; i < 10; ++i) { 7443 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7444 for (int i = 0; i < 10; ++i) 7445 ++a; 7446 } 7447 #pragma omp target 7448 #pragma omp teams distribute 7449 for (int i = 0; i < 10; ++i) { 7450 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7451 for (int i = 0; i < 10; ++i) 7452 ++a; 7453 } 7454 #pragma omp target 7455 #pragma omp teams distribute 7456 for (int i = 0; i < 10; ++i) { 7457 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7458 for (int i = 0; i < 10; ++i) 7459 ++a; 7460 } 7461 #pragma omp target 7462 #pragma omp teams distribute 7463 for (int i = 0; i < 10; ++i) { 7464 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7465 for (int i = 0; i < 10; ++i) 7466 ++a; 7467 } 7468 7469 // TEAMS DISTRIBUTE SIMD DIRECTIVE 7470 #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?}} 7471 for (int i = 0; i < 10; ++i) 7472 ; 7473 #pragma omp target 7474 #pragma omp teams distribute simd 7475 for (int i = 0; i < 10; ++i) { 7476 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7477 for (int i = 0; i < 10; ++i) 7478 ; 7479 } 7480 #pragma omp target 7481 #pragma omp teams distribute simd 7482 for (int i = 0; i < 10; ++i) { 7483 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7484 for (int i = 0; i < 10; ++i) 7485 ; 7486 } 7487 #pragma omp target 7488 #pragma omp teams distribute simd 7489 for (int i = 0; i < 10; ++i) { 7490 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7491 for (int i = 0; i < 10; ++i) 7492 ; 7493 } 7494 #pragma omp target 7495 #pragma omp teams distribute simd 7496 for (int i = 0; i < 10; ++i) { 7497 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7498 for (int i = 0; i < 10; ++i) 7499 ; 7500 } 7501 #pragma omp target 7502 #pragma omp teams distribute simd 7503 for (int i = 0; i < 10; ++i) { 7504 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7505 for (int i = 0; i < 10; ++i) 7506 ; 7507 } 7508 #pragma omp target 7509 #pragma omp teams distribute simd 7510 for (int i = 0; i < 10; ++i) { 7511 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7512 for (int i = 0; i < 10; ++i) 7513 ; 7514 } 7515 #pragma omp target 7516 #pragma omp teams distribute simd 7517 for (int i = 0; i < 10; ++i) { 7518 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7519 { 7520 bar(); 7521 } 7522 } 7523 #pragma omp target 7524 #pragma omp teams distribute simd 7525 for (int i = 0; i < 10; ++i) { 7526 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7527 { 7528 bar(); 7529 } 7530 } 7531 #pragma omp target 7532 #pragma omp teams distribute simd 7533 for (int i = 0; i < 10; ++i) { 7534 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7535 { 7536 bar(); 7537 } 7538 } 7539 #pragma omp target 7540 #pragma omp teams distribute simd 7541 for (int i = 0; i < 10; ++i) { 7542 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7543 { 7544 bar(); 7545 } 7546 } 7547 #pragma omp target 7548 #pragma omp teams distribute simd 7549 for (int i = 0; i < 10; ++i) { 7550 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7551 { 7552 bar(); 7553 } 7554 } 7555 #pragma omp target 7556 #pragma omp teams distribute simd 7557 for (int i = 0; i < 10; ++i) { 7558 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7559 { 7560 #pragma omp single 7561 { 7562 bar(); 7563 } 7564 } 7565 } 7566 #pragma omp target 7567 #pragma omp teams distribute simd 7568 for (int i = 0; i < 10; ++i) { 7569 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7570 for (int i = 0; i < 10; ++i) 7571 ; 7572 } 7573 #pragma omp target 7574 #pragma omp teams distribute simd 7575 for (int i = 0; i < 10; ++i) { 7576 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7577 for (int i = 0; i < 10; ++i) 7578 ; 7579 } 7580 #pragma omp target 7581 #pragma omp teams distribute simd 7582 for (int i = 0; i < 10; ++i) { 7583 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7584 { 7585 bar(); 7586 } 7587 } 7588 #pragma omp target 7589 #pragma omp teams distribute simd 7590 for (int i = 0; i < 10; ++i) { 7591 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7592 { 7593 bar(); 7594 } 7595 } 7596 #pragma omp target 7597 #pragma omp teams distribute simd 7598 for (int i = 0; i < 10; ++i) { 7599 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7600 bar(); 7601 } 7602 #pragma omp target 7603 #pragma omp teams distribute simd 7604 for (int i = 0; i < 10; ++i) { 7605 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7606 bar(); 7607 } 7608 #pragma omp target 7609 #pragma omp teams distribute simd 7610 for (int i = 0; i < 10; ++i) { 7611 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7612 bar(); 7613 } 7614 #pragma omp target 7615 #pragma omp teams distribute simd 7616 for (int i = 0; i < 10; ++i) { 7617 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7618 bar(); 7619 } 7620 #pragma omp target 7621 #pragma omp teams distribute simd 7622 for (int i = 0; i < 10; ++i) { 7623 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7624 bar(); 7625 } 7626 #pragma omp target 7627 #pragma omp teams distribute simd 7628 for (int i = 0; i < 10; ++i) { 7629 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7630 bar(); 7631 } 7632 #pragma omp target 7633 #pragma omp teams distribute simd 7634 for (int i = 0; i < 10; ++i) { 7635 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7636 ++a; 7637 } 7638 #pragma omp target 7639 #pragma omp teams distribute simd 7640 for (int i = 0; i < 10; ++i) { 7641 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7642 ++a; 7643 } 7644 #pragma omp target 7645 #pragma omp teams distribute simd 7646 for (int i = 0; i < 10; ++i) { 7647 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7648 ++a; 7649 } 7650 #pragma omp target 7651 #pragma omp teams distribute simd 7652 for (int i = 0; i < 10; ++i) { 7653 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7654 for (int i = 0; i < 10; ++i) 7655 ; 7656 } 7657 #pragma omp target 7658 #pragma omp teams distribute simd 7659 for (int i = 0; i < 10; ++i) { 7660 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7661 ++a; 7662 } 7663 #pragma omp target 7664 #pragma omp teams distribute simd 7665 for (int i = 0; i < 10; ++i) { 7666 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7667 ++a; 7668 } 7669 #pragma omp target 7670 #pragma omp teams distribute simd 7671 for (int i = 0; i < 10; ++i) { 7672 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7673 ++a; 7674 } 7675 #pragma omp target 7676 #pragma omp teams distribute simd 7677 for (int i = 0; i < 10; ++i) { 7678 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7679 ++a; 7680 } 7681 #pragma omp target 7682 #pragma omp teams distribute simd 7683 for (int i = 0; i < 10; ++i) { 7684 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7685 for (int i = 0; i < 10; ++i) 7686 ++a; 7687 } 7688 #pragma omp target 7689 #pragma omp teams distribute simd 7690 for (int i = 0; i < 10; ++i) { 7691 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7692 for (int i = 0; i < 10; ++i) 7693 ++a; 7694 } 7695 #pragma omp target 7696 #pragma omp teams distribute simd 7697 for (int i = 0; i < 10; ++i) { 7698 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7699 for (int i = 0; i < 10; ++i) 7700 ++a; 7701 } 7702 #pragma omp target 7703 #pragma omp teams distribute simd 7704 for (int i = 0; i < 10; ++i) { 7705 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7706 for (int i = 0; i < 10; ++i) 7707 ++a; 7708 } 7709 #pragma omp target 7710 #pragma omp teams distribute simd 7711 for (int i = 0; i < 10; ++i) { 7712 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7713 for (int i = 0; i < 10; ++i) 7714 ++a; 7715 } 7716 #pragma omp target 7717 #pragma omp teams distribute simd 7718 for (int i = 0; i < 10; ++i) { 7719 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7720 for (int i = 0; i < 10; ++i) 7721 ++a; 7722 } 7723 #pragma omp target 7724 #pragma omp teams distribute simd 7725 for (int i = 0; i < 10; ++i) { 7726 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7727 ++a; 7728 } 7729 #pragma omp target 7730 #pragma omp teams distribute simd 7731 for (int i = 0; i < 10; ++i) { 7732 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7733 for (int i = 0; i < 10; ++i) 7734 ++a; 7735 } 7736 #pragma omp target 7737 #pragma omp teams distribute simd 7738 for (int i = 0; i < 10; ++i) { 7739 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7740 for (int i = 0; i < 10; ++i) 7741 ++a; 7742 } 7743 #pragma omp target 7744 #pragma omp teams distribute simd 7745 for (int i = 0; i < 10; ++i) { 7746 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7747 for (int i = 0; i < 10; ++i) 7748 ++a; 7749 } 7750 #pragma omp target 7751 #pragma omp teams distribute simd 7752 for (int i = 0; i < 10; ++i) { 7753 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7754 for (int i = 0; i < 10; ++i) 7755 ++a; 7756 } 7757 7758 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 7759 #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?}} 7760 for (int i = 0; i < 10; ++i) 7761 ; 7762 #pragma omp target 7763 #pragma omp teams distribute parallel for simd 7764 for (int i = 0; i < 10; ++i) { 7765 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7766 for (int i = 0; i < 10; ++i) 7767 ; 7768 } 7769 #pragma omp target 7770 #pragma omp teams distribute parallel for simd 7771 for (int i = 0; i < 10; ++i) { 7772 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7773 for (int i = 0; i < 10; ++i) 7774 ; 7775 } 7776 #pragma omp target 7777 #pragma omp teams distribute parallel for simd 7778 for (int i = 0; i < 10; ++i) { 7779 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7780 for (int i = 0; i < 10; ++i) 7781 ; 7782 } 7783 #pragma omp target 7784 #pragma omp teams distribute parallel for simd 7785 for (int i = 0; i < 10; ++i) { 7786 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7787 for (int i = 0; i < 10; ++i) 7788 ; 7789 } 7790 #pragma omp target 7791 #pragma omp teams distribute parallel for simd 7792 for (int i = 0; i < 10; ++i) { 7793 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7794 for (int i = 0; i < 10; ++i) 7795 ; 7796 } 7797 #pragma omp target 7798 #pragma omp teams distribute parallel for simd 7799 for (int i = 0; i < 10; ++i) { 7800 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7801 for (int i = 0; i < 10; ++i) 7802 ; 7803 } 7804 #pragma omp target 7805 #pragma omp teams distribute parallel for simd 7806 for (int i = 0; i < 10; ++i) { 7807 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7808 { 7809 bar(); 7810 } 7811 } 7812 #pragma omp target 7813 #pragma omp teams distribute parallel for simd 7814 for (int i = 0; i < 10; ++i) { 7815 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7816 { 7817 bar(); 7818 } 7819 } 7820 #pragma omp target 7821 #pragma omp teams distribute parallel for simd 7822 for (int i = 0; i < 10; ++i) { 7823 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7824 { 7825 bar(); 7826 } 7827 } 7828 #pragma omp target 7829 #pragma omp teams distribute parallel for simd 7830 for (int i = 0; i < 10; ++i) { 7831 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7832 { 7833 bar(); 7834 } 7835 } 7836 #pragma omp target 7837 #pragma omp teams distribute parallel for simd 7838 for (int i = 0; i < 10; ++i) { 7839 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7840 { 7841 bar(); 7842 } 7843 } 7844 #pragma omp target 7845 #pragma omp teams distribute parallel for simd 7846 for (int i = 0; i < 10; ++i) { 7847 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7848 { 7849 #pragma omp single 7850 { 7851 bar(); 7852 } 7853 } 7854 } 7855 #pragma omp target 7856 #pragma omp teams distribute parallel for simd 7857 for (int i = 0; i < 10; ++i) { 7858 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7859 for (int i = 0; i < 10; ++i) 7860 ; 7861 } 7862 #pragma omp target 7863 #pragma omp teams distribute parallel for simd 7864 for (int i = 0; i < 10; ++i) { 7865 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7866 for (int i = 0; i < 10; ++i) 7867 ; 7868 } 7869 #pragma omp target 7870 #pragma omp teams distribute parallel for simd 7871 for (int i = 0; i < 10; ++i) { 7872 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7873 { 7874 bar(); 7875 } 7876 } 7877 #pragma omp target 7878 #pragma omp teams distribute parallel for simd 7879 for (int i = 0; i < 10; ++i) { 7880 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7881 { 7882 bar(); 7883 } 7884 } 7885 #pragma omp target 7886 #pragma omp teams distribute parallel for simd 7887 for (int i = 0; i < 10; ++i) { 7888 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7889 bar(); 7890 } 7891 #pragma omp target 7892 #pragma omp teams distribute parallel for simd 7893 for (int i = 0; i < 10; ++i) { 7894 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7895 bar(); 7896 } 7897 #pragma omp target 7898 #pragma omp teams distribute parallel for simd 7899 for (int i = 0; i < 10; ++i) { 7900 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 7901 bar(); 7902 } 7903 #pragma omp target 7904 #pragma omp teams distribute parallel for simd 7905 for (int i = 0; i < 10; ++i) { 7906 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7907 bar(); 7908 } 7909 #pragma omp target 7910 #pragma omp teams distribute parallel for simd 7911 for (int i = 0; i < 10; ++i) { 7912 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7913 bar(); 7914 } 7915 #pragma omp target 7916 #pragma omp teams distribute parallel for simd 7917 for (int i = 0; i < 10; ++i) { 7918 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7919 bar(); 7920 } 7921 #pragma omp target 7922 #pragma omp teams distribute parallel for simd 7923 for (int i = 0; i < 10; ++i) { 7924 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 7925 ++a; 7926 } 7927 #pragma omp target 7928 #pragma omp teams distribute parallel for simd 7929 for (int i = 0; i < 10; ++i) { 7930 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7931 ++a; 7932 } 7933 #pragma omp target 7934 #pragma omp teams distribute parallel for simd 7935 for (int i = 0; i < 10; ++i) { 7936 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7937 ++a; 7938 } 7939 #pragma omp target 7940 #pragma omp teams distribute parallel for simd 7941 for (int i = 0; i < 10; ++i) { 7942 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7943 for (int i = 0; i < 10; ++i) 7944 ; 7945 } 7946 #pragma omp target 7947 #pragma omp teams distribute parallel for simd 7948 for (int i = 0; i < 10; ++i) { 7949 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7950 ++a; 7951 } 7952 #pragma omp target 7953 #pragma omp teams distribute parallel for simd 7954 for (int i = 0; i < 10; ++i) { 7955 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7956 ++a; 7957 } 7958 #pragma omp target 7959 #pragma omp teams distribute parallel for simd 7960 for (int i = 0; i < 10; ++i) { 7961 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7962 ++a; 7963 } 7964 #pragma omp target 7965 #pragma omp teams distribute parallel for simd 7966 for (int i = 0; i < 10; ++i) { 7967 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7968 ++a; 7969 } 7970 #pragma omp target 7971 #pragma omp teams distribute parallel for simd 7972 for (int i = 0; i < 10; ++i) { 7973 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7974 for (int i = 0; i < 10; ++i) 7975 ++a; 7976 } 7977 #pragma omp target 7978 #pragma omp teams distribute parallel for simd 7979 for (int i = 0; i < 10; ++i) { 7980 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7981 for (int i = 0; i < 10; ++i) 7982 ++a; 7983 } 7984 #pragma omp target 7985 #pragma omp teams distribute parallel for simd 7986 for (int i = 0; i < 10; ++i) { 7987 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7988 for (int i = 0; i < 10; ++i) 7989 ++a; 7990 } 7991 #pragma omp target 7992 #pragma omp teams distribute parallel for simd 7993 for (int i = 0; i < 10; ++i) { 7994 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7995 for (int i = 0; i < 10; ++i) 7996 ++a; 7997 } 7998 #pragma omp target 7999 #pragma omp teams distribute parallel for simd 8000 for (int i = 0; i < 10; ++i) { 8001 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8002 for (int i = 0; i < 10; ++i) 8003 ++a; 8004 } 8005 #pragma omp target 8006 #pragma omp teams distribute parallel for simd 8007 for (int i = 0; i < 10; ++i) { 8008 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8009 for (int i = 0; i < 10; ++i) 8010 ++a; 8011 } 8012 #pragma omp target 8013 #pragma omp teams distribute parallel for simd 8014 for (int i = 0; i < 10; ++i) { 8015 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8016 ++a; 8017 } 8018 #pragma omp target 8019 #pragma omp teams distribute parallel for simd 8020 for (int i = 0; i < 10; ++i) { 8021 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8022 for (int i = 0; i < 10; ++i) 8023 ++a; 8024 } 8025 #pragma omp target 8026 #pragma omp teams distribute parallel for simd 8027 for (int i = 0; i < 10; ++i) { 8028 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8029 for (int i = 0; i < 10; ++i) 8030 ++a; 8031 } 8032 #pragma omp target 8033 #pragma omp teams distribute parallel for simd 8034 for (int i = 0; i < 10; ++i) { 8035 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8036 for (int i = 0; i < 10; ++i) 8037 ++a; 8038 } 8039 #pragma omp target 8040 #pragma omp teams distribute parallel for simd 8041 for (int i = 0; i < 10; ++i) { 8042 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8043 for (int i = 0; i < 10; ++i) 8044 ++a; 8045 } 8046 8047 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8048 #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?}} 8049 for (int i = 0; i < 10; ++i) 8050 ; 8051 #pragma omp target 8052 #pragma omp teams distribute parallel for 8053 for (int i = 0; i < 10; ++i) { 8054 #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?}} 8055 for (int i = 0; i < 10; ++i) 8056 ; 8057 } 8058 #pragma omp target 8059 #pragma omp teams distribute parallel for 8060 for (int i = 0; i < 10; ++i) { 8061 #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?}} 8062 for (int i = 0; i < 10; ++i) 8063 ; 8064 } 8065 #pragma omp target 8066 #pragma omp teams distribute parallel for 8067 for (int i = 0; i < 10; ++i) { 8068 #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?}} 8069 for (int i = 0; i < 10; ++i) 8070 ; 8071 } 8072 #pragma omp target 8073 #pragma omp teams distribute parallel for 8074 for (int i = 0; i < 10; ++i) { 8075 #pragma omp simd // OK 8076 for (int i = 0; i < 10; ++i) 8077 ; 8078 } 8079 #pragma omp target 8080 #pragma omp teams distribute parallel for 8081 for (int i = 0; i < 10; ++i) { 8082 #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?}} 8083 for (int i = 0; i < 10; ++i) 8084 ; 8085 } 8086 #pragma omp target 8087 #pragma omp teams distribute parallel for 8088 for (int i = 0; i < 10; ++i) { 8089 #pragma omp parallel // OK 8090 for (int i = 0; i < 10; ++i) 8091 ; 8092 } 8093 #pragma omp target 8094 #pragma omp teams distribute parallel for 8095 for (int i = 0; i < 10; ++i) { 8096 #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?}} 8097 { 8098 bar(); 8099 } 8100 } 8101 #pragma omp target 8102 #pragma omp teams distribute parallel for 8103 for (int i = 0; i < 10; ++i) { 8104 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 8105 { 8106 bar(); 8107 } 8108 } 8109 #pragma omp target 8110 #pragma omp teams distribute parallel for 8111 for (int i = 0; i < 10; ++i) { 8112 #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?}} 8113 { 8114 bar(); 8115 } 8116 } 8117 #pragma omp target 8118 #pragma omp teams distribute parallel for 8119 for (int i = 0; i < 10; ++i) { 8120 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8121 { 8122 bar(); 8123 } 8124 } 8125 #pragma omp target 8126 #pragma omp teams distribute parallel for 8127 for (int i = 0; i < 10; ++i) { 8128 #pragma omp critical // OK 8129 { 8130 bar(); 8131 } 8132 } 8133 #pragma omp target 8134 #pragma omp teams distribute parallel for 8135 for (int i = 0; i < 10; ++i) { 8136 #pragma omp parallel // OK 8137 { 8138 #pragma omp single 8139 { 8140 bar(); 8141 } 8142 } 8143 } 8144 #pragma omp target 8145 #pragma omp teams distribute parallel for 8146 for (int i = 0; i < 10; ++i) { 8147 #pragma omp parallel for // OK 8148 for (int i = 0; i < 10; ++i) 8149 ; 8150 } 8151 #pragma omp target 8152 #pragma omp teams distribute parallel for 8153 for (int i = 0; i < 10; ++i) { 8154 #pragma omp parallel for simd // OK 8155 for (int i = 0; i < 10; ++i) 8156 ; 8157 } 8158 #pragma omp target 8159 #pragma omp teams distribute parallel for 8160 for (int i = 0; i < 10; ++i) { 8161 #pragma omp parallel sections // OK 8162 { 8163 bar(); 8164 } 8165 } 8166 #pragma omp target 8167 #pragma omp teams distribute parallel for 8168 for (int i = 0; i < 10; ++i) { 8169 #pragma omp task // OK 8170 { 8171 bar(); 8172 } 8173 } 8174 #pragma omp target 8175 #pragma omp teams distribute parallel for 8176 for (int i = 0; i < 10; ++i) { 8177 #pragma omp taskyield // OK 8178 bar(); 8179 } 8180 #pragma omp target 8181 #pragma omp teams distribute parallel for 8182 for (int i = 0; i < 10; ++i) { 8183 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8184 bar(); 8185 } 8186 #pragma omp target 8187 #pragma omp teams distribute parallel for 8188 for (int i = 0; i < 10; ++i) { 8189 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 8190 bar(); 8191 } 8192 #pragma omp target 8193 #pragma omp teams distribute parallel for 8194 for (int i = 0; i < 10; ++i) { 8195 #pragma omp taskwait // OK 8196 bar(); 8197 } 8198 #pragma omp target 8199 #pragma omp teams distribute parallel for 8200 for (int i = 0; i < 10; ++i) { 8201 #pragma omp flush // OK 8202 bar(); 8203 } 8204 #pragma omp target 8205 #pragma omp teams distribute parallel for 8206 for (int i = 0; i < 10; ++i) { 8207 #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?}} 8208 bar(); 8209 } 8210 #pragma omp target 8211 #pragma omp teams distribute parallel for 8212 for (int i = 0; i < 10; ++i) { 8213 #pragma omp atomic // OK 8214 ++a; 8215 } 8216 #pragma omp target 8217 #pragma omp teams distribute parallel for 8218 for (int i = 0; i < 10; ++i) { 8219 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 8220 ++a; 8221 } 8222 #pragma omp target 8223 #pragma omp teams distribute parallel for 8224 for (int i = 0; i < 10; ++i) { 8225 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 8226 ++a; 8227 } 8228 #pragma omp target 8229 #pragma omp teams distribute parallel for 8230 for (int i = 0; i < 10; ++i) { 8231 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 8232 for (int i = 0; i < 10; ++i) 8233 ; 8234 } 8235 #pragma omp target 8236 #pragma omp teams distribute parallel for 8237 for (int i = 0; i < 10; ++i) { 8238 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 8239 ++a; 8240 } 8241 #pragma omp target 8242 #pragma omp teams distribute parallel for 8243 for (int i = 0; i < 10; ++i) { 8244 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 8245 ++a; 8246 } 8247 #pragma omp target 8248 #pragma omp teams distribute parallel for 8249 for (int i = 0; i < 10; ++i) { 8250 #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?}} 8251 ++a; 8252 } 8253 #pragma omp target 8254 #pragma omp teams distribute parallel for 8255 for (int i = 0; i < 10; ++i) { 8256 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 8257 ++a; 8258 } 8259 #pragma omp target 8260 #pragma omp teams distribute parallel for 8261 for (int i = 0; i < 10; ++i) { 8262 #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?}} 8263 for (int i = 0; i < 10; ++i) 8264 ++a; 8265 } 8266 #pragma omp target 8267 #pragma omp teams distribute parallel for 8268 for (int i = 0; i < 10; ++i) { 8269 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 8270 for (int i = 0; i < 10; ++i) 8271 ++a; 8272 } 8273 #pragma omp target 8274 #pragma omp teams distribute parallel for 8275 for (int i = 0; i < 10; ++i) { 8276 #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?}} 8277 for (int i = 0; i < 10; ++i) 8278 ++a; 8279 } 8280 #pragma omp target 8281 #pragma omp teams distribute parallel for 8282 for (int i = 0; i < 10; ++i) { 8283 #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?}} 8284 for (int i = 0; i < 10; ++i) 8285 ++a; 8286 } 8287 #pragma omp target 8288 #pragma omp teams distribute parallel for 8289 for (int i = 0; i < 10; ++i) { 8290 #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?}} 8291 for (int i = 0; i < 10; ++i) 8292 ++a; 8293 } 8294 #pragma omp target 8295 #pragma omp teams distribute parallel for 8296 for (int i = 0; i < 10; ++i) { 8297 #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?}} 8298 for (int i = 0; i < 10; ++i) 8299 ++a; 8300 } 8301 #pragma omp target 8302 #pragma omp teams distribute parallel for 8303 for (int i = 0; i < 10; ++i) { 8304 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 8305 ++a; 8306 } 8307 #pragma omp target 8308 #pragma omp teams distribute parallel for 8309 for (int i = 0; i < 10; ++i) { 8310 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 8311 for (int i = 0; i < 10; ++i) 8312 ++a; 8313 } 8314 #pragma omp target 8315 #pragma omp teams distribute parallel for 8316 for (int i = 0; i < 10; ++i) { 8317 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 8318 for (int i = 0; i < 10; ++i) 8319 ++a; 8320 } 8321 #pragma omp target 8322 #pragma omp teams distribute parallel for 8323 for (int i = 0; i < 10; ++i) { 8324 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 8325 for (int i = 0; i < 10; ++i) 8326 ++a; 8327 } 8328 #pragma omp target 8329 #pragma omp teams distribute parallel for 8330 for (int i = 0; i < 10; ++i) { 8331 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 8332 for (int i = 0; i < 10; ++i) 8333 ++a; 8334 } 8335 8336 // TARGET TEAMS DIRECTIVE 8337 #pragma omp target teams 8338 #pragma omp parallel 8339 bar(); 8340 #pragma omp target teams 8341 #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?}} 8342 for (int i = 0; i < 10; ++i) 8343 ; 8344 #pragma omp target teams 8345 #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?}} 8346 for (int i = 0; i < 10; ++i) 8347 ; 8348 #pragma omp target teams 8349 #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?}} 8350 for (int i = 0; i < 10; ++i) 8351 ; 8352 #pragma omp target teams 8353 #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?}} 8354 { 8355 bar(); 8356 } 8357 #pragma omp target teams 8358 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 8359 { 8360 bar(); 8361 } 8362 #pragma omp target teams 8363 #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?}} 8364 bar(); 8365 8366 #pragma omp target teams 8367 #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?}} 8368 { 8369 bar(); 8370 } 8371 #pragma omp target teams 8372 #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?}} 8373 { 8374 bar(); 8375 } 8376 #pragma omp target teams 8377 #pragma omp parallel for 8378 for (int i = 0; i < 10; ++i) 8379 ; 8380 #pragma omp target teams 8381 #pragma omp parallel for simd 8382 for (int i = 0; i < 10; ++i) 8383 ; 8384 #pragma omp target teams 8385 #pragma omp parallel sections 8386 { 8387 bar(); 8388 } 8389 #pragma omp target teams 8390 #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?}} 8391 { 8392 bar(); 8393 } 8394 #pragma omp target teams 8395 { 8396 #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?}} 8397 bar(); 8398 } 8399 #pragma omp target teams 8400 { 8401 #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?}} 8402 bar(); 8403 } 8404 #pragma omp target teams 8405 { 8406 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 8407 bar(); 8408 } 8409 #pragma omp target teams 8410 { 8411 #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?}} 8412 bar(); 8413 } 8414 #pragma omp target teams 8415 { 8416 #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?}} 8417 bar(); 8418 } 8419 #pragma omp target teams 8420 { 8421 #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?}} 8422 bar(); 8423 } 8424 #pragma omp target teams 8425 { 8426 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 8427 ++a; 8428 } 8429 #pragma omp target teams 8430 { 8431 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 8432 ++a; 8433 } 8434 #pragma omp target teams 8435 { 8436 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 8437 ++a; 8438 } 8439 #pragma omp target teams 8440 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8441 for (int i = 0; i < 10; ++i) 8442 ; 8443 #pragma omp target teams 8444 { 8445 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8446 } 8447 #pragma omp target teams 8448 { 8449 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 8450 } 8451 #pragma omp target teams 8452 { 8453 #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?}} 8454 ++a; 8455 } 8456 #pragma omp target teams 8457 { 8458 #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?}} 8459 for (int i = 0; i < 10; ++i) 8460 ++a; 8461 } 8462 #pragma omp target teams 8463 #pragma omp distribute 8464 for (int i = 0; i < 10; ++i) 8465 ; 8466 #pragma omp target teams 8467 { 8468 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 8469 ++a; 8470 } 8471 #pragma omp target teams 8472 #pragma omp distribute parallel for 8473 for (int i = 0; i < 10; ++i) 8474 ; 8475 #pragma omp target teams 8476 { 8477 #pragma omp distribute parallel for 8478 for (int i = 0; i < 10; ++i) 8479 ; 8480 #pragma omp distribute parallel for 8481 for (int j = 0; j < 10; ++j) 8482 ; 8483 } 8484 #pragma omp target teams 8485 { 8486 #pragma omp distribute parallel for simd 8487 for (int i = 0; i < 10; ++i) 8488 ; 8489 #pragma omp distribute parallel for simd 8490 for (int j = 0; j < 10; ++j) 8491 ; 8492 } 8493 #pragma omp target teams 8494 { 8495 #pragma omp distribute simd 8496 for (int i = 0; i < 10; ++i) 8497 ; 8498 #pragma omp distribute simd 8499 for (int j = 0; j < 10; ++j) 8500 ; 8501 } 8502 #pragma omp target teams 8503 { 8504 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 8505 for (int i = 0; i < 10; ++i) 8506 ; 8507 } 8508 #pragma omp target teams 8509 { 8510 #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?}} 8511 for (int i = 0; i < 10; ++i) 8512 ; 8513 } 8514 #pragma omp target teams 8515 { 8516 #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?}} 8517 for (int i = 0; i < 10; ++i) 8518 ; 8519 } 8520 #pragma omp target teams 8521 { 8522 #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?}} 8523 for (int i = 0; i < 10; ++i) 8524 ; 8525 } 8526 #pragma omp target teams 8527 { 8528 #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?}} 8529 for (int i = 0; i < 10; ++i) 8530 ; 8531 } 8532 #pragma omp target teams 8533 { 8534 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 8535 a++; 8536 } 8537 #pragma omp target teams 8538 { 8539 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 8540 for (int i = 0; i < 10; ++i) 8541 ; 8542 } 8543 #pragma omp target teams 8544 { 8545 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 8546 for (int i = 0; i < 10; ++i) 8547 ; 8548 } 8549 #pragma omp target teams 8550 { 8551 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 8552 for (int i = 0; i < 10; ++i) 8553 ; 8554 } 8555 #pragma omp target teams 8556 { 8557 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 8558 for (int i = 0; i < 10; ++i) 8559 ; 8560 } 8561 8562 // TARGET TEAMS DISTRIBUTE DIRECTIVE 8563 #pragma omp target teams distribute // OK 8564 for (int i = 0; i < 10; ++i) 8565 ; 8566 #pragma omp target teams distribute 8567 for (int i = 0; i < 10; ++i) { 8568 #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?}} 8569 for (int i = 0; i < 10; ++i) 8570 ; 8571 } 8572 #pragma omp target teams distribute 8573 for (int i = 0; i < 10; ++i) { 8574 #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?}} 8575 for (int i = 0; i < 10; ++i) 8576 ; 8577 } 8578 #pragma omp target teams distribute 8579 for (int i = 0; i < 10; ++i) { 8580 #pragma omp for // OK 8581 for (int i = 0; i < 10; ++i) 8582 ; 8583 } 8584 #pragma omp target teams distribute 8585 for (int i = 0; i < 10; ++i) { 8586 #pragma omp simd // OK 8587 for (int i = 0; i < 10; ++i) 8588 ; 8589 } 8590 #pragma omp target teams distribute 8591 for (int i = 0; i < 10; ++i) { 8592 #pragma omp for simd // OK 8593 for (int i = 0; i < 10; ++i) 8594 ; 8595 } 8596 #pragma omp target teams distribute 8597 for (int i = 0; i < 10; ++i) { 8598 #pragma omp parallel // OK 8599 for (int i = 0; i < 10; ++i) 8600 ; 8601 } 8602 #pragma omp target teams distribute 8603 for (int i = 0; i < 10; ++i) { 8604 #pragma omp sections // OK 8605 { 8606 bar(); 8607 } 8608 } 8609 #pragma omp target teams distribute 8610 for (int i = 0; i < 10; ++i) { 8611 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8612 { 8613 bar(); 8614 } 8615 } 8616 #pragma omp target teams distribute 8617 for (int i = 0; i < 10; ++i) { 8618 #pragma omp single // OK 8619 { 8620 bar(); 8621 } 8622 } 8623 #pragma omp target teams distribute 8624 for (int i = 0; i < 10; ++i) { 8625 #pragma omp master // OK 8626 { 8627 bar(); 8628 } 8629 } 8630 #pragma omp target teams distribute 8631 for (int i = 0; i < 10; ++i) { 8632 #pragma omp critical // OK 8633 { 8634 bar(); 8635 } 8636 } 8637 #pragma omp target teams distribute 8638 for (int i = 0; i < 10; ++i) { 8639 #pragma omp parallel // OK 8640 { 8641 #pragma omp single 8642 { 8643 bar(); 8644 } 8645 } 8646 } 8647 #pragma omp target teams distribute 8648 for (int i = 0; i < 10; ++i) { 8649 #pragma omp parallel for // OK 8650 for (int i = 0; i < 10; ++i) 8651 ; 8652 } 8653 #pragma omp target teams distribute 8654 for (int i = 0; i < 10; ++i) { 8655 #pragma omp parallel for simd // OK 8656 for (int i = 0; i < 10; ++i) 8657 ; 8658 } 8659 #pragma omp target teams distribute 8660 for (int i = 0; i < 10; ++i) { 8661 #pragma omp parallel sections // OK 8662 { 8663 bar(); 8664 } 8665 } 8666 #pragma omp target teams distribute 8667 for (int i = 0; i < 10; ++i) { 8668 #pragma omp task // OK 8669 { 8670 bar(); 8671 } 8672 } 8673 #pragma omp target teams distribute 8674 for (int i = 0; i < 10; ++i) { 8675 #pragma omp taskyield // OK 8676 bar(); 8677 } 8678 #pragma omp target teams distribute 8679 for (int i = 0; i < 10; ++i) { 8680 #pragma omp barrier // OK 8681 bar(); 8682 } 8683 #pragma omp target teams distribute 8684 for (int i = 0; i < 10; ++i) { 8685 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 8686 bar(); 8687 } 8688 #pragma omp target teams distribute 8689 for (int i = 0; i < 10; ++i) { 8690 #pragma omp taskwait // OK 8691 bar(); 8692 } 8693 #pragma omp target teams distribute 8694 for (int i = 0; i < 10; ++i) { 8695 #pragma omp flush // OK 8696 bar(); 8697 } 8698 #pragma omp target teams distribute 8699 for (int i = 0; i < 10; ++i) { 8700 #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?}} 8701 bar(); 8702 } 8703 #pragma omp target teams distribute 8704 for (int i = 0; i < 10; ++i) { 8705 #pragma omp atomic // OK 8706 ++a; 8707 } 8708 #pragma omp target teams distribute 8709 for (int i = 0; i < 10; ++i) { 8710 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8711 ++a; 8712 } 8713 #pragma omp target teams distribute 8714 for (int i = 0; i < 10; ++i) { 8715 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8716 ++a; 8717 } 8718 #pragma omp target teams distribute 8719 for (int i = 0; i < 10; ++i) { 8720 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8721 for (int i = 0; i < 10; ++i) 8722 ; 8723 } 8724 #pragma omp target teams distribute 8725 for (int i = 0; i < 10; ++i) { 8726 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8727 ++a; 8728 } 8729 #pragma omp target teams distribute 8730 for (int i = 0; i < 10; ++i) { 8731 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8732 ++a; 8733 } 8734 #pragma omp target teams distribute 8735 for (int i = 0; i < 10; ++i) { 8736 #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?}} 8737 ++a; 8738 } 8739 #pragma omp target teams distribute 8740 for (int i = 0; i < 10; ++i) { 8741 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8742 ++a; 8743 } 8744 #pragma omp target teams distribute 8745 for (int i = 0; i < 10; ++i) { 8746 #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?}} 8747 for (int i = 0; i < 10; ++i) 8748 ++a; 8749 } 8750 #pragma omp target teams distribute 8751 for (int i = 0; i < 10; ++i) { 8752 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8753 for (int i = 0; i < 10; ++i) 8754 ++a; 8755 } 8756 #pragma omp target teams distribute 8757 for (int i = 0; i < 10; ++i) { 8758 #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?}} 8759 for (int i = 0; i < 10; ++i) 8760 ++a; 8761 } 8762 #pragma omp target teams distribute 8763 for (int i = 0; i < 10; ++i) { 8764 #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?}} 8765 for (int i = 0; i < 10; ++i) 8766 ++a; 8767 } 8768 #pragma omp target teams distribute 8769 for (int i = 0; i < 10; ++i) { 8770 #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?}} 8771 for (int i = 0; i < 10; ++i) 8772 ++a; 8773 } 8774 #pragma omp target teams distribute 8775 for (int i = 0; i < 10; ++i) { 8776 #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?}} 8777 for (int i = 0; i < 10; ++i) 8778 ; 8779 } 8780 #pragma omp target teams distribute 8781 for (int i = 0; i < 10; ++i) { 8782 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8783 a++; 8784 } 8785 #pragma omp target teams distribute 8786 for (int i = 0; i < 10; ++i) { 8787 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8788 for (int i = 0; i < 10; ++i) 8789 ; 8790 } 8791 #pragma omp target teams distribute 8792 for (int i = 0; i < 10; ++i) { 8793 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8794 for (int i = 0; i < 10; ++i) 8795 ; 8796 } 8797 #pragma omp target teams distribute 8798 for (int i = 0; i < 10; ++i) { 8799 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8800 for (int i = 0; i < 10; ++i) 8801 ; 8802 } 8803 #pragma omp target teams distribute 8804 for (int i = 0; i < 10; ++i) { 8805 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8806 for (int i = 0; i < 10; ++i) 8807 ; 8808 } 8809 8810 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8811 #pragma omp target teams distribute parallel for // OK 8812 for (int i = 0; i < 10; ++i) 8813 ; 8814 #pragma omp target teams distribute parallel for 8815 for (int i = 0; i < 10; ++i) { 8816 #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?}} 8817 for (int i = 0; i < 10; ++i) 8818 ; 8819 } 8820 #pragma omp target teams distribute parallel for 8821 for (int i = 0; i < 10; ++i) { 8822 #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?}} 8823 for (int i = 0; i < 10; ++i) 8824 ; 8825 } 8826 #pragma omp target teams distribute parallel for 8827 for (int i = 0; i < 10; ++i) { 8828 #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?}} 8829 for (int i = 0; i < 10; ++i) 8830 ; 8831 } 8832 #pragma omp target teams distribute parallel for 8833 for (int i = 0; i < 10; ++i) { 8834 #pragma omp simd // OK 8835 for (int i = 0; i < 10; ++i) 8836 ; 8837 } 8838 #pragma omp target teams distribute parallel for 8839 for (int i = 0; i < 10; ++i) { 8840 #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?}} 8841 for (int i = 0; i < 10; ++i) 8842 ; 8843 } 8844 #pragma omp target teams distribute parallel for 8845 for (int i = 0; i < 10; ++i) { 8846 #pragma omp parallel // OK 8847 for (int i = 0; i < 10; ++i) 8848 ; 8849 } 8850 #pragma omp target teams distribute parallel for 8851 for (int i = 0; i < 10; ++i) { 8852 #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?}} 8853 { 8854 bar(); 8855 } 8856 } 8857 #pragma omp target teams distribute parallel for 8858 for (int i = 0; i < 10; ++i) { 8859 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 8860 { 8861 bar(); 8862 } 8863 } 8864 #pragma omp target teams distribute parallel for 8865 for (int i = 0; i < 10; ++i) { 8866 #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?}} 8867 { 8868 bar(); 8869 } 8870 } 8871 #pragma omp target teams distribute parallel for 8872 for (int i = 0; i < 10; ++i) { 8873 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8874 { 8875 bar(); 8876 } 8877 } 8878 #pragma omp target teams distribute parallel for 8879 for (int i = 0; i < 10; ++i) { 8880 #pragma omp critical // OK 8881 { 8882 bar(); 8883 } 8884 } 8885 #pragma omp target teams distribute parallel for 8886 for (int i = 0; i < 10; ++i) { 8887 #pragma omp parallel // OK 8888 { 8889 #pragma omp single 8890 { 8891 bar(); 8892 } 8893 } 8894 } 8895 #pragma omp target teams distribute parallel for 8896 for (int i = 0; i < 10; ++i) { 8897 #pragma omp parallel for // OK 8898 for (int i = 0; i < 10; ++i) 8899 ; 8900 } 8901 #pragma omp target teams distribute parallel for 8902 for (int i = 0; i < 10; ++i) { 8903 #pragma omp parallel for simd // OK 8904 for (int i = 0; i < 10; ++i) 8905 ; 8906 } 8907 #pragma omp target teams distribute parallel for 8908 for (int i = 0; i < 10; ++i) { 8909 #pragma omp parallel sections // OK 8910 { 8911 bar(); 8912 } 8913 } 8914 #pragma omp target teams distribute parallel for 8915 for (int i = 0; i < 10; ++i) { 8916 #pragma omp task // OK 8917 { 8918 bar(); 8919 } 8920 } 8921 #pragma omp target teams distribute parallel for 8922 for (int i = 0; i < 10; ++i) { 8923 #pragma omp taskyield // OK 8924 bar(); 8925 } 8926 #pragma omp target teams distribute parallel for 8927 for (int i = 0; i < 10; ++i) { 8928 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8929 bar(); 8930 } 8931 #pragma omp target teams distribute parallel for 8932 for (int i = 0; i < 10; ++i) { 8933 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8934 bar(); 8935 } 8936 #pragma omp target teams distribute parallel for 8937 for (int i = 0; i < 10; ++i) { 8938 #pragma omp taskwait // OK 8939 bar(); 8940 } 8941 #pragma omp target teams distribute parallel for 8942 for (int i = 0; i < 10; ++i) { 8943 #pragma omp flush // OK 8944 bar(); 8945 } 8946 #pragma omp target teams distribute parallel for 8947 for (int i = 0; i < 10; ++i) { 8948 #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?}} 8949 bar(); 8950 } 8951 #pragma omp target teams distribute parallel for 8952 for (int i = 0; i < 10; ++i) { 8953 #pragma omp atomic // OK 8954 ++a; 8955 } 8956 #pragma omp target teams distribute parallel for 8957 for (int i = 0; i < 10; ++i) { 8958 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8959 ++a; 8960 } 8961 #pragma omp target teams distribute parallel for 8962 for (int i = 0; i < 10; ++i) { 8963 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8964 ++a; 8965 } 8966 #pragma omp target teams distribute parallel for 8967 for (int i = 0; i < 10; ++i) { 8968 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8969 for (int i = 0; i < 10; ++i) 8970 ; 8971 } 8972 #pragma omp target teams distribute parallel for 8973 for (int i = 0; i < 10; ++i) { 8974 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8975 ++a; 8976 } 8977 #pragma omp target teams distribute parallel for 8978 for (int i = 0; i < 10; ++i) { 8979 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8980 ++a; 8981 } 8982 #pragma omp target teams distribute parallel for 8983 for (int i = 0; i < 10; ++i) { 8984 #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?}} 8985 ++a; 8986 } 8987 #pragma omp target teams distribute parallel for 8988 for (int i = 0; i < 10; ++i) { 8989 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8990 ++a; 8991 } 8992 #pragma omp target teams distribute parallel for 8993 for (int i = 0; i < 10; ++i) { 8994 #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?}} 8995 for (int i = 0; i < 10; ++i) 8996 ++a; 8997 } 8998 #pragma omp target teams distribute parallel for 8999 for (int i = 0; i < 10; ++i) { 9000 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9001 for (int i = 0; i < 10; ++i) 9002 ++a; 9003 } 9004 #pragma omp target teams distribute parallel for 9005 for (int i = 0; i < 10; ++i) { 9006 #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?}} 9007 for (int i = 0; i < 10; ++i) 9008 ++a; 9009 } 9010 #pragma omp target teams distribute parallel for 9011 for (int i = 0; i < 10; ++i) { 9012 #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?}} 9013 for (int i = 0; i < 10; ++i) 9014 ++a; 9015 } 9016 #pragma omp target teams distribute parallel for 9017 for (int i = 0; i < 10; ++i) { 9018 #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?}} 9019 for (int i = 0; i < 10; ++i) 9020 ++a; 9021 } 9022 #pragma omp target teams distribute parallel for 9023 for (int i = 0; i < 10; ++i) { 9024 #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?}} 9025 for (int i = 0; i < 10; ++i) 9026 ; 9027 } 9028 #pragma omp target teams distribute parallel for 9029 for (int i = 0; i < 10; ++i) { 9030 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9031 a++; 9032 } 9033 #pragma omp target teams distribute parallel for 9034 for (int i = 0; i < 10; ++i) { 9035 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9036 for (int i = 0; i < 10; ++i) 9037 ; 9038 } 9039 #pragma omp target teams distribute parallel for 9040 for (int i = 0; i < 10; ++i) { 9041 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9042 for (int i = 0; i < 10; ++i) 9043 ; 9044 } 9045 #pragma omp target teams distribute parallel for 9046 for (int i = 0; i < 10; ++i) { 9047 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9048 for (int i = 0; i < 10; ++i) 9049 ; 9050 } 9051 #pragma omp target teams distribute parallel for 9052 for (int i = 0; i < 10; ++i) { 9053 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 9054 for (int i = 0; i < 10; ++i) 9055 ; 9056 } 9057 9058 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 9059 #pragma omp target teams distribute parallel for simd // OK 9060 for (int i = 0; i < 10; ++i) 9061 ; 9062 #pragma omp target teams distribute parallel for simd 9063 for (int i = 0; i < 10; ++i) { 9064 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9065 for (int i = 0; i < 10; ++i) 9066 ; 9067 } 9068 #pragma omp target teams distribute parallel for simd 9069 for (int i = 0; i < 10; ++i) { 9070 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9071 for (int i = 0; i < 10; ++i) 9072 ; 9073 } 9074 #pragma omp target teams distribute parallel for simd 9075 for (int i = 0; i < 10; ++i) { 9076 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9077 for (int i = 0; i < 10; ++i) 9078 ; 9079 } 9080 #pragma omp target teams distribute parallel for simd 9081 for (int i = 0; i < 10; ++i) { 9082 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9083 for (int i = 0; i < 10; ++i) 9084 ; 9085 } 9086 #pragma omp target teams distribute parallel for simd 9087 for (int i = 0; i < 10; ++i) { 9088 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9089 for (int i = 0; i < 10; ++i) 9090 ; 9091 } 9092 #pragma omp target teams distribute parallel for simd 9093 for (int i = 0; i < 10; ++i) { 9094 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9095 for (int i = 0; i < 10; ++i) 9096 ; 9097 } 9098 #pragma omp target teams distribute parallel for simd 9099 for (int i = 0; i < 10; ++i) { 9100 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9101 { 9102 bar(); 9103 } 9104 } 9105 #pragma omp target teams distribute parallel for simd 9106 for (int i = 0; i < 10; ++i) { 9107 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9108 { 9109 bar(); 9110 } 9111 } 9112 #pragma omp target teams distribute parallel for simd 9113 for (int i = 0; i < 10; ++i) { 9114 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9115 { 9116 bar(); 9117 } 9118 } 9119 #pragma omp target teams distribute parallel for simd 9120 for (int i = 0; i < 10; ++i) { 9121 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9122 { 9123 bar(); 9124 } 9125 } 9126 #pragma omp target teams distribute parallel for simd 9127 for (int i = 0; i < 10; ++i) { 9128 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9129 { 9130 bar(); 9131 } 9132 } 9133 #pragma omp target teams distribute parallel for simd 9134 for (int i = 0; i < 10; ++i) { 9135 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9136 { 9137 #pragma omp single 9138 { 9139 bar(); 9140 } 9141 } 9142 } 9143 #pragma omp target teams distribute parallel for simd 9144 for (int i = 0; i < 10; ++i) { 9145 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9146 for (int i = 0; i < 10; ++i) 9147 ; 9148 } 9149 #pragma omp target teams distribute parallel for simd 9150 for (int i = 0; i < 10; ++i) { 9151 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9152 for (int i = 0; i < 10; ++i) 9153 ; 9154 } 9155 #pragma omp target teams distribute parallel for simd 9156 for (int i = 0; i < 10; ++i) { 9157 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9158 { 9159 bar(); 9160 } 9161 } 9162 #pragma omp target teams distribute parallel for simd 9163 for (int i = 0; i < 10; ++i) { 9164 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9165 { 9166 bar(); 9167 } 9168 } 9169 #pragma omp target teams distribute parallel for simd 9170 for (int i = 0; i < 10; ++i) { 9171 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9172 bar(); 9173 } 9174 #pragma omp target teams distribute parallel for simd 9175 for (int i = 0; i < 10; ++i) { 9176 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9177 bar(); 9178 } 9179 #pragma omp target teams distribute parallel for simd 9180 for (int i = 0; i < 10; ++i) { 9181 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9182 bar(); 9183 } 9184 #pragma omp target teams distribute parallel for simd 9185 for (int i = 0; i < 10; ++i) { 9186 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9187 bar(); 9188 } 9189 #pragma omp target teams distribute parallel for simd 9190 for (int i = 0; i < 10; ++i) { 9191 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9192 bar(); 9193 } 9194 #pragma omp target teams distribute parallel for simd 9195 for (int i = 0; i < 10; ++i) { 9196 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9197 bar(); 9198 } 9199 #pragma omp target teams distribute parallel for simd 9200 for (int i = 0; i < 10; ++i) { 9201 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9202 ++a; 9203 } 9204 #pragma omp target teams distribute parallel for simd 9205 for (int i = 0; i < 10; ++i) { 9206 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9207 ++a; 9208 } 9209 #pragma omp target teams distribute parallel for simd 9210 for (int i = 0; i < 10; ++i) { 9211 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9212 ++a; 9213 } 9214 #pragma omp target teams distribute parallel for simd 9215 for (int i = 0; i < 10; ++i) { 9216 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9217 for (int i = 0; i < 10; ++i) 9218 ; 9219 } 9220 #pragma omp target teams distribute parallel for simd 9221 for (int i = 0; i < 10; ++i) { 9222 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9223 ++a; 9224 } 9225 #pragma omp target teams distribute parallel for simd 9226 for (int i = 0; i < 10; ++i) { 9227 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9228 ++a; 9229 } 9230 #pragma omp target teams distribute parallel for simd 9231 for (int i = 0; i < 10; ++i) { 9232 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9233 ++a; 9234 } 9235 #pragma omp target teams distribute parallel for simd 9236 for (int i = 0; i < 10; ++i) { 9237 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9238 ++a; 9239 } 9240 #pragma omp target teams distribute parallel for simd 9241 for (int i = 0; i < 10; ++i) { 9242 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9243 for (int i = 0; i < 10; ++i) 9244 ++a; 9245 } 9246 #pragma omp target teams distribute parallel for simd 9247 for (int i = 0; i < 10; ++i) { 9248 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9249 for (int i = 0; i < 10; ++i) 9250 ++a; 9251 } 9252 #pragma omp target teams distribute parallel for simd 9253 for (int i = 0; i < 10; ++i) { 9254 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9255 for (int i = 0; i < 10; ++i) 9256 ++a; 9257 } 9258 #pragma omp target teams distribute parallel for simd 9259 for (int i = 0; i < 10; ++i) { 9260 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9261 for (int i = 0; i < 10; ++i) 9262 ++a; 9263 } 9264 #pragma omp target teams distribute parallel for simd 9265 for (int i = 0; i < 10; ++i) { 9266 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9267 for (int i = 0; i < 10; ++i) 9268 ++a; 9269 } 9270 #pragma omp target teams distribute parallel for simd 9271 for (int i = 0; i < 10; ++i) { 9272 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9273 for (int i = 0; i < 10; ++i) 9274 ; 9275 } 9276 #pragma omp target teams distribute parallel for simd 9277 for (int i = 0; i < 10; ++i) { 9278 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9279 a++; 9280 } 9281 #pragma omp target teams distribute parallel for simd 9282 for (int i = 0; i < 10; ++i) { 9283 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9284 for (int i = 0; i < 10; ++i) 9285 ; 9286 } 9287 #pragma omp target teams distribute parallel for simd 9288 for (int i = 0; i < 10; ++i) { 9289 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9290 for (int i = 0; i < 10; ++i) 9291 ; 9292 } 9293 #pragma omp target teams distribute parallel for simd 9294 for (int i = 0; i < 10; ++i) { 9295 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9296 for (int i = 0; i < 10; ++i) 9297 ; 9298 } 9299 #pragma omp target teams distribute parallel for simd 9300 for (int i = 0; i < 10; ++i) { 9301 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9302 for (int i = 0; i < 10; ++i) 9303 ; 9304 } 9305 9306 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 9307 #pragma omp target teams distribute simd // OK 9308 for (int i = 0; i < 10; ++i) 9309 ; 9310 #pragma omp target teams distribute simd 9311 for (int i = 0; i < 10; ++i) { 9312 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9313 for (int i = 0; i < 10; ++i) 9314 ; 9315 } 9316 #pragma omp target teams distribute simd 9317 for (int i = 0; i < 10; ++i) { 9318 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9319 for (int i = 0; i < 10; ++i) 9320 ; 9321 } 9322 #pragma omp target teams distribute simd 9323 for (int i = 0; i < 10; ++i) { 9324 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9325 for (int i = 0; i < 10; ++i) 9326 ; 9327 } 9328 #pragma omp target teams distribute simd 9329 for (int i = 0; i < 10; ++i) { 9330 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9331 for (int i = 0; i < 10; ++i) 9332 ; 9333 } 9334 #pragma omp target teams distribute simd 9335 for (int i = 0; i < 10; ++i) { 9336 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9337 for (int i = 0; i < 10; ++i) 9338 ; 9339 } 9340 #pragma omp target teams distribute simd 9341 for (int i = 0; i < 10; ++i) { 9342 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9343 for (int i = 0; i < 10; ++i) 9344 ; 9345 } 9346 #pragma omp target teams distribute simd 9347 for (int i = 0; i < 10; ++i) { 9348 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9349 { 9350 bar(); 9351 } 9352 } 9353 #pragma omp target teams distribute simd 9354 for (int i = 0; i < 10; ++i) { 9355 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9356 { 9357 bar(); 9358 } 9359 } 9360 #pragma omp target teams distribute simd 9361 for (int i = 0; i < 10; ++i) { 9362 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9363 { 9364 bar(); 9365 } 9366 } 9367 #pragma omp target teams distribute simd 9368 for (int i = 0; i < 10; ++i) { 9369 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9370 { 9371 bar(); 9372 } 9373 } 9374 #pragma omp target teams distribute simd 9375 for (int i = 0; i < 10; ++i) { 9376 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9377 { 9378 bar(); 9379 } 9380 } 9381 #pragma omp target teams distribute simd 9382 for (int i = 0; i < 10; ++i) { 9383 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9384 { 9385 #pragma omp single 9386 { 9387 bar(); 9388 } 9389 } 9390 } 9391 #pragma omp target teams distribute simd 9392 for (int i = 0; i < 10; ++i) { 9393 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9394 for (int i = 0; i < 10; ++i) 9395 ; 9396 } 9397 #pragma omp target teams distribute simd 9398 for (int i = 0; i < 10; ++i) { 9399 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9400 for (int i = 0; i < 10; ++i) 9401 ; 9402 } 9403 #pragma omp target teams distribute simd 9404 for (int i = 0; i < 10; ++i) { 9405 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9406 { 9407 bar(); 9408 } 9409 } 9410 #pragma omp target teams distribute simd 9411 for (int i = 0; i < 10; ++i) { 9412 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9413 { 9414 bar(); 9415 } 9416 } 9417 #pragma omp target teams distribute simd 9418 for (int i = 0; i < 10; ++i) { 9419 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9420 bar(); 9421 } 9422 #pragma omp target teams distribute simd 9423 for (int i = 0; i < 10; ++i) { 9424 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9425 bar(); 9426 } 9427 #pragma omp target teams distribute simd 9428 for (int i = 0; i < 10; ++i) { 9429 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9430 bar(); 9431 } 9432 #pragma omp target teams distribute simd 9433 for (int i = 0; i < 10; ++i) { 9434 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9435 bar(); 9436 } 9437 #pragma omp target teams distribute simd 9438 for (int i = 0; i < 10; ++i) { 9439 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9440 bar(); 9441 } 9442 #pragma omp target teams distribute simd 9443 for (int i = 0; i < 10; ++i) { 9444 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9445 bar(); 9446 } 9447 #pragma omp target teams distribute simd 9448 for (int i = 0; i < 10; ++i) { 9449 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9450 ++a; 9451 } 9452 #pragma omp target teams distribute simd 9453 for (int i = 0; i < 10; ++i) { 9454 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9455 ++a; 9456 } 9457 #pragma omp target teams distribute simd 9458 for (int i = 0; i < 10; ++i) { 9459 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9460 ++a; 9461 } 9462 #pragma omp target teams distribute simd 9463 for (int i = 0; i < 10; ++i) { 9464 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9465 for (int i = 0; i < 10; ++i) 9466 ; 9467 } 9468 #pragma omp target teams distribute simd 9469 for (int i = 0; i < 10; ++i) { 9470 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9471 ++a; 9472 } 9473 #pragma omp target teams distribute simd 9474 for (int i = 0; i < 10; ++i) { 9475 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9476 ++a; 9477 } 9478 #pragma omp target teams distribute simd 9479 for (int i = 0; i < 10; ++i) { 9480 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9481 ++a; 9482 } 9483 #pragma omp target teams distribute simd 9484 for (int i = 0; i < 10; ++i) { 9485 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9486 ++a; 9487 } 9488 #pragma omp target teams distribute simd 9489 for (int i = 0; i < 10; ++i) { 9490 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9491 for (int i = 0; i < 10; ++i) 9492 ++a; 9493 } 9494 #pragma omp target teams distribute simd 9495 for (int i = 0; i < 10; ++i) { 9496 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9497 for (int i = 0; i < 10; ++i) 9498 ++a; 9499 } 9500 #pragma omp target teams distribute simd 9501 for (int i = 0; i < 10; ++i) { 9502 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9503 for (int i = 0; i < 10; ++i) 9504 ++a; 9505 } 9506 #pragma omp target teams distribute simd 9507 for (int i = 0; i < 10; ++i) { 9508 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9509 for (int i = 0; i < 10; ++i) 9510 ++a; 9511 } 9512 #pragma omp target teams distribute simd 9513 for (int i = 0; i < 10; ++i) { 9514 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9515 for (int i = 0; i < 10; ++i) 9516 ++a; 9517 } 9518 #pragma omp target teams distribute simd 9519 for (int i = 0; i < 10; ++i) { 9520 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9521 for (int i = 0; i < 10; ++i) 9522 ; 9523 } 9524 #pragma omp target teams distribute simd 9525 for (int i = 0; i < 10; ++i) { 9526 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9527 a++; 9528 } 9529 #pragma omp target teams distribute simd 9530 for (int i = 0; i < 10; ++i) { 9531 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9532 for (int i = 0; i < 10; ++i) 9533 ; 9534 } 9535 #pragma omp target teams distribute simd 9536 for (int i = 0; i < 10; ++i) { 9537 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9538 for (int i = 0; i < 10; ++i) 9539 ; 9540 } 9541 #pragma omp target teams distribute simd 9542 for (int i = 0; i < 10; ++i) { 9543 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9544 for (int i = 0; i < 10; ++i) 9545 ; 9546 } 9547 #pragma omp target teams distribute simd 9548 for (int i = 0; i < 10; ++i) { 9549 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9550 for (int i = 0; i < 10; ++i) 9551 ; 9552 } 9553 9554 } 9555 9556 void foo() { 9557 int a = 0; 9558 // PARALLEL DIRECTIVE 9559 #pragma omp parallel 9560 #pragma omp for 9561 for (int i = 0; i < 10; ++i) 9562 ; 9563 #pragma omp parallel 9564 #pragma omp simd 9565 for (int i = 0; i < 10; ++i) 9566 ; 9567 #pragma omp parallel 9568 #pragma omp for simd 9569 for (int i = 0; i < 10; ++i) 9570 ; 9571 #pragma omp parallel 9572 #pragma omp sections 9573 { 9574 bar(); 9575 } 9576 #pragma omp parallel 9577 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 9578 { 9579 bar(); 9580 } 9581 #pragma omp parallel 9582 #pragma omp sections 9583 { 9584 bar(); 9585 } 9586 #pragma omp parallel 9587 #pragma omp single 9588 bar(); 9589 #pragma omp parallel 9590 #pragma omp master 9591 bar(); 9592 #pragma omp parallel master 9593 bar(); 9594 #pragma omp parallel 9595 #pragma omp critical 9596 bar(); 9597 #pragma omp parallel 9598 #pragma omp parallel for 9599 for (int i = 0; i < 10; ++i) 9600 ; 9601 #pragma omp parallel 9602 #pragma omp parallel for simd 9603 for (int i = 0; i < 10; ++i) 9604 ; 9605 #pragma omp parallel 9606 #pragma omp parallel sections 9607 { 9608 bar(); 9609 } 9610 #pragma omp parallel 9611 #pragma omp task 9612 { 9613 bar(); 9614 } 9615 #pragma omp parallel 9616 { 9617 #pragma omp taskyield 9618 bar(); 9619 } 9620 #pragma omp parallel 9621 { 9622 #pragma omp barrier 9623 bar(); 9624 } 9625 #pragma omp parallel 9626 { 9627 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 9628 bar(); 9629 } 9630 #pragma omp parallel 9631 { 9632 #pragma omp taskwait 9633 bar(); 9634 } 9635 #pragma omp parallel 9636 { 9637 #pragma omp flush 9638 bar(); 9639 } 9640 #pragma omp parallel 9641 { 9642 #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?}} 9643 bar(); 9644 } 9645 #pragma omp parallel 9646 { 9647 #pragma omp atomic 9648 ++a; 9649 } 9650 #pragma omp parallel 9651 { 9652 #pragma omp target 9653 ++a; 9654 } 9655 #pragma omp parallel 9656 { 9657 #pragma omp target parallel 9658 ++a; 9659 } 9660 #pragma omp parallel 9661 #pragma omp target parallel for 9662 for (int i = 0; i < 10; ++i) 9663 ; 9664 #pragma omp parallel 9665 { 9666 #pragma omp target enter data map(to: a) 9667 ++a; 9668 } 9669 #pragma omp parallel 9670 { 9671 #pragma omp target exit data map(from: a) 9672 ++a; 9673 } 9674 #pragma omp parallel 9675 { 9676 #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?}} 9677 ++a; 9678 } 9679 #pragma omp parallel 9680 { 9681 #pragma omp taskloop 9682 for (int i = 0; i < 10; ++i) 9683 ++a; 9684 } 9685 #pragma omp parallel 9686 { 9687 #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?}} 9688 for (int i = 0; i < 10; ++i) 9689 ; 9690 } 9691 #pragma omp parallel 9692 { 9693 #pragma omp target update to(a) 9694 a++; 9695 } 9696 #pragma omp parallel 9697 { 9698 #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?}} 9699 for (int i = 0; i < 10; ++i) 9700 ; 9701 } 9702 #pragma omp parallel 9703 { 9704 #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?}} 9705 for (int i = 0; i < 10; ++i) 9706 ; 9707 } 9708 #pragma omp parallel 9709 { 9710 #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?}} 9711 for (int i = 0; i < 10; ++i) 9712 ; 9713 } 9714 #pragma omp parallel 9715 { 9716 #pragma omp target simd // OK 9717 for (int i = 0; i < 10; ++i) 9718 ; 9719 } 9720 #pragma omp parallel 9721 { 9722 #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?}} 9723 for (int i = 0; i < 10; ++i) 9724 ; 9725 } 9726 #pragma omp parallel 9727 { 9728 #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?}} 9729 for (int i = 0; i < 10; ++i) 9730 ; 9731 } 9732 #pragma omp parallel 9733 { 9734 #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?}} 9735 for (int i = 0; i < 10; ++i) 9736 ; 9737 } 9738 #pragma omp parallel 9739 { 9740 #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?}} 9741 for (int i = 0; i < 10; ++i) 9742 ; 9743 } 9744 #pragma omp parallel 9745 { 9746 #pragma omp target teams // OK 9747 a++; 9748 } 9749 #pragma omp parallel 9750 { 9751 #pragma omp target teams distribute // OK 9752 for (int i = 0; i < 10; ++i) 9753 ; 9754 } 9755 #pragma omp parallel 9756 { 9757 #pragma omp target teams distribute parallel for // OK 9758 for (int i = 0; i < 10; ++i) 9759 ; 9760 } 9761 #pragma omp parallel 9762 { 9763 #pragma omp target teams distribute parallel for simd // OK 9764 for (int i = 0; i < 10; ++i) 9765 ; 9766 } 9767 #pragma omp parallel 9768 { 9769 #pragma omp target teams distribute simd // OK 9770 for (int i = 0; i < 10; ++i) 9771 ; 9772 } 9773 9774 // SIMD DIRECTIVE 9775 #pragma omp simd 9776 for (int i = 0; i < 10; ++i) { 9777 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9778 for (int i = 0; i < 10; ++i) 9779 ; 9780 } 9781 #pragma omp simd 9782 for (int i = 0; i < 10; ++i) { 9783 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9784 for (int i = 0; i < 10; ++i) 9785 ; 9786 } 9787 #pragma omp simd 9788 for (int i = 0; i < 10; ++i) { 9789 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9790 for (int i = 0; i < 10; ++i) 9791 ; 9792 } 9793 #pragma omp simd 9794 for (int i = 0; i < 10; ++i) { 9795 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9796 for (int i = 0; i < 10; ++i) 9797 ; 9798 } 9799 #pragma omp simd 9800 for (int i = 0; i < 10; ++i) { 9801 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9802 { 9803 bar(); 9804 } 9805 } 9806 #pragma omp simd 9807 for (int i = 0; i < 10; ++i) { 9808 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9809 { 9810 bar(); 9811 } 9812 } 9813 #pragma omp simd 9814 for (int i = 0; i < 10; ++i) { 9815 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9816 bar(); 9817 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9818 bar(); 9819 } 9820 #pragma omp simd 9821 for (int i = 0; i < 10; ++i) { 9822 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9823 bar(); 9824 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9825 bar(); 9826 } 9827 #pragma omp simd 9828 for (int i = 0; i < 10; ++i) { 9829 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9830 for (int i = 0; i < 10; ++i) 9831 ; 9832 } 9833 #pragma omp simd 9834 for (int i = 0; i < 10; ++i) { 9835 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9836 for (int i = 0; i < 10; ++i) 9837 ; 9838 } 9839 #pragma omp simd 9840 for (int i = 0; i < 10; ++i) { 9841 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9842 { 9843 bar(); 9844 } 9845 } 9846 #pragma omp simd 9847 for (int i = 0; i < 10; ++i) { 9848 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9849 { 9850 bar(); 9851 } 9852 } 9853 #pragma omp simd 9854 for (int i = 0; i < 10; ++i) { 9855 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9856 bar(); 9857 } 9858 #pragma omp simd 9859 for (int i = 0; i < 10; ++i) { 9860 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9861 bar(); 9862 } 9863 #pragma omp simd 9864 for (int i = 0; i < 10; ++i) { 9865 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 9866 bar(); 9867 } 9868 #pragma omp simd 9869 for (int i = 0; i < 10; ++i) { 9870 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9871 bar(); 9872 } 9873 #pragma omp simd 9874 for (int i = 0; i < 10; ++i) { 9875 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9876 bar(); 9877 } 9878 #pragma omp simd 9879 for (int i = 0; i < 10; ++i) { 9880 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9881 bar(); 9882 } 9883 #pragma omp simd 9884 for (int i = 0; i < 10; ++i) { 9885 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 9886 ++a; 9887 } 9888 #pragma omp simd 9889 for (int i = 0; i < 10; ++i) { 9890 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9891 ++a; 9892 } 9893 #pragma omp simd 9894 for (int i = 0; i < 10; ++i) { 9895 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9896 ++a; 9897 } 9898 #pragma omp simd 9899 for (int i = 0; i < 10; ++i) { 9900 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9901 for (int i = 0; i < 10; ++i) 9902 ; 9903 } 9904 #pragma omp simd 9905 for (int i = 0; i < 10; ++i) { 9906 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9907 ++a; 9908 } 9909 #pragma omp simd 9910 for (int i = 0; i < 10; ++i) { 9911 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9912 ++a; 9913 } 9914 #pragma omp simd 9915 for (int i = 0; i < 10; ++i) { 9916 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9917 ++a; 9918 } 9919 #pragma omp simd 9920 for (int i = 0; i < 10; ++i) { 9921 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9922 for (int i = 0; i < 10; ++i) 9923 ++a; 9924 } 9925 #pragma omp simd 9926 for (int i = 0; i < 10; ++i) { 9927 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9928 for (int j = 0; j < 10; ++j) 9929 ; 9930 } 9931 #pragma omp simd 9932 for (int i = 0; i < 10; ++i) { 9933 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9934 a++; 9935 } 9936 #pragma omp simd 9937 for (int i = 0; i < 10; ++i) { 9938 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9939 for (int j = 0; j < 10; ++j) 9940 ; 9941 } 9942 #pragma omp simd 9943 for (int i = 0; i < 10; ++i) { 9944 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9945 for (int j = 0; j < 10; ++j) 9946 ; 9947 } 9948 #pragma omp simd 9949 for (int i = 0; i < 10; ++i) { 9950 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9951 for (int j = 0; j < 10; ++j) 9952 ; 9953 } 9954 #pragma omp simd 9955 for (int i = 0; i < 10; ++i) { 9956 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9957 for (int j = 0; j < 10; ++j) 9958 ; 9959 } 9960 #pragma omp simd 9961 for (int i = 0; i < 10; ++i) { 9962 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9963 for (int j = 0; j < 10; ++j) 9964 ; 9965 } 9966 #pragma omp simd 9967 for (int i = 0; i < 10; ++i) { 9968 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9969 for (int j = 0; j < 10; ++j) 9970 ; 9971 } 9972 #pragma omp simd 9973 for (int i = 0; i < 10; ++i) { 9974 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9975 for (int j = 0; j < 10; ++j) 9976 ; 9977 } 9978 #pragma omp simd 9979 for (int i = 0; i < 10; ++i) { 9980 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9981 for (int j = 0; j < 10; ++j) 9982 ; 9983 } 9984 #pragma omp simd 9985 for (int i = 0; i < 10; ++i) { 9986 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9987 a++; 9988 } 9989 #pragma omp simd 9990 for (int i = 0; i < 10; ++i) { 9991 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9992 for (int j = 0; j < 10; ++j) 9993 ; 9994 } 9995 #pragma omp simd 9996 for (int i = 0; i < 10; ++i) { 9997 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9998 for (int j = 0; j < 10; ++j) 9999 ; 10000 } 10001 #pragma omp simd 10002 for (int i = 0; i < 10; ++i) { 10003 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10004 for (int j = 0; j < 10; ++j) 10005 ; 10006 } 10007 #pragma omp simd 10008 for (int i = 0; i < 10; ++i) { 10009 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10010 for (int j = 0; j < 10; ++j) 10011 ; 10012 } 10013 10014 // FOR DIRECTIVE 10015 #pragma omp for 10016 for (int i = 0; i < 10; ++i) { 10017 #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?}} 10018 for (int i = 0; i < 10; ++i) 10019 ; 10020 } 10021 #pragma omp for 10022 for (int i = 0; i < 10; ++i) { 10023 #pragma omp simd 10024 for (int i = 0; i < 10; ++i) 10025 ; 10026 } 10027 #pragma omp for 10028 for (int i = 0; i < 10; ++i) { 10029 #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?}} 10030 for (int i = 0; i < 10; ++i) 10031 ; 10032 } 10033 #pragma omp for 10034 for (int i = 0; i < 10; ++i) { 10035 #pragma omp parallel 10036 for (int i = 0; i < 10; ++i) 10037 ; 10038 } 10039 #pragma omp for 10040 for (int i = 0; i < 10; ++i) { 10041 #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?}} 10042 { 10043 bar(); 10044 } 10045 } 10046 #pragma omp for 10047 for (int i = 0; i < 10; ++i) { 10048 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 10049 { 10050 bar(); 10051 } 10052 } 10053 #pragma omp for 10054 for (int i = 0; i < 10; ++i) { 10055 #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?}} 10056 bar(); 10057 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 10058 bar(); 10059 #pragma omp critical 10060 bar(); 10061 } 10062 #pragma omp for 10063 for (int i = 0; i < 10; ++i) { 10064 #pragma omp parallel 10065 { 10066 #pragma omp single // OK 10067 { 10068 bar(); 10069 } 10070 #pragma omp for // OK 10071 for (int i = 0; i < 10; ++i) 10072 ; 10073 #pragma omp for simd // OK 10074 for (int i = 0; i < 10; ++i) 10075 ; 10076 #pragma omp sections // OK 10077 { 10078 bar(); 10079 } 10080 } 10081 } 10082 #pragma omp for 10083 for (int i = 0; i < 10; ++i) { 10084 #pragma omp parallel for 10085 for (int i = 0; i < 10; ++i) 10086 ; 10087 } 10088 #pragma omp for 10089 for (int i = 0; i < 10; ++i) { 10090 #pragma omp parallel for simd 10091 for (int i = 0; i < 10; ++i) 10092 ; 10093 } 10094 #pragma omp for 10095 for (int i = 0; i < 10; ++i) { 10096 #pragma omp parallel sections 10097 { 10098 bar(); 10099 } 10100 } 10101 #pragma omp for 10102 for (int i = 0; i < 10; ++i) { 10103 #pragma omp task 10104 { 10105 bar(); 10106 } 10107 } 10108 #pragma omp for 10109 for (int i = 0; i < 10; ++i) { 10110 #pragma omp taskyield 10111 bar(); 10112 } 10113 #pragma omp for 10114 for (int i = 0; i < 10; ++i) { 10115 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 10116 bar(); 10117 } 10118 #pragma omp for 10119 for (int i = 0; i < 10; ++i) { 10120 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10121 bar(); 10122 } 10123 #pragma omp for 10124 for (int i = 0; i < 10; ++i) { 10125 #pragma omp taskwait 10126 bar(); 10127 } 10128 #pragma omp for 10129 for (int i = 0; i < 10; ++i) { 10130 #pragma omp flush 10131 bar(); 10132 } 10133 #pragma omp for 10134 for (int i = 0; i < 10; ++i) { 10135 #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?}} 10136 bar(); 10137 } 10138 #pragma omp for ordered 10139 for (int i = 0; i < 10; ++i) { 10140 #pragma omp ordered // OK 10141 bar(); 10142 } 10143 #pragma omp for 10144 for (int i = 0; i < 10; ++i) { 10145 #pragma omp atomic 10146 ++a; 10147 } 10148 #pragma omp for 10149 for (int i = 0; i < 10; ++i) { 10150 #pragma omp target 10151 ++a; 10152 } 10153 #pragma omp for 10154 for (int i = 0; i < 10; ++i) { 10155 #pragma omp target parallel 10156 ++a; 10157 } 10158 #pragma omp for 10159 for (int i = 0; i < 10; ++i) { 10160 #pragma omp target parallel for 10161 for (int i = 0; i < 10; ++i) 10162 ; 10163 } 10164 #pragma omp for 10165 for (int i = 0; i < 10; ++i) { 10166 #pragma omp target enter data map(to: a) 10167 ++a; 10168 } 10169 #pragma omp for 10170 for (int i = 0; i < 10; ++i) { 10171 #pragma omp target exit data map(from: a) 10172 ++a; 10173 } 10174 #pragma omp for 10175 for (int i = 0; i < 10; ++i) { 10176 #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?}} 10177 ++a; 10178 } 10179 #pragma omp for 10180 for (int i = 0; i < 10; ++i) { 10181 #pragma omp taskloop 10182 for (int i = 0; i < 10; ++i) 10183 ++a; 10184 } 10185 #pragma omp for 10186 for (int i = 0; i < 10; ++i) { 10187 #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?}} 10188 for (int j = 0; j < 10; ++j) 10189 ; 10190 } 10191 #pragma omp for 10192 for (int i = 0; i < 10; ++i) { 10193 #pragma omp target update to(a) 10194 ++a; 10195 } 10196 #pragma omp for 10197 for (int i = 0; i < 10; ++i) { 10198 #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?}} 10199 for (int j = 0; j < 10; ++j) 10200 ; 10201 } 10202 #pragma omp for 10203 for (int i = 0; i < 10; ++i) { 10204 #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?}} 10205 for (int j = 0; j < 10; ++j) 10206 ; 10207 } 10208 #pragma omp for 10209 for (int i = 0; i < 10; ++i) { 10210 #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?}} 10211 for (int j = 0; j < 10; ++j) 10212 ; 10213 } 10214 #pragma omp for 10215 for (int i = 0; i < 10; ++i) { 10216 #pragma omp target simd // OK 10217 for (int j = 0; j < 10; ++j) 10218 ; 10219 } 10220 #pragma omp for 10221 for (int i = 0; i < 10; ++i) { 10222 #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?}} 10223 for (int j = 0; j < 10; ++j) 10224 ; 10225 } 10226 #pragma omp for 10227 for (int i = 0; i < 10; ++i) { 10228 #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?}} 10229 for (int j = 0; j < 10; ++j) 10230 ; 10231 } 10232 #pragma omp for 10233 for (int i = 0; i < 10; ++i) { 10234 #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?}} 10235 for (int j = 0; j < 10; ++j) 10236 ; 10237 } 10238 #pragma omp for 10239 for (int i = 0; i < 10; ++i) { 10240 #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?}} 10241 for (int j = 0; j < 10; ++j) 10242 ; 10243 } 10244 #pragma omp for 10245 for (int i = 0; i < 10; ++i) { 10246 #pragma omp target teams // OK 10247 a++; 10248 } 10249 #pragma omp for 10250 for (int i = 0; i < 10; ++i) { 10251 #pragma omp target teams distribute // OK 10252 for (int j = 0; j < 10; ++j) 10253 ; 10254 } 10255 #pragma omp for 10256 for (int i = 0; i < 10; ++i) { 10257 #pragma omp target teams distribute parallel for // OK 10258 for (int j = 0; j < 10; ++j) 10259 ; 10260 } 10261 #pragma omp for 10262 for (int i = 0; i < 10; ++i) { 10263 #pragma omp target teams distribute parallel for simd // OK 10264 for (int j = 0; j < 10; ++j) 10265 ; 10266 } 10267 #pragma omp for 10268 for (int i = 0; i < 10; ++i) { 10269 #pragma omp target teams distribute simd // OK 10270 for (int j = 0; j < 10; ++j) 10271 ; 10272 } 10273 10274 // FOR SIMD DIRECTIVE 10275 #pragma omp for simd 10276 for (int i = 0; i < 10; ++i) { 10277 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10278 for (int i = 0; i < 10; ++i) 10279 ; 10280 } 10281 #pragma omp for simd 10282 for (int i = 0; i < 10; ++i) { 10283 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10284 for (int i = 0; i < 10; ++i) 10285 ; 10286 } 10287 #pragma omp for simd 10288 for (int i = 0; i < 10; ++i) { 10289 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10290 for (int i = 0; i < 10; ++i) 10291 ; 10292 } 10293 #pragma omp for simd 10294 for (int i = 0; i < 10; ++i) { 10295 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10296 for (int i = 0; i < 10; ++i) 10297 ; 10298 } 10299 #pragma omp for simd 10300 for (int i = 0; i < 10; ++i) { 10301 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10302 { 10303 bar(); 10304 } 10305 } 10306 #pragma omp for simd 10307 for (int i = 0; i < 10; ++i) { 10308 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10309 { 10310 bar(); 10311 } 10312 } 10313 #pragma omp for simd 10314 for (int i = 0; i < 10; ++i) { 10315 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10316 bar(); 10317 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10318 bar(); 10319 } 10320 #pragma omp for simd 10321 for (int i = 0; i < 10; ++i) { 10322 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10323 bar(); 10324 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10325 bar(); 10326 } 10327 #pragma omp for simd 10328 for (int i = 0; i < 10; ++i) { 10329 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10330 for (int i = 0; i < 10; ++i) 10331 ; 10332 } 10333 #pragma omp for simd 10334 for (int i = 0; i < 10; ++i) { 10335 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10336 for (int i = 0; i < 10; ++i) 10337 ; 10338 } 10339 #pragma omp for simd 10340 for (int i = 0; i < 10; ++i) { 10341 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10342 { 10343 bar(); 10344 } 10345 } 10346 #pragma omp for simd 10347 for (int i = 0; i < 10; ++i) { 10348 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10349 { 10350 bar(); 10351 } 10352 } 10353 #pragma omp for simd 10354 for (int i = 0; i < 10; ++i) { 10355 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10356 bar(); 10357 } 10358 #pragma omp for simd 10359 for (int i = 0; i < 10; ++i) { 10360 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10361 bar(); 10362 } 10363 #pragma omp for simd 10364 for (int i = 0; i < 10; ++i) { 10365 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 10366 bar(); 10367 } 10368 #pragma omp for simd 10369 for (int i = 0; i < 10; ++i) { 10370 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10371 bar(); 10372 } 10373 #pragma omp for simd 10374 for (int i = 0; i < 10; ++i) { 10375 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10376 bar(); 10377 } 10378 #pragma omp for simd 10379 for (int i = 0; i < 10; ++i) { 10380 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10381 bar(); 10382 } 10383 #pragma omp for simd 10384 for (int i = 0; i < 10; ++i) { 10385 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 10386 ++a; 10387 } 10388 #pragma omp for simd 10389 for (int i = 0; i < 10; ++i) { 10390 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10391 ++a; 10392 } 10393 #pragma omp for simd 10394 for (int i = 0; i < 10; ++i) { 10395 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10396 ++a; 10397 } 10398 #pragma omp for simd 10399 for (int i = 0; i < 10; ++i) { 10400 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10401 for (int i = 0; i < 10; ++i) 10402 ; 10403 } 10404 #pragma omp for simd 10405 for (int i = 0; i < 10; ++i) { 10406 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10407 ++a; 10408 } 10409 #pragma omp for simd 10410 for (int i = 0; i < 10; ++i) { 10411 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10412 ++a; 10413 } 10414 #pragma omp for simd 10415 for (int i = 0; i < 10; ++i) { 10416 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10417 ++a; 10418 } 10419 #pragma omp for simd 10420 for (int i = 0; i < 10; ++i) { 10421 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10422 for (int i = 0; i < 10; ++i) 10423 ++a; 10424 } 10425 #pragma omp for simd 10426 for (int i = 0; i < 10; ++i) { 10427 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10428 for (int j = 0; j < 10; ++j) 10429 ; 10430 } 10431 #pragma omp for simd 10432 for (int i = 0; i < 10; ++i) { 10433 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10434 ++a; 10435 } 10436 #pragma omp for simd 10437 for (int i = 0; i < 10; ++i) { 10438 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10439 for (int j = 0; j < 10; ++j) 10440 ; 10441 } 10442 #pragma omp for simd 10443 for (int i = 0; i < 10; ++i) { 10444 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10445 for (int j = 0; j < 10; ++j) 10446 ; 10447 } 10448 #pragma omp for simd 10449 for (int i = 0; i < 10; ++i) { 10450 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10451 for (int j = 0; j < 10; ++j) 10452 ; 10453 } 10454 #pragma omp for simd 10455 for (int i = 0; i < 10; ++i) { 10456 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10457 for (int j = 0; j < 10; ++j) 10458 ; 10459 } 10460 #pragma omp for simd 10461 for (int i = 0; i < 10; ++i) { 10462 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10463 for (int j = 0; j < 10; ++j) 10464 ; 10465 } 10466 #pragma omp for simd 10467 for (int i = 0; i < 10; ++i) { 10468 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10469 for (int j = 0; j < 10; ++j) 10470 ; 10471 } 10472 #pragma omp for simd 10473 for (int i = 0; i < 10; ++i) { 10474 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10475 for (int j = 0; j < 10; ++j) 10476 ; 10477 } 10478 #pragma omp for simd 10479 for (int i = 0; i < 10; ++i) { 10480 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10481 for (int j = 0; j < 10; ++j) 10482 ; 10483 } 10484 #pragma omp for simd 10485 for (int i = 0; i < 10; ++i) { 10486 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10487 a++; 10488 } 10489 #pragma omp for simd 10490 for (int i = 0; i < 10; ++i) { 10491 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10492 for (int j = 0; j < 10; ++j) 10493 ; 10494 } 10495 #pragma omp for simd 10496 for (int i = 0; i < 10; ++i) { 10497 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10498 for (int j = 0; j < 10; ++j) 10499 ; 10500 } 10501 #pragma omp for simd 10502 for (int i = 0; i < 10; ++i) { 10503 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10504 for (int j = 0; j < 10; ++j) 10505 ; 10506 } 10507 #pragma omp for simd 10508 for (int i = 0; i < 10; ++i) { 10509 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10510 for (int j = 0; j < 10; ++j) 10511 ; 10512 } 10513 10514 // SECTIONS DIRECTIVE 10515 #pragma omp sections 10516 { 10517 #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?}} 10518 for (int i = 0; i < 10; ++i) 10519 ; 10520 } 10521 #pragma omp sections 10522 { 10523 #pragma omp simd 10524 for (int i = 0; i < 10; ++i) 10525 ; 10526 } 10527 #pragma omp sections 10528 { 10529 #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?}} 10530 for (int i = 0; i < 10; ++i) 10531 ; 10532 } 10533 #pragma omp sections 10534 { 10535 #pragma omp parallel 10536 for (int i = 0; i < 10; ++i) 10537 ; 10538 } 10539 #pragma omp sections 10540 { 10541 #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?}} 10542 { 10543 bar(); 10544 } 10545 } 10546 #pragma omp sections 10547 { 10548 #pragma omp section 10549 { 10550 bar(); 10551 } 10552 } 10553 #pragma omp sections 10554 { 10555 #pragma omp critical 10556 bar(); 10557 #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?}} 10558 bar(); 10559 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 10560 bar(); 10561 } 10562 #pragma omp sections 10563 { 10564 #pragma omp parallel 10565 { 10566 #pragma omp single // OK 10567 { 10568 bar(); 10569 } 10570 #pragma omp for // OK 10571 for (int i = 0; i < 10; ++i) 10572 ; 10573 #pragma omp for simd // OK 10574 for (int i = 0; i < 10; ++i) 10575 ; 10576 #pragma omp sections // OK 10577 { 10578 bar(); 10579 } 10580 } 10581 } 10582 #pragma omp sections 10583 { 10584 #pragma omp parallel for 10585 for (int i = 0; i < 10; ++i) 10586 ; 10587 } 10588 #pragma omp sections 10589 { 10590 #pragma omp parallel for simd 10591 for (int i = 0; i < 10; ++i) 10592 ; 10593 } 10594 #pragma omp sections 10595 { 10596 #pragma omp parallel sections 10597 { 10598 bar(); 10599 } 10600 } 10601 #pragma omp sections 10602 { 10603 #pragma omp task 10604 { 10605 bar(); 10606 } 10607 } 10608 #pragma omp sections 10609 { 10610 #pragma omp taskyield 10611 } 10612 #pragma omp sections 10613 { 10614 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 10615 bar(); 10616 } 10617 #pragma omp sections 10618 { 10619 #pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}} 10620 bar(); 10621 } 10622 #pragma omp sections 10623 { 10624 #pragma omp taskwait 10625 } 10626 #pragma omp sections 10627 { 10628 #pragma omp flush 10629 } 10630 #pragma omp sections 10631 { 10632 #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?}} 10633 bar(); 10634 } 10635 #pragma omp sections 10636 { 10637 #pragma omp atomic 10638 ++a; 10639 } 10640 #pragma omp sections 10641 { 10642 #pragma omp target 10643 ++a; 10644 } 10645 #pragma omp sections 10646 { 10647 #pragma omp target parallel 10648 ++a; 10649 } 10650 #pragma omp sections 10651 { 10652 #pragma omp target parallel for 10653 for (int i = 0; i < 10; ++i) 10654 ; 10655 } 10656 #pragma omp sections 10657 { 10658 #pragma omp target enter data map(to: a) 10659 } 10660 #pragma omp sections 10661 { 10662 #pragma omp target exit data map(from: a) 10663 } 10664 #pragma omp sections 10665 { 10666 #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?}} 10667 ++a; 10668 } 10669 #pragma omp sections 10670 { 10671 #pragma omp taskloop 10672 for (int i = 0; i < 10; ++i) 10673 ++a; 10674 } 10675 #pragma omp sections 10676 { 10677 #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?}} 10678 for (int i = 0; i < 10; ++i) 10679 ; 10680 } 10681 #pragma omp sections 10682 { 10683 #pragma omp target update to(a) 10684 } 10685 #pragma omp sections 10686 { 10687 #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?}} 10688 for (int i = 0; i < 10; ++i) 10689 ; 10690 } 10691 #pragma omp sections 10692 { 10693 #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?}} 10694 for (int i = 0; i < 10; ++i) 10695 ; 10696 } 10697 #pragma omp sections 10698 { 10699 #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?}} 10700 for (int i = 0; i < 10; ++i) 10701 ; 10702 } 10703 #pragma omp sections 10704 { 10705 #pragma omp target simd // OK 10706 for (int i = 0; i < 10; ++i) 10707 ; 10708 } 10709 #pragma omp sections 10710 { 10711 #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?}} 10712 for (int i = 0; i < 10; ++i) 10713 ; 10714 } 10715 #pragma omp sections 10716 { 10717 #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?}} 10718 for (int i = 0; i < 10; ++i) 10719 ; 10720 } 10721 #pragma omp sections 10722 { 10723 #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?}} 10724 for (int i = 0; i < 10; ++i) 10725 ; 10726 } 10727 #pragma omp sections 10728 { 10729 #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?}} 10730 for (int i = 0; i < 10; ++i) 10731 ; 10732 } 10733 #pragma omp sections 10734 { 10735 #pragma omp target teams // OK 10736 a++; 10737 } 10738 #pragma omp sections 10739 { 10740 #pragma omp target teams distribute // OK 10741 for (int i = 0; i < 10; ++i) 10742 ; 10743 } 10744 #pragma omp sections 10745 { 10746 #pragma omp target teams distribute parallel for // OK 10747 for (int i = 0; i < 10; ++i) 10748 ; 10749 } 10750 #pragma omp sections 10751 { 10752 #pragma omp target teams distribute parallel for simd // OK 10753 for (int i = 0; i < 10; ++i) 10754 ; 10755 } 10756 #pragma omp sections 10757 { 10758 #pragma omp target teams distribute simd // OK 10759 for (int i = 0; i < 10; ++i) 10760 ; 10761 } 10762 10763 // SECTION DIRECTIVE 10764 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 10765 { 10766 bar(); 10767 } 10768 #pragma omp sections 10769 { 10770 #pragma omp section 10771 { 10772 #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?}} 10773 for (int i = 0; i < 10; ++i) 10774 ; 10775 } 10776 } 10777 #pragma omp sections 10778 { 10779 #pragma omp section 10780 { 10781 #pragma omp simd 10782 for (int i = 0; i < 10; ++i) 10783 ; 10784 } 10785 } 10786 #pragma omp sections 10787 { 10788 #pragma omp section 10789 { 10790 #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?}} 10791 for (int i = 0; i < 10; ++i) 10792 ; 10793 } 10794 } 10795 #pragma omp sections 10796 { 10797 #pragma omp section 10798 { 10799 #pragma omp parallel 10800 for (int i = 0; i < 10; ++i) 10801 ; 10802 } 10803 } 10804 #pragma omp sections 10805 { 10806 #pragma omp section 10807 { 10808 #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?}} 10809 { 10810 bar(); 10811 } 10812 } 10813 } 10814 #pragma omp sections 10815 { 10816 #pragma omp section 10817 { 10818 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 10819 { 10820 bar(); 10821 } 10822 } 10823 } 10824 #pragma omp sections 10825 { 10826 #pragma omp section 10827 { 10828 #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?}} 10829 bar(); 10830 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 10831 bar(); 10832 #pragma omp critical 10833 bar(); 10834 } 10835 } 10836 #pragma omp sections 10837 { 10838 #pragma omp section 10839 { 10840 #pragma omp parallel 10841 { 10842 #pragma omp single // OK 10843 { 10844 bar(); 10845 } 10846 #pragma omp for // OK 10847 for (int i = 0; i < 10; ++i) 10848 ; 10849 #pragma omp for simd // OK 10850 for (int i = 0; i < 10; ++i) 10851 ; 10852 #pragma omp sections // OK 10853 { 10854 bar(); 10855 } 10856 } 10857 } 10858 } 10859 #pragma omp sections 10860 { 10861 #pragma omp section 10862 { 10863 #pragma omp parallel for 10864 for (int i = 0; i < 10; ++i) 10865 ; 10866 } 10867 } 10868 #pragma omp sections 10869 { 10870 #pragma omp section 10871 { 10872 #pragma omp parallel for simd 10873 for (int i = 0; i < 10; ++i) 10874 ; 10875 } 10876 } 10877 #pragma omp sections 10878 { 10879 #pragma omp section 10880 { 10881 #pragma omp parallel sections 10882 { 10883 bar(); 10884 } 10885 } 10886 } 10887 #pragma omp sections 10888 { 10889 #pragma omp section 10890 { 10891 #pragma omp task 10892 { 10893 bar(); 10894 } 10895 } 10896 } 10897 #pragma omp sections 10898 { 10899 #pragma omp section 10900 { 10901 #pragma omp taskyield 10902 bar(); 10903 } 10904 } 10905 #pragma omp sections 10906 { 10907 #pragma omp section 10908 { 10909 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 10910 bar(); 10911 } 10912 } 10913 #pragma omp sections 10914 { 10915 #pragma omp section 10916 { 10917 #pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}} 10918 bar(); 10919 } 10920 } 10921 #pragma omp sections 10922 { 10923 #pragma omp section 10924 { 10925 #pragma omp taskwait 10926 bar(); 10927 } 10928 } 10929 #pragma omp sections 10930 { 10931 #pragma omp section 10932 { 10933 #pragma omp flush 10934 bar(); 10935 } 10936 } 10937 #pragma omp sections 10938 { 10939 #pragma omp section 10940 { 10941 #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?}} 10942 bar(); 10943 } 10944 } 10945 #pragma omp sections 10946 { 10947 #pragma omp section 10948 { 10949 #pragma omp atomic 10950 ++a; 10951 } 10952 } 10953 #pragma omp sections 10954 { 10955 #pragma omp section 10956 { 10957 #pragma omp target 10958 ++a; 10959 } 10960 } 10961 #pragma omp sections 10962 { 10963 #pragma omp section 10964 { 10965 #pragma omp target parallel 10966 ++a; 10967 } 10968 } 10969 #pragma omp sections 10970 { 10971 #pragma omp section 10972 { 10973 #pragma omp target parallel for 10974 for (int i = 0; i < 10; ++i) 10975 ; 10976 } 10977 } 10978 #pragma omp sections 10979 { 10980 #pragma omp section 10981 { 10982 #pragma omp target enter data map(to: a) 10983 ++a; 10984 } 10985 } 10986 #pragma omp sections 10987 { 10988 #pragma omp section 10989 { 10990 #pragma omp target exit data map(from: a) 10991 ++a; 10992 } 10993 } 10994 #pragma omp sections 10995 { 10996 #pragma omp section 10997 { 10998 #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?}} 10999 ++a; 11000 } 11001 } 11002 #pragma omp sections 11003 { 11004 #pragma omp section 11005 { 11006 #pragma omp taskloop 11007 for (int i = 0; i < 10; ++i) 11008 ++a; 11009 } 11010 } 11011 #pragma omp sections 11012 { 11013 #pragma omp section 11014 #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?}} 11015 for (int i = 0; i < 10; ++i) 11016 ; 11017 } 11018 #pragma omp sections 11019 { 11020 #pragma omp section 11021 { 11022 #pragma omp target update to(a) 11023 a++; 11024 } 11025 } 11026 #pragma omp sections 11027 { 11028 #pragma omp section 11029 #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?}} 11030 for (int i = 0; i < 10; ++i) 11031 ; 11032 } 11033 #pragma omp sections 11034 { 11035 #pragma omp section 11036 #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?}} 11037 for (int i = 0; i < 10; ++i) 11038 ; 11039 } 11040 #pragma omp sections 11041 { 11042 #pragma omp section 11043 #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?}} 11044 for (int i = 0; i < 10; ++i) 11045 ; 11046 } 11047 #pragma omp sections 11048 { 11049 #pragma omp section 11050 #pragma omp target simd // OK 11051 for (int i = 0; i < 10; ++i) 11052 ; 11053 } 11054 #pragma omp sections 11055 { 11056 #pragma omp section 11057 #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?}} 11058 for (int i = 0; i < 10; ++i) 11059 ; 11060 } 11061 #pragma omp sections 11062 { 11063 #pragma omp section 11064 #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?}} 11065 for (int i = 0; i < 10; ++i) 11066 ; 11067 } 11068 #pragma omp sections 11069 { 11070 #pragma omp section 11071 #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?}} 11072 for (int i = 0; i < 10; ++i) 11073 ; 11074 } 11075 #pragma omp sections 11076 { 11077 #pragma omp section 11078 #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?}} 11079 for (int i = 0; i < 10; ++i) 11080 ; 11081 } 11082 #pragma omp sections 11083 { 11084 #pragma omp section 11085 #pragma omp target teams // OK 11086 a++; 11087 } 11088 #pragma omp sections 11089 { 11090 #pragma omp section 11091 #pragma omp target teams distribute // OK 11092 for (int i = 0; i < 10; ++i) 11093 ; 11094 } 11095 #pragma omp sections 11096 { 11097 #pragma omp section 11098 #pragma omp target teams distribute parallel for // OK 11099 for (int i = 0; i < 10; ++i) 11100 ; 11101 } 11102 #pragma omp sections 11103 { 11104 #pragma omp section 11105 #pragma omp target teams distribute parallel for simd // OK 11106 for (int i = 0; i < 10; ++i) 11107 ; 11108 } 11109 #pragma omp sections 11110 { 11111 #pragma omp section 11112 #pragma omp target teams distribute simd // OK 11113 for (int i = 0; i < 10; ++i) 11114 ; 11115 } 11116 11117 // SINGLE DIRECTIVE 11118 #pragma omp single 11119 { 11120 #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?}} 11121 for (int i = 0; i < 10; ++i) 11122 ; 11123 } 11124 #pragma omp single 11125 { 11126 #pragma omp simd 11127 for (int i = 0; i < 10; ++i) 11128 ; 11129 } 11130 #pragma omp single 11131 { 11132 #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?}} 11133 for (int i = 0; i < 10; ++i) 11134 ; 11135 } 11136 #pragma omp single 11137 { 11138 #pragma omp parallel 11139 for (int i = 0; i < 10; ++i) 11140 ; 11141 } 11142 #pragma omp single 11143 { 11144 #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?}} 11145 { 11146 bar(); 11147 } 11148 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 11149 bar(); 11150 #pragma omp critical 11151 bar(); 11152 } 11153 #pragma omp single 11154 { 11155 #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?}} 11156 { 11157 bar(); 11158 } 11159 } 11160 #pragma omp single 11161 { 11162 #pragma omp parallel 11163 { 11164 #pragma omp single // OK 11165 { 11166 bar(); 11167 } 11168 #pragma omp for // OK 11169 for (int i = 0; i < 10; ++i) 11170 ; 11171 #pragma omp for simd // OK 11172 for (int i = 0; i < 10; ++i) 11173 ; 11174 #pragma omp sections // OK 11175 { 11176 bar(); 11177 } 11178 } 11179 } 11180 #pragma omp single 11181 { 11182 #pragma omp parallel for 11183 for (int i = 0; i < 10; ++i) 11184 ; 11185 } 11186 #pragma omp single 11187 { 11188 #pragma omp parallel for simd 11189 for (int i = 0; i < 10; ++i) 11190 ; 11191 } 11192 #pragma omp single 11193 { 11194 #pragma omp parallel sections 11195 { 11196 bar(); 11197 } 11198 } 11199 #pragma omp single 11200 { 11201 #pragma omp task 11202 { 11203 bar(); 11204 } 11205 } 11206 #pragma omp single 11207 { 11208 #pragma omp taskyield 11209 bar(); 11210 } 11211 #pragma omp single 11212 { 11213 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 11214 bar(); 11215 } 11216 #pragma omp single 11217 { 11218 #pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}} 11219 bar(); 11220 } 11221 #pragma omp single 11222 { 11223 #pragma omp taskwait 11224 bar(); 11225 } 11226 #pragma omp single 11227 { 11228 #pragma omp flush 11229 bar(); 11230 } 11231 #pragma omp single 11232 { 11233 #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?}} 11234 bar(); 11235 } 11236 #pragma omp single 11237 { 11238 #pragma omp atomic 11239 ++a; 11240 } 11241 #pragma omp single 11242 { 11243 #pragma omp target 11244 ++a; 11245 } 11246 #pragma omp single 11247 { 11248 #pragma omp target parallel 11249 ++a; 11250 } 11251 #pragma omp single 11252 { 11253 #pragma omp target parallel for 11254 for (int i = 0; i < 10; ++i) 11255 ; 11256 } 11257 #pragma omp single 11258 { 11259 #pragma omp target enter data map(to: a) 11260 ++a; 11261 } 11262 #pragma omp single 11263 { 11264 #pragma omp target exit data map(from: a) 11265 ++a; 11266 } 11267 #pragma omp single 11268 { 11269 #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?}} 11270 ++a; 11271 } 11272 #pragma omp single 11273 { 11274 #pragma omp taskloop 11275 for (int i = 0; i < 10; ++i) 11276 ++a; 11277 } 11278 #pragma omp single 11279 { 11280 #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?}} 11281 for (int i = 0; i < 10; ++i) 11282 ; 11283 } 11284 #pragma omp single 11285 { 11286 #pragma omp target update to(a) 11287 a++; 11288 } 11289 #pragma omp single 11290 { 11291 #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?}} 11292 for (int i = 0; i < 10; ++i) 11293 ; 11294 } 11295 #pragma omp single 11296 { 11297 #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?}} 11298 for (int i = 0; i < 10; ++i) 11299 ; 11300 } 11301 #pragma omp single 11302 { 11303 #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?}} 11304 for (int i = 0; i < 10; ++i) 11305 ; 11306 } 11307 #pragma omp single 11308 { 11309 #pragma omp target simd // OK 11310 for (int i = 0; i < 10; ++i) 11311 ; 11312 } 11313 #pragma omp single 11314 { 11315 #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?}} 11316 for (int i = 0; i < 10; ++i) 11317 ; 11318 } 11319 #pragma omp single 11320 { 11321 #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?}} 11322 for (int i = 0; i < 10; ++i) 11323 ; 11324 } 11325 #pragma omp single 11326 { 11327 #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?}} 11328 for (int i = 0; i < 10; ++i) 11329 ; 11330 } 11331 #pragma omp single 11332 { 11333 #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?}} 11334 for (int i = 0; i < 10; ++i) 11335 ; 11336 } 11337 #pragma omp single 11338 { 11339 #pragma omp target teams // oK 11340 a++; 11341 } 11342 #pragma omp single 11343 { 11344 #pragma omp target teams distribute // OK 11345 for (int i = 0; i < 10; ++i) 11346 ; 11347 } 11348 #pragma omp single 11349 { 11350 #pragma omp target teams distribute parallel for // OK 11351 for (int i = 0; i < 10; ++i) 11352 ; 11353 } 11354 #pragma omp single 11355 { 11356 #pragma omp target teams distribute parallel for simd // OK 11357 for (int i = 0; i < 10; ++i) 11358 ; 11359 } 11360 #pragma omp single 11361 { 11362 #pragma omp target teams distribute simd // OK 11363 for (int i = 0; i < 10; ++i) 11364 ; 11365 } 11366 11367 // MASTER DIRECTIVE 11368 #pragma omp master 11369 { 11370 #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?}} 11371 for (int i = 0; i < 10; ++i) 11372 ; 11373 } 11374 #pragma omp master 11375 { 11376 #pragma omp simd 11377 for (int i = 0; i < 10; ++i) 11378 ; 11379 } 11380 #pragma omp master 11381 { 11382 #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?}} 11383 for (int i = 0; i < 10; ++i) 11384 ; 11385 } 11386 #pragma omp master 11387 { 11388 #pragma omp parallel 11389 for (int i = 0; i < 10; ++i) 11390 ; 11391 } 11392 #pragma omp parallel master 11393 { 11394 for (int i = 0; i < 10; ++i) 11395 ; 11396 } 11397 #pragma omp master 11398 { 11399 #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?}} 11400 { 11401 bar(); 11402 } 11403 } 11404 #pragma omp master 11405 { 11406 #pragma omp master // OK, though second 'master' is redundant 11407 { 11408 bar(); 11409 } 11410 } 11411 #pragma omp master 11412 { 11413 #pragma omp critical 11414 { 11415 bar(); 11416 } 11417 } 11418 #pragma omp master 11419 { 11420 #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?}} 11421 { 11422 bar(); 11423 } 11424 } 11425 #pragma omp master 11426 { 11427 #pragma omp parallel 11428 { 11429 #pragma omp master // OK 11430 { 11431 bar(); 11432 } 11433 #pragma omp for // OK 11434 for (int i = 0; i < 10; ++i) 11435 ; 11436 #pragma omp for simd // OK 11437 for (int i = 0; i < 10; ++i) 11438 ; 11439 #pragma omp sections // OK 11440 { 11441 bar(); 11442 } 11443 } 11444 } 11445 #pragma omp master 11446 { 11447 #pragma omp parallel master 11448 { 11449 bar(); 11450 } 11451 } 11452 #pragma omp master 11453 { 11454 #pragma omp parallel for 11455 for (int i = 0; i < 10; ++i) 11456 ; 11457 } 11458 #pragma omp master 11459 { 11460 #pragma omp parallel for simd 11461 for (int i = 0; i < 10; ++i) 11462 ; 11463 } 11464 #pragma omp master 11465 { 11466 #pragma omp parallel sections 11467 { 11468 bar(); 11469 } 11470 } 11471 #pragma omp master 11472 { 11473 #pragma omp task 11474 { 11475 bar(); 11476 } 11477 } 11478 #pragma omp master 11479 { 11480 #pragma omp taskyield 11481 bar(); 11482 } 11483 #pragma omp master 11484 { 11485 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 11486 bar(); 11487 } 11488 #pragma omp master 11489 { 11490 #pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}} 11491 bar(); 11492 } 11493 #pragma omp master 11494 { 11495 #pragma omp taskwait 11496 bar(); 11497 } 11498 #pragma omp master 11499 { 11500 #pragma omp flush 11501 bar(); 11502 } 11503 #pragma omp master 11504 { 11505 #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?}} 11506 bar(); 11507 } 11508 #pragma omp master 11509 { 11510 #pragma omp atomic 11511 ++a; 11512 } 11513 #pragma omp master 11514 { 11515 #pragma omp target 11516 ++a; 11517 } 11518 #pragma omp master 11519 { 11520 #pragma omp target parallel 11521 ++a; 11522 } 11523 #pragma omp master 11524 { 11525 #pragma omp target parallel for 11526 for (int i = 0; i < 10; ++i) 11527 ; 11528 } 11529 #pragma omp master 11530 { 11531 #pragma omp target enter data map(to: a) 11532 ++a; 11533 } 11534 #pragma omp master 11535 { 11536 #pragma omp target exit data map(from: a) 11537 ++a; 11538 } 11539 #pragma omp master 11540 { 11541 #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?}} 11542 ++a; 11543 } 11544 #pragma omp master 11545 { 11546 #pragma omp taskloop 11547 for (int i = 0; i < 10; ++i) 11548 ++a; 11549 } 11550 #pragma omp master 11551 { 11552 #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?}} 11553 for (int i = 0; i < 10; ++i) 11554 ; 11555 } 11556 #pragma omp master 11557 { 11558 #pragma omp target update to(a) 11559 ++a; 11560 } 11561 #pragma omp master 11562 { 11563 #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?}} 11564 for (int i = 0; i < 10; ++i) 11565 ; 11566 } 11567 #pragma omp master 11568 { 11569 #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?}} 11570 for (int i = 0; i < 10; ++i) 11571 ; 11572 } 11573 #pragma omp master 11574 { 11575 #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?}} 11576 for (int i = 0; i < 10; ++i) 11577 ; 11578 } 11579 #pragma omp master 11580 { 11581 #pragma omp target simd // OK 11582 for (int i = 0; i < 10; ++i) 11583 ; 11584 } 11585 #pragma omp master 11586 { 11587 #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?}} 11588 for (int i = 0; i < 10; ++i) 11589 ; 11590 } 11591 #pragma omp master 11592 { 11593 #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?}} 11594 for (int i = 0; i < 10; ++i) 11595 ; 11596 } 11597 #pragma omp master 11598 { 11599 #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?}} 11600 for (int i = 0; i < 10; ++i) 11601 ; 11602 } 11603 #pragma omp master 11604 { 11605 #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?}} 11606 for (int i = 0; i < 10; ++i) 11607 ; 11608 } 11609 #pragma omp master 11610 { 11611 #pragma omp target teams // OK 11612 a++; 11613 } 11614 #pragma omp master 11615 { 11616 #pragma omp target teams distribute // OK 11617 for (int i = 0; i < 10; ++i) 11618 ; 11619 } 11620 #pragma omp master 11621 { 11622 #pragma omp target teams distribute parallel for // OK 11623 for (int i = 0; i < 10; ++i) 11624 ; 11625 } 11626 #pragma omp master 11627 { 11628 #pragma omp target teams distribute parallel for simd // OK 11629 for (int i = 0; i < 10; ++i) 11630 ; 11631 } 11632 #pragma omp master 11633 { 11634 #pragma omp target teams distribute simd // OK 11635 for (int i = 0; i < 10; ++i) 11636 ; 11637 } 11638 11639 // CRITICAL DIRECTIVE 11640 #pragma omp critical 11641 { 11642 #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?}} 11643 for (int i = 0; i < 10; ++i) 11644 ; 11645 } 11646 #pragma omp critical 11647 { 11648 #pragma omp simd 11649 for (int i = 0; i < 10; ++i) 11650 ; 11651 } 11652 #pragma omp critical 11653 { 11654 #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?}} 11655 for (int i = 0; i < 10; ++i) 11656 ; 11657 } 11658 #pragma omp critical 11659 { 11660 #pragma omp parallel 11661 for (int i = 0; i < 10; ++i) 11662 ; 11663 } 11664 #pragma omp critical 11665 { 11666 #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?}} 11667 { 11668 bar(); 11669 } 11670 } 11671 #pragma omp critical 11672 { 11673 #pragma omp master // OK, though second 'master' is redundant 11674 { 11675 bar(); 11676 } 11677 } 11678 #pragma omp critical 11679 { 11680 #pragma omp critical 11681 { 11682 bar(); 11683 } 11684 } 11685 #pragma omp critical 11686 { 11687 #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?}} 11688 { 11689 bar(); 11690 } 11691 } 11692 #pragma omp critical 11693 { 11694 #pragma omp parallel 11695 { 11696 #pragma omp master // OK 11697 { 11698 bar(); 11699 } 11700 #pragma omp for // OK 11701 for (int i = 0; i < 10; ++i) 11702 ; 11703 #pragma omp for simd // OK 11704 for (int i = 0; i < 10; ++i) 11705 ; 11706 #pragma omp sections // OK 11707 { 11708 bar(); 11709 } 11710 } 11711 } 11712 #pragma omp critical 11713 { 11714 #pragma omp parallel for 11715 for (int i = 0; i < 10; ++i) 11716 ; 11717 } 11718 #pragma omp critical 11719 { 11720 #pragma omp parallel for simd 11721 for (int i = 0; i < 10; ++i) 11722 ; 11723 } 11724 #pragma omp critical 11725 { 11726 #pragma omp parallel sections 11727 { 11728 bar(); 11729 } 11730 } 11731 #pragma omp critical 11732 { 11733 #pragma omp task 11734 { 11735 bar(); 11736 } 11737 } 11738 #pragma omp critical 11739 { 11740 #pragma omp taskyield 11741 bar(); 11742 } 11743 #pragma omp critical 11744 { 11745 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 11746 bar(); 11747 } 11748 #pragma omp critical 11749 { 11750 #pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}} 11751 bar(); 11752 } 11753 #pragma omp critical 11754 { 11755 #pragma omp taskwait 11756 bar(); 11757 } 11758 #pragma omp critical(Belka) 11759 { 11760 #pragma omp critical(Strelka) 11761 bar(); 11762 } 11763 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 11764 { 11765 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 11766 { 11767 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 11768 { 11769 #pragma omp parallel 11770 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 11771 { 11772 bar(); 11773 } 11774 } 11775 } 11776 } 11777 #pragma omp critical 11778 { 11779 #pragma omp flush 11780 bar(); 11781 } 11782 #pragma omp critical 11783 { 11784 #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?}} 11785 bar(); 11786 } 11787 #pragma omp critical 11788 { 11789 #pragma omp atomic 11790 ++a; 11791 } 11792 #pragma omp critical 11793 { 11794 #pragma omp target 11795 ++a; 11796 } 11797 #pragma omp critical 11798 { 11799 #pragma omp target parallel 11800 ++a; 11801 } 11802 #pragma omp critical 11803 { 11804 #pragma omp target parallel for 11805 for (int i = 0; i < 10; ++i) 11806 ; 11807 } 11808 #pragma omp critical 11809 { 11810 #pragma omp target enter data map(to: a) 11811 ++a; 11812 } 11813 #pragma omp critical 11814 { 11815 #pragma omp target exit data map(from: a) 11816 ++a; 11817 } 11818 #pragma omp critical 11819 { 11820 #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?}} 11821 ++a; 11822 } 11823 #pragma omp critical 11824 { 11825 #pragma omp taskloop 11826 for (int i = 0; i < 10; ++i) 11827 ++a; 11828 } 11829 #pragma omp critical 11830 { 11831 #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?}} 11832 for (int i = 0; i < 10; ++i) 11833 ; 11834 } 11835 #pragma omp critical 11836 { 11837 #pragma omp target update to(a) 11838 a++; 11839 } 11840 #pragma omp critical 11841 { 11842 #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?}} 11843 for (int i = 0; i < 10; ++i) 11844 ; 11845 } 11846 #pragma omp critical 11847 { 11848 #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?}} 11849 for (int i = 0; i < 10; ++i) 11850 ; 11851 } 11852 #pragma omp critical 11853 { 11854 #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?}} 11855 for (int i = 0; i < 10; ++i) 11856 ; 11857 } 11858 #pragma omp critical 11859 { 11860 #pragma omp target simd // OK 11861 for (int i = 0; i < 10; ++i) 11862 ; 11863 } 11864 #pragma omp critical 11865 { 11866 #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?}} 11867 for (int i = 0; i < 10; ++i) 11868 ; 11869 } 11870 #pragma omp critical 11871 { 11872 #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?}} 11873 for (int i = 0; i < 10; ++i) 11874 ; 11875 } 11876 #pragma omp critical 11877 { 11878 #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?}} 11879 for (int i = 0; i < 10; ++i) 11880 ; 11881 } 11882 #pragma omp critical 11883 { 11884 #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?}} 11885 for (int i = 0; i < 10; ++i) 11886 ; 11887 } 11888 #pragma omp critical 11889 { 11890 #pragma omp target teams // OK 11891 a++; 11892 } 11893 #pragma omp critical 11894 { 11895 #pragma omp target teams distribute // OK 11896 for (int i = 0; i < 10; ++i) 11897 ; 11898 } 11899 #pragma omp critical 11900 { 11901 #pragma omp target teams distribute parallel for // OK 11902 for (int i = 0; i < 10; ++i) 11903 ; 11904 } 11905 #pragma omp critical 11906 { 11907 #pragma omp target teams distribute parallel for simd // OK 11908 for (int i = 0; i < 10; ++i) 11909 ; 11910 } 11911 #pragma omp critical 11912 { 11913 #pragma omp target teams distribute simd // OK 11914 for (int i = 0; i < 10; ++i) 11915 ; 11916 } 11917 11918 // PARALLEL FOR DIRECTIVE 11919 #pragma omp parallel for 11920 for (int i = 0; i < 10; ++i) { 11921 #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?}} 11922 for (int i = 0; i < 10; ++i) 11923 ; 11924 } 11925 #pragma omp parallel for 11926 for (int i = 0; i < 10; ++i) { 11927 #pragma omp simd 11928 for (int i = 0; i < 10; ++i) 11929 ; 11930 } 11931 #pragma omp parallel for 11932 for (int i = 0; i < 10; ++i) { 11933 #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?}} 11934 for (int i = 0; i < 10; ++i) 11935 ; 11936 } 11937 11938 #pragma omp parallel for 11939 for (int i = 0; i < 10; ++i) { 11940 #pragma omp parallel 11941 for (int i = 0; i < 10; ++i) 11942 ; 11943 } 11944 #pragma omp parallel for 11945 for (int i = 0; i < 10; ++i) { 11946 #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?}} 11947 { 11948 bar(); 11949 } 11950 } 11951 #pragma omp parallel for 11952 for (int i = 0; i < 10; ++i) { 11953 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 11954 { 11955 bar(); 11956 } 11957 } 11958 #pragma omp parallel for 11959 for (int i = 0; i < 10; ++i) { 11960 #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?}} 11961 { 11962 bar(); 11963 } 11964 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11965 { 11966 bar(); 11967 } 11968 #pragma omp critical 11969 { 11970 bar(); 11971 } 11972 } 11973 #pragma omp parallel for 11974 for (int i = 0; i < 10; ++i) { 11975 #pragma omp parallel 11976 { 11977 #pragma omp single // OK 11978 { 11979 bar(); 11980 } 11981 #pragma omp master // OK 11982 { 11983 bar(); 11984 } 11985 #pragma omp critical // OK 11986 { 11987 bar(); 11988 } 11989 #pragma omp for // OK 11990 for (int i = 0; i < 10; ++i) 11991 ; 11992 #pragma omp for simd // OK 11993 for (int i = 0; i < 10; ++i) 11994 ; 11995 #pragma omp sections // OK 11996 { 11997 bar(); 11998 } 11999 } 12000 } 12001 #pragma omp parallel for 12002 for (int i = 0; i < 10; ++i) { 12003 #pragma omp parallel for 12004 for (int i = 0; i < 10; ++i) 12005 ; 12006 } 12007 #pragma omp parallel for 12008 for (int i = 0; i < 10; ++i) { 12009 #pragma omp parallel for simd 12010 for (int i = 0; i < 10; ++i) 12011 ; 12012 } 12013 #pragma omp parallel for 12014 for (int i = 0; i < 10; ++i) { 12015 #pragma omp parallel sections 12016 { 12017 bar(); 12018 } 12019 } 12020 #pragma omp parallel for 12021 for (int i = 0; i < 10; ++i) { 12022 #pragma omp task 12023 { 12024 bar(); 12025 } 12026 } 12027 #pragma omp parallel for 12028 for (int i = 0; i < 10; ++i) { 12029 #pragma omp taskyield 12030 bar(); 12031 } 12032 #pragma omp parallel for 12033 for (int i = 0; i < 10; ++i) { 12034 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 12035 bar(); 12036 } 12037 #pragma omp parallel for 12038 for (int i = 0; i < 10; ++i) { 12039 #pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 12040 bar(); 12041 } 12042 #pragma omp parallel for 12043 for (int i = 0; i < 10; ++i) { 12044 #pragma omp taskwait 12045 bar(); 12046 } 12047 #pragma omp parallel for 12048 for (int i = 0; i < 10; ++i) { 12049 #pragma omp flush 12050 bar(); 12051 } 12052 #pragma omp parallel for 12053 for (int i = 0; i < 10; ++i) { 12054 #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?}} 12055 bar(); 12056 } 12057 #pragma omp parallel for ordered 12058 for (int i = 0; i < 10; ++i) { 12059 #pragma omp ordered // OK 12060 bar(); 12061 } 12062 #pragma omp parallel for 12063 for (int i = 0; i < 10; ++i) { 12064 #pragma omp atomic 12065 ++a; 12066 } 12067 #pragma omp parallel for 12068 for (int i = 0; i < 10; ++i) { 12069 #pragma omp target 12070 ++a; 12071 } 12072 #pragma omp parallel for 12073 for (int i = 0; i < 10; ++i) { 12074 #pragma omp target parallel 12075 ++a; 12076 } 12077 #pragma omp parallel for 12078 for (int i = 0; i < 10; ++i) { 12079 #pragma omp target parallel for 12080 for (int i = 0; i < 10; ++i) 12081 ; 12082 } 12083 #pragma omp parallel for 12084 for (int i = 0; i < 10; ++i) { 12085 #pragma omp target enter data map(to: a) 12086 ++a; 12087 } 12088 #pragma omp parallel for 12089 for (int i = 0; i < 10; ++i) { 12090 #pragma omp target exit data map(from: a) 12091 ++a; 12092 } 12093 #pragma omp parallel for 12094 for (int i = 0; i < 10; ++i) { 12095 #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?}} 12096 ++a; 12097 } 12098 #pragma omp parallel for 12099 for (int i = 0; i < 10; ++i) { 12100 #pragma omp taskloop 12101 for (int i = 0; i < 10; ++i) 12102 ++a; 12103 } 12104 #pragma omp parallel for 12105 for (int i = 0; i < 10; ++i) { 12106 #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?}} 12107 for (int j = 0; j < 10; ++j) 12108 ; 12109 } 12110 #pragma omp parallel for 12111 for (int i = 0; i < 10; ++i) { 12112 #pragma omp target update to(a) 12113 a++; 12114 } 12115 #pragma omp parallel for 12116 for (int i = 0; i < 10; ++i) { 12117 #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?}} 12118 for (int j = 0; j < 10; ++j) 12119 ; 12120 } 12121 #pragma omp parallel for 12122 for (int i = 0; i < 10; ++i) { 12123 #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?}} 12124 for (int j = 0; j < 10; ++j) 12125 ; 12126 } 12127 #pragma omp parallel for 12128 for (int i = 0; i < 10; ++i) { 12129 #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?}} 12130 for (int j = 0; j < 10; ++j) 12131 ; 12132 } 12133 #pragma omp parallel for 12134 for (int i = 0; i < 10; ++i) { 12135 #pragma omp target simd // OK 12136 for (int j = 0; j < 10; ++j) 12137 ; 12138 } 12139 #pragma omp parallel for 12140 for (int i = 0; i < 10; ++i) { 12141 #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?}} 12142 for (int j = 0; j < 10; ++j) 12143 ; 12144 } 12145 #pragma omp parallel for 12146 for (int i = 0; i < 10; ++i) { 12147 #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?}} 12148 for (int j = 0; j < 10; ++j) 12149 ; 12150 } 12151 #pragma omp parallel for 12152 for (int i = 0; i < 10; ++i) { 12153 #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?}} 12154 for (int j = 0; j < 10; ++j) 12155 ; 12156 } 12157 #pragma omp parallel for 12158 for (int i = 0; i < 10; ++i) { 12159 #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?}} 12160 for (int j = 0; j < 10; ++j) 12161 ; 12162 } 12163 #pragma omp parallel for 12164 for (int i = 0; i < 10; ++i) { 12165 #pragma omp target teams // OK 12166 a++; 12167 } 12168 #pragma omp parallel for 12169 for (int i = 0; i < 10; ++i) { 12170 #pragma omp target teams distribute // OK 12171 for (int j = 0; j < 10; ++j) 12172 ; 12173 } 12174 #pragma omp parallel for 12175 for (int i = 0; i < 10; ++i) { 12176 #pragma omp target teams distribute parallel for // OK 12177 for (int j = 0; j < 10; ++j) 12178 ; 12179 } 12180 #pragma omp parallel for 12181 for (int i = 0; i < 10; ++i) { 12182 #pragma omp target teams distribute parallel for simd // OK 12183 for (int j = 0; j < 10; ++j) 12184 ; 12185 } 12186 #pragma omp parallel for 12187 for (int i = 0; i < 10; ++i) { 12188 #pragma omp target teams distribute simd // OK 12189 for (int j = 0; j < 10; ++j) 12190 ; 12191 } 12192 12193 // PARALLEL FOR SIMD DIRECTIVE 12194 #pragma omp parallel for simd 12195 for (int i = 0; i < 10; ++i) { 12196 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12197 for (int i = 0; i < 10; ++i) 12198 ; 12199 } 12200 #pragma omp parallel for simd 12201 for (int i = 0; i < 10; ++i) { 12202 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12203 for (int i = 0; i < 10; ++i) 12204 ; 12205 } 12206 #pragma omp parallel for simd 12207 for (int i = 0; i < 10; ++i) { 12208 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12209 for (int i = 0; i < 10; ++i) 12210 ; 12211 } 12212 #pragma omp parallel for simd 12213 for (int i = 0; i < 10; ++i) { 12214 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12215 for (int i = 0; i < 10; ++i) 12216 ; 12217 } 12218 #pragma omp parallel for simd 12219 for (int i = 0; i < 10; ++i) { 12220 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12221 { 12222 bar(); 12223 } 12224 } 12225 #pragma omp parallel for simd 12226 for (int i = 0; i < 10; ++i) { 12227 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12228 { 12229 bar(); 12230 } 12231 } 12232 #pragma omp parallel for simd 12233 for (int i = 0; i < 10; ++i) { 12234 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12235 { 12236 bar(); 12237 } 12238 } 12239 12240 #pragma omp parallel for simd 12241 for (int i = 0; i < 10; ++i) { 12242 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12243 { 12244 bar(); 12245 } 12246 } 12247 12248 #pragma omp parallel for simd 12249 for (int i = 0; i < 10; ++i) { 12250 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12251 { 12252 bar(); 12253 } 12254 } 12255 12256 #pragma omp parallel for simd 12257 for (int i = 0; i < 10; ++i) { 12258 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12259 { 12260 #pragma omp single 12261 { 12262 bar(); 12263 } 12264 #pragma omp for 12265 for (int i = 0; i < 10; ++i) 12266 ; 12267 #pragma omp for simd 12268 for (int i = 0; i < 10; ++i) 12269 ; 12270 #pragma omp sections 12271 { 12272 bar(); 12273 } 12274 } 12275 } 12276 #pragma omp parallel for simd 12277 for (int i = 0; i < 10; ++i) { 12278 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12279 for (int i = 0; i < 10; ++i) 12280 ; 12281 } 12282 #pragma omp parallel for simd 12283 for (int i = 0; i < 10; ++i) { 12284 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 12285 for (int i = 0; i < 10; ++i) 12286 ; 12287 } 12288 #pragma omp parallel for simd 12289 for (int i = 0; i < 10; ++i) { 12290 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12291 { 12292 bar(); 12293 } 12294 } 12295 #pragma omp parallel for simd 12296 for (int i = 0; i < 10; ++i) { 12297 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12298 { 12299 bar(); 12300 } 12301 } 12302 #pragma omp parallel for simd 12303 for (int i = 0; i < 10; ++i) { 12304 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12305 bar(); 12306 } 12307 #pragma omp parallel for simd 12308 for (int i = 0; i < 10; ++i) { 12309 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12310 bar(); 12311 } 12312 #pragma omp parallel for simd 12313 for (int i = 0; i < 10; ++i) { 12314 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} 12315 bar(); 12316 } 12317 #pragma omp parallel for simd 12318 for (int i = 0; i < 10; ++i) { 12319 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12320 bar(); 12321 } 12322 #pragma omp parallel for simd 12323 for (int i = 0; i < 10; ++i) { 12324 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12325 bar(); 12326 } 12327 #pragma omp parallel for simd 12328 for (int i = 0; i < 10; ++i) { 12329 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12330 bar(); 12331 } 12332 #pragma omp parallel for simd 12333 for (int i = 0; i < 10; ++i) { 12334 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12335 bar(); 12336 } 12337 #pragma omp parallel for simd 12338 for (int i = 0; i < 10; ++i) { 12339 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 12340 ++a; 12341 } 12342 #pragma omp parallel for simd 12343 for (int i = 0; i < 10; ++i) { 12344 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12345 ++a; 12346 } 12347 #pragma omp parallel for simd 12348 for (int i = 0; i < 10; ++i) { 12349 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12350 ++a; 12351 } 12352 #pragma omp parallel for simd 12353 for (int i = 0; i < 10; ++i) { 12354 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12355 for (int i = 0; i < 10; ++i) 12356 ; 12357 } 12358 #pragma omp parallel for simd 12359 for (int i = 0; i < 10; ++i) { 12360 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12361 ++a; 12362 } 12363 #pragma omp parallel for simd 12364 for (int i = 0; i < 10; ++i) { 12365 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12366 ++a; 12367 } 12368 #pragma omp parallel for simd 12369 for (int i = 0; i < 10; ++i) { 12370 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12371 ++a; 12372 } 12373 #pragma omp parallel for simd 12374 for (int i = 0; i < 10; ++i) { 12375 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12376 for (int i = 0; i < 10; ++i) 12377 ++a; 12378 } 12379 #pragma omp parallel for simd 12380 for (int i = 0; i < 10; ++i) { 12381 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12382 for (int j = 0; j < 10; ++j) 12383 ; 12384 } 12385 #pragma omp parallel for simd 12386 for (int i = 0; i < 10; ++i) { 12387 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12388 a++; 12389 } 12390 #pragma omp parallel for simd 12391 for (int i = 0; i < 10; ++i) { 12392 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12393 for (int j = 0; j < 10; ++j) 12394 ; 12395 } 12396 #pragma omp parallel for simd 12397 for (int i = 0; i < 10; ++i) { 12398 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12399 for (int j = 0; j < 10; ++j) 12400 ; 12401 } 12402 #pragma omp parallel for simd 12403 for (int i = 0; i < 10; ++i) { 12404 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12405 for (int j = 0; j < 10; ++j) 12406 ; 12407 } 12408 #pragma omp parallel for simd 12409 for (int i = 0; i < 10; ++i) { 12410 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12411 for (int j = 0; j < 10; ++j) 12412 ; 12413 } 12414 #pragma omp parallel for simd 12415 for (int i = 0; i < 10; ++i) { 12416 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12417 for (int j = 0; j < 10; ++j) 12418 ; 12419 } 12420 #pragma omp parallel for simd 12421 for (int i = 0; i < 10; ++i) { 12422 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12423 for (int j = 0; j < 10; ++j) 12424 ; 12425 } 12426 #pragma omp parallel for simd 12427 for (int i = 0; i < 10; ++i) { 12428 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12429 for (int j = 0; j < 10; ++j) 12430 ; 12431 } 12432 #pragma omp parallel for simd 12433 for (int i = 0; i < 10; ++i) { 12434 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12435 for (int j = 0; j < 10; ++j) 12436 ; 12437 } 12438 #pragma omp parallel for simd 12439 for (int i = 0; i < 10; ++i) { 12440 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12441 a++; 12442 } 12443 #pragma omp parallel for simd 12444 for (int i = 0; i < 10; ++i) { 12445 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12446 for (int j = 0; j < 10; ++j) 12447 ; 12448 } 12449 #pragma omp parallel for simd 12450 for (int i = 0; i < 10; ++i) { 12451 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12452 for (int j = 0; j < 10; ++j) 12453 ; 12454 } 12455 #pragma omp parallel for simd 12456 for (int i = 0; i < 10; ++i) { 12457 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12458 for (int j = 0; j < 10; ++j) 12459 ; 12460 } 12461 #pragma omp parallel for simd 12462 for (int i = 0; i < 10; ++i) { 12463 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12464 for (int j = 0; j < 10; ++j) 12465 ; 12466 } 12467 12468 // PARALLEL SECTIONS DIRECTIVE 12469 #pragma omp parallel sections 12470 { 12471 #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?}} 12472 for (int i = 0; i < 10; ++i) 12473 ; 12474 } 12475 #pragma omp parallel sections 12476 { 12477 #pragma omp simd 12478 for (int i = 0; i < 10; ++i) 12479 ; 12480 } 12481 #pragma omp parallel sections 12482 { 12483 #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?}} 12484 for (int i = 0; i < 10; ++i) 12485 ; 12486 } 12487 #pragma omp parallel sections 12488 { 12489 #pragma omp parallel 12490 for (int i = 0; i < 10; ++i) 12491 ; 12492 } 12493 #pragma omp parallel sections 12494 { 12495 #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?}} 12496 { 12497 bar(); 12498 } 12499 } 12500 #pragma omp parallel sections 12501 { 12502 #pragma omp section 12503 { 12504 bar(); 12505 } 12506 } 12507 #pragma omp parallel sections 12508 { 12509 #pragma omp section 12510 { 12511 #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?}} 12512 bar(); 12513 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 12514 bar(); 12515 #pragma omp critical 12516 bar(); 12517 } 12518 } 12519 #pragma omp parallel sections 12520 { 12521 #pragma omp parallel 12522 { 12523 #pragma omp single // OK 12524 { 12525 bar(); 12526 } 12527 #pragma omp master // OK 12528 { 12529 bar(); 12530 } 12531 #pragma omp critical // OK 12532 { 12533 bar(); 12534 } 12535 #pragma omp for // OK 12536 for (int i = 0; i < 10; ++i) 12537 ; 12538 #pragma omp for simd // OK 12539 for (int i = 0; i < 10; ++i) 12540 ; 12541 #pragma omp sections // OK 12542 { 12543 bar(); 12544 } 12545 } 12546 } 12547 #pragma omp parallel sections 12548 { 12549 #pragma omp parallel for 12550 for (int i = 0; i < 10; ++i) 12551 ; 12552 } 12553 #pragma omp parallel sections 12554 { 12555 #pragma omp parallel for simd 12556 for (int i = 0; i < 10; ++i) 12557 ; 12558 } 12559 #pragma omp parallel sections 12560 { 12561 #pragma omp parallel sections 12562 { 12563 bar(); 12564 } 12565 } 12566 #pragma omp parallel sections 12567 { 12568 #pragma omp task 12569 { 12570 bar(); 12571 } 12572 } 12573 #pragma omp parallel sections 12574 { 12575 #pragma omp taskyield 12576 } 12577 #pragma omp parallel sections 12578 { 12579 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12580 } 12581 #pragma omp parallel sections 12582 { 12583 #pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 12584 } 12585 #pragma omp parallel sections 12586 { 12587 #pragma omp taskwait 12588 } 12589 #pragma omp parallel sections 12590 { 12591 #pragma omp flush 12592 } 12593 #pragma omp parallel sections 12594 { 12595 #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?}} 12596 bar(); 12597 } 12598 #pragma omp parallel sections 12599 { 12600 #pragma omp atomic 12601 ++a; 12602 } 12603 #pragma omp parallel sections 12604 { 12605 #pragma omp target 12606 ++a; 12607 } 12608 #pragma omp parallel sections 12609 { 12610 #pragma omp target parallel 12611 ++a; 12612 } 12613 #pragma omp parallel sections 12614 { 12615 #pragma omp target parallel for 12616 for (int i = 0; i < 10; ++i) 12617 ; 12618 } 12619 #pragma omp parallel sections 12620 { 12621 #pragma omp target enter data map(to: a) 12622 } 12623 #pragma omp parallel sections 12624 { 12625 #pragma omp target exit data map(from: a) 12626 } 12627 #pragma omp parallel sections 12628 { 12629 #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?}} 12630 ++a; 12631 } 12632 #pragma omp parallel sections 12633 { 12634 #pragma omp taskloop 12635 for (int i = 0; i < 10; ++i) 12636 ++a; 12637 } 12638 #pragma omp parallel sections 12639 { 12640 #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?}} 12641 for (int i = 0; i < 10; ++i) 12642 ; 12643 } 12644 #pragma omp parallel sections 12645 { 12646 #pragma omp target update to(a) 12647 } 12648 #pragma omp parallel sections 12649 { 12650 #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?}} 12651 for (int i = 0; i < 10; ++i) 12652 ; 12653 } 12654 #pragma omp parallel sections 12655 { 12656 #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?}} 12657 for (int i = 0; i < 10; ++i) 12658 ; 12659 } 12660 #pragma omp parallel sections 12661 { 12662 #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?}} 12663 for (int i = 0; i < 10; ++i) 12664 ; 12665 } 12666 #pragma omp parallel sections 12667 { 12668 #pragma omp target simd // OK 12669 for (int i = 0; i < 10; ++i) 12670 ; 12671 } 12672 #pragma omp parallel sections 12673 { 12674 #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?}} 12675 for (int i = 0; i < 10; ++i) 12676 ; 12677 } 12678 #pragma omp parallel sections 12679 { 12680 #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?}} 12681 for (int i = 0; i < 10; ++i) 12682 ; 12683 } 12684 #pragma omp parallel sections 12685 { 12686 #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?}} 12687 for (int i = 0; i < 10; ++i) 12688 ; 12689 } 12690 #pragma omp parallel sections 12691 { 12692 #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?}} 12693 for (int i = 0; i < 10; ++i) 12694 ; 12695 } 12696 #pragma omp parallel sections 12697 { 12698 #pragma omp target teams // OK 12699 a++; 12700 } 12701 #pragma omp parallel sections 12702 { 12703 #pragma omp target teams distribute // OK 12704 for (int i = 0; i < 10; ++i) 12705 ; 12706 } 12707 #pragma omp parallel sections 12708 { 12709 #pragma omp target teams distribute parallel for // OK 12710 for (int i = 0; i < 10; ++i) 12711 ; 12712 } 12713 #pragma omp parallel sections 12714 { 12715 #pragma omp target teams distribute parallel for simd // OK 12716 for (int i = 0; i < 10; ++i) 12717 ; 12718 } 12719 #pragma omp parallel sections 12720 { 12721 #pragma omp target teams distribute simd // OK 12722 for (int i = 0; i < 10; ++i) 12723 ; 12724 } 12725 12726 // TASK DIRECTIVE 12727 #pragma omp task 12728 #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?}} 12729 for (int i = 0; i < 10; ++i) 12730 ; 12731 #pragma omp task 12732 #pragma omp simd 12733 for (int i = 0; i < 10; ++i) 12734 ; 12735 #pragma omp task 12736 #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?}} 12737 for (int i = 0; i < 10; ++i) 12738 ; 12739 #pragma omp task 12740 #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?}} 12741 { 12742 bar(); 12743 } 12744 #pragma omp task 12745 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 12746 { 12747 bar(); 12748 } 12749 #pragma omp task 12750 #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?}} 12751 bar(); 12752 #pragma omp task 12753 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 12754 bar(); 12755 #pragma omp task 12756 #pragma omp critical 12757 bar(); 12758 #pragma omp task 12759 #pragma omp parallel for 12760 for (int i = 0; i < 10; ++i) 12761 ; 12762 #pragma omp task 12763 #pragma omp parallel for simd 12764 for (int i = 0; i < 10; ++i) 12765 ; 12766 #pragma omp task 12767 #pragma omp parallel sections 12768 { 12769 bar(); 12770 } 12771 #pragma omp task 12772 #pragma omp task 12773 { 12774 bar(); 12775 } 12776 #pragma omp task 12777 { 12778 #pragma omp taskyield 12779 bar(); 12780 } 12781 #pragma omp task 12782 { 12783 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 12784 bar(); 12785 } 12786 #pragma omp task 12787 { 12788 #pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}} 12789 bar(); 12790 } 12791 #pragma omp task 12792 { 12793 #pragma omp taskwait 12794 bar(); 12795 } 12796 #pragma omp task 12797 { 12798 #pragma omp flush 12799 bar(); 12800 } 12801 #pragma omp task 12802 { 12803 #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?}} 12804 bar(); 12805 } 12806 #pragma omp task 12807 { 12808 #pragma omp atomic 12809 ++a; 12810 } 12811 #pragma omp task 12812 { 12813 #pragma omp target 12814 ++a; 12815 } 12816 #pragma omp task 12817 { 12818 #pragma omp target parallel 12819 ++a; 12820 } 12821 #pragma omp task 12822 #pragma omp target parallel for 12823 for (int i = 0; i < 10; ++i) 12824 ; 12825 #pragma omp task 12826 { 12827 #pragma omp target enter data map(to: a) 12828 ++a; 12829 } 12830 #pragma omp task 12831 { 12832 #pragma omp target exit data map(from: a) 12833 ++a; 12834 } 12835 #pragma omp task 12836 { 12837 #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?}} 12838 ++a; 12839 } 12840 #pragma omp task 12841 { 12842 #pragma omp taskloop 12843 for (int i = 0; i < 10; ++i) 12844 ++a; 12845 } 12846 #pragma omp task 12847 { 12848 #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?}} 12849 for (int i = 0; i < 10; ++i) 12850 ; 12851 } 12852 #pragma omp task 12853 { 12854 #pragma omp target update to(a) 12855 a++; 12856 } 12857 #pragma omp task 12858 { 12859 #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?}} 12860 for (int i = 0; i < 10; ++i) 12861 ; 12862 } 12863 #pragma omp task 12864 { 12865 #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?}} 12866 for (int i = 0; i < 10; ++i) 12867 ; 12868 } 12869 #pragma omp task 12870 { 12871 #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?}} 12872 for (int i = 0; i < 10; ++i) 12873 ; 12874 } 12875 #pragma omp task 12876 { 12877 #pragma omp target simd // OK 12878 for (int i = 0; i < 10; ++i) 12879 ; 12880 } 12881 #pragma omp task 12882 { 12883 #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?}} 12884 for (int i = 0; i < 10; ++i) 12885 ; 12886 } 12887 #pragma omp task 12888 { 12889 #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?}} 12890 for (int i = 0; i < 10; ++i) 12891 ; 12892 } 12893 #pragma omp task 12894 { 12895 #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?}} 12896 for (int i = 0; i < 10; ++i) 12897 ; 12898 } 12899 #pragma omp task 12900 { 12901 #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?}} 12902 for (int i = 0; i < 10; ++i) 12903 ; 12904 } 12905 #pragma omp task 12906 { 12907 #pragma omp target teams // OK 12908 a++; 12909 } 12910 #pragma omp task 12911 { 12912 #pragma omp target teams distribute // OK 12913 for (int i = 0; i < 10; ++i) 12914 ; 12915 } 12916 #pragma omp task 12917 { 12918 #pragma omp target teams distribute parallel for // OK 12919 for (int i = 0; i < 10; ++i) 12920 ; 12921 } 12922 #pragma omp task 12923 { 12924 #pragma omp target teams distribute parallel for simd // OK 12925 for (int i = 0; i < 10; ++i) 12926 ; 12927 } 12928 #pragma omp task 12929 { 12930 #pragma omp target teams distribute simd // OK 12931 for (int i = 0; i < 10; ++i) 12932 ; 12933 } 12934 12935 // ATOMIC DIRECTIVE 12936 #pragma omp atomic 12937 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12938 // expected-note@+1 {{expected an expression statement}} 12939 { 12940 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12941 for (int i = 0; i < 10; ++i) 12942 ; 12943 } 12944 #pragma omp atomic 12945 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12946 // expected-note@+1 {{expected an expression statement}} 12947 { 12948 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12949 for (int i = 0; i < 10; ++i) 12950 ; 12951 } 12952 #pragma omp atomic 12953 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12954 // expected-note@+1 {{expected an expression statement}} 12955 { 12956 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12957 for (int i = 0; i < 10; ++i) 12958 ; 12959 } 12960 #pragma omp atomic 12961 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12962 // expected-note@+1 {{expected an expression statement}} 12963 { 12964 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12965 for (int i = 0; i < 10; ++i) 12966 ; 12967 } 12968 #pragma omp atomic 12969 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12970 // expected-note@+1 {{expected an expression statement}} 12971 { 12972 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12973 { 12974 bar(); 12975 } 12976 } 12977 #pragma omp atomic 12978 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12979 // expected-note@+1 {{expected an expression statement}} 12980 { 12981 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12982 { 12983 bar(); 12984 } 12985 } 12986 #pragma omp atomic 12987 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12988 // expected-note@+1 {{expected an expression statement}} 12989 { 12990 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12991 { 12992 bar(); 12993 } 12994 } 12995 #pragma omp atomic 12996 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 12997 // expected-note@+1 {{expected an expression statement}} 12998 { 12999 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13000 { 13001 bar(); 13002 } 13003 } 13004 #pragma omp atomic 13005 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13006 // expected-note@+1 {{expected an expression statement}} 13007 { 13008 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13009 { 13010 bar(); 13011 } 13012 } 13013 #pragma omp atomic 13014 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13015 // expected-note@+1 {{expected an expression statement}} 13016 { 13017 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13018 for (int i = 0; i < 10; ++i) 13019 ; 13020 } 13021 #pragma omp atomic 13022 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13023 // expected-note@+1 {{expected an expression statement}} 13024 { 13025 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13026 for (int i = 0; i < 10; ++i) 13027 ; 13028 } 13029 #pragma omp atomic 13030 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13031 // expected-note@+1 {{expected an expression statement}} 13032 { 13033 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13034 { 13035 bar(); 13036 } 13037 } 13038 #pragma omp atomic 13039 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13040 // expected-note@+1 {{expected an expression statement}} 13041 { 13042 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13043 { 13044 bar(); 13045 } 13046 } 13047 #pragma omp atomic 13048 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13049 // expected-note@+1 {{expected an expression statement}} 13050 { 13051 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13052 bar(); 13053 } 13054 #pragma omp atomic 13055 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13056 // expected-note@+1 {{expected an expression statement}} 13057 { 13058 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13059 bar(); 13060 } 13061 #pragma omp atomic 13062 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13063 // expected-note@+1 {{expected an expression statement}} 13064 { 13065 #pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13066 bar(); 13067 } 13068 #pragma omp atomic 13069 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13070 // expected-note@+1 {{expected an expression statement}} 13071 { 13072 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13073 bar(); 13074 } 13075 #pragma omp atomic 13076 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13077 // expected-note@+1 {{expected an expression statement}} 13078 { 13079 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13080 bar(); 13081 } 13082 #pragma omp atomic 13083 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13084 // expected-note@+1 {{expected an expression statement}} 13085 { 13086 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13087 bar(); 13088 } 13089 #pragma omp atomic 13090 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13091 // expected-note@+1 {{expected an expression statement}} 13092 { 13093 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13094 ++a; 13095 } 13096 #pragma omp atomic 13097 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13098 // expected-note@+1 {{expected an expression statement}} 13099 { 13100 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13101 ++a; 13102 } 13103 #pragma omp atomic 13104 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13105 // expected-note@+1 {{expected an expression statement}} 13106 { 13107 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13108 ++a; 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 lvalue expression with scalar type}} 13112 // expected-note@+1 {{expected an expression statement}} 13113 { 13114 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13115 for (int i = 0; i < 10; ++i) 13116 ; 13117 } 13118 #pragma omp atomic 13119 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13120 // expected-note@+1 {{expected an expression statement}} 13121 { 13122 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13123 ++a; 13124 } 13125 #pragma omp atomic 13126 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13127 // expected-note@+1 {{expected an expression statement}} 13128 { 13129 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13130 ++a; 13131 } 13132 #pragma omp atomic 13133 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13134 // expected-note@+1 {{expected an expression statement}} 13135 { 13136 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13137 ++a; 13138 } 13139 #pragma omp atomic 13140 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13141 // expected-note@+1 {{expected an expression statement}} 13142 { 13143 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13144 for (int i = 0; i < 10; ++i) 13145 ++a; 13146 } 13147 #pragma omp atomic 13148 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13149 // expected-note@+1 {{expected an expression statement}} 13150 { 13151 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13152 for (int i = 0; i < 10; ++i) 13153 ; 13154 } 13155 #pragma omp atomic 13156 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13157 // expected-note@+1 {{expected an expression statement}} 13158 { 13159 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13160 } 13161 #pragma omp atomic 13162 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13163 // expected-note@+1 {{expected an expression statement}} 13164 { 13165 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13166 for (int i = 0; i < 10; ++i) 13167 ; 13168 } 13169 #pragma omp atomic 13170 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13171 // expected-note@+1 {{expected an expression statement}} 13172 { 13173 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13174 for (int i = 0; i < 10; ++i) 13175 ; 13176 } 13177 #pragma omp atomic 13178 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13179 // expected-note@+1 {{expected an expression statement}} 13180 { 13181 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13182 for (int i = 0; i < 10; ++i) 13183 ; 13184 } 13185 #pragma omp atomic 13186 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13187 // expected-note@+1 {{expected an expression statement}} 13188 { 13189 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13190 for (int i = 0; i < 10; ++i) 13191 ; 13192 } 13193 #pragma omp atomic 13194 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13195 // expected-note@+1 {{expected an expression statement}} 13196 { 13197 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13198 for (int i = 0; i < 10; ++i) 13199 ; 13200 } 13201 #pragma omp atomic 13202 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13203 // expected-note@+1 {{expected an expression statement}} 13204 { 13205 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13206 for (int i = 0; i < 10; ++i) 13207 ; 13208 } 13209 #pragma omp atomic 13210 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13211 // expected-note@+1 {{expected an expression statement}} 13212 { 13213 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13214 for (int i = 0; i < 10; ++i) 13215 ; 13216 } 13217 #pragma omp atomic 13218 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13219 // expected-note@+1 {{expected an expression statement}} 13220 { 13221 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13222 for (int i = 0; i < 10; ++i) 13223 ; 13224 } 13225 #pragma omp atomic 13226 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13227 // expected-note@+1 {{expected an expression statement}} 13228 { 13229 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13230 a++; 13231 } 13232 #pragma omp atomic 13233 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13234 // expected-note@+1 {{expected an expression statement}} 13235 { 13236 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13237 for (int i = 0; i < 10; ++i) 13238 ; 13239 } 13240 #pragma omp atomic 13241 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13242 // expected-note@+1 {{expected an expression statement}} 13243 { 13244 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13245 for (int i = 0; i < 10; ++i) 13246 ; 13247 } 13248 #pragma omp atomic 13249 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13250 // expected-note@+1 {{expected an expression statement}} 13251 { 13252 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13253 for (int i = 0; i < 10; ++i) 13254 ; 13255 } 13256 #pragma omp atomic 13257 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13258 // expected-note@+1 {{expected an expression statement}} 13259 { 13260 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13261 for (int i = 0; i < 10; ++i) 13262 ; 13263 } 13264 13265 // TARGET DIRECTIVE 13266 #pragma omp target 13267 #pragma omp parallel 13268 bar(); 13269 #pragma omp target 13270 #pragma omp for 13271 for (int i = 0; i < 10; ++i) 13272 ; 13273 #pragma omp target 13274 #pragma omp simd 13275 for (int i = 0; i < 10; ++i) 13276 ; 13277 #pragma omp target 13278 #pragma omp for simd 13279 for (int i = 0; i < 10; ++i) 13280 ; 13281 #pragma omp target 13282 #pragma omp sections 13283 { 13284 bar(); 13285 } 13286 #pragma omp target 13287 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 13288 { 13289 bar(); 13290 } 13291 #pragma omp target 13292 #pragma omp single 13293 bar(); 13294 13295 #pragma omp target 13296 #pragma omp master 13297 { 13298 bar(); 13299 } 13300 #pragma omp target 13301 #pragma omp critical 13302 { 13303 bar(); 13304 } 13305 #pragma omp target 13306 #pragma omp parallel for 13307 for (int i = 0; i < 10; ++i) 13308 ; 13309 #pragma omp target 13310 #pragma omp parallel for simd 13311 for (int i = 0; i < 10; ++i) 13312 ; 13313 #pragma omp target 13314 #pragma omp parallel sections 13315 { 13316 bar(); 13317 } 13318 #pragma omp target 13319 #pragma omp task 13320 { 13321 bar(); 13322 } 13323 #pragma omp target 13324 { 13325 #pragma omp taskyield 13326 bar(); 13327 } 13328 #pragma omp target 13329 { 13330 #pragma omp barrier 13331 bar(); 13332 } 13333 #pragma omp target 13334 { 13335 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 13336 bar(); 13337 } 13338 #pragma omp target 13339 { 13340 #pragma omp taskwait 13341 bar(); 13342 } 13343 #pragma omp target 13344 { 13345 #pragma omp flush 13346 bar(); 13347 } 13348 #pragma omp target 13349 { 13350 #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?}} 13351 bar(); 13352 } 13353 #pragma omp target 13354 { 13355 #pragma omp atomic 13356 ++a; 13357 } 13358 #pragma omp target 13359 { 13360 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13361 ++a; 13362 } 13363 #pragma omp target 13364 { 13365 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13366 ++a; 13367 } 13368 #pragma omp target 13369 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13370 for (int i = 0; i < 10; ++i) 13371 ; 13372 #pragma omp target 13373 { 13374 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13375 } 13376 #pragma omp target 13377 { 13378 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13379 } 13380 #pragma omp target 13381 { 13382 #pragma omp teams 13383 ++a; 13384 } 13385 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13386 { 13387 #pragma omp teams // expected-note {{directive outside teams construct here}} 13388 ++a; 13389 #pragma omp teams // expected-note {{nested teams construct here}} 13390 ++a; 13391 } 13392 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 13393 { 13394 ++a; // expected-note {{statement outside teams construct here}} 13395 #pragma omp teams // expected-note {{nested teams construct here}} 13396 ++a; 13397 } 13398 #pragma omp target 13399 { 13400 #pragma omp taskloop 13401 for (int i = 0; i < 10; ++i) 13402 ++a; 13403 } 13404 #pragma omp target 13405 { 13406 #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?}} 13407 for (int i = 0; i < 10; ++i) 13408 ; 13409 } 13410 #pragma omp atomic 13411 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}} 13412 // expected-note@+1 {{expected an expression statement}} 13413 { 13414 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 13415 a++; 13416 } 13417 #pragma omp target 13418 { 13419 #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?}} 13420 for (int i = 0; i < 10; ++i) 13421 ; 13422 } 13423 #pragma omp target 13424 { 13425 #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?}} 13426 for (int i = 0; i < 10; ++i) 13427 ; 13428 } 13429 #pragma omp target 13430 { 13431 #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?}} 13432 for (int i = 0; i < 10; ++i) 13433 ; 13434 } 13435 #pragma omp target 13436 { 13437 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13438 for (int i = 0; i < 10; ++i) 13439 ; 13440 } 13441 #pragma omp target 13442 { 13443 #pragma omp teams distribute // OK 13444 for (int i = 0; i < 10; ++i) 13445 ; 13446 } 13447 #pragma omp target 13448 { 13449 #pragma omp teams distribute simd // OK 13450 for (int i = 0; i < 10; ++i) 13451 ; 13452 } 13453 #pragma omp target 13454 { 13455 #pragma omp teams distribute parallel for simd // OK 13456 for (int i = 0; i < 10; ++i) 13457 ; 13458 } 13459 #pragma omp target 13460 { 13461 #pragma omp teams distribute parallel for // OK 13462 for (int i = 0; i < 10; ++i) 13463 ; 13464 } 13465 #pragma omp target 13466 { 13467 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13468 a++; 13469 } 13470 #pragma omp target 13471 { 13472 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13473 for (int i = 0; i < 10; ++i) 13474 ; 13475 } 13476 #pragma omp target 13477 { 13478 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13479 for (int i = 0; i < 10; ++i) 13480 ; 13481 } 13482 #pragma omp target 13483 { 13484 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13485 for (int i = 0; i < 10; ++i) 13486 ; 13487 } 13488 #pragma omp target 13489 { 13490 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13491 for (int i = 0; i < 10; ++i) 13492 ; 13493 } 13494 13495 // TARGET PARALLEL DIRECTIVE 13496 #pragma omp target parallel 13497 #pragma omp parallel 13498 bar(); 13499 #pragma omp target parallel 13500 #pragma omp for 13501 for (int i = 0; i < 10; ++i) 13502 ; 13503 #pragma omp target parallel 13504 #pragma omp simd 13505 for (int i = 0; i < 10; ++i) 13506 ; 13507 #pragma omp target parallel 13508 #pragma omp for simd 13509 for (int i = 0; i < 10; ++i) 13510 ; 13511 #pragma omp target parallel 13512 #pragma omp sections 13513 { 13514 bar(); 13515 } 13516 #pragma omp target parallel 13517 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 13518 { 13519 bar(); 13520 } 13521 #pragma omp target parallel 13522 #pragma omp single 13523 bar(); 13524 13525 #pragma omp target parallel 13526 #pragma omp master 13527 { 13528 bar(); 13529 } 13530 #pragma omp target parallel 13531 #pragma omp critical 13532 { 13533 bar(); 13534 } 13535 #pragma omp target parallel 13536 #pragma omp parallel for 13537 for (int i = 0; i < 10; ++i) 13538 ; 13539 #pragma omp target parallel 13540 #pragma omp parallel for simd 13541 for (int i = 0; i < 10; ++i) 13542 ; 13543 #pragma omp target parallel 13544 #pragma omp parallel sections 13545 { 13546 bar(); 13547 } 13548 #pragma omp target parallel 13549 #pragma omp task 13550 { 13551 bar(); 13552 } 13553 #pragma omp target parallel 13554 { 13555 #pragma omp taskyield 13556 bar(); 13557 } 13558 #pragma omp target parallel 13559 { 13560 #pragma omp barrier 13561 bar(); 13562 } 13563 #pragma omp target parallel 13564 { 13565 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 13566 bar(); 13567 } 13568 #pragma omp target parallel 13569 { 13570 #pragma omp taskwait 13571 bar(); 13572 } 13573 #pragma omp target parallel 13574 { 13575 #pragma omp flush 13576 bar(); 13577 } 13578 #pragma omp target parallel 13579 { 13580 #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?}} 13581 bar(); 13582 } 13583 #pragma omp target parallel 13584 { 13585 #pragma omp atomic 13586 ++a; 13587 } 13588 #pragma omp target parallel 13589 { 13590 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 13591 ++a; 13592 } 13593 #pragma omp target parallel 13594 { 13595 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 13596 ++a; 13597 } 13598 #pragma omp target parallel 13599 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13600 for (int i = 0; i < 10; ++i) 13601 ; 13602 #pragma omp target parallel 13603 { 13604 #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?}} 13605 ++a; 13606 } 13607 #pragma omp target parallel 13608 { 13609 ++a; 13610 #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?}} 13611 ++a; 13612 } 13613 #pragma omp target parallel 13614 { 13615 #pragma omp taskloop 13616 for (int i = 0; i < 10; ++i) 13617 ++a; 13618 } 13619 #pragma omp target parallel 13620 { 13621 #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?}} 13622 for (int i = 0; i < 10; ++i) 13623 ; 13624 } 13625 #pragma omp target parallel 13626 { 13627 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13628 } 13629 #pragma omp target parallel 13630 { 13631 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13632 } 13633 #pragma omp target parallel 13634 { 13635 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 13636 } 13637 #pragma omp target parallel 13638 { 13639 #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?}} 13640 for (int i = 0; i < 10; ++i) 13641 ; 13642 } 13643 #pragma omp target parallel 13644 { 13645 #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?}} 13646 for (int i = 0; i < 10; ++i) 13647 ; 13648 } 13649 #pragma omp target parallel 13650 { 13651 #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?}} 13652 for (int i = 0; i < 10; ++i) 13653 ; 13654 } 13655 #pragma omp target parallel 13656 { 13657 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 13658 for (int i = 0; i < 10; ++i) 13659 ; 13660 } 13661 #pragma omp target parallel 13662 { 13663 #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?}} 13664 for (int i = 0; i < 10; ++i) 13665 ; 13666 } 13667 #pragma omp target parallel 13668 { 13669 #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?}} 13670 for (int i = 0; i < 10; ++i) 13671 ; 13672 } 13673 #pragma omp target parallel 13674 { 13675 #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?}} 13676 for (int i = 0; i < 10; ++i) 13677 ; 13678 } 13679 #pragma omp target parallel 13680 { 13681 #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?}} 13682 for (int i = 0; i < 10; ++i) 13683 ; 13684 } 13685 #pragma omp target parallel 13686 { 13687 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 13688 a++; 13689 } 13690 #pragma omp target parallel 13691 { 13692 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 13693 for (int i = 0; i < 10; ++i) 13694 ; 13695 } 13696 #pragma omp target parallel 13697 { 13698 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13699 for (int i = 0; i < 10; ++i) 13700 ; 13701 } 13702 #pragma omp target parallel 13703 { 13704 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13705 for (int i = 0; i < 10; ++i) 13706 ; 13707 } 13708 #pragma omp target parallel 13709 { 13710 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13711 for (int i = 0; i < 10; ++i) 13712 ; 13713 } 13714 13715 // TARGET PARALLEL FOR DIRECTIVE 13716 #pragma omp target parallel for 13717 for (int i = 0; i < 10; ++i) { 13718 #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?}} 13719 for (int i = 0; i < 10; ++i) 13720 ; 13721 } 13722 #pragma omp target parallel for 13723 for (int i = 0; i < 10; ++i) { 13724 #pragma omp simd 13725 for (int i = 0; i < 10; ++i) 13726 ; 13727 } 13728 #pragma omp target parallel for 13729 for (int i = 0; i < 10; ++i) { 13730 #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?}} 13731 for (int i = 0; i < 10; ++i) 13732 ; 13733 } 13734 #pragma omp target parallel for 13735 for (int i = 0; i < 10; ++i) { 13736 #pragma omp parallel 13737 for (int i = 0; i < 10; ++i) 13738 ; 13739 } 13740 #pragma omp target parallel for 13741 for (int i = 0; i < 10; ++i) { 13742 #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?}} 13743 { 13744 bar(); 13745 } 13746 } 13747 #pragma omp target parallel for 13748 for (int i = 0; i < 10; ++i) { 13749 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 13750 { 13751 bar(); 13752 } 13753 } 13754 #pragma omp target parallel for 13755 for (int i = 0; i < 10; ++i) { 13756 #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?}} 13757 { 13758 bar(); 13759 } 13760 } 13761 13762 #pragma omp target parallel for 13763 for (int i = 0; i < 10; ++i) { 13764 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13765 { 13766 bar(); 13767 } 13768 } 13769 13770 #pragma omp target parallel for 13771 for (int i = 0; i < 10; ++i) { 13772 #pragma omp critical 13773 { 13774 bar(); 13775 } 13776 } 13777 13778 #pragma omp target parallel for 13779 for (int i = 0; i < 10; ++i) { 13780 #pragma omp parallel 13781 { 13782 #pragma omp single // OK 13783 { 13784 bar(); 13785 } 13786 #pragma omp for // OK 13787 for (int i = 0; i < 10; ++i) 13788 ; 13789 #pragma omp for simd // OK 13790 for (int i = 0; i < 10; ++i) 13791 ; 13792 #pragma omp sections // OK 13793 { 13794 bar(); 13795 } 13796 } 13797 } 13798 #pragma omp target parallel for 13799 for (int i = 0; i < 10; ++i) { 13800 #pragma omp parallel for 13801 for (int i = 0; i < 10; ++i) 13802 ; 13803 } 13804 #pragma omp target parallel for 13805 for (int i = 0; i < 10; ++i) { 13806 #pragma omp parallel for simd 13807 for (int i = 0; i < 10; ++i) 13808 ; 13809 } 13810 #pragma omp target parallel for 13811 for (int i = 0; i < 10; ++i) { 13812 #pragma omp parallel sections 13813 { 13814 bar(); 13815 } 13816 } 13817 #pragma omp target parallel for 13818 for (int i = 0; i < 10; ++i) { 13819 #pragma omp task 13820 { 13821 bar(); 13822 } 13823 } 13824 #pragma omp target parallel for 13825 for (int i = 0; i < 10; ++i) { 13826 #pragma omp taskyield 13827 bar(); 13828 } 13829 #pragma omp target parallel for 13830 for (int i = 0; i < 10; ++i) { 13831 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13832 bar(); 13833 } 13834 #pragma omp target parallel for 13835 for (int i = 0; i < 10; ++i) { 13836 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13837 bar(); 13838 } 13839 #pragma omp target parallel for 13840 for (int i = 0; i < 10; ++i) { 13841 #pragma omp taskwait 13842 bar(); 13843 } 13844 #pragma omp target parallel for 13845 for (int i = 0; i < 10; ++i) { 13846 #pragma omp flush 13847 bar(); 13848 } 13849 #pragma omp target parallel for 13850 for (int i = 0; i < 10; ++i) { 13851 #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?}} 13852 bar(); 13853 } 13854 #pragma omp target parallel for ordered 13855 for (int i = 0; i < 10; ++i) { 13856 #pragma omp ordered // OK 13857 bar(); 13858 } 13859 #pragma omp target parallel for 13860 for (int i = 0; i < 10; ++i) { 13861 #pragma omp atomic 13862 ++a; 13863 } 13864 #pragma omp target parallel for 13865 for (int i = 0; i < 10; ++i) { 13866 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 13867 ++a; 13868 } 13869 #pragma omp target parallel for 13870 for (int i = 0; i < 10; ++i) { 13871 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 13872 ++a; 13873 } 13874 #pragma omp target parallel for 13875 for (int i = 0; i < 10; ++i) { 13876 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13877 for (int i = 0; i < 10; ++i) 13878 ; 13879 } 13880 #pragma omp target parallel for 13881 for (int i = 0; i < 10; ++i) { 13882 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13883 ++a; 13884 } 13885 #pragma omp target parallel for 13886 for (int i = 0; i < 10; ++i) { 13887 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13888 ++a; 13889 } 13890 #pragma omp target parallel for 13891 for (int i = 0; i < 10; ++i) { 13892 #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?}} 13893 ++a; 13894 } 13895 #pragma omp target parallel for 13896 for (int i = 0; i < 10; ++i) { 13897 #pragma omp taskloop 13898 for (int i = 0; i < 10; ++i) 13899 ++a; 13900 } 13901 #pragma omp target parallel for 13902 for (int i = 0; i < 10; ++i) { 13903 #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?}} 13904 for (int j = 0; j < 10; ++j) 13905 ; 13906 } 13907 #pragma omp target parallel for 13908 for (int i = 0; i < 10; ++i) { 13909 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13910 a++; 13911 } 13912 #pragma omp target parallel for 13913 for (int i = 0; i < 10; ++i) { 13914 #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?}} 13915 for (int j = 0; j < 10; ++j) 13916 ; 13917 } 13918 #pragma omp target parallel for 13919 for (int i = 0; i < 10; ++i) { 13920 #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?}} 13921 for (int j = 0; j < 10; ++j) 13922 ; 13923 } 13924 #pragma omp target parallel for 13925 for (int i = 0; i < 10; ++i) { 13926 #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?}} 13927 for (int j = 0; j < 10; ++j) 13928 ; 13929 } 13930 #pragma omp target parallel for 13931 for (int i = 0; i < 10; ++i) { 13932 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13933 for (int j = 0; j < 10; ++j) 13934 ; 13935 } 13936 #pragma omp target parallel for 13937 for (int i = 0; i < 10; ++i) { 13938 #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?}} 13939 for (int j = 0; j < 10; ++j) 13940 ; 13941 } 13942 #pragma omp target parallel for 13943 for (int i = 0; i < 10; ++i) { 13944 #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?}} 13945 for (int j = 0; j < 10; ++j) 13946 ; 13947 } 13948 #pragma omp target parallel for 13949 for (int i = 0; i < 10; ++i) { 13950 #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?}} 13951 for (int j = 0; j < 10; ++j) 13952 ; 13953 } 13954 #pragma omp target parallel for 13955 for (int i = 0; i < 10; ++i) { 13956 #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?}} 13957 for (int j = 0; j < 10; ++j) 13958 ; 13959 } 13960 #pragma omp target parallel for 13961 for (int i = 0; i < 10; ++i) { 13962 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 13963 a++; 13964 } 13965 #pragma omp target parallel for 13966 for (int i = 0; i < 10; ++i) { 13967 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 13968 for (int j = 0; j < 10; ++j) 13969 ; 13970 } 13971 #pragma omp target parallel for 13972 for (int i = 0; i < 10; ++i) { 13973 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13974 for (int j = 0; j < 10; ++j) 13975 ; 13976 } 13977 #pragma omp target parallel for 13978 for (int i = 0; i < 10; ++i) { 13979 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13980 for (int j = 0; j < 10; ++j) 13981 ; 13982 } 13983 #pragma omp target parallel for 13984 for (int i = 0; i < 10; ++i) { 13985 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13986 for (int j = 0; j < 10; ++j) 13987 ; 13988 } 13989 13990 // TEAMS DIRECTIVE 13991 #pragma omp target 13992 #pragma omp teams 13993 #pragma omp parallel 13994 bar(); 13995 #pragma omp target 13996 #pragma omp teams 13997 #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?}} 13998 for (int i = 0; i < 10; ++i) 13999 ; 14000 #pragma omp target 14001 #pragma omp teams 14002 #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?}} 14003 for (int i = 0; i < 10; ++i) 14004 ; 14005 #pragma omp target 14006 #pragma omp teams 14007 #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?}} 14008 for (int i = 0; i < 10; ++i) 14009 ; 14010 #pragma omp target 14011 #pragma omp teams 14012 #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?}} 14013 { 14014 bar(); 14015 } 14016 #pragma omp target 14017 #pragma omp teams 14018 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 14019 { 14020 bar(); 14021 } 14022 #pragma omp target 14023 #pragma omp teams 14024 #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?}} 14025 bar(); 14026 14027 #pragma omp target 14028 #pragma omp teams 14029 #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?}} 14030 { 14031 bar(); 14032 } 14033 #pragma omp target 14034 #pragma omp teams 14035 #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?}} 14036 { 14037 bar(); 14038 } 14039 #pragma omp target 14040 #pragma omp teams 14041 #pragma omp parallel for 14042 for (int i = 0; i < 10; ++i) 14043 ; 14044 #pragma omp target 14045 #pragma omp teams 14046 #pragma omp parallel for simd 14047 for (int i = 0; i < 10; ++i) 14048 ; 14049 #pragma omp target 14050 #pragma omp teams 14051 #pragma omp parallel sections 14052 { 14053 bar(); 14054 } 14055 #pragma omp target 14056 #pragma omp teams 14057 #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?}} 14058 { 14059 bar(); 14060 } 14061 #pragma omp target 14062 #pragma omp teams 14063 { 14064 #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?}} 14065 bar(); 14066 } 14067 #pragma omp target 14068 #pragma omp teams 14069 { 14070 #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?}} 14071 bar(); 14072 } 14073 #pragma omp target 14074 #pragma omp teams 14075 { 14076 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 14077 bar(); 14078 } 14079 #pragma omp target 14080 #pragma omp teams 14081 { 14082 #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?}} 14083 bar(); 14084 } 14085 #pragma omp target 14086 #pragma omp teams 14087 { 14088 #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?}} 14089 bar(); 14090 } 14091 #pragma omp target 14092 #pragma omp teams 14093 { 14094 #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?}} 14095 bar(); 14096 } 14097 #pragma omp target 14098 #pragma omp teams 14099 { 14100 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 14101 ++a; 14102 } 14103 #pragma omp target 14104 #pragma omp teams 14105 { 14106 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14107 ++a; 14108 } 14109 #pragma omp target 14110 #pragma omp teams 14111 { 14112 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14113 ++a; 14114 } 14115 #pragma omp target 14116 #pragma omp teams 14117 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14118 for (int i = 0; i < 10; ++i) 14119 ; 14120 #pragma omp target 14121 #pragma omp teams 14122 { 14123 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14124 } 14125 #pragma omp target 14126 #pragma omp teams 14127 { 14128 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14129 } 14130 #pragma omp target 14131 #pragma omp teams 14132 { 14133 #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?}} 14134 ++a; 14135 } 14136 #pragma omp target 14137 #pragma omp teams 14138 { 14139 #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?}} 14140 for (int i = 0; i < 10; ++i) 14141 ++a; 14142 } 14143 #pragma omp target 14144 #pragma omp teams 14145 #pragma omp distribute 14146 for (int i = 0; i < 10; ++i) 14147 ; 14148 #pragma omp target 14149 #pragma omp teams 14150 #pragma omp distribute 14151 for (int i = 0; i < 10; ++i) 14152 ; 14153 #pragma omp distribute 14154 for (int j = 0; j < 10; ++j) 14155 ; 14156 #pragma omp target 14157 #pragma omp teams 14158 { 14159 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14160 ++a; 14161 } 14162 #pragma omp target 14163 #pragma omp teams 14164 #pragma omp distribute parallel for 14165 for (int i = 0; i < 10; ++i) 14166 ; 14167 #pragma omp target 14168 #pragma omp teams 14169 { 14170 #pragma omp distribute parallel for 14171 for (int i = 0; i < 10; ++i) 14172 ; 14173 #pragma omp distribute parallel for 14174 for (int j = 0; j < 10; ++j) 14175 ; 14176 } 14177 #pragma omp target 14178 #pragma omp teams 14179 { 14180 #pragma omp distribute parallel for simd 14181 for (int i = 0; i < 10; ++i) 14182 ; 14183 #pragma omp distribute parallel for simd 14184 for (int j = 0; j < 10; ++j) 14185 ; 14186 } 14187 #pragma omp target 14188 #pragma omp teams 14189 { 14190 #pragma omp distribute simd 14191 for (int i = 0; i < 10; ++i) 14192 ; 14193 #pragma omp distribute simd 14194 for (int j = 0; j < 10; ++j) 14195 ; 14196 } 14197 #pragma omp target 14198 #pragma omp teams 14199 { 14200 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14201 for (int i = 0; i < 10; ++i) 14202 ; 14203 } 14204 #pragma omp target 14205 #pragma omp teams 14206 { 14207 #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?}} 14208 for (int i = 0; i < 10; ++i) 14209 ; 14210 } 14211 #pragma omp target 14212 #pragma omp teams 14213 { 14214 #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?}} 14215 for (int i = 0; i < 10; ++i) 14216 ; 14217 } 14218 #pragma omp target 14219 #pragma omp teams 14220 { 14221 #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?}} 14222 for (int i = 0; i < 10; ++i) 14223 ; 14224 } 14225 #pragma omp target 14226 #pragma omp teams 14227 { 14228 #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?}} 14229 for (int i = 0; i < 10; ++i) 14230 ; 14231 } 14232 #pragma omp target 14233 #pragma omp teams 14234 { 14235 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14236 a++; 14237 } 14238 #pragma omp target 14239 #pragma omp teams 14240 { 14241 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14242 for (int i = 0; i < 10; ++i) 14243 ; 14244 } 14245 #pragma omp target 14246 #pragma omp teams 14247 { 14248 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14249 for (int i = 0; i < 10; ++i) 14250 ; 14251 } 14252 #pragma omp target 14253 #pragma omp teams 14254 { 14255 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14256 for (int i = 0; i < 10; ++i) 14257 ; 14258 } 14259 #pragma omp target 14260 #pragma omp teams 14261 { 14262 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14263 for (int i = 0; i < 10; ++i) 14264 ; 14265 } 14266 14267 // TASKLOOP DIRECTIVE 14268 #pragma omp taskloop 14269 for (int i = 0; i < 10; ++i) { 14270 #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?}} 14271 for (int i = 0; i < 10; ++i) 14272 ; 14273 } 14274 #pragma omp taskloop 14275 for (int i = 0; i < 10; ++i) { 14276 #pragma omp simd 14277 for (int i = 0; i < 10; ++i) 14278 ; 14279 } 14280 #pragma omp taskloop 14281 for (int i = 0; i < 10; ++i) { 14282 #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?}} 14283 for (int i = 0; i < 10; ++i) 14284 ; 14285 } 14286 #pragma omp taskloop 14287 for (int i = 0; i < 10; ++i) { 14288 #pragma omp parallel 14289 for (int i = 0; i < 10; ++i) 14290 ; 14291 } 14292 #pragma omp taskloop 14293 for (int i = 0; i < 10; ++i) { 14294 #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?}} 14295 { 14296 bar(); 14297 } 14298 } 14299 #pragma omp taskloop 14300 for (int i = 0; i < 10; ++i) { 14301 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 14302 { 14303 bar(); 14304 } 14305 } 14306 #pragma omp taskloop 14307 for (int i = 0; i < 10; ++i) { 14308 #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?}} 14309 { 14310 bar(); 14311 } 14312 } 14313 14314 #pragma omp taskloop 14315 for (int i = 0; i < 10; ++i) { 14316 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14317 { 14318 bar(); 14319 } 14320 } 14321 #pragma omp taskloop 14322 for (int i = 0; i < 10; ++i) { 14323 #pragma omp critical 14324 { 14325 bar(); 14326 } 14327 } 14328 #pragma omp taskloop 14329 for (int i = 0; i < 10; ++i) { 14330 #pragma omp parallel 14331 { 14332 #pragma omp single // OK 14333 { 14334 bar(); 14335 } 14336 #pragma omp for // OK 14337 for (int i = 0; i < 10; ++i) 14338 ; 14339 #pragma omp sections // OK 14340 { 14341 bar(); 14342 } 14343 } 14344 } 14345 #pragma omp taskloop 14346 for (int i = 0; i < 10; ++i) { 14347 #pragma omp parallel for 14348 for (int i = 0; i < 10; ++i) 14349 ; 14350 } 14351 #pragma omp taskloop 14352 for (int i = 0; i < 10; ++i) { 14353 #pragma omp parallel for simd 14354 for (int i = 0; i < 10; ++i) 14355 ; 14356 } 14357 #pragma omp taskloop 14358 for (int i = 0; i < 10; ++i) { 14359 #pragma omp parallel sections 14360 { 14361 bar(); 14362 } 14363 } 14364 #pragma omp taskloop 14365 for (int i = 0; i < 10; ++i) { 14366 #pragma omp task 14367 { 14368 bar(); 14369 } 14370 } 14371 #pragma omp taskloop 14372 for (int i = 0; i < 10; ++i) { 14373 #pragma omp taskyield 14374 bar(); 14375 } 14376 #pragma omp taskloop 14377 for (int i = 0; i < 10; ++i) { 14378 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14379 bar(); 14380 } 14381 #pragma omp taskloop 14382 for (int i = 0; i < 10; ++i) { 14383 #pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}} 14384 bar(); 14385 } 14386 #pragma omp taskloop 14387 for (int i = 0; i < 10; ++i) { 14388 #pragma omp taskwait 14389 bar(); 14390 } 14391 #pragma omp taskloop 14392 for (int i = 0; i < 10; ++i) { 14393 #pragma omp flush 14394 bar(); 14395 } 14396 #pragma omp taskloop 14397 for (int i = 0; i < 10; ++i) { 14398 #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?}} 14399 bar(); 14400 } 14401 #pragma omp taskloop 14402 for (int i = 0; i < 10; ++i) { 14403 #pragma omp atomic 14404 ++a; 14405 } 14406 #pragma omp taskloop 14407 for (int i = 0; i < 10; ++i) { 14408 #pragma omp target 14409 ++a; 14410 } 14411 #pragma omp taskloop 14412 for (int i = 0; i < 10; ++i) { 14413 #pragma omp target parallel 14414 ++a; 14415 } 14416 #pragma omp taskloop 14417 for (int i = 0; i < 10; ++i) { 14418 #pragma omp target parallel for 14419 for (int i = 0; i < 10; ++i) 14420 ; 14421 } 14422 #pragma omp taskloop 14423 for (int i = 0; i < 10; ++i) { 14424 #pragma omp target enter data map(to: a) 14425 ++a; 14426 } 14427 #pragma omp taskloop 14428 for (int i = 0; i < 10; ++i) { 14429 #pragma omp target exit data map(from: a) 14430 ++a; 14431 } 14432 #pragma omp taskloop 14433 for (int i = 0; i < 10; ++i) { 14434 #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?}} 14435 ++a; 14436 } 14437 #pragma omp taskloop 14438 for (int i = 0; i < 10; ++i) { 14439 #pragma omp taskloop 14440 for (int i = 0; i < 10; ++i) 14441 ++a; 14442 } 14443 #pragma omp taskloop 14444 for (int i = 0; i < 10; ++i) { 14445 #pragma omp target update to(a) 14446 ++a; 14447 } 14448 #pragma omp taskloop 14449 for (int i = 0; i < 10; ++i) { 14450 #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?}} 14451 for (int i = 0; i < 10; ++i) 14452 ; 14453 } 14454 #pragma omp taskloop 14455 for (int i = 0; i < 10; ++i) { 14456 #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?}} 14457 for (int i = 0; i < 10; ++i) 14458 ; 14459 } 14460 #pragma omp taskloop 14461 for (int i = 0; i < 10; ++i) { 14462 #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?}} 14463 for (int i = 0; i < 10; ++i) 14464 ; 14465 } 14466 #pragma omp taskloop 14467 for (int i = 0; i < 10; ++i) { 14468 #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?}} 14469 for (int i = 0; i < 10; ++i) 14470 ; 14471 } 14472 #pragma omp taskloop 14473 for (int i = 0; i < 10; ++i) { 14474 #pragma omp target simd // OK 14475 for (int i = 0; i < 10; ++i) 14476 ; 14477 } 14478 #pragma omp taskloop 14479 for (int i = 0; i < 10; ++i) { 14480 #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?}} 14481 for (int i = 0; i < 10; ++i) 14482 ; 14483 } 14484 #pragma omp taskloop 14485 for (int i = 0; i < 10; ++i) { 14486 #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?}} 14487 for (int i = 0; i < 10; ++i) 14488 ; 14489 } 14490 #pragma omp taskloop 14491 for (int i = 0; i < 10; ++i) { 14492 #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?}} 14493 for (int i = 0; i < 10; ++i) 14494 ; 14495 } 14496 #pragma omp taskloop 14497 for (int i = 0; i < 10; ++i) { 14498 #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?}} 14499 for (int i = 0; i < 10; ++i) 14500 ; 14501 } 14502 #pragma omp taskloop 14503 for (int i = 0; i < 10; ++i) { 14504 #pragma omp target teams // OK 14505 a++; 14506 } 14507 #pragma omp taskloop 14508 for (int i = 0; i < 10; ++i) { 14509 #pragma omp target teams distribute // OK 14510 for (int i = 0; i < 10; ++i) 14511 ; 14512 } 14513 #pragma omp taskloop 14514 for (int i = 0; i < 10; ++i) { 14515 #pragma omp target teams distribute parallel for // OK 14516 for (int i = 0; i < 10; ++i) 14517 ; 14518 } 14519 #pragma omp taskloop 14520 for (int i = 0; i < 10; ++i) { 14521 #pragma omp target teams distribute parallel for simd // OK 14522 for (int i = 0; i < 10; ++i) 14523 ; 14524 } 14525 #pragma omp taskloop 14526 for (int i = 0; i < 10; ++i) { 14527 #pragma omp target teams distribute simd // OK 14528 for (int i = 0; i < 10; ++i) 14529 ; 14530 } 14531 14532 // DISTRIBUTE DIRECTIVE 14533 #pragma omp target 14534 #pragma omp teams 14535 #pragma omp distribute 14536 for (int i = 0; i < 10; ++i) { 14537 #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?}} 14538 for (int i = 0; i < 10; ++i) 14539 ; 14540 } 14541 #pragma omp target 14542 #pragma omp teams 14543 #pragma omp distribute 14544 for (int i = 0; i < 10; ++i) { 14545 #pragma omp for 14546 for (int i = 0; i < 10; ++i) 14547 ; 14548 } 14549 #pragma omp target 14550 #pragma omp teams 14551 #pragma omp distribute 14552 for (int i = 0; i < 10; ++i) { 14553 #pragma omp simd 14554 for (int i = 0; i < 10; ++i) 14555 ; 14556 } 14557 #pragma omp target 14558 #pragma omp teams 14559 #pragma omp distribute 14560 for (int i = 0; i < 10; ++i) { 14561 #pragma omp for simd 14562 for (int i = 0; i < 10; ++i) 14563 ; 14564 } 14565 #pragma omp target 14566 #pragma omp teams 14567 #pragma omp distribute 14568 for (int i = 0; i < 10; ++i) { 14569 #pragma omp parallel 14570 for (int i = 0; i < 10; ++i) 14571 ; 14572 } 14573 #pragma omp target 14574 #pragma omp teams 14575 #pragma omp distribute 14576 for (int i = 0; i < 10; ++i) { 14577 #pragma omp sections 14578 { 14579 bar(); 14580 } 14581 } 14582 #pragma omp target 14583 #pragma omp teams 14584 #pragma omp distribute 14585 for (int i = 0; i < 10; ++i) { 14586 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 14587 { 14588 bar(); 14589 } 14590 } 14591 #pragma omp target 14592 #pragma omp teams 14593 #pragma omp distribute 14594 for (int i = 0; i < 10; ++i) { 14595 #pragma omp single 14596 { 14597 bar(); 14598 } 14599 } 14600 #pragma omp target 14601 #pragma omp teams 14602 #pragma omp distribute 14603 for (int i = 0; i < 10; ++i) { 14604 #pragma omp master 14605 { 14606 bar(); 14607 } 14608 } 14609 #pragma omp target 14610 #pragma omp teams 14611 #pragma omp distribute 14612 for (int i = 0; i < 10; ++i) { 14613 #pragma omp critical 14614 { 14615 bar(); 14616 } 14617 } 14618 #pragma omp target 14619 #pragma omp teams 14620 #pragma omp distribute 14621 for (int i = 0; i < 10; ++i) { 14622 #pragma omp parallel 14623 { 14624 #pragma omp single 14625 { 14626 bar(); 14627 } 14628 } 14629 } 14630 #pragma omp target 14631 #pragma omp teams 14632 #pragma omp distribute 14633 for (int i = 0; i < 10; ++i) { 14634 #pragma omp parallel for 14635 for (int i = 0; i < 10; ++i) 14636 ; 14637 } 14638 #pragma omp target 14639 #pragma omp teams 14640 #pragma omp distribute 14641 for (int i = 0; i < 10; ++i) { 14642 #pragma omp parallel for simd 14643 for (int i = 0; i < 10; ++i) 14644 ; 14645 } 14646 #pragma omp target 14647 #pragma omp teams 14648 #pragma omp distribute 14649 for (int i = 0; i < 10; ++i) { 14650 #pragma omp parallel sections 14651 { 14652 bar(); 14653 } 14654 } 14655 #pragma omp target 14656 #pragma omp teams 14657 #pragma omp distribute 14658 for (int i = 0; i < 10; ++i) { 14659 #pragma omp task 14660 { 14661 bar(); 14662 } 14663 } 14664 #pragma omp target 14665 #pragma omp teams 14666 #pragma omp distribute 14667 for (int i = 0; i < 10; ++i) { 14668 #pragma omp taskyield 14669 bar(); 14670 } 14671 #pragma omp target 14672 #pragma omp teams 14673 #pragma omp distribute 14674 for (int i = 0; i < 10; ++i) { 14675 #pragma omp barrier 14676 bar(); 14677 } 14678 #pragma omp target 14679 #pragma omp teams 14680 #pragma omp distribute 14681 for (int i = 0; i < 10; ++i) { 14682 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 14683 bar(); 14684 } 14685 #pragma omp target 14686 #pragma omp teams 14687 #pragma omp distribute 14688 for (int i = 0; i < 10; ++i) { 14689 #pragma omp taskwait 14690 bar(); 14691 } 14692 #pragma omp target 14693 #pragma omp teams 14694 #pragma omp distribute 14695 for (int i = 0; i < 10; ++i) { 14696 #pragma omp flush 14697 bar(); 14698 } 14699 #pragma omp target 14700 #pragma omp teams 14701 #pragma omp distribute 14702 for (int i = 0; i < 10; ++i) { 14703 #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?}} 14704 bar(); 14705 } 14706 #pragma omp target 14707 #pragma omp teams 14708 #pragma omp distribute 14709 for (int i = 0; i < 10; ++i) { 14710 #pragma omp atomic 14711 ++a; 14712 } 14713 #pragma omp target 14714 #pragma omp teams 14715 #pragma omp distribute 14716 for (int i = 0; i < 10; ++i) { 14717 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14718 ++a; 14719 } 14720 #pragma omp target 14721 #pragma omp teams 14722 #pragma omp distribute 14723 for (int i = 0; i < 10; ++i) { 14724 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14725 ++a; 14726 } 14727 #pragma omp target 14728 #pragma omp teams 14729 #pragma omp distribute 14730 for (int i = 0; i < 10; ++i) { 14731 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14732 for (int i = 0; i < 10; ++i) 14733 ; 14734 } 14735 #pragma omp target 14736 #pragma omp teams 14737 #pragma omp distribute 14738 for (int i = 0; i < 10; ++i) { 14739 #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?}} 14740 ++a; 14741 } 14742 #pragma omp target 14743 #pragma omp teams 14744 #pragma omp distribute 14745 for (int i = 0; i < 10; ++i) { 14746 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14747 ++a; 14748 } 14749 #pragma omp target 14750 #pragma omp teams 14751 #pragma omp distribute 14752 for (int i = 0; i < 10; ++i) { 14753 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14754 ++a; 14755 } 14756 #pragma omp target 14757 #pragma omp teams 14758 #pragma omp distribute 14759 for (int i = 0; i < 10; ++i) { 14760 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14761 ++a; 14762 } 14763 #pragma omp target 14764 #pragma omp teams 14765 #pragma omp distribute 14766 for (int i = 0; i < 10; ++i) { 14767 #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?}} 14768 for (int i = 0; i < 10; ++i) 14769 ++a; 14770 } 14771 #pragma omp target 14772 #pragma omp teams 14773 #pragma omp distribute 14774 for (int i = 0; i < 10; ++i) { 14775 #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?}} 14776 for (int i = 0; i < 10; ++i) 14777 ++a; 14778 } 14779 #pragma omp target 14780 #pragma omp teams 14781 #pragma omp distribute 14782 for (int i = 0; i < 10; ++i) { 14783 #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?}} 14784 for (int i = 0; i < 10; ++i) 14785 ++a; 14786 } 14787 #pragma omp target 14788 #pragma omp teams 14789 #pragma omp distribute 14790 for (int i = 0; i < 10; ++i) { 14791 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14792 for (int i = 0; i < 10; ++i) 14793 ++a; 14794 } 14795 #pragma omp target 14796 #pragma omp teams 14797 #pragma omp distribute 14798 for (int i = 0; i < 10; ++i) { 14799 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14800 for (int i = 0; i < 10; ++i) 14801 ++a; 14802 } 14803 #pragma omp target 14804 #pragma omp teams 14805 #pragma omp distribute 14806 for (int i = 0; i < 10; ++i) { 14807 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14808 for (int i = 0; i < 10; ++i) 14809 ++a; 14810 } 14811 #pragma omp target 14812 #pragma omp teams 14813 #pragma omp distribute 14814 for (int i = 0; i < 10; ++i) { 14815 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14816 for (int i = 0; i < 10; ++i) 14817 ++a; 14818 } 14819 #pragma omp target 14820 #pragma omp teams 14821 #pragma omp distribute 14822 for (int i = 0; i < 10; ++i) { 14823 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14824 for (int i = 0; i < 10; ++i) 14825 ++a; 14826 } 14827 #pragma omp target 14828 #pragma omp teams 14829 #pragma omp distribute 14830 for (int i = 0; i < 10; ++i) { 14831 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14832 for (int i = 0; i < 10; ++i) 14833 ++a; 14834 } 14835 #pragma omp target 14836 #pragma omp teams 14837 #pragma omp distribute 14838 for (int i = 0; i < 10; ++i) { 14839 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14840 for (int i = 0; i < 10; ++i) 14841 ++a; 14842 } 14843 #pragma omp target 14844 #pragma omp teams 14845 #pragma omp distribute 14846 for (int i = 0; i < 10; ++i) { 14847 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14848 for (int i = 0; i < 10; ++i) 14849 ++a; 14850 } 14851 14852 // DISTRIBUTE PARALLEL FOR DIRECTIVE 14853 #pragma omp target 14854 #pragma omp teams 14855 #pragma omp distribute parallel for 14856 for (int i = 0; i < 10; ++i) { 14857 #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?}} 14858 for (int i = 0; i < 10; ++i) 14859 ; 14860 } 14861 14862 #pragma omp target 14863 #pragma omp teams 14864 #pragma omp distribute parallel for 14865 for (int i = 0; i < 10; ++i) { 14866 #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?}} 14867 for (int i = 0; i < 10; ++i) 14868 ; 14869 } 14870 #pragma omp target 14871 #pragma omp teams 14872 #pragma omp distribute parallel for 14873 for (int i = 0; i < 10; ++i) { 14874 #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?}} 14875 for (int i = 0; i < 10; ++i) 14876 ; 14877 } 14878 #pragma omp target 14879 #pragma omp teams 14880 #pragma omp distribute parallel for 14881 for (int i = 0; i < 10; ++i) { 14882 #pragma omp simd 14883 for (int i = 0; i < 10; ++i) 14884 ; 14885 } 14886 #pragma omp target 14887 #pragma omp teams 14888 #pragma omp distribute parallel for 14889 for (int i = 0; i < 10; ++i) { 14890 #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?}} 14891 for (int i = 0; i < 10; ++i) 14892 ; 14893 } 14894 #pragma omp target 14895 #pragma omp teams 14896 #pragma omp distribute parallel for 14897 for (int i = 0; i < 10; ++i) { 14898 #pragma omp parallel 14899 for (int i = 0; i < 10; ++i) 14900 ; 14901 } 14902 #pragma omp target 14903 #pragma omp teams 14904 #pragma omp distribute parallel for 14905 for (int i = 0; i < 10; ++i) { 14906 #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?}} 14907 { 14908 bar(); 14909 } 14910 } 14911 #pragma omp target 14912 #pragma omp teams 14913 #pragma omp distribute parallel for 14914 for (int i = 0; i < 10; ++i) { 14915 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 14916 { 14917 bar(); 14918 } 14919 } 14920 #pragma omp target 14921 #pragma omp teams 14922 #pragma omp distribute parallel for 14923 for (int i = 0; i < 10; ++i) { 14924 #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?}} 14925 { 14926 bar(); 14927 } 14928 } 14929 #pragma omp target 14930 #pragma omp teams 14931 #pragma omp distribute parallel for 14932 for (int i = 0; i < 10; ++i) { 14933 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14934 { 14935 bar(); 14936 } 14937 } 14938 #pragma omp target 14939 #pragma omp teams 14940 #pragma omp distribute parallel for 14941 for (int i = 0; i < 10; ++i) { 14942 #pragma omp critical 14943 { 14944 bar(); 14945 } 14946 } 14947 #pragma omp target 14948 #pragma omp teams 14949 #pragma omp distribute parallel for 14950 for (int i = 0; i < 10; ++i) { 14951 #pragma omp parallel 14952 { 14953 #pragma omp single 14954 { 14955 bar(); 14956 } 14957 } 14958 } 14959 #pragma omp target 14960 #pragma omp teams 14961 #pragma omp distribute parallel for 14962 for (int i = 0; i < 10; ++i) { 14963 #pragma omp parallel for 14964 for (int i = 0; i < 10; ++i) 14965 ; 14966 } 14967 #pragma omp target 14968 #pragma omp teams 14969 #pragma omp distribute parallel for 14970 for (int i = 0; i < 10; ++i) { 14971 #pragma omp parallel for simd 14972 for (int i = 0; i < 10; ++i) 14973 ; 14974 } 14975 #pragma omp target 14976 #pragma omp teams 14977 #pragma omp distribute parallel for 14978 for (int i = 0; i < 10; ++i) { 14979 #pragma omp parallel sections 14980 { 14981 bar(); 14982 } 14983 } 14984 #pragma omp target 14985 #pragma omp teams 14986 #pragma omp distribute parallel for 14987 for (int i = 0; i < 10; ++i) { 14988 #pragma omp task 14989 { 14990 bar(); 14991 } 14992 } 14993 #pragma omp target 14994 #pragma omp teams 14995 #pragma omp distribute parallel for 14996 for (int i = 0; i < 10; ++i) { 14997 #pragma omp taskyield 14998 bar(); 14999 } 15000 #pragma omp target 15001 #pragma omp teams 15002 #pragma omp distribute parallel for 15003 for (int i = 0; i < 10; ++i) { 15004 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15005 bar(); 15006 } 15007 #pragma omp target 15008 #pragma omp teams 15009 #pragma omp distribute parallel for 15010 for (int i = 0; i < 10; ++i) { 15011 #pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 15012 bar(); 15013 } 15014 #pragma omp target 15015 #pragma omp teams 15016 #pragma omp distribute parallel for 15017 for (int i = 0; i < 10; ++i) { 15018 #pragma omp taskwait 15019 bar(); 15020 } 15021 #pragma omp target 15022 #pragma omp teams 15023 #pragma omp distribute parallel for 15024 for (int i = 0; i < 10; ++i) { 15025 #pragma omp flush 15026 bar(); 15027 } 15028 #pragma omp target 15029 #pragma omp teams 15030 #pragma omp distribute parallel for 15031 for (int i = 0; i < 10; ++i) { 15032 #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?}} 15033 bar(); 15034 } 15035 #pragma omp target 15036 #pragma omp teams 15037 #pragma omp distribute parallel for 15038 for (int i = 0; i < 10; ++i) { 15039 #pragma omp atomic 15040 ++a; 15041 } 15042 #pragma omp target 15043 #pragma omp teams 15044 #pragma omp distribute parallel for 15045 for (int i = 0; i < 10; ++i) { 15046 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15047 ++a; 15048 } 15049 #pragma omp target 15050 #pragma omp teams 15051 #pragma omp distribute parallel for 15052 for (int i = 0; i < 10; ++i) { 15053 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15054 ++a; 15055 } 15056 #pragma omp target 15057 #pragma omp teams 15058 #pragma omp distribute parallel for 15059 for (int i = 0; i < 10; ++i) { 15060 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15061 for (int i = 0; i < 10; ++i) 15062 ; 15063 } 15064 #pragma omp target 15065 #pragma omp teams 15066 #pragma omp distribute parallel for 15067 for (int i = 0; i < 10; ++i) { 15068 #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?}} 15069 ++a; 15070 } 15071 #pragma omp target 15072 #pragma omp teams 15073 #pragma omp distribute parallel for 15074 for (int i = 0; i < 10; ++i) { 15075 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15076 ++a; 15077 } 15078 #pragma omp target 15079 #pragma omp teams 15080 #pragma omp distribute parallel for 15081 for (int i = 0; i < 10; ++i) { 15082 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15083 ++a; 15084 } 15085 #pragma omp target 15086 #pragma omp teams 15087 #pragma omp distribute parallel for 15088 for (int i = 0; i < 10; ++i) { 15089 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15090 ++a; 15091 } 15092 #pragma omp target 15093 #pragma omp teams 15094 #pragma omp distribute parallel for 15095 for (int i = 0; i < 10; ++i) { 15096 #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?}} 15097 for (int i = 0; i < 10; ++i) 15098 ++a; 15099 } 15100 #pragma omp target 15101 #pragma omp teams 15102 #pragma omp distribute parallel for 15103 for (int i = 0; i < 10; ++i) { 15104 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15105 for (int i = 0; i < 10; ++i) 15106 ++a; 15107 } 15108 #pragma omp target 15109 #pragma omp teams 15110 #pragma omp distribute parallel for 15111 for (int i = 0; i < 10; ++i) { 15112 #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?}} 15113 for (int i = 0; i < 10; ++i) 15114 ++a; 15115 } 15116 #pragma omp target 15117 #pragma omp teams 15118 #pragma omp distribute parallel for 15119 for (int i = 0; i < 10; ++i) { 15120 #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?}} 15121 for (int i = 0; i < 10; ++i) 15122 ++a; 15123 } 15124 #pragma omp target 15125 #pragma omp teams 15126 #pragma omp distribute parallel for 15127 for (int i = 0; i < 10; ++i) { 15128 #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?}} 15129 for (int i = 0; i < 10; ++i) 15130 ++a; 15131 } 15132 #pragma omp target 15133 #pragma omp teams 15134 #pragma omp distribute parallel for 15135 for (int i = 0; i < 10; ++i) { 15136 #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?}} 15137 for (int i = 0; i < 10; ++i) 15138 ++a; 15139 } 15140 #pragma omp target 15141 #pragma omp teams 15142 #pragma omp distribute parallel for 15143 for (int i = 0; i < 10; ++i) { 15144 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15145 ++a; 15146 } 15147 #pragma omp target 15148 #pragma omp teams 15149 #pragma omp distribute parallel for 15150 for (int i = 0; i < 10; ++i) { 15151 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15152 for (int i = 0; i < 10; ++i) 15153 ++a; 15154 } 15155 #pragma omp target 15156 #pragma omp teams 15157 #pragma omp distribute parallel for 15158 for (int i = 0; i < 10; ++i) { 15159 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15160 for (int i = 0; i < 10; ++i) 15161 ++a; 15162 } 15163 #pragma omp target 15164 #pragma omp teams 15165 #pragma omp distribute parallel for 15166 for (int i = 0; i < 10; ++i) { 15167 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15168 for (int i = 0; i < 10; ++i) 15169 ++a; 15170 } 15171 #pragma omp target 15172 #pragma omp teams 15173 #pragma omp distribute parallel for 15174 for (int i = 0; i < 10; ++i) { 15175 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15176 for (int i = 0; i < 10; ++i) 15177 ++a; 15178 } 15179 15180 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 15181 #pragma omp target 15182 #pragma omp teams 15183 #pragma omp distribute parallel for simd 15184 for (int i = 0; i < 10; ++i) { 15185 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15186 for (int i = 0; i < 10; ++i) 15187 ; 15188 } 15189 #pragma omp target 15190 #pragma omp teams 15191 #pragma omp distribute parallel for simd 15192 for (int i = 0; i < 10; ++i) { 15193 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15194 for (int i = 0; i < 10; ++i) 15195 ; 15196 } 15197 #pragma omp target 15198 #pragma omp teams 15199 #pragma omp distribute parallel for simd 15200 for (int i = 0; i < 10; ++i) { 15201 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15202 for (int i = 0; i < 10; ++i) 15203 ; 15204 } 15205 #pragma omp target 15206 #pragma omp teams 15207 #pragma omp distribute parallel for simd 15208 for (int i = 0; i < 10; ++i) { 15209 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15210 for (int i = 0; i < 10; ++i) 15211 ; 15212 } 15213 #pragma omp target 15214 #pragma omp teams 15215 #pragma omp distribute parallel for simd 15216 for (int i = 0; i < 10; ++i) { 15217 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15218 for (int i = 0; i < 10; ++i) 15219 ; 15220 } 15221 #pragma omp target 15222 #pragma omp teams 15223 #pragma omp distribute parallel for simd 15224 for (int i = 0; i < 10; ++i) { 15225 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15226 for (int i = 0; i < 10; ++i) 15227 ; 15228 } 15229 #pragma omp target 15230 #pragma omp teams 15231 #pragma omp distribute parallel for simd 15232 for (int i = 0; i < 10; ++i) { 15233 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15234 { 15235 bar(); 15236 } 15237 } 15238 #pragma omp target 15239 #pragma omp teams 15240 #pragma omp distribute parallel for simd 15241 for (int i = 0; i < 10; ++i) { 15242 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15243 { 15244 bar(); 15245 } 15246 } 15247 #pragma omp target 15248 #pragma omp teams 15249 #pragma omp distribute parallel for simd 15250 for (int i = 0; i < 10; ++i) { 15251 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15252 { 15253 bar(); 15254 } 15255 } 15256 #pragma omp target 15257 #pragma omp teams 15258 #pragma omp distribute parallel for simd 15259 for (int i = 0; i < 10; ++i) { 15260 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15261 { 15262 bar(); 15263 } 15264 } 15265 #pragma omp target 15266 #pragma omp teams 15267 #pragma omp distribute parallel for simd 15268 for (int i = 0; i < 10; ++i) { 15269 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15270 { 15271 bar(); 15272 } 15273 } 15274 #pragma omp target 15275 #pragma omp teams 15276 #pragma omp distribute parallel for simd 15277 for (int i = 0; i < 10; ++i) { 15278 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15279 { 15280 #pragma omp single 15281 { 15282 bar(); 15283 } 15284 } 15285 } 15286 #pragma omp target 15287 #pragma omp teams 15288 #pragma omp distribute parallel for simd 15289 for (int i = 0; i < 10; ++i) { 15290 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15291 for (int i = 0; i < 10; ++i) 15292 ; 15293 } 15294 #pragma omp target 15295 #pragma omp teams 15296 #pragma omp distribute parallel for simd 15297 for (int i = 0; i < 10; ++i) { 15298 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15299 for (int i = 0; i < 10; ++i) 15300 ; 15301 } 15302 #pragma omp target 15303 #pragma omp teams 15304 #pragma omp distribute parallel for simd 15305 for (int i = 0; i < 10; ++i) { 15306 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15307 { 15308 bar(); 15309 } 15310 } 15311 #pragma omp target 15312 #pragma omp teams 15313 #pragma omp distribute parallel for simd 15314 for (int i = 0; i < 10; ++i) { 15315 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15316 { 15317 bar(); 15318 } 15319 } 15320 #pragma omp target 15321 #pragma omp teams 15322 #pragma omp distribute parallel for simd 15323 for (int i = 0; i < 10; ++i) { 15324 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15325 bar(); 15326 } 15327 #pragma omp target 15328 #pragma omp teams 15329 #pragma omp distribute parallel for simd 15330 for (int i = 0; i < 10; ++i) { 15331 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15332 bar(); 15333 } 15334 #pragma omp target 15335 #pragma omp teams 15336 #pragma omp distribute parallel for simd 15337 for (int i = 0; i < 10; ++i) { 15338 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15339 bar(); 15340 } 15341 #pragma omp target 15342 #pragma omp teams 15343 #pragma omp distribute parallel for simd 15344 for (int i = 0; i < 10; ++i) { 15345 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15346 bar(); 15347 } 15348 #pragma omp target 15349 #pragma omp teams 15350 #pragma omp distribute parallel for simd 15351 for (int i = 0; i < 10; ++i) { 15352 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15353 bar(); 15354 } 15355 #pragma omp target 15356 #pragma omp teams 15357 #pragma omp distribute parallel for simd 15358 for (int i = 0; i < 10; ++i) { 15359 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15360 bar(); 15361 } 15362 #pragma omp target 15363 #pragma omp teams 15364 #pragma omp distribute parallel for simd 15365 for (int i = 0; i < 10; ++i) { 15366 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15367 ++a; 15368 } 15369 #pragma omp target 15370 #pragma omp teams 15371 #pragma omp distribute parallel for simd 15372 for (int i = 0; i < 10; ++i) { 15373 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15374 ++a; 15375 } 15376 #pragma omp target 15377 #pragma omp teams 15378 #pragma omp distribute parallel for simd 15379 for (int i = 0; i < 10; ++i) { 15380 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15381 ++a; 15382 } 15383 #pragma omp target 15384 #pragma omp teams 15385 #pragma omp distribute parallel for simd 15386 for (int i = 0; i < 10; ++i) { 15387 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15388 ++a; 15389 } 15390 #pragma omp target 15391 #pragma omp teams 15392 #pragma omp distribute parallel for simd 15393 for (int i = 0; i < 10; ++i) { 15394 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15395 ++a; 15396 } 15397 #pragma omp target 15398 #pragma omp teams 15399 #pragma omp distribute parallel for simd 15400 for (int i = 0; i < 10; ++i) { 15401 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15402 ++a; 15403 } 15404 #pragma omp target 15405 #pragma omp teams 15406 #pragma omp distribute parallel for simd 15407 for (int i = 0; i < 10; ++i) { 15408 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15409 ++a; 15410 } 15411 #pragma omp target 15412 #pragma omp teams 15413 #pragma omp distribute parallel for simd 15414 for (int i = 0; i < 10; ++i) { 15415 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15416 for (int i = 0; i < 10; ++i) 15417 ; 15418 } 15419 #pragma omp target 15420 #pragma omp teams 15421 #pragma omp distribute parallel for simd 15422 for (int i = 0; i < 10; ++i) { 15423 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15424 for (int i = 0; i < 10; ++i) 15425 ; 15426 } 15427 #pragma omp target 15428 #pragma omp teams 15429 #pragma omp distribute parallel for simd 15430 for (int i = 0; i < 10; ++i) { 15431 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15432 for (int i = 0; i < 10; ++i) 15433 ; 15434 } 15435 #pragma omp target 15436 #pragma omp teams 15437 #pragma omp distribute parallel for simd 15438 for (int i = 0; i < 10; ++i) { 15439 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15440 for (int i = 0; i < 10; ++i) 15441 ; 15442 } 15443 #pragma omp target 15444 #pragma omp teams 15445 #pragma omp distribute parallel for simd 15446 for (int i = 0; i < 10; ++i) { 15447 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15448 for (int i = 0; i < 10; ++i) 15449 ; 15450 } 15451 #pragma omp target 15452 #pragma omp teams 15453 #pragma omp distribute parallel for simd 15454 for (int i = 0; i < 10; ++i) { 15455 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15456 for (int i = 0; i < 10; ++i) 15457 ; 15458 } 15459 #pragma omp target 15460 #pragma omp teams 15461 #pragma omp distribute parallel for simd 15462 for (int i = 0; i < 10; ++i) { 15463 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15464 a++; 15465 } 15466 #pragma omp target 15467 #pragma omp teams 15468 #pragma omp distribute parallel for simd 15469 for (int i = 0; i < 10; ++i) { 15470 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15471 for (int i = 0; i < 10; ++i) 15472 ; 15473 } 15474 #pragma omp target 15475 #pragma omp teams 15476 #pragma omp distribute parallel for simd 15477 for (int i = 0; i < 10; ++i) { 15478 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15479 for (int i = 0; i < 10; ++i) 15480 ; 15481 } 15482 #pragma omp target 15483 #pragma omp teams 15484 #pragma omp distribute parallel for simd 15485 for (int i = 0; i < 10; ++i) { 15486 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15487 for (int i = 0; i < 10; ++i) 15488 ; 15489 } 15490 #pragma omp target 15491 #pragma omp teams 15492 #pragma omp distribute parallel for simd 15493 for (int i = 0; i < 10; ++i) { 15494 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15495 for (int i = 0; i < 10; ++i) 15496 ; 15497 } 15498 15499 // DISTRIBUTE SIMD DIRECTIVE 15500 #pragma omp target 15501 #pragma omp teams 15502 #pragma omp distribute simd 15503 for (int i = 0; i < 10; ++i) { 15504 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15505 for (int i = 0; i < 10; ++i) 15506 ; 15507 } 15508 #pragma omp target 15509 #pragma omp teams 15510 #pragma omp distribute simd 15511 for (int i = 0; i < 10; ++i) { 15512 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15513 for (int i = 0; i < 10; ++i) 15514 ; 15515 } 15516 #pragma omp target 15517 #pragma omp teams 15518 #pragma omp distribute simd 15519 for (int i = 0; i < 10; ++i) { 15520 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15521 for (int i = 0; i < 10; ++i) 15522 ; 15523 } 15524 #pragma omp target 15525 #pragma omp teams 15526 #pragma omp distribute simd 15527 for (int i = 0; i < 10; ++i) { 15528 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15529 for (int i = 0; i < 10; ++i) 15530 ; 15531 } 15532 #pragma omp target 15533 #pragma omp teams 15534 #pragma omp distribute simd 15535 for (int i = 0; i < 10; ++i) { 15536 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15537 for (int i = 0; i < 10; ++i) 15538 ; 15539 } 15540 #pragma omp target 15541 #pragma omp teams 15542 #pragma omp distribute simd 15543 for (int i = 0; i < 10; ++i) { 15544 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15545 for (int i = 0; i < 10; ++i) 15546 ; 15547 } 15548 #pragma omp target 15549 #pragma omp teams 15550 #pragma omp distribute simd 15551 for (int i = 0; i < 10; ++i) { 15552 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15553 { 15554 bar(); 15555 } 15556 } 15557 #pragma omp target 15558 #pragma omp teams 15559 #pragma omp distribute simd 15560 for (int i = 0; i < 10; ++i) { 15561 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15562 { 15563 bar(); 15564 } 15565 } 15566 #pragma omp target 15567 #pragma omp teams 15568 #pragma omp distribute simd 15569 for (int i = 0; i < 10; ++i) { 15570 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15571 { 15572 bar(); 15573 } 15574 } 15575 #pragma omp target 15576 #pragma omp teams 15577 #pragma omp distribute simd 15578 for (int i = 0; i < 10; ++i) { 15579 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15580 { 15581 bar(); 15582 } 15583 } 15584 #pragma omp target 15585 #pragma omp teams 15586 #pragma omp distribute simd 15587 for (int i = 0; i < 10; ++i) { 15588 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15589 { 15590 bar(); 15591 } 15592 } 15593 #pragma omp target 15594 #pragma omp teams 15595 #pragma omp distribute simd 15596 for (int i = 0; i < 10; ++i) { 15597 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15598 { 15599 #pragma omp single 15600 { 15601 bar(); 15602 } 15603 } 15604 } 15605 #pragma omp target 15606 #pragma omp teams 15607 #pragma omp distribute simd 15608 for (int i = 0; i < 10; ++i) { 15609 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15610 for (int i = 0; i < 10; ++i) 15611 ; 15612 } 15613 #pragma omp target 15614 #pragma omp teams 15615 #pragma omp distribute simd 15616 for (int i = 0; i < 10; ++i) { 15617 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15618 for (int i = 0; i < 10; ++i) 15619 ; 15620 } 15621 #pragma omp target 15622 #pragma omp teams 15623 #pragma omp distribute simd 15624 for (int i = 0; i < 10; ++i) { 15625 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15626 { 15627 bar(); 15628 } 15629 } 15630 #pragma omp target 15631 #pragma omp teams 15632 #pragma omp distribute simd 15633 for (int i = 0; i < 10; ++i) { 15634 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15635 { 15636 bar(); 15637 } 15638 } 15639 #pragma omp target 15640 #pragma omp teams 15641 #pragma omp distribute simd 15642 for (int i = 0; i < 10; ++i) { 15643 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15644 bar(); 15645 } 15646 #pragma omp target 15647 #pragma omp teams 15648 #pragma omp distribute simd 15649 for (int i = 0; i < 10; ++i) { 15650 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15651 bar(); 15652 } 15653 #pragma omp target 15654 #pragma omp teams 15655 #pragma omp distribute simd 15656 for (int i = 0; i < 10; ++i) { 15657 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15658 bar(); 15659 } 15660 #pragma omp target 15661 #pragma omp teams 15662 #pragma omp distribute simd 15663 for (int i = 0; i < 10; ++i) { 15664 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15665 bar(); 15666 } 15667 #pragma omp target 15668 #pragma omp teams 15669 #pragma omp distribute simd 15670 for (int i = 0; i < 10; ++i) { 15671 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15672 bar(); 15673 } 15674 #pragma omp target 15675 #pragma omp teams 15676 #pragma omp distribute simd 15677 for (int i = 0; i < 10; ++i) { 15678 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15679 bar(); 15680 } 15681 #pragma omp target 15682 #pragma omp teams 15683 #pragma omp distribute simd 15684 for (int i = 0; i < 10; ++i) { 15685 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15686 ++a; 15687 } 15688 #pragma omp target 15689 #pragma omp teams 15690 #pragma omp distribute simd 15691 for (int i = 0; i < 10; ++i) { 15692 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15693 ++a; 15694 } 15695 #pragma omp target 15696 #pragma omp teams 15697 #pragma omp distribute simd 15698 for (int i = 0; i < 10; ++i) { 15699 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15700 ++a; 15701 } 15702 #pragma omp target 15703 #pragma omp teams 15704 #pragma omp distribute simd 15705 for (int i = 0; i < 10; ++i) { 15706 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15707 ++a; 15708 } 15709 #pragma omp target 15710 #pragma omp teams 15711 #pragma omp distribute simd 15712 for (int i = 0; i < 10; ++i) { 15713 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15714 ++a; 15715 } 15716 #pragma omp target 15717 #pragma omp teams 15718 #pragma omp distribute simd 15719 for (int i = 0; i < 10; ++i) { 15720 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15721 ++a; 15722 } 15723 #pragma omp target 15724 #pragma omp teams 15725 #pragma omp distribute simd 15726 for (int i = 0; i < 10; ++i) { 15727 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15728 ++a; 15729 } 15730 #pragma omp target 15731 #pragma omp teams 15732 #pragma omp distribute simd 15733 for (int i = 0; i < 10; ++i) { 15734 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15735 for (int i = 0; i < 10; ++i) 15736 ; 15737 } 15738 #pragma omp target 15739 #pragma omp teams 15740 #pragma omp distribute simd 15741 for (int i = 0; i < 10; ++i) { 15742 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15743 for (int i = 0; i < 10; ++i) 15744 ; 15745 } 15746 #pragma omp target 15747 #pragma omp teams 15748 #pragma omp distribute simd 15749 for (int i = 0; i < 10; ++i) { 15750 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15751 for (int i = 0; i < 10; ++i) 15752 ; 15753 } 15754 #pragma omp target 15755 #pragma omp teams 15756 #pragma omp distribute simd 15757 for (int i = 0; i < 10; ++i) { 15758 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15759 for (int i = 0; i < 10; ++i) 15760 ; 15761 } 15762 #pragma omp target 15763 #pragma omp teams 15764 #pragma omp distribute simd 15765 for (int i = 0; i < 10; ++i) { 15766 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15767 for (int i = 0; i < 10; ++i) 15768 ; 15769 } 15770 #pragma omp target 15771 #pragma omp teams 15772 #pragma omp distribute simd 15773 for (int i = 0; i < 10; ++i) { 15774 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15775 for (int i = 0; i < 10; ++i) 15776 ; 15777 } 15778 #pragma omp target 15779 #pragma omp teams 15780 #pragma omp distribute simd 15781 for (int i = 0; i < 10; ++i) { 15782 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15783 a++; 15784 } 15785 #pragma omp target 15786 #pragma omp teams 15787 #pragma omp distribute simd 15788 for (int i = 0; i < 10; ++i) { 15789 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15790 for (int i = 0; i < 10; ++i) 15791 ; 15792 } 15793 #pragma omp target 15794 #pragma omp teams 15795 #pragma omp distribute simd 15796 for (int i = 0; i < 10; ++i) { 15797 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15798 for (int i = 0; i < 10; ++i) 15799 ; 15800 } 15801 #pragma omp target 15802 #pragma omp teams 15803 #pragma omp distribute simd 15804 for (int i = 0; i < 10; ++i) { 15805 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15806 for (int i = 0; i < 10; ++i) 15807 ; 15808 } 15809 #pragma omp target 15810 #pragma omp teams 15811 #pragma omp distribute simd 15812 for (int i = 0; i < 10; ++i) { 15813 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15814 for (int i = 0; i < 10; ++i) 15815 ; 15816 } 15817 15818 // TARGET SIMD DIRECTIVE 15819 #pragma omp target simd 15820 for (int i = 0; i < 10; ++i) { 15821 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15822 for (int i = 0; i < 10; ++i) 15823 ; 15824 } 15825 #pragma omp target simd 15826 for (int i = 0; i < 10; ++i) { 15827 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15828 for (int i = 0; i < 10; ++i) 15829 ; 15830 } 15831 #pragma omp target simd 15832 for (int i = 0; i < 10; ++i) { 15833 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15834 for (int i = 0; i < 10; ++i) 15835 ; 15836 } 15837 #pragma omp target simd 15838 for (int i = 0; i < 10; ++i) { 15839 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15840 for (int i = 0; i < 10; ++i) 15841 ; 15842 } 15843 #pragma omp target simd 15844 for (int i = 0; i < 10; ++i) { 15845 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15846 for (int i = 0; i < 10; ++i) 15847 ; 15848 } 15849 #pragma omp target simd 15850 for (int i = 0; i < 10; ++i) { 15851 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15852 for (int i = 0; i < 10; ++i) 15853 ; 15854 } 15855 #pragma omp target simd 15856 for (int i = 0; i < 10; ++i) { 15857 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15858 { 15859 bar(); 15860 } 15861 } 15862 #pragma omp target simd 15863 for (int i = 0; i < 10; ++i) { 15864 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15865 { 15866 bar(); 15867 } 15868 } 15869 #pragma omp target simd 15870 for (int i = 0; i < 10; ++i) { 15871 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15872 { 15873 bar(); 15874 } 15875 } 15876 #pragma omp target simd 15877 for (int i = 0; i < 10; ++i) { 15878 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15879 { 15880 bar(); 15881 } 15882 } 15883 #pragma omp target simd 15884 for (int i = 0; i < 10; ++i) { 15885 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15886 { 15887 bar(); 15888 } 15889 } 15890 #pragma omp target simd 15891 for (int i = 0; i < 10; ++i) { 15892 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15893 { 15894 #pragma omp single 15895 { 15896 bar(); 15897 } 15898 } 15899 } 15900 #pragma omp target simd 15901 for (int i = 0; i < 10; ++i) { 15902 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15903 for (int i = 0; i < 10; ++i) 15904 ; 15905 } 15906 #pragma omp target simd 15907 for (int i = 0; i < 10; ++i) { 15908 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15909 for (int i = 0; i < 10; ++i) 15910 ; 15911 } 15912 #pragma omp target simd 15913 for (int i = 0; i < 10; ++i) { 15914 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15915 { 15916 bar(); 15917 } 15918 } 15919 #pragma omp target simd 15920 for (int i = 0; i < 10; ++i) { 15921 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15922 { 15923 bar(); 15924 } 15925 } 15926 #pragma omp target simd 15927 for (int i = 0; i < 10; ++i) { 15928 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15929 bar(); 15930 } 15931 #pragma omp target simd 15932 for (int i = 0; i < 10; ++i) { 15933 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15934 bar(); 15935 } 15936 #pragma omp target simd 15937 for (int i = 0; i < 10; ++i) { 15938 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 15939 bar(); 15940 } 15941 #pragma omp target simd 15942 for (int i = 0; i < 10; ++i) { 15943 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15944 bar(); 15945 } 15946 #pragma omp target simd 15947 for (int i = 0; i < 10; ++i) { 15948 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15949 bar(); 15950 } 15951 #pragma omp target simd 15952 for (int i = 0; i < 10; ++i) { 15953 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15954 bar(); 15955 } 15956 #pragma omp target simd 15957 for (int i = 0; i < 10; ++i) { 15958 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 15959 ++a; 15960 } 15961 #pragma omp target simd 15962 for (int i = 0; i < 10; ++i) { 15963 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15964 ++a; 15965 } 15966 #pragma omp target simd 15967 for (int i = 0; i < 10; ++i) { 15968 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15969 ++a; 15970 } 15971 #pragma omp target simd 15972 for (int i = 0; i < 10; ++i) { 15973 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15974 ++a; 15975 } 15976 #pragma omp target simd 15977 for (int i = 0; i < 10; ++i) { 15978 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15979 ++a; 15980 } 15981 #pragma omp target simd 15982 for (int i = 0; i < 10; ++i) { 15983 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15984 ++a; 15985 } 15986 #pragma omp target simd 15987 for (int i = 0; i < 10; ++i) { 15988 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15989 ++a; 15990 } 15991 #pragma omp target simd 15992 for (int i = 0; i < 10; ++i) { 15993 #pragma omp distribute 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 simd 15998 for (int i = 0; i < 10; ++i) { 15999 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16000 for (int i = 0; i < 10; ++i) 16001 ; 16002 } 16003 #pragma omp target simd 16004 for (int i = 0; i < 10; ++i) { 16005 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16006 for (int i = 0; i < 10; ++i) 16007 ; 16008 } 16009 #pragma omp target simd 16010 for (int i = 0; i < 10; ++i) { 16011 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16012 for (int i = 0; i < 10; ++i) 16013 ; 16014 } 16015 #pragma omp target simd 16016 for (int i = 0; i < 10; ++i) { 16017 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16018 for (int i = 0; i < 10; ++i) 16019 ; 16020 } 16021 #pragma omp target simd 16022 for (int i = 0; i < 10; ++i) { 16023 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16024 for (int i = 0; i < 10; ++i) 16025 ; 16026 } 16027 #pragma omp target simd 16028 for (int i = 0; i < 10; ++i) { 16029 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16030 a++; 16031 } 16032 #pragma omp target simd 16033 for (int i = 0; i < 10; ++i) { 16034 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16035 for (int i = 0; i < 10; ++i) 16036 ; 16037 } 16038 #pragma omp target simd 16039 for (int i = 0; i < 10; ++i) { 16040 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16041 for (int i = 0; i < 10; ++i) 16042 ; 16043 } 16044 #pragma omp target simd 16045 for (int i = 0; i < 10; ++i) { 16046 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16047 for (int i = 0; i < 10; ++i) 16048 ; 16049 } 16050 #pragma omp target simd 16051 for (int i = 0; i < 10; ++i) { 16052 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16053 for (int i = 0; i < 10; ++i) 16054 ; 16055 } 16056 16057 // TEAMS DISTRIBUTE DIRECTIVE 16058 #pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16059 for (int i = 0; i < 10; ++i) 16060 ; 16061 #pragma omp target 16062 #pragma omp teams distribute 16063 for (int i = 0; i < 10; ++i) { 16064 #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?}} 16065 for (int i = 0; i < 10; ++i) 16066 ; 16067 } 16068 #pragma omp target 16069 #pragma omp teams distribute 16070 for (int i = 0; i < 10; ++i) { 16071 #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?}} 16072 for (int i = 0; i < 10; ++i) 16073 ; 16074 } 16075 #pragma omp target 16076 #pragma omp teams distribute 16077 for (int i = 0; i < 10; ++i) { 16078 #pragma omp for // OK 16079 for (int i = 0; i < 10; ++i) 16080 ; 16081 } 16082 #pragma omp target 16083 #pragma omp teams distribute 16084 for (int i = 0; i < 10; ++i) { 16085 #pragma omp simd // OK 16086 for (int i = 0; i < 10; ++i) 16087 ; 16088 } 16089 #pragma omp target 16090 #pragma omp teams distribute 16091 for (int i = 0; i < 10; ++i) { 16092 #pragma omp for simd // OK 16093 for (int i = 0; i < 10; ++i) 16094 ; 16095 } 16096 #pragma omp target 16097 #pragma omp teams distribute 16098 for (int i = 0; i < 10; ++i) { 16099 #pragma omp parallel // OK 16100 for (int i = 0; i < 10; ++i) 16101 ; 16102 } 16103 #pragma omp target 16104 #pragma omp teams distribute 16105 for (int i = 0; i < 10; ++i) { 16106 #pragma omp sections // OK 16107 { 16108 bar(); 16109 } 16110 } 16111 #pragma omp target 16112 #pragma omp teams distribute 16113 for (int i = 0; i < 10; ++i) { 16114 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 16115 { 16116 bar(); 16117 } 16118 } 16119 #pragma omp target 16120 #pragma omp teams distribute 16121 for (int i = 0; i < 10; ++i) { 16122 #pragma omp single // OK 16123 { 16124 bar(); 16125 } 16126 } 16127 #pragma omp target 16128 #pragma omp teams distribute 16129 for (int i = 0; i < 10; ++i) { 16130 #pragma omp master // OK 16131 { 16132 bar(); 16133 } 16134 } 16135 #pragma omp target 16136 #pragma omp teams distribute 16137 for (int i = 0; i < 10; ++i) { 16138 #pragma omp critical // OK 16139 { 16140 bar(); 16141 } 16142 } 16143 #pragma omp target 16144 #pragma omp teams distribute 16145 for (int i = 0; i < 10; ++i) { 16146 #pragma omp parallel // OK 16147 { 16148 #pragma omp single 16149 { 16150 bar(); 16151 } 16152 } 16153 } 16154 #pragma omp target 16155 #pragma omp teams distribute 16156 for (int i = 0; i < 10; ++i) { 16157 #pragma omp parallel for // OK 16158 for (int i = 0; i < 10; ++i) 16159 ; 16160 } 16161 #pragma omp target 16162 #pragma omp teams distribute 16163 for (int i = 0; i < 10; ++i) { 16164 #pragma omp parallel for simd // OK 16165 for (int i = 0; i < 10; ++i) 16166 ; 16167 } 16168 #pragma omp target 16169 #pragma omp teams distribute 16170 for (int i = 0; i < 10; ++i) { 16171 #pragma omp parallel sections // OK 16172 { 16173 bar(); 16174 } 16175 } 16176 #pragma omp target 16177 #pragma omp teams distribute 16178 for (int i = 0; i < 10; ++i) { 16179 #pragma omp task // OK 16180 { 16181 bar(); 16182 } 16183 } 16184 #pragma omp target 16185 #pragma omp teams distribute 16186 for (int i = 0; i < 10; ++i) { 16187 #pragma omp taskyield // OK 16188 bar(); 16189 } 16190 #pragma omp target 16191 #pragma omp teams distribute 16192 for (int i = 0; i < 10; ++i) { 16193 #pragma omp barrier // OK 16194 bar(); 16195 } 16196 #pragma omp target 16197 #pragma omp teams distribute 16198 for (int i = 0; i < 10; ++i) { 16199 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16200 bar(); 16201 } 16202 #pragma omp target 16203 #pragma omp teams distribute 16204 for (int i = 0; i < 10; ++i) { 16205 #pragma omp taskwait // OK 16206 bar(); 16207 } 16208 #pragma omp target 16209 #pragma omp teams distribute 16210 for (int i = 0; i < 10; ++i) { 16211 #pragma omp flush // OK 16212 bar(); 16213 } 16214 #pragma omp target 16215 #pragma omp teams distribute 16216 for (int i = 0; i < 10; ++i) { 16217 #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?}} 16218 bar(); 16219 } 16220 #pragma omp target 16221 #pragma omp teams distribute 16222 for (int i = 0; i < 10; ++i) { 16223 #pragma omp atomic // OK 16224 ++a; 16225 } 16226 #pragma omp target 16227 #pragma omp teams distribute 16228 for (int i = 0; i < 10; ++i) { 16229 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16230 ++a; 16231 } 16232 #pragma omp target 16233 #pragma omp teams distribute 16234 for (int i = 0; i < 10; ++i) { 16235 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16236 ++a; 16237 } 16238 #pragma omp target 16239 #pragma omp teams distribute 16240 for (int i = 0; i < 10; ++i) { 16241 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16242 for (int i = 0; i < 10; ++i) 16243 ; 16244 } 16245 #pragma omp target 16246 #pragma omp teams distribute 16247 for (int i = 0; i < 10; ++i) { 16248 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16249 ++a; 16250 } 16251 #pragma omp target 16252 #pragma omp teams distribute 16253 for (int i = 0; i < 10; ++i) { 16254 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16255 ++a; 16256 } 16257 #pragma omp target 16258 #pragma omp teams distribute 16259 for (int i = 0; i < 10; ++i) { 16260 #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?}} 16261 ++a; 16262 } 16263 #pragma omp target 16264 #pragma omp teams distribute 16265 for (int i = 0; i < 10; ++i) { 16266 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16267 ++a; 16268 } 16269 #pragma omp target 16270 #pragma omp teams distribute 16271 for (int i = 0; i < 10; ++i) { 16272 #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?}} 16273 for (int i = 0; i < 10; ++i) 16274 ++a; 16275 } 16276 #pragma omp target 16277 #pragma omp teams distribute 16278 for (int i = 0; i < 10; ++i) { 16279 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16280 for (int i = 0; i < 10; ++i) 16281 ++a; 16282 } 16283 #pragma omp target 16284 #pragma omp teams distribute 16285 for (int i = 0; i < 10; ++i) { 16286 #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?}} 16287 for (int i = 0; i < 10; ++i) 16288 ++a; 16289 } 16290 #pragma omp target 16291 #pragma omp teams distribute 16292 for (int i = 0; i < 10; ++i) { 16293 #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?}} 16294 for (int i = 0; i < 10; ++i) 16295 ++a; 16296 } 16297 #pragma omp target 16298 #pragma omp teams distribute 16299 for (int i = 0; i < 10; ++i) { 16300 #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?}} 16301 for (int i = 0; i < 10; ++i) 16302 ++a; 16303 } 16304 #pragma omp target 16305 #pragma omp teams distribute 16306 for (int i = 0; i < 10; ++i) { 16307 #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?}} 16308 for (int i = 0; i < 10; ++i) 16309 ++a; 16310 } 16311 #pragma omp target 16312 #pragma omp teams distribute 16313 for (int i = 0; i < 10; ++i) { 16314 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16315 ++a; 16316 } 16317 #pragma omp target 16318 #pragma omp teams distribute 16319 for (int i = 0; i < 10; ++i) { 16320 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16321 for (int i = 0; i < 10; ++i) 16322 ++a; 16323 } 16324 #pragma omp target 16325 #pragma omp teams distribute 16326 for (int i = 0; i < 10; ++i) { 16327 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16328 for (int i = 0; i < 10; ++i) 16329 ++a; 16330 } 16331 #pragma omp target 16332 #pragma omp teams distribute 16333 for (int i = 0; i < 10; ++i) { 16334 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16335 for (int i = 0; i < 10; ++i) 16336 ++a; 16337 } 16338 #pragma omp target 16339 #pragma omp teams distribute 16340 for (int i = 0; i < 10; ++i) { 16341 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16342 for (int i = 0; i < 10; ++i) 16343 ++a; 16344 } 16345 16346 // TEAMS DISTRIBUTE SIMD DIRECTIVE 16347 #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?}} 16348 for (int i = 0; i < 10; ++i) 16349 ; 16350 #pragma omp target 16351 #pragma omp teams distribute simd 16352 for (int i = 0; i < 10; ++i) { 16353 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16354 for (int i = 0; i < 10; ++i) 16355 ; 16356 } 16357 #pragma omp target 16358 #pragma omp teams distribute simd 16359 for (int i = 0; i < 10; ++i) { 16360 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16361 for (int i = 0; i < 10; ++i) 16362 ; 16363 } 16364 #pragma omp target 16365 #pragma omp teams distribute simd 16366 for (int i = 0; i < 10; ++i) { 16367 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16368 for (int i = 0; i < 10; ++i) 16369 ; 16370 } 16371 #pragma omp target 16372 #pragma omp teams distribute simd 16373 for (int i = 0; i < 10; ++i) { 16374 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16375 for (int i = 0; i < 10; ++i) 16376 ; 16377 } 16378 #pragma omp target 16379 #pragma omp teams distribute simd 16380 for (int i = 0; i < 10; ++i) { 16381 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16382 for (int i = 0; i < 10; ++i) 16383 ; 16384 } 16385 #pragma omp target 16386 #pragma omp teams distribute simd 16387 for (int i = 0; i < 10; ++i) { 16388 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16389 for (int i = 0; i < 10; ++i) 16390 ; 16391 } 16392 #pragma omp target 16393 #pragma omp teams distribute simd 16394 for (int i = 0; i < 10; ++i) { 16395 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16396 { 16397 bar(); 16398 } 16399 } 16400 #pragma omp target 16401 #pragma omp teams distribute simd 16402 for (int i = 0; i < 10; ++i) { 16403 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16404 { 16405 bar(); 16406 } 16407 } 16408 #pragma omp target 16409 #pragma omp teams distribute simd 16410 for (int i = 0; i < 10; ++i) { 16411 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16412 { 16413 bar(); 16414 } 16415 } 16416 #pragma omp target 16417 #pragma omp teams distribute simd 16418 for (int i = 0; i < 10; ++i) { 16419 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16420 { 16421 bar(); 16422 } 16423 } 16424 #pragma omp target 16425 #pragma omp teams distribute simd 16426 for (int i = 0; i < 10; ++i) { 16427 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16428 { 16429 bar(); 16430 } 16431 } 16432 #pragma omp target 16433 #pragma omp teams distribute simd 16434 for (int i = 0; i < 10; ++i) { 16435 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16436 { 16437 #pragma omp single 16438 { 16439 bar(); 16440 } 16441 } 16442 } 16443 #pragma omp target 16444 #pragma omp teams distribute simd 16445 for (int i = 0; i < 10; ++i) { 16446 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16447 for (int i = 0; i < 10; ++i) 16448 ; 16449 } 16450 #pragma omp target 16451 #pragma omp teams distribute simd 16452 for (int i = 0; i < 10; ++i) { 16453 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16454 for (int i = 0; i < 10; ++i) 16455 ; 16456 } 16457 #pragma omp target 16458 #pragma omp teams distribute simd 16459 for (int i = 0; i < 10; ++i) { 16460 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16461 { 16462 bar(); 16463 } 16464 } 16465 #pragma omp target 16466 #pragma omp teams distribute simd 16467 for (int i = 0; i < 10; ++i) { 16468 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16469 { 16470 bar(); 16471 } 16472 } 16473 #pragma omp target 16474 #pragma omp teams distribute simd 16475 for (int i = 0; i < 10; ++i) { 16476 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16477 bar(); 16478 } 16479 #pragma omp target 16480 #pragma omp teams distribute simd 16481 for (int i = 0; i < 10; ++i) { 16482 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16483 bar(); 16484 } 16485 #pragma omp target 16486 #pragma omp teams distribute simd 16487 for (int i = 0; i < 10; ++i) { 16488 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16489 bar(); 16490 } 16491 #pragma omp target 16492 #pragma omp teams distribute simd 16493 for (int i = 0; i < 10; ++i) { 16494 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16495 bar(); 16496 } 16497 #pragma omp target 16498 #pragma omp teams distribute simd 16499 for (int i = 0; i < 10; ++i) { 16500 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16501 bar(); 16502 } 16503 #pragma omp target 16504 #pragma omp teams distribute simd 16505 for (int i = 0; i < 10; ++i) { 16506 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16507 bar(); 16508 } 16509 #pragma omp target 16510 #pragma omp teams distribute simd 16511 for (int i = 0; i < 10; ++i) { 16512 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16513 ++a; 16514 } 16515 #pragma omp target 16516 #pragma omp teams distribute simd 16517 for (int i = 0; i < 10; ++i) { 16518 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16519 ++a; 16520 } 16521 #pragma omp target 16522 #pragma omp teams distribute simd 16523 for (int i = 0; i < 10; ++i) { 16524 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16525 ++a; 16526 } 16527 #pragma omp target 16528 #pragma omp teams distribute simd 16529 for (int i = 0; i < 10; ++i) { 16530 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16531 for (int i = 0; i < 10; ++i) 16532 ; 16533 } 16534 #pragma omp target 16535 #pragma omp teams distribute simd 16536 for (int i = 0; i < 10; ++i) { 16537 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16538 ++a; 16539 } 16540 #pragma omp target 16541 #pragma omp teams distribute simd 16542 for (int i = 0; i < 10; ++i) { 16543 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16544 ++a; 16545 } 16546 #pragma omp target 16547 #pragma omp teams distribute simd 16548 for (int i = 0; i < 10; ++i) { 16549 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16550 ++a; 16551 } 16552 #pragma omp target 16553 #pragma omp teams distribute simd 16554 for (int i = 0; i < 10; ++i) { 16555 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16556 ++a; 16557 } 16558 #pragma omp target 16559 #pragma omp teams distribute simd 16560 for (int i = 0; i < 10; ++i) { 16561 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16562 for (int i = 0; i < 10; ++i) 16563 ++a; 16564 } 16565 #pragma omp target 16566 #pragma omp teams distribute simd 16567 for (int i = 0; i < 10; ++i) { 16568 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16569 for (int i = 0; i < 10; ++i) 16570 ++a; 16571 } 16572 #pragma omp target 16573 #pragma omp teams distribute simd 16574 for (int i = 0; i < 10; ++i) { 16575 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16576 for (int i = 0; i < 10; ++i) 16577 ++a; 16578 } 16579 #pragma omp target 16580 #pragma omp teams distribute simd 16581 for (int i = 0; i < 10; ++i) { 16582 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16583 for (int i = 0; i < 10; ++i) 16584 ++a; 16585 } 16586 #pragma omp target 16587 #pragma omp teams distribute simd 16588 for (int i = 0; i < 10; ++i) { 16589 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16590 for (int i = 0; i < 10; ++i) 16591 ++a; 16592 } 16593 #pragma omp target 16594 #pragma omp teams distribute simd 16595 for (int i = 0; i < 10; ++i) { 16596 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16597 for (int i = 0; i < 10; ++i) 16598 ++a; 16599 } 16600 #pragma omp target 16601 #pragma omp teams distribute simd 16602 for (int i = 0; i < 10; ++i) { 16603 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16604 ++a; 16605 } 16606 #pragma omp target 16607 #pragma omp teams distribute simd 16608 for (int i = 0; i < 10; ++i) { 16609 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16610 for (int i = 0; i < 10; ++i) 16611 ++a; 16612 } 16613 #pragma omp target 16614 #pragma omp teams distribute simd 16615 for (int i = 0; i < 10; ++i) { 16616 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16617 for (int i = 0; i < 10; ++i) 16618 ++a; 16619 } 16620 #pragma omp target 16621 #pragma omp teams distribute simd 16622 for (int i = 0; i < 10; ++i) { 16623 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16624 for (int i = 0; i < 10; ++i) 16625 ++a; 16626 } 16627 #pragma omp target 16628 #pragma omp teams distribute simd 16629 for (int i = 0; i < 10; ++i) { 16630 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16631 for (int i = 0; i < 10; ++i) 16632 ++a; 16633 } 16634 16635 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 16636 #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?}} 16637 for (int i = 0; i < 10; ++i) 16638 ; 16639 #pragma omp target 16640 #pragma omp teams distribute parallel for simd 16641 for (int i = 0; i < 10; ++i) { 16642 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16643 for (int i = 0; i < 10; ++i) 16644 ; 16645 } 16646 #pragma omp target 16647 #pragma omp teams distribute parallel for simd 16648 for (int i = 0; i < 10; ++i) { 16649 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16650 for (int i = 0; i < 10; ++i) 16651 ; 16652 } 16653 #pragma omp target 16654 #pragma omp teams distribute parallel for simd 16655 for (int i = 0; i < 10; ++i) { 16656 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16657 for (int i = 0; i < 10; ++i) 16658 ; 16659 } 16660 #pragma omp target 16661 #pragma omp teams distribute parallel for simd 16662 for (int i = 0; i < 10; ++i) { 16663 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 16664 for (int i = 0; i < 10; ++i) 16665 ; 16666 } 16667 #pragma omp target 16668 #pragma omp teams distribute parallel for simd 16669 for (int i = 0; i < 10; ++i) { 16670 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16671 for (int i = 0; i < 10; ++i) 16672 ; 16673 } 16674 #pragma omp target 16675 #pragma omp teams distribute parallel for simd 16676 for (int i = 0; i < 10; ++i) { 16677 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16678 for (int i = 0; i < 10; ++i) 16679 ; 16680 } 16681 #pragma omp target 16682 #pragma omp teams distribute parallel for simd 16683 for (int i = 0; i < 10; ++i) { 16684 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16685 { 16686 bar(); 16687 } 16688 } 16689 #pragma omp target 16690 #pragma omp teams distribute parallel for simd 16691 for (int i = 0; i < 10; ++i) { 16692 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16693 { 16694 bar(); 16695 } 16696 } 16697 #pragma omp target 16698 #pragma omp teams distribute parallel for simd 16699 for (int i = 0; i < 10; ++i) { 16700 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16701 { 16702 bar(); 16703 } 16704 } 16705 #pragma omp target 16706 #pragma omp teams distribute parallel for simd 16707 for (int i = 0; i < 10; ++i) { 16708 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16709 { 16710 bar(); 16711 } 16712 } 16713 #pragma omp target 16714 #pragma omp teams distribute parallel for simd 16715 for (int i = 0; i < 10; ++i) { 16716 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16717 { 16718 bar(); 16719 } 16720 } 16721 #pragma omp target 16722 #pragma omp teams distribute parallel for simd 16723 for (int i = 0; i < 10; ++i) { 16724 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16725 { 16726 #pragma omp single 16727 { 16728 bar(); 16729 } 16730 } 16731 } 16732 #pragma omp target 16733 #pragma omp teams distribute parallel for simd 16734 for (int i = 0; i < 10; ++i) { 16735 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16736 for (int i = 0; i < 10; ++i) 16737 ; 16738 } 16739 #pragma omp target 16740 #pragma omp teams distribute parallel for simd 16741 for (int i = 0; i < 10; ++i) { 16742 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16743 for (int i = 0; i < 10; ++i) 16744 ; 16745 } 16746 #pragma omp target 16747 #pragma omp teams distribute parallel for simd 16748 for (int i = 0; i < 10; ++i) { 16749 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16750 { 16751 bar(); 16752 } 16753 } 16754 #pragma omp target 16755 #pragma omp teams distribute parallel for simd 16756 for (int i = 0; i < 10; ++i) { 16757 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16758 { 16759 bar(); 16760 } 16761 } 16762 #pragma omp target 16763 #pragma omp teams distribute parallel for simd 16764 for (int i = 0; i < 10; ++i) { 16765 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16766 bar(); 16767 } 16768 #pragma omp target 16769 #pragma omp teams distribute parallel for simd 16770 for (int i = 0; i < 10; ++i) { 16771 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16772 bar(); 16773 } 16774 #pragma omp target 16775 #pragma omp teams distribute parallel for simd 16776 for (int i = 0; i < 10; ++i) { 16777 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 16778 bar(); 16779 } 16780 #pragma omp target 16781 #pragma omp teams distribute parallel for simd 16782 for (int i = 0; i < 10; ++i) { 16783 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16784 bar(); 16785 } 16786 #pragma omp target 16787 #pragma omp teams distribute parallel for simd 16788 for (int i = 0; i < 10; ++i) { 16789 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16790 bar(); 16791 } 16792 #pragma omp target 16793 #pragma omp teams distribute parallel for simd 16794 for (int i = 0; i < 10; ++i) { 16795 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16796 bar(); 16797 } 16798 #pragma omp target 16799 #pragma omp teams distribute parallel for simd 16800 for (int i = 0; i < 10; ++i) { 16801 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 16802 ++a; 16803 } 16804 #pragma omp target 16805 #pragma omp teams distribute parallel for simd 16806 for (int i = 0; i < 10; ++i) { 16807 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16808 ++a; 16809 } 16810 #pragma omp target 16811 #pragma omp teams distribute parallel for simd 16812 for (int i = 0; i < 10; ++i) { 16813 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16814 ++a; 16815 } 16816 #pragma omp target 16817 #pragma omp teams distribute parallel for simd 16818 for (int i = 0; i < 10; ++i) { 16819 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16820 for (int i = 0; i < 10; ++i) 16821 ; 16822 } 16823 #pragma omp target 16824 #pragma omp teams distribute parallel for simd 16825 for (int i = 0; i < 10; ++i) { 16826 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16827 ++a; 16828 } 16829 #pragma omp target 16830 #pragma omp teams distribute parallel for simd 16831 for (int i = 0; i < 10; ++i) { 16832 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16833 ++a; 16834 } 16835 #pragma omp target 16836 #pragma omp teams distribute parallel for simd 16837 for (int i = 0; i < 10; ++i) { 16838 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16839 ++a; 16840 } 16841 #pragma omp target 16842 #pragma omp teams distribute parallel for simd 16843 for (int i = 0; i < 10; ++i) { 16844 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16845 ++a; 16846 } 16847 #pragma omp target 16848 #pragma omp teams distribute parallel for simd 16849 for (int i = 0; i < 10; ++i) { 16850 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16851 for (int i = 0; i < 10; ++i) 16852 ++a; 16853 } 16854 #pragma omp target 16855 #pragma omp teams distribute parallel for simd 16856 for (int i = 0; i < 10; ++i) { 16857 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16858 for (int i = 0; i < 10; ++i) 16859 ++a; 16860 } 16861 #pragma omp target 16862 #pragma omp teams distribute parallel for simd 16863 for (int i = 0; i < 10; ++i) { 16864 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16865 for (int i = 0; i < 10; ++i) 16866 ++a; 16867 } 16868 #pragma omp target 16869 #pragma omp teams distribute parallel for simd 16870 for (int i = 0; i < 10; ++i) { 16871 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16872 for (int i = 0; i < 10; ++i) 16873 ++a; 16874 } 16875 #pragma omp target 16876 #pragma omp teams distribute parallel for simd 16877 for (int i = 0; i < 10; ++i) { 16878 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16879 for (int i = 0; i < 10; ++i) 16880 ++a; 16881 } 16882 #pragma omp target 16883 #pragma omp teams distribute parallel for simd 16884 for (int i = 0; i < 10; ++i) { 16885 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16886 for (int i = 0; i < 10; ++i) 16887 ++a; 16888 } 16889 #pragma omp target 16890 #pragma omp teams distribute parallel for simd 16891 for (int i = 0; i < 10; ++i) { 16892 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16893 ++a; 16894 } 16895 #pragma omp target 16896 #pragma omp teams distribute parallel for simd 16897 for (int i = 0; i < 10; ++i) { 16898 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16899 for (int i = 0; i < 10; ++i) 16900 ++a; 16901 } 16902 #pragma omp target 16903 #pragma omp teams distribute parallel for simd 16904 for (int i = 0; i < 10; ++i) { 16905 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16906 for (int i = 0; i < 10; ++i) 16907 ++a; 16908 } 16909 #pragma omp target 16910 #pragma omp teams distribute parallel for simd 16911 for (int i = 0; i < 10; ++i) { 16912 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16913 for (int i = 0; i < 10; ++i) 16914 ++a; 16915 } 16916 #pragma omp target 16917 #pragma omp teams distribute parallel for simd 16918 for (int i = 0; i < 10; ++i) { 16919 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16920 for (int i = 0; i < 10; ++i) 16921 ++a; 16922 } 16923 16924 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16925 #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?}} 16926 for (int i = 0; i < 10; ++i) 16927 ; 16928 #pragma omp target 16929 #pragma omp teams distribute parallel for 16930 for (int i = 0; i < 10; ++i) { 16931 #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?}} 16932 for (int i = 0; i < 10; ++i) 16933 ; 16934 } 16935 #pragma omp target 16936 #pragma omp teams distribute parallel for 16937 for (int i = 0; i < 10; ++i) { 16938 #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?}} 16939 for (int i = 0; i < 10; ++i) 16940 ; 16941 } 16942 #pragma omp target 16943 #pragma omp teams distribute parallel for 16944 for (int i = 0; i < 10; ++i) { 16945 #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?}} 16946 for (int i = 0; i < 10; ++i) 16947 ; 16948 } 16949 #pragma omp target 16950 #pragma omp teams distribute parallel for 16951 for (int i = 0; i < 10; ++i) { 16952 #pragma omp simd // OK 16953 for (int i = 0; i < 10; ++i) 16954 ; 16955 } 16956 #pragma omp target 16957 #pragma omp teams distribute parallel for 16958 for (int i = 0; i < 10; ++i) { 16959 #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?}} 16960 for (int i = 0; i < 10; ++i) 16961 ; 16962 } 16963 #pragma omp target 16964 #pragma omp teams distribute parallel for 16965 for (int i = 0; i < 10; ++i) { 16966 #pragma omp parallel // OK 16967 for (int i = 0; i < 10; ++i) 16968 ; 16969 } 16970 #pragma omp target 16971 #pragma omp teams distribute parallel for 16972 for (int i = 0; i < 10; ++i) { 16973 #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?}} 16974 { 16975 bar(); 16976 } 16977 } 16978 #pragma omp target 16979 #pragma omp teams distribute parallel for 16980 for (int i = 0; i < 10; ++i) { 16981 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 16982 { 16983 bar(); 16984 } 16985 } 16986 #pragma omp target 16987 #pragma omp teams distribute parallel for 16988 for (int i = 0; i < 10; ++i) { 16989 #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?}} 16990 { 16991 bar(); 16992 } 16993 } 16994 #pragma omp target 16995 #pragma omp teams distribute parallel for 16996 for (int i = 0; i < 10; ++i) { 16997 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16998 { 16999 bar(); 17000 } 17001 } 17002 #pragma omp target 17003 #pragma omp teams distribute parallel for 17004 for (int i = 0; i < 10; ++i) { 17005 #pragma omp critical // OK 17006 { 17007 bar(); 17008 } 17009 } 17010 #pragma omp target 17011 #pragma omp teams distribute parallel for 17012 for (int i = 0; i < 10; ++i) { 17013 #pragma omp parallel // OK 17014 { 17015 #pragma omp single 17016 { 17017 bar(); 17018 } 17019 } 17020 } 17021 #pragma omp target 17022 #pragma omp teams distribute parallel for 17023 for (int i = 0; i < 10; ++i) { 17024 #pragma omp parallel for // OK 17025 for (int i = 0; i < 10; ++i) 17026 ; 17027 } 17028 #pragma omp target 17029 #pragma omp teams distribute parallel for 17030 for (int i = 0; i < 10; ++i) { 17031 #pragma omp parallel for simd // OK 17032 for (int i = 0; i < 10; ++i) 17033 ; 17034 } 17035 #pragma omp target 17036 #pragma omp teams distribute parallel for 17037 for (int i = 0; i < 10; ++i) { 17038 #pragma omp parallel sections // OK 17039 { 17040 bar(); 17041 } 17042 } 17043 #pragma omp target 17044 #pragma omp teams distribute parallel for 17045 for (int i = 0; i < 10; ++i) { 17046 #pragma omp task // OK 17047 { 17048 bar(); 17049 } 17050 } 17051 #pragma omp target 17052 #pragma omp teams distribute parallel for 17053 for (int i = 0; i < 10; ++i) { 17054 #pragma omp taskyield // OK 17055 bar(); 17056 } 17057 #pragma omp target 17058 #pragma omp teams distribute parallel for 17059 for (int i = 0; i < 10; ++i) { 17060 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17061 bar(); 17062 } 17063 #pragma omp target 17064 #pragma omp teams distribute parallel for 17065 for (int i = 0; i < 10; ++i) { 17066 #pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 17067 bar(); 17068 } 17069 #pragma omp target 17070 #pragma omp teams distribute parallel for 17071 for (int i = 0; i < 10; ++i) { 17072 #pragma omp taskwait // OK 17073 bar(); 17074 } 17075 #pragma omp target 17076 #pragma omp teams distribute parallel for 17077 for (int i = 0; i < 10; ++i) { 17078 #pragma omp flush // OK 17079 bar(); 17080 } 17081 #pragma omp target 17082 #pragma omp teams distribute parallel for 17083 for (int i = 0; i < 10; ++i) { 17084 #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?}} 17085 bar(); 17086 } 17087 #pragma omp target 17088 #pragma omp teams distribute parallel for 17089 for (int i = 0; i < 10; ++i) { 17090 #pragma omp atomic // OK 17091 ++a; 17092 } 17093 #pragma omp target 17094 #pragma omp teams distribute parallel for 17095 for (int i = 0; i < 10; ++i) { 17096 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 17097 ++a; 17098 } 17099 #pragma omp target 17100 #pragma omp teams distribute parallel for 17101 for (int i = 0; i < 10; ++i) { 17102 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 17103 ++a; 17104 } 17105 #pragma omp target 17106 #pragma omp teams distribute parallel for 17107 for (int i = 0; i < 10; ++i) { 17108 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 17109 for (int i = 0; i < 10; ++i) 17110 ; 17111 } 17112 #pragma omp target 17113 #pragma omp teams distribute parallel for 17114 for (int i = 0; i < 10; ++i) { 17115 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 17116 ++a; 17117 } 17118 #pragma omp target 17119 #pragma omp teams distribute parallel for 17120 for (int i = 0; i < 10; ++i) { 17121 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 17122 ++a; 17123 } 17124 #pragma omp target 17125 #pragma omp teams distribute parallel for 17126 for (int i = 0; i < 10; ++i) { 17127 #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?}} 17128 ++a; 17129 } 17130 #pragma omp target 17131 #pragma omp teams distribute parallel for 17132 for (int i = 0; i < 10; ++i) { 17133 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 17134 ++a; 17135 } 17136 #pragma omp target 17137 #pragma omp teams distribute parallel for 17138 for (int i = 0; i < 10; ++i) { 17139 #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?}} 17140 for (int i = 0; i < 10; ++i) 17141 ++a; 17142 } 17143 #pragma omp target 17144 #pragma omp teams distribute parallel for 17145 for (int i = 0; i < 10; ++i) { 17146 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 17147 for (int i = 0; i < 10; ++i) 17148 ++a; 17149 } 17150 #pragma omp target 17151 #pragma omp teams distribute parallel for 17152 for (int i = 0; i < 10; ++i) { 17153 #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?}} 17154 for (int i = 0; i < 10; ++i) 17155 ++a; 17156 } 17157 #pragma omp target 17158 #pragma omp teams distribute parallel for 17159 for (int i = 0; i < 10; ++i) { 17160 #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?}} 17161 for (int i = 0; i < 10; ++i) 17162 ++a; 17163 } 17164 #pragma omp target 17165 #pragma omp teams distribute parallel for 17166 for (int i = 0; i < 10; ++i) { 17167 #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?}} 17168 for (int i = 0; i < 10; ++i) 17169 ++a; 17170 } 17171 #pragma omp target 17172 #pragma omp teams distribute parallel for 17173 for (int i = 0; i < 10; ++i) { 17174 #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?}} 17175 for (int i = 0; i < 10; ++i) 17176 ++a; 17177 } 17178 #pragma omp target 17179 #pragma omp teams distribute parallel for 17180 for (int i = 0; i < 10; ++i) { 17181 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 17182 ++a; 17183 } 17184 #pragma omp target 17185 #pragma omp teams distribute parallel for 17186 for (int i = 0; i < 10; ++i) { 17187 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 17188 for (int i = 0; i < 10; ++i) 17189 ++a; 17190 } 17191 #pragma omp target 17192 #pragma omp teams distribute parallel for 17193 for (int i = 0; i < 10; ++i) { 17194 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 17195 for (int i = 0; i < 10; ++i) 17196 ++a; 17197 } 17198 #pragma omp target 17199 #pragma omp teams distribute parallel for 17200 for (int i = 0; i < 10; ++i) { 17201 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 17202 for (int i = 0; i < 10; ++i) 17203 ++a; 17204 } 17205 #pragma omp target 17206 #pragma omp teams distribute parallel for 17207 for (int i = 0; i < 10; ++i) { 17208 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 17209 for (int i = 0; i < 10; ++i) 17210 ++a; 17211 } 17212 17213 // TARGET TEAMS DIRECTIVE 17214 #pragma omp target teams 17215 #pragma omp parallel 17216 bar(); 17217 #pragma omp target teams 17218 #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?}} 17219 for (int i = 0; i < 10; ++i) 17220 ; 17221 #pragma omp target teams 17222 #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?}} 17223 for (int i = 0; i < 10; ++i) 17224 ; 17225 #pragma omp target teams 17226 #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?}} 17227 for (int i = 0; i < 10; ++i) 17228 ; 17229 #pragma omp target teams 17230 #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?}} 17231 { 17232 bar(); 17233 } 17234 #pragma omp target teams 17235 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 17236 { 17237 bar(); 17238 } 17239 #pragma omp target teams 17240 #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?}} 17241 bar(); 17242 17243 #pragma omp target teams 17244 #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?}} 17245 { 17246 bar(); 17247 } 17248 #pragma omp target teams 17249 #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?}} 17250 { 17251 bar(); 17252 } 17253 #pragma omp target teams 17254 #pragma omp parallel for 17255 for (int i = 0; i < 10; ++i) 17256 ; 17257 #pragma omp target teams 17258 #pragma omp parallel for simd 17259 for (int i = 0; i < 10; ++i) 17260 ; 17261 #pragma omp target teams 17262 #pragma omp parallel sections 17263 { 17264 bar(); 17265 } 17266 #pragma omp target teams 17267 #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?}} 17268 { 17269 bar(); 17270 } 17271 #pragma omp target teams 17272 { 17273 #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?}} 17274 bar(); 17275 } 17276 #pragma omp target teams 17277 { 17278 #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?}} 17279 bar(); 17280 } 17281 #pragma omp target teams 17282 { 17283 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17284 bar(); 17285 } 17286 #pragma omp target teams 17287 { 17288 #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?}} 17289 bar(); 17290 } 17291 #pragma omp target teams 17292 { 17293 #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?}} 17294 bar(); 17295 } 17296 #pragma omp target teams 17297 { 17298 #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?}} 17299 bar(); 17300 } 17301 #pragma omp target teams 17302 { 17303 #pragma omp atomic // omp-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 17304 ++a; 17305 } 17306 #pragma omp target teams 17307 { 17308 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 17309 ++a; 17310 } 17311 #pragma omp target teams 17312 { 17313 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 17314 ++a; 17315 } 17316 #pragma omp target teams 17317 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17318 for (int i = 0; i < 10; ++i) 17319 ; 17320 #pragma omp target teams 17321 { 17322 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 17323 } 17324 #pragma omp target teams 17325 { 17326 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 17327 } 17328 #pragma omp target teams 17329 { 17330 #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?}} 17331 ++a; 17332 } 17333 #pragma omp target teams 17334 { 17335 #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?}} 17336 for (int i = 0; i < 10; ++i) 17337 ++a; 17338 } 17339 #pragma omp target teams 17340 #pragma omp distribute 17341 for (int i = 0; i < 10; ++i) 17342 ; 17343 #pragma omp target teams 17344 { 17345 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 17346 ++a; 17347 } 17348 #pragma omp target teams 17349 #pragma omp distribute parallel for 17350 for (int i = 0; i < 10; ++i) 17351 ; 17352 #pragma omp target teams 17353 { 17354 #pragma omp distribute parallel for 17355 for (int i = 0; i < 10; ++i) 17356 ; 17357 #pragma omp distribute parallel for 17358 for (int j = 0; j < 10; ++j) 17359 ; 17360 } 17361 #pragma omp target teams 17362 { 17363 #pragma omp distribute parallel for simd 17364 for (int i = 0; i < 10; ++i) 17365 ; 17366 #pragma omp distribute parallel for simd 17367 for (int j = 0; j < 10; ++j) 17368 ; 17369 } 17370 #pragma omp target teams 17371 { 17372 #pragma omp distribute simd 17373 for (int i = 0; i < 10; ++i) 17374 ; 17375 #pragma omp distribute simd 17376 for (int j = 0; j < 10; ++j) 17377 ; 17378 } 17379 #pragma omp target teams 17380 { 17381 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 17382 for (int i = 0; i < 10; ++i) 17383 ; 17384 } 17385 #pragma omp target teams 17386 { 17387 #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?}} 17388 for (int i = 0; i < 10; ++i) 17389 ; 17390 } 17391 #pragma omp target teams 17392 { 17393 #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?}} 17394 for (int i = 0; i < 10; ++i) 17395 ; 17396 } 17397 #pragma omp target teams 17398 { 17399 #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?}} 17400 for (int i = 0; i < 10; ++i) 17401 ; 17402 } 17403 #pragma omp target teams 17404 { 17405 #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?}} 17406 for (int i = 0; i < 10; ++i) 17407 ; 17408 } 17409 #pragma omp target teams 17410 { 17411 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 17412 a++; 17413 } 17414 #pragma omp target teams 17415 { 17416 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 17417 for (int i = 0; i < 10; ++i) 17418 ; 17419 } 17420 #pragma omp target teams 17421 { 17422 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 17423 for (int i = 0; i < 10; ++i) 17424 ; 17425 } 17426 #pragma omp target teams 17427 { 17428 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 17429 for (int i = 0; i < 10; ++i) 17430 ; 17431 } 17432 #pragma omp target teams 17433 { 17434 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 17435 for (int i = 0; i < 10; ++i) 17436 ; 17437 } 17438 17439 // TARGET TEAMS DISTRIBUTE DIRECTIVE 17440 #pragma omp target teams distribute // OK 17441 for (int i = 0; i < 10; ++i) 17442 ; 17443 #pragma omp target teams distribute 17444 for (int i = 0; i < 10; ++i) { 17445 #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?}} 17446 for (int i = 0; i < 10; ++i) 17447 ; 17448 } 17449 #pragma omp target teams distribute 17450 for (int i = 0; i < 10; ++i) { 17451 #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?}} 17452 for (int i = 0; i < 10; ++i) 17453 ; 17454 } 17455 #pragma omp target teams distribute 17456 for (int i = 0; i < 10; ++i) { 17457 #pragma omp for // OK 17458 for (int i = 0; i < 10; ++i) 17459 ; 17460 } 17461 #pragma omp target teams distribute 17462 for (int i = 0; i < 10; ++i) { 17463 #pragma omp simd // OK 17464 for (int i = 0; i < 10; ++i) 17465 ; 17466 } 17467 #pragma omp target teams distribute 17468 for (int i = 0; i < 10; ++i) { 17469 #pragma omp for simd // OK 17470 for (int i = 0; i < 10; ++i) 17471 ; 17472 } 17473 #pragma omp target teams distribute 17474 for (int i = 0; i < 10; ++i) { 17475 #pragma omp parallel // OK 17476 for (int i = 0; i < 10; ++i) 17477 ; 17478 } 17479 #pragma omp target teams distribute 17480 for (int i = 0; i < 10; ++i) { 17481 #pragma omp sections // OK 17482 { 17483 bar(); 17484 } 17485 } 17486 #pragma omp target teams distribute 17487 for (int i = 0; i < 10; ++i) { 17488 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 17489 { 17490 bar(); 17491 } 17492 } 17493 #pragma omp target teams distribute 17494 for (int i = 0; i < 10; ++i) { 17495 #pragma omp single // OK 17496 { 17497 bar(); 17498 } 17499 } 17500 #pragma omp target teams distribute 17501 for (int i = 0; i < 10; ++i) { 17502 #pragma omp master // OK 17503 { 17504 bar(); 17505 } 17506 } 17507 #pragma omp target teams distribute 17508 for (int i = 0; i < 10; ++i) { 17509 #pragma omp critical // OK 17510 { 17511 bar(); 17512 } 17513 } 17514 #pragma omp target teams distribute 17515 for (int i = 0; i < 10; ++i) { 17516 #pragma omp parallel // OK 17517 { 17518 #pragma omp single 17519 { 17520 bar(); 17521 } 17522 } 17523 } 17524 #pragma omp target teams distribute 17525 for (int i = 0; i < 10; ++i) { 17526 #pragma omp parallel for // OK 17527 for (int i = 0; i < 10; ++i) 17528 ; 17529 } 17530 #pragma omp target teams distribute 17531 for (int i = 0; i < 10; ++i) { 17532 #pragma omp parallel for simd // OK 17533 for (int i = 0; i < 10; ++i) 17534 ; 17535 } 17536 #pragma omp target teams distribute 17537 for (int i = 0; i < 10; ++i) { 17538 #pragma omp parallel sections // OK 17539 { 17540 bar(); 17541 } 17542 } 17543 #pragma omp target teams distribute 17544 for (int i = 0; i < 10; ++i) { 17545 #pragma omp task // OK 17546 { 17547 bar(); 17548 } 17549 } 17550 #pragma omp target teams distribute 17551 for (int i = 0; i < 10; ++i) { 17552 #pragma omp taskyield // OK 17553 bar(); 17554 } 17555 #pragma omp target teams distribute 17556 for (int i = 0; i < 10; ++i) { 17557 #pragma omp barrier // OK 17558 bar(); 17559 } 17560 #pragma omp target teams distribute 17561 for (int i = 0; i < 10; ++i) { 17562 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 17563 bar(); 17564 } 17565 #pragma omp target teams distribute 17566 for (int i = 0; i < 10; ++i) { 17567 #pragma omp taskwait // OK 17568 bar(); 17569 } 17570 #pragma omp target teams distribute 17571 for (int i = 0; i < 10; ++i) { 17572 #pragma omp flush // OK 17573 bar(); 17574 } 17575 #pragma omp target teams distribute 17576 for (int i = 0; i < 10; ++i) { 17577 #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?}} 17578 bar(); 17579 } 17580 #pragma omp target teams distribute 17581 for (int i = 0; i < 10; ++i) { 17582 #pragma omp atomic // OK 17583 ++a; 17584 } 17585 #pragma omp target teams distribute 17586 for (int i = 0; i < 10; ++i) { 17587 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17588 ++a; 17589 } 17590 #pragma omp target teams distribute 17591 for (int i = 0; i < 10; ++i) { 17592 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17593 ++a; 17594 } 17595 #pragma omp target teams distribute 17596 for (int i = 0; i < 10; ++i) { 17597 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17598 for (int i = 0; i < 10; ++i) 17599 ; 17600 } 17601 #pragma omp target teams distribute 17602 for (int i = 0; i < 10; ++i) { 17603 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17604 ++a; 17605 } 17606 #pragma omp target teams distribute 17607 for (int i = 0; i < 10; ++i) { 17608 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17609 ++a; 17610 } 17611 #pragma omp target teams distribute 17612 for (int i = 0; i < 10; ++i) { 17613 #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?}} 17614 ++a; 17615 } 17616 #pragma omp target teams distribute 17617 for (int i = 0; i < 10; ++i) { 17618 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17619 ++a; 17620 } 17621 #pragma omp target teams distribute 17622 for (int i = 0; i < 10; ++i) { 17623 #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?}} 17624 for (int i = 0; i < 10; ++i) 17625 ++a; 17626 } 17627 #pragma omp target teams distribute 17628 for (int i = 0; i < 10; ++i) { 17629 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17630 for (int i = 0; i < 10; ++i) 17631 ++a; 17632 } 17633 #pragma omp target teams distribute 17634 for (int i = 0; i < 10; ++i) { 17635 #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?}} 17636 for (int i = 0; i < 10; ++i) 17637 ++a; 17638 } 17639 #pragma omp target teams distribute 17640 for (int i = 0; i < 10; ++i) { 17641 #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?}} 17642 for (int i = 0; i < 10; ++i) 17643 ++a; 17644 } 17645 #pragma omp target teams distribute 17646 for (int i = 0; i < 10; ++i) { 17647 #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?}} 17648 for (int i = 0; i < 10; ++i) 17649 ++a; 17650 } 17651 #pragma omp target teams distribute 17652 for (int i = 0; i < 10; ++i) { 17653 #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?}} 17654 for (int i = 0; i < 10; ++i) 17655 ++a; 17656 } 17657 #pragma omp target teams distribute 17658 for (int i = 0; i < 10; ++i) { 17659 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17660 ++a; 17661 } 17662 #pragma omp target teams distribute 17663 for (int i = 0; i < 10; ++i) { 17664 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17665 for (int i = 0; i < 10; ++i) 17666 ++a; 17667 } 17668 #pragma omp target teams distribute 17669 for (int i = 0; i < 10; ++i) { 17670 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17671 for (int i = 0; i < 10; ++i) 17672 ++a; 17673 } 17674 #pragma omp target teams distribute 17675 for (int i = 0; i < 10; ++i) { 17676 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17677 for (int i = 0; i < 10; ++i) 17678 ++a; 17679 } 17680 #pragma omp target teams distribute 17681 for (int i = 0; i < 10; ++i) { 17682 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 17683 for (int i = 0; i < 10; ++i) 17684 ++a; 17685 } 17686 17687 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 17688 #pragma omp target teams distribute parallel for // OK 17689 for (int i = 0; i < 10; ++i) 17690 ; 17691 #pragma omp target teams distribute parallel for 17692 for (int i = 0; i < 10; ++i) { 17693 #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?}} 17694 for (int i = 0; i < 10; ++i) 17695 ; 17696 } 17697 #pragma omp target teams distribute parallel for 17698 for (int i = 0; i < 10; ++i) { 17699 #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?}} 17700 for (int i = 0; i < 10; ++i) 17701 ; 17702 } 17703 #pragma omp target teams distribute parallel for 17704 for (int i = 0; i < 10; ++i) { 17705 #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?}} 17706 for (int i = 0; i < 10; ++i) 17707 ; 17708 } 17709 #pragma omp target teams distribute parallel for 17710 for (int i = 0; i < 10; ++i) { 17711 #pragma omp simd // OK 17712 for (int i = 0; i < 10; ++i) 17713 ; 17714 } 17715 #pragma omp target teams distribute parallel for 17716 for (int i = 0; i < 10; ++i) { 17717 #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?}} 17718 for (int i = 0; i < 10; ++i) 17719 ; 17720 } 17721 #pragma omp target teams distribute parallel for 17722 for (int i = 0; i < 10; ++i) { 17723 #pragma omp parallel // OK 17724 for (int i = 0; i < 10; ++i) 17725 ; 17726 } 17727 #pragma omp target teams distribute parallel for 17728 for (int i = 0; i < 10; ++i) { 17729 #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?}} 17730 { 17731 bar(); 17732 } 17733 } 17734 #pragma omp target teams distribute parallel for 17735 for (int i = 0; i < 10; ++i) { 17736 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 17737 { 17738 bar(); 17739 } 17740 } 17741 #pragma omp target teams distribute parallel for 17742 for (int i = 0; i < 10; ++i) { 17743 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17744 { 17745 bar(); 17746 } 17747 } 17748 #pragma omp target teams distribute parallel for 17749 for (int i = 0; i < 10; ++i) { 17750 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17751 { 17752 bar(); 17753 } 17754 } 17755 #pragma omp target teams distribute parallel for 17756 for (int i = 0; i < 10; ++i) { 17757 #pragma omp critical // OK 17758 { 17759 bar(); 17760 } 17761 } 17762 #pragma omp target teams distribute parallel for 17763 for (int i = 0; i < 10; ++i) { 17764 #pragma omp parallel // OK 17765 { 17766 #pragma omp single 17767 { 17768 bar(); 17769 } 17770 } 17771 } 17772 #pragma omp target teams distribute parallel for 17773 for (int i = 0; i < 10; ++i) { 17774 #pragma omp parallel for // OK 17775 for (int i = 0; i < 10; ++i) 17776 ; 17777 } 17778 #pragma omp target teams distribute parallel for 17779 for (int i = 0; i < 10; ++i) { 17780 #pragma omp parallel for simd // OK 17781 for (int i = 0; i < 10; ++i) 17782 ; 17783 } 17784 #pragma omp target teams distribute parallel for 17785 for (int i = 0; i < 10; ++i) { 17786 #pragma omp parallel sections // OK 17787 { 17788 bar(); 17789 } 17790 } 17791 #pragma omp target teams distribute parallel for 17792 for (int i = 0; i < 10; ++i) { 17793 #pragma omp task // OK 17794 { 17795 bar(); 17796 } 17797 } 17798 #pragma omp target teams distribute parallel for 17799 for (int i = 0; i < 10; ++i) { 17800 #pragma omp taskyield // OK 17801 bar(); 17802 } 17803 #pragma omp target teams distribute parallel for 17804 for (int i = 0; i < 10; ++i) { 17805 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17806 bar(); 17807 } 17808 #pragma omp target teams distribute parallel for 17809 for (int i = 0; i < 10; ++i) { 17810 #pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17811 bar(); 17812 } 17813 #pragma omp target teams distribute parallel for 17814 for (int i = 0; i < 10; ++i) { 17815 #pragma omp taskwait // OK 17816 bar(); 17817 } 17818 #pragma omp target teams distribute parallel for 17819 for (int i = 0; i < 10; ++i) { 17820 #pragma omp flush // OK 17821 bar(); 17822 } 17823 #pragma omp target teams distribute parallel for 17824 for (int i = 0; i < 10; ++i) { 17825 #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?}} 17826 bar(); 17827 } 17828 #pragma omp target teams distribute parallel for 17829 for (int i = 0; i < 10; ++i) { 17830 #pragma omp atomic // OK 17831 ++a; 17832 } 17833 #pragma omp target teams distribute parallel for 17834 for (int i = 0; i < 10; ++i) { 17835 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17836 ++a; 17837 } 17838 #pragma omp target teams distribute parallel for 17839 for (int i = 0; i < 10; ++i) { 17840 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17841 ++a; 17842 } 17843 #pragma omp target teams distribute parallel for 17844 for (int i = 0; i < 10; ++i) { 17845 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17846 for (int i = 0; i < 10; ++i) 17847 ; 17848 } 17849 #pragma omp target teams distribute parallel for 17850 for (int i = 0; i < 10; ++i) { 17851 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17852 ++a; 17853 } 17854 #pragma omp target teams distribute parallel for 17855 for (int i = 0; i < 10; ++i) { 17856 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17857 ++a; 17858 } 17859 #pragma omp target teams distribute parallel for 17860 for (int i = 0; i < 10; ++i) { 17861 #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?}} 17862 ++a; 17863 } 17864 #pragma omp target teams distribute parallel for 17865 for (int i = 0; i < 10; ++i) { 17866 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17867 ++a; 17868 } 17869 #pragma omp target teams distribute parallel for 17870 for (int i = 0; i < 10; ++i) { 17871 #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?}} 17872 for (int i = 0; i < 10; ++i) 17873 ++a; 17874 } 17875 #pragma omp target teams distribute parallel for 17876 for (int i = 0; i < 10; ++i) { 17877 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17878 for (int i = 0; i < 10; ++i) 17879 ++a; 17880 } 17881 #pragma omp target teams distribute parallel for 17882 for (int i = 0; i < 10; ++i) { 17883 #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?}} 17884 for (int i = 0; i < 10; ++i) 17885 ++a; 17886 } 17887 #pragma omp target teams distribute parallel for 17888 for (int i = 0; i < 10; ++i) { 17889 #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?}} 17890 for (int i = 0; i < 10; ++i) 17891 ++a; 17892 } 17893 #pragma omp target teams distribute parallel for 17894 for (int i = 0; i < 10; ++i) { 17895 #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?}} 17896 for (int i = 0; i < 10; ++i) 17897 ++a; 17898 } 17899 #pragma omp target teams distribute parallel for 17900 for (int i = 0; i < 10; ++i) { 17901 #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?}} 17902 for (int i = 0; i < 10; ++i) 17903 ++a; 17904 } 17905 #pragma omp target teams distribute parallel for 17906 for (int i = 0; i < 10; ++i) { 17907 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17908 ++a; 17909 } 17910 #pragma omp target teams distribute parallel for 17911 for (int i = 0; i < 10; ++i) { 17912 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17913 for (int i = 0; i < 10; ++i) 17914 ++a; 17915 } 17916 #pragma omp target teams distribute parallel for 17917 for (int i = 0; i < 10; ++i) { 17918 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17919 for (int i = 0; i < 10; ++i) 17920 ++a; 17921 } 17922 #pragma omp target teams distribute parallel for 17923 for (int i = 0; i < 10; ++i) { 17924 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17925 for (int i = 0; i < 10; ++i) 17926 ++a; 17927 } 17928 #pragma omp target teams distribute parallel for 17929 for (int i = 0; i < 10; ++i) { 17930 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17931 for (int i = 0; i < 10; ++i) 17932 ++a; 17933 } 17934 17935 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 17936 #pragma omp target teams distribute parallel for simd // OK 17937 for (int i = 0; i < 10; ++i) 17938 ; 17939 #pragma omp target teams distribute parallel for simd 17940 for (int i = 0; i < 10; ++i) { 17941 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17942 for (int i = 0; i < 10; ++i) 17943 ; 17944 } 17945 #pragma omp target teams distribute parallel for simd 17946 for (int i = 0; i < 10; ++i) { 17947 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17948 for (int i = 0; i < 10; ++i) 17949 ; 17950 } 17951 #pragma omp target teams distribute parallel for simd 17952 for (int i = 0; i < 10; ++i) { 17953 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17954 for (int i = 0; i < 10; ++i) 17955 ; 17956 } 17957 #pragma omp target teams distribute parallel for simd 17958 for (int i = 0; i < 10; ++i) { 17959 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17960 for (int i = 0; i < 10; ++i) 17961 ; 17962 } 17963 #pragma omp target teams distribute parallel for simd 17964 for (int i = 0; i < 10; ++i) { 17965 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17966 for (int i = 0; i < 10; ++i) 17967 ; 17968 } 17969 #pragma omp target teams distribute parallel for simd 17970 for (int i = 0; i < 10; ++i) { 17971 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17972 for (int i = 0; i < 10; ++i) 17973 ; 17974 } 17975 #pragma omp target teams distribute parallel for simd 17976 for (int i = 0; i < 10; ++i) { 17977 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17978 { 17979 bar(); 17980 } 17981 } 17982 #pragma omp target teams distribute parallel for simd 17983 for (int i = 0; i < 10; ++i) { 17984 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17985 { 17986 bar(); 17987 } 17988 } 17989 #pragma omp target teams distribute parallel for simd 17990 for (int i = 0; i < 10; ++i) { 17991 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17992 { 17993 bar(); 17994 } 17995 } 17996 #pragma omp target teams distribute parallel for simd 17997 for (int i = 0; i < 10; ++i) { 17998 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17999 { 18000 bar(); 18001 } 18002 } 18003 #pragma omp target teams distribute parallel for simd 18004 for (int i = 0; i < 10; ++i) { 18005 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18006 { 18007 bar(); 18008 } 18009 } 18010 #pragma omp target teams distribute parallel for simd 18011 for (int i = 0; i < 10; ++i) { 18012 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18013 { 18014 #pragma omp single 18015 { 18016 bar(); 18017 } 18018 } 18019 } 18020 #pragma omp target teams distribute parallel for simd 18021 for (int i = 0; i < 10; ++i) { 18022 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18023 for (int i = 0; i < 10; ++i) 18024 ; 18025 } 18026 #pragma omp target teams distribute parallel for simd 18027 for (int i = 0; i < 10; ++i) { 18028 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18029 for (int i = 0; i < 10; ++i) 18030 ; 18031 } 18032 #pragma omp target teams distribute parallel for simd 18033 for (int i = 0; i < 10; ++i) { 18034 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18035 { 18036 bar(); 18037 } 18038 } 18039 #pragma omp target teams distribute parallel for simd 18040 for (int i = 0; i < 10; ++i) { 18041 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18042 { 18043 bar(); 18044 } 18045 } 18046 #pragma omp target teams distribute parallel for simd 18047 for (int i = 0; i < 10; ++i) { 18048 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18049 bar(); 18050 } 18051 #pragma omp target teams distribute parallel for simd 18052 for (int i = 0; i < 10; ++i) { 18053 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18054 bar(); 18055 } 18056 #pragma omp target teams distribute parallel for simd 18057 for (int i = 0; i < 10; ++i) { 18058 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 18059 bar(); 18060 } 18061 #pragma omp target teams distribute parallel for simd 18062 for (int i = 0; i < 10; ++i) { 18063 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18064 bar(); 18065 } 18066 #pragma omp target teams distribute parallel for simd 18067 for (int i = 0; i < 10; ++i) { 18068 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18069 bar(); 18070 } 18071 #pragma omp target teams distribute parallel for simd 18072 for (int i = 0; i < 10; ++i) { 18073 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18074 bar(); 18075 } 18076 #pragma omp target teams distribute parallel for simd 18077 for (int i = 0; i < 10; ++i) { 18078 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 18079 ++a; 18080 } 18081 #pragma omp target teams distribute parallel for simd 18082 for (int i = 0; i < 10; ++i) { 18083 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18084 ++a; 18085 } 18086 #pragma omp target teams distribute parallel for simd 18087 for (int i = 0; i < 10; ++i) { 18088 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18089 ++a; 18090 } 18091 #pragma omp target teams distribute parallel for simd 18092 for (int i = 0; i < 10; ++i) { 18093 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18094 for (int i = 0; i < 10; ++i) 18095 ; 18096 } 18097 #pragma omp target teams distribute parallel for simd 18098 for (int i = 0; i < 10; ++i) { 18099 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18100 ++a; 18101 } 18102 #pragma omp target teams distribute parallel for simd 18103 for (int i = 0; i < 10; ++i) { 18104 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18105 ++a; 18106 } 18107 #pragma omp target teams distribute parallel for simd 18108 for (int i = 0; i < 10; ++i) { 18109 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18110 ++a; 18111 } 18112 #pragma omp target teams distribute parallel for simd 18113 for (int i = 0; i < 10; ++i) { 18114 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18115 ++a; 18116 } 18117 #pragma omp target teams distribute parallel for simd 18118 for (int i = 0; i < 10; ++i) { 18119 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18120 for (int i = 0; i < 10; ++i) 18121 ++a; 18122 } 18123 #pragma omp target teams distribute parallel for simd 18124 for (int i = 0; i < 10; ++i) { 18125 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18126 for (int i = 0; i < 10; ++i) 18127 ++a; 18128 } 18129 #pragma omp target teams distribute parallel for simd 18130 for (int i = 0; i < 10; ++i) { 18131 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18132 for (int i = 0; i < 10; ++i) 18133 ++a; 18134 } 18135 #pragma omp target teams distribute parallel for simd 18136 for (int i = 0; i < 10; ++i) { 18137 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18138 for (int i = 0; i < 10; ++i) 18139 ++a; 18140 } 18141 #pragma omp target teams distribute parallel for simd 18142 for (int i = 0; i < 10; ++i) { 18143 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18144 for (int i = 0; i < 10; ++i) 18145 ++a; 18146 } 18147 #pragma omp target teams distribute parallel for simd 18148 for (int i = 0; i < 10; ++i) { 18149 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18150 for (int i = 0; i < 10; ++i) 18151 ; 18152 } 18153 #pragma omp target teams distribute parallel for simd 18154 for (int i = 0; i < 10; ++i) { 18155 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18156 a++; 18157 } 18158 #pragma omp target teams distribute parallel for simd 18159 for (int i = 0; i < 10; ++i) { 18160 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18161 for (int i = 0; i < 10; ++i) 18162 ; 18163 } 18164 #pragma omp target teams distribute parallel for simd 18165 for (int i = 0; i < 10; ++i) { 18166 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18167 for (int i = 0; i < 10; ++i) 18168 ; 18169 } 18170 #pragma omp target teams distribute parallel for simd 18171 for (int i = 0; i < 10; ++i) { 18172 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18173 for (int i = 0; i < 10; ++i) 18174 ; 18175 } 18176 #pragma omp target teams distribute parallel for simd 18177 for (int i = 0; i < 10; ++i) { 18178 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18179 for (int i = 0; i < 10; ++i) 18180 ; 18181 } 18182 18183 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 18184 #pragma omp target teams distribute simd // OK 18185 for (int i = 0; i < 10; ++i) 18186 ; 18187 #pragma omp target teams distribute simd 18188 for (int i = 0; i < 10; ++i) { 18189 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18190 for (int i = 0; i < 10; ++i) 18191 ; 18192 } 18193 #pragma omp target teams distribute simd 18194 for (int i = 0; i < 10; ++i) { 18195 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18196 for (int i = 0; i < 10; ++i) 18197 ; 18198 } 18199 #pragma omp target teams distribute simd 18200 for (int i = 0; i < 10; ++i) { 18201 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18202 for (int i = 0; i < 10; ++i) 18203 ; 18204 } 18205 #pragma omp target teams distribute simd 18206 for (int i = 0; i < 10; ++i) { 18207 #pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 18208 for (int i = 0; i < 10; ++i) 18209 ; 18210 } 18211 #pragma omp target teams distribute simd 18212 for (int i = 0; i < 10; ++i) { 18213 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18214 for (int i = 0; i < 10; ++i) 18215 ; 18216 } 18217 #pragma omp target teams distribute simd 18218 for (int i = 0; i < 10; ++i) { 18219 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18220 for (int i = 0; i < 10; ++i) 18221 ; 18222 } 18223 #pragma omp target teams distribute simd 18224 for (int i = 0; i < 10; ++i) { 18225 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18226 { 18227 bar(); 18228 } 18229 } 18230 #pragma omp target teams distribute simd 18231 for (int i = 0; i < 10; ++i) { 18232 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18233 { 18234 bar(); 18235 } 18236 } 18237 #pragma omp target teams distribute simd 18238 for (int i = 0; i < 10; ++i) { 18239 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18240 { 18241 bar(); 18242 } 18243 } 18244 #pragma omp target teams distribute simd 18245 for (int i = 0; i < 10; ++i) { 18246 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18247 { 18248 bar(); 18249 } 18250 } 18251 #pragma omp target teams distribute simd 18252 for (int i = 0; i < 10; ++i) { 18253 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18254 { 18255 bar(); 18256 } 18257 } 18258 #pragma omp target teams distribute simd 18259 for (int i = 0; i < 10; ++i) { 18260 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18261 { 18262 #pragma omp single 18263 { 18264 bar(); 18265 } 18266 } 18267 } 18268 #pragma omp target teams distribute simd 18269 for (int i = 0; i < 10; ++i) { 18270 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18271 for (int i = 0; i < 10; ++i) 18272 ; 18273 } 18274 #pragma omp target teams distribute simd 18275 for (int i = 0; i < 10; ++i) { 18276 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18277 for (int i = 0; i < 10; ++i) 18278 ; 18279 } 18280 #pragma omp target teams distribute simd 18281 for (int i = 0; i < 10; ++i) { 18282 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18283 { 18284 bar(); 18285 } 18286 } 18287 #pragma omp target teams distribute simd 18288 for (int i = 0; i < 10; ++i) { 18289 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18290 { 18291 bar(); 18292 } 18293 } 18294 #pragma omp target teams distribute simd 18295 for (int i = 0; i < 10; ++i) { 18296 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18297 bar(); 18298 } 18299 #pragma omp target teams distribute simd 18300 for (int i = 0; i < 10; ++i) { 18301 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18302 bar(); 18303 } 18304 #pragma omp target teams distribute simd 18305 for (int i = 0; i < 10; ++i) { 18306 #pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} 18307 bar(); 18308 } 18309 #pragma omp target teams distribute simd 18310 for (int i = 0; i < 10; ++i) { 18311 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18312 bar(); 18313 } 18314 #pragma omp target teams distribute simd 18315 for (int i = 0; i < 10; ++i) { 18316 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18317 bar(); 18318 } 18319 #pragma omp target teams distribute simd 18320 for (int i = 0; i < 10; ++i) { 18321 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18322 bar(); 18323 } 18324 #pragma omp target teams distribute simd 18325 for (int i = 0; i < 10; ++i) { 18326 #pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}} 18327 ++a; 18328 } 18329 #pragma omp target teams distribute simd 18330 for (int i = 0; i < 10; ++i) { 18331 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18332 ++a; 18333 } 18334 #pragma omp target teams distribute simd 18335 for (int i = 0; i < 10; ++i) { 18336 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18337 ++a; 18338 } 18339 #pragma omp target teams distribute simd 18340 for (int i = 0; i < 10; ++i) { 18341 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18342 for (int i = 0; i < 10; ++i) 18343 ; 18344 } 18345 #pragma omp target teams distribute simd 18346 for (int i = 0; i < 10; ++i) { 18347 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18348 ++a; 18349 } 18350 #pragma omp target teams distribute simd 18351 for (int i = 0; i < 10; ++i) { 18352 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18353 ++a; 18354 } 18355 #pragma omp target teams distribute simd 18356 for (int i = 0; i < 10; ++i) { 18357 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18358 ++a; 18359 } 18360 #pragma omp target teams distribute simd 18361 for (int i = 0; i < 10; ++i) { 18362 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18363 ++a; 18364 } 18365 #pragma omp target teams distribute simd 18366 for (int i = 0; i < 10; ++i) { 18367 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18368 for (int i = 0; i < 10; ++i) 18369 ++a; 18370 } 18371 #pragma omp target teams distribute simd 18372 for (int i = 0; i < 10; ++i) { 18373 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18374 for (int i = 0; i < 10; ++i) 18375 ++a; 18376 } 18377 #pragma omp target teams distribute simd 18378 for (int i = 0; i < 10; ++i) { 18379 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18380 for (int i = 0; i < 10; ++i) 18381 ++a; 18382 } 18383 #pragma omp target teams distribute simd 18384 for (int i = 0; i < 10; ++i) { 18385 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18386 for (int i = 0; i < 10; ++i) 18387 ++a; 18388 } 18389 #pragma omp target teams distribute simd 18390 for (int i = 0; i < 10; ++i) { 18391 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18392 for (int i = 0; i < 10; ++i) 18393 ++a; 18394 } 18395 #pragma omp target teams distribute simd 18396 for (int i = 0; i < 10; ++i) { 18397 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18398 for (int i = 0; i < 10; ++i) 18399 ; 18400 } 18401 #pragma omp target teams distribute simd 18402 for (int i = 0; i < 10; ++i) { 18403 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18404 a++; 18405 } 18406 #pragma omp target teams distribute simd 18407 for (int i = 0; i < 10; ++i) { 18408 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18409 for (int i = 0; i < 10; ++i) 18410 ; 18411 } 18412 #pragma omp target teams distribute simd 18413 for (int i = 0; i < 10; ++i) { 18414 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18415 for (int i = 0; i < 10; ++i) 18416 ; 18417 } 18418 #pragma omp target teams distribute simd 18419 for (int i = 0; i < 10; ++i) { 18420 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18421 for (int i = 0; i < 10; ++i) 18422 ; 18423 } 18424 #pragma omp target teams distribute simd 18425 for (int i = 0; i < 10; ++i) { 18426 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 18427 for (int i = 0; i < 10; ++i) 18428 ; 18429 } 18430 18431 return foo<int>(); 18432 } 18433 18434