1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s 2 3 // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify %s 4 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 5 6 void bar(); 7 8 template <class T> 9 void foo() { 10 T a = T(); 11 // PARALLEL DIRECTIVE 12 #pragma omp parallel 13 #pragma omp for 14 for (int i = 0; i < 10; ++i) 15 ; 16 #pragma omp parallel 17 #pragma omp simd 18 for (int i = 0; i < 10; ++i) 19 ; 20 #pragma omp parallel 21 #pragma omp for simd 22 for (int i = 0; i < 10; ++i) 23 ; 24 #pragma omp parallel 25 #pragma omp sections 26 { 27 bar(); 28 } 29 #pragma omp parallel 30 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 31 { 32 bar(); 33 } 34 #pragma omp parallel 35 #pragma omp single 36 bar(); 37 38 #pragma omp parallel 39 #pragma omp master 40 { 41 bar(); 42 } 43 #pragma omp parallel 44 #pragma omp critical 45 { 46 bar(); 47 } 48 #pragma omp parallel 49 #pragma omp parallel for 50 for (int i = 0; i < 10; ++i) 51 ; 52 #pragma omp parallel 53 #pragma omp parallel for simd 54 for (int i = 0; i < 10; ++i) 55 ; 56 #pragma omp parallel 57 #pragma omp parallel sections 58 { 59 bar(); 60 } 61 #pragma omp parallel 62 #pragma omp task 63 { 64 bar(); 65 } 66 #pragma omp parallel 67 { 68 #pragma omp taskyield 69 bar(); 70 } 71 #pragma omp parallel 72 { 73 #pragma omp barrier 74 bar(); 75 } 76 #pragma omp parallel 77 { 78 #pragma omp taskwait 79 bar(); 80 } 81 #pragma omp parallel 82 { 83 #pragma omp flush 84 bar(); 85 } 86 #pragma omp parallel 87 { 88 #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?}} 89 bar(); 90 } 91 #pragma omp parallel 92 { 93 #pragma omp atomic 94 ++a; 95 } 96 #pragma omp parallel 97 { 98 #pragma omp target 99 ++a; 100 } 101 #pragma omp parallel 102 { 103 #pragma omp target parallel 104 ++a; 105 } 106 #pragma omp parallel 107 { 108 #pragma omp target parallel for 109 for (int i = 0; i < 10; ++i) 110 ; 111 } 112 #pragma omp parallel 113 { 114 #pragma omp target enter data map(to: a) 115 ++a; 116 } 117 #pragma omp parallel 118 { 119 #pragma omp target exit data map(from: a) 120 ++a; 121 } 122 #pragma omp parallel 123 { 124 #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?}} 125 ++a; 126 } 127 #pragma omp parallel 128 { 129 #pragma omp taskloop 130 for (int i = 0; i < 10; ++i) 131 ++a; 132 } 133 #pragma omp parallel 134 { 135 #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?}} 136 for (int i = 0; i < 10; ++i) 137 ; 138 } 139 #pragma omp parallel 140 { 141 #pragma omp target update to(a) 142 } 143 #pragma omp parallel 144 { 145 #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?}} 146 for (int i = 0; i < 10; ++i) 147 ; 148 } 149 #pragma omp parallel 150 { 151 #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?}} 152 for (int i = 0; i < 10; ++i) 153 ; 154 } 155 #pragma omp parallel 156 { 157 #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?}} 158 for (int i = 0; i < 10; ++i) 159 ; 160 } 161 #pragma omp parallel 162 { 163 #pragma omp target simd // OK 164 for (int i = 0; i < 10; ++i) 165 ; 166 } 167 #pragma omp parallel 168 { 169 #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?}} 170 for (int i = 0; i < 10; ++i) 171 ; 172 } 173 #pragma omp parallel 174 { 175 #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?}} 176 for (int i = 0; i < 10; ++i) 177 ; 178 } 179 #pragma omp parallel 180 { 181 #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?}} 182 for (int i = 0; i < 10; ++i) 183 ; 184 } 185 #pragma omp parallel 186 { 187 #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?}} 188 for (int i = 0; i < 10; ++i) 189 ; 190 } 191 #pragma omp parallel 192 { 193 #pragma omp target teams // OK 194 ++a; 195 } 196 #pragma omp parallel 197 { 198 #pragma omp target teams distribute // OK 199 for (int i = 0; i < 10; ++i) 200 ; 201 } 202 #pragma omp parallel 203 { 204 #pragma omp target teams distribute parallel for // OK 205 for (int i = 0; i < 10; ++i) 206 ; 207 } 208 #pragma omp parallel 209 { 210 #pragma omp target teams distribute parallel for simd // OK 211 for (int i = 0; i < 10; ++i) 212 ; 213 } 214 #pragma omp parallel 215 { 216 #pragma omp target teams distribute simd // OK 217 for (int i = 0; i < 10; ++i) 218 ; 219 } 220 221 // SIMD DIRECTIVE 222 #pragma omp simd 223 for (int i = 0; i < 10; ++i) { 224 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 225 for (int i = 0; i < 10; ++i) 226 ; 227 } 228 #pragma omp simd 229 for (int i = 0; i < 10; ++i) { 230 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 231 for (int i = 0; i < 10; ++i) 232 ; 233 } 234 #pragma omp simd 235 for (int i = 0; i < 10; ++i) { 236 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 237 for (int i = 0; i < 10; ++i) 238 ; 239 } 240 #pragma omp simd 241 for (int i = 0; i < 10; ++i) { 242 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 243 for (int i = 0; i < 10; ++i) 244 ; 245 } 246 #pragma omp simd 247 for (int i = 0; i < 10; ++i) { 248 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 249 { 250 bar(); 251 } 252 } 253 #pragma omp simd 254 for (int i = 0; i < 10; ++i) { 255 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 256 { 257 bar(); 258 } 259 } 260 #pragma omp simd 261 for (int i = 0; i < 10; ++i) { 262 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 263 { 264 bar(); 265 } 266 } 267 #pragma omp simd 268 for (int i = 0; i < 10; ++i) { 269 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 270 { 271 bar(); 272 } 273 } 274 #pragma omp simd 275 for (int i = 0; i < 10; ++i) { 276 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 277 { 278 bar(); 279 } 280 } 281 #pragma omp simd 282 for (int i = 0; i < 10; ++i) { 283 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 284 for (int i = 0; i < 10; ++i) 285 ; 286 } 287 #pragma omp simd 288 for (int i = 0; i < 10; ++i) { 289 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 290 for (int i = 0; i < 10; ++i) 291 ; 292 } 293 #pragma omp simd 294 for (int i = 0; i < 10; ++i) { 295 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 296 { 297 bar(); 298 } 299 } 300 #pragma omp simd 301 for (int i = 0; i < 10; ++i) { 302 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 303 { 304 bar(); 305 } 306 } 307 #pragma omp simd 308 for (int i = 0; i < 10; ++i) { 309 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 310 bar(); 311 } 312 #pragma omp simd 313 for (int i = 0; i < 10; ++i) { 314 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 315 bar(); 316 } 317 #pragma omp simd 318 for (int i = 0; i < 10; ++i) { 319 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 320 bar(); 321 } 322 #pragma omp simd 323 for (int i = 0; i < 10; ++i) { 324 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 325 bar(); 326 } 327 #pragma omp simd 328 for (int i = 0; i < 10; ++i) { 329 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 330 bar(); 331 } 332 #pragma omp simd 333 for (int i = 0; i < 10; ++i) { 334 #pragma omp ordered simd // OK 335 bar(); 336 } 337 #pragma omp simd 338 for (int i = 0; i < 10; ++i) { 339 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 340 bar(); 341 } 342 #pragma omp simd 343 for (int i = 0; i < 10; ++i) { 344 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 345 ++a; 346 } 347 #pragma omp simd 348 for (int i = 0; i < 10; ++i) { 349 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 350 ++a; 351 } 352 #pragma omp simd 353 for (int i = 0; i < 10; ++i) { 354 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 355 ++a; 356 } 357 #pragma omp simd 358 for (int i = 0; i < 10; ++i) { 359 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 360 for (int i = 0; i < 10; ++i) 361 ; 362 } 363 #pragma omp simd 364 for (int i = 0; i < 10; ++i) { 365 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 366 ++a; 367 } 368 #pragma omp simd 369 for (int i = 0; i < 10; ++i) { 370 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 371 ++a; 372 } 373 #pragma omp simd 374 for (int i = 0; i < 10; ++i) { 375 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 376 ++a; 377 } 378 #pragma omp simd 379 for (int i = 0; i < 10; ++i) { 380 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 381 for (int i = 0; i < 10; ++i) 382 ++a; 383 } 384 #pragma omp simd 385 for (int i = 0; i < 10; ++i) { 386 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 387 for (int j = 0; j < 10; ++j) 388 ; 389 } 390 #pragma omp simd 391 for (int i = 0; i < 10; ++i) { 392 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 393 } 394 #pragma omp simd 395 for (int i = 0; i < 10; ++i) { 396 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 397 for (int j = 0; j < 10; ++j) 398 ; 399 } 400 #pragma omp simd 401 for (int i = 0; i < 10; ++i) { 402 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 403 for (int j = 0; j < 10; ++j) 404 ; 405 } 406 #pragma omp simd 407 for (int i = 0; i < 10; ++i) { 408 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 409 for (int j = 0; j < 10; ++j) 410 ; 411 } 412 #pragma omp simd 413 for (int i = 0; i < 10; ++i) { 414 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 415 for (int j = 0; j < 10; ++j) 416 ; 417 } 418 #pragma omp simd 419 for (int i = 0; i < 10; ++i) { 420 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 421 for (int j = 0; j < 10; ++j) 422 ; 423 } 424 #pragma omp simd 425 for (int i = 0; i < 10; ++i) { 426 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 427 for (int j = 0; j < 10; ++j) 428 ; 429 } 430 #pragma omp simd 431 for (int i = 0; i < 10; ++i) { 432 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 433 for (int j = 0; j < 10; ++j) 434 ; 435 } 436 #pragma omp simd 437 for (int i = 0; i < 10; ++i) { 438 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 439 for (int j = 0; j < 10; ++j) 440 ; 441 } 442 #pragma omp simd 443 for (int i = 0; i < 10; ++i) { 444 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 445 ++a; 446 } 447 #pragma omp simd 448 for (int i = 0; i < 10; ++i) { 449 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 450 for (int j = 0; j < 10; ++j) 451 ; 452 } 453 #pragma omp simd 454 for (int i = 0; i < 10; ++i) { 455 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 456 for (int j = 0; j < 10; ++j) 457 ; 458 } 459 #pragma omp simd 460 for (int i = 0; i < 10; ++i) { 461 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 462 for (int j = 0; j < 10; ++j) 463 ; 464 } 465 #pragma omp simd 466 for (int i = 0; i < 10; ++i) { 467 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 468 for (int j = 0; j < 10; ++j) 469 ; 470 } 471 472 // FOR DIRECTIVE 473 #pragma omp for 474 for (int i = 0; i < 10; ++i) { 475 #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?}} 476 for (int i = 0; i < 10; ++i) 477 ; 478 } 479 #pragma omp for 480 for (int i = 0; i < 10; ++i) { 481 #pragma omp simd 482 for (int i = 0; i < 10; ++i) 483 ; 484 } 485 #pragma omp for 486 for (int i = 0; i < 10; ++i) { 487 #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?}} 488 for (int i = 0; i < 10; ++i) 489 ; 490 } 491 #pragma omp for 492 for (int i = 0; i < 10; ++i) { 493 #pragma omp parallel 494 for (int i = 0; i < 10; ++i) 495 ; 496 } 497 #pragma omp for 498 for (int i = 0; i < 10; ++i) { 499 #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?}} 500 { 501 bar(); 502 } 503 } 504 #pragma omp for 505 for (int i = 0; i < 10; ++i) { 506 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 507 { 508 bar(); 509 } 510 } 511 #pragma omp for 512 for (int i = 0; i < 10; ++i) { 513 #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?}} 514 { 515 bar(); 516 } 517 } 518 519 #pragma omp for 520 for (int i = 0; i < 10; ++i) { 521 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 522 { 523 bar(); 524 } 525 } 526 #pragma omp for 527 for (int i = 0; i < 10; ++i) { 528 #pragma omp critical 529 { 530 bar(); 531 } 532 } 533 #pragma omp for 534 for (int i = 0; i < 10; ++i) { 535 #pragma omp parallel 536 { 537 #pragma omp single // OK 538 { 539 bar(); 540 } 541 #pragma omp for // OK 542 for (int i = 0; i < 10; ++i) 543 ; 544 #pragma omp sections // OK 545 { 546 bar(); 547 } 548 } 549 } 550 #pragma omp for 551 for (int i = 0; i < 10; ++i) { 552 #pragma omp parallel for 553 for (int i = 0; i < 10; ++i) 554 ; 555 } 556 #pragma omp for 557 for (int i = 0; i < 10; ++i) { 558 #pragma omp parallel for simd 559 for (int i = 0; i < 10; ++i) 560 ; 561 } 562 #pragma omp for 563 for (int i = 0; i < 10; ++i) { 564 #pragma omp parallel sections 565 { 566 bar(); 567 } 568 } 569 #pragma omp for 570 for (int i = 0; i < 10; ++i) { 571 #pragma omp task 572 { 573 bar(); 574 } 575 } 576 #pragma omp for 577 for (int i = 0; i < 10; ++i) { 578 #pragma omp taskyield 579 bar(); 580 } 581 #pragma omp for 582 for (int i = 0; i < 10; ++i) { 583 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 584 bar(); 585 } 586 #pragma omp for 587 for (int i = 0; i < 10; ++i) { 588 #pragma omp taskwait 589 bar(); 590 } 591 #pragma omp for 592 for (int i = 0; i < 10; ++i) { 593 #pragma omp flush 594 bar(); 595 } 596 #pragma omp for 597 for (int i = 0; i < 10; ++i) { 598 #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?}} 599 bar(); 600 } 601 #pragma omp for ordered 602 for (int i = 0; i < 10; ++i) { 603 #pragma omp ordered // OK 604 bar(); 605 } 606 #pragma omp for 607 for (int i = 0; i < 10; ++i) { 608 #pragma omp atomic 609 ++a; 610 } 611 #pragma omp for 612 for (int i = 0; i < 10; ++i) { 613 #pragma omp target 614 ++a; 615 } 616 #pragma omp for 617 for (int i = 0; i < 10; ++i) { 618 #pragma omp target parallel 619 ++a; 620 } 621 #pragma omp for 622 for (int i = 0; i < 10; ++i) { 623 #pragma omp target parallel for 624 for (int i = 0; i < 10; ++i) 625 ; 626 } 627 #pragma omp for 628 for (int i = 0; i < 10; ++i) { 629 #pragma omp target enter data map(to: a) 630 ++a; 631 } 632 #pragma omp for 633 for (int i = 0; i < 10; ++i) { 634 #pragma omp target exit data map(from: a) 635 ++a; 636 } 637 #pragma omp for 638 for (int i = 0; i < 10; ++i) { 639 #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?}} 640 ++a; 641 } 642 #pragma omp for 643 for (int i = 0; i < 10; ++i) { 644 #pragma omp taskloop 645 for (int i = 0; i < 10; ++i) 646 ++a; 647 } 648 #pragma omp for 649 for (int i = 0; i < 10; ++i) { 650 #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?}} 651 for (int j = 0; j < 10; ++j) 652 ; 653 } 654 #pragma omp for 655 for (int i = 0; i < 10; ++i) { 656 #pragma omp target update to(a) 657 } 658 #pragma omp for 659 for (int i = 0; i < 10; ++i) { 660 #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?}} 661 for (int j = 0; j < 10; ++j) 662 ; 663 } 664 #pragma omp for 665 for (int i = 0; i < 10; ++i) { 666 #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?}} 667 for (int j = 0; j < 10; ++j) 668 ; 669 } 670 #pragma omp for 671 for (int i = 0; i < 10; ++i) { 672 #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?}} 673 for (int j = 0; j < 10; ++j) 674 ; 675 } 676 #pragma omp for 677 for (int i = 0; i < 10; ++i) { 678 #pragma omp target simd // OK 679 for (int j = 0; j < 10; ++j) 680 ; 681 } 682 #pragma omp for 683 for (int i = 0; i < 10; ++i) { 684 #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?}} 685 for (int j = 0; j < 10; ++j) 686 ; 687 } 688 #pragma omp for 689 for (int i = 0; i < 10; ++i) { 690 #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?}} 691 for (int j = 0; j < 10; ++j) 692 ; 693 } 694 #pragma omp for 695 for (int i = 0; i < 10; ++i) { 696 #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?}} 697 for (int j = 0; j < 10; ++j) 698 ; 699 } 700 #pragma omp for 701 for (int i = 0; i < 10; ++i) { 702 #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?}} 703 for (int j = 0; j < 10; ++j) 704 ; 705 } 706 #pragma omp for 707 for (int i = 0; i < 10; ++i) { 708 #pragma omp target teams // OK 709 ++a; 710 } 711 #pragma omp for 712 for (int i = 0; i < 10; ++i) { 713 #pragma omp target teams distribute // OK 714 for (int j = 0; j < 10; ++j) 715 ; 716 } 717 #pragma omp for 718 for (int i = 0; i < 10; ++i) { 719 #pragma omp target teams distribute parallel for // OK 720 for (int j = 0; j < 10; ++j) 721 ; 722 } 723 #pragma omp for 724 for (int i = 0; i < 10; ++i) { 725 #pragma omp target teams distribute parallel for simd // OK 726 for (int j = 0; j < 10; ++j) 727 ; 728 } 729 #pragma omp for 730 for (int i = 0; i < 10; ++i) { 731 #pragma omp target teams distribute simd // OK 732 for (int j = 0; j < 10; ++j) 733 ; 734 } 735 736 // FOR SIMD DIRECTIVE 737 #pragma omp for simd 738 for (int i = 0; i < 10; ++i) { 739 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 740 for (int i = 0; i < 10; ++i) 741 ; 742 } 743 #pragma omp for simd 744 for (int i = 0; i < 10; ++i) { 745 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 746 for (int i = 0; i < 10; ++i) 747 ; 748 } 749 #pragma omp for simd 750 for (int i = 0; i < 10; ++i) { 751 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 752 for (int i = 0; i < 10; ++i) 753 ; 754 } 755 #pragma omp for simd 756 for (int i = 0; i < 10; ++i) { 757 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 758 for (int i = 0; i < 10; ++i) 759 ; 760 } 761 #pragma omp for simd 762 for (int i = 0; i < 10; ++i) { 763 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 764 { 765 bar(); 766 } 767 } 768 #pragma omp for simd 769 for (int i = 0; i < 10; ++i) { 770 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 771 { 772 bar(); 773 } 774 } 775 #pragma omp for simd 776 for (int i = 0; i < 10; ++i) { 777 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 778 { 779 bar(); 780 } 781 } 782 #pragma omp for simd 783 for (int i = 0; i < 10; ++i) { 784 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 785 { 786 bar(); 787 } 788 } 789 #pragma omp for simd 790 for (int i = 0; i < 10; ++i) { 791 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 792 { 793 bar(); 794 } 795 } 796 #pragma omp for simd 797 for (int i = 0; i < 10; ++i) { 798 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 799 for (int i = 0; i < 10; ++i) 800 ; 801 } 802 #pragma omp for simd 803 for (int i = 0; i < 10; ++i) { 804 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 805 for (int i = 0; i < 10; ++i) 806 ; 807 } 808 #pragma omp for simd 809 for (int i = 0; i < 10; ++i) { 810 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 811 { 812 bar(); 813 } 814 } 815 #pragma omp for simd 816 for (int i = 0; i < 10; ++i) { 817 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 818 { 819 bar(); 820 } 821 } 822 #pragma omp for simd 823 for (int i = 0; i < 10; ++i) { 824 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 825 bar(); 826 } 827 #pragma omp for simd 828 for (int i = 0; i < 10; ++i) { 829 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 830 bar(); 831 } 832 #pragma omp for simd 833 for (int i = 0; i < 10; ++i) { 834 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 835 bar(); 836 } 837 #pragma omp for simd 838 for (int i = 0; i < 10; ++i) { 839 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 840 bar(); 841 } 842 #pragma omp for simd 843 for (int i = 0; i < 10; ++i) { 844 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 845 bar(); 846 } 847 #pragma omp for simd 848 for (int i = 0; i < 10; ++i) { 849 #pragma omp ordered simd // OK 850 bar(); 851 } 852 #pragma omp for simd 853 for (int i = 0; i < 10; ++i) { 854 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 855 bar(); 856 } 857 #pragma omp for simd 858 for (int i = 0; i < 10; ++i) { 859 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 860 ++a; 861 } 862 #pragma omp for simd 863 for (int i = 0; i < 10; ++i) { 864 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 865 ++a; 866 } 867 #pragma omp for simd 868 for (int i = 0; i < 10; ++i) { 869 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 870 ++a; 871 } 872 #pragma omp for simd 873 for (int i = 0; i < 10; ++i) { 874 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 875 for (int i = 0; i < 10; ++i) 876 ; 877 } 878 #pragma omp for simd 879 for (int i = 0; i < 10; ++i) { 880 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 881 ++a; 882 } 883 #pragma omp for simd 884 for (int i = 0; i < 10; ++i) { 885 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 886 ++a; 887 } 888 #pragma omp for simd 889 for (int i = 0; i < 10; ++i) { 890 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 891 ++a; 892 } 893 #pragma omp for simd 894 for (int i = 0; i < 10; ++i) { 895 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 896 for (int i = 0; i < 10; ++i) 897 ++a; 898 } 899 #pragma omp for simd 900 for (int i = 0; i < 10; ++i) { 901 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 902 for (int j = 0; j < 10; ++j) 903 ; 904 } 905 #pragma omp for simd 906 for (int i = 0; i < 10; ++i) { 907 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 908 bar(); 909 } 910 #pragma omp for simd 911 for (int i = 0; i < 10; ++i) { 912 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 913 for (int j = 0; j < 10; ++j) 914 ; 915 } 916 #pragma omp for simd 917 for (int i = 0; i < 10; ++i) { 918 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 919 for (int j = 0; j < 10; ++j) 920 ; 921 } 922 #pragma omp for simd 923 for (int i = 0; i < 10; ++i) { 924 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 925 for (int j = 0; j < 10; ++j) 926 ; 927 } 928 #pragma omp for simd 929 for (int i = 0; i < 10; ++i) { 930 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 931 for (int j = 0; j < 10; ++j) 932 ; 933 } 934 #pragma omp for simd 935 for (int i = 0; i < 10; ++i) { 936 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 937 for (int j = 0; j < 10; ++j) 938 ; 939 } 940 #pragma omp for simd 941 for (int i = 0; i < 10; ++i) { 942 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 943 for (int j = 0; j < 10; ++j) 944 ; 945 } 946 #pragma omp for simd 947 for (int i = 0; i < 10; ++i) { 948 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 949 for (int j = 0; j < 10; ++j) 950 ; 951 } 952 #pragma omp for simd 953 for (int i = 0; i < 10; ++i) { 954 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 955 for (int j = 0; j < 10; ++j) 956 ; 957 } 958 #pragma omp for simd 959 for (int i = 0; i < 10; ++i) { 960 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 961 a++; 962 } 963 #pragma omp for simd 964 for (int i = 0; i < 10; ++i) { 965 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 966 for (int j = 0; j < 10; ++j) 967 ; 968 } 969 #pragma omp for simd 970 for (int i = 0; i < 10; ++i) { 971 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 972 for (int j = 0; j < 10; ++j) 973 ; 974 } 975 #pragma omp for simd 976 for (int i = 0; i < 10; ++i) { 977 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 978 for (int j = 0; j < 10; ++j) 979 ; 980 } 981 #pragma omp for simd 982 for (int i = 0; i < 10; ++i) { 983 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 984 for (int j = 0; j < 10; ++j) 985 ; 986 } 987 988 // SECTIONS DIRECTIVE 989 #pragma omp sections 990 { 991 #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?}} 992 for (int i = 0; i < 10; ++i) 993 ; 994 } 995 #pragma omp sections 996 { 997 #pragma omp simd 998 for (int i = 0; i < 10; ++i) 999 ; 1000 } 1001 #pragma omp sections 1002 { 1003 #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?}} 1004 for (int i = 0; i < 10; ++i) 1005 ; 1006 } 1007 #pragma omp sections 1008 { 1009 #pragma omp parallel 1010 for (int i = 0; i < 10; ++i) 1011 ; 1012 } 1013 #pragma omp sections 1014 { 1015 #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?}} 1016 { 1017 bar(); 1018 } 1019 } 1020 #pragma omp sections 1021 { 1022 #pragma omp section 1023 { 1024 bar(); 1025 } 1026 } 1027 #pragma omp sections 1028 { 1029 #pragma omp parallel 1030 { 1031 #pragma omp single // OK 1032 { 1033 bar(); 1034 } 1035 #pragma omp for // OK 1036 for (int i = 0; i < 10; ++i) 1037 ; 1038 #pragma omp sections // OK 1039 { 1040 bar(); 1041 } 1042 } 1043 } 1044 #pragma omp sections 1045 { 1046 #pragma omp parallel 1047 { 1048 #pragma omp master // OK 1049 { 1050 bar(); 1051 } 1052 #pragma omp for // OK 1053 for (int i = 0; i < 10; ++i) 1054 ; 1055 #pragma omp master // OK 1056 { 1057 bar(); 1058 } 1059 } 1060 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1061 bar(); 1062 } 1063 #pragma omp sections 1064 { 1065 #pragma omp parallel 1066 { 1067 #pragma omp critical(A) // OK 1068 { 1069 bar(); 1070 } 1071 #pragma omp for // OK 1072 for (int i = 0; i < 10; ++i) 1073 ; 1074 #pragma omp critical // OK 1075 { 1076 bar(); 1077 } 1078 } 1079 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1080 bar(); 1081 } 1082 #pragma omp sections 1083 { 1084 #pragma omp parallel for 1085 for (int i = 0; i < 10; ++i) 1086 ; 1087 } 1088 #pragma omp sections 1089 { 1090 #pragma omp parallel for simd 1091 for (int i = 0; i < 10; ++i) 1092 ; 1093 } 1094 #pragma omp sections 1095 { 1096 #pragma omp parallel sections 1097 { 1098 bar(); 1099 } 1100 } 1101 #pragma omp sections 1102 { 1103 #pragma omp task 1104 { 1105 bar(); 1106 } 1107 } 1108 #pragma omp sections 1109 { 1110 #pragma omp taskyield 1111 } 1112 #pragma omp sections 1113 { 1114 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1115 } 1116 #pragma omp sections 1117 { 1118 #pragma omp taskwait 1119 } 1120 #pragma omp sections 1121 { 1122 #pragma omp flush 1123 } 1124 #pragma omp sections 1125 { 1126 #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?}} 1127 bar(); 1128 } 1129 #pragma omp sections 1130 { 1131 #pragma omp atomic 1132 ++a; 1133 } 1134 #pragma omp sections 1135 { 1136 #pragma omp target 1137 ++a; 1138 } 1139 #pragma omp sections 1140 { 1141 #pragma omp target parallel 1142 ++a; 1143 } 1144 #pragma omp sections 1145 { 1146 #pragma omp target parallel for 1147 for (int i = 0; i < 10; ++i) 1148 ; 1149 } 1150 #pragma omp sections 1151 { 1152 #pragma omp target enter data map(to: a) 1153 } 1154 #pragma omp sections 1155 { 1156 #pragma omp target exit data map(from: a) 1157 } 1158 #pragma omp sections 1159 { 1160 #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?}} 1161 ++a; 1162 } 1163 #pragma omp sections 1164 { 1165 #pragma omp taskloop 1166 for (int i = 0; i < 10; ++i) 1167 ++a; 1168 } 1169 #pragma omp sections 1170 { 1171 #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?}} 1172 for (int i = 0; i < 10; ++i) 1173 ; 1174 } 1175 #pragma omp sections 1176 { 1177 #pragma omp target update to(a) 1178 } 1179 #pragma omp sections 1180 { 1181 #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?}} 1182 for (int i = 0; i < 10; ++i) 1183 ; 1184 } 1185 #pragma omp sections 1186 { 1187 #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?}} 1188 for (int i = 0; i < 10; ++i) 1189 ; 1190 } 1191 #pragma omp sections 1192 { 1193 #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?}} 1194 for (int i = 0; i < 10; ++i) 1195 ; 1196 } 1197 #pragma omp sections 1198 { 1199 #pragma omp target simd // OK 1200 for (int i = 0; i < 10; ++i) 1201 ; 1202 } 1203 #pragma omp sections 1204 { 1205 #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?}} 1206 for (int i = 0; i < 10; ++i) 1207 ; 1208 } 1209 #pragma omp sections 1210 { 1211 #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?}} 1212 for (int i = 0; i < 10; ++i) 1213 ; 1214 } 1215 #pragma omp sections 1216 { 1217 #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?}} 1218 for (int i = 0; i < 10; ++i) 1219 ; 1220 } 1221 #pragma omp sections 1222 { 1223 #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?}} 1224 for (int i = 0; i < 10; ++i) 1225 ; 1226 } 1227 #pragma omp sections 1228 { 1229 #pragma omp target teams // OK 1230 ++a; 1231 } 1232 #pragma omp sections 1233 { 1234 #pragma omp target teams distribute // OK 1235 for (int i = 0; i < 10; ++i) 1236 ; 1237 } 1238 #pragma omp sections 1239 { 1240 #pragma omp target teams distribute parallel for // OK 1241 for (int i = 0; i < 10; ++i) 1242 ; 1243 } 1244 #pragma omp sections 1245 { 1246 #pragma omp target teams distribute parallel for simd // OK 1247 for (int i = 0; i < 10; ++i) 1248 ; 1249 } 1250 #pragma omp sections 1251 { 1252 #pragma omp target teams distribute simd // OK 1253 for (int i = 0; i < 10; ++i) 1254 ; 1255 } 1256 1257 // SECTION DIRECTIVE 1258 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1259 { 1260 bar(); 1261 } 1262 #pragma omp sections 1263 { 1264 #pragma omp section 1265 { 1266 #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?}} 1267 for (int i = 0; i < 10; ++i) 1268 ; 1269 } 1270 } 1271 #pragma omp sections 1272 { 1273 #pragma omp section 1274 { 1275 #pragma omp simd 1276 for (int i = 0; i < 10; ++i) 1277 ; 1278 } 1279 } 1280 #pragma omp sections 1281 { 1282 #pragma omp section 1283 { 1284 #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?}} 1285 for (int i = 0; i < 10; ++i) 1286 ; 1287 } 1288 } 1289 #pragma omp sections 1290 { 1291 #pragma omp section 1292 { 1293 #pragma omp parallel 1294 for (int i = 0; i < 10; ++i) 1295 ; 1296 } 1297 } 1298 #pragma omp sections 1299 { 1300 #pragma omp section 1301 { 1302 #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?}} 1303 { 1304 bar(); 1305 } 1306 } 1307 } 1308 #pragma omp sections 1309 { 1310 #pragma omp section 1311 { 1312 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1313 { 1314 bar(); 1315 } 1316 } 1317 } 1318 #pragma omp sections 1319 { 1320 #pragma omp section 1321 { 1322 #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?}} 1323 bar(); 1324 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1325 bar(); 1326 #pragma omp critical 1327 bar(); 1328 } 1329 } 1330 #pragma omp sections 1331 { 1332 #pragma omp section 1333 { 1334 #pragma omp parallel 1335 { 1336 #pragma omp single // OK 1337 { 1338 bar(); 1339 } 1340 #pragma omp for // OK 1341 for (int i = 0; i < 10; ++i) 1342 ; 1343 #pragma omp for simd // OK 1344 for (int i = 0; i < 10; ++i) 1345 ; 1346 #pragma omp sections // OK 1347 { 1348 bar(); 1349 } 1350 } 1351 } 1352 } 1353 #pragma omp sections 1354 { 1355 #pragma omp section 1356 { 1357 #pragma omp parallel for 1358 for (int i = 0; i < 10; ++i) 1359 ; 1360 } 1361 } 1362 #pragma omp sections 1363 { 1364 #pragma omp section 1365 { 1366 #pragma omp parallel for simd 1367 for (int i = 0; i < 10; ++i) 1368 ; 1369 } 1370 } 1371 #pragma omp sections 1372 { 1373 #pragma omp section 1374 { 1375 #pragma omp parallel sections 1376 { 1377 bar(); 1378 } 1379 } 1380 } 1381 #pragma omp sections 1382 { 1383 #pragma omp section 1384 { 1385 #pragma omp task 1386 { 1387 bar(); 1388 } 1389 } 1390 } 1391 #pragma omp sections 1392 { 1393 #pragma omp section 1394 { 1395 #pragma omp taskyield 1396 bar(); 1397 } 1398 } 1399 #pragma omp sections 1400 { 1401 #pragma omp section 1402 { 1403 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1404 bar(); 1405 } 1406 } 1407 #pragma omp sections 1408 { 1409 #pragma omp section 1410 { 1411 #pragma omp taskwait 1412 bar(); 1413 } 1414 } 1415 #pragma omp sections 1416 { 1417 #pragma omp section 1418 { 1419 #pragma omp flush 1420 bar(); 1421 } 1422 } 1423 #pragma omp sections 1424 { 1425 #pragma omp section 1426 { 1427 #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?}} 1428 bar(); 1429 } 1430 } 1431 #pragma omp sections 1432 { 1433 #pragma omp section 1434 #pragma omp atomic 1435 ++a; 1436 } 1437 #pragma omp sections 1438 { 1439 #pragma omp section 1440 #pragma omp target 1441 ++a; 1442 } 1443 #pragma omp sections 1444 { 1445 #pragma omp section 1446 #pragma omp target parallel 1447 ++a; 1448 } 1449 #pragma omp sections 1450 { 1451 #pragma omp section 1452 { 1453 #pragma omp target parallel for 1454 for (int i = 0; i < 10; ++i) 1455 ; 1456 } 1457 } 1458 #pragma omp sections 1459 { 1460 #pragma omp section 1461 { 1462 #pragma omp target enter data map(to: a) 1463 ++a; 1464 } 1465 } 1466 #pragma omp sections 1467 { 1468 #pragma omp section 1469 { 1470 #pragma omp target exit data map(from: a) 1471 ++a; 1472 } 1473 } 1474 #pragma omp sections 1475 { 1476 #pragma omp section 1477 #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?}} 1478 ++a; 1479 } 1480 #pragma omp sections 1481 { 1482 #pragma omp section 1483 #pragma omp taskloop 1484 for (int i = 0; i < 10; ++i) 1485 ++a; 1486 } 1487 #pragma omp sections 1488 { 1489 #pragma omp section 1490 #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?}} 1491 for (int i = 0; i < 10; ++i) 1492 ; 1493 } 1494 #pragma omp sections 1495 { 1496 #pragma omp section 1497 { 1498 bar(); 1499 #pragma omp target update to(a) 1500 } 1501 } 1502 #pragma omp sections 1503 { 1504 #pragma omp section 1505 #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?}} 1506 for (int i = 0; i < 10; ++i) 1507 ; 1508 } 1509 #pragma omp sections 1510 { 1511 #pragma omp section 1512 #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?}} 1513 for (int i = 0; i < 10; ++i) 1514 ; 1515 } 1516 #pragma omp sections 1517 { 1518 #pragma omp section 1519 #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?}} 1520 for (int i = 0; i < 10; ++i) 1521 ; 1522 } 1523 #pragma omp sections 1524 { 1525 #pragma omp section 1526 #pragma omp target simd // OK 1527 for (int i = 0; i < 10; ++i) 1528 ; 1529 } 1530 #pragma omp sections 1531 { 1532 #pragma omp section 1533 #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?}} 1534 for (int i = 0; i < 10; ++i) 1535 ; 1536 } 1537 #pragma omp sections 1538 { 1539 #pragma omp section 1540 #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?}} 1541 for (int i = 0; i < 10; ++i) 1542 ; 1543 } 1544 #pragma omp sections 1545 { 1546 #pragma omp section 1547 #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?}} 1548 for (int i = 0; i < 10; ++i) 1549 ; 1550 } 1551 #pragma omp sections 1552 { 1553 #pragma omp section 1554 #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?}} 1555 for (int i = 0; i < 10; ++i) 1556 ; 1557 } 1558 #pragma omp sections 1559 { 1560 #pragma omp section 1561 #pragma omp target teams // OK 1562 ++a; 1563 } 1564 #pragma omp sections 1565 { 1566 #pragma omp section 1567 #pragma omp target teams distribute // OK 1568 for (int i = 0; i < 10; ++i) 1569 ; 1570 } 1571 #pragma omp sections 1572 { 1573 #pragma omp section 1574 #pragma omp target teams distribute parallel for // OK 1575 for (int i = 0; i < 10; ++i) 1576 ; 1577 } 1578 #pragma omp sections 1579 { 1580 #pragma omp section 1581 #pragma omp target teams distribute parallel for simd // OK 1582 for (int i = 0; i < 10; ++i) 1583 ; 1584 } 1585 #pragma omp sections 1586 { 1587 #pragma omp section 1588 #pragma omp target teams distribute simd // OK 1589 for (int i = 0; i < 10; ++i) 1590 ; 1591 } 1592 1593 // SINGLE DIRECTIVE 1594 #pragma omp single 1595 { 1596 #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?}} 1597 for (int i = 0; i < 10; ++i) 1598 ; 1599 } 1600 #pragma omp single 1601 { 1602 #pragma omp simd 1603 for (int i = 0; i < 10; ++i) 1604 ; 1605 } 1606 #pragma omp single 1607 { 1608 #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?}} 1609 for (int i = 0; i < 10; ++i) 1610 ; 1611 } 1612 #pragma omp single 1613 { 1614 #pragma omp parallel 1615 for (int i = 0; i < 10; ++i) 1616 ; 1617 } 1618 #pragma omp single 1619 { 1620 #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?}} 1621 { 1622 bar(); 1623 } 1624 } 1625 #pragma omp single 1626 { 1627 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1628 { 1629 bar(); 1630 } 1631 } 1632 #pragma omp single 1633 { 1634 #pragma omp critical 1635 { 1636 bar(); 1637 } 1638 } 1639 #pragma omp single 1640 { 1641 #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?}} 1642 { 1643 bar(); 1644 } 1645 } 1646 #pragma omp single 1647 { 1648 #pragma omp parallel 1649 { 1650 #pragma omp single // OK 1651 { 1652 bar(); 1653 } 1654 #pragma omp for // OK 1655 for (int i = 0; i < 10; ++i) 1656 ; 1657 #pragma omp for simd // OK 1658 for (int i = 0; i < 10; ++i) 1659 ; 1660 #pragma omp sections // OK 1661 { 1662 bar(); 1663 } 1664 } 1665 } 1666 #pragma omp single 1667 { 1668 #pragma omp parallel for 1669 for (int i = 0; i < 10; ++i) 1670 ; 1671 } 1672 #pragma omp single 1673 { 1674 #pragma omp parallel for simd 1675 for (int i = 0; i < 10; ++i) 1676 ; 1677 } 1678 #pragma omp single 1679 { 1680 #pragma omp parallel sections 1681 { 1682 bar(); 1683 } 1684 } 1685 #pragma omp single 1686 { 1687 #pragma omp task 1688 { 1689 bar(); 1690 } 1691 } 1692 #pragma omp single 1693 { 1694 #pragma omp taskyield 1695 bar(); 1696 } 1697 #pragma omp single 1698 { 1699 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1700 bar(); 1701 } 1702 #pragma omp single 1703 { 1704 #pragma omp taskwait 1705 bar(); 1706 } 1707 #pragma omp single 1708 { 1709 #pragma omp flush 1710 bar(); 1711 } 1712 #pragma omp single 1713 { 1714 #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?}} 1715 bar(); 1716 } 1717 #pragma omp single 1718 { 1719 #pragma omp atomic 1720 ++a; 1721 } 1722 #pragma omp single 1723 { 1724 #pragma omp target 1725 ++a; 1726 } 1727 #pragma omp single 1728 { 1729 #pragma omp target parallel 1730 ++a; 1731 } 1732 #pragma omp single 1733 { 1734 #pragma omp target parallel for 1735 for (int i = 0; i < 10; ++i) 1736 ; 1737 } 1738 #pragma omp single 1739 { 1740 #pragma omp target enter data map(to: a) 1741 ++a; 1742 } 1743 #pragma omp single 1744 { 1745 #pragma omp target exit data map(from: a) 1746 ++a; 1747 } 1748 #pragma omp single 1749 { 1750 #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?}} 1751 ++a; 1752 } 1753 #pragma omp single 1754 { 1755 #pragma omp taskloop 1756 for (int i = 0; i < 10; ++i) 1757 ++a; 1758 } 1759 #pragma omp single 1760 { 1761 #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?}} 1762 for (int i = 0; i < 10; ++i) 1763 ; 1764 } 1765 #pragma omp single 1766 { 1767 #pragma omp target update to(a) 1768 bar(); 1769 } 1770 #pragma omp single 1771 { 1772 #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?}} 1773 for (int i = 0; i < 10; ++i) 1774 ; 1775 } 1776 #pragma omp single 1777 { 1778 #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?}} 1779 for (int i = 0; i < 10; ++i) 1780 ; 1781 } 1782 #pragma omp single 1783 { 1784 #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?}} 1785 for (int i = 0; i < 10; ++i) 1786 ; 1787 } 1788 #pragma omp single 1789 { 1790 #pragma omp target simd // OK 1791 for (int i = 0; i < 10; ++i) 1792 ; 1793 } 1794 #pragma omp single 1795 { 1796 #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?}} 1797 for (int i = 0; i < 10; ++i) 1798 ; 1799 } 1800 #pragma omp single 1801 { 1802 #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?}} 1803 for (int i = 0; i < 10; ++i) 1804 ; 1805 } 1806 #pragma omp single 1807 { 1808 #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?}} 1809 for (int i = 0; i < 10; ++i) 1810 ; 1811 } 1812 #pragma omp single 1813 { 1814 #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?}} 1815 for (int i = 0; i < 10; ++i) 1816 ; 1817 } 1818 #pragma omp single 1819 { 1820 #pragma omp target teams // OK 1821 ++a; 1822 } 1823 #pragma omp single 1824 { 1825 #pragma omp target teams distribute // OK 1826 for (int i = 0; i < 10; ++i) 1827 ; 1828 } 1829 #pragma omp single 1830 { 1831 #pragma omp target teams distribute parallel for // OK 1832 for (int i = 0; i < 10; ++i) 1833 ; 1834 } 1835 #pragma omp single 1836 { 1837 #pragma omp target teams distribute parallel for simd // OK 1838 for (int i = 0; i < 10; ++i) 1839 ; 1840 } 1841 #pragma omp single 1842 { 1843 #pragma omp target teams distribute simd // OK 1844 for (int i = 0; i < 10; ++i) 1845 ; 1846 } 1847 1848 // MASTER DIRECTIVE 1849 #pragma omp master 1850 { 1851 #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?}} 1852 for (int i = 0; i < 10; ++i) 1853 ; 1854 } 1855 #pragma omp master 1856 { 1857 #pragma omp simd 1858 for (int i = 0; i < 10; ++i) 1859 ; 1860 } 1861 #pragma omp master 1862 { 1863 #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?}} 1864 for (int i = 0; i < 10; ++i) 1865 ; 1866 } 1867 #pragma omp master 1868 { 1869 #pragma omp parallel 1870 for (int i = 0; i < 10; ++i) 1871 ; 1872 } 1873 #pragma omp master 1874 { 1875 #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?}} 1876 { 1877 bar(); 1878 } 1879 } 1880 #pragma omp master 1881 { 1882 #pragma omp master // OK, though second 'master' is redundant 1883 { 1884 bar(); 1885 } 1886 } 1887 #pragma omp master 1888 { 1889 #pragma omp critical 1890 { 1891 bar(); 1892 } 1893 } 1894 #pragma omp master 1895 { 1896 #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?}} 1897 { 1898 bar(); 1899 } 1900 } 1901 #pragma omp master 1902 { 1903 #pragma omp parallel 1904 { 1905 #pragma omp master // OK 1906 { 1907 bar(); 1908 } 1909 #pragma omp for // OK 1910 for (int i = 0; i < 10; ++i) 1911 ; 1912 #pragma omp for simd // OK 1913 for (int i = 0; i < 10; ++i) 1914 ; 1915 #pragma omp sections // OK 1916 { 1917 bar(); 1918 } 1919 } 1920 } 1921 #pragma omp master 1922 { 1923 #pragma omp parallel for 1924 for (int i = 0; i < 10; ++i) 1925 ; 1926 } 1927 #pragma omp master 1928 { 1929 #pragma omp parallel for simd 1930 for (int i = 0; i < 10; ++i) 1931 ; 1932 } 1933 #pragma omp master 1934 { 1935 #pragma omp parallel sections 1936 { 1937 bar(); 1938 } 1939 } 1940 #pragma omp master 1941 { 1942 #pragma omp task 1943 { 1944 bar(); 1945 } 1946 } 1947 #pragma omp master 1948 { 1949 #pragma omp taskyield 1950 bar(); 1951 } 1952 #pragma omp master 1953 { 1954 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 1955 bar(); 1956 } 1957 #pragma omp master 1958 { 1959 #pragma omp taskwait 1960 bar(); 1961 } 1962 #pragma omp master 1963 { 1964 #pragma omp flush 1965 bar(); 1966 } 1967 #pragma omp master 1968 { 1969 #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?}} 1970 bar(); 1971 } 1972 #pragma omp master 1973 { 1974 #pragma omp atomic 1975 ++a; 1976 } 1977 #pragma omp master 1978 { 1979 #pragma omp target 1980 ++a; 1981 } 1982 #pragma omp master 1983 { 1984 #pragma omp target parallel 1985 ++a; 1986 } 1987 #pragma omp master 1988 { 1989 #pragma omp target parallel for 1990 for (int i = 0; i < 10; ++i) 1991 ; 1992 } 1993 #pragma omp master 1994 { 1995 #pragma omp target enter data map(to: a) 1996 ++a; 1997 } 1998 #pragma omp master 1999 { 2000 #pragma omp target exit data map(from: a) 2001 ++a; 2002 } 2003 #pragma omp master 2004 { 2005 #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?}} 2006 ++a; 2007 } 2008 #pragma omp master 2009 { 2010 #pragma omp taskloop 2011 for (int i = 0; i < 10; ++i) 2012 ++a; 2013 } 2014 #pragma omp master 2015 { 2016 #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?}} 2017 for (int i = 0; i < 10; ++i) 2018 ; 2019 } 2020 #pragma omp master 2021 { 2022 #pragma omp target update to(a) 2023 bar(); 2024 } 2025 #pragma omp master 2026 { 2027 #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?}} 2028 for (int i = 0; i < 10; ++i) 2029 ; 2030 } 2031 #pragma omp master 2032 { 2033 #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?}} 2034 for (int i = 0; i < 10; ++i) 2035 ; 2036 } 2037 #pragma omp master 2038 { 2039 #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?}} 2040 for (int i = 0; i < 10; ++i) 2041 ; 2042 } 2043 #pragma omp master 2044 { 2045 #pragma omp target simd // OK 2046 for (int i = 0; i < 10; ++i) 2047 ; 2048 } 2049 #pragma omp master 2050 { 2051 #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?}} 2052 for (int i = 0; i < 10; ++i) 2053 ; 2054 } 2055 #pragma omp master 2056 { 2057 #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?}} 2058 for (int i = 0; i < 10; ++i) 2059 ; 2060 } 2061 #pragma omp master 2062 { 2063 #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?}} 2064 for (int i = 0; i < 10; ++i) 2065 ; 2066 } 2067 #pragma omp master 2068 { 2069 #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?}} 2070 for (int i = 0; i < 10; ++i) 2071 ; 2072 } 2073 #pragma omp master 2074 { 2075 #pragma omp target teams // OK 2076 a++; 2077 } 2078 #pragma omp master 2079 { 2080 #pragma omp target teams distribute // OK 2081 for (int i = 0; i < 10; ++i) 2082 ; 2083 } 2084 #pragma omp master 2085 { 2086 #pragma omp target teams distribute parallel for // OK 2087 for (int i = 0; i < 10; ++i) 2088 ; 2089 } 2090 #pragma omp master 2091 { 2092 #pragma omp target teams distribute parallel for simd // OK 2093 for (int i = 0; i < 10; ++i) 2094 ; 2095 } 2096 #pragma omp master 2097 { 2098 #pragma omp target teams distribute simd // OK 2099 for (int i = 0; i < 10; ++i) 2100 ; 2101 } 2102 2103 // CRITICAL DIRECTIVE 2104 #pragma omp critical 2105 { 2106 #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?}} 2107 for (int i = 0; i < 10; ++i) 2108 ; 2109 } 2110 #pragma omp critical 2111 { 2112 #pragma omp simd 2113 for (int i = 0; i < 10; ++i) 2114 ; 2115 } 2116 #pragma omp critical 2117 { 2118 #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?}} 2119 for (int i = 0; i < 10; ++i) 2120 ; 2121 } 2122 #pragma omp critical 2123 { 2124 #pragma omp parallel 2125 for (int i = 0; i < 10; ++i) 2126 ; 2127 } 2128 #pragma omp critical 2129 { 2130 #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?}} 2131 { 2132 bar(); 2133 } 2134 } 2135 #pragma omp critical 2136 { 2137 #pragma omp master // OK, though second 'master' is redundant 2138 { 2139 bar(); 2140 } 2141 } 2142 #pragma omp critical 2143 { 2144 #pragma omp critical 2145 { 2146 bar(); 2147 } 2148 } 2149 #pragma omp critical 2150 { 2151 #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?}} 2152 { 2153 bar(); 2154 } 2155 } 2156 #pragma omp critical 2157 { 2158 #pragma omp parallel 2159 { 2160 #pragma omp master // OK 2161 { 2162 bar(); 2163 } 2164 #pragma omp for // OK 2165 for (int i = 0; i < 10; ++i) 2166 ; 2167 #pragma omp for simd // OK 2168 for (int i = 0; i < 10; ++i) 2169 ; 2170 #pragma omp sections // OK 2171 { 2172 bar(); 2173 } 2174 } 2175 } 2176 #pragma omp critical 2177 { 2178 #pragma omp parallel for 2179 for (int i = 0; i < 10; ++i) 2180 ; 2181 } 2182 #pragma omp critical 2183 { 2184 #pragma omp parallel for simd 2185 for (int i = 0; i < 10; ++i) 2186 ; 2187 } 2188 #pragma omp critical 2189 { 2190 #pragma omp parallel sections 2191 { 2192 bar(); 2193 } 2194 } 2195 #pragma omp critical 2196 { 2197 #pragma omp task 2198 { 2199 bar(); 2200 } 2201 } 2202 #pragma omp critical 2203 { 2204 #pragma omp taskyield 2205 bar(); 2206 } 2207 #pragma omp critical 2208 { 2209 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2210 bar(); 2211 } 2212 #pragma omp critical 2213 { 2214 #pragma omp taskwait 2215 bar(); 2216 } 2217 #pragma omp critical(Tuzik) 2218 { 2219 #pragma omp critical(grelka) 2220 bar(); 2221 } 2222 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2223 { 2224 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2225 { 2226 #pragma omp critical(Tuzik) 2227 { 2228 #pragma omp parallel 2229 #pragma omp critical(grelka) 2230 { 2231 bar(); 2232 } 2233 } 2234 } 2235 } 2236 #pragma omp critical 2237 { 2238 #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?}} 2239 bar(); 2240 } 2241 #pragma omp critical 2242 { 2243 #pragma omp atomic 2244 ++a; 2245 } 2246 #pragma omp critical 2247 { 2248 #pragma omp target 2249 ++a; 2250 } 2251 #pragma omp critical 2252 { 2253 #pragma omp target parallel 2254 ++a; 2255 } 2256 #pragma omp critical 2257 { 2258 #pragma omp target parallel for 2259 for (int i = 0; i < 10; ++i) 2260 ; 2261 } 2262 #pragma omp critical 2263 { 2264 #pragma omp target enter data map(to: a) 2265 ++a; 2266 } 2267 #pragma omp critical 2268 { 2269 #pragma omp target exit data map(from: a) 2270 ++a; 2271 } 2272 #pragma omp critical 2273 { 2274 #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?}} 2275 ++a; 2276 } 2277 #pragma omp critical 2278 { 2279 #pragma omp taskloop 2280 for (int i = 0; i < 10; ++i) 2281 ++a; 2282 } 2283 #pragma omp critical 2284 { 2285 #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?}} 2286 for (int i = 0; i < 10; ++i) 2287 ; 2288 } 2289 #pragma omp critical 2290 { 2291 #pragma omp target update to(a) 2292 bar(); 2293 } 2294 #pragma omp critical 2295 { 2296 #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?}} 2297 for (int i = 0; i < 10; ++i) 2298 ; 2299 } 2300 #pragma omp critical 2301 { 2302 #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?}} 2303 for (int i = 0; i < 10; ++i) 2304 ; 2305 } 2306 #pragma omp critical 2307 { 2308 #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?}} 2309 for (int i = 0; i < 10; ++i) 2310 ; 2311 } 2312 #pragma omp critical 2313 { 2314 #pragma omp target simd // OK 2315 for (int i = 0; i < 10; ++i) 2316 ; 2317 } 2318 #pragma omp critical 2319 { 2320 #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?}} 2321 for (int i = 0; i < 10; ++i) 2322 ; 2323 } 2324 #pragma omp critical 2325 { 2326 #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?}} 2327 for (int i = 0; i < 10; ++i) 2328 ; 2329 } 2330 #pragma omp critical 2331 { 2332 #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?}} 2333 for (int i = 0; i < 10; ++i) 2334 ; 2335 } 2336 #pragma omp critical 2337 { 2338 #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?}} 2339 for (int i = 0; i < 10; ++i) 2340 ; 2341 } 2342 #pragma omp critical 2343 { 2344 #pragma omp target teams // OK 2345 a++; 2346 } 2347 #pragma omp critical 2348 { 2349 #pragma omp target teams distribute // OK 2350 for (int i = 0; i < 10; ++i) 2351 ; 2352 } 2353 #pragma omp critical 2354 { 2355 #pragma omp target teams distribute parallel for // OK 2356 for (int i = 0; i < 10; ++i) 2357 ; 2358 } 2359 #pragma omp critical 2360 { 2361 #pragma omp target teams distribute parallel for simd // OK 2362 for (int i = 0; i < 10; ++i) 2363 ; 2364 } 2365 #pragma omp critical 2366 { 2367 #pragma omp target teams distribute simd // OK 2368 for (int i = 0; i < 10; ++i) 2369 ; 2370 } 2371 2372 // PARALLEL FOR DIRECTIVE 2373 #pragma omp parallel for 2374 for (int i = 0; i < 10; ++i) { 2375 #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?}} 2376 for (int i = 0; i < 10; ++i) 2377 ; 2378 } 2379 #pragma omp parallel for 2380 for (int i = 0; i < 10; ++i) { 2381 #pragma omp simd 2382 for (int i = 0; i < 10; ++i) 2383 ; 2384 } 2385 #pragma omp parallel for 2386 for (int i = 0; i < 10; ++i) { 2387 #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?}} 2388 for (int i = 0; i < 10; ++i) 2389 ; 2390 } 2391 #pragma omp parallel for 2392 for (int i = 0; i < 10; ++i) { 2393 #pragma omp parallel 2394 for (int i = 0; i < 10; ++i) 2395 ; 2396 } 2397 #pragma omp parallel for 2398 for (int i = 0; i < 10; ++i) { 2399 #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?}} 2400 { 2401 bar(); 2402 } 2403 } 2404 #pragma omp parallel for 2405 for (int i = 0; i < 10; ++i) { 2406 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2407 { 2408 bar(); 2409 } 2410 } 2411 #pragma omp parallel for 2412 for (int i = 0; i < 10; ++i) { 2413 #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?}} 2414 { 2415 bar(); 2416 } 2417 } 2418 2419 #pragma omp parallel for 2420 for (int i = 0; i < 10; ++i) { 2421 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2422 { 2423 bar(); 2424 } 2425 } 2426 2427 #pragma omp parallel for 2428 for (int i = 0; i < 10; ++i) { 2429 #pragma omp critical 2430 { 2431 bar(); 2432 } 2433 } 2434 2435 #pragma omp parallel for 2436 for (int i = 0; i < 10; ++i) { 2437 #pragma omp parallel 2438 { 2439 #pragma omp single // OK 2440 { 2441 bar(); 2442 } 2443 #pragma omp for // OK 2444 for (int i = 0; i < 10; ++i) 2445 ; 2446 #pragma omp for simd // OK 2447 for (int i = 0; i < 10; ++i) 2448 ; 2449 #pragma omp sections // OK 2450 { 2451 bar(); 2452 } 2453 } 2454 } 2455 #pragma omp parallel for 2456 for (int i = 0; i < 10; ++i) { 2457 #pragma omp parallel for 2458 for (int i = 0; i < 10; ++i) 2459 ; 2460 } 2461 #pragma omp parallel for 2462 for (int i = 0; i < 10; ++i) { 2463 #pragma omp parallel for simd 2464 for (int i = 0; i < 10; ++i) 2465 ; 2466 } 2467 #pragma omp parallel for 2468 for (int i = 0; i < 10; ++i) { 2469 #pragma omp parallel sections 2470 { 2471 bar(); 2472 } 2473 } 2474 #pragma omp parallel for 2475 for (int i = 0; i < 10; ++i) { 2476 #pragma omp task 2477 { 2478 bar(); 2479 } 2480 } 2481 #pragma omp parallel for 2482 for (int i = 0; i < 10; ++i) { 2483 #pragma omp taskyield 2484 bar(); 2485 } 2486 #pragma omp parallel for 2487 for (int i = 0; i < 10; ++i) { 2488 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2489 bar(); 2490 } 2491 #pragma omp parallel for 2492 for (int i = 0; i < 10; ++i) { 2493 #pragma omp taskwait 2494 bar(); 2495 } 2496 #pragma omp parallel for 2497 for (int i = 0; i < 10; ++i) { 2498 #pragma omp flush 2499 bar(); 2500 } 2501 #pragma omp parallel for 2502 for (int i = 0; i < 10; ++i) { 2503 #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?}} 2504 bar(); 2505 } 2506 #pragma omp parallel for ordered 2507 for (int i = 0; i < 10; ++i) { 2508 #pragma omp ordered // OK 2509 bar(); 2510 } 2511 #pragma omp parallel for 2512 for (int i = 0; i < 10; ++i) { 2513 #pragma omp atomic 2514 ++a; 2515 } 2516 #pragma omp parallel for 2517 for (int i = 0; i < 10; ++i) { 2518 #pragma omp target 2519 ++a; 2520 } 2521 #pragma omp parallel for 2522 for (int i = 0; i < 10; ++i) { 2523 #pragma omp target parallel 2524 ++a; 2525 } 2526 #pragma omp parallel for 2527 for (int i = 0; i < 10; ++i) { 2528 #pragma omp target parallel for 2529 for (int i = 0; i < 10; ++i) 2530 ; 2531 } 2532 #pragma omp parallel for 2533 for (int i = 0; i < 10; ++i) { 2534 #pragma omp target enter data map(to: a) 2535 ++a; 2536 } 2537 #pragma omp parallel for 2538 for (int i = 0; i < 10; ++i) { 2539 #pragma omp target exit data map(from: a) 2540 ++a; 2541 } 2542 #pragma omp parallel for 2543 for (int i = 0; i < 10; ++i) { 2544 #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?}} 2545 ++a; 2546 } 2547 #pragma omp parallel for 2548 for (int i = 0; i < 10; ++i) { 2549 #pragma omp taskloop 2550 for (int i = 0; i < 10; ++i) 2551 ++a; 2552 } 2553 #pragma omp parallel for 2554 for (int i = 0; i < 10; ++i) { 2555 #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?}} 2556 for (int j = 0; j < 10; ++j) 2557 ; 2558 } 2559 #pragma omp parallel for 2560 for (int i = 0; i < 10; ++i) { 2561 #pragma omp target update to(a) 2562 } 2563 #pragma omp parallel for 2564 for (int i = 0; i < 10; ++i) { 2565 #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?}} 2566 for (int j = 0; j < 10; ++j) 2567 ; 2568 } 2569 #pragma omp parallel for 2570 for (int i = 0; i < 10; ++i) { 2571 #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?}} 2572 for (int j = 0; j < 10; ++j) 2573 ; 2574 } 2575 #pragma omp parallel for 2576 for (int i = 0; i < 10; ++i) { 2577 #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?}} 2578 for (int j = 0; j < 10; ++j) 2579 ; 2580 } 2581 #pragma omp parallel for 2582 for (int i = 0; i < 10; ++i) { 2583 #pragma omp target simd // OK 2584 for (int j = 0; j < 10; ++j) 2585 ; 2586 } 2587 #pragma omp parallel for 2588 for (int i = 0; i < 10; ++i) { 2589 #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?}} 2590 for (int j = 0; j < 10; ++j) 2591 ; 2592 } 2593 #pragma omp parallel for 2594 for (int i = 0; i < 10; ++i) { 2595 #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?}} 2596 for (int j = 0; j < 10; ++j) 2597 ; 2598 } 2599 #pragma omp parallel for 2600 for (int i = 0; i < 10; ++i) { 2601 #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?}} 2602 for (int j = 0; j < 10; ++j) 2603 ; 2604 } 2605 #pragma omp parallel for 2606 for (int i = 0; i < 10; ++i) { 2607 #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?}} 2608 for (int j = 0; j < 10; ++j) 2609 ; 2610 } 2611 #pragma omp parallel for 2612 for (int i = 0; i < 10; ++i) { 2613 #pragma omp target teams // OK 2614 a++; 2615 } 2616 #pragma omp parallel for 2617 for (int i = 0; i < 10; ++i) { 2618 #pragma omp target teams distribute // OK 2619 for (int j = 0; j < 10; ++j) 2620 ; 2621 } 2622 #pragma omp parallel for 2623 for (int i = 0; i < 10; ++i) { 2624 #pragma omp target teams distribute parallel for // OK 2625 for (int j = 0; j < 10; ++j) 2626 ; 2627 } 2628 #pragma omp parallel for 2629 for (int i = 0; i < 10; ++i) { 2630 #pragma omp target teams distribute parallel for simd // OK 2631 for (int j = 0; j < 10; ++j) 2632 ; 2633 } 2634 #pragma omp parallel for 2635 for (int i = 0; i < 10; ++i) { 2636 #pragma omp target teams distribute simd // OK 2637 for (int j = 0; j < 10; ++j) 2638 ; 2639 } 2640 2641 // PARALLEL FOR SIMD DIRECTIVE 2642 #pragma omp parallel for simd 2643 for (int i = 0; i < 10; ++i) { 2644 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2645 for (int i = 0; i < 10; ++i) 2646 ; 2647 } 2648 #pragma omp parallel for simd 2649 for (int i = 0; i < 10; ++i) { 2650 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2651 for (int i = 0; i < 10; ++i) 2652 ; 2653 } 2654 #pragma omp parallel for simd 2655 for (int i = 0; i < 10; ++i) { 2656 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2657 for (int i = 0; i < 10; ++i) 2658 ; 2659 } 2660 #pragma omp parallel for simd 2661 for (int i = 0; i < 10; ++i) { 2662 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2663 for (int i = 0; i < 10; ++i) 2664 ; 2665 } 2666 #pragma omp parallel for simd 2667 for (int i = 0; i < 10; ++i) { 2668 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2669 { 2670 bar(); 2671 } 2672 } 2673 #pragma omp parallel for simd 2674 for (int i = 0; i < 10; ++i) { 2675 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2676 { 2677 bar(); 2678 } 2679 } 2680 #pragma omp parallel for simd 2681 for (int i = 0; i < 10; ++i) { 2682 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2683 { 2684 bar(); 2685 } 2686 } 2687 2688 #pragma omp parallel for simd 2689 for (int i = 0; i < 10; ++i) { 2690 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2691 { 2692 bar(); 2693 } 2694 } 2695 2696 #pragma omp parallel for simd 2697 for (int i = 0; i < 10; ++i) { 2698 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2699 { 2700 bar(); 2701 } 2702 } 2703 2704 #pragma omp parallel for simd 2705 for (int i = 0; i < 10; ++i) { 2706 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2707 { 2708 #pragma omp single 2709 { 2710 bar(); 2711 } 2712 #pragma omp for 2713 for (int i = 0; i < 10; ++i) 2714 ; 2715 #pragma omp for simd 2716 for (int i = 0; i < 10; ++i) 2717 ; 2718 #pragma omp sections 2719 { 2720 bar(); 2721 } 2722 } 2723 } 2724 #pragma omp parallel for simd 2725 for (int i = 0; i < 10; ++i) { 2726 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2727 for (int i = 0; i < 10; ++i) 2728 ; 2729 } 2730 #pragma omp parallel for simd 2731 for (int i = 0; i < 10; ++i) { 2732 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2733 for (int i = 0; i < 10; ++i) 2734 ; 2735 } 2736 #pragma omp parallel for simd 2737 for (int i = 0; i < 10; ++i) { 2738 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2739 { 2740 bar(); 2741 } 2742 } 2743 #pragma omp parallel for simd 2744 for (int i = 0; i < 10; ++i) { 2745 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2746 { 2747 bar(); 2748 } 2749 } 2750 #pragma omp parallel for simd 2751 for (int i = 0; i < 10; ++i) { 2752 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2753 bar(); 2754 } 2755 #pragma omp parallel for simd 2756 for (int i = 0; i < 10; ++i) { 2757 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2758 bar(); 2759 } 2760 #pragma omp parallel for simd 2761 for (int i = 0; i < 10; ++i) { 2762 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2763 bar(); 2764 } 2765 #pragma omp parallel for simd 2766 for (int i = 0; i < 10; ++i) { 2767 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2768 bar(); 2769 } 2770 #pragma omp parallel for simd 2771 for (int i = 0; i < 10; ++i) { 2772 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2773 bar(); 2774 } 2775 #pragma omp parallel for simd 2776 for (int i = 0; i < 10; ++i) { 2777 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2778 bar(); 2779 } 2780 #pragma omp parallel for simd 2781 for (int i = 0; i < 10; ++i) { 2782 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2783 ++a; 2784 } 2785 #pragma omp parallel for simd 2786 for (int i = 0; i < 10; ++i) { 2787 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2788 ++a; 2789 } 2790 #pragma omp parallel for simd 2791 for (int i = 0; i < 10; ++i) { 2792 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2793 ++a; 2794 } 2795 #pragma omp parallel for simd 2796 for (int i = 0; i < 10; ++i) { 2797 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2798 for (int i = 0; i < 10; ++i) 2799 ; 2800 } 2801 #pragma omp parallel for simd 2802 for (int i = 0; i < 10; ++i) { 2803 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2804 ++a; 2805 } 2806 #pragma omp parallel for simd 2807 for (int i = 0; i < 10; ++i) { 2808 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2809 ++a; 2810 } 2811 #pragma omp parallel for simd 2812 for (int i = 0; i < 10; ++i) { 2813 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2814 ++a; 2815 } 2816 #pragma omp parallel for simd 2817 for (int i = 0; i < 10; ++i) { 2818 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2819 for (int i = 0; i < 10; ++i) 2820 ++a; 2821 } 2822 #pragma omp parallel for simd 2823 for (int i = 0; i < 10; ++i) { 2824 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2825 for (int j = 0; j < 10; ++j) 2826 ; 2827 } 2828 #pragma omp parallel for simd 2829 for (int i = 0; i < 10; ++i) { 2830 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2831 bar(); 2832 } 2833 #pragma omp parallel for simd 2834 for (int i = 0; i < 10; ++i) { 2835 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2836 for (int j = 0; j < 10; ++j) 2837 ; 2838 } 2839 #pragma omp parallel for simd 2840 for (int i = 0; i < 10; ++i) { 2841 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2842 for (int j = 0; j < 10; ++j) 2843 ; 2844 } 2845 #pragma omp parallel for simd 2846 for (int i = 0; i < 10; ++i) { 2847 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2848 for (int j = 0; j < 10; ++j) 2849 ; 2850 } 2851 #pragma omp parallel for simd 2852 for (int i = 0; i < 10; ++i) { 2853 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2854 for (int j = 0; j < 10; ++j) 2855 ; 2856 } 2857 #pragma omp parallel for simd 2858 for (int i = 0; i < 10; ++i) { 2859 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2860 for (int j = 0; j < 10; ++j) 2861 ; 2862 } 2863 #pragma omp parallel for simd 2864 for (int i = 0; i < 10; ++i) { 2865 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2866 for (int j = 0; j < 10; ++j) 2867 ; 2868 } 2869 #pragma omp parallel for simd 2870 for (int i = 0; i < 10; ++i) { 2871 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2872 for (int j = 0; j < 10; ++j) 2873 ; 2874 } 2875 #pragma omp parallel for simd 2876 for (int i = 0; i < 10; ++i) { 2877 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2878 for (int j = 0; j < 10; ++j) 2879 ; 2880 } 2881 #pragma omp parallel for simd 2882 for (int i = 0; i < 10; ++i) { 2883 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2884 a++; 2885 } 2886 #pragma omp parallel for simd 2887 for (int i = 0; i < 10; ++i) { 2888 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2889 for (int j = 0; j < 10; ++j) 2890 ; 2891 } 2892 #pragma omp parallel for simd 2893 for (int i = 0; i < 10; ++i) { 2894 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2895 for (int j = 0; j < 10; ++j) 2896 ; 2897 } 2898 #pragma omp parallel for simd 2899 for (int i = 0; i < 10; ++i) { 2900 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2901 for (int j = 0; j < 10; ++j) 2902 ; 2903 } 2904 #pragma omp parallel for simd 2905 for (int i = 0; i < 10; ++i) { 2906 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2907 for (int j = 0; j < 10; ++j) 2908 ; 2909 } 2910 2911 // PARALLEL SECTIONS DIRECTIVE 2912 #pragma omp parallel sections 2913 { 2914 #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?}} 2915 for (int i = 0; i < 10; ++i) 2916 ; 2917 } 2918 #pragma omp parallel sections 2919 { 2920 #pragma omp simd 2921 for (int i = 0; i < 10; ++i) 2922 ; 2923 } 2924 #pragma omp parallel sections 2925 { 2926 #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?}} 2927 for (int i = 0; i < 10; ++i) 2928 ; 2929 } 2930 #pragma omp parallel sections 2931 { 2932 #pragma omp parallel 2933 for (int i = 0; i < 10; ++i) 2934 ; 2935 } 2936 #pragma omp parallel sections 2937 { 2938 #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?}} 2939 { 2940 bar(); 2941 } 2942 } 2943 #pragma omp parallel sections 2944 { 2945 #pragma omp section 2946 { 2947 bar(); 2948 } 2949 } 2950 #pragma omp parallel sections 2951 { 2952 #pragma omp section 2953 { 2954 #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?}} 2955 bar(); 2956 } 2957 } 2958 #pragma omp parallel sections 2959 { 2960 #pragma omp section 2961 { 2962 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 2963 bar(); 2964 } 2965 } 2966 #pragma omp parallel sections 2967 { 2968 #pragma omp section 2969 { 2970 #pragma omp critical 2971 bar(); 2972 } 2973 } 2974 #pragma omp parallel sections 2975 { 2976 #pragma omp parallel 2977 { 2978 #pragma omp single // OK 2979 { 2980 bar(); 2981 } 2982 #pragma omp for // OK 2983 for (int i = 0; i < 10; ++i) 2984 ; 2985 #pragma omp for simd // OK 2986 for (int i = 0; i < 10; ++i) 2987 ; 2988 #pragma omp sections // OK 2989 { 2990 bar(); 2991 } 2992 } 2993 } 2994 #pragma omp parallel sections 2995 { 2996 #pragma omp parallel for 2997 for (int i = 0; i < 10; ++i) 2998 ; 2999 } 3000 #pragma omp parallel sections 3001 { 3002 #pragma omp parallel for simd 3003 for (int i = 0; i < 10; ++i) 3004 ; 3005 } 3006 #pragma omp parallel sections 3007 { 3008 #pragma omp parallel sections 3009 { 3010 bar(); 3011 } 3012 } 3013 #pragma omp parallel sections 3014 { 3015 #pragma omp task 3016 { 3017 bar(); 3018 } 3019 } 3020 #pragma omp parallel sections 3021 { 3022 #pragma omp taskyield 3023 } 3024 #pragma omp parallel sections 3025 { 3026 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3027 } 3028 #pragma omp parallel sections 3029 { 3030 #pragma omp taskwait 3031 } 3032 #pragma omp parallel sections 3033 { 3034 #pragma omp flush 3035 } 3036 #pragma omp parallel sections 3037 { 3038 #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?}} 3039 bar(); 3040 } 3041 #pragma omp parallel sections 3042 { 3043 #pragma omp atomic 3044 ++a; 3045 } 3046 #pragma omp parallel sections 3047 { 3048 #pragma omp target 3049 ++a; 3050 } 3051 #pragma omp parallel sections 3052 { 3053 #pragma omp target parallel 3054 ++a; 3055 } 3056 #pragma omp parallel sections 3057 { 3058 #pragma omp target parallel for 3059 for (int i = 0; i < 10; ++i) 3060 ; 3061 } 3062 #pragma omp parallel sections 3063 { 3064 #pragma omp target enter data map(to: a) 3065 } 3066 #pragma omp parallel sections 3067 { 3068 #pragma omp target exit data map(from: a) 3069 } 3070 #pragma omp parallel sections 3071 { 3072 #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?}} 3073 ++a; 3074 } 3075 #pragma omp parallel sections 3076 { 3077 #pragma omp taskloop 3078 for (int i = 0; i < 10; ++i) 3079 ++a; 3080 } 3081 #pragma omp parallel sections 3082 { 3083 #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?}} 3084 for (int i = 0; i < 10; ++i) 3085 ; 3086 } 3087 #pragma omp parallel sections 3088 { 3089 #pragma omp target update to(a) 3090 } 3091 #pragma omp parallel sections 3092 { 3093 #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?}} 3094 for (int i = 0; i < 10; ++i) 3095 ; 3096 } 3097 #pragma omp parallel sections 3098 { 3099 #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?}} 3100 for (int i = 0; i < 10; ++i) 3101 ; 3102 } 3103 #pragma omp parallel sections 3104 { 3105 #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?}} 3106 for (int i = 0; i < 10; ++i) 3107 ; 3108 } 3109 #pragma omp parallel sections 3110 { 3111 #pragma omp target simd // OK 3112 for (int i = 0; i < 10; ++i) 3113 ; 3114 } 3115 #pragma omp parallel sections 3116 { 3117 #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?}} 3118 for (int i = 0; i < 10; ++i) 3119 ; 3120 } 3121 #pragma omp parallel sections 3122 { 3123 #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?}} 3124 for (int i = 0; i < 10; ++i) 3125 ; 3126 } 3127 #pragma omp parallel sections 3128 { 3129 #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?}} 3130 for (int i = 0; i < 10; ++i) 3131 ; 3132 } 3133 #pragma omp parallel sections 3134 { 3135 #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?}} 3136 for (int i = 0; i < 10; ++i) 3137 ; 3138 } 3139 #pragma omp parallel sections 3140 { 3141 #pragma omp target teams // OK 3142 a++; 3143 } 3144 #pragma omp parallel sections 3145 { 3146 #pragma omp target teams distribute // OK 3147 for (int i = 0; i < 10; ++i) 3148 ; 3149 } 3150 #pragma omp parallel sections 3151 { 3152 #pragma omp target teams distribute parallel for // OK 3153 for (int i = 0; i < 10; ++i) 3154 ; 3155 } 3156 #pragma omp parallel sections 3157 { 3158 #pragma omp target teams distribute parallel for simd // OK 3159 for (int i = 0; i < 10; ++i) 3160 ; 3161 } 3162 #pragma omp parallel sections 3163 { 3164 #pragma omp target teams distribute simd // OK 3165 for (int i = 0; i < 10; ++i) 3166 ; 3167 } 3168 3169 // TASK DIRECTIVE 3170 #pragma omp task 3171 #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?}} 3172 for (int i = 0; i < 10; ++i) 3173 ; 3174 #pragma omp task 3175 #pragma omp simd 3176 for (int i = 0; i < 10; ++i) 3177 ; 3178 #pragma omp task 3179 #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?}} 3180 for (int i = 0; i < 10; ++i) 3181 ; 3182 #pragma omp task 3183 #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?}} 3184 { 3185 bar(); 3186 } 3187 #pragma omp task 3188 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3189 { 3190 bar(); 3191 } 3192 #pragma omp task 3193 #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?}} 3194 bar(); 3195 #pragma omp task 3196 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3197 bar(); 3198 #pragma omp task 3199 #pragma omp critical 3200 bar(); 3201 3202 #pragma omp task 3203 #pragma omp parallel for 3204 for (int i = 0; i < 10; ++i) 3205 ; 3206 #pragma omp task 3207 #pragma omp parallel for simd 3208 for (int i = 0; i < 10; ++i) 3209 ; 3210 #pragma omp task 3211 #pragma omp parallel sections 3212 { 3213 bar(); 3214 } 3215 #pragma omp task 3216 #pragma omp task 3217 { 3218 bar(); 3219 } 3220 #pragma omp task 3221 { 3222 #pragma omp taskyield 3223 bar(); 3224 } 3225 #pragma omp task 3226 { 3227 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3228 bar(); 3229 } 3230 #pragma omp task 3231 { 3232 #pragma omp taskwait 3233 bar(); 3234 } 3235 #pragma omp task 3236 { 3237 #pragma omp flush 3238 bar(); 3239 } 3240 #pragma omp task 3241 { 3242 #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?}} 3243 bar(); 3244 } 3245 #pragma omp task 3246 { 3247 #pragma omp atomic 3248 ++a; 3249 } 3250 #pragma omp task 3251 { 3252 #pragma omp target 3253 ++a; 3254 } 3255 #pragma omp task 3256 { 3257 #pragma omp target parallel 3258 ++a; 3259 } 3260 #pragma omp task 3261 #pragma omp target parallel for 3262 for (int i = 0; i < 10; ++i) 3263 ; 3264 #pragma omp task 3265 { 3266 #pragma omp target enter data map(to: a) 3267 ++a; 3268 } 3269 #pragma omp task 3270 { 3271 #pragma omp target exit data map(from: a) 3272 ++a; 3273 } 3274 #pragma omp task 3275 { 3276 #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?}} 3277 ++a; 3278 } 3279 #pragma omp task 3280 { 3281 #pragma omp taskloop 3282 for (int i = 0; i < 10; ++i) 3283 ++a; 3284 } 3285 #pragma omp task 3286 { 3287 #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?}} 3288 for (int i = 0; i < 10; ++i) 3289 ; 3290 } 3291 #pragma omp task 3292 { 3293 #pragma omp target update to(a) 3294 bar(); 3295 } 3296 #pragma omp task 3297 { 3298 #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?}} 3299 for (int i = 0; i < 10; ++i) 3300 ; 3301 } 3302 #pragma omp task 3303 { 3304 #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?}} 3305 for (int i = 0; i < 10; ++i) 3306 ; 3307 } 3308 #pragma omp task 3309 { 3310 #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?}} 3311 for (int i = 0; i < 10; ++i) 3312 ; 3313 } 3314 #pragma omp task 3315 { 3316 #pragma omp target simd // OK 3317 for (int i = 0; i < 10; ++i) 3318 ; 3319 } 3320 #pragma omp task 3321 { 3322 #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?}} 3323 for (int i = 0; i < 10; ++i) 3324 ; 3325 } 3326 #pragma omp task 3327 { 3328 #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?}} 3329 for (int i = 0; i < 10; ++i) 3330 ; 3331 } 3332 #pragma omp task 3333 { 3334 #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?}} 3335 for (int i = 0; i < 10; ++i) 3336 ; 3337 } 3338 #pragma omp task 3339 { 3340 #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?}} 3341 for (int i = 0; i < 10; ++i) 3342 ; 3343 } 3344 #pragma omp task 3345 { 3346 #pragma omp target teams // OK 3347 a++; 3348 } 3349 #pragma omp task 3350 { 3351 #pragma omp target teams distribute // OK 3352 for (int i = 0; i < 10; ++i) 3353 ; 3354 } 3355 #pragma omp task 3356 { 3357 #pragma omp target teams distribute parallel for // OK 3358 for (int i = 0; i < 10; ++i) 3359 ; 3360 } 3361 #pragma omp task 3362 { 3363 #pragma omp target teams distribute parallel for simd // OK 3364 for (int i = 0; i < 10; ++i) 3365 ; 3366 } 3367 #pragma omp task 3368 { 3369 #pragma omp target teams distribute simd // OK 3370 for (int i = 0; i < 10; ++i) 3371 ; 3372 } 3373 3374 // ORDERED DIRECTIVE 3375 #pragma omp ordered 3376 { 3377 #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?}} 3378 for (int i = 0; i < 10; ++i) 3379 ; 3380 } 3381 #pragma omp ordered 3382 { 3383 #pragma omp simd 3384 for (int i = 0; i < 10; ++i) 3385 ; 3386 } 3387 #pragma omp ordered 3388 { 3389 #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?}} 3390 for (int i = 0; i < 10; ++i) 3391 ; 3392 } 3393 #pragma omp ordered 3394 { 3395 #pragma omp parallel 3396 for (int i = 0; i < 10; ++i) 3397 ; 3398 } 3399 #pragma omp ordered 3400 { 3401 #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?}} 3402 { 3403 bar(); 3404 } 3405 } 3406 #pragma omp ordered 3407 { 3408 #pragma omp master // OK, though second 'ordered' is redundant 3409 { 3410 bar(); 3411 } 3412 } 3413 #pragma omp ordered 3414 { 3415 #pragma omp critical 3416 { 3417 bar(); 3418 } 3419 } 3420 #pragma omp ordered 3421 { 3422 #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?}} 3423 { 3424 bar(); 3425 } 3426 } 3427 #pragma omp ordered 3428 { 3429 #pragma omp parallel for ordered 3430 for (int j = 0; j < 10; ++j) { 3431 #pragma omp ordered // OK 3432 { 3433 bar(); 3434 } 3435 } 3436 } 3437 #pragma omp ordered 3438 { 3439 #pragma omp parallel for simd ordered 3440 for (int j = 0; j < 10; ++j) { 3441 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3442 { 3443 bar(); 3444 } 3445 } 3446 } 3447 #pragma omp ordered 3448 { 3449 #pragma omp parallel for simd ordered 3450 for (int j = 0; j < 10; ++j) { 3451 #pragma omp ordered simd 3452 { 3453 bar(); 3454 } 3455 } 3456 } 3457 #pragma omp ordered 3458 { 3459 #pragma omp parallel for 3460 for (int i = 0; i < 10; ++i) 3461 ; 3462 } 3463 #pragma omp ordered 3464 { 3465 #pragma omp parallel for simd 3466 for (int i = 0; i < 10; ++i) 3467 ; 3468 } 3469 #pragma omp ordered 3470 { 3471 #pragma omp parallel sections 3472 { 3473 bar(); 3474 } 3475 } 3476 #pragma omp ordered 3477 { 3478 #pragma omp task 3479 { 3480 bar(); 3481 } 3482 } 3483 #pragma omp ordered 3484 { 3485 #pragma omp taskyield 3486 bar(); 3487 } 3488 #pragma omp ordered 3489 { 3490 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3491 bar(); 3492 } 3493 #pragma omp ordered 3494 { 3495 #pragma omp taskwait 3496 bar(); 3497 } 3498 #pragma omp ordered 3499 { 3500 #pragma omp flush 3501 bar(); 3502 } 3503 #pragma omp ordered 3504 { 3505 #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?}} 3506 bar(); 3507 } 3508 #pragma omp ordered 3509 { 3510 #pragma omp atomic 3511 ++a; 3512 } 3513 #pragma omp ordered 3514 { 3515 #pragma omp target 3516 ++a; 3517 } 3518 #pragma omp ordered 3519 { 3520 #pragma omp target parallel 3521 ++a; 3522 } 3523 #pragma omp ordered 3524 { 3525 #pragma omp target parallel for ordered 3526 for (int j = 0; j < 10; ++j) { 3527 #pragma omp ordered // OK 3528 { 3529 bar(); 3530 } 3531 } 3532 } 3533 #pragma omp ordered 3534 { 3535 #pragma omp target parallel for 3536 for (int i = 0; i < 10; ++i) 3537 ; 3538 } 3539 #pragma omp ordered 3540 { 3541 #pragma omp target enter data map(to: a) 3542 ++a; 3543 } 3544 #pragma omp ordered 3545 { 3546 #pragma omp target exit data map(from: a) 3547 ++a; 3548 } 3549 #pragma omp ordered 3550 { 3551 #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?}} 3552 ++a; 3553 } 3554 #pragma omp ordered 3555 { 3556 #pragma omp taskloop 3557 for (int i = 0; i < 10; ++i) 3558 ++a; 3559 } 3560 #pragma omp ordered 3561 { 3562 #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?}} 3563 for (int i = 0; i < 10; ++i) 3564 ; 3565 } 3566 #pragma omp ordered 3567 { 3568 bar(); 3569 #pragma omp target update to(a) 3570 bar(); 3571 } 3572 #pragma omp ordered 3573 { 3574 #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?}} 3575 for (int i = 0; i < 10; ++i) 3576 ; 3577 } 3578 #pragma omp ordered 3579 { 3580 #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?}} 3581 for (int i = 0; i < 10; ++i) 3582 ; 3583 } 3584 #pragma omp ordered 3585 { 3586 #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?}} 3587 for (int i = 0; i < 10; ++i) 3588 ; 3589 } 3590 #pragma omp ordered 3591 { 3592 #pragma omp target simd // OK 3593 for (int i = 0; i < 10; ++i) 3594 ; 3595 } 3596 #pragma omp ordered 3597 { 3598 #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?}} 3599 for (int i = 0; i < 10; ++i) 3600 ; 3601 } 3602 #pragma omp ordered 3603 { 3604 #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?}} 3605 for (int i = 0; i < 10; ++i) 3606 ; 3607 } 3608 #pragma omp ordered 3609 { 3610 #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?}} 3611 for (int i = 0; i < 10; ++i) 3612 ; 3613 } 3614 #pragma omp ordered 3615 { 3616 #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?}} 3617 for (int i = 0; i < 10; ++i) 3618 ; 3619 } 3620 #pragma omp ordered 3621 { 3622 #pragma omp target teams // OK 3623 a++; 3624 } 3625 #pragma omp ordered 3626 { 3627 #pragma omp target teams distribute // OK 3628 for (int i = 0; i < 10; ++i) 3629 ; 3630 } 3631 #pragma omp ordered 3632 { 3633 #pragma omp target teams distribute parallel for // OK 3634 for (int i = 0; i < 10; ++i) 3635 ; 3636 } 3637 #pragma omp ordered 3638 { 3639 #pragma omp target teams distribute parallel for simd // OK 3640 for (int i = 0; i < 10; ++i) 3641 ; 3642 } 3643 #pragma omp ordered 3644 { 3645 #pragma omp target teams distribute simd // OK 3646 for (int i = 0; i < 10; ++i) 3647 ; 3648 } 3649 3650 // ATOMIC DIRECTIVE 3651 #pragma omp atomic 3652 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3653 // expected-note@+1 {{expected an expression statement}} 3654 { 3655 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3656 for (int i = 0; i < 10; ++i) 3657 ; 3658 } 3659 #pragma omp atomic 3660 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3661 // expected-note@+1 {{expected an expression statement}} 3662 { 3663 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3664 for (int i = 0; i < 10; ++i) 3665 ; 3666 } 3667 #pragma omp atomic 3668 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3669 // expected-note@+1 {{expected an expression statement}} 3670 { 3671 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3672 for (int i = 0; i < 10; ++i) 3673 ; 3674 } 3675 #pragma omp atomic 3676 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3677 // expected-note@+1 {{expected an expression statement}} 3678 { 3679 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3680 for (int i = 0; i < 10; ++i) 3681 ; 3682 } 3683 #pragma omp atomic 3684 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3685 // expected-note@+1 {{expected an expression statement}} 3686 { 3687 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3688 { 3689 bar(); 3690 } 3691 } 3692 #pragma omp atomic 3693 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3694 // expected-note@+1 {{expected an expression statement}} 3695 { 3696 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3697 { 3698 bar(); 3699 } 3700 } 3701 #pragma omp atomic 3702 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3703 // expected-note@+1 {{expected an expression statement}} 3704 { 3705 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3706 { 3707 bar(); 3708 } 3709 } 3710 #pragma omp atomic 3711 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3712 // expected-note@+1 {{expected an expression statement}} 3713 { 3714 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3715 { 3716 bar(); 3717 } 3718 } 3719 #pragma omp atomic 3720 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3721 // expected-note@+1 {{expected an expression statement}} 3722 { 3723 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3724 { 3725 bar(); 3726 } 3727 } 3728 #pragma omp atomic 3729 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3730 // expected-note@+1 {{expected an expression statement}} 3731 { 3732 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3733 for (int i = 0; i < 10; ++i) 3734 ; 3735 } 3736 #pragma omp atomic 3737 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3738 // expected-note@+1 {{expected an expression statement}} 3739 { 3740 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3741 for (int i = 0; i < 10; ++i) 3742 ; 3743 } 3744 #pragma omp atomic 3745 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3746 // expected-note@+1 {{expected an expression statement}} 3747 { 3748 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3749 { 3750 bar(); 3751 } 3752 } 3753 #pragma omp atomic 3754 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3755 // expected-note@+1 {{expected an expression statement}} 3756 { 3757 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3758 { 3759 bar(); 3760 } 3761 } 3762 #pragma omp atomic 3763 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3764 // expected-note@+1 {{expected an expression statement}} 3765 { 3766 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3767 bar(); 3768 } 3769 #pragma omp atomic 3770 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3771 // expected-note@+1 {{expected an expression statement}} 3772 { 3773 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3774 bar(); 3775 } 3776 #pragma omp atomic 3777 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3778 // expected-note@+1 {{expected an expression statement}} 3779 { 3780 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3781 bar(); 3782 } 3783 #pragma omp atomic 3784 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3785 // expected-note@+1 {{expected an expression statement}} 3786 { 3787 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3788 bar(); 3789 } 3790 #pragma omp atomic 3791 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3792 // expected-note@+1 {{expected an expression statement}} 3793 { 3794 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3795 bar(); 3796 } 3797 #pragma omp atomic 3798 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3799 // expected-note@+1 {{expected an expression statement}} 3800 { 3801 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3802 ++a; 3803 } 3804 #pragma omp atomic 3805 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3806 // expected-note@+1 {{expected an expression statement}} 3807 { 3808 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3809 ++a; 3810 } 3811 #pragma omp atomic 3812 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3813 // expected-note@+1 {{expected an expression statement}} 3814 { 3815 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3816 ++a; 3817 } 3818 #pragma omp atomic 3819 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3820 // expected-note@+1 {{expected an expression statement}} 3821 { 3822 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3823 for (int i = 0; i < 10; ++i) 3824 ; 3825 } 3826 #pragma omp atomic 3827 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3828 // expected-note@+1 {{expected an expression statement}} 3829 { 3830 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3831 ++a; 3832 } 3833 #pragma omp atomic 3834 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3835 // expected-note@+1 {{expected an expression statement}} 3836 { 3837 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3838 ++a; 3839 } 3840 #pragma omp atomic 3841 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3842 // expected-note@+1 {{expected an expression statement}} 3843 { 3844 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3845 ++a; 3846 } 3847 #pragma omp atomic 3848 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3849 // expected-note@+1 {{expected an expression statement}} 3850 { 3851 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3852 for (int i = 0; i < 10; ++i) 3853 ++a; 3854 } 3855 #pragma omp atomic 3856 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3857 // expected-note@+1 {{expected an expression statement}} 3858 { 3859 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3860 for (int i = 0; i < 10; ++i) 3861 ; 3862 } 3863 #pragma omp atomic 3864 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3865 // expected-note@+1 {{expected an expression statement}} 3866 { 3867 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3868 bar(); 3869 } 3870 #pragma omp atomic 3871 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3872 // expected-note@+1 {{expected an expression statement}} 3873 { 3874 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3875 for (int i = 0; i < 10; ++i) 3876 ; 3877 } 3878 #pragma omp atomic 3879 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3880 // expected-note@+1 {{expected an expression statement}} 3881 { 3882 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3883 for (int i = 0; i < 10; ++i) 3884 ; 3885 } 3886 #pragma omp atomic 3887 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3888 // expected-note@+1 {{expected an expression statement}} 3889 { 3890 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3891 for (int i = 0; i < 10; ++i) 3892 ; 3893 } 3894 #pragma omp atomic 3895 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3896 // expected-note@+1 {{expected an expression statement}} 3897 { 3898 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3899 for (int i = 0; i < 10; ++i) 3900 ; 3901 } 3902 #pragma omp atomic 3903 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3904 // expected-note@+1 {{expected an expression statement}} 3905 { 3906 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3907 for (int i = 0; i < 10; ++i) 3908 ; 3909 } 3910 #pragma omp atomic 3911 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3912 // expected-note@+1 {{expected an expression statement}} 3913 { 3914 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3915 for (int i = 0; i < 10; ++i) 3916 ; 3917 } 3918 #pragma omp atomic 3919 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3920 // expected-note@+1 {{expected an expression statement}} 3921 { 3922 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3923 for (int i = 0; i < 10; ++i) 3924 ; 3925 } 3926 #pragma omp atomic 3927 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3928 // expected-note@+1 {{expected an expression statement}} 3929 { 3930 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3931 for (int i = 0; i < 10; ++i) 3932 ; 3933 } 3934 #pragma omp atomic 3935 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3936 // expected-note@+1 {{expected an expression statement}} 3937 { 3938 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3939 a++; 3940 } 3941 #pragma omp atomic 3942 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3943 // expected-note@+1 {{expected an expression statement}} 3944 { 3945 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3946 for (int i = 0; i < 10; ++i) 3947 ; 3948 } 3949 #pragma omp atomic 3950 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3951 // expected-note@+1 {{expected an expression statement}} 3952 { 3953 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3954 for (int i = 0; i < 10; ++i) 3955 ; 3956 } 3957 #pragma omp atomic 3958 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3959 // expected-note@+1 {{expected an expression statement}} 3960 { 3961 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3962 for (int i = 0; i < 10; ++i) 3963 ; 3964 } 3965 #pragma omp atomic 3966 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3967 // expected-note@+1 {{expected an expression statement}} 3968 { 3969 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3970 for (int i = 0; i < 10; ++i) 3971 ; 3972 } 3973 3974 // TARGET DIRECTIVE 3975 #pragma omp target 3976 #pragma omp parallel 3977 bar(); 3978 #pragma omp target 3979 #pragma omp for 3980 for (int i = 0; i < 10; ++i) 3981 ; 3982 #pragma omp target 3983 #pragma omp simd 3984 for (int i = 0; i < 10; ++i) 3985 ; 3986 #pragma omp target 3987 #pragma omp for simd 3988 for (int i = 0; i < 10; ++i) 3989 ; 3990 #pragma omp target 3991 #pragma omp sections 3992 { 3993 bar(); 3994 } 3995 #pragma omp target 3996 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 3997 { 3998 bar(); 3999 } 4000 #pragma omp target 4001 #pragma omp single 4002 bar(); 4003 4004 #pragma omp target 4005 #pragma omp master 4006 { 4007 bar(); 4008 } 4009 #pragma omp target 4010 #pragma omp critical 4011 { 4012 bar(); 4013 } 4014 #pragma omp target 4015 #pragma omp parallel for 4016 for (int i = 0; i < 10; ++i) 4017 ; 4018 #pragma omp target 4019 #pragma omp parallel for simd 4020 for (int i = 0; i < 10; ++i) 4021 ; 4022 #pragma omp target 4023 #pragma omp parallel sections 4024 { 4025 bar(); 4026 } 4027 #pragma omp target 4028 #pragma omp task 4029 { 4030 bar(); 4031 } 4032 #pragma omp target 4033 { 4034 #pragma omp taskyield 4035 bar(); 4036 } 4037 #pragma omp target 4038 { 4039 #pragma omp barrier 4040 bar(); 4041 } 4042 #pragma omp target 4043 { 4044 #pragma omp taskwait 4045 bar(); 4046 } 4047 #pragma omp target 4048 { 4049 #pragma omp flush 4050 bar(); 4051 } 4052 #pragma omp target 4053 { 4054 #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?}} 4055 bar(); 4056 } 4057 #pragma omp target 4058 { 4059 #pragma omp atomic 4060 ++a; 4061 } 4062 #pragma omp target 4063 { 4064 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4065 ++a; 4066 } 4067 #pragma omp target 4068 { 4069 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4070 ++a; 4071 } 4072 #pragma omp target 4073 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4074 for (int i = 0; i < 10; ++i) 4075 ; 4076 #pragma omp target 4077 { 4078 #pragma omp teams 4079 ++a; 4080 } 4081 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4082 { 4083 #pragma omp teams // expected-note {{directive outside teams construct here}} 4084 ++a; 4085 #pragma omp teams // expected-note {{nested teams construct here}} 4086 ++a; 4087 } 4088 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4089 { 4090 ++a; // expected-note {{statement outside teams construct here}} 4091 #pragma omp teams // expected-note {{nested teams construct here}} 4092 ++a; 4093 } 4094 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4095 { 4096 while (0) // expected-note {{statement outside teams construct here}} 4097 #pragma omp teams // expected-note {{nested teams construct here}} 4098 ++a; 4099 } 4100 #pragma omp target 4101 { 4102 #pragma omp taskloop 4103 for (int i = 0; i < 10; ++i) 4104 ++a; 4105 } 4106 #pragma omp target 4107 { 4108 #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?}} 4109 for (int i = 0; i < 10; ++i) 4110 ; 4111 } 4112 #pragma omp target 4113 { 4114 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4115 } 4116 #pragma omp target 4117 { 4118 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4119 } 4120 #pragma omp target 4121 { 4122 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4123 } 4124 #pragma omp target 4125 { 4126 #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?}} 4127 for (int i = 0; i < 10; ++i) 4128 ; 4129 } 4130 #pragma omp target 4131 { 4132 #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?}} 4133 for (int i = 0; i < 10; ++i) 4134 ; 4135 } 4136 #pragma omp target 4137 { 4138 #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?}} 4139 for (int i = 0; i < 10; ++i) 4140 ; 4141 } 4142 #pragma omp target 4143 { 4144 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4145 for (int i = 0; i < 10; ++i) 4146 ; 4147 } 4148 #pragma omp target 4149 { 4150 #pragma omp teams distribute // OK 4151 for (int i = 0; i < 10; ++i) 4152 ; 4153 } 4154 #pragma omp target 4155 { 4156 #pragma omp teams distribute simd // OK 4157 for (int i = 0; i < 10; ++i) 4158 ; 4159 } 4160 #pragma omp target 4161 { 4162 #pragma omp teams distribute parallel for simd // OK 4163 for (int i = 0; i < 10; ++i) 4164 ; 4165 } 4166 #pragma omp target 4167 { 4168 #pragma omp teams distribute parallel for // OK 4169 for (int i = 0; i < 10; ++i) 4170 ; 4171 } 4172 #pragma omp target 4173 { 4174 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4175 for (int i = 0; i < 10; ++i) 4176 ; 4177 } 4178 #pragma omp target 4179 { 4180 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4181 for (int i = 0; i < 10; ++i) 4182 ; 4183 } 4184 #pragma omp target 4185 { 4186 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4187 for (int i = 0; i < 10; ++i) 4188 ; 4189 } 4190 #pragma omp target 4191 { 4192 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4193 for (int i = 0; i < 10; ++i) 4194 ; 4195 } 4196 #pragma omp target 4197 { 4198 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4199 for (int i = 0; i < 10; ++i) 4200 ; 4201 } 4202 4203 // TARGET PARALLEL DIRECTIVE 4204 #pragma omp target parallel 4205 #pragma omp parallel 4206 bar(); 4207 #pragma omp target parallel 4208 #pragma omp for 4209 for (int i = 0; i < 10; ++i) 4210 ; 4211 #pragma omp target parallel 4212 #pragma omp simd 4213 for (int i = 0; i < 10; ++i) 4214 ; 4215 #pragma omp target parallel 4216 #pragma omp for simd 4217 for (int i = 0; i < 10; ++i) 4218 ; 4219 #pragma omp target parallel 4220 #pragma omp sections 4221 { 4222 bar(); 4223 } 4224 #pragma omp target parallel 4225 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 4226 { 4227 bar(); 4228 } 4229 #pragma omp target parallel 4230 #pragma omp single 4231 bar(); 4232 4233 #pragma omp target parallel 4234 #pragma omp master 4235 { 4236 bar(); 4237 } 4238 #pragma omp target parallel 4239 #pragma omp critical 4240 { 4241 bar(); 4242 } 4243 #pragma omp target parallel 4244 #pragma omp parallel for 4245 for (int i = 0; i < 10; ++i) 4246 ; 4247 #pragma omp target parallel 4248 #pragma omp parallel for simd 4249 for (int i = 0; i < 10; ++i) 4250 ; 4251 #pragma omp target parallel 4252 #pragma omp parallel sections 4253 { 4254 bar(); 4255 } 4256 #pragma omp target parallel 4257 #pragma omp task 4258 { 4259 bar(); 4260 } 4261 #pragma omp target parallel 4262 { 4263 #pragma omp taskyield 4264 bar(); 4265 } 4266 #pragma omp target parallel 4267 { 4268 #pragma omp barrier 4269 bar(); 4270 } 4271 #pragma omp target parallel 4272 { 4273 #pragma omp taskwait 4274 bar(); 4275 } 4276 #pragma omp target parallel 4277 { 4278 #pragma omp flush 4279 bar(); 4280 } 4281 #pragma omp target parallel 4282 { 4283 #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?}} 4284 bar(); 4285 } 4286 #pragma omp target parallel 4287 { 4288 #pragma omp atomic 4289 ++a; 4290 } 4291 #pragma omp target parallel 4292 { 4293 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 4294 ++a; 4295 } 4296 #pragma omp target parallel 4297 { 4298 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 4299 ++a; 4300 } 4301 #pragma omp target parallel 4302 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4303 for (int i = 0; i < 10; ++i) 4304 ; 4305 #pragma omp target parallel 4306 { 4307 #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?}} 4308 ++a; 4309 } 4310 #pragma omp target parallel 4311 { 4312 ++a; 4313 #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?}} 4314 ++a; 4315 } 4316 #pragma omp target parallel 4317 { 4318 #pragma omp taskloop 4319 for (int i = 0; i < 10; ++i) 4320 ++a; 4321 } 4322 #pragma omp target parallel 4323 { 4324 #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?}} 4325 for (int i = 0; i < 10; ++i) 4326 ; 4327 } 4328 #pragma omp target parallel 4329 { 4330 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4331 } 4332 #pragma omp target parallel 4333 { 4334 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4335 } 4336 #pragma omp target parallel 4337 { 4338 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4339 } 4340 #pragma omp target parallel 4341 { 4342 #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?}} 4343 for (int i = 0; i < 10; ++i) 4344 ; 4345 } 4346 #pragma omp target parallel 4347 { 4348 #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?}} 4349 for (int i = 0; i < 10; ++i) 4350 ; 4351 } 4352 #pragma omp target parallel 4353 { 4354 #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?}} 4355 for (int i = 0; i < 10; ++i) 4356 ; 4357 } 4358 #pragma omp target parallel 4359 { 4360 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4361 for (int i = 0; i < 10; ++i) 4362 ; 4363 } 4364 #pragma omp target parallel 4365 { 4366 #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?}} 4367 for (int i = 0; i < 10; ++i) 4368 ; 4369 } 4370 #pragma omp target parallel 4371 { 4372 #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?}} 4373 for (int i = 0; i < 10; ++i) 4374 ; 4375 } 4376 #pragma omp target parallel 4377 { 4378 #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?}} 4379 for (int i = 0; i < 10; ++i) 4380 ; 4381 } 4382 #pragma omp target parallel 4383 { 4384 #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?}} 4385 for (int i = 0; i < 10; ++i) 4386 ; 4387 } 4388 #pragma omp target parallel 4389 { 4390 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 4391 a++; 4392 } 4393 #pragma omp target parallel 4394 { 4395 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 4396 for (int i = 0; i < 10; ++i) 4397 ; 4398 } 4399 #pragma omp target parallel 4400 { 4401 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4402 for (int i = 0; i < 10; ++i) 4403 ; 4404 } 4405 #pragma omp target parallel 4406 { 4407 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4408 for (int i = 0; i < 10; ++i) 4409 ; 4410 } 4411 #pragma omp target parallel 4412 { 4413 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4414 for (int i = 0; i < 10; ++i) 4415 ; 4416 } 4417 4418 // TARGET PARALLEL FOR DIRECTIVE 4419 #pragma omp target parallel for 4420 for (int i = 0; i < 10; ++i) { 4421 #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?}} 4422 for (int i = 0; i < 10; ++i) 4423 ; 4424 } 4425 #pragma omp target parallel for 4426 for (int i = 0; i < 10; ++i) { 4427 #pragma omp simd 4428 for (int i = 0; i < 10; ++i) 4429 ; 4430 } 4431 #pragma omp target parallel for 4432 for (int i = 0; i < 10; ++i) { 4433 #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?}} 4434 for (int i = 0; i < 10; ++i) 4435 ; 4436 } 4437 #pragma omp target parallel for 4438 for (int i = 0; i < 10; ++i) { 4439 #pragma omp parallel 4440 for (int i = 0; i < 10; ++i) 4441 ; 4442 } 4443 #pragma omp target parallel for 4444 for (int i = 0; i < 10; ++i) { 4445 #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?}} 4446 { 4447 bar(); 4448 } 4449 } 4450 #pragma omp target parallel for 4451 for (int i = 0; i < 10; ++i) { 4452 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4453 { 4454 bar(); 4455 } 4456 } 4457 #pragma omp target parallel for 4458 for (int i = 0; i < 10; ++i) { 4459 #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?}} 4460 { 4461 bar(); 4462 } 4463 } 4464 4465 #pragma omp target parallel for 4466 for (int i = 0; i < 10; ++i) { 4467 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4468 { 4469 bar(); 4470 } 4471 } 4472 4473 #pragma omp target parallel for 4474 for (int i = 0; i < 10; ++i) { 4475 #pragma omp critical 4476 { 4477 bar(); 4478 } 4479 } 4480 4481 #pragma omp target parallel for 4482 for (int i = 0; i < 10; ++i) { 4483 #pragma omp parallel 4484 { 4485 #pragma omp single // OK 4486 { 4487 bar(); 4488 } 4489 #pragma omp for // OK 4490 for (int i = 0; i < 10; ++i) 4491 ; 4492 #pragma omp for simd // OK 4493 for (int i = 0; i < 10; ++i) 4494 ; 4495 #pragma omp sections // OK 4496 { 4497 bar(); 4498 } 4499 } 4500 } 4501 #pragma omp target parallel for 4502 for (int i = 0; i < 10; ++i) { 4503 #pragma omp parallel for 4504 for (int i = 0; i < 10; ++i) 4505 ; 4506 } 4507 #pragma omp target parallel for 4508 for (int i = 0; i < 10; ++i) { 4509 #pragma omp parallel for simd 4510 for (int i = 0; i < 10; ++i) 4511 ; 4512 } 4513 #pragma omp target parallel for 4514 for (int i = 0; i < 10; ++i) { 4515 #pragma omp parallel sections 4516 { 4517 bar(); 4518 } 4519 } 4520 #pragma omp target parallel for 4521 for (int i = 0; i < 10; ++i) { 4522 #pragma omp task 4523 { 4524 bar(); 4525 } 4526 } 4527 #pragma omp target parallel for 4528 for (int i = 0; i < 10; ++i) { 4529 #pragma omp taskyield 4530 bar(); 4531 } 4532 #pragma omp target parallel for 4533 for (int i = 0; i < 10; ++i) { 4534 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4535 bar(); 4536 } 4537 #pragma omp target parallel for 4538 for (int i = 0; i < 10; ++i) { 4539 #pragma omp taskwait 4540 bar(); 4541 } 4542 #pragma omp target parallel for 4543 for (int i = 0; i < 10; ++i) { 4544 #pragma omp flush 4545 bar(); 4546 } 4547 #pragma omp target parallel for 4548 for (int i = 0; i < 10; ++i) { 4549 #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?}} 4550 bar(); 4551 } 4552 #pragma omp target parallel for ordered 4553 for (int i = 0; i < 10; ++i) { 4554 #pragma omp ordered // OK 4555 bar(); 4556 } 4557 #pragma omp target parallel for 4558 for (int i = 0; i < 10; ++i) { 4559 #pragma omp atomic 4560 ++a; 4561 } 4562 #pragma omp target parallel for 4563 for (int i = 0; i < 10; ++i) { 4564 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 4565 ++a; 4566 } 4567 #pragma omp target parallel for 4568 for (int i = 0; i < 10; ++i) { 4569 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 4570 ++a; 4571 } 4572 #pragma omp target parallel for 4573 for (int i = 0; i < 10; ++i) { 4574 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4575 for (int i = 0; i < 10; ++i) 4576 ; 4577 } 4578 #pragma omp target parallel for 4579 for (int i = 0; i < 10; ++i) { 4580 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4581 ++a; 4582 } 4583 #pragma omp target parallel for 4584 for (int i = 0; i < 10; ++i) { 4585 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4586 ++a; 4587 } 4588 #pragma omp target parallel for 4589 for (int i = 0; i < 10; ++i) { 4590 #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?}} 4591 ++a; 4592 } 4593 #pragma omp target parallel for 4594 for (int i = 0; i < 10; ++i) { 4595 #pragma omp taskloop 4596 for (int i = 0; i < 10; ++i) 4597 ++a; 4598 } 4599 #pragma omp target parallel for 4600 for (int i = 0; i < 10; ++i) { 4601 #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?}} 4602 for (int j = 0; j < 10; ++j) 4603 ; 4604 } 4605 #pragma omp target parallel for 4606 for (int i = 0; i < 10; ++i) { 4607 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4608 } 4609 #pragma omp target parallel for 4610 for (int i = 0; i < 10; ++i) { 4611 #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?}} 4612 for (int j = 0; j < 10; ++j) 4613 ; 4614 } 4615 #pragma omp target parallel for 4616 for (int i = 0; i < 10; ++i) { 4617 #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?}} 4618 for (int j = 0; j < 10; ++j) 4619 ; 4620 } 4621 #pragma omp target parallel for 4622 for (int i = 0; i < 10; ++i) { 4623 #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?}} 4624 for (int j = 0; j < 10; ++j) 4625 ; 4626 } 4627 #pragma omp target parallel for 4628 for (int i = 0; i < 10; ++i) { 4629 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4630 for (int j = 0; j < 10; ++j) 4631 ; 4632 } 4633 #pragma omp target parallel for 4634 for (int i = 0; i < 10; ++i) { 4635 #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?}} 4636 for (int j = 0; j < 10; ++j) 4637 ; 4638 } 4639 #pragma omp target parallel for 4640 for (int i = 0; i < 10; ++i) { 4641 #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?}} 4642 for (int j = 0; j < 10; ++j) 4643 ; 4644 } 4645 #pragma omp target parallel for 4646 for (int i = 0; i < 10; ++i) { 4647 #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?}} 4648 for (int j = 0; j < 10; ++j) 4649 ; 4650 } 4651 #pragma omp target parallel for 4652 for (int i = 0; i < 10; ++i) { 4653 #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?}} 4654 for (int j = 0; j < 10; ++j) 4655 ; 4656 } 4657 #pragma omp target parallel for 4658 for (int i = 0; i < 10; ++i) { 4659 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 4660 a++; 4661 } 4662 #pragma omp target parallel for 4663 for (int i = 0; i < 10; ++i) { 4664 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 4665 for (int j = 0; j < 10; ++j) 4666 ; 4667 } 4668 #pragma omp target parallel for 4669 for (int i = 0; i < 10; ++i) { 4670 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4671 for (int j = 0; j < 10; ++j) 4672 ; 4673 } 4674 #pragma omp target parallel for 4675 for (int i = 0; i < 10; ++i) { 4676 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4677 for (int j = 0; j < 10; ++j) 4678 ; 4679 } 4680 #pragma omp target parallel for 4681 for (int i = 0; i < 10; ++i) { 4682 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4683 for (int j = 0; j < 10; ++j) 4684 ; 4685 } 4686 4687 // TEAMS DIRECTIVE 4688 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 4689 bar(); 4690 #pragma omp target 4691 #pragma omp teams 4692 #pragma omp parallel 4693 bar(); 4694 #pragma omp target 4695 #pragma omp teams 4696 #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?}} 4697 for (int i = 0; i < 10; ++i) 4698 ; 4699 #pragma omp target 4700 #pragma omp teams 4701 #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?}} 4702 for (int i = 0; i < 10; ++i) 4703 ; 4704 #pragma omp target 4705 #pragma omp teams 4706 #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?}} 4707 for (int i = 0; i < 10; ++i) 4708 ; 4709 #pragma omp target 4710 #pragma omp teams 4711 #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?}} 4712 { 4713 bar(); 4714 } 4715 #pragma omp target 4716 #pragma omp teams 4717 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 4718 { 4719 bar(); 4720 } 4721 #pragma omp target 4722 #pragma omp teams 4723 #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?}} 4724 bar(); 4725 4726 #pragma omp target 4727 #pragma omp teams 4728 #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?}} 4729 { 4730 bar(); 4731 } 4732 #pragma omp target 4733 #pragma omp teams 4734 #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?}} 4735 { 4736 bar(); 4737 } 4738 #pragma omp target 4739 #pragma omp teams 4740 #pragma omp parallel for 4741 for (int i = 0; i < 10; ++i) 4742 ; 4743 #pragma omp target 4744 #pragma omp teams 4745 #pragma omp parallel for simd 4746 for (int i = 0; i < 10; ++i) 4747 ; 4748 #pragma omp target 4749 #pragma omp teams 4750 #pragma omp parallel sections 4751 { 4752 bar(); 4753 } 4754 #pragma omp target 4755 #pragma omp teams 4756 #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?}} 4757 { 4758 bar(); 4759 } 4760 #pragma omp target 4761 #pragma omp teams 4762 { 4763 #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?}} 4764 bar(); 4765 } 4766 #pragma omp target 4767 #pragma omp teams 4768 { 4769 #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?}} 4770 bar(); 4771 } 4772 #pragma omp target 4773 #pragma omp teams 4774 { 4775 #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?}} 4776 bar(); 4777 } 4778 #pragma omp target 4779 #pragma omp teams 4780 { 4781 #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?}} 4782 bar(); 4783 } 4784 #pragma omp target 4785 #pragma omp teams 4786 { 4787 #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?}} 4788 bar(); 4789 } 4790 #pragma omp target 4791 #pragma omp teams 4792 { 4793 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 4794 ++a; 4795 } 4796 #pragma omp target 4797 #pragma omp teams 4798 { 4799 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4800 ++a; 4801 } 4802 #pragma omp target 4803 #pragma omp teams 4804 { 4805 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4806 ++a; 4807 } 4808 #pragma omp target 4809 #pragma omp teams 4810 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4811 for (int i = 0; i < 10; ++i) 4812 ; 4813 #pragma omp target 4814 #pragma omp teams 4815 { 4816 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4817 ++a; 4818 } 4819 #pragma omp target 4820 #pragma omp teams 4821 { 4822 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4823 ++a; 4824 } 4825 #pragma omp target 4826 #pragma omp teams 4827 { 4828 #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?}} 4829 ++a; 4830 } 4831 #pragma omp target 4832 #pragma omp teams 4833 { 4834 #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?}} 4835 for (int i = 0; i < 10; ++i) 4836 ++a; 4837 } 4838 #pragma omp target 4839 #pragma omp teams 4840 #pragma omp distribute 4841 for (int i = 0; i < 10; ++i) 4842 ; 4843 #pragma omp target 4844 #pragma omp teams 4845 #pragma omp distribute 4846 for (int i = 0; i < 10; ++i) 4847 ; 4848 #pragma omp distribute 4849 for (int j = 0; j < 10; ++j) 4850 ; 4851 #pragma omp target 4852 #pragma omp teams 4853 { 4854 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4855 } 4856 #pragma omp target 4857 #pragma omp teams 4858 { 4859 #pragma omp distribute parallel for 4860 for (int i = 0; i < 10; ++i) 4861 ; 4862 #pragma omp distribute parallel for 4863 for (int j = 0; j < 10; ++j) 4864 ; 4865 } 4866 #pragma omp target 4867 #pragma omp teams 4868 { 4869 #pragma omp distribute parallel for simd 4870 for (int i = 0; i < 10; ++i) 4871 ; 4872 #pragma omp distribute parallel for simd 4873 for (int j = 0; j < 10; ++j) 4874 ; 4875 } 4876 #pragma omp target 4877 #pragma omp teams 4878 { 4879 #pragma omp distribute simd 4880 for (int i = 0; i < 10; ++i) 4881 ; 4882 #pragma omp distribute simd 4883 for (int j = 0; j < 10; ++j) 4884 ; 4885 } 4886 #pragma omp target 4887 #pragma omp teams 4888 { 4889 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4890 for (int i = 0; i < 10; ++i) 4891 ; 4892 } 4893 #pragma omp target 4894 #pragma omp teams 4895 { 4896 #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?}} 4897 for (int i = 0; i < 10; ++i) 4898 ; 4899 } 4900 #pragma omp target 4901 #pragma omp teams 4902 { 4903 #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?}} 4904 for (int i = 0; i < 10; ++i) 4905 ; 4906 } 4907 #pragma omp target 4908 #pragma omp teams 4909 { 4910 #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?}} 4911 for (int i = 0; i < 10; ++i) 4912 ; 4913 } 4914 #pragma omp target 4915 #pragma omp teams 4916 { 4917 #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?}} 4918 for (int i = 0; i < 10; ++i) 4919 ; 4920 } 4921 #pragma omp target 4922 #pragma omp teams 4923 { 4924 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4925 a++; 4926 } 4927 #pragma omp target 4928 #pragma omp teams 4929 { 4930 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4931 for (int i = 0; i < 10; ++i) 4932 ; 4933 } 4934 #pragma omp target 4935 #pragma omp teams 4936 { 4937 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4938 for (int i = 0; i < 10; ++i) 4939 ; 4940 } 4941 #pragma omp target 4942 #pragma omp teams 4943 { 4944 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4945 for (int i = 0; i < 10; ++i) 4946 ; 4947 } 4948 #pragma omp target 4949 #pragma omp teams 4950 { 4951 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4952 for (int i = 0; i < 10; ++i) 4953 ; 4954 } 4955 4956 // TASKLOOP DIRECTIVE 4957 #pragma omp taskloop 4958 for (int i = 0; i < 10; ++i) { 4959 #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?}} 4960 for (int i = 0; i < 10; ++i) 4961 ; 4962 } 4963 #pragma omp taskloop 4964 for (int i = 0; i < 10; ++i) { 4965 #pragma omp simd 4966 for (int i = 0; i < 10; ++i) 4967 ; 4968 } 4969 #pragma omp taskloop 4970 for (int i = 0; i < 10; ++i) { 4971 #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?}} 4972 for (int i = 0; i < 10; ++i) 4973 ; 4974 } 4975 #pragma omp taskloop 4976 for (int i = 0; i < 10; ++i) { 4977 #pragma omp parallel 4978 for (int i = 0; i < 10; ++i) 4979 ; 4980 } 4981 #pragma omp taskloop 4982 for (int i = 0; i < 10; ++i) { 4983 #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?}} 4984 { 4985 bar(); 4986 } 4987 } 4988 #pragma omp taskloop 4989 for (int i = 0; i < 10; ++i) { 4990 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 4991 { 4992 bar(); 4993 } 4994 } 4995 #pragma omp taskloop 4996 for (int i = 0; i < 10; ++i) { 4997 #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?}} 4998 { 4999 bar(); 5000 } 5001 } 5002 5003 #pragma omp taskloop 5004 for (int i = 0; i < 10; ++i) { 5005 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5006 { 5007 bar(); 5008 } 5009 } 5010 #pragma omp taskloop 5011 for (int i = 0; i < 10; ++i) { 5012 #pragma omp critical 5013 { 5014 bar(); 5015 } 5016 } 5017 #pragma omp taskloop 5018 for (int i = 0; i < 10; ++i) { 5019 #pragma omp parallel 5020 { 5021 #pragma omp single // OK 5022 { 5023 bar(); 5024 } 5025 #pragma omp for // OK 5026 for (int i = 0; i < 10; ++i) 5027 ; 5028 #pragma omp sections // OK 5029 { 5030 bar(); 5031 } 5032 } 5033 } 5034 #pragma omp taskloop 5035 for (int i = 0; i < 10; ++i) { 5036 #pragma omp parallel for 5037 for (int i = 0; i < 10; ++i) 5038 ; 5039 } 5040 #pragma omp taskloop 5041 for (int i = 0; i < 10; ++i) { 5042 #pragma omp parallel for simd 5043 for (int i = 0; i < 10; ++i) 5044 ; 5045 } 5046 #pragma omp taskloop 5047 for (int i = 0; i < 10; ++i) { 5048 #pragma omp parallel sections 5049 { 5050 bar(); 5051 } 5052 } 5053 #pragma omp taskloop 5054 for (int i = 0; i < 10; ++i) { 5055 #pragma omp task 5056 { 5057 bar(); 5058 } 5059 } 5060 #pragma omp taskloop 5061 for (int i = 0; i < 10; ++i) { 5062 #pragma omp taskyield 5063 bar(); 5064 } 5065 #pragma omp taskloop 5066 for (int i = 0; i < 10; ++i) { 5067 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5068 bar(); 5069 } 5070 #pragma omp taskloop 5071 for (int i = 0; i < 10; ++i) { 5072 #pragma omp taskwait 5073 bar(); 5074 } 5075 #pragma omp taskloop 5076 for (int i = 0; i < 10; ++i) { 5077 #pragma omp flush 5078 bar(); 5079 } 5080 #pragma omp taskloop 5081 for (int i = 0; i < 10; ++i) { 5082 #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?}} 5083 bar(); 5084 } 5085 #pragma omp taskloop 5086 for (int i = 0; i < 10; ++i) { 5087 #pragma omp atomic 5088 ++a; 5089 } 5090 #pragma omp taskloop 5091 for (int i = 0; i < 10; ++i) { 5092 #pragma omp target 5093 ++a; 5094 } 5095 #pragma omp taskloop 5096 for (int i = 0; i < 10; ++i) { 5097 #pragma omp target parallel 5098 ++a; 5099 } 5100 #pragma omp taskloop 5101 for (int i = 0; i < 10; ++i) { 5102 #pragma omp target parallel for 5103 for (int i = 0; i < 10; ++i) 5104 ; 5105 } 5106 #pragma omp taskloop 5107 for (int i = 0; i < 10; ++i) { 5108 #pragma omp target enter data map(to: a) 5109 ++a; 5110 } 5111 #pragma omp taskloop 5112 for (int i = 0; i < 10; ++i) { 5113 #pragma omp target exit data map(from: a) 5114 ++a; 5115 } 5116 #pragma omp taskloop 5117 for (int i = 0; i < 10; ++i) { 5118 #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?}} 5119 ++a; 5120 } 5121 #pragma omp taskloop 5122 for (int i = 0; i < 10; ++i) { 5123 #pragma omp taskloop 5124 for (int i = 0; i < 10; ++i) 5125 ++a; 5126 } 5127 #pragma omp taskloop 5128 for (int i = 0; i < 10; ++i) { 5129 #pragma omp target update to(a) 5130 bar(); 5131 } 5132 #pragma omp taskloop 5133 for (int i = 0; i < 10; ++i) { 5134 #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?}} 5135 for (int j = 0; j < 10; ++j) 5136 ++a; 5137 } 5138 #pragma omp taskloop 5139 for (int i = 0; i < 10; ++i) { 5140 #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?}} 5141 for (int j = 0; j < 10; ++j) 5142 ++a; 5143 } 5144 #pragma omp taskloop 5145 for (int i = 0; i < 10; ++i) { 5146 #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?}} 5147 for (int j = 0; j < 10; ++j) 5148 ++a; 5149 } 5150 #pragma omp taskloop 5151 for (int i = 0; i < 10; ++i) { 5152 #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?}} 5153 for (int j = 0; j < 10; ++j) 5154 ++a; 5155 } 5156 #pragma omp taskloop 5157 for (int i = 0; i < 10; ++i) { 5158 #pragma omp target simd // OK 5159 for (int j = 0; j < 10; ++j) 5160 ++a; 5161 } 5162 #pragma omp taskloop 5163 for (int i = 0; i < 10; ++i) { 5164 #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?}} 5165 for (int j = 0; j < 10; ++j) 5166 ++a; 5167 } 5168 #pragma omp taskloop 5169 for (int i = 0; i < 10; ++i) { 5170 #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?}} 5171 for (int j = 0; j < 10; ++j) 5172 ++a; 5173 } 5174 #pragma omp taskloop 5175 for (int i = 0; i < 10; ++i) { 5176 #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?}} 5177 for (int j = 0; j < 10; ++j) 5178 ++a; 5179 } 5180 #pragma omp taskloop 5181 for (int i = 0; i < 10; ++i) { 5182 #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?}} 5183 for (int j = 0; j < 10; ++j) 5184 ++a; 5185 } 5186 #pragma omp taskloop 5187 for (int i = 0; i < 10; ++i) { 5188 #pragma omp target teams // OK 5189 ++a; 5190 } 5191 #pragma omp taskloop 5192 for (int i = 0; i < 10; ++i) { 5193 #pragma omp target teams distribute // OK 5194 for (int j = 0; j < 10; ++j) 5195 ++a; 5196 } 5197 #pragma omp taskloop 5198 for (int i = 0; i < 10; ++i) { 5199 #pragma omp target teams distribute parallel for // OK 5200 for (int j = 0; j < 10; ++j) 5201 ++a; 5202 } 5203 #pragma omp taskloop 5204 for (int i = 0; i < 10; ++i) { 5205 #pragma omp target teams distribute parallel for simd // OK 5206 for (int j = 0; j < 10; ++j) 5207 ++a; 5208 } 5209 #pragma omp taskloop 5210 for (int i = 0; i < 10; ++i) { 5211 #pragma omp target teams distribute simd // OK 5212 for (int j = 0; j < 10; ++j) 5213 ++a; 5214 } 5215 5216 // DISTRIBUTE DIRECTIVE 5217 #pragma omp target 5218 #pragma omp teams 5219 #pragma omp distribute 5220 for (int i = 0; i < 10; ++i) { 5221 #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?}} 5222 for (int i = 0; i < 10; ++i) 5223 ; 5224 } 5225 #pragma omp target 5226 #pragma omp teams 5227 #pragma omp distribute 5228 for (int i = 0; i < 10; ++i) { 5229 #pragma omp for 5230 for (int i = 0; i < 10; ++i) 5231 ; 5232 } 5233 #pragma omp target 5234 #pragma omp teams 5235 #pragma omp distribute 5236 for (int i = 0; i < 10; ++i) { 5237 #pragma omp simd 5238 for (int i = 0; i < 10; ++i) 5239 ; 5240 } 5241 #pragma omp target 5242 #pragma omp teams 5243 #pragma omp distribute 5244 for (int i = 0; i < 10; ++i) { 5245 #pragma omp for simd 5246 for (int i = 0; i < 10; ++i) 5247 ; 5248 } 5249 #pragma omp target 5250 #pragma omp teams 5251 #pragma omp distribute 5252 for (int i = 0; i < 10; ++i) { 5253 #pragma omp parallel 5254 for (int i = 0; i < 10; ++i) 5255 ; 5256 } 5257 #pragma omp target 5258 #pragma omp teams 5259 #pragma omp distribute 5260 for (int i = 0; i < 10; ++i) { 5261 #pragma omp sections 5262 { 5263 bar(); 5264 } 5265 } 5266 #pragma omp target 5267 #pragma omp teams 5268 #pragma omp distribute 5269 for (int i = 0; i < 10; ++i) { 5270 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 5271 { 5272 bar(); 5273 } 5274 } 5275 #pragma omp target 5276 #pragma omp teams 5277 #pragma omp distribute 5278 for (int i = 0; i < 10; ++i) { 5279 #pragma omp single 5280 { 5281 bar(); 5282 } 5283 } 5284 #pragma omp target 5285 #pragma omp teams 5286 #pragma omp distribute 5287 for (int i = 0; i < 10; ++i) { 5288 #pragma omp master 5289 { 5290 bar(); 5291 } 5292 } 5293 #pragma omp target 5294 #pragma omp teams 5295 #pragma omp distribute 5296 for (int i = 0; i < 10; ++i) { 5297 #pragma omp critical 5298 { 5299 bar(); 5300 } 5301 } 5302 #pragma omp target 5303 #pragma omp teams 5304 #pragma omp distribute 5305 for (int i = 0; i < 10; ++i) { 5306 #pragma omp parallel 5307 { 5308 #pragma omp single 5309 { 5310 bar(); 5311 } 5312 } 5313 } 5314 #pragma omp target 5315 #pragma omp teams 5316 #pragma omp distribute 5317 for (int i = 0; i < 10; ++i) { 5318 #pragma omp parallel for 5319 for (int i = 0; i < 10; ++i) 5320 ; 5321 } 5322 #pragma omp target 5323 #pragma omp teams 5324 #pragma omp distribute 5325 for (int i = 0; i < 10; ++i) { 5326 #pragma omp parallel for simd 5327 for (int i = 0; i < 10; ++i) 5328 ; 5329 } 5330 #pragma omp target 5331 #pragma omp teams 5332 #pragma omp distribute 5333 for (int i = 0; i < 10; ++i) { 5334 #pragma omp parallel sections 5335 { 5336 bar(); 5337 } 5338 } 5339 #pragma omp target 5340 #pragma omp teams 5341 #pragma omp distribute 5342 for (int i = 0; i < 10; ++i) { 5343 #pragma omp task 5344 { 5345 bar(); 5346 } 5347 } 5348 #pragma omp target 5349 #pragma omp teams 5350 #pragma omp distribute 5351 for (int i = 0; i < 10; ++i) { 5352 #pragma omp taskyield 5353 bar(); 5354 } 5355 #pragma omp target 5356 #pragma omp teams 5357 #pragma omp distribute 5358 for (int i = 0; i < 10; ++i) { 5359 #pragma omp barrier 5360 bar(); 5361 } 5362 #pragma omp target 5363 #pragma omp teams 5364 #pragma omp distribute 5365 for (int i = 0; i < 10; ++i) { 5366 #pragma omp taskwait 5367 bar(); 5368 } 5369 #pragma omp target 5370 #pragma omp teams 5371 #pragma omp distribute 5372 for (int i = 0; i < 10; ++i) { 5373 #pragma omp flush 5374 bar(); 5375 } 5376 #pragma omp target 5377 #pragma omp teams 5378 #pragma omp distribute 5379 for (int i = 0; i < 10; ++i) { 5380 #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?}} 5381 bar(); 5382 } 5383 #pragma omp target 5384 #pragma omp teams 5385 #pragma omp distribute 5386 for (int i = 0; i < 10; ++i) { 5387 #pragma omp atomic 5388 ++a; 5389 } 5390 #pragma omp target 5391 #pragma omp teams 5392 #pragma omp distribute 5393 for (int i = 0; i < 10; ++i) { 5394 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5395 ++a; 5396 } 5397 #pragma omp target 5398 #pragma omp teams 5399 #pragma omp distribute 5400 for (int i = 0; i < 10; ++i) { 5401 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5402 ++a; 5403 } 5404 #pragma omp target 5405 #pragma omp teams 5406 #pragma omp distribute 5407 for (int i = 0; i < 10; ++i) { 5408 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5409 for (int i = 0; i < 10; ++i) 5410 ; 5411 } 5412 #pragma omp target 5413 #pragma omp teams 5414 #pragma omp distribute 5415 for (int i = 0; i < 10; ++i) { 5416 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5417 ++a; 5418 } 5419 #pragma omp target 5420 #pragma omp teams 5421 #pragma omp distribute 5422 for (int i = 0; i < 10; ++i) { 5423 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5424 ++a; 5425 } 5426 #pragma omp target 5427 #pragma omp teams 5428 #pragma omp distribute 5429 for (int i = 0; i < 10; ++i) { 5430 #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?}} 5431 ++a; 5432 } 5433 #pragma omp target 5434 #pragma omp teams 5435 #pragma omp distribute 5436 for (int i = 0; i < 10; ++i) { 5437 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5438 ++a; 5439 } 5440 #pragma omp target 5441 #pragma omp teams 5442 #pragma omp distribute 5443 for (int i = 0; i < 10; ++i) { 5444 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5445 for (int j = 0; j < 10; ++j) 5446 ; 5447 } 5448 #pragma omp target 5449 #pragma omp teams 5450 #pragma omp distribute 5451 for (int i = 0; i < 10; ++i) { 5452 #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?}} 5453 for (int j = 0; j < 10; ++j) 5454 ; 5455 } 5456 #pragma omp target 5457 #pragma omp teams 5458 #pragma omp distribute 5459 for (int i = 0; i < 10; ++i) { 5460 #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?}} 5461 for (int j = 0; j < 10; ++j) 5462 ; 5463 } 5464 #pragma omp target 5465 #pragma omp teams 5466 #pragma omp distribute 5467 for (int i = 0; i < 10; ++i) { 5468 #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?}} 5469 for (int j = 0; j < 10; ++j) 5470 ; 5471 } 5472 #pragma omp target 5473 #pragma omp teams 5474 #pragma omp distribute 5475 for (int i = 0; i < 10; ++i) { 5476 #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?}} 5477 for (int j = 0; j < 10; ++j) 5478 ; 5479 } 5480 #pragma omp target 5481 #pragma omp teams 5482 #pragma omp distribute 5483 for (int i = 0; i < 10; ++i) { 5484 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5485 a++; 5486 } 5487 #pragma omp target 5488 #pragma omp teams 5489 #pragma omp distribute 5490 for (int i = 0; i < 10; ++i) { 5491 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5492 for (int j = 0; j < 10; ++j) 5493 ; 5494 } 5495 #pragma omp target 5496 #pragma omp teams 5497 #pragma omp distribute 5498 for (int i = 0; i < 10; ++i) { 5499 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5500 for (int j = 0; j < 10; ++j) 5501 ; 5502 } 5503 #pragma omp target 5504 #pragma omp teams 5505 #pragma omp distribute 5506 for (int i = 0; i < 10; ++i) { 5507 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5508 for (int j = 0; j < 10; ++j) 5509 ; 5510 } 5511 #pragma omp target 5512 #pragma omp teams 5513 #pragma omp distribute 5514 for (int i = 0; i < 10; ++i) { 5515 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5516 for (int j = 0; j < 10; ++j) 5517 ; 5518 } 5519 5520 // DISTRIBUTE PARALLEL FOR DIRECTIVE 5521 #pragma omp target 5522 #pragma omp teams 5523 #pragma omp distribute parallel for 5524 for (int i = 0; i < 10; ++i) { 5525 #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?}} 5526 for (int i = 0; i < 10; ++i) 5527 ; 5528 } 5529 #pragma omp target 5530 #pragma omp teams 5531 #pragma omp distribute parallel for 5532 for (int i = 0; i < 10; ++i) { 5533 #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?}} 5534 for (int i = 0; i < 10; ++i) 5535 ; 5536 } 5537 #pragma omp target 5538 #pragma omp teams 5539 #pragma omp distribute parallel for 5540 for (int i = 0; i < 10; ++i) { 5541 #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?}} 5542 for (int i = 0; i < 10; ++i) 5543 ; 5544 } 5545 #pragma omp target 5546 #pragma omp teams 5547 #pragma omp distribute parallel for 5548 for (int i = 0; i < 10; ++i) { 5549 #pragma omp simd 5550 for (int i = 0; i < 10; ++i) 5551 ; 5552 } 5553 #pragma omp target 5554 #pragma omp teams 5555 #pragma omp distribute parallel for 5556 for (int i = 0; i < 10; ++i) { 5557 #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?}} 5558 for (int i = 0; i < 10; ++i) 5559 ; 5560 } 5561 #pragma omp target 5562 #pragma omp teams 5563 #pragma omp distribute parallel for 5564 for (int i = 0; i < 10; ++i) { 5565 #pragma omp parallel 5566 for (int i = 0; i < 10; ++i) 5567 ; 5568 } 5569 #pragma omp target 5570 #pragma omp teams 5571 #pragma omp distribute parallel for 5572 for (int i = 0; i < 10; ++i) { 5573 #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?}} 5574 { 5575 bar(); 5576 } 5577 } 5578 #pragma omp target 5579 #pragma omp teams 5580 #pragma omp distribute parallel for 5581 for (int i = 0; i < 10; ++i) { 5582 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 5583 { 5584 bar(); 5585 } 5586 } 5587 #pragma omp target 5588 #pragma omp teams 5589 #pragma omp distribute parallel for 5590 for (int i = 0; i < 10; ++i) { 5591 #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?}} 5592 { 5593 bar(); 5594 } 5595 } 5596 #pragma omp target 5597 #pragma omp teams 5598 #pragma omp distribute parallel for 5599 for (int i = 0; i < 10; ++i) { 5600 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5601 { 5602 bar(); 5603 } 5604 } 5605 #pragma omp target 5606 #pragma omp teams 5607 #pragma omp distribute parallel for 5608 for (int i = 0; i < 10; ++i) { 5609 #pragma omp critical 5610 { 5611 bar(); 5612 } 5613 } 5614 #pragma omp target 5615 #pragma omp teams 5616 #pragma omp distribute parallel for 5617 for (int i = 0; i < 10; ++i) { 5618 #pragma omp parallel 5619 { 5620 #pragma omp single 5621 { 5622 bar(); 5623 } 5624 } 5625 } 5626 #pragma omp target 5627 #pragma omp teams 5628 #pragma omp distribute parallel for 5629 for (int i = 0; i < 10; ++i) { 5630 #pragma omp parallel for 5631 for (int i = 0; i < 10; ++i) 5632 ; 5633 } 5634 #pragma omp target 5635 #pragma omp teams 5636 #pragma omp distribute parallel for 5637 for (int i = 0; i < 10; ++i) { 5638 #pragma omp parallel for simd 5639 for (int i = 0; i < 10; ++i) 5640 ; 5641 } 5642 #pragma omp target 5643 #pragma omp teams 5644 #pragma omp distribute parallel for 5645 for (int i = 0; i < 10; ++i) { 5646 #pragma omp parallel sections 5647 { 5648 bar(); 5649 } 5650 } 5651 #pragma omp target 5652 #pragma omp teams 5653 #pragma omp distribute parallel for 5654 for (int i = 0; i < 10; ++i) { 5655 #pragma omp task 5656 { 5657 bar(); 5658 } 5659 } 5660 #pragma omp target 5661 #pragma omp teams 5662 #pragma omp distribute parallel for 5663 for (int i = 0; i < 10; ++i) { 5664 #pragma omp taskyield 5665 bar(); 5666 } 5667 #pragma omp target 5668 #pragma omp teams 5669 #pragma omp distribute parallel for 5670 for (int i = 0; i < 10; ++i) { 5671 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5672 bar(); 5673 } 5674 #pragma omp target 5675 #pragma omp teams 5676 #pragma omp distribute parallel for 5677 for (int i = 0; i < 10; ++i) { 5678 #pragma omp taskwait 5679 bar(); 5680 } 5681 #pragma omp target 5682 #pragma omp teams 5683 #pragma omp distribute parallel for 5684 for (int i = 0; i < 10; ++i) { 5685 #pragma omp flush 5686 bar(); 5687 } 5688 #pragma omp target 5689 #pragma omp teams 5690 #pragma omp distribute parallel for 5691 for (int i = 0; i < 10; ++i) { 5692 #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?}} 5693 bar(); 5694 } 5695 #pragma omp target 5696 #pragma omp teams 5697 #pragma omp distribute parallel for 5698 for (int i = 0; i < 10; ++i) { 5699 #pragma omp atomic 5700 ++a; 5701 } 5702 #pragma omp target 5703 #pragma omp teams 5704 #pragma omp distribute parallel for 5705 for (int i = 0; i < 10; ++i) { 5706 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5707 ++a; 5708 } 5709 #pragma omp target 5710 #pragma omp teams 5711 #pragma omp distribute parallel for 5712 for (int i = 0; i < 10; ++i) { 5713 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5714 ++a; 5715 } 5716 #pragma omp target 5717 #pragma omp teams 5718 #pragma omp distribute parallel for 5719 for (int i = 0; i < 10; ++i) { 5720 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5721 for (int i = 0; i < 10; ++i) 5722 ; 5723 } 5724 #pragma omp target 5725 #pragma omp teams 5726 #pragma omp distribute parallel for 5727 for (int i = 0; i < 10; ++i) { 5728 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5729 ++a; 5730 } 5731 #pragma omp target 5732 #pragma omp teams 5733 #pragma omp distribute parallel for 5734 for (int i = 0; i < 10; ++i) { 5735 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5736 ++a; 5737 } 5738 #pragma omp target 5739 #pragma omp teams 5740 #pragma omp distribute parallel for 5741 for (int i = 0; i < 10; ++i) { 5742 #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?}} 5743 ++a; 5744 } 5745 #pragma omp target 5746 #pragma omp teams 5747 #pragma omp distribute parallel for 5748 for (int i = 0; i < 10; ++i) { 5749 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5750 ++a; 5751 } 5752 #pragma omp target 5753 #pragma omp teams 5754 #pragma omp distribute parallel for 5755 for (int i = 0; i < 10; ++i) { 5756 #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?}} 5757 for (int i = 0; i < 10; ++i) 5758 ; 5759 } 5760 #pragma omp target 5761 #pragma omp teams 5762 #pragma omp distribute parallel for 5763 for (int i = 0; i < 10; ++i) { 5764 #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?}} 5765 for (int i = 0; i < 10; ++i) 5766 ; 5767 } 5768 #pragma omp target 5769 #pragma omp teams 5770 #pragma omp distribute parallel for 5771 for (int i = 0; i < 10; ++i) { 5772 #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?}} 5773 for (int i = 0; i < 10; ++i) 5774 ; 5775 } 5776 #pragma omp target 5777 #pragma omp teams 5778 #pragma omp distribute parallel for 5779 for (int i = 0; i < 10; ++i) { 5780 #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?}} 5781 for (int i = 0; i < 10; ++i) 5782 ; 5783 } 5784 #pragma omp target 5785 #pragma omp teams 5786 #pragma omp distribute parallel for 5787 for (int i = 0; i < 10; ++i) { 5788 #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?}} 5789 for (int i = 0; i < 10; ++i) 5790 ; 5791 } 5792 #pragma omp target 5793 #pragma omp teams 5794 #pragma omp distribute parallel for 5795 for (int i = 0; i < 10; ++i) { 5796 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5797 a++; 5798 } 5799 #pragma omp target 5800 #pragma omp teams 5801 #pragma omp distribute parallel for 5802 for (int i = 0; i < 10; ++i) { 5803 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5804 for (int i = 0; i < 10; ++i) 5805 ; 5806 } 5807 #pragma omp target 5808 #pragma omp teams 5809 #pragma omp distribute parallel for 5810 for (int i = 0; i < 10; ++i) { 5811 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5812 for (int i = 0; i < 10; ++i) 5813 ; 5814 } 5815 #pragma omp target 5816 #pragma omp teams 5817 #pragma omp distribute parallel for 5818 for (int i = 0; i < 10; ++i) { 5819 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5820 for (int i = 0; i < 10; ++i) 5821 ; 5822 } 5823 #pragma omp target 5824 #pragma omp teams 5825 #pragma omp distribute parallel for 5826 for (int i = 0; i < 10; ++i) { 5827 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5828 for (int i = 0; i < 10; ++i) 5829 ; 5830 } 5831 5832 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 5833 #pragma omp target 5834 #pragma omp teams 5835 #pragma omp distribute parallel for simd 5836 for (int i = 0; i < 10; ++i) { 5837 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5838 for (int i = 0; i < 10; ++i) 5839 ; 5840 } 5841 #pragma omp target 5842 #pragma omp teams 5843 #pragma omp distribute parallel for simd 5844 for (int i = 0; i < 10; ++i) { 5845 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5846 for (int i = 0; i < 10; ++i) 5847 ; 5848 } 5849 #pragma omp target 5850 #pragma omp teams 5851 #pragma omp distribute parallel for simd 5852 for (int i = 0; i < 10; ++i) { 5853 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5854 for (int i = 0; i < 10; ++i) 5855 ; 5856 } 5857 #pragma omp target 5858 #pragma omp teams 5859 #pragma omp distribute parallel for simd 5860 for (int i = 0; i < 10; ++i) { 5861 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5862 for (int i = 0; i < 10; ++i) 5863 ; 5864 } 5865 #pragma omp target 5866 #pragma omp teams 5867 #pragma omp distribute parallel for simd 5868 for (int i = 0; i < 10; ++i) { 5869 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5870 for (int i = 0; i < 10; ++i) 5871 ; 5872 } 5873 #pragma omp target 5874 #pragma omp teams 5875 #pragma omp distribute parallel for simd 5876 for (int i = 0; i < 10; ++i) { 5877 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5878 for (int i = 0; i < 10; ++i) 5879 ; 5880 } 5881 #pragma omp target 5882 #pragma omp teams 5883 #pragma omp distribute parallel for simd 5884 for (int i = 0; i < 10; ++i) { 5885 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5886 { 5887 bar(); 5888 } 5889 } 5890 #pragma omp target 5891 #pragma omp teams 5892 #pragma omp distribute parallel for simd 5893 for (int i = 0; i < 10; ++i) { 5894 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5895 { 5896 bar(); 5897 } 5898 } 5899 #pragma omp target 5900 #pragma omp teams 5901 #pragma omp distribute parallel for simd 5902 for (int i = 0; i < 10; ++i) { 5903 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5904 { 5905 bar(); 5906 } 5907 } 5908 #pragma omp target 5909 #pragma omp teams 5910 #pragma omp distribute parallel for simd 5911 for (int i = 0; i < 10; ++i) { 5912 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5913 { 5914 bar(); 5915 } 5916 } 5917 #pragma omp target 5918 #pragma omp teams 5919 #pragma omp distribute parallel for simd 5920 for (int i = 0; i < 10; ++i) { 5921 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5922 { 5923 bar(); 5924 } 5925 } 5926 #pragma omp target 5927 #pragma omp teams 5928 #pragma omp distribute parallel for simd 5929 for (int i = 0; i < 10; ++i) { 5930 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5931 { 5932 #pragma omp single 5933 { 5934 bar(); 5935 } 5936 } 5937 } 5938 #pragma omp target 5939 #pragma omp teams 5940 #pragma omp distribute parallel for simd 5941 for (int i = 0; i < 10; ++i) { 5942 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5943 for (int i = 0; i < 10; ++i) 5944 ; 5945 } 5946 #pragma omp target 5947 #pragma omp teams 5948 #pragma omp distribute parallel for simd 5949 for (int i = 0; i < 10; ++i) { 5950 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5951 for (int i = 0; i < 10; ++i) 5952 ; 5953 } 5954 #pragma omp target 5955 #pragma omp teams 5956 #pragma omp distribute parallel for simd 5957 for (int i = 0; i < 10; ++i) { 5958 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5959 { 5960 bar(); 5961 } 5962 } 5963 #pragma omp target 5964 #pragma omp teams 5965 #pragma omp distribute parallel for simd 5966 for (int i = 0; i < 10; ++i) { 5967 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5968 { 5969 bar(); 5970 } 5971 } 5972 #pragma omp target 5973 #pragma omp teams 5974 #pragma omp distribute parallel for simd 5975 for (int i = 0; i < 10; ++i) { 5976 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5977 bar(); 5978 } 5979 #pragma omp target 5980 #pragma omp teams 5981 #pragma omp distribute parallel for simd 5982 for (int i = 0; i < 10; ++i) { 5983 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5984 bar(); 5985 } 5986 #pragma omp target 5987 #pragma omp teams 5988 #pragma omp distribute parallel for simd 5989 for (int i = 0; i < 10; ++i) { 5990 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5991 bar(); 5992 } 5993 #pragma omp target 5994 #pragma omp teams 5995 #pragma omp distribute parallel for simd 5996 for (int i = 0; i < 10; ++i) { 5997 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5998 bar(); 5999 } 6000 #pragma omp target 6001 #pragma omp teams 6002 #pragma omp distribute parallel for simd 6003 for (int i = 0; i < 10; ++i) { 6004 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6005 bar(); 6006 } 6007 #pragma omp target 6008 #pragma omp teams 6009 #pragma omp distribute parallel for simd 6010 for (int i = 0; i < 10; ++i) { 6011 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6012 ++a; 6013 } 6014 #pragma omp target 6015 #pragma omp teams 6016 #pragma omp distribute parallel for simd 6017 for (int i = 0; i < 10; ++i) { 6018 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6019 ++a; 6020 } 6021 #pragma omp target 6022 #pragma omp teams 6023 #pragma omp distribute parallel for simd 6024 for (int i = 0; i < 10; ++i) { 6025 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6026 ++a; 6027 } 6028 #pragma omp target 6029 #pragma omp teams 6030 #pragma omp distribute parallel for simd 6031 for (int i = 0; i < 10; ++i) { 6032 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6033 for (int i = 0; i < 10; ++i) 6034 ; 6035 } 6036 #pragma omp target 6037 #pragma omp teams 6038 #pragma omp distribute parallel for simd 6039 for (int i = 0; i < 10; ++i) { 6040 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6041 ++a; 6042 } 6043 #pragma omp target 6044 #pragma omp teams 6045 #pragma omp distribute parallel for simd 6046 for (int i = 0; i < 10; ++i) { 6047 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6048 ++a; 6049 } 6050 #pragma omp target 6051 #pragma omp teams 6052 #pragma omp distribute parallel for simd 6053 for (int i = 0; i < 10; ++i) { 6054 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6055 ++a; 6056 } 6057 #pragma omp target 6058 #pragma omp teams 6059 #pragma omp distribute parallel for simd 6060 for (int i = 0; i < 10; ++i) { 6061 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6062 ++a; 6063 } 6064 #pragma omp target 6065 #pragma omp teams 6066 #pragma omp distribute parallel for simd 6067 for (int i = 0; i < 10; ++i) { 6068 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6069 for (int i = 0; i < 10; ++i) 6070 ++a; 6071 } 6072 #pragma omp target 6073 #pragma omp teams 6074 #pragma omp distribute parallel for simd 6075 for (int i = 0; i < 10; ++i) { 6076 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6077 for (int i = 0; i < 10; ++i) 6078 ++a; 6079 } 6080 #pragma omp target 6081 #pragma omp teams 6082 #pragma omp distribute parallel for simd 6083 for (int i = 0; i < 10; ++i) { 6084 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6085 for (int i = 0; i < 10; ++i) 6086 ++a; 6087 } 6088 #pragma omp target 6089 #pragma omp teams 6090 #pragma omp distribute parallel for simd 6091 for (int i = 0; i < 10; ++i) { 6092 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6093 for (int i = 0; i < 10; ++i) 6094 ++a; 6095 } 6096 #pragma omp target 6097 #pragma omp teams 6098 #pragma omp distribute parallel for simd 6099 for (int i = 0; i < 10; ++i) { 6100 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6101 for (int i = 0; i < 10; ++i) 6102 ++a; 6103 } 6104 #pragma omp target 6105 #pragma omp teams 6106 #pragma omp distribute parallel for simd 6107 for (int i = 0; i < 10; ++i) { 6108 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6109 for (int i = 0; i < 10; ++i) 6110 ++a; 6111 } 6112 #pragma omp target 6113 #pragma omp teams 6114 #pragma omp distribute parallel for simd 6115 for (int i = 0; i < 10; ++i) { 6116 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6117 ++a; 6118 } 6119 #pragma omp target 6120 #pragma omp teams 6121 #pragma omp distribute parallel for simd 6122 for (int i = 0; i < 10; ++i) { 6123 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6124 for (int i = 0; i < 10; ++i) 6125 ++a; 6126 } 6127 #pragma omp target 6128 #pragma omp teams 6129 #pragma omp distribute parallel for simd 6130 for (int i = 0; i < 10; ++i) { 6131 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6132 for (int i = 0; i < 10; ++i) 6133 ++a; 6134 } 6135 #pragma omp target 6136 #pragma omp teams 6137 #pragma omp distribute parallel for simd 6138 for (int i = 0; i < 10; ++i) { 6139 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6140 for (int i = 0; i < 10; ++i) 6141 ++a; 6142 } 6143 #pragma omp target 6144 #pragma omp teams 6145 #pragma omp distribute parallel for simd 6146 for (int i = 0; i < 10; ++i) { 6147 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6148 for (int i = 0; i < 10; ++i) 6149 ++a; 6150 } 6151 6152 // TARGET SIMD DIRECTIVE 6153 #pragma omp target simd 6154 for (int i = 0; i < 10; ++i) { 6155 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6156 for (int i = 0; i < 10; ++i) 6157 ; 6158 } 6159 #pragma omp target simd 6160 for (int i = 0; i < 10; ++i) { 6161 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6162 for (int i = 0; i < 10; ++i) 6163 ; 6164 } 6165 #pragma omp target simd 6166 for (int i = 0; i < 10; ++i) { 6167 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6168 for (int i = 0; i < 10; ++i) 6169 ; 6170 } 6171 #pragma omp target simd 6172 for (int i = 0; i < 10; ++i) { 6173 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6174 for (int i = 0; i < 10; ++i) 6175 ; 6176 } 6177 #pragma omp target simd 6178 for (int i = 0; i < 10; ++i) { 6179 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6180 for (int i = 0; i < 10; ++i) 6181 ; 6182 } 6183 #pragma omp target simd 6184 for (int i = 0; i < 10; ++i) { 6185 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6186 for (int i = 0; i < 10; ++i) 6187 ; 6188 } 6189 #pragma omp target simd 6190 for (int i = 0; i < 10; ++i) { 6191 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6192 { 6193 bar(); 6194 } 6195 } 6196 #pragma omp target simd 6197 for (int i = 0; i < 10; ++i) { 6198 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6199 { 6200 bar(); 6201 } 6202 } 6203 #pragma omp target simd 6204 for (int i = 0; i < 10; ++i) { 6205 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6206 { 6207 bar(); 6208 } 6209 } 6210 #pragma omp target simd 6211 for (int i = 0; i < 10; ++i) { 6212 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6213 { 6214 bar(); 6215 } 6216 } 6217 #pragma omp target simd 6218 for (int i = 0; i < 10; ++i) { 6219 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6220 { 6221 bar(); 6222 } 6223 } 6224 #pragma omp target simd 6225 for (int i = 0; i < 10; ++i) { 6226 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6227 { 6228 #pragma omp single 6229 { 6230 bar(); 6231 } 6232 } 6233 } 6234 #pragma omp target simd 6235 for (int i = 0; i < 10; ++i) { 6236 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6237 for (int i = 0; i < 10; ++i) 6238 ; 6239 } 6240 #pragma omp target simd 6241 for (int i = 0; i < 10; ++i) { 6242 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6243 for (int i = 0; i < 10; ++i) 6244 ; 6245 } 6246 #pragma omp target simd 6247 for (int i = 0; i < 10; ++i) { 6248 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6249 { 6250 bar(); 6251 } 6252 } 6253 #pragma omp target simd 6254 for (int i = 0; i < 10; ++i) { 6255 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6256 { 6257 bar(); 6258 } 6259 } 6260 #pragma omp target simd 6261 for (int i = 0; i < 10; ++i) { 6262 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6263 bar(); 6264 } 6265 #pragma omp target simd 6266 for (int i = 0; i < 10; ++i) { 6267 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6268 bar(); 6269 } 6270 #pragma omp target simd 6271 for (int i = 0; i < 10; ++i) { 6272 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6273 bar(); 6274 } 6275 #pragma omp target simd 6276 for (int i = 0; i < 10; ++i) { 6277 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6278 bar(); 6279 } 6280 #pragma omp target simd 6281 for (int i = 0; i < 10; ++i) { 6282 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6283 bar(); 6284 } 6285 #pragma omp target simd 6286 for (int i = 0; i < 10; ++i) { 6287 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6288 ++a; 6289 } 6290 #pragma omp target simd 6291 for (int i = 0; i < 10; ++i) { 6292 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6293 ++a; 6294 } 6295 #pragma omp target simd 6296 for (int i = 0; i < 10; ++i) { 6297 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6298 ++a; 6299 } 6300 #pragma omp target simd 6301 for (int i = 0; i < 10; ++i) { 6302 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6303 for (int i = 0; i < 10; ++i) 6304 ; 6305 } 6306 #pragma omp target simd 6307 for (int i = 0; i < 10; ++i) { 6308 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6309 ++a; 6310 } 6311 #pragma omp target simd 6312 for (int i = 0; i < 10; ++i) { 6313 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6314 ++a; 6315 } 6316 #pragma omp target simd 6317 for (int i = 0; i < 10; ++i) { 6318 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6319 ++a; 6320 } 6321 #pragma omp target simd 6322 for (int i = 0; i < 10; ++i) { 6323 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6324 ++a; 6325 } 6326 #pragma omp target simd 6327 for (int i = 0; i < 10; ++i) { 6328 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6329 for (int i = 0; i < 10; ++i) 6330 ++a; 6331 } 6332 #pragma omp target simd 6333 for (int i = 0; i < 10; ++i) { 6334 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6335 for (int i = 0; i < 10; ++i) 6336 ++a; 6337 } 6338 #pragma omp target simd 6339 for (int i = 0; i < 10; ++i) { 6340 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6341 for (int i = 0; i < 10; ++i) 6342 ++a; 6343 } 6344 #pragma omp target simd 6345 for (int i = 0; i < 10; ++i) { 6346 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6347 for (int i = 0; i < 10; ++i) 6348 ++a; 6349 } 6350 #pragma omp target simd 6351 for (int i = 0; i < 10; ++i) { 6352 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6353 for (int i = 0; i < 10; ++i) 6354 ++a; 6355 } 6356 #pragma omp target simd 6357 for (int i = 0; i < 10; ++i) { 6358 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6359 for (int i = 0; i < 10; ++i) 6360 ++a; 6361 } 6362 #pragma omp target simd 6363 for (int i = 0; i < 10; ++i) { 6364 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6365 for (int i = 0; i < 10; ++i) 6366 ++a; 6367 } 6368 #pragma omp target simd 6369 for (int i = 0; i < 10; ++i) { 6370 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6371 for (int i = 0; i < 10; ++i) 6372 ++a; 6373 } 6374 6375 // TEAMS DISTRIBUTE DIRECTIVE 6376 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6377 for (int i = 0; i < 10; ++i) 6378 ; 6379 #pragma omp target 6380 #pragma omp teams distribute 6381 for (int i = 0; i < 10; ++i) { 6382 #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?}} 6383 for (int i = 0; i < 10; ++i) 6384 ; 6385 } 6386 #pragma omp target 6387 #pragma omp teams distribute 6388 for (int i = 0; i < 10; ++i) { 6389 #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?}} 6390 for (int i = 0; i < 10; ++i) 6391 ; 6392 } 6393 #pragma omp target 6394 #pragma omp teams distribute 6395 for (int i = 0; i < 10; ++i) { 6396 #pragma omp for // OK 6397 for (int i = 0; i < 10; ++i) 6398 ; 6399 } 6400 #pragma omp target 6401 #pragma omp teams distribute 6402 for (int i = 0; i < 10; ++i) { 6403 #pragma omp simd // OK 6404 for (int i = 0; i < 10; ++i) 6405 ; 6406 } 6407 #pragma omp target 6408 #pragma omp teams distribute 6409 for (int i = 0; i < 10; ++i) { 6410 #pragma omp for simd // OK 6411 for (int i = 0; i < 10; ++i) 6412 ; 6413 } 6414 #pragma omp target 6415 #pragma omp teams distribute 6416 for (int i = 0; i < 10; ++i) { 6417 #pragma omp parallel // OK 6418 for (int i = 0; i < 10; ++i) 6419 ; 6420 } 6421 #pragma omp target 6422 #pragma omp teams distribute 6423 for (int i = 0; i < 10; ++i) { 6424 #pragma omp sections // OK 6425 { 6426 bar(); 6427 } 6428 } 6429 #pragma omp target 6430 #pragma omp teams distribute 6431 for (int i = 0; i < 10; ++i) { 6432 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6433 { 6434 bar(); 6435 } 6436 } 6437 #pragma omp target 6438 #pragma omp teams distribute 6439 for (int i = 0; i < 10; ++i) { 6440 #pragma omp single // OK 6441 { 6442 bar(); 6443 } 6444 } 6445 #pragma omp target 6446 #pragma omp teams distribute 6447 for (int i = 0; i < 10; ++i) { 6448 #pragma omp master // OK 6449 { 6450 bar(); 6451 } 6452 } 6453 #pragma omp target 6454 #pragma omp teams distribute 6455 for (int i = 0; i < 10; ++i) { 6456 #pragma omp critical // OK 6457 { 6458 bar(); 6459 } 6460 } 6461 #pragma omp target 6462 #pragma omp teams distribute 6463 for (int i = 0; i < 10; ++i) { 6464 #pragma omp parallel // OK 6465 { 6466 #pragma omp single 6467 { 6468 bar(); 6469 } 6470 } 6471 } 6472 #pragma omp target 6473 #pragma omp teams distribute 6474 for (int i = 0; i < 10; ++i) { 6475 #pragma omp parallel for // OK 6476 for (int i = 0; i < 10; ++i) 6477 ; 6478 } 6479 #pragma omp target 6480 #pragma omp teams distribute 6481 for (int i = 0; i < 10; ++i) { 6482 #pragma omp parallel for simd // OK 6483 for (int i = 0; i < 10; ++i) 6484 ; 6485 } 6486 #pragma omp target 6487 #pragma omp teams distribute 6488 for (int i = 0; i < 10; ++i) { 6489 #pragma omp parallel sections // OK 6490 { 6491 bar(); 6492 } 6493 } 6494 #pragma omp target 6495 #pragma omp teams distribute 6496 for (int i = 0; i < 10; ++i) { 6497 #pragma omp task // OK 6498 { 6499 bar(); 6500 } 6501 } 6502 #pragma omp target 6503 #pragma omp teams distribute 6504 for (int i = 0; i < 10; ++i) { 6505 #pragma omp taskyield // OK 6506 bar(); 6507 } 6508 #pragma omp target 6509 #pragma omp teams distribute 6510 for (int i = 0; i < 10; ++i) { 6511 #pragma omp barrier // OK 6512 bar(); 6513 } 6514 #pragma omp target 6515 #pragma omp teams distribute 6516 for (int i = 0; i < 10; ++i) { 6517 #pragma omp taskwait // OK 6518 bar(); 6519 } 6520 #pragma omp target 6521 #pragma omp teams distribute 6522 for (int i = 0; i < 10; ++i) { 6523 #pragma omp flush // OK 6524 bar(); 6525 } 6526 #pragma omp target 6527 #pragma omp teams distribute 6528 for (int i = 0; i < 10; ++i) { 6529 #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?}} 6530 bar(); 6531 } 6532 #pragma omp target 6533 #pragma omp teams distribute 6534 for (int i = 0; i < 10; ++i) { 6535 #pragma omp atomic // OK 6536 ++a; 6537 } 6538 #pragma omp target 6539 #pragma omp teams distribute 6540 for (int i = 0; i < 10; ++i) { 6541 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6542 ++a; 6543 } 6544 #pragma omp target 6545 #pragma omp teams distribute 6546 for (int i = 0; i < 10; ++i) { 6547 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6548 ++a; 6549 } 6550 #pragma omp target 6551 #pragma omp teams distribute 6552 for (int i = 0; i < 10; ++i) { 6553 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6554 for (int i = 0; i < 10; ++i) 6555 ; 6556 } 6557 #pragma omp target 6558 #pragma omp teams distribute 6559 for (int i = 0; i < 10; ++i) { 6560 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6561 ++a; 6562 } 6563 #pragma omp target 6564 #pragma omp teams distribute 6565 for (int i = 0; i < 10; ++i) { 6566 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6567 ++a; 6568 } 6569 #pragma omp target 6570 #pragma omp teams distribute 6571 for (int i = 0; i < 10; ++i) { 6572 #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?}} 6573 ++a; 6574 } 6575 #pragma omp target 6576 #pragma omp teams distribute 6577 for (int i = 0; i < 10; ++i) { 6578 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6579 ++a; 6580 } 6581 #pragma omp target 6582 #pragma omp teams distribute 6583 for (int i = 0; i < 10; ++i) { 6584 #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?}} 6585 for (int i = 0; i < 10; ++i) 6586 ++a; 6587 } 6588 #pragma omp target 6589 #pragma omp teams distribute 6590 for (int i = 0; i < 10; ++i) { 6591 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6592 for (int i = 0; i < 10; ++i) 6593 ++a; 6594 } 6595 #pragma omp target 6596 #pragma omp teams distribute 6597 for (int i = 0; i < 10; ++i) { 6598 #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?}} 6599 for (int i = 0; i < 10; ++i) 6600 ++a; 6601 } 6602 #pragma omp target 6603 #pragma omp teams distribute 6604 for (int i = 0; i < 10; ++i) { 6605 #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?}} 6606 for (int i = 0; i < 10; ++i) 6607 ++a; 6608 } 6609 #pragma omp target 6610 #pragma omp teams distribute 6611 for (int i = 0; i < 10; ++i) { 6612 #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?}} 6613 for (int i = 0; i < 10; ++i) 6614 ++a; 6615 } 6616 #pragma omp target 6617 #pragma omp teams distribute 6618 for (int i = 0; i < 10; ++i) { 6619 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6620 for (int i = 0; i < 10; ++i) 6621 ++a; 6622 } 6623 #pragma omp target 6624 #pragma omp teams distribute 6625 for (int i = 0; i < 10; ++i) { 6626 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6627 for (int i = 0; i < 10; ++i) 6628 ++a; 6629 } 6630 #pragma omp target 6631 #pragma omp teams distribute 6632 for (int i = 0; i < 10; ++i) { 6633 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6634 for (int i = 0; i < 10; ++i) 6635 ++a; 6636 } 6637 6638 // TEAMS DISTRIBUTE DIRECTIVE 6639 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6640 for (int i = 0; i < 10; ++i) 6641 ; 6642 #pragma omp target 6643 #pragma omp teams distribute 6644 for (int i = 0; i < 10; ++i) { 6645 #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?}} 6646 for (int i = 0; i < 10; ++i) 6647 ; 6648 } 6649 #pragma omp target 6650 #pragma omp teams distribute 6651 for (int i = 0; i < 10; ++i) { 6652 #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?}} 6653 for (int i = 0; i < 10; ++i) 6654 ; 6655 } 6656 #pragma omp target 6657 #pragma omp teams distribute 6658 for (int i = 0; i < 10; ++i) { 6659 #pragma omp for // OK 6660 for (int i = 0; i < 10; ++i) 6661 ; 6662 } 6663 #pragma omp target 6664 #pragma omp teams distribute 6665 for (int i = 0; i < 10; ++i) { 6666 #pragma omp simd // OK 6667 for (int i = 0; i < 10; ++i) 6668 ; 6669 } 6670 #pragma omp target 6671 #pragma omp teams distribute 6672 for (int i = 0; i < 10; ++i) { 6673 #pragma omp for simd // OK 6674 for (int i = 0; i < 10; ++i) 6675 ; 6676 } 6677 #pragma omp target 6678 #pragma omp teams distribute 6679 for (int i = 0; i < 10; ++i) { 6680 #pragma omp parallel // OK 6681 for (int i = 0; i < 10; ++i) 6682 ; 6683 } 6684 #pragma omp target 6685 #pragma omp teams distribute 6686 for (int i = 0; i < 10; ++i) { 6687 #pragma omp sections // OK 6688 { 6689 bar(); 6690 } 6691 } 6692 #pragma omp target 6693 #pragma omp teams distribute 6694 for (int i = 0; i < 10; ++i) { 6695 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6696 { 6697 bar(); 6698 } 6699 } 6700 #pragma omp target 6701 #pragma omp teams distribute 6702 for (int i = 0; i < 10; ++i) { 6703 #pragma omp single // OK 6704 { 6705 bar(); 6706 } 6707 } 6708 #pragma omp target 6709 #pragma omp teams distribute 6710 for (int i = 0; i < 10; ++i) { 6711 #pragma omp master // OK 6712 { 6713 bar(); 6714 } 6715 } 6716 #pragma omp target 6717 #pragma omp teams distribute 6718 for (int i = 0; i < 10; ++i) { 6719 #pragma omp critical // OK 6720 { 6721 bar(); 6722 } 6723 } 6724 #pragma omp target 6725 #pragma omp teams distribute 6726 for (int i = 0; i < 10; ++i) { 6727 #pragma omp parallel // OK 6728 { 6729 #pragma omp single 6730 { 6731 bar(); 6732 } 6733 } 6734 } 6735 #pragma omp target 6736 #pragma omp teams distribute 6737 for (int i = 0; i < 10; ++i) { 6738 #pragma omp parallel for // OK 6739 for (int i = 0; i < 10; ++i) 6740 ; 6741 } 6742 #pragma omp target 6743 #pragma omp teams distribute 6744 for (int i = 0; i < 10; ++i) { 6745 #pragma omp parallel for simd // OK 6746 for (int i = 0; i < 10; ++i) 6747 ; 6748 } 6749 #pragma omp target 6750 #pragma omp teams distribute 6751 for (int i = 0; i < 10; ++i) { 6752 #pragma omp parallel sections // OK 6753 { 6754 bar(); 6755 } 6756 } 6757 #pragma omp target 6758 #pragma omp teams distribute 6759 for (int i = 0; i < 10; ++i) { 6760 #pragma omp task // OK 6761 { 6762 bar(); 6763 } 6764 } 6765 #pragma omp target 6766 #pragma omp teams distribute 6767 for (int i = 0; i < 10; ++i) { 6768 #pragma omp taskyield // OK 6769 bar(); 6770 } 6771 #pragma omp target 6772 #pragma omp teams distribute 6773 for (int i = 0; i < 10; ++i) { 6774 #pragma omp barrier // OK 6775 bar(); 6776 } 6777 #pragma omp target 6778 #pragma omp teams distribute 6779 for (int i = 0; i < 10; ++i) { 6780 #pragma omp taskwait // OK 6781 bar(); 6782 } 6783 #pragma omp target 6784 #pragma omp teams distribute 6785 for (int i = 0; i < 10; ++i) { 6786 #pragma omp flush // OK 6787 bar(); 6788 } 6789 #pragma omp target 6790 #pragma omp teams distribute 6791 for (int i = 0; i < 10; ++i) { 6792 #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?}} 6793 bar(); 6794 } 6795 #pragma omp target 6796 #pragma omp teams distribute 6797 for (int i = 0; i < 10; ++i) { 6798 #pragma omp atomic // OK 6799 ++a; 6800 } 6801 #pragma omp target 6802 #pragma omp teams distribute 6803 for (int i = 0; i < 10; ++i) { 6804 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6805 ++a; 6806 } 6807 #pragma omp target 6808 #pragma omp teams distribute 6809 for (int i = 0; i < 10; ++i) { 6810 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6811 ++a; 6812 } 6813 #pragma omp target 6814 #pragma omp teams distribute 6815 for (int i = 0; i < 10; ++i) { 6816 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6817 for (int i = 0; i < 10; ++i) 6818 ; 6819 } 6820 #pragma omp target 6821 #pragma omp teams distribute 6822 for (int i = 0; i < 10; ++i) { 6823 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6824 ++a; 6825 } 6826 #pragma omp target 6827 #pragma omp teams distribute 6828 for (int i = 0; i < 10; ++i) { 6829 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6830 ++a; 6831 } 6832 #pragma omp target 6833 #pragma omp teams distribute 6834 for (int i = 0; i < 10; ++i) { 6835 #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?}} 6836 ++a; 6837 } 6838 #pragma omp target 6839 #pragma omp teams distribute 6840 for (int i = 0; i < 10; ++i) { 6841 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6842 ++a; 6843 } 6844 #pragma omp target 6845 #pragma omp teams distribute 6846 for (int i = 0; i < 10; ++i) { 6847 #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?}} 6848 for (int i = 0; i < 10; ++i) 6849 ++a; 6850 } 6851 #pragma omp target 6852 #pragma omp teams distribute 6853 for (int i = 0; i < 10; ++i) { 6854 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6855 for (int i = 0; i < 10; ++i) 6856 ++a; 6857 } 6858 #pragma omp target 6859 #pragma omp teams distribute 6860 for (int i = 0; i < 10; ++i) { 6861 #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?}} 6862 for (int i = 0; i < 10; ++i) 6863 ++a; 6864 } 6865 #pragma omp target 6866 #pragma omp teams distribute 6867 for (int i = 0; i < 10; ++i) { 6868 #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?}} 6869 for (int i = 0; i < 10; ++i) 6870 ++a; 6871 } 6872 #pragma omp target 6873 #pragma omp teams distribute 6874 for (int i = 0; i < 10; ++i) { 6875 #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?}} 6876 for (int i = 0; i < 10; ++i) 6877 ++a; 6878 } 6879 #pragma omp target 6880 #pragma omp teams distribute 6881 for (int i = 0; i < 10; ++i) { 6882 #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?}} 6883 for (int i = 0; i < 10; ++i) 6884 ++a; 6885 } 6886 #pragma omp target 6887 #pragma omp teams distribute 6888 for (int i = 0; i < 10; ++i) { 6889 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6890 ++a; 6891 } 6892 #pragma omp target 6893 #pragma omp teams distribute 6894 for (int i = 0; i < 10; ++i) { 6895 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6896 for (int i = 0; i < 10; ++i) 6897 ++a; 6898 } 6899 #pragma omp target 6900 #pragma omp teams distribute 6901 for (int i = 0; i < 10; ++i) { 6902 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6903 for (int i = 0; i < 10; ++i) 6904 ++a; 6905 } 6906 #pragma omp target 6907 #pragma omp teams distribute 6908 for (int i = 0; i < 10; ++i) { 6909 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6910 for (int i = 0; i < 10; ++i) 6911 ++a; 6912 } 6913 #pragma omp target 6914 #pragma omp teams distribute 6915 for (int i = 0; i < 10; ++i) { 6916 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6917 for (int i = 0; i < 10; ++i) 6918 ++a; 6919 } 6920 6921 // TEAMS DISTRIBUTE SIMD DIRECTIVE 6922 #pragma omp teams distribute simd // expected-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6923 for (int i = 0; i < 10; ++i) 6924 ; 6925 #pragma omp target 6926 #pragma omp teams distribute simd 6927 for (int i = 0; i < 10; ++i) { 6928 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6929 for (int i = 0; i < 10; ++i) 6930 ; 6931 } 6932 #pragma omp target 6933 #pragma omp teams distribute simd 6934 for (int i = 0; i < 10; ++i) { 6935 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6936 for (int i = 0; i < 10; ++i) 6937 ; 6938 } 6939 #pragma omp target 6940 #pragma omp teams distribute simd 6941 for (int i = 0; i < 10; ++i) { 6942 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6943 for (int i = 0; i < 10; ++i) 6944 ; 6945 } 6946 #pragma omp target 6947 #pragma omp teams distribute simd 6948 for (int i = 0; i < 10; ++i) { 6949 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6950 for (int i = 0; i < 10; ++i) 6951 ; 6952 } 6953 #pragma omp target 6954 #pragma omp teams distribute simd 6955 for (int i = 0; i < 10; ++i) { 6956 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6957 for (int i = 0; i < 10; ++i) 6958 ; 6959 } 6960 #pragma omp target 6961 #pragma omp teams distribute simd 6962 for (int i = 0; i < 10; ++i) { 6963 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6964 for (int i = 0; i < 10; ++i) 6965 ; 6966 } 6967 #pragma omp target 6968 #pragma omp teams distribute simd 6969 for (int i = 0; i < 10; ++i) { 6970 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6971 { 6972 bar(); 6973 } 6974 } 6975 #pragma omp target 6976 #pragma omp teams distribute simd 6977 for (int i = 0; i < 10; ++i) { 6978 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6979 { 6980 bar(); 6981 } 6982 } 6983 #pragma omp target 6984 #pragma omp teams distribute simd 6985 for (int i = 0; i < 10; ++i) { 6986 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6987 { 6988 bar(); 6989 } 6990 } 6991 #pragma omp target 6992 #pragma omp teams distribute simd 6993 for (int i = 0; i < 10; ++i) { 6994 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6995 { 6996 bar(); 6997 } 6998 } 6999 #pragma omp target 7000 #pragma omp teams distribute simd 7001 for (int i = 0; i < 10; ++i) { 7002 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7003 { 7004 bar(); 7005 } 7006 } 7007 #pragma omp target 7008 #pragma omp teams distribute simd 7009 for (int i = 0; i < 10; ++i) { 7010 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7011 { 7012 #pragma omp single 7013 { 7014 bar(); 7015 } 7016 } 7017 } 7018 #pragma omp target 7019 #pragma omp teams distribute simd 7020 for (int i = 0; i < 10; ++i) { 7021 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7022 for (int i = 0; i < 10; ++i) 7023 ; 7024 } 7025 #pragma omp target 7026 #pragma omp teams distribute simd 7027 for (int i = 0; i < 10; ++i) { 7028 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7029 for (int i = 0; i < 10; ++i) 7030 ; 7031 } 7032 #pragma omp target 7033 #pragma omp teams distribute simd 7034 for (int i = 0; i < 10; ++i) { 7035 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7036 { 7037 bar(); 7038 } 7039 } 7040 #pragma omp target 7041 #pragma omp teams distribute simd 7042 for (int i = 0; i < 10; ++i) { 7043 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7044 { 7045 bar(); 7046 } 7047 } 7048 #pragma omp target 7049 #pragma omp teams distribute simd 7050 for (int i = 0; i < 10; ++i) { 7051 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7052 bar(); 7053 } 7054 #pragma omp target 7055 #pragma omp teams distribute simd 7056 for (int i = 0; i < 10; ++i) { 7057 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7058 bar(); 7059 } 7060 #pragma omp target 7061 #pragma omp teams distribute simd 7062 for (int i = 0; i < 10; ++i) { 7063 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7064 bar(); 7065 } 7066 #pragma omp target 7067 #pragma omp teams distribute simd 7068 for (int i = 0; i < 10; ++i) { 7069 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7070 bar(); 7071 } 7072 #pragma omp target 7073 #pragma omp teams distribute simd 7074 for (int i = 0; i < 10; ++i) { 7075 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7076 bar(); 7077 } 7078 #pragma omp target 7079 #pragma omp teams distribute simd 7080 for (int i = 0; i < 10; ++i) { 7081 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7082 ++a; 7083 } 7084 #pragma omp target 7085 #pragma omp teams distribute simd 7086 for (int i = 0; i < 10; ++i) { 7087 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7088 ++a; 7089 } 7090 #pragma omp target 7091 #pragma omp teams distribute simd 7092 for (int i = 0; i < 10; ++i) { 7093 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7094 ++a; 7095 } 7096 #pragma omp target 7097 #pragma omp teams distribute simd 7098 for (int i = 0; i < 10; ++i) { 7099 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7100 for (int i = 0; i < 10; ++i) 7101 ; 7102 } 7103 #pragma omp target 7104 #pragma omp teams distribute simd 7105 for (int i = 0; i < 10; ++i) { 7106 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7107 ++a; 7108 } 7109 #pragma omp target 7110 #pragma omp teams distribute simd 7111 for (int i = 0; i < 10; ++i) { 7112 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7113 ++a; 7114 } 7115 #pragma omp target 7116 #pragma omp teams distribute simd 7117 for (int i = 0; i < 10; ++i) { 7118 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7119 ++a; 7120 } 7121 #pragma omp target 7122 #pragma omp teams distribute simd 7123 for (int i = 0; i < 10; ++i) { 7124 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7125 ++a; 7126 } 7127 #pragma omp target 7128 #pragma omp teams distribute simd 7129 for (int i = 0; i < 10; ++i) { 7130 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7131 for (int i = 0; i < 10; ++i) 7132 ++a; 7133 } 7134 #pragma omp target 7135 #pragma omp teams distribute simd 7136 for (int i = 0; i < 10; ++i) { 7137 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7138 for (int i = 0; i < 10; ++i) 7139 ++a; 7140 } 7141 #pragma omp target 7142 #pragma omp teams distribute simd 7143 for (int i = 0; i < 10; ++i) { 7144 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7145 for (int i = 0; i < 10; ++i) 7146 ++a; 7147 } 7148 #pragma omp target 7149 #pragma omp teams distribute simd 7150 for (int i = 0; i < 10; ++i) { 7151 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7152 for (int i = 0; i < 10; ++i) 7153 ++a; 7154 } 7155 #pragma omp target 7156 #pragma omp teams distribute simd 7157 for (int i = 0; i < 10; ++i) { 7158 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7159 for (int i = 0; i < 10; ++i) 7160 ++a; 7161 } 7162 #pragma omp target 7163 #pragma omp teams distribute simd 7164 for (int i = 0; i < 10; ++i) { 7165 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7166 for (int i = 0; i < 10; ++i) 7167 ++a; 7168 } 7169 #pragma omp target 7170 #pragma omp teams distribute simd 7171 for (int i = 0; i < 10; ++i) { 7172 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7173 ++a; 7174 } 7175 #pragma omp target 7176 #pragma omp teams distribute simd 7177 for (int i = 0; i < 10; ++i) { 7178 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7179 for (int i = 0; i < 10; ++i) 7180 ++a; 7181 } 7182 #pragma omp target 7183 #pragma omp teams distribute simd 7184 for (int i = 0; i < 10; ++i) { 7185 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7186 for (int i = 0; i < 10; ++i) 7187 ++a; 7188 } 7189 #pragma omp target 7190 #pragma omp teams distribute simd 7191 for (int i = 0; i < 10; ++i) { 7192 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7193 for (int i = 0; i < 10; ++i) 7194 ++a; 7195 } 7196 #pragma omp target 7197 #pragma omp teams distribute simd 7198 for (int i = 0; i < 10; ++i) { 7199 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7200 for (int i = 0; i < 10; ++i) 7201 ++a; 7202 } 7203 7204 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 7205 #pragma omp teams distribute parallel for simd // expected-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7206 for (int i = 0; i < 10; ++i) 7207 ; 7208 #pragma omp target 7209 #pragma omp teams distribute parallel for simd 7210 for (int i = 0; i < 10; ++i) { 7211 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7212 for (int i = 0; i < 10; ++i) 7213 ; 7214 } 7215 #pragma omp target 7216 #pragma omp teams distribute parallel for simd 7217 for (int i = 0; i < 10; ++i) { 7218 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7219 for (int i = 0; i < 10; ++i) 7220 ; 7221 } 7222 #pragma omp target 7223 #pragma omp teams distribute parallel for simd 7224 for (int i = 0; i < 10; ++i) { 7225 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7226 for (int i = 0; i < 10; ++i) 7227 ; 7228 } 7229 #pragma omp target 7230 #pragma omp teams distribute parallel for simd 7231 for (int i = 0; i < 10; ++i) { 7232 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7233 for (int i = 0; i < 10; ++i) 7234 ; 7235 } 7236 #pragma omp target 7237 #pragma omp teams distribute parallel for simd 7238 for (int i = 0; i < 10; ++i) { 7239 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7240 for (int i = 0; i < 10; ++i) 7241 ; 7242 } 7243 #pragma omp target 7244 #pragma omp teams distribute parallel for simd 7245 for (int i = 0; i < 10; ++i) { 7246 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7247 for (int i = 0; i < 10; ++i) 7248 ; 7249 } 7250 #pragma omp target 7251 #pragma omp teams distribute parallel for simd 7252 for (int i = 0; i < 10; ++i) { 7253 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7254 { 7255 bar(); 7256 } 7257 } 7258 #pragma omp target 7259 #pragma omp teams distribute parallel for simd 7260 for (int i = 0; i < 10; ++i) { 7261 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7262 { 7263 bar(); 7264 } 7265 } 7266 #pragma omp target 7267 #pragma omp teams distribute parallel for simd 7268 for (int i = 0; i < 10; ++i) { 7269 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7270 { 7271 bar(); 7272 } 7273 } 7274 #pragma omp target 7275 #pragma omp teams distribute parallel for simd 7276 for (int i = 0; i < 10; ++i) { 7277 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7278 { 7279 bar(); 7280 } 7281 } 7282 #pragma omp target 7283 #pragma omp teams distribute parallel for simd 7284 for (int i = 0; i < 10; ++i) { 7285 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7286 { 7287 bar(); 7288 } 7289 } 7290 #pragma omp target 7291 #pragma omp teams distribute parallel for simd 7292 for (int i = 0; i < 10; ++i) { 7293 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7294 { 7295 #pragma omp single 7296 { 7297 bar(); 7298 } 7299 } 7300 } 7301 #pragma omp target 7302 #pragma omp teams distribute parallel for simd 7303 for (int i = 0; i < 10; ++i) { 7304 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7305 for (int i = 0; i < 10; ++i) 7306 ; 7307 } 7308 #pragma omp target 7309 #pragma omp teams distribute parallel for simd 7310 for (int i = 0; i < 10; ++i) { 7311 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7312 for (int i = 0; i < 10; ++i) 7313 ; 7314 } 7315 #pragma omp target 7316 #pragma omp teams distribute parallel for simd 7317 for (int i = 0; i < 10; ++i) { 7318 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7319 { 7320 bar(); 7321 } 7322 } 7323 #pragma omp target 7324 #pragma omp teams distribute parallel for simd 7325 for (int i = 0; i < 10; ++i) { 7326 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7327 { 7328 bar(); 7329 } 7330 } 7331 #pragma omp target 7332 #pragma omp teams distribute parallel for simd 7333 for (int i = 0; i < 10; ++i) { 7334 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7335 bar(); 7336 } 7337 #pragma omp target 7338 #pragma omp teams distribute parallel for simd 7339 for (int i = 0; i < 10; ++i) { 7340 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7341 bar(); 7342 } 7343 #pragma omp target 7344 #pragma omp teams distribute parallel for simd 7345 for (int i = 0; i < 10; ++i) { 7346 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7347 bar(); 7348 } 7349 #pragma omp target 7350 #pragma omp teams distribute parallel for simd 7351 for (int i = 0; i < 10; ++i) { 7352 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7353 bar(); 7354 } 7355 #pragma omp target 7356 #pragma omp teams distribute parallel for simd 7357 for (int i = 0; i < 10; ++i) { 7358 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7359 bar(); 7360 } 7361 #pragma omp target 7362 #pragma omp teams distribute parallel for simd 7363 for (int i = 0; i < 10; ++i) { 7364 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7365 ++a; 7366 } 7367 #pragma omp target 7368 #pragma omp teams distribute parallel for simd 7369 for (int i = 0; i < 10; ++i) { 7370 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7371 ++a; 7372 } 7373 #pragma omp target 7374 #pragma omp teams distribute parallel for simd 7375 for (int i = 0; i < 10; ++i) { 7376 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7377 ++a; 7378 } 7379 #pragma omp target 7380 #pragma omp teams distribute parallel for simd 7381 for (int i = 0; i < 10; ++i) { 7382 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7383 for (int i = 0; i < 10; ++i) 7384 ; 7385 } 7386 #pragma omp target 7387 #pragma omp teams distribute parallel for simd 7388 for (int i = 0; i < 10; ++i) { 7389 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7390 ++a; 7391 } 7392 #pragma omp target 7393 #pragma omp teams distribute parallel for simd 7394 for (int i = 0; i < 10; ++i) { 7395 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7396 ++a; 7397 } 7398 #pragma omp target 7399 #pragma omp teams distribute parallel for simd 7400 for (int i = 0; i < 10; ++i) { 7401 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7402 ++a; 7403 } 7404 #pragma omp target 7405 #pragma omp teams distribute parallel for simd 7406 for (int i = 0; i < 10; ++i) { 7407 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7408 ++a; 7409 } 7410 #pragma omp target 7411 #pragma omp teams distribute parallel for simd 7412 for (int i = 0; i < 10; ++i) { 7413 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7414 for (int i = 0; i < 10; ++i) 7415 ++a; 7416 } 7417 #pragma omp target 7418 #pragma omp teams distribute parallel for simd 7419 for (int i = 0; i < 10; ++i) { 7420 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7421 for (int i = 0; i < 10; ++i) 7422 ++a; 7423 } 7424 #pragma omp target 7425 #pragma omp teams distribute parallel for simd 7426 for (int i = 0; i < 10; ++i) { 7427 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7428 for (int i = 0; i < 10; ++i) 7429 ++a; 7430 } 7431 #pragma omp target 7432 #pragma omp teams distribute parallel for simd 7433 for (int i = 0; i < 10; ++i) { 7434 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7435 for (int i = 0; i < 10; ++i) 7436 ++a; 7437 } 7438 #pragma omp target 7439 #pragma omp teams distribute parallel for simd 7440 for (int i = 0; i < 10; ++i) { 7441 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7442 for (int i = 0; i < 10; ++i) 7443 ++a; 7444 } 7445 #pragma omp target 7446 #pragma omp teams distribute parallel for simd 7447 for (int i = 0; i < 10; ++i) { 7448 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7449 for (int i = 0; i < 10; ++i) 7450 ++a; 7451 } 7452 #pragma omp target 7453 #pragma omp teams distribute parallel for simd 7454 for (int i = 0; i < 10; ++i) { 7455 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7456 ++a; 7457 } 7458 #pragma omp target 7459 #pragma omp teams distribute parallel for simd 7460 for (int i = 0; i < 10; ++i) { 7461 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7462 for (int i = 0; i < 10; ++i) 7463 ++a; 7464 } 7465 #pragma omp target 7466 #pragma omp teams distribute parallel for simd 7467 for (int i = 0; i < 10; ++i) { 7468 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7469 for (int i = 0; i < 10; ++i) 7470 ++a; 7471 } 7472 #pragma omp target 7473 #pragma omp teams distribute parallel for simd 7474 for (int i = 0; i < 10; ++i) { 7475 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7476 for (int i = 0; i < 10; ++i) 7477 ++a; 7478 } 7479 #pragma omp target 7480 #pragma omp teams distribute parallel for simd 7481 for (int i = 0; i < 10; ++i) { 7482 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7483 for (int i = 0; i < 10; ++i) 7484 ++a; 7485 } 7486 7487 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 7488 #pragma omp teams distribute parallel for // expected-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 7489 for (int i = 0; i < 10; ++i) 7490 ; 7491 #pragma omp target 7492 #pragma omp teams distribute parallel for 7493 for (int i = 0; i < 10; ++i) { 7494 #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?}} 7495 for (int i = 0; i < 10; ++i) 7496 ; 7497 } 7498 #pragma omp target 7499 #pragma omp teams distribute parallel for 7500 for (int i = 0; i < 10; ++i) { 7501 #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?}} 7502 for (int i = 0; i < 10; ++i) 7503 ; 7504 } 7505 #pragma omp target 7506 #pragma omp teams distribute parallel for 7507 for (int i = 0; i < 10; ++i) { 7508 #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?}} 7509 for (int i = 0; i < 10; ++i) 7510 ; 7511 } 7512 #pragma omp target 7513 #pragma omp teams distribute parallel for 7514 for (int i = 0; i < 10; ++i) { 7515 #pragma omp simd // OK 7516 for (int i = 0; i < 10; ++i) 7517 ; 7518 } 7519 #pragma omp target 7520 #pragma omp teams distribute parallel for 7521 for (int i = 0; i < 10; ++i) { 7522 #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?}} 7523 for (int i = 0; i < 10; ++i) 7524 ; 7525 } 7526 #pragma omp target 7527 #pragma omp teams distribute parallel for 7528 for (int i = 0; i < 10; ++i) { 7529 #pragma omp parallel // OK 7530 for (int i = 0; i < 10; ++i) 7531 ; 7532 } 7533 #pragma omp target 7534 #pragma omp teams distribute parallel for 7535 for (int i = 0; i < 10; ++i) { 7536 #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?}} 7537 { 7538 bar(); 7539 } 7540 } 7541 #pragma omp target 7542 #pragma omp teams distribute parallel for 7543 for (int i = 0; i < 10; ++i) { 7544 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 7545 { 7546 bar(); 7547 } 7548 } 7549 #pragma omp target 7550 #pragma omp teams distribute parallel for 7551 for (int i = 0; i < 10; ++i) { 7552 #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?}} 7553 { 7554 bar(); 7555 } 7556 } 7557 #pragma omp target 7558 #pragma omp teams distribute parallel for 7559 for (int i = 0; i < 10; ++i) { 7560 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7561 { 7562 bar(); 7563 } 7564 } 7565 #pragma omp target 7566 #pragma omp teams distribute parallel for 7567 for (int i = 0; i < 10; ++i) { 7568 #pragma omp critical // OK 7569 { 7570 bar(); 7571 } 7572 } 7573 #pragma omp target 7574 #pragma omp teams distribute parallel for 7575 for (int i = 0; i < 10; ++i) { 7576 #pragma omp parallel // OK 7577 { 7578 #pragma omp single 7579 { 7580 bar(); 7581 } 7582 } 7583 } 7584 #pragma omp target 7585 #pragma omp teams distribute parallel for 7586 for (int i = 0; i < 10; ++i) { 7587 #pragma omp parallel for // OK 7588 for (int i = 0; i < 10; ++i) 7589 ; 7590 } 7591 #pragma omp target 7592 #pragma omp teams distribute parallel for 7593 for (int i = 0; i < 10; ++i) { 7594 #pragma omp parallel for simd // OK 7595 for (int i = 0; i < 10; ++i) 7596 ; 7597 } 7598 #pragma omp target 7599 #pragma omp teams distribute parallel for 7600 for (int i = 0; i < 10; ++i) { 7601 #pragma omp parallel sections // OK 7602 { 7603 bar(); 7604 } 7605 } 7606 #pragma omp target 7607 #pragma omp teams distribute parallel for 7608 for (int i = 0; i < 10; ++i) { 7609 #pragma omp task // OK 7610 { 7611 bar(); 7612 } 7613 } 7614 #pragma omp target 7615 #pragma omp teams distribute parallel for 7616 for (int i = 0; i < 10; ++i) { 7617 #pragma omp taskyield // OK 7618 bar(); 7619 } 7620 #pragma omp target 7621 #pragma omp teams distribute parallel for 7622 for (int i = 0; i < 10; ++i) { 7623 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7624 bar(); 7625 } 7626 #pragma omp target 7627 #pragma omp teams distribute parallel for 7628 for (int i = 0; i < 10; ++i) { 7629 #pragma omp taskwait // OK 7630 bar(); 7631 } 7632 #pragma omp target 7633 #pragma omp teams distribute parallel for 7634 for (int i = 0; i < 10; ++i) { 7635 #pragma omp flush // OK 7636 bar(); 7637 } 7638 #pragma omp target 7639 #pragma omp teams distribute parallel for 7640 for (int i = 0; i < 10; ++i) { 7641 #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?}} 7642 bar(); 7643 } 7644 #pragma omp target 7645 #pragma omp teams distribute parallel for 7646 for (int i = 0; i < 10; ++i) { 7647 #pragma omp atomic // OK 7648 ++a; 7649 } 7650 #pragma omp target 7651 #pragma omp teams distribute parallel for 7652 for (int i = 0; i < 10; ++i) { 7653 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7654 ++a; 7655 } 7656 #pragma omp target 7657 #pragma omp teams distribute parallel for 7658 for (int i = 0; i < 10; ++i) { 7659 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7660 ++a; 7661 } 7662 #pragma omp target 7663 #pragma omp teams distribute parallel for 7664 for (int i = 0; i < 10; ++i) { 7665 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7666 for (int i = 0; i < 10; ++i) 7667 ; 7668 } 7669 #pragma omp target 7670 #pragma omp teams distribute parallel for 7671 for (int i = 0; i < 10; ++i) { 7672 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7673 ++a; 7674 } 7675 #pragma omp target 7676 #pragma omp teams distribute parallel for 7677 for (int i = 0; i < 10; ++i) { 7678 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7679 ++a; 7680 } 7681 #pragma omp target 7682 #pragma omp teams distribute parallel for 7683 for (int i = 0; i < 10; ++i) { 7684 #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?}} 7685 ++a; 7686 } 7687 #pragma omp target 7688 #pragma omp teams distribute parallel for 7689 for (int i = 0; i < 10; ++i) { 7690 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7691 ++a; 7692 } 7693 #pragma omp target 7694 #pragma omp teams distribute parallel for 7695 for (int i = 0; i < 10; ++i) { 7696 #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?}} 7697 for (int i = 0; i < 10; ++i) 7698 ++a; 7699 } 7700 #pragma omp target 7701 #pragma omp teams distribute parallel for 7702 for (int i = 0; i < 10; ++i) { 7703 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7704 for (int i = 0; i < 10; ++i) 7705 ++a; 7706 } 7707 #pragma omp target 7708 #pragma omp teams distribute parallel for 7709 for (int i = 0; i < 10; ++i) { 7710 #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?}} 7711 for (int i = 0; i < 10; ++i) 7712 ++a; 7713 } 7714 #pragma omp target 7715 #pragma omp teams distribute parallel for 7716 for (int i = 0; i < 10; ++i) { 7717 #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?}} 7718 for (int i = 0; i < 10; ++i) 7719 ++a; 7720 } 7721 #pragma omp target 7722 #pragma omp teams distribute parallel for 7723 for (int i = 0; i < 10; ++i) { 7724 #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?}} 7725 for (int i = 0; i < 10; ++i) 7726 ++a; 7727 } 7728 #pragma omp target 7729 #pragma omp teams distribute parallel for 7730 for (int i = 0; i < 10; ++i) { 7731 #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?}} 7732 for (int i = 0; i < 10; ++i) 7733 ++a; 7734 } 7735 #pragma omp target 7736 #pragma omp teams distribute parallel for 7737 for (int i = 0; i < 10; ++i) { 7738 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7739 ++a; 7740 } 7741 #pragma omp target 7742 #pragma omp teams distribute parallel for 7743 for (int i = 0; i < 10; ++i) { 7744 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7745 for (int i = 0; i < 10; ++i) 7746 ++a; 7747 } 7748 #pragma omp target 7749 #pragma omp teams distribute parallel for 7750 for (int i = 0; i < 10; ++i) { 7751 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7752 for (int i = 0; i < 10; ++i) 7753 ++a; 7754 } 7755 #pragma omp target 7756 #pragma omp teams distribute parallel for 7757 for (int i = 0; i < 10; ++i) { 7758 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7759 for (int i = 0; i < 10; ++i) 7760 ++a; 7761 } 7762 #pragma omp target 7763 #pragma omp teams distribute parallel for 7764 for (int i = 0; i < 10; ++i) { 7765 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7766 for (int i = 0; i < 10; ++i) 7767 ++a; 7768 } 7769 7770 // TARGET TEAMS DIRECTIVE 7771 #pragma omp target teams 7772 #pragma omp parallel 7773 bar(); 7774 #pragma omp target teams 7775 #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?}} 7776 for (int i = 0; i < 10; ++i) 7777 ; 7778 #pragma omp target teams 7779 #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?}} 7780 for (int i = 0; i < 10; ++i) 7781 ; 7782 #pragma omp target teams 7783 #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?}} 7784 for (int i = 0; i < 10; ++i) 7785 ; 7786 #pragma omp target teams 7787 #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?}} 7788 { 7789 bar(); 7790 } 7791 #pragma omp target teams 7792 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 7793 { 7794 bar(); 7795 } 7796 #pragma omp target teams 7797 #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?}} 7798 bar(); 7799 7800 #pragma omp target teams 7801 #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?}} 7802 { 7803 bar(); 7804 } 7805 #pragma omp target teams 7806 #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?}} 7807 { 7808 bar(); 7809 } 7810 #pragma omp target teams 7811 #pragma omp parallel for 7812 for (int i = 0; i < 10; ++i) 7813 ; 7814 #pragma omp target teams 7815 #pragma omp parallel for simd 7816 for (int i = 0; i < 10; ++i) 7817 ; 7818 #pragma omp target teams 7819 #pragma omp parallel sections 7820 { 7821 bar(); 7822 } 7823 #pragma omp target teams 7824 #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?}} 7825 { 7826 bar(); 7827 } 7828 #pragma omp target teams 7829 { 7830 #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?}} 7831 bar(); 7832 } 7833 #pragma omp target teams 7834 { 7835 #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?}} 7836 bar(); 7837 } 7838 #pragma omp target teams 7839 { 7840 #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?}} 7841 bar(); 7842 } 7843 #pragma omp target teams 7844 { 7845 #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?}} 7846 bar(); 7847 } 7848 #pragma omp target teams 7849 { 7850 #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?}} 7851 bar(); 7852 } 7853 #pragma omp target teams 7854 { 7855 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 7856 ++a; 7857 } 7858 #pragma omp target teams 7859 { 7860 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 7861 ++a; 7862 } 7863 #pragma omp target teams 7864 { 7865 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 7866 ++a; 7867 } 7868 #pragma omp target teams 7869 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 7870 for (int i = 0; i < 10; ++i) 7871 ; 7872 #pragma omp target teams 7873 { 7874 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 7875 } 7876 #pragma omp target teams 7877 { 7878 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 7879 } 7880 #pragma omp target teams 7881 { 7882 #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?}} 7883 ++a; 7884 } 7885 #pragma omp target teams 7886 { 7887 #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?}} 7888 for (int i = 0; i < 10; ++i) 7889 ++a; 7890 } 7891 #pragma omp target teams 7892 #pragma omp distribute 7893 for (int i = 0; i < 10; ++i) 7894 ; 7895 #pragma omp target teams 7896 { 7897 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 7898 ++a; 7899 } 7900 #pragma omp target teams 7901 #pragma omp distribute parallel for 7902 for (int i = 0; i < 10; ++i) 7903 ; 7904 #pragma omp target teams 7905 { 7906 #pragma omp distribute parallel for 7907 for (int i = 0; i < 10; ++i) 7908 ; 7909 #pragma omp distribute parallel for 7910 for (int j = 0; j < 10; ++j) 7911 ; 7912 } 7913 #pragma omp target teams 7914 { 7915 #pragma omp distribute parallel for simd 7916 for (int i = 0; i < 10; ++i) 7917 ; 7918 #pragma omp distribute parallel for simd 7919 for (int j = 0; j < 10; ++j) 7920 ; 7921 } 7922 #pragma omp target teams 7923 { 7924 #pragma omp distribute simd 7925 for (int i = 0; i < 10; ++i) 7926 ; 7927 #pragma omp distribute simd 7928 for (int j = 0; j < 10; ++j) 7929 ; 7930 } 7931 #pragma omp target teams 7932 { 7933 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 7934 for (int i = 0; i < 10; ++i) 7935 ; 7936 } 7937 #pragma omp target teams 7938 { 7939 #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?}} 7940 for (int i = 0; i < 10; ++i) 7941 ; 7942 } 7943 #pragma omp target teams 7944 { 7945 #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?}} 7946 for (int i = 0; i < 10; ++i) 7947 ; 7948 } 7949 #pragma omp target teams 7950 { 7951 #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?}} 7952 for (int i = 0; i < 10; ++i) 7953 ; 7954 } 7955 #pragma omp target teams 7956 { 7957 #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?}} 7958 for (int i = 0; i < 10; ++i) 7959 ; 7960 } 7961 #pragma omp target teams 7962 { 7963 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 7964 a++; 7965 } 7966 #pragma omp target teams 7967 { 7968 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 7969 for (int i = 0; i < 10; ++i) 7970 ; 7971 } 7972 #pragma omp target teams 7973 { 7974 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 7975 for (int i = 0; i < 10; ++i) 7976 ; 7977 } 7978 #pragma omp target teams 7979 { 7980 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 7981 for (int i = 0; i < 10; ++i) 7982 ; 7983 } 7984 #pragma omp target teams 7985 { 7986 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 7987 for (int i = 0; i < 10; ++i) 7988 ; 7989 } 7990 7991 // TARGET TEAMS DISTRIBUTE DIRECTIVE 7992 #pragma omp target teams distribute // OK 7993 for (int i = 0; i < 10; ++i) 7994 ; 7995 #pragma omp target teams distribute 7996 for (int i = 0; i < 10; ++i) { 7997 #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?}} 7998 for (int i = 0; i < 10; ++i) 7999 ; 8000 } 8001 #pragma omp target teams distribute 8002 for (int i = 0; i < 10; ++i) { 8003 #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?}} 8004 for (int i = 0; i < 10; ++i) 8005 ; 8006 } 8007 #pragma omp target teams distribute 8008 for (int i = 0; i < 10; ++i) { 8009 #pragma omp for // OK 8010 for (int i = 0; i < 10; ++i) 8011 ; 8012 } 8013 #pragma omp target teams distribute 8014 for (int i = 0; i < 10; ++i) { 8015 #pragma omp simd // OK 8016 for (int i = 0; i < 10; ++i) 8017 ; 8018 } 8019 #pragma omp target teams distribute 8020 for (int i = 0; i < 10; ++i) { 8021 #pragma omp for simd // OK 8022 for (int i = 0; i < 10; ++i) 8023 ; 8024 } 8025 #pragma omp target teams distribute 8026 for (int i = 0; i < 10; ++i) { 8027 #pragma omp parallel // OK 8028 for (int i = 0; i < 10; ++i) 8029 ; 8030 } 8031 #pragma omp target teams distribute 8032 for (int i = 0; i < 10; ++i) { 8033 #pragma omp sections // OK 8034 { 8035 bar(); 8036 } 8037 } 8038 #pragma omp target teams distribute 8039 for (int i = 0; i < 10; ++i) { 8040 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8041 { 8042 bar(); 8043 } 8044 } 8045 #pragma omp target teams distribute 8046 for (int i = 0; i < 10; ++i) { 8047 #pragma omp single // OK 8048 { 8049 bar(); 8050 } 8051 } 8052 #pragma omp target teams distribute 8053 for (int i = 0; i < 10; ++i) { 8054 #pragma omp master // OK 8055 { 8056 bar(); 8057 } 8058 } 8059 #pragma omp target teams distribute 8060 for (int i = 0; i < 10; ++i) { 8061 #pragma omp critical // OK 8062 { 8063 bar(); 8064 } 8065 } 8066 #pragma omp target teams distribute 8067 for (int i = 0; i < 10; ++i) { 8068 #pragma omp parallel // OK 8069 { 8070 #pragma omp single 8071 { 8072 bar(); 8073 } 8074 } 8075 } 8076 #pragma omp target teams distribute 8077 for (int i = 0; i < 10; ++i) { 8078 #pragma omp parallel for // OK 8079 for (int i = 0; i < 10; ++i) 8080 ; 8081 } 8082 #pragma omp target teams distribute 8083 for (int i = 0; i < 10; ++i) { 8084 #pragma omp parallel for simd // OK 8085 for (int i = 0; i < 10; ++i) 8086 ; 8087 } 8088 #pragma omp target teams distribute 8089 for (int i = 0; i < 10; ++i) { 8090 #pragma omp parallel sections // OK 8091 { 8092 bar(); 8093 } 8094 } 8095 #pragma omp target teams distribute 8096 for (int i = 0; i < 10; ++i) { 8097 #pragma omp task // OK 8098 { 8099 bar(); 8100 } 8101 } 8102 #pragma omp target teams distribute 8103 for (int i = 0; i < 10; ++i) { 8104 #pragma omp taskyield // OK 8105 bar(); 8106 } 8107 #pragma omp target teams distribute 8108 for (int i = 0; i < 10; ++i) { 8109 #pragma omp barrier // OK 8110 bar(); 8111 } 8112 #pragma omp target teams distribute 8113 for (int i = 0; i < 10; ++i) { 8114 #pragma omp taskwait // OK 8115 bar(); 8116 } 8117 #pragma omp target teams distribute 8118 for (int i = 0; i < 10; ++i) { 8119 #pragma omp flush // OK 8120 bar(); 8121 } 8122 #pragma omp target teams distribute 8123 for (int i = 0; i < 10; ++i) { 8124 #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?}} 8125 bar(); 8126 } 8127 #pragma omp target teams distribute 8128 for (int i = 0; i < 10; ++i) { 8129 #pragma omp atomic // OK 8130 ++a; 8131 } 8132 #pragma omp target teams distribute 8133 for (int i = 0; i < 10; ++i) { 8134 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8135 ++a; 8136 } 8137 #pragma omp target teams distribute 8138 for (int i = 0; i < 10; ++i) { 8139 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8140 ++a; 8141 } 8142 #pragma omp target teams distribute 8143 for (int i = 0; i < 10; ++i) { 8144 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8145 for (int i = 0; i < 10; ++i) 8146 ; 8147 } 8148 #pragma omp target teams distribute 8149 for (int i = 0; i < 10; ++i) { 8150 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8151 ++a; 8152 } 8153 #pragma omp target teams distribute 8154 for (int i = 0; i < 10; ++i) { 8155 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8156 ++a; 8157 } 8158 #pragma omp target teams distribute 8159 for (int i = 0; i < 10; ++i) { 8160 #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?}} 8161 ++a; 8162 } 8163 #pragma omp target teams distribute 8164 for (int i = 0; i < 10; ++i) { 8165 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8166 ++a; 8167 } 8168 #pragma omp target teams distribute 8169 for (int i = 0; i < 10; ++i) { 8170 #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?}} 8171 for (int i = 0; i < 10; ++i) 8172 ++a; 8173 } 8174 #pragma omp target teams distribute 8175 for (int i = 0; i < 10; ++i) { 8176 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8177 for (int i = 0; i < 10; ++i) 8178 ++a; 8179 } 8180 #pragma omp target teams distribute 8181 for (int i = 0; i < 10; ++i) { 8182 #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?}} 8183 for (int i = 0; i < 10; ++i) 8184 ++a; 8185 } 8186 #pragma omp target teams distribute 8187 for (int i = 0; i < 10; ++i) { 8188 #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?}} 8189 for (int i = 0; i < 10; ++i) 8190 ++a; 8191 } 8192 #pragma omp target teams distribute 8193 for (int i = 0; i < 10; ++i) { 8194 #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?}} 8195 for (int i = 0; i < 10; ++i) 8196 ++a; 8197 } 8198 #pragma omp target teams distribute 8199 for (int i = 0; i < 10; ++i) { 8200 #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?}} 8201 for (int i = 0; i < 10; ++i) 8202 ; 8203 } 8204 #pragma omp target teams distribute 8205 for (int i = 0; i < 10; ++i) { 8206 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8207 a++; 8208 } 8209 #pragma omp target teams distribute 8210 for (int i = 0; i < 10; ++i) { 8211 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8212 for (int i = 0; i < 10; ++i) 8213 ; 8214 } 8215 #pragma omp target teams distribute 8216 for (int i = 0; i < 10; ++i) { 8217 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8218 for (int i = 0; i < 10; ++i) 8219 ; 8220 } 8221 #pragma omp target teams distribute 8222 for (int i = 0; i < 10; ++i) { 8223 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8224 for (int i = 0; i < 10; ++i) 8225 ; 8226 } 8227 #pragma omp target teams distribute 8228 for (int i = 0; i < 10; ++i) { 8229 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8230 for (int i = 0; i < 10; ++i) 8231 ; 8232 } 8233 8234 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8235 #pragma omp target teams distribute parallel for // OK 8236 for (int i = 0; i < 10; ++i) 8237 ; 8238 #pragma omp target teams distribute parallel for 8239 for (int i = 0; i < 10; ++i) { 8240 #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?}} 8241 for (int i = 0; i < 10; ++i) 8242 ; 8243 } 8244 #pragma omp target teams distribute parallel for 8245 for (int i = 0; i < 10; ++i) { 8246 #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?}} 8247 for (int i = 0; i < 10; ++i) 8248 ; 8249 } 8250 #pragma omp target teams distribute parallel for 8251 for (int i = 0; i < 10; ++i) { 8252 #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?}} 8253 for (int i = 0; i < 10; ++i) 8254 ; 8255 } 8256 #pragma omp target teams distribute parallel for 8257 for (int i = 0; i < 10; ++i) { 8258 #pragma omp simd // OK 8259 for (int i = 0; i < 10; ++i) 8260 ; 8261 } 8262 #pragma omp target teams distribute parallel for 8263 for (int i = 0; i < 10; ++i) { 8264 #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?}} 8265 for (int i = 0; i < 10; ++i) 8266 ; 8267 } 8268 #pragma omp target teams distribute parallel for 8269 for (int i = 0; i < 10; ++i) { 8270 #pragma omp parallel // OK 8271 for (int i = 0; i < 10; ++i) 8272 ; 8273 } 8274 #pragma omp target teams distribute parallel for 8275 for (int i = 0; i < 10; ++i) { 8276 #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?}} 8277 { 8278 bar(); 8279 } 8280 } 8281 #pragma omp target teams distribute parallel for 8282 for (int i = 0; i < 10; ++i) { 8283 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 8284 { 8285 bar(); 8286 } 8287 } 8288 #pragma omp target teams distribute parallel for 8289 for (int i = 0; i < 10; ++i) { 8290 #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?}} 8291 { 8292 bar(); 8293 } 8294 } 8295 #pragma omp target teams distribute parallel for 8296 for (int i = 0; i < 10; ++i) { 8297 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8298 { 8299 bar(); 8300 } 8301 } 8302 #pragma omp target teams distribute parallel for 8303 for (int i = 0; i < 10; ++i) { 8304 #pragma omp critical // OK 8305 { 8306 bar(); 8307 } 8308 } 8309 #pragma omp target teams distribute parallel for 8310 for (int i = 0; i < 10; ++i) { 8311 #pragma omp parallel // OK 8312 { 8313 #pragma omp single 8314 { 8315 bar(); 8316 } 8317 } 8318 } 8319 #pragma omp target teams distribute parallel for 8320 for (int i = 0; i < 10; ++i) { 8321 #pragma omp parallel for // OK 8322 for (int i = 0; i < 10; ++i) 8323 ; 8324 } 8325 #pragma omp target teams distribute parallel for 8326 for (int i = 0; i < 10; ++i) { 8327 #pragma omp parallel for simd // OK 8328 for (int i = 0; i < 10; ++i) 8329 ; 8330 } 8331 #pragma omp target teams distribute parallel for 8332 for (int i = 0; i < 10; ++i) { 8333 #pragma omp parallel sections // OK 8334 { 8335 bar(); 8336 } 8337 } 8338 #pragma omp target teams distribute parallel for 8339 for (int i = 0; i < 10; ++i) { 8340 #pragma omp task // OK 8341 { 8342 bar(); 8343 } 8344 } 8345 #pragma omp target teams distribute parallel for 8346 for (int i = 0; i < 10; ++i) { 8347 #pragma omp taskyield // OK 8348 bar(); 8349 } 8350 #pragma omp target teams distribute parallel for 8351 for (int i = 0; i < 10; ++i) { 8352 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8353 bar(); 8354 } 8355 #pragma omp target teams distribute parallel for 8356 for (int i = 0; i < 10; ++i) { 8357 #pragma omp taskwait // OK 8358 bar(); 8359 } 8360 #pragma omp target teams distribute parallel for 8361 for (int i = 0; i < 10; ++i) { 8362 #pragma omp flush // OK 8363 bar(); 8364 } 8365 #pragma omp target teams distribute parallel for 8366 for (int i = 0; i < 10; ++i) { 8367 #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?}} 8368 bar(); 8369 } 8370 #pragma omp target teams distribute parallel for 8371 for (int i = 0; i < 10; ++i) { 8372 #pragma omp atomic // OK 8373 ++a; 8374 } 8375 #pragma omp target teams distribute parallel for 8376 for (int i = 0; i < 10; ++i) { 8377 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8378 ++a; 8379 } 8380 #pragma omp target teams distribute parallel for 8381 for (int i = 0; i < 10; ++i) { 8382 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8383 ++a; 8384 } 8385 #pragma omp target teams distribute parallel for 8386 for (int i = 0; i < 10; ++i) { 8387 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8388 for (int i = 0; i < 10; ++i) 8389 ; 8390 } 8391 #pragma omp target teams distribute parallel for 8392 for (int i = 0; i < 10; ++i) { 8393 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8394 ++a; 8395 } 8396 #pragma omp target teams distribute parallel for 8397 for (int i = 0; i < 10; ++i) { 8398 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8399 ++a; 8400 } 8401 #pragma omp target teams distribute parallel for 8402 for (int i = 0; i < 10; ++i) { 8403 #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?}} 8404 ++a; 8405 } 8406 #pragma omp target teams distribute parallel for 8407 for (int i = 0; i < 10; ++i) { 8408 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8409 ++a; 8410 } 8411 #pragma omp target teams distribute parallel for 8412 for (int i = 0; i < 10; ++i) { 8413 #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?}} 8414 for (int i = 0; i < 10; ++i) 8415 ++a; 8416 } 8417 #pragma omp target teams distribute parallel for 8418 for (int i = 0; i < 10; ++i) { 8419 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8420 for (int i = 0; i < 10; ++i) 8421 ++a; 8422 } 8423 #pragma omp target teams distribute parallel for 8424 for (int i = 0; i < 10; ++i) { 8425 #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?}} 8426 for (int i = 0; i < 10; ++i) 8427 ++a; 8428 } 8429 #pragma omp target teams distribute parallel for 8430 for (int i = 0; i < 10; ++i) { 8431 #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?}} 8432 for (int i = 0; i < 10; ++i) 8433 ++a; 8434 } 8435 #pragma omp target teams distribute parallel for 8436 for (int i = 0; i < 10; ++i) { 8437 #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?}} 8438 for (int i = 0; i < 10; ++i) 8439 ++a; 8440 } 8441 #pragma omp target teams distribute parallel for 8442 for (int i = 0; i < 10; ++i) { 8443 #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?}} 8444 for (int i = 0; i < 10; ++i) 8445 ; 8446 } 8447 #pragma omp target teams distribute parallel for 8448 for (int i = 0; i < 10; ++i) { 8449 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8450 a++; 8451 } 8452 #pragma omp target teams distribute parallel for 8453 for (int i = 0; i < 10; ++i) { 8454 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8455 for (int i = 0; i < 10; ++i) 8456 ; 8457 } 8458 #pragma omp target teams distribute parallel for 8459 for (int i = 0; i < 10; ++i) { 8460 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8461 for (int i = 0; i < 10; ++i) 8462 ; 8463 } 8464 #pragma omp target teams distribute parallel for 8465 for (int i = 0; i < 10; ++i) { 8466 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8467 for (int i = 0; i < 10; ++i) 8468 ; 8469 } 8470 #pragma omp target teams distribute parallel for 8471 for (int i = 0; i < 10; ++i) { 8472 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8473 for (int i = 0; i < 10; ++i) 8474 ; 8475 } 8476 8477 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 8478 #pragma omp target teams distribute parallel for simd // OK 8479 for (int i = 0; i < 10; ++i) 8480 ; 8481 #pragma omp target teams distribute parallel for simd 8482 for (int i = 0; i < 10; ++i) { 8483 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8484 for (int i = 0; i < 10; ++i) 8485 ; 8486 } 8487 #pragma omp target teams distribute parallel for simd 8488 for (int i = 0; i < 10; ++i) { 8489 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8490 for (int i = 0; i < 10; ++i) 8491 ; 8492 } 8493 #pragma omp target teams distribute parallel for simd 8494 for (int i = 0; i < 10; ++i) { 8495 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8496 for (int i = 0; i < 10; ++i) 8497 ; 8498 } 8499 #pragma omp target teams distribute parallel for simd 8500 for (int i = 0; i < 10; ++i) { 8501 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8502 for (int i = 0; i < 10; ++i) 8503 ; 8504 } 8505 #pragma omp target teams distribute parallel for simd 8506 for (int i = 0; i < 10; ++i) { 8507 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8508 for (int i = 0; i < 10; ++i) 8509 ; 8510 } 8511 #pragma omp target teams distribute parallel for simd 8512 for (int i = 0; i < 10; ++i) { 8513 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8514 for (int i = 0; i < 10; ++i) 8515 ; 8516 } 8517 #pragma omp target teams distribute parallel for simd 8518 for (int i = 0; i < 10; ++i) { 8519 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8520 { 8521 bar(); 8522 } 8523 } 8524 #pragma omp target teams distribute parallel for simd 8525 for (int i = 0; i < 10; ++i) { 8526 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8527 { 8528 bar(); 8529 } 8530 } 8531 #pragma omp target teams distribute parallel for simd 8532 for (int i = 0; i < 10; ++i) { 8533 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8534 { 8535 bar(); 8536 } 8537 } 8538 #pragma omp target teams distribute parallel for simd 8539 for (int i = 0; i < 10; ++i) { 8540 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8541 { 8542 bar(); 8543 } 8544 } 8545 #pragma omp target teams distribute parallel for simd 8546 for (int i = 0; i < 10; ++i) { 8547 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8548 { 8549 bar(); 8550 } 8551 } 8552 #pragma omp target teams distribute parallel for simd 8553 for (int i = 0; i < 10; ++i) { 8554 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8555 { 8556 #pragma omp single 8557 { 8558 bar(); 8559 } 8560 } 8561 } 8562 #pragma omp target teams distribute parallel for simd 8563 for (int i = 0; i < 10; ++i) { 8564 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8565 for (int i = 0; i < 10; ++i) 8566 ; 8567 } 8568 #pragma omp target teams distribute parallel for simd 8569 for (int i = 0; i < 10; ++i) { 8570 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8571 for (int i = 0; i < 10; ++i) 8572 ; 8573 } 8574 #pragma omp target teams distribute parallel for simd 8575 for (int i = 0; i < 10; ++i) { 8576 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8577 { 8578 bar(); 8579 } 8580 } 8581 #pragma omp target teams distribute parallel for simd 8582 for (int i = 0; i < 10; ++i) { 8583 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8584 { 8585 bar(); 8586 } 8587 } 8588 #pragma omp target teams distribute parallel for simd 8589 for (int i = 0; i < 10; ++i) { 8590 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8591 bar(); 8592 } 8593 #pragma omp target teams distribute parallel for simd 8594 for (int i = 0; i < 10; ++i) { 8595 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8596 bar(); 8597 } 8598 #pragma omp target teams distribute parallel for simd 8599 for (int i = 0; i < 10; ++i) { 8600 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8601 bar(); 8602 } 8603 #pragma omp target teams distribute parallel for simd 8604 for (int i = 0; i < 10; ++i) { 8605 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8606 bar(); 8607 } 8608 #pragma omp target teams distribute parallel for simd 8609 for (int i = 0; i < 10; ++i) { 8610 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8611 bar(); 8612 } 8613 #pragma omp target teams distribute parallel for simd 8614 for (int i = 0; i < 10; ++i) { 8615 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 8616 ++a; 8617 } 8618 #pragma omp target teams distribute parallel for simd 8619 for (int i = 0; i < 10; ++i) { 8620 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8621 ++a; 8622 } 8623 #pragma omp target teams distribute parallel for simd 8624 for (int i = 0; i < 10; ++i) { 8625 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8626 ++a; 8627 } 8628 #pragma omp target teams distribute parallel for simd 8629 for (int i = 0; i < 10; ++i) { 8630 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8631 for (int i = 0; i < 10; ++i) 8632 ; 8633 } 8634 #pragma omp target teams distribute parallel for simd 8635 for (int i = 0; i < 10; ++i) { 8636 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8637 ++a; 8638 } 8639 #pragma omp target teams distribute parallel for simd 8640 for (int i = 0; i < 10; ++i) { 8641 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8642 ++a; 8643 } 8644 #pragma omp target teams distribute parallel for simd 8645 for (int i = 0; i < 10; ++i) { 8646 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8647 ++a; 8648 } 8649 #pragma omp target teams distribute parallel for simd 8650 for (int i = 0; i < 10; ++i) { 8651 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8652 ++a; 8653 } 8654 #pragma omp target teams distribute parallel for simd 8655 for (int i = 0; i < 10; ++i) { 8656 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8657 for (int i = 0; i < 10; ++i) 8658 ++a; 8659 } 8660 #pragma omp target teams distribute parallel for simd 8661 for (int i = 0; i < 10; ++i) { 8662 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8663 for (int i = 0; i < 10; ++i) 8664 ++a; 8665 } 8666 #pragma omp target teams distribute parallel for simd 8667 for (int i = 0; i < 10; ++i) { 8668 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8669 for (int i = 0; i < 10; ++i) 8670 ++a; 8671 } 8672 #pragma omp target teams distribute parallel for simd 8673 for (int i = 0; i < 10; ++i) { 8674 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8675 for (int i = 0; i < 10; ++i) 8676 ++a; 8677 } 8678 #pragma omp target teams distribute parallel for simd 8679 for (int i = 0; i < 10; ++i) { 8680 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8681 for (int i = 0; i < 10; ++i) 8682 ++a; 8683 } 8684 #pragma omp target teams distribute parallel for simd 8685 for (int i = 0; i < 10; ++i) { 8686 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8687 for (int i = 0; i < 10; ++i) 8688 ; 8689 } 8690 #pragma omp target teams distribute parallel for simd 8691 for (int i = 0; i < 10; ++i) { 8692 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8693 a++; 8694 } 8695 #pragma omp target teams distribute parallel for simd 8696 for (int i = 0; i < 10; ++i) { 8697 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8698 for (int i = 0; i < 10; ++i) 8699 ; 8700 } 8701 #pragma omp target teams distribute parallel for simd 8702 for (int i = 0; i < 10; ++i) { 8703 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8704 for (int i = 0; i < 10; ++i) 8705 ; 8706 } 8707 #pragma omp target teams distribute parallel for simd 8708 for (int i = 0; i < 10; ++i) { 8709 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8710 for (int i = 0; i < 10; ++i) 8711 ; 8712 } 8713 #pragma omp target teams distribute parallel for simd 8714 for (int i = 0; i < 10; ++i) { 8715 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8716 for (int i = 0; i < 10; ++i) 8717 ; 8718 } 8719 8720 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 8721 #pragma omp target teams distribute simd // OK 8722 for (int i = 0; i < 10; ++i) 8723 ; 8724 #pragma omp target teams distribute simd 8725 for (int i = 0; i < 10; ++i) { 8726 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8727 for (int i = 0; i < 10; ++i) 8728 ; 8729 } 8730 #pragma omp target teams distribute simd 8731 for (int i = 0; i < 10; ++i) { 8732 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8733 for (int i = 0; i < 10; ++i) 8734 ; 8735 } 8736 #pragma omp target teams distribute simd 8737 for (int i = 0; i < 10; ++i) { 8738 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8739 for (int i = 0; i < 10; ++i) 8740 ; 8741 } 8742 #pragma omp target teams distribute simd 8743 for (int i = 0; i < 10; ++i) { 8744 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8745 for (int i = 0; i < 10; ++i) 8746 ; 8747 } 8748 #pragma omp target teams distribute simd 8749 for (int i = 0; i < 10; ++i) { 8750 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8751 for (int i = 0; i < 10; ++i) 8752 ; 8753 } 8754 #pragma omp target teams distribute simd 8755 for (int i = 0; i < 10; ++i) { 8756 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8757 for (int i = 0; i < 10; ++i) 8758 ; 8759 } 8760 #pragma omp target teams distribute simd 8761 for (int i = 0; i < 10; ++i) { 8762 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8763 { 8764 bar(); 8765 } 8766 } 8767 #pragma omp target teams distribute simd 8768 for (int i = 0; i < 10; ++i) { 8769 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8770 { 8771 bar(); 8772 } 8773 } 8774 #pragma omp target teams distribute simd 8775 for (int i = 0; i < 10; ++i) { 8776 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8777 { 8778 bar(); 8779 } 8780 } 8781 #pragma omp target teams distribute simd 8782 for (int i = 0; i < 10; ++i) { 8783 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8784 { 8785 bar(); 8786 } 8787 } 8788 #pragma omp target teams distribute simd 8789 for (int i = 0; i < 10; ++i) { 8790 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8791 { 8792 bar(); 8793 } 8794 } 8795 #pragma omp target teams distribute simd 8796 for (int i = 0; i < 10; ++i) { 8797 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8798 { 8799 #pragma omp single 8800 { 8801 bar(); 8802 } 8803 } 8804 } 8805 #pragma omp target teams distribute simd 8806 for (int i = 0; i < 10; ++i) { 8807 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8808 for (int i = 0; i < 10; ++i) 8809 ; 8810 } 8811 #pragma omp target teams distribute simd 8812 for (int i = 0; i < 10; ++i) { 8813 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8814 for (int i = 0; i < 10; ++i) 8815 ; 8816 } 8817 #pragma omp target teams distribute simd 8818 for (int i = 0; i < 10; ++i) { 8819 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8820 { 8821 bar(); 8822 } 8823 } 8824 #pragma omp target teams distribute simd 8825 for (int i = 0; i < 10; ++i) { 8826 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8827 { 8828 bar(); 8829 } 8830 } 8831 #pragma omp target teams distribute simd 8832 for (int i = 0; i < 10; ++i) { 8833 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8834 bar(); 8835 } 8836 #pragma omp target teams distribute simd 8837 for (int i = 0; i < 10; ++i) { 8838 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8839 bar(); 8840 } 8841 #pragma omp target teams distribute simd 8842 for (int i = 0; i < 10; ++i) { 8843 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8844 bar(); 8845 } 8846 #pragma omp target teams distribute simd 8847 for (int i = 0; i < 10; ++i) { 8848 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8849 bar(); 8850 } 8851 #pragma omp target teams distribute simd 8852 for (int i = 0; i < 10; ++i) { 8853 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8854 bar(); 8855 } 8856 #pragma omp target teams distribute simd 8857 for (int i = 0; i < 10; ++i) { 8858 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 8859 ++a; 8860 } 8861 #pragma omp target teams distribute simd 8862 for (int i = 0; i < 10; ++i) { 8863 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8864 ++a; 8865 } 8866 #pragma omp target teams distribute simd 8867 for (int i = 0; i < 10; ++i) { 8868 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8869 ++a; 8870 } 8871 #pragma omp target teams distribute simd 8872 for (int i = 0; i < 10; ++i) { 8873 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8874 for (int i = 0; i < 10; ++i) 8875 ; 8876 } 8877 #pragma omp target teams distribute simd 8878 for (int i = 0; i < 10; ++i) { 8879 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8880 ++a; 8881 } 8882 #pragma omp target teams distribute simd 8883 for (int i = 0; i < 10; ++i) { 8884 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8885 ++a; 8886 } 8887 #pragma omp target teams distribute simd 8888 for (int i = 0; i < 10; ++i) { 8889 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8890 ++a; 8891 } 8892 #pragma omp target teams distribute simd 8893 for (int i = 0; i < 10; ++i) { 8894 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8895 ++a; 8896 } 8897 #pragma omp target teams distribute simd 8898 for (int i = 0; i < 10; ++i) { 8899 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8900 for (int i = 0; i < 10; ++i) 8901 ++a; 8902 } 8903 #pragma omp target teams distribute simd 8904 for (int i = 0; i < 10; ++i) { 8905 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8906 for (int i = 0; i < 10; ++i) 8907 ++a; 8908 } 8909 #pragma omp target teams distribute simd 8910 for (int i = 0; i < 10; ++i) { 8911 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8912 for (int i = 0; i < 10; ++i) 8913 ++a; 8914 } 8915 #pragma omp target teams distribute simd 8916 for (int i = 0; i < 10; ++i) { 8917 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8918 for (int i = 0; i < 10; ++i) 8919 ++a; 8920 } 8921 #pragma omp target teams distribute simd 8922 for (int i = 0; i < 10; ++i) { 8923 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8924 for (int i = 0; i < 10; ++i) 8925 ++a; 8926 } 8927 #pragma omp target teams distribute simd 8928 for (int i = 0; i < 10; ++i) { 8929 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8930 for (int i = 0; i < 10; ++i) 8931 ; 8932 } 8933 #pragma omp target teams distribute simd 8934 for (int i = 0; i < 10; ++i) { 8935 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8936 a++; 8937 } 8938 #pragma omp target teams distribute simd 8939 for (int i = 0; i < 10; ++i) { 8940 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8941 for (int i = 0; i < 10; ++i) 8942 ; 8943 } 8944 #pragma omp target teams distribute simd 8945 for (int i = 0; i < 10; ++i) { 8946 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8947 for (int i = 0; i < 10; ++i) 8948 ; 8949 } 8950 #pragma omp target teams distribute simd 8951 for (int i = 0; i < 10; ++i) { 8952 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8953 for (int i = 0; i < 10; ++i) 8954 ; 8955 } 8956 #pragma omp target teams distribute simd 8957 for (int i = 0; i < 10; ++i) { 8958 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8959 for (int i = 0; i < 10; ++i) 8960 ; 8961 } 8962 8963 } 8964 8965 void foo() { 8966 int a = 0; 8967 // PARALLEL DIRECTIVE 8968 #pragma omp parallel 8969 #pragma omp for 8970 for (int i = 0; i < 10; ++i) 8971 ; 8972 #pragma omp parallel 8973 #pragma omp simd 8974 for (int i = 0; i < 10; ++i) 8975 ; 8976 #pragma omp parallel 8977 #pragma omp for simd 8978 for (int i = 0; i < 10; ++i) 8979 ; 8980 #pragma omp parallel 8981 #pragma omp sections 8982 { 8983 bar(); 8984 } 8985 #pragma omp parallel 8986 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 8987 { 8988 bar(); 8989 } 8990 #pragma omp parallel 8991 #pragma omp sections 8992 { 8993 bar(); 8994 } 8995 #pragma omp parallel 8996 #pragma omp single 8997 bar(); 8998 #pragma omp parallel 8999 #pragma omp master 9000 bar(); 9001 #pragma omp parallel 9002 #pragma omp critical 9003 bar(); 9004 #pragma omp parallel 9005 #pragma omp parallel for 9006 for (int i = 0; i < 10; ++i) 9007 ; 9008 #pragma omp parallel 9009 #pragma omp parallel for simd 9010 for (int i = 0; i < 10; ++i) 9011 ; 9012 #pragma omp parallel 9013 #pragma omp parallel sections 9014 { 9015 bar(); 9016 } 9017 #pragma omp parallel 9018 #pragma omp task 9019 { 9020 bar(); 9021 } 9022 #pragma omp parallel 9023 { 9024 #pragma omp taskyield 9025 bar(); 9026 } 9027 #pragma omp parallel 9028 { 9029 #pragma omp barrier 9030 bar(); 9031 } 9032 #pragma omp parallel 9033 { 9034 #pragma omp taskwait 9035 bar(); 9036 } 9037 #pragma omp parallel 9038 { 9039 #pragma omp flush 9040 bar(); 9041 } 9042 #pragma omp parallel 9043 { 9044 #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?}} 9045 bar(); 9046 } 9047 #pragma omp parallel 9048 { 9049 #pragma omp atomic 9050 ++a; 9051 } 9052 #pragma omp parallel 9053 { 9054 #pragma omp target 9055 ++a; 9056 } 9057 #pragma omp parallel 9058 { 9059 #pragma omp target parallel 9060 ++a; 9061 } 9062 #pragma omp parallel 9063 #pragma omp target parallel for 9064 for (int i = 0; i < 10; ++i) 9065 ; 9066 #pragma omp parallel 9067 { 9068 #pragma omp target enter data map(to: a) 9069 ++a; 9070 } 9071 #pragma omp parallel 9072 { 9073 #pragma omp target exit data map(from: a) 9074 ++a; 9075 } 9076 #pragma omp parallel 9077 { 9078 #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?}} 9079 ++a; 9080 } 9081 #pragma omp parallel 9082 { 9083 #pragma omp taskloop 9084 for (int i = 0; i < 10; ++i) 9085 ++a; 9086 } 9087 #pragma omp parallel 9088 { 9089 #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?}} 9090 for (int i = 0; i < 10; ++i) 9091 ; 9092 } 9093 #pragma omp parallel 9094 { 9095 #pragma omp target update to(a) 9096 a++; 9097 } 9098 #pragma omp parallel 9099 { 9100 #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?}} 9101 for (int i = 0; i < 10; ++i) 9102 ; 9103 } 9104 #pragma omp parallel 9105 { 9106 #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?}} 9107 for (int i = 0; i < 10; ++i) 9108 ; 9109 } 9110 #pragma omp parallel 9111 { 9112 #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?}} 9113 for (int i = 0; i < 10; ++i) 9114 ; 9115 } 9116 #pragma omp parallel 9117 { 9118 #pragma omp target simd // OK 9119 for (int i = 0; i < 10; ++i) 9120 ; 9121 } 9122 #pragma omp parallel 9123 { 9124 #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?}} 9125 for (int i = 0; i < 10; ++i) 9126 ; 9127 } 9128 #pragma omp parallel 9129 { 9130 #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?}} 9131 for (int i = 0; i < 10; ++i) 9132 ; 9133 } 9134 #pragma omp parallel 9135 { 9136 #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?}} 9137 for (int i = 0; i < 10; ++i) 9138 ; 9139 } 9140 #pragma omp parallel 9141 { 9142 #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?}} 9143 for (int i = 0; i < 10; ++i) 9144 ; 9145 } 9146 #pragma omp parallel 9147 { 9148 #pragma omp target teams // OK 9149 a++; 9150 } 9151 #pragma omp parallel 9152 { 9153 #pragma omp target teams distribute // OK 9154 for (int i = 0; i < 10; ++i) 9155 ; 9156 } 9157 #pragma omp parallel 9158 { 9159 #pragma omp target teams distribute parallel for // OK 9160 for (int i = 0; i < 10; ++i) 9161 ; 9162 } 9163 #pragma omp parallel 9164 { 9165 #pragma omp target teams distribute parallel for simd // OK 9166 for (int i = 0; i < 10; ++i) 9167 ; 9168 } 9169 #pragma omp parallel 9170 { 9171 #pragma omp target teams distribute simd // OK 9172 for (int i = 0; i < 10; ++i) 9173 ; 9174 } 9175 9176 // SIMD DIRECTIVE 9177 #pragma omp simd 9178 for (int i = 0; i < 10; ++i) { 9179 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9180 for (int i = 0; i < 10; ++i) 9181 ; 9182 } 9183 #pragma omp simd 9184 for (int i = 0; i < 10; ++i) { 9185 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9186 for (int i = 0; i < 10; ++i) 9187 ; 9188 } 9189 #pragma omp simd 9190 for (int i = 0; i < 10; ++i) { 9191 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9192 for (int i = 0; i < 10; ++i) 9193 ; 9194 } 9195 #pragma omp simd 9196 for (int i = 0; i < 10; ++i) { 9197 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9198 for (int i = 0; i < 10; ++i) 9199 ; 9200 } 9201 #pragma omp simd 9202 for (int i = 0; i < 10; ++i) { 9203 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9204 { 9205 bar(); 9206 } 9207 } 9208 #pragma omp simd 9209 for (int i = 0; i < 10; ++i) { 9210 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9211 { 9212 bar(); 9213 } 9214 } 9215 #pragma omp simd 9216 for (int i = 0; i < 10; ++i) { 9217 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9218 bar(); 9219 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9220 bar(); 9221 } 9222 #pragma omp simd 9223 for (int i = 0; i < 10; ++i) { 9224 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9225 bar(); 9226 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9227 bar(); 9228 } 9229 #pragma omp simd 9230 for (int i = 0; i < 10; ++i) { 9231 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9232 for (int i = 0; i < 10; ++i) 9233 ; 9234 } 9235 #pragma omp simd 9236 for (int i = 0; i < 10; ++i) { 9237 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9238 for (int i = 0; i < 10; ++i) 9239 ; 9240 } 9241 #pragma omp simd 9242 for (int i = 0; i < 10; ++i) { 9243 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9244 { 9245 bar(); 9246 } 9247 } 9248 #pragma omp simd 9249 for (int i = 0; i < 10; ++i) { 9250 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9251 { 9252 bar(); 9253 } 9254 } 9255 #pragma omp simd 9256 for (int i = 0; i < 10; ++i) { 9257 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9258 bar(); 9259 } 9260 #pragma omp simd 9261 for (int i = 0; i < 10; ++i) { 9262 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9263 bar(); 9264 } 9265 #pragma omp simd 9266 for (int i = 0; i < 10; ++i) { 9267 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9268 bar(); 9269 } 9270 #pragma omp simd 9271 for (int i = 0; i < 10; ++i) { 9272 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9273 bar(); 9274 } 9275 #pragma omp simd 9276 for (int i = 0; i < 10; ++i) { 9277 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9278 bar(); 9279 } 9280 #pragma omp simd 9281 for (int i = 0; i < 10; ++i) { 9282 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9283 ++a; 9284 } 9285 #pragma omp simd 9286 for (int i = 0; i < 10; ++i) { 9287 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9288 ++a; 9289 } 9290 #pragma omp simd 9291 for (int i = 0; i < 10; ++i) { 9292 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9293 ++a; 9294 } 9295 #pragma omp simd 9296 for (int i = 0; i < 10; ++i) { 9297 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9298 for (int i = 0; i < 10; ++i) 9299 ; 9300 } 9301 #pragma omp simd 9302 for (int i = 0; i < 10; ++i) { 9303 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9304 ++a; 9305 } 9306 #pragma omp simd 9307 for (int i = 0; i < 10; ++i) { 9308 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9309 ++a; 9310 } 9311 #pragma omp simd 9312 for (int i = 0; i < 10; ++i) { 9313 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9314 ++a; 9315 } 9316 #pragma omp simd 9317 for (int i = 0; i < 10; ++i) { 9318 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9319 for (int i = 0; i < 10; ++i) 9320 ++a; 9321 } 9322 #pragma omp simd 9323 for (int i = 0; i < 10; ++i) { 9324 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9325 for (int j = 0; j < 10; ++j) 9326 ; 9327 } 9328 #pragma omp simd 9329 for (int i = 0; i < 10; ++i) { 9330 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9331 a++; 9332 } 9333 #pragma omp simd 9334 for (int i = 0; i < 10; ++i) { 9335 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9336 for (int j = 0; j < 10; ++j) 9337 ; 9338 } 9339 #pragma omp simd 9340 for (int i = 0; i < 10; ++i) { 9341 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9342 for (int j = 0; j < 10; ++j) 9343 ; 9344 } 9345 #pragma omp simd 9346 for (int i = 0; i < 10; ++i) { 9347 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9348 for (int j = 0; j < 10; ++j) 9349 ; 9350 } 9351 #pragma omp simd 9352 for (int i = 0; i < 10; ++i) { 9353 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9354 for (int j = 0; j < 10; ++j) 9355 ; 9356 } 9357 #pragma omp simd 9358 for (int i = 0; i < 10; ++i) { 9359 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9360 for (int j = 0; j < 10; ++j) 9361 ; 9362 } 9363 #pragma omp simd 9364 for (int i = 0; i < 10; ++i) { 9365 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9366 for (int j = 0; j < 10; ++j) 9367 ; 9368 } 9369 #pragma omp simd 9370 for (int i = 0; i < 10; ++i) { 9371 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9372 for (int j = 0; j < 10; ++j) 9373 ; 9374 } 9375 #pragma omp simd 9376 for (int i = 0; i < 10; ++i) { 9377 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9378 for (int j = 0; j < 10; ++j) 9379 ; 9380 } 9381 #pragma omp simd 9382 for (int i = 0; i < 10; ++i) { 9383 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9384 a++; 9385 } 9386 #pragma omp simd 9387 for (int i = 0; i < 10; ++i) { 9388 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9389 for (int j = 0; j < 10; ++j) 9390 ; 9391 } 9392 #pragma omp simd 9393 for (int i = 0; i < 10; ++i) { 9394 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9395 for (int j = 0; j < 10; ++j) 9396 ; 9397 } 9398 #pragma omp simd 9399 for (int i = 0; i < 10; ++i) { 9400 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9401 for (int j = 0; j < 10; ++j) 9402 ; 9403 } 9404 #pragma omp simd 9405 for (int i = 0; i < 10; ++i) { 9406 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9407 for (int j = 0; j < 10; ++j) 9408 ; 9409 } 9410 9411 // FOR DIRECTIVE 9412 #pragma omp for 9413 for (int i = 0; i < 10; ++i) { 9414 #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?}} 9415 for (int i = 0; i < 10; ++i) 9416 ; 9417 } 9418 #pragma omp for 9419 for (int i = 0; i < 10; ++i) { 9420 #pragma omp simd 9421 for (int i = 0; i < 10; ++i) 9422 ; 9423 } 9424 #pragma omp for 9425 for (int i = 0; i < 10; ++i) { 9426 #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?}} 9427 for (int i = 0; i < 10; ++i) 9428 ; 9429 } 9430 #pragma omp for 9431 for (int i = 0; i < 10; ++i) { 9432 #pragma omp parallel 9433 for (int i = 0; i < 10; ++i) 9434 ; 9435 } 9436 #pragma omp for 9437 for (int i = 0; i < 10; ++i) { 9438 #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?}} 9439 { 9440 bar(); 9441 } 9442 } 9443 #pragma omp for 9444 for (int i = 0; i < 10; ++i) { 9445 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 9446 { 9447 bar(); 9448 } 9449 } 9450 #pragma omp for 9451 for (int i = 0; i < 10; ++i) { 9452 #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?}} 9453 bar(); 9454 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 9455 bar(); 9456 #pragma omp critical 9457 bar(); 9458 } 9459 #pragma omp for 9460 for (int i = 0; i < 10; ++i) { 9461 #pragma omp parallel 9462 { 9463 #pragma omp single // OK 9464 { 9465 bar(); 9466 } 9467 #pragma omp for // OK 9468 for (int i = 0; i < 10; ++i) 9469 ; 9470 #pragma omp for simd // OK 9471 for (int i = 0; i < 10; ++i) 9472 ; 9473 #pragma omp sections // OK 9474 { 9475 bar(); 9476 } 9477 } 9478 } 9479 #pragma omp for 9480 for (int i = 0; i < 10; ++i) { 9481 #pragma omp parallel for 9482 for (int i = 0; i < 10; ++i) 9483 ; 9484 } 9485 #pragma omp for 9486 for (int i = 0; i < 10; ++i) { 9487 #pragma omp parallel for simd 9488 for (int i = 0; i < 10; ++i) 9489 ; 9490 } 9491 #pragma omp for 9492 for (int i = 0; i < 10; ++i) { 9493 #pragma omp parallel sections 9494 { 9495 bar(); 9496 } 9497 } 9498 #pragma omp for 9499 for (int i = 0; i < 10; ++i) { 9500 #pragma omp task 9501 { 9502 bar(); 9503 } 9504 } 9505 #pragma omp for 9506 for (int i = 0; i < 10; ++i) { 9507 #pragma omp taskyield 9508 bar(); 9509 } 9510 #pragma omp for 9511 for (int i = 0; i < 10; ++i) { 9512 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 9513 bar(); 9514 } 9515 #pragma omp for 9516 for (int i = 0; i < 10; ++i) { 9517 #pragma omp taskwait 9518 bar(); 9519 } 9520 #pragma omp for 9521 for (int i = 0; i < 10; ++i) { 9522 #pragma omp flush 9523 bar(); 9524 } 9525 #pragma omp for 9526 for (int i = 0; i < 10; ++i) { 9527 #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?}} 9528 bar(); 9529 } 9530 #pragma omp for ordered 9531 for (int i = 0; i < 10; ++i) { 9532 #pragma omp ordered // OK 9533 bar(); 9534 } 9535 #pragma omp for 9536 for (int i = 0; i < 10; ++i) { 9537 #pragma omp atomic 9538 ++a; 9539 } 9540 #pragma omp for 9541 for (int i = 0; i < 10; ++i) { 9542 #pragma omp target 9543 ++a; 9544 } 9545 #pragma omp for 9546 for (int i = 0; i < 10; ++i) { 9547 #pragma omp target parallel 9548 ++a; 9549 } 9550 #pragma omp for 9551 for (int i = 0; i < 10; ++i) { 9552 #pragma omp target parallel for 9553 for (int i = 0; i < 10; ++i) 9554 ; 9555 } 9556 #pragma omp for 9557 for (int i = 0; i < 10; ++i) { 9558 #pragma omp target enter data map(to: a) 9559 ++a; 9560 } 9561 #pragma omp for 9562 for (int i = 0; i < 10; ++i) { 9563 #pragma omp target exit data map(from: a) 9564 ++a; 9565 } 9566 #pragma omp for 9567 for (int i = 0; i < 10; ++i) { 9568 #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?}} 9569 ++a; 9570 } 9571 #pragma omp for 9572 for (int i = 0; i < 10; ++i) { 9573 #pragma omp taskloop 9574 for (int i = 0; i < 10; ++i) 9575 ++a; 9576 } 9577 #pragma omp for 9578 for (int i = 0; i < 10; ++i) { 9579 #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?}} 9580 for (int j = 0; j < 10; ++j) 9581 ; 9582 } 9583 #pragma omp for 9584 for (int i = 0; i < 10; ++i) { 9585 #pragma omp target update to(a) 9586 ++a; 9587 } 9588 #pragma omp for 9589 for (int i = 0; i < 10; ++i) { 9590 #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?}} 9591 for (int j = 0; j < 10; ++j) 9592 ; 9593 } 9594 #pragma omp for 9595 for (int i = 0; i < 10; ++i) { 9596 #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?}} 9597 for (int j = 0; j < 10; ++j) 9598 ; 9599 } 9600 #pragma omp for 9601 for (int i = 0; i < 10; ++i) { 9602 #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?}} 9603 for (int j = 0; j < 10; ++j) 9604 ; 9605 } 9606 #pragma omp for 9607 for (int i = 0; i < 10; ++i) { 9608 #pragma omp target simd // OK 9609 for (int j = 0; j < 10; ++j) 9610 ; 9611 } 9612 #pragma omp for 9613 for (int i = 0; i < 10; ++i) { 9614 #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?}} 9615 for (int j = 0; j < 10; ++j) 9616 ; 9617 } 9618 #pragma omp for 9619 for (int i = 0; i < 10; ++i) { 9620 #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?}} 9621 for (int j = 0; j < 10; ++j) 9622 ; 9623 } 9624 #pragma omp for 9625 for (int i = 0; i < 10; ++i) { 9626 #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?}} 9627 for (int j = 0; j < 10; ++j) 9628 ; 9629 } 9630 #pragma omp for 9631 for (int i = 0; i < 10; ++i) { 9632 #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?}} 9633 for (int j = 0; j < 10; ++j) 9634 ; 9635 } 9636 #pragma omp for 9637 for (int i = 0; i < 10; ++i) { 9638 #pragma omp target teams // OK 9639 a++; 9640 } 9641 #pragma omp for 9642 for (int i = 0; i < 10; ++i) { 9643 #pragma omp target teams distribute // OK 9644 for (int j = 0; j < 10; ++j) 9645 ; 9646 } 9647 #pragma omp for 9648 for (int i = 0; i < 10; ++i) { 9649 #pragma omp target teams distribute parallel for // OK 9650 for (int j = 0; j < 10; ++j) 9651 ; 9652 } 9653 #pragma omp for 9654 for (int i = 0; i < 10; ++i) { 9655 #pragma omp target teams distribute parallel for simd // OK 9656 for (int j = 0; j < 10; ++j) 9657 ; 9658 } 9659 #pragma omp for 9660 for (int i = 0; i < 10; ++i) { 9661 #pragma omp target teams distribute simd // OK 9662 for (int j = 0; j < 10; ++j) 9663 ; 9664 } 9665 9666 // FOR SIMD DIRECTIVE 9667 #pragma omp for simd 9668 for (int i = 0; i < 10; ++i) { 9669 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9670 for (int i = 0; i < 10; ++i) 9671 ; 9672 } 9673 #pragma omp for simd 9674 for (int i = 0; i < 10; ++i) { 9675 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9676 for (int i = 0; i < 10; ++i) 9677 ; 9678 } 9679 #pragma omp for simd 9680 for (int i = 0; i < 10; ++i) { 9681 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9682 for (int i = 0; i < 10; ++i) 9683 ; 9684 } 9685 #pragma omp for simd 9686 for (int i = 0; i < 10; ++i) { 9687 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9688 for (int i = 0; i < 10; ++i) 9689 ; 9690 } 9691 #pragma omp for simd 9692 for (int i = 0; i < 10; ++i) { 9693 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9694 { 9695 bar(); 9696 } 9697 } 9698 #pragma omp for simd 9699 for (int i = 0; i < 10; ++i) { 9700 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9701 { 9702 bar(); 9703 } 9704 } 9705 #pragma omp for simd 9706 for (int i = 0; i < 10; ++i) { 9707 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9708 bar(); 9709 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9710 bar(); 9711 } 9712 #pragma omp for simd 9713 for (int i = 0; i < 10; ++i) { 9714 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9715 bar(); 9716 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9717 bar(); 9718 } 9719 #pragma omp for simd 9720 for (int i = 0; i < 10; ++i) { 9721 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9722 for (int i = 0; i < 10; ++i) 9723 ; 9724 } 9725 #pragma omp for simd 9726 for (int i = 0; i < 10; ++i) { 9727 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9728 for (int i = 0; i < 10; ++i) 9729 ; 9730 } 9731 #pragma omp for simd 9732 for (int i = 0; i < 10; ++i) { 9733 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9734 { 9735 bar(); 9736 } 9737 } 9738 #pragma omp for simd 9739 for (int i = 0; i < 10; ++i) { 9740 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9741 { 9742 bar(); 9743 } 9744 } 9745 #pragma omp for simd 9746 for (int i = 0; i < 10; ++i) { 9747 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9748 bar(); 9749 } 9750 #pragma omp for simd 9751 for (int i = 0; i < 10; ++i) { 9752 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9753 bar(); 9754 } 9755 #pragma omp for simd 9756 for (int i = 0; i < 10; ++i) { 9757 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9758 bar(); 9759 } 9760 #pragma omp for simd 9761 for (int i = 0; i < 10; ++i) { 9762 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9763 bar(); 9764 } 9765 #pragma omp for simd 9766 for (int i = 0; i < 10; ++i) { 9767 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9768 bar(); 9769 } 9770 #pragma omp for simd 9771 for (int i = 0; i < 10; ++i) { 9772 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9773 ++a; 9774 } 9775 #pragma omp for simd 9776 for (int i = 0; i < 10; ++i) { 9777 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9778 ++a; 9779 } 9780 #pragma omp for simd 9781 for (int i = 0; i < 10; ++i) { 9782 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9783 ++a; 9784 } 9785 #pragma omp for simd 9786 for (int i = 0; i < 10; ++i) { 9787 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9788 for (int i = 0; i < 10; ++i) 9789 ; 9790 } 9791 #pragma omp for simd 9792 for (int i = 0; i < 10; ++i) { 9793 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9794 ++a; 9795 } 9796 #pragma omp for simd 9797 for (int i = 0; i < 10; ++i) { 9798 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9799 ++a; 9800 } 9801 #pragma omp for simd 9802 for (int i = 0; i < 10; ++i) { 9803 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9804 ++a; 9805 } 9806 #pragma omp for simd 9807 for (int i = 0; i < 10; ++i) { 9808 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9809 for (int i = 0; i < 10; ++i) 9810 ++a; 9811 } 9812 #pragma omp for simd 9813 for (int i = 0; i < 10; ++i) { 9814 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9815 for (int j = 0; j < 10; ++j) 9816 ; 9817 } 9818 #pragma omp for simd 9819 for (int i = 0; i < 10; ++i) { 9820 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9821 ++a; 9822 } 9823 #pragma omp for simd 9824 for (int i = 0; i < 10; ++i) { 9825 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9826 for (int j = 0; j < 10; ++j) 9827 ; 9828 } 9829 #pragma omp for simd 9830 for (int i = 0; i < 10; ++i) { 9831 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9832 for (int j = 0; j < 10; ++j) 9833 ; 9834 } 9835 #pragma omp for simd 9836 for (int i = 0; i < 10; ++i) { 9837 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9838 for (int j = 0; j < 10; ++j) 9839 ; 9840 } 9841 #pragma omp for simd 9842 for (int i = 0; i < 10; ++i) { 9843 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9844 for (int j = 0; j < 10; ++j) 9845 ; 9846 } 9847 #pragma omp for simd 9848 for (int i = 0; i < 10; ++i) { 9849 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9850 for (int j = 0; j < 10; ++j) 9851 ; 9852 } 9853 #pragma omp for simd 9854 for (int i = 0; i < 10; ++i) { 9855 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9856 for (int j = 0; j < 10; ++j) 9857 ; 9858 } 9859 #pragma omp for simd 9860 for (int i = 0; i < 10; ++i) { 9861 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9862 for (int j = 0; j < 10; ++j) 9863 ; 9864 } 9865 #pragma omp for simd 9866 for (int i = 0; i < 10; ++i) { 9867 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9868 for (int j = 0; j < 10; ++j) 9869 ; 9870 } 9871 #pragma omp for simd 9872 for (int i = 0; i < 10; ++i) { 9873 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9874 a++; 9875 } 9876 #pragma omp for simd 9877 for (int i = 0; i < 10; ++i) { 9878 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9879 for (int j = 0; j < 10; ++j) 9880 ; 9881 } 9882 #pragma omp for simd 9883 for (int i = 0; i < 10; ++i) { 9884 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9885 for (int j = 0; j < 10; ++j) 9886 ; 9887 } 9888 #pragma omp for simd 9889 for (int i = 0; i < 10; ++i) { 9890 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9891 for (int j = 0; j < 10; ++j) 9892 ; 9893 } 9894 #pragma omp for simd 9895 for (int i = 0; i < 10; ++i) { 9896 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9897 for (int j = 0; j < 10; ++j) 9898 ; 9899 } 9900 9901 // SECTIONS DIRECTIVE 9902 #pragma omp sections 9903 { 9904 #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?}} 9905 for (int i = 0; i < 10; ++i) 9906 ; 9907 } 9908 #pragma omp sections 9909 { 9910 #pragma omp simd 9911 for (int i = 0; i < 10; ++i) 9912 ; 9913 } 9914 #pragma omp sections 9915 { 9916 #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?}} 9917 for (int i = 0; i < 10; ++i) 9918 ; 9919 } 9920 #pragma omp sections 9921 { 9922 #pragma omp parallel 9923 for (int i = 0; i < 10; ++i) 9924 ; 9925 } 9926 #pragma omp sections 9927 { 9928 #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?}} 9929 { 9930 bar(); 9931 } 9932 } 9933 #pragma omp sections 9934 { 9935 #pragma omp section 9936 { 9937 bar(); 9938 } 9939 } 9940 #pragma omp sections 9941 { 9942 #pragma omp critical 9943 bar(); 9944 #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?}} 9945 bar(); 9946 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 9947 bar(); 9948 } 9949 #pragma omp sections 9950 { 9951 #pragma omp parallel 9952 { 9953 #pragma omp single // OK 9954 { 9955 bar(); 9956 } 9957 #pragma omp for // OK 9958 for (int i = 0; i < 10; ++i) 9959 ; 9960 #pragma omp for simd // OK 9961 for (int i = 0; i < 10; ++i) 9962 ; 9963 #pragma omp sections // OK 9964 { 9965 bar(); 9966 } 9967 } 9968 } 9969 #pragma omp sections 9970 { 9971 #pragma omp parallel for 9972 for (int i = 0; i < 10; ++i) 9973 ; 9974 } 9975 #pragma omp sections 9976 { 9977 #pragma omp parallel for simd 9978 for (int i = 0; i < 10; ++i) 9979 ; 9980 } 9981 #pragma omp sections 9982 { 9983 #pragma omp parallel sections 9984 { 9985 bar(); 9986 } 9987 } 9988 #pragma omp sections 9989 { 9990 #pragma omp task 9991 { 9992 bar(); 9993 } 9994 } 9995 #pragma omp sections 9996 { 9997 #pragma omp taskyield 9998 } 9999 #pragma omp sections 10000 { 10001 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 10002 bar(); 10003 } 10004 #pragma omp sections 10005 { 10006 #pragma omp taskwait 10007 } 10008 #pragma omp sections 10009 { 10010 #pragma omp flush 10011 } 10012 #pragma omp sections 10013 { 10014 #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?}} 10015 bar(); 10016 } 10017 #pragma omp sections 10018 { 10019 #pragma omp atomic 10020 ++a; 10021 } 10022 #pragma omp sections 10023 { 10024 #pragma omp target 10025 ++a; 10026 } 10027 #pragma omp sections 10028 { 10029 #pragma omp target parallel 10030 ++a; 10031 } 10032 #pragma omp sections 10033 { 10034 #pragma omp target parallel for 10035 for (int i = 0; i < 10; ++i) 10036 ; 10037 } 10038 #pragma omp sections 10039 { 10040 #pragma omp target enter data map(to: a) 10041 } 10042 #pragma omp sections 10043 { 10044 #pragma omp target exit data map(from: a) 10045 } 10046 #pragma omp sections 10047 { 10048 #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?}} 10049 ++a; 10050 } 10051 #pragma omp sections 10052 { 10053 #pragma omp taskloop 10054 for (int i = 0; i < 10; ++i) 10055 ++a; 10056 } 10057 #pragma omp sections 10058 { 10059 #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?}} 10060 for (int i = 0; i < 10; ++i) 10061 ; 10062 } 10063 #pragma omp sections 10064 { 10065 #pragma omp target update to(a) 10066 } 10067 #pragma omp sections 10068 { 10069 #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?}} 10070 for (int i = 0; i < 10; ++i) 10071 ; 10072 } 10073 #pragma omp sections 10074 { 10075 #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?}} 10076 for (int i = 0; i < 10; ++i) 10077 ; 10078 } 10079 #pragma omp sections 10080 { 10081 #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?}} 10082 for (int i = 0; i < 10; ++i) 10083 ; 10084 } 10085 #pragma omp sections 10086 { 10087 #pragma omp target simd // OK 10088 for (int i = 0; i < 10; ++i) 10089 ; 10090 } 10091 #pragma omp sections 10092 { 10093 #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?}} 10094 for (int i = 0; i < 10; ++i) 10095 ; 10096 } 10097 #pragma omp sections 10098 { 10099 #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?}} 10100 for (int i = 0; i < 10; ++i) 10101 ; 10102 } 10103 #pragma omp sections 10104 { 10105 #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?}} 10106 for (int i = 0; i < 10; ++i) 10107 ; 10108 } 10109 #pragma omp sections 10110 { 10111 #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?}} 10112 for (int i = 0; i < 10; ++i) 10113 ; 10114 } 10115 #pragma omp sections 10116 { 10117 #pragma omp target teams // OK 10118 a++; 10119 } 10120 #pragma omp sections 10121 { 10122 #pragma omp target teams distribute // OK 10123 for (int i = 0; i < 10; ++i) 10124 ; 10125 } 10126 #pragma omp sections 10127 { 10128 #pragma omp target teams distribute parallel for // OK 10129 for (int i = 0; i < 10; ++i) 10130 ; 10131 } 10132 #pragma omp sections 10133 { 10134 #pragma omp target teams distribute parallel for simd // OK 10135 for (int i = 0; i < 10; ++i) 10136 ; 10137 } 10138 #pragma omp sections 10139 { 10140 #pragma omp target teams distribute simd // OK 10141 for (int i = 0; i < 10; ++i) 10142 ; 10143 } 10144 10145 // SECTION DIRECTIVE 10146 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 10147 { 10148 bar(); 10149 } 10150 #pragma omp sections 10151 { 10152 #pragma omp section 10153 { 10154 #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?}} 10155 for (int i = 0; i < 10; ++i) 10156 ; 10157 } 10158 } 10159 #pragma omp sections 10160 { 10161 #pragma omp section 10162 { 10163 #pragma omp simd 10164 for (int i = 0; i < 10; ++i) 10165 ; 10166 } 10167 } 10168 #pragma omp sections 10169 { 10170 #pragma omp section 10171 { 10172 #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?}} 10173 for (int i = 0; i < 10; ++i) 10174 ; 10175 } 10176 } 10177 #pragma omp sections 10178 { 10179 #pragma omp section 10180 { 10181 #pragma omp parallel 10182 for (int i = 0; i < 10; ++i) 10183 ; 10184 } 10185 } 10186 #pragma omp sections 10187 { 10188 #pragma omp section 10189 { 10190 #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?}} 10191 { 10192 bar(); 10193 } 10194 } 10195 } 10196 #pragma omp sections 10197 { 10198 #pragma omp section 10199 { 10200 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 10201 { 10202 bar(); 10203 } 10204 } 10205 } 10206 #pragma omp sections 10207 { 10208 #pragma omp section 10209 { 10210 #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?}} 10211 bar(); 10212 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 10213 bar(); 10214 #pragma omp critical 10215 bar(); 10216 } 10217 } 10218 #pragma omp sections 10219 { 10220 #pragma omp section 10221 { 10222 #pragma omp parallel 10223 { 10224 #pragma omp single // OK 10225 { 10226 bar(); 10227 } 10228 #pragma omp for // OK 10229 for (int i = 0; i < 10; ++i) 10230 ; 10231 #pragma omp for simd // OK 10232 for (int i = 0; i < 10; ++i) 10233 ; 10234 #pragma omp sections // OK 10235 { 10236 bar(); 10237 } 10238 } 10239 } 10240 } 10241 #pragma omp sections 10242 { 10243 #pragma omp section 10244 { 10245 #pragma omp parallel for 10246 for (int i = 0; i < 10; ++i) 10247 ; 10248 } 10249 } 10250 #pragma omp sections 10251 { 10252 #pragma omp section 10253 { 10254 #pragma omp parallel for simd 10255 for (int i = 0; i < 10; ++i) 10256 ; 10257 } 10258 } 10259 #pragma omp sections 10260 { 10261 #pragma omp section 10262 { 10263 #pragma omp parallel sections 10264 { 10265 bar(); 10266 } 10267 } 10268 } 10269 #pragma omp sections 10270 { 10271 #pragma omp section 10272 { 10273 #pragma omp task 10274 { 10275 bar(); 10276 } 10277 } 10278 } 10279 #pragma omp sections 10280 { 10281 #pragma omp section 10282 { 10283 #pragma omp taskyield 10284 bar(); 10285 } 10286 } 10287 #pragma omp sections 10288 { 10289 #pragma omp section 10290 { 10291 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 10292 bar(); 10293 } 10294 } 10295 #pragma omp sections 10296 { 10297 #pragma omp section 10298 { 10299 #pragma omp taskwait 10300 bar(); 10301 } 10302 } 10303 #pragma omp sections 10304 { 10305 #pragma omp section 10306 { 10307 #pragma omp flush 10308 bar(); 10309 } 10310 } 10311 #pragma omp sections 10312 { 10313 #pragma omp section 10314 { 10315 #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?}} 10316 bar(); 10317 } 10318 } 10319 #pragma omp sections 10320 { 10321 #pragma omp section 10322 { 10323 #pragma omp atomic 10324 ++a; 10325 } 10326 } 10327 #pragma omp sections 10328 { 10329 #pragma omp section 10330 { 10331 #pragma omp target 10332 ++a; 10333 } 10334 } 10335 #pragma omp sections 10336 { 10337 #pragma omp section 10338 { 10339 #pragma omp target parallel 10340 ++a; 10341 } 10342 } 10343 #pragma omp sections 10344 { 10345 #pragma omp section 10346 { 10347 #pragma omp target parallel for 10348 for (int i = 0; i < 10; ++i) 10349 ; 10350 } 10351 } 10352 #pragma omp sections 10353 { 10354 #pragma omp section 10355 { 10356 #pragma omp target enter data map(to: a) 10357 ++a; 10358 } 10359 } 10360 #pragma omp sections 10361 { 10362 #pragma omp section 10363 { 10364 #pragma omp target exit data map(from: a) 10365 ++a; 10366 } 10367 } 10368 #pragma omp sections 10369 { 10370 #pragma omp section 10371 { 10372 #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?}} 10373 ++a; 10374 } 10375 } 10376 #pragma omp sections 10377 { 10378 #pragma omp section 10379 { 10380 #pragma omp taskloop 10381 for (int i = 0; i < 10; ++i) 10382 ++a; 10383 } 10384 } 10385 #pragma omp sections 10386 { 10387 #pragma omp section 10388 #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?}} 10389 for (int i = 0; i < 10; ++i) 10390 ; 10391 } 10392 #pragma omp sections 10393 { 10394 #pragma omp section 10395 { 10396 #pragma omp target update to(a) 10397 a++; 10398 } 10399 } 10400 #pragma omp sections 10401 { 10402 #pragma omp section 10403 #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?}} 10404 for (int i = 0; i < 10; ++i) 10405 ; 10406 } 10407 #pragma omp sections 10408 { 10409 #pragma omp section 10410 #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?}} 10411 for (int i = 0; i < 10; ++i) 10412 ; 10413 } 10414 #pragma omp sections 10415 { 10416 #pragma omp section 10417 #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?}} 10418 for (int i = 0; i < 10; ++i) 10419 ; 10420 } 10421 #pragma omp sections 10422 { 10423 #pragma omp section 10424 #pragma omp target simd // OK 10425 for (int i = 0; i < 10; ++i) 10426 ; 10427 } 10428 #pragma omp sections 10429 { 10430 #pragma omp section 10431 #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?}} 10432 for (int i = 0; i < 10; ++i) 10433 ; 10434 } 10435 #pragma omp sections 10436 { 10437 #pragma omp section 10438 #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?}} 10439 for (int i = 0; i < 10; ++i) 10440 ; 10441 } 10442 #pragma omp sections 10443 { 10444 #pragma omp section 10445 #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?}} 10446 for (int i = 0; i < 10; ++i) 10447 ; 10448 } 10449 #pragma omp sections 10450 { 10451 #pragma omp section 10452 #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?}} 10453 for (int i = 0; i < 10; ++i) 10454 ; 10455 } 10456 #pragma omp sections 10457 { 10458 #pragma omp section 10459 #pragma omp target teams // OK 10460 a++; 10461 } 10462 #pragma omp sections 10463 { 10464 #pragma omp section 10465 #pragma omp target teams distribute // OK 10466 for (int i = 0; i < 10; ++i) 10467 ; 10468 } 10469 #pragma omp sections 10470 { 10471 #pragma omp section 10472 #pragma omp target teams distribute parallel for // OK 10473 for (int i = 0; i < 10; ++i) 10474 ; 10475 } 10476 #pragma omp sections 10477 { 10478 #pragma omp section 10479 #pragma omp target teams distribute parallel for simd // OK 10480 for (int i = 0; i < 10; ++i) 10481 ; 10482 } 10483 #pragma omp sections 10484 { 10485 #pragma omp section 10486 #pragma omp target teams distribute simd // OK 10487 for (int i = 0; i < 10; ++i) 10488 ; 10489 } 10490 10491 // SINGLE DIRECTIVE 10492 #pragma omp single 10493 { 10494 #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?}} 10495 for (int i = 0; i < 10; ++i) 10496 ; 10497 } 10498 #pragma omp single 10499 { 10500 #pragma omp simd 10501 for (int i = 0; i < 10; ++i) 10502 ; 10503 } 10504 #pragma omp single 10505 { 10506 #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?}} 10507 for (int i = 0; i < 10; ++i) 10508 ; 10509 } 10510 #pragma omp single 10511 { 10512 #pragma omp parallel 10513 for (int i = 0; i < 10; ++i) 10514 ; 10515 } 10516 #pragma omp single 10517 { 10518 #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?}} 10519 { 10520 bar(); 10521 } 10522 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 10523 bar(); 10524 #pragma omp critical 10525 bar(); 10526 } 10527 #pragma omp single 10528 { 10529 #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?}} 10530 { 10531 bar(); 10532 } 10533 } 10534 #pragma omp single 10535 { 10536 #pragma omp parallel 10537 { 10538 #pragma omp single // OK 10539 { 10540 bar(); 10541 } 10542 #pragma omp for // OK 10543 for (int i = 0; i < 10; ++i) 10544 ; 10545 #pragma omp for simd // OK 10546 for (int i = 0; i < 10; ++i) 10547 ; 10548 #pragma omp sections // OK 10549 { 10550 bar(); 10551 } 10552 } 10553 } 10554 #pragma omp single 10555 { 10556 #pragma omp parallel for 10557 for (int i = 0; i < 10; ++i) 10558 ; 10559 } 10560 #pragma omp single 10561 { 10562 #pragma omp parallel for simd 10563 for (int i = 0; i < 10; ++i) 10564 ; 10565 } 10566 #pragma omp single 10567 { 10568 #pragma omp parallel sections 10569 { 10570 bar(); 10571 } 10572 } 10573 #pragma omp single 10574 { 10575 #pragma omp task 10576 { 10577 bar(); 10578 } 10579 } 10580 #pragma omp single 10581 { 10582 #pragma omp taskyield 10583 bar(); 10584 } 10585 #pragma omp single 10586 { 10587 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 10588 bar(); 10589 } 10590 #pragma omp single 10591 { 10592 #pragma omp taskwait 10593 bar(); 10594 } 10595 #pragma omp single 10596 { 10597 #pragma omp flush 10598 bar(); 10599 } 10600 #pragma omp single 10601 { 10602 #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?}} 10603 bar(); 10604 } 10605 #pragma omp single 10606 { 10607 #pragma omp atomic 10608 ++a; 10609 } 10610 #pragma omp single 10611 { 10612 #pragma omp target 10613 ++a; 10614 } 10615 #pragma omp single 10616 { 10617 #pragma omp target parallel 10618 ++a; 10619 } 10620 #pragma omp single 10621 { 10622 #pragma omp target parallel for 10623 for (int i = 0; i < 10; ++i) 10624 ; 10625 } 10626 #pragma omp single 10627 { 10628 #pragma omp target enter data map(to: a) 10629 ++a; 10630 } 10631 #pragma omp single 10632 { 10633 #pragma omp target exit data map(from: a) 10634 ++a; 10635 } 10636 #pragma omp single 10637 { 10638 #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?}} 10639 ++a; 10640 } 10641 #pragma omp single 10642 { 10643 #pragma omp taskloop 10644 for (int i = 0; i < 10; ++i) 10645 ++a; 10646 } 10647 #pragma omp single 10648 { 10649 #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?}} 10650 for (int i = 0; i < 10; ++i) 10651 ; 10652 } 10653 #pragma omp single 10654 { 10655 #pragma omp target update to(a) 10656 a++; 10657 } 10658 #pragma omp single 10659 { 10660 #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?}} 10661 for (int i = 0; i < 10; ++i) 10662 ; 10663 } 10664 #pragma omp single 10665 { 10666 #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?}} 10667 for (int i = 0; i < 10; ++i) 10668 ; 10669 } 10670 #pragma omp single 10671 { 10672 #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?}} 10673 for (int i = 0; i < 10; ++i) 10674 ; 10675 } 10676 #pragma omp single 10677 { 10678 #pragma omp target simd // OK 10679 for (int i = 0; i < 10; ++i) 10680 ; 10681 } 10682 #pragma omp single 10683 { 10684 #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?}} 10685 for (int i = 0; i < 10; ++i) 10686 ; 10687 } 10688 #pragma omp single 10689 { 10690 #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?}} 10691 for (int i = 0; i < 10; ++i) 10692 ; 10693 } 10694 #pragma omp single 10695 { 10696 #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?}} 10697 for (int i = 0; i < 10; ++i) 10698 ; 10699 } 10700 #pragma omp single 10701 { 10702 #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?}} 10703 for (int i = 0; i < 10; ++i) 10704 ; 10705 } 10706 #pragma omp single 10707 { 10708 #pragma omp target teams // oK 10709 a++; 10710 } 10711 #pragma omp single 10712 { 10713 #pragma omp target teams distribute // OK 10714 for (int i = 0; i < 10; ++i) 10715 ; 10716 } 10717 #pragma omp single 10718 { 10719 #pragma omp target teams distribute parallel for // OK 10720 for (int i = 0; i < 10; ++i) 10721 ; 10722 } 10723 #pragma omp single 10724 { 10725 #pragma omp target teams distribute parallel for simd // OK 10726 for (int i = 0; i < 10; ++i) 10727 ; 10728 } 10729 #pragma omp single 10730 { 10731 #pragma omp target teams distribute simd // OK 10732 for (int i = 0; i < 10; ++i) 10733 ; 10734 } 10735 10736 // MASTER DIRECTIVE 10737 #pragma omp master 10738 { 10739 #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?}} 10740 for (int i = 0; i < 10; ++i) 10741 ; 10742 } 10743 #pragma omp master 10744 { 10745 #pragma omp simd 10746 for (int i = 0; i < 10; ++i) 10747 ; 10748 } 10749 #pragma omp master 10750 { 10751 #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?}} 10752 for (int i = 0; i < 10; ++i) 10753 ; 10754 } 10755 #pragma omp master 10756 { 10757 #pragma omp parallel 10758 for (int i = 0; i < 10; ++i) 10759 ; 10760 } 10761 #pragma omp master 10762 { 10763 #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?}} 10764 { 10765 bar(); 10766 } 10767 } 10768 #pragma omp master 10769 { 10770 #pragma omp master // OK, though second 'master' is redundant 10771 { 10772 bar(); 10773 } 10774 } 10775 #pragma omp master 10776 { 10777 #pragma omp critical 10778 { 10779 bar(); 10780 } 10781 } 10782 #pragma omp master 10783 { 10784 #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?}} 10785 { 10786 bar(); 10787 } 10788 } 10789 #pragma omp master 10790 { 10791 #pragma omp parallel 10792 { 10793 #pragma omp master // OK 10794 { 10795 bar(); 10796 } 10797 #pragma omp for // OK 10798 for (int i = 0; i < 10; ++i) 10799 ; 10800 #pragma omp for simd // OK 10801 for (int i = 0; i < 10; ++i) 10802 ; 10803 #pragma omp sections // OK 10804 { 10805 bar(); 10806 } 10807 } 10808 } 10809 #pragma omp master 10810 { 10811 #pragma omp parallel for 10812 for (int i = 0; i < 10; ++i) 10813 ; 10814 } 10815 #pragma omp master 10816 { 10817 #pragma omp parallel for simd 10818 for (int i = 0; i < 10; ++i) 10819 ; 10820 } 10821 #pragma omp master 10822 { 10823 #pragma omp parallel sections 10824 { 10825 bar(); 10826 } 10827 } 10828 #pragma omp master 10829 { 10830 #pragma omp task 10831 { 10832 bar(); 10833 } 10834 } 10835 #pragma omp master 10836 { 10837 #pragma omp taskyield 10838 bar(); 10839 } 10840 #pragma omp master 10841 { 10842 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 10843 bar(); 10844 } 10845 #pragma omp master 10846 { 10847 #pragma omp taskwait 10848 bar(); 10849 } 10850 #pragma omp master 10851 { 10852 #pragma omp flush 10853 bar(); 10854 } 10855 #pragma omp master 10856 { 10857 #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?}} 10858 bar(); 10859 } 10860 #pragma omp master 10861 { 10862 #pragma omp atomic 10863 ++a; 10864 } 10865 #pragma omp master 10866 { 10867 #pragma omp target 10868 ++a; 10869 } 10870 #pragma omp master 10871 { 10872 #pragma omp target parallel 10873 ++a; 10874 } 10875 #pragma omp master 10876 { 10877 #pragma omp target parallel for 10878 for (int i = 0; i < 10; ++i) 10879 ; 10880 } 10881 #pragma omp master 10882 { 10883 #pragma omp target enter data map(to: a) 10884 ++a; 10885 } 10886 #pragma omp master 10887 { 10888 #pragma omp target exit data map(from: a) 10889 ++a; 10890 } 10891 #pragma omp master 10892 { 10893 #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?}} 10894 ++a; 10895 } 10896 #pragma omp master 10897 { 10898 #pragma omp taskloop 10899 for (int i = 0; i < 10; ++i) 10900 ++a; 10901 } 10902 #pragma omp master 10903 { 10904 #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?}} 10905 for (int i = 0; i < 10; ++i) 10906 ; 10907 } 10908 #pragma omp master 10909 { 10910 #pragma omp target update to(a) 10911 ++a; 10912 } 10913 #pragma omp master 10914 { 10915 #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?}} 10916 for (int i = 0; i < 10; ++i) 10917 ; 10918 } 10919 #pragma omp master 10920 { 10921 #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?}} 10922 for (int i = 0; i < 10; ++i) 10923 ; 10924 } 10925 #pragma omp master 10926 { 10927 #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?}} 10928 for (int i = 0; i < 10; ++i) 10929 ; 10930 } 10931 #pragma omp master 10932 { 10933 #pragma omp target simd // OK 10934 for (int i = 0; i < 10; ++i) 10935 ; 10936 } 10937 #pragma omp master 10938 { 10939 #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?}} 10940 for (int i = 0; i < 10; ++i) 10941 ; 10942 } 10943 #pragma omp master 10944 { 10945 #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?}} 10946 for (int i = 0; i < 10; ++i) 10947 ; 10948 } 10949 #pragma omp master 10950 { 10951 #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?}} 10952 for (int i = 0; i < 10; ++i) 10953 ; 10954 } 10955 #pragma omp master 10956 { 10957 #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?}} 10958 for (int i = 0; i < 10; ++i) 10959 ; 10960 } 10961 #pragma omp master 10962 { 10963 #pragma omp target teams // OK 10964 a++; 10965 } 10966 #pragma omp master 10967 { 10968 #pragma omp target teams distribute // OK 10969 for (int i = 0; i < 10; ++i) 10970 ; 10971 } 10972 #pragma omp master 10973 { 10974 #pragma omp target teams distribute parallel for // OK 10975 for (int i = 0; i < 10; ++i) 10976 ; 10977 } 10978 #pragma omp master 10979 { 10980 #pragma omp target teams distribute parallel for simd // OK 10981 for (int i = 0; i < 10; ++i) 10982 ; 10983 } 10984 #pragma omp master 10985 { 10986 #pragma omp target teams distribute simd // OK 10987 for (int i = 0; i < 10; ++i) 10988 ; 10989 } 10990 10991 // CRITICAL DIRECTIVE 10992 #pragma omp critical 10993 { 10994 #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?}} 10995 for (int i = 0; i < 10; ++i) 10996 ; 10997 } 10998 #pragma omp critical 10999 { 11000 #pragma omp simd 11001 for (int i = 0; i < 10; ++i) 11002 ; 11003 } 11004 #pragma omp critical 11005 { 11006 #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?}} 11007 for (int i = 0; i < 10; ++i) 11008 ; 11009 } 11010 #pragma omp critical 11011 { 11012 #pragma omp parallel 11013 for (int i = 0; i < 10; ++i) 11014 ; 11015 } 11016 #pragma omp critical 11017 { 11018 #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?}} 11019 { 11020 bar(); 11021 } 11022 } 11023 #pragma omp critical 11024 { 11025 #pragma omp master // OK, though second 'master' is redundant 11026 { 11027 bar(); 11028 } 11029 } 11030 #pragma omp critical 11031 { 11032 #pragma omp critical 11033 { 11034 bar(); 11035 } 11036 } 11037 #pragma omp critical 11038 { 11039 #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?}} 11040 { 11041 bar(); 11042 } 11043 } 11044 #pragma omp critical 11045 { 11046 #pragma omp parallel 11047 { 11048 #pragma omp master // OK 11049 { 11050 bar(); 11051 } 11052 #pragma omp for // OK 11053 for (int i = 0; i < 10; ++i) 11054 ; 11055 #pragma omp for simd // OK 11056 for (int i = 0; i < 10; ++i) 11057 ; 11058 #pragma omp sections // OK 11059 { 11060 bar(); 11061 } 11062 } 11063 } 11064 #pragma omp critical 11065 { 11066 #pragma omp parallel for 11067 for (int i = 0; i < 10; ++i) 11068 ; 11069 } 11070 #pragma omp critical 11071 { 11072 #pragma omp parallel for simd 11073 for (int i = 0; i < 10; ++i) 11074 ; 11075 } 11076 #pragma omp critical 11077 { 11078 #pragma omp parallel sections 11079 { 11080 bar(); 11081 } 11082 } 11083 #pragma omp critical 11084 { 11085 #pragma omp task 11086 { 11087 bar(); 11088 } 11089 } 11090 #pragma omp critical 11091 { 11092 #pragma omp taskyield 11093 bar(); 11094 } 11095 #pragma omp critical 11096 { 11097 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 11098 bar(); 11099 } 11100 #pragma omp critical 11101 { 11102 #pragma omp taskwait 11103 bar(); 11104 } 11105 #pragma omp critical(Belka) 11106 { 11107 #pragma omp critical(Strelka) 11108 bar(); 11109 } 11110 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 11111 { 11112 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 11113 { 11114 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 11115 { 11116 #pragma omp parallel 11117 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 11118 { 11119 bar(); 11120 } 11121 } 11122 } 11123 } 11124 #pragma omp critical 11125 { 11126 #pragma omp flush 11127 bar(); 11128 } 11129 #pragma omp critical 11130 { 11131 #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?}} 11132 bar(); 11133 } 11134 #pragma omp critical 11135 { 11136 #pragma omp atomic 11137 ++a; 11138 } 11139 #pragma omp critical 11140 { 11141 #pragma omp target 11142 ++a; 11143 } 11144 #pragma omp critical 11145 { 11146 #pragma omp target parallel 11147 ++a; 11148 } 11149 #pragma omp critical 11150 { 11151 #pragma omp target parallel for 11152 for (int i = 0; i < 10; ++i) 11153 ; 11154 } 11155 #pragma omp critical 11156 { 11157 #pragma omp target enter data map(to: a) 11158 ++a; 11159 } 11160 #pragma omp critical 11161 { 11162 #pragma omp target exit data map(from: a) 11163 ++a; 11164 } 11165 #pragma omp critical 11166 { 11167 #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?}} 11168 ++a; 11169 } 11170 #pragma omp critical 11171 { 11172 #pragma omp taskloop 11173 for (int i = 0; i < 10; ++i) 11174 ++a; 11175 } 11176 #pragma omp critical 11177 { 11178 #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?}} 11179 for (int i = 0; i < 10; ++i) 11180 ; 11181 } 11182 #pragma omp critical 11183 { 11184 #pragma omp target update to(a) 11185 a++; 11186 } 11187 #pragma omp critical 11188 { 11189 #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?}} 11190 for (int i = 0; i < 10; ++i) 11191 ; 11192 } 11193 #pragma omp critical 11194 { 11195 #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?}} 11196 for (int i = 0; i < 10; ++i) 11197 ; 11198 } 11199 #pragma omp critical 11200 { 11201 #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?}} 11202 for (int i = 0; i < 10; ++i) 11203 ; 11204 } 11205 #pragma omp critical 11206 { 11207 #pragma omp target simd // OK 11208 for (int i = 0; i < 10; ++i) 11209 ; 11210 } 11211 #pragma omp critical 11212 { 11213 #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?}} 11214 for (int i = 0; i < 10; ++i) 11215 ; 11216 } 11217 #pragma omp critical 11218 { 11219 #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?}} 11220 for (int i = 0; i < 10; ++i) 11221 ; 11222 } 11223 #pragma omp critical 11224 { 11225 #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?}} 11226 for (int i = 0; i < 10; ++i) 11227 ; 11228 } 11229 #pragma omp critical 11230 { 11231 #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?}} 11232 for (int i = 0; i < 10; ++i) 11233 ; 11234 } 11235 #pragma omp critical 11236 { 11237 #pragma omp target teams // OK 11238 a++; 11239 } 11240 #pragma omp critical 11241 { 11242 #pragma omp target teams distribute // OK 11243 for (int i = 0; i < 10; ++i) 11244 ; 11245 } 11246 #pragma omp critical 11247 { 11248 #pragma omp target teams distribute parallel for // OK 11249 for (int i = 0; i < 10; ++i) 11250 ; 11251 } 11252 #pragma omp critical 11253 { 11254 #pragma omp target teams distribute parallel for simd // OK 11255 for (int i = 0; i < 10; ++i) 11256 ; 11257 } 11258 #pragma omp critical 11259 { 11260 #pragma omp target teams distribute simd // OK 11261 for (int i = 0; i < 10; ++i) 11262 ; 11263 } 11264 11265 // PARALLEL FOR DIRECTIVE 11266 #pragma omp parallel for 11267 for (int i = 0; i < 10; ++i) { 11268 #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?}} 11269 for (int i = 0; i < 10; ++i) 11270 ; 11271 } 11272 #pragma omp parallel for 11273 for (int i = 0; i < 10; ++i) { 11274 #pragma omp simd 11275 for (int i = 0; i < 10; ++i) 11276 ; 11277 } 11278 #pragma omp parallel for 11279 for (int i = 0; i < 10; ++i) { 11280 #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?}} 11281 for (int i = 0; i < 10; ++i) 11282 ; 11283 } 11284 11285 #pragma omp parallel for 11286 for (int i = 0; i < 10; ++i) { 11287 #pragma omp parallel 11288 for (int i = 0; i < 10; ++i) 11289 ; 11290 } 11291 #pragma omp parallel for 11292 for (int i = 0; i < 10; ++i) { 11293 #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?}} 11294 { 11295 bar(); 11296 } 11297 } 11298 #pragma omp parallel for 11299 for (int i = 0; i < 10; ++i) { 11300 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 11301 { 11302 bar(); 11303 } 11304 } 11305 #pragma omp parallel for 11306 for (int i = 0; i < 10; ++i) { 11307 #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?}} 11308 { 11309 bar(); 11310 } 11311 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11312 { 11313 bar(); 11314 } 11315 #pragma omp critical 11316 { 11317 bar(); 11318 } 11319 } 11320 #pragma omp parallel for 11321 for (int i = 0; i < 10; ++i) { 11322 #pragma omp parallel 11323 { 11324 #pragma omp single // OK 11325 { 11326 bar(); 11327 } 11328 #pragma omp master // OK 11329 { 11330 bar(); 11331 } 11332 #pragma omp critical // OK 11333 { 11334 bar(); 11335 } 11336 #pragma omp for // OK 11337 for (int i = 0; i < 10; ++i) 11338 ; 11339 #pragma omp for simd // OK 11340 for (int i = 0; i < 10; ++i) 11341 ; 11342 #pragma omp sections // OK 11343 { 11344 bar(); 11345 } 11346 } 11347 } 11348 #pragma omp parallel for 11349 for (int i = 0; i < 10; ++i) { 11350 #pragma omp parallel for 11351 for (int i = 0; i < 10; ++i) 11352 ; 11353 } 11354 #pragma omp parallel for 11355 for (int i = 0; i < 10; ++i) { 11356 #pragma omp parallel for simd 11357 for (int i = 0; i < 10; ++i) 11358 ; 11359 } 11360 #pragma omp parallel for 11361 for (int i = 0; i < 10; ++i) { 11362 #pragma omp parallel sections 11363 { 11364 bar(); 11365 } 11366 } 11367 #pragma omp parallel for 11368 for (int i = 0; i < 10; ++i) { 11369 #pragma omp task 11370 { 11371 bar(); 11372 } 11373 } 11374 #pragma omp parallel for 11375 for (int i = 0; i < 10; ++i) { 11376 #pragma omp taskyield 11377 bar(); 11378 } 11379 #pragma omp parallel for 11380 for (int i = 0; i < 10; ++i) { 11381 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11382 bar(); 11383 } 11384 #pragma omp parallel for 11385 for (int i = 0; i < 10; ++i) { 11386 #pragma omp taskwait 11387 bar(); 11388 } 11389 #pragma omp parallel for 11390 for (int i = 0; i < 10; ++i) { 11391 #pragma omp flush 11392 bar(); 11393 } 11394 #pragma omp parallel for 11395 for (int i = 0; i < 10; ++i) { 11396 #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?}} 11397 bar(); 11398 } 11399 #pragma omp parallel for ordered 11400 for (int i = 0; i < 10; ++i) { 11401 #pragma omp ordered // OK 11402 bar(); 11403 } 11404 #pragma omp parallel for 11405 for (int i = 0; i < 10; ++i) { 11406 #pragma omp atomic 11407 ++a; 11408 } 11409 #pragma omp parallel for 11410 for (int i = 0; i < 10; ++i) { 11411 #pragma omp target 11412 ++a; 11413 } 11414 #pragma omp parallel for 11415 for (int i = 0; i < 10; ++i) { 11416 #pragma omp target parallel 11417 ++a; 11418 } 11419 #pragma omp parallel for 11420 for (int i = 0; i < 10; ++i) { 11421 #pragma omp target parallel for 11422 for (int i = 0; i < 10; ++i) 11423 ; 11424 } 11425 #pragma omp parallel for 11426 for (int i = 0; i < 10; ++i) { 11427 #pragma omp target enter data map(to: a) 11428 ++a; 11429 } 11430 #pragma omp parallel for 11431 for (int i = 0; i < 10; ++i) { 11432 #pragma omp target exit data map(from: a) 11433 ++a; 11434 } 11435 #pragma omp parallel for 11436 for (int i = 0; i < 10; ++i) { 11437 #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?}} 11438 ++a; 11439 } 11440 #pragma omp parallel for 11441 for (int i = 0; i < 10; ++i) { 11442 #pragma omp taskloop 11443 for (int i = 0; i < 10; ++i) 11444 ++a; 11445 } 11446 #pragma omp parallel for 11447 for (int i = 0; i < 10; ++i) { 11448 #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?}} 11449 for (int j = 0; j < 10; ++j) 11450 ; 11451 } 11452 #pragma omp parallel for 11453 for (int i = 0; i < 10; ++i) { 11454 #pragma omp target update to(a) 11455 a++; 11456 } 11457 #pragma omp parallel for 11458 for (int i = 0; i < 10; ++i) { 11459 #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?}} 11460 for (int j = 0; j < 10; ++j) 11461 ; 11462 } 11463 #pragma omp parallel for 11464 for (int i = 0; i < 10; ++i) { 11465 #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?}} 11466 for (int j = 0; j < 10; ++j) 11467 ; 11468 } 11469 #pragma omp parallel for 11470 for (int i = 0; i < 10; ++i) { 11471 #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?}} 11472 for (int j = 0; j < 10; ++j) 11473 ; 11474 } 11475 #pragma omp parallel for 11476 for (int i = 0; i < 10; ++i) { 11477 #pragma omp target simd // OK 11478 for (int j = 0; j < 10; ++j) 11479 ; 11480 } 11481 #pragma omp parallel for 11482 for (int i = 0; i < 10; ++i) { 11483 #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?}} 11484 for (int j = 0; j < 10; ++j) 11485 ; 11486 } 11487 #pragma omp parallel for 11488 for (int i = 0; i < 10; ++i) { 11489 #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?}} 11490 for (int j = 0; j < 10; ++j) 11491 ; 11492 } 11493 #pragma omp parallel for 11494 for (int i = 0; i < 10; ++i) { 11495 #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?}} 11496 for (int j = 0; j < 10; ++j) 11497 ; 11498 } 11499 #pragma omp parallel for 11500 for (int i = 0; i < 10; ++i) { 11501 #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?}} 11502 for (int j = 0; j < 10; ++j) 11503 ; 11504 } 11505 #pragma omp parallel for 11506 for (int i = 0; i < 10; ++i) { 11507 #pragma omp target teams // OK 11508 a++; 11509 } 11510 #pragma omp parallel for 11511 for (int i = 0; i < 10; ++i) { 11512 #pragma omp target teams distribute // OK 11513 for (int j = 0; j < 10; ++j) 11514 ; 11515 } 11516 #pragma omp parallel for 11517 for (int i = 0; i < 10; ++i) { 11518 #pragma omp target teams distribute parallel for // OK 11519 for (int j = 0; j < 10; ++j) 11520 ; 11521 } 11522 #pragma omp parallel for 11523 for (int i = 0; i < 10; ++i) { 11524 #pragma omp target teams distribute parallel for simd // OK 11525 for (int j = 0; j < 10; ++j) 11526 ; 11527 } 11528 #pragma omp parallel for 11529 for (int i = 0; i < 10; ++i) { 11530 #pragma omp target teams distribute simd // OK 11531 for (int j = 0; j < 10; ++j) 11532 ; 11533 } 11534 11535 // PARALLEL FOR SIMD DIRECTIVE 11536 #pragma omp parallel for simd 11537 for (int i = 0; i < 10; ++i) { 11538 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11539 for (int i = 0; i < 10; ++i) 11540 ; 11541 } 11542 #pragma omp parallel for simd 11543 for (int i = 0; i < 10; ++i) { 11544 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11545 for (int i = 0; i < 10; ++i) 11546 ; 11547 } 11548 #pragma omp parallel for simd 11549 for (int i = 0; i < 10; ++i) { 11550 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11551 for (int i = 0; i < 10; ++i) 11552 ; 11553 } 11554 #pragma omp parallel for simd 11555 for (int i = 0; i < 10; ++i) { 11556 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11557 for (int i = 0; i < 10; ++i) 11558 ; 11559 } 11560 #pragma omp parallel for simd 11561 for (int i = 0; i < 10; ++i) { 11562 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11563 { 11564 bar(); 11565 } 11566 } 11567 #pragma omp parallel for simd 11568 for (int i = 0; i < 10; ++i) { 11569 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11570 { 11571 bar(); 11572 } 11573 } 11574 #pragma omp parallel for simd 11575 for (int i = 0; i < 10; ++i) { 11576 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11577 { 11578 bar(); 11579 } 11580 } 11581 11582 #pragma omp parallel for simd 11583 for (int i = 0; i < 10; ++i) { 11584 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11585 { 11586 bar(); 11587 } 11588 } 11589 11590 #pragma omp parallel for simd 11591 for (int i = 0; i < 10; ++i) { 11592 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11593 { 11594 bar(); 11595 } 11596 } 11597 11598 #pragma omp parallel for simd 11599 for (int i = 0; i < 10; ++i) { 11600 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11601 { 11602 #pragma omp single 11603 { 11604 bar(); 11605 } 11606 #pragma omp for 11607 for (int i = 0; i < 10; ++i) 11608 ; 11609 #pragma omp for simd 11610 for (int i = 0; i < 10; ++i) 11611 ; 11612 #pragma omp sections 11613 { 11614 bar(); 11615 } 11616 } 11617 } 11618 #pragma omp parallel for simd 11619 for (int i = 0; i < 10; ++i) { 11620 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11621 for (int i = 0; i < 10; ++i) 11622 ; 11623 } 11624 #pragma omp parallel for simd 11625 for (int i = 0; i < 10; ++i) { 11626 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 11627 for (int i = 0; i < 10; ++i) 11628 ; 11629 } 11630 #pragma omp parallel for simd 11631 for (int i = 0; i < 10; ++i) { 11632 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11633 { 11634 bar(); 11635 } 11636 } 11637 #pragma omp parallel for simd 11638 for (int i = 0; i < 10; ++i) { 11639 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11640 { 11641 bar(); 11642 } 11643 } 11644 #pragma omp parallel for simd 11645 for (int i = 0; i < 10; ++i) { 11646 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11647 bar(); 11648 } 11649 #pragma omp parallel for simd 11650 for (int i = 0; i < 10; ++i) { 11651 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11652 bar(); 11653 } 11654 #pragma omp parallel for simd 11655 for (int i = 0; i < 10; ++i) { 11656 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11657 bar(); 11658 } 11659 #pragma omp parallel for simd 11660 for (int i = 0; i < 10; ++i) { 11661 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11662 bar(); 11663 } 11664 #pragma omp parallel for simd 11665 for (int i = 0; i < 10; ++i) { 11666 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11667 bar(); 11668 } 11669 #pragma omp parallel for simd 11670 for (int i = 0; i < 10; ++i) { 11671 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11672 bar(); 11673 } 11674 #pragma omp parallel for simd 11675 for (int i = 0; i < 10; ++i) { 11676 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11677 ++a; 11678 } 11679 #pragma omp parallel for simd 11680 for (int i = 0; i < 10; ++i) { 11681 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11682 ++a; 11683 } 11684 #pragma omp parallel for simd 11685 for (int i = 0; i < 10; ++i) { 11686 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11687 ++a; 11688 } 11689 #pragma omp parallel for simd 11690 for (int i = 0; i < 10; ++i) { 11691 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11692 for (int i = 0; i < 10; ++i) 11693 ; 11694 } 11695 #pragma omp parallel for simd 11696 for (int i = 0; i < 10; ++i) { 11697 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11698 ++a; 11699 } 11700 #pragma omp parallel for simd 11701 for (int i = 0; i < 10; ++i) { 11702 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11703 ++a; 11704 } 11705 #pragma omp parallel for simd 11706 for (int i = 0; i < 10; ++i) { 11707 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11708 ++a; 11709 } 11710 #pragma omp parallel for simd 11711 for (int i = 0; i < 10; ++i) { 11712 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11713 for (int i = 0; i < 10; ++i) 11714 ++a; 11715 } 11716 #pragma omp parallel for simd 11717 for (int i = 0; i < 10; ++i) { 11718 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11719 for (int j = 0; j < 10; ++j) 11720 ; 11721 } 11722 #pragma omp parallel for simd 11723 for (int i = 0; i < 10; ++i) { 11724 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11725 a++; 11726 } 11727 #pragma omp parallel for simd 11728 for (int i = 0; i < 10; ++i) { 11729 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11730 for (int j = 0; j < 10; ++j) 11731 ; 11732 } 11733 #pragma omp parallel for simd 11734 for (int i = 0; i < 10; ++i) { 11735 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11736 for (int j = 0; j < 10; ++j) 11737 ; 11738 } 11739 #pragma omp parallel for simd 11740 for (int i = 0; i < 10; ++i) { 11741 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11742 for (int j = 0; j < 10; ++j) 11743 ; 11744 } 11745 #pragma omp parallel for simd 11746 for (int i = 0; i < 10; ++i) { 11747 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11748 for (int j = 0; j < 10; ++j) 11749 ; 11750 } 11751 #pragma omp parallel for simd 11752 for (int i = 0; i < 10; ++i) { 11753 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11754 for (int j = 0; j < 10; ++j) 11755 ; 11756 } 11757 #pragma omp parallel for simd 11758 for (int i = 0; i < 10; ++i) { 11759 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11760 for (int j = 0; j < 10; ++j) 11761 ; 11762 } 11763 #pragma omp parallel for simd 11764 for (int i = 0; i < 10; ++i) { 11765 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11766 for (int j = 0; j < 10; ++j) 11767 ; 11768 } 11769 #pragma omp parallel for simd 11770 for (int i = 0; i < 10; ++i) { 11771 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11772 for (int j = 0; j < 10; ++j) 11773 ; 11774 } 11775 #pragma omp parallel for simd 11776 for (int i = 0; i < 10; ++i) { 11777 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11778 a++; 11779 } 11780 #pragma omp parallel for simd 11781 for (int i = 0; i < 10; ++i) { 11782 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11783 for (int j = 0; j < 10; ++j) 11784 ; 11785 } 11786 #pragma omp parallel for simd 11787 for (int i = 0; i < 10; ++i) { 11788 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11789 for (int j = 0; j < 10; ++j) 11790 ; 11791 } 11792 #pragma omp parallel for simd 11793 for (int i = 0; i < 10; ++i) { 11794 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11795 for (int j = 0; j < 10; ++j) 11796 ; 11797 } 11798 #pragma omp parallel for simd 11799 for (int i = 0; i < 10; ++i) { 11800 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11801 for (int j = 0; j < 10; ++j) 11802 ; 11803 } 11804 11805 // PARALLEL SECTIONS DIRECTIVE 11806 #pragma omp parallel sections 11807 { 11808 #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?}} 11809 for (int i = 0; i < 10; ++i) 11810 ; 11811 } 11812 #pragma omp parallel sections 11813 { 11814 #pragma omp simd 11815 for (int i = 0; i < 10; ++i) 11816 ; 11817 } 11818 #pragma omp parallel sections 11819 { 11820 #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?}} 11821 for (int i = 0; i < 10; ++i) 11822 ; 11823 } 11824 #pragma omp parallel sections 11825 { 11826 #pragma omp parallel 11827 for (int i = 0; i < 10; ++i) 11828 ; 11829 } 11830 #pragma omp parallel sections 11831 { 11832 #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?}} 11833 { 11834 bar(); 11835 } 11836 } 11837 #pragma omp parallel sections 11838 { 11839 #pragma omp section 11840 { 11841 bar(); 11842 } 11843 } 11844 #pragma omp parallel sections 11845 { 11846 #pragma omp section 11847 { 11848 #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?}} 11849 bar(); 11850 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 11851 bar(); 11852 #pragma omp critical 11853 bar(); 11854 } 11855 } 11856 #pragma omp parallel sections 11857 { 11858 #pragma omp parallel 11859 { 11860 #pragma omp single // OK 11861 { 11862 bar(); 11863 } 11864 #pragma omp master // OK 11865 { 11866 bar(); 11867 } 11868 #pragma omp critical // OK 11869 { 11870 bar(); 11871 } 11872 #pragma omp for // OK 11873 for (int i = 0; i < 10; ++i) 11874 ; 11875 #pragma omp for simd // OK 11876 for (int i = 0; i < 10; ++i) 11877 ; 11878 #pragma omp sections // OK 11879 { 11880 bar(); 11881 } 11882 } 11883 } 11884 #pragma omp parallel sections 11885 { 11886 #pragma omp parallel for 11887 for (int i = 0; i < 10; ++i) 11888 ; 11889 } 11890 #pragma omp parallel sections 11891 { 11892 #pragma omp parallel for simd 11893 for (int i = 0; i < 10; ++i) 11894 ; 11895 } 11896 #pragma omp parallel sections 11897 { 11898 #pragma omp parallel sections 11899 { 11900 bar(); 11901 } 11902 } 11903 #pragma omp parallel sections 11904 { 11905 #pragma omp task 11906 { 11907 bar(); 11908 } 11909 } 11910 #pragma omp parallel sections 11911 { 11912 #pragma omp taskyield 11913 } 11914 #pragma omp parallel sections 11915 { 11916 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 11917 } 11918 #pragma omp parallel sections 11919 { 11920 #pragma omp taskwait 11921 } 11922 #pragma omp parallel sections 11923 { 11924 #pragma omp flush 11925 } 11926 #pragma omp parallel sections 11927 { 11928 #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?}} 11929 bar(); 11930 } 11931 #pragma omp parallel sections 11932 { 11933 #pragma omp atomic 11934 ++a; 11935 } 11936 #pragma omp parallel sections 11937 { 11938 #pragma omp target 11939 ++a; 11940 } 11941 #pragma omp parallel sections 11942 { 11943 #pragma omp target parallel 11944 ++a; 11945 } 11946 #pragma omp parallel sections 11947 { 11948 #pragma omp target parallel for 11949 for (int i = 0; i < 10; ++i) 11950 ; 11951 } 11952 #pragma omp parallel sections 11953 { 11954 #pragma omp target enter data map(to: a) 11955 } 11956 #pragma omp parallel sections 11957 { 11958 #pragma omp target exit data map(from: a) 11959 } 11960 #pragma omp parallel sections 11961 { 11962 #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?}} 11963 ++a; 11964 } 11965 #pragma omp parallel sections 11966 { 11967 #pragma omp taskloop 11968 for (int i = 0; i < 10; ++i) 11969 ++a; 11970 } 11971 #pragma omp parallel sections 11972 { 11973 #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?}} 11974 for (int i = 0; i < 10; ++i) 11975 ; 11976 } 11977 #pragma omp parallel sections 11978 { 11979 #pragma omp target update to(a) 11980 } 11981 #pragma omp parallel sections 11982 { 11983 #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?}} 11984 for (int i = 0; i < 10; ++i) 11985 ; 11986 } 11987 #pragma omp parallel sections 11988 { 11989 #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?}} 11990 for (int i = 0; i < 10; ++i) 11991 ; 11992 } 11993 #pragma omp parallel sections 11994 { 11995 #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?}} 11996 for (int i = 0; i < 10; ++i) 11997 ; 11998 } 11999 #pragma omp parallel sections 12000 { 12001 #pragma omp target simd // OK 12002 for (int i = 0; i < 10; ++i) 12003 ; 12004 } 12005 #pragma omp parallel sections 12006 { 12007 #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?}} 12008 for (int i = 0; i < 10; ++i) 12009 ; 12010 } 12011 #pragma omp parallel sections 12012 { 12013 #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?}} 12014 for (int i = 0; i < 10; ++i) 12015 ; 12016 } 12017 #pragma omp parallel sections 12018 { 12019 #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?}} 12020 for (int i = 0; i < 10; ++i) 12021 ; 12022 } 12023 #pragma omp parallel sections 12024 { 12025 #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?}} 12026 for (int i = 0; i < 10; ++i) 12027 ; 12028 } 12029 #pragma omp parallel sections 12030 { 12031 #pragma omp target teams // OK 12032 a++; 12033 } 12034 #pragma omp parallel sections 12035 { 12036 #pragma omp target teams distribute // OK 12037 for (int i = 0; i < 10; ++i) 12038 ; 12039 } 12040 #pragma omp parallel sections 12041 { 12042 #pragma omp target teams distribute parallel for // OK 12043 for (int i = 0; i < 10; ++i) 12044 ; 12045 } 12046 #pragma omp parallel sections 12047 { 12048 #pragma omp target teams distribute parallel for simd // OK 12049 for (int i = 0; i < 10; ++i) 12050 ; 12051 } 12052 #pragma omp parallel sections 12053 { 12054 #pragma omp target teams distribute simd // OK 12055 for (int i = 0; i < 10; ++i) 12056 ; 12057 } 12058 12059 // TASK DIRECTIVE 12060 #pragma omp task 12061 #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?}} 12062 for (int i = 0; i < 10; ++i) 12063 ; 12064 #pragma omp task 12065 #pragma omp simd 12066 for (int i = 0; i < 10; ++i) 12067 ; 12068 #pragma omp task 12069 #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?}} 12070 for (int i = 0; i < 10; ++i) 12071 ; 12072 #pragma omp task 12073 #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?}} 12074 { 12075 bar(); 12076 } 12077 #pragma omp task 12078 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 12079 { 12080 bar(); 12081 } 12082 #pragma omp task 12083 #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?}} 12084 bar(); 12085 #pragma omp task 12086 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 12087 bar(); 12088 #pragma omp task 12089 #pragma omp critical 12090 bar(); 12091 #pragma omp task 12092 #pragma omp parallel for 12093 for (int i = 0; i < 10; ++i) 12094 ; 12095 #pragma omp task 12096 #pragma omp parallel for simd 12097 for (int i = 0; i < 10; ++i) 12098 ; 12099 #pragma omp task 12100 #pragma omp parallel sections 12101 { 12102 bar(); 12103 } 12104 #pragma omp task 12105 #pragma omp task 12106 { 12107 bar(); 12108 } 12109 #pragma omp task 12110 { 12111 #pragma omp taskyield 12112 bar(); 12113 } 12114 #pragma omp task 12115 { 12116 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 12117 bar(); 12118 } 12119 #pragma omp task 12120 { 12121 #pragma omp taskwait 12122 bar(); 12123 } 12124 #pragma omp task 12125 { 12126 #pragma omp flush 12127 bar(); 12128 } 12129 #pragma omp task 12130 { 12131 #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?}} 12132 bar(); 12133 } 12134 #pragma omp task 12135 { 12136 #pragma omp atomic 12137 ++a; 12138 } 12139 #pragma omp task 12140 { 12141 #pragma omp target 12142 ++a; 12143 } 12144 #pragma omp task 12145 { 12146 #pragma omp target parallel 12147 ++a; 12148 } 12149 #pragma omp task 12150 #pragma omp target parallel for 12151 for (int i = 0; i < 10; ++i) 12152 ; 12153 #pragma omp task 12154 { 12155 #pragma omp target enter data map(to: a) 12156 ++a; 12157 } 12158 #pragma omp task 12159 { 12160 #pragma omp target exit data map(from: a) 12161 ++a; 12162 } 12163 #pragma omp task 12164 { 12165 #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?}} 12166 ++a; 12167 } 12168 #pragma omp task 12169 { 12170 #pragma omp taskloop 12171 for (int i = 0; i < 10; ++i) 12172 ++a; 12173 } 12174 #pragma omp task 12175 { 12176 #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?}} 12177 for (int i = 0; i < 10; ++i) 12178 ; 12179 } 12180 #pragma omp task 12181 { 12182 #pragma omp target update to(a) 12183 a++; 12184 } 12185 #pragma omp task 12186 { 12187 #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?}} 12188 for (int i = 0; i < 10; ++i) 12189 ; 12190 } 12191 #pragma omp task 12192 { 12193 #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?}} 12194 for (int i = 0; i < 10; ++i) 12195 ; 12196 } 12197 #pragma omp task 12198 { 12199 #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?}} 12200 for (int i = 0; i < 10; ++i) 12201 ; 12202 } 12203 #pragma omp task 12204 { 12205 #pragma omp target simd // OK 12206 for (int i = 0; i < 10; ++i) 12207 ; 12208 } 12209 #pragma omp task 12210 { 12211 #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?}} 12212 for (int i = 0; i < 10; ++i) 12213 ; 12214 } 12215 #pragma omp task 12216 { 12217 #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?}} 12218 for (int i = 0; i < 10; ++i) 12219 ; 12220 } 12221 #pragma omp task 12222 { 12223 #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?}} 12224 for (int i = 0; i < 10; ++i) 12225 ; 12226 } 12227 #pragma omp task 12228 { 12229 #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?}} 12230 for (int i = 0; i < 10; ++i) 12231 ; 12232 } 12233 #pragma omp task 12234 { 12235 #pragma omp target teams // OK 12236 a++; 12237 } 12238 #pragma omp task 12239 { 12240 #pragma omp target teams distribute // OK 12241 for (int i = 0; i < 10; ++i) 12242 ; 12243 } 12244 #pragma omp task 12245 { 12246 #pragma omp target teams distribute parallel for // OK 12247 for (int i = 0; i < 10; ++i) 12248 ; 12249 } 12250 #pragma omp task 12251 { 12252 #pragma omp target teams distribute parallel for simd // OK 12253 for (int i = 0; i < 10; ++i) 12254 ; 12255 } 12256 #pragma omp task 12257 { 12258 #pragma omp target teams distribute simd // OK 12259 for (int i = 0; i < 10; ++i) 12260 ; 12261 } 12262 12263 // ATOMIC DIRECTIVE 12264 #pragma omp atomic 12265 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12266 // expected-note@+1 {{expected an expression statement}} 12267 { 12268 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12269 for (int i = 0; i < 10; ++i) 12270 ; 12271 } 12272 #pragma omp atomic 12273 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12274 // expected-note@+1 {{expected an expression statement}} 12275 { 12276 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12277 for (int i = 0; i < 10; ++i) 12278 ; 12279 } 12280 #pragma omp atomic 12281 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12282 // expected-note@+1 {{expected an expression statement}} 12283 { 12284 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12285 for (int i = 0; i < 10; ++i) 12286 ; 12287 } 12288 #pragma omp atomic 12289 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12290 // expected-note@+1 {{expected an expression statement}} 12291 { 12292 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12293 for (int i = 0; i < 10; ++i) 12294 ; 12295 } 12296 #pragma omp atomic 12297 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12298 // expected-note@+1 {{expected an expression statement}} 12299 { 12300 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12301 { 12302 bar(); 12303 } 12304 } 12305 #pragma omp atomic 12306 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12307 // expected-note@+1 {{expected an expression statement}} 12308 { 12309 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12310 { 12311 bar(); 12312 } 12313 } 12314 #pragma omp atomic 12315 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12316 // expected-note@+1 {{expected an expression statement}} 12317 { 12318 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12319 { 12320 bar(); 12321 } 12322 } 12323 #pragma omp atomic 12324 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12325 // expected-note@+1 {{expected an expression statement}} 12326 { 12327 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12328 { 12329 bar(); 12330 } 12331 } 12332 #pragma omp atomic 12333 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12334 // expected-note@+1 {{expected an expression statement}} 12335 { 12336 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12337 { 12338 bar(); 12339 } 12340 } 12341 #pragma omp atomic 12342 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12343 // expected-note@+1 {{expected an expression statement}} 12344 { 12345 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12346 for (int i = 0; i < 10; ++i) 12347 ; 12348 } 12349 #pragma omp atomic 12350 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12351 // expected-note@+1 {{expected an expression statement}} 12352 { 12353 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12354 for (int i = 0; i < 10; ++i) 12355 ; 12356 } 12357 #pragma omp atomic 12358 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12359 // expected-note@+1 {{expected an expression statement}} 12360 { 12361 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12362 { 12363 bar(); 12364 } 12365 } 12366 #pragma omp atomic 12367 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12368 // expected-note@+1 {{expected an expression statement}} 12369 { 12370 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12371 { 12372 bar(); 12373 } 12374 } 12375 #pragma omp atomic 12376 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12377 // expected-note@+1 {{expected an expression statement}} 12378 { 12379 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12380 bar(); 12381 } 12382 #pragma omp atomic 12383 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12384 // expected-note@+1 {{expected an expression statement}} 12385 { 12386 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12387 bar(); 12388 } 12389 #pragma omp atomic 12390 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12391 // expected-note@+1 {{expected an expression statement}} 12392 { 12393 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12394 bar(); 12395 } 12396 #pragma omp atomic 12397 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12398 // expected-note@+1 {{expected an expression statement}} 12399 { 12400 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12401 bar(); 12402 } 12403 #pragma omp atomic 12404 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12405 // expected-note@+1 {{expected an expression statement}} 12406 { 12407 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12408 bar(); 12409 } 12410 #pragma omp atomic 12411 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12412 // expected-note@+1 {{expected an expression statement}} 12413 { 12414 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12415 ++a; 12416 } 12417 #pragma omp atomic 12418 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12419 // expected-note@+1 {{expected an expression statement}} 12420 { 12421 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12422 ++a; 12423 } 12424 #pragma omp atomic 12425 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12426 // expected-note@+1 {{expected an expression statement}} 12427 { 12428 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12429 ++a; 12430 } 12431 #pragma omp atomic 12432 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12433 // expected-note@+1 {{expected an expression statement}} 12434 { 12435 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12436 for (int i = 0; i < 10; ++i) 12437 ; 12438 } 12439 #pragma omp atomic 12440 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12441 // expected-note@+1 {{expected an expression statement}} 12442 { 12443 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12444 ++a; 12445 } 12446 #pragma omp atomic 12447 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12448 // expected-note@+1 {{expected an expression statement}} 12449 { 12450 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12451 ++a; 12452 } 12453 #pragma omp atomic 12454 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12455 // expected-note@+1 {{expected an expression statement}} 12456 { 12457 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12458 ++a; 12459 } 12460 #pragma omp atomic 12461 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12462 // expected-note@+1 {{expected an expression statement}} 12463 { 12464 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12465 for (int i = 0; i < 10; ++i) 12466 ++a; 12467 } 12468 #pragma omp atomic 12469 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12470 // expected-note@+1 {{expected an expression statement}} 12471 { 12472 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12473 for (int i = 0; i < 10; ++i) 12474 ; 12475 } 12476 #pragma omp atomic 12477 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12478 // expected-note@+1 {{expected an expression statement}} 12479 { 12480 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12481 } 12482 #pragma omp atomic 12483 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12484 // expected-note@+1 {{expected an expression statement}} 12485 { 12486 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12487 for (int i = 0; i < 10; ++i) 12488 ; 12489 } 12490 #pragma omp atomic 12491 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12492 // expected-note@+1 {{expected an expression statement}} 12493 { 12494 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12495 for (int i = 0; i < 10; ++i) 12496 ; 12497 } 12498 #pragma omp atomic 12499 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12500 // expected-note@+1 {{expected an expression statement}} 12501 { 12502 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12503 for (int i = 0; i < 10; ++i) 12504 ; 12505 } 12506 #pragma omp atomic 12507 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12508 // expected-note@+1 {{expected an expression statement}} 12509 { 12510 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12511 for (int i = 0; i < 10; ++i) 12512 ; 12513 } 12514 #pragma omp atomic 12515 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12516 // expected-note@+1 {{expected an expression statement}} 12517 { 12518 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12519 for (int i = 0; i < 10; ++i) 12520 ; 12521 } 12522 #pragma omp atomic 12523 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12524 // expected-note@+1 {{expected an expression statement}} 12525 { 12526 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12527 for (int i = 0; i < 10; ++i) 12528 ; 12529 } 12530 #pragma omp atomic 12531 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12532 // expected-note@+1 {{expected an expression statement}} 12533 { 12534 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12535 for (int i = 0; i < 10; ++i) 12536 ; 12537 } 12538 #pragma omp atomic 12539 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12540 // expected-note@+1 {{expected an expression statement}} 12541 { 12542 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12543 for (int i = 0; i < 10; ++i) 12544 ; 12545 } 12546 #pragma omp atomic 12547 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12548 // expected-note@+1 {{expected an expression statement}} 12549 { 12550 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12551 a++; 12552 } 12553 #pragma omp atomic 12554 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12555 // expected-note@+1 {{expected an expression statement}} 12556 { 12557 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12558 for (int i = 0; i < 10; ++i) 12559 ; 12560 } 12561 #pragma omp atomic 12562 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12563 // expected-note@+1 {{expected an expression statement}} 12564 { 12565 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12566 for (int i = 0; i < 10; ++i) 12567 ; 12568 } 12569 #pragma omp atomic 12570 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12571 // expected-note@+1 {{expected an expression statement}} 12572 { 12573 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12574 for (int i = 0; i < 10; ++i) 12575 ; 12576 } 12577 #pragma omp atomic 12578 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12579 // expected-note@+1 {{expected an expression statement}} 12580 { 12581 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12582 for (int i = 0; i < 10; ++i) 12583 ; 12584 } 12585 12586 // TARGET DIRECTIVE 12587 #pragma omp target 12588 #pragma omp parallel 12589 bar(); 12590 #pragma omp target 12591 #pragma omp for 12592 for (int i = 0; i < 10; ++i) 12593 ; 12594 #pragma omp target 12595 #pragma omp simd 12596 for (int i = 0; i < 10; ++i) 12597 ; 12598 #pragma omp target 12599 #pragma omp for simd 12600 for (int i = 0; i < 10; ++i) 12601 ; 12602 #pragma omp target 12603 #pragma omp sections 12604 { 12605 bar(); 12606 } 12607 #pragma omp target 12608 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 12609 { 12610 bar(); 12611 } 12612 #pragma omp target 12613 #pragma omp single 12614 bar(); 12615 12616 #pragma omp target 12617 #pragma omp master 12618 { 12619 bar(); 12620 } 12621 #pragma omp target 12622 #pragma omp critical 12623 { 12624 bar(); 12625 } 12626 #pragma omp target 12627 #pragma omp parallel for 12628 for (int i = 0; i < 10; ++i) 12629 ; 12630 #pragma omp target 12631 #pragma omp parallel for simd 12632 for (int i = 0; i < 10; ++i) 12633 ; 12634 #pragma omp target 12635 #pragma omp parallel sections 12636 { 12637 bar(); 12638 } 12639 #pragma omp target 12640 #pragma omp task 12641 { 12642 bar(); 12643 } 12644 #pragma omp target 12645 { 12646 #pragma omp taskyield 12647 bar(); 12648 } 12649 #pragma omp target 12650 { 12651 #pragma omp barrier 12652 bar(); 12653 } 12654 #pragma omp target 12655 { 12656 #pragma omp taskwait 12657 bar(); 12658 } 12659 #pragma omp target 12660 { 12661 #pragma omp flush 12662 bar(); 12663 } 12664 #pragma omp target 12665 { 12666 #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?}} 12667 bar(); 12668 } 12669 #pragma omp target 12670 { 12671 #pragma omp atomic 12672 ++a; 12673 } 12674 #pragma omp target 12675 { 12676 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 12677 ++a; 12678 } 12679 #pragma omp target 12680 { 12681 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 12682 ++a; 12683 } 12684 #pragma omp target 12685 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 12686 for (int i = 0; i < 10; ++i) 12687 ; 12688 #pragma omp target 12689 { 12690 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 12691 } 12692 #pragma omp target 12693 { 12694 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 12695 } 12696 #pragma omp target 12697 { 12698 #pragma omp teams 12699 ++a; 12700 } 12701 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 12702 { 12703 #pragma omp teams // expected-note {{directive outside teams construct here}} 12704 ++a; 12705 #pragma omp teams // expected-note {{nested teams construct here}} 12706 ++a; 12707 } 12708 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 12709 { 12710 ++a; // expected-note {{statement outside teams construct here}} 12711 #pragma omp teams // expected-note {{nested teams construct here}} 12712 ++a; 12713 } 12714 #pragma omp target 12715 { 12716 #pragma omp taskloop 12717 for (int i = 0; i < 10; ++i) 12718 ++a; 12719 } 12720 #pragma omp target 12721 { 12722 #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?}} 12723 for (int i = 0; i < 10; ++i) 12724 ; 12725 } 12726 #pragma omp atomic 12727 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 12728 // expected-note@+1 {{expected an expression statement}} 12729 { 12730 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12731 a++; 12732 } 12733 #pragma omp target 12734 { 12735 #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?}} 12736 for (int i = 0; i < 10; ++i) 12737 ; 12738 } 12739 #pragma omp target 12740 { 12741 #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?}} 12742 for (int i = 0; i < 10; ++i) 12743 ; 12744 } 12745 #pragma omp target 12746 { 12747 #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?}} 12748 for (int i = 0; i < 10; ++i) 12749 ; 12750 } 12751 #pragma omp target 12752 { 12753 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 12754 for (int i = 0; i < 10; ++i) 12755 ; 12756 } 12757 #pragma omp target 12758 { 12759 #pragma omp teams distribute // OK 12760 for (int i = 0; i < 10; ++i) 12761 ; 12762 } 12763 #pragma omp target 12764 { 12765 #pragma omp teams distribute simd // OK 12766 for (int i = 0; i < 10; ++i) 12767 ; 12768 } 12769 #pragma omp target 12770 { 12771 #pragma omp teams distribute parallel for simd // OK 12772 for (int i = 0; i < 10; ++i) 12773 ; 12774 } 12775 #pragma omp target 12776 { 12777 #pragma omp teams distribute parallel for // OK 12778 for (int i = 0; i < 10; ++i) 12779 ; 12780 } 12781 #pragma omp target 12782 { 12783 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 12784 a++; 12785 } 12786 #pragma omp target 12787 { 12788 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 12789 for (int i = 0; i < 10; ++i) 12790 ; 12791 } 12792 #pragma omp target 12793 { 12794 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 12795 for (int i = 0; i < 10; ++i) 12796 ; 12797 } 12798 #pragma omp target 12799 { 12800 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 12801 for (int i = 0; i < 10; ++i) 12802 ; 12803 } 12804 #pragma omp target 12805 { 12806 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 12807 for (int i = 0; i < 10; ++i) 12808 ; 12809 } 12810 12811 // TARGET PARALLEL DIRECTIVE 12812 #pragma omp target parallel 12813 #pragma omp parallel 12814 bar(); 12815 #pragma omp target parallel 12816 #pragma omp for 12817 for (int i = 0; i < 10; ++i) 12818 ; 12819 #pragma omp target parallel 12820 #pragma omp simd 12821 for (int i = 0; i < 10; ++i) 12822 ; 12823 #pragma omp target parallel 12824 #pragma omp for simd 12825 for (int i = 0; i < 10; ++i) 12826 ; 12827 #pragma omp target parallel 12828 #pragma omp sections 12829 { 12830 bar(); 12831 } 12832 #pragma omp target parallel 12833 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 12834 { 12835 bar(); 12836 } 12837 #pragma omp target parallel 12838 #pragma omp single 12839 bar(); 12840 12841 #pragma omp target parallel 12842 #pragma omp master 12843 { 12844 bar(); 12845 } 12846 #pragma omp target parallel 12847 #pragma omp critical 12848 { 12849 bar(); 12850 } 12851 #pragma omp target parallel 12852 #pragma omp parallel for 12853 for (int i = 0; i < 10; ++i) 12854 ; 12855 #pragma omp target parallel 12856 #pragma omp parallel for simd 12857 for (int i = 0; i < 10; ++i) 12858 ; 12859 #pragma omp target parallel 12860 #pragma omp parallel sections 12861 { 12862 bar(); 12863 } 12864 #pragma omp target parallel 12865 #pragma omp task 12866 { 12867 bar(); 12868 } 12869 #pragma omp target parallel 12870 { 12871 #pragma omp taskyield 12872 bar(); 12873 } 12874 #pragma omp target parallel 12875 { 12876 #pragma omp barrier 12877 bar(); 12878 } 12879 #pragma omp target parallel 12880 { 12881 #pragma omp taskwait 12882 bar(); 12883 } 12884 #pragma omp target parallel 12885 { 12886 #pragma omp flush 12887 bar(); 12888 } 12889 #pragma omp target parallel 12890 { 12891 #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?}} 12892 bar(); 12893 } 12894 #pragma omp target parallel 12895 { 12896 #pragma omp atomic 12897 ++a; 12898 } 12899 #pragma omp target parallel 12900 { 12901 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 12902 ++a; 12903 } 12904 #pragma omp target parallel 12905 { 12906 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 12907 ++a; 12908 } 12909 #pragma omp target parallel 12910 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 12911 for (int i = 0; i < 10; ++i) 12912 ; 12913 #pragma omp target parallel 12914 { 12915 #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?}} 12916 ++a; 12917 } 12918 #pragma omp target parallel 12919 { 12920 ++a; 12921 #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?}} 12922 ++a; 12923 } 12924 #pragma omp target parallel 12925 { 12926 #pragma omp taskloop 12927 for (int i = 0; i < 10; ++i) 12928 ++a; 12929 } 12930 #pragma omp target parallel 12931 { 12932 #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?}} 12933 for (int i = 0; i < 10; ++i) 12934 ; 12935 } 12936 #pragma omp target parallel 12937 { 12938 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 12939 } 12940 #pragma omp target parallel 12941 { 12942 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 12943 } 12944 #pragma omp target parallel 12945 { 12946 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 12947 } 12948 #pragma omp target parallel 12949 { 12950 #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?}} 12951 for (int i = 0; i < 10; ++i) 12952 ; 12953 } 12954 #pragma omp target parallel 12955 { 12956 #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?}} 12957 for (int i = 0; i < 10; ++i) 12958 ; 12959 } 12960 #pragma omp target parallel 12961 { 12962 #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?}} 12963 for (int i = 0; i < 10; ++i) 12964 ; 12965 } 12966 #pragma omp target parallel 12967 { 12968 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 12969 for (int i = 0; i < 10; ++i) 12970 ; 12971 } 12972 #pragma omp target parallel 12973 { 12974 #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?}} 12975 for (int i = 0; i < 10; ++i) 12976 ; 12977 } 12978 #pragma omp target parallel 12979 { 12980 #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?}} 12981 for (int i = 0; i < 10; ++i) 12982 ; 12983 } 12984 #pragma omp target parallel 12985 { 12986 #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?}} 12987 for (int i = 0; i < 10; ++i) 12988 ; 12989 } 12990 #pragma omp target parallel 12991 { 12992 #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?}} 12993 for (int i = 0; i < 10; ++i) 12994 ; 12995 } 12996 #pragma omp target parallel 12997 { 12998 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 12999 a++; 13000 } 13001 #pragma omp target parallel 13002 { 13003 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 13004 for (int i = 0; i < 10; ++i) 13005 ; 13006 } 13007 #pragma omp target parallel 13008 { 13009 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 13010 for (int i = 0; i < 10; ++i) 13011 ; 13012 } 13013 #pragma omp target parallel 13014 { 13015 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13016 for (int i = 0; i < 10; ++i) 13017 ; 13018 } 13019 #pragma omp target parallel 13020 { 13021 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13022 for (int i = 0; i < 10; ++i) 13023 ; 13024 } 13025 13026 // TARGET PARALLEL FOR DIRECTIVE 13027 #pragma omp target parallel for 13028 for (int i = 0; i < 10; ++i) { 13029 #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?}} 13030 for (int i = 0; i < 10; ++i) 13031 ; 13032 } 13033 #pragma omp target parallel for 13034 for (int i = 0; i < 10; ++i) { 13035 #pragma omp simd 13036 for (int i = 0; i < 10; ++i) 13037 ; 13038 } 13039 #pragma omp target parallel for 13040 for (int i = 0; i < 10; ++i) { 13041 #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?}} 13042 for (int i = 0; i < 10; ++i) 13043 ; 13044 } 13045 #pragma omp target parallel for 13046 for (int i = 0; i < 10; ++i) { 13047 #pragma omp parallel 13048 for (int i = 0; i < 10; ++i) 13049 ; 13050 } 13051 #pragma omp target parallel for 13052 for (int i = 0; i < 10; ++i) { 13053 #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?}} 13054 { 13055 bar(); 13056 } 13057 } 13058 #pragma omp target parallel for 13059 for (int i = 0; i < 10; ++i) { 13060 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 13061 { 13062 bar(); 13063 } 13064 } 13065 #pragma omp target parallel for 13066 for (int i = 0; i < 10; ++i) { 13067 #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?}} 13068 { 13069 bar(); 13070 } 13071 } 13072 13073 #pragma omp target parallel for 13074 for (int i = 0; i < 10; ++i) { 13075 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13076 { 13077 bar(); 13078 } 13079 } 13080 13081 #pragma omp target parallel for 13082 for (int i = 0; i < 10; ++i) { 13083 #pragma omp critical 13084 { 13085 bar(); 13086 } 13087 } 13088 13089 #pragma omp target parallel for 13090 for (int i = 0; i < 10; ++i) { 13091 #pragma omp parallel 13092 { 13093 #pragma omp single // OK 13094 { 13095 bar(); 13096 } 13097 #pragma omp for // OK 13098 for (int i = 0; i < 10; ++i) 13099 ; 13100 #pragma omp for simd // OK 13101 for (int i = 0; i < 10; ++i) 13102 ; 13103 #pragma omp sections // OK 13104 { 13105 bar(); 13106 } 13107 } 13108 } 13109 #pragma omp target parallel for 13110 for (int i = 0; i < 10; ++i) { 13111 #pragma omp parallel for 13112 for (int i = 0; i < 10; ++i) 13113 ; 13114 } 13115 #pragma omp target parallel for 13116 for (int i = 0; i < 10; ++i) { 13117 #pragma omp parallel for simd 13118 for (int i = 0; i < 10; ++i) 13119 ; 13120 } 13121 #pragma omp target parallel for 13122 for (int i = 0; i < 10; ++i) { 13123 #pragma omp parallel sections 13124 { 13125 bar(); 13126 } 13127 } 13128 #pragma omp target parallel for 13129 for (int i = 0; i < 10; ++i) { 13130 #pragma omp task 13131 { 13132 bar(); 13133 } 13134 } 13135 #pragma omp target parallel for 13136 for (int i = 0; i < 10; ++i) { 13137 #pragma omp taskyield 13138 bar(); 13139 } 13140 #pragma omp target parallel for 13141 for (int i = 0; i < 10; ++i) { 13142 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13143 bar(); 13144 } 13145 #pragma omp target parallel for 13146 for (int i = 0; i < 10; ++i) { 13147 #pragma omp taskwait 13148 bar(); 13149 } 13150 #pragma omp target parallel for 13151 for (int i = 0; i < 10; ++i) { 13152 #pragma omp flush 13153 bar(); 13154 } 13155 #pragma omp target parallel for 13156 for (int i = 0; i < 10; ++i) { 13157 #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?}} 13158 bar(); 13159 } 13160 #pragma omp target parallel for ordered 13161 for (int i = 0; i < 10; ++i) { 13162 #pragma omp ordered // OK 13163 bar(); 13164 } 13165 #pragma omp target parallel for 13166 for (int i = 0; i < 10; ++i) { 13167 #pragma omp atomic 13168 ++a; 13169 } 13170 #pragma omp target parallel for 13171 for (int i = 0; i < 10; ++i) { 13172 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 13173 ++a; 13174 } 13175 #pragma omp target parallel for 13176 for (int i = 0; i < 10; ++i) { 13177 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 13178 ++a; 13179 } 13180 #pragma omp target parallel for 13181 for (int i = 0; i < 10; ++i) { 13182 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13183 for (int i = 0; i < 10; ++i) 13184 ; 13185 } 13186 #pragma omp target parallel for 13187 for (int i = 0; i < 10; ++i) { 13188 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13189 ++a; 13190 } 13191 #pragma omp target parallel for 13192 for (int i = 0; i < 10; ++i) { 13193 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13194 ++a; 13195 } 13196 #pragma omp target parallel for 13197 for (int i = 0; i < 10; ++i) { 13198 #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?}} 13199 ++a; 13200 } 13201 #pragma omp target parallel for 13202 for (int i = 0; i < 10; ++i) { 13203 #pragma omp taskloop 13204 for (int i = 0; i < 10; ++i) 13205 ++a; 13206 } 13207 #pragma omp target parallel for 13208 for (int i = 0; i < 10; ++i) { 13209 #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?}} 13210 for (int j = 0; j < 10; ++j) 13211 ; 13212 } 13213 #pragma omp target parallel for 13214 for (int i = 0; i < 10; ++i) { 13215 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13216 a++; 13217 } 13218 #pragma omp target parallel for 13219 for (int i = 0; i < 10; ++i) { 13220 #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?}} 13221 for (int j = 0; j < 10; ++j) 13222 ; 13223 } 13224 #pragma omp target parallel for 13225 for (int i = 0; i < 10; ++i) { 13226 #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?}} 13227 for (int j = 0; j < 10; ++j) 13228 ; 13229 } 13230 #pragma omp target parallel for 13231 for (int i = 0; i < 10; ++i) { 13232 #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?}} 13233 for (int j = 0; j < 10; ++j) 13234 ; 13235 } 13236 #pragma omp target parallel for 13237 for (int i = 0; i < 10; ++i) { 13238 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13239 for (int j = 0; j < 10; ++j) 13240 ; 13241 } 13242 #pragma omp target parallel for 13243 for (int i = 0; i < 10; ++i) { 13244 #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?}} 13245 for (int j = 0; j < 10; ++j) 13246 ; 13247 } 13248 #pragma omp target parallel for 13249 for (int i = 0; i < 10; ++i) { 13250 #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?}} 13251 for (int j = 0; j < 10; ++j) 13252 ; 13253 } 13254 #pragma omp target parallel for 13255 for (int i = 0; i < 10; ++i) { 13256 #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?}} 13257 for (int j = 0; j < 10; ++j) 13258 ; 13259 } 13260 #pragma omp target parallel for 13261 for (int i = 0; i < 10; ++i) { 13262 #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?}} 13263 for (int j = 0; j < 10; ++j) 13264 ; 13265 } 13266 #pragma omp target parallel for 13267 for (int i = 0; i < 10; ++i) { 13268 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 13269 a++; 13270 } 13271 #pragma omp target parallel for 13272 for (int i = 0; i < 10; ++i) { 13273 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 13274 for (int j = 0; j < 10; ++j) 13275 ; 13276 } 13277 #pragma omp target parallel for 13278 for (int i = 0; i < 10; ++i) { 13279 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13280 for (int j = 0; j < 10; ++j) 13281 ; 13282 } 13283 #pragma omp target parallel for 13284 for (int i = 0; i < 10; ++i) { 13285 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13286 for (int j = 0; j < 10; ++j) 13287 ; 13288 } 13289 #pragma omp target parallel for 13290 for (int i = 0; i < 10; ++i) { 13291 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13292 for (int j = 0; j < 10; ++j) 13293 ; 13294 } 13295 13296 // TEAMS DIRECTIVE 13297 #pragma omp target 13298 #pragma omp teams 13299 #pragma omp parallel 13300 bar(); 13301 #pragma omp target 13302 #pragma omp teams 13303 #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?}} 13304 for (int i = 0; i < 10; ++i) 13305 ; 13306 #pragma omp target 13307 #pragma omp teams 13308 #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?}} 13309 for (int i = 0; i < 10; ++i) 13310 ; 13311 #pragma omp target 13312 #pragma omp teams 13313 #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?}} 13314 for (int i = 0; i < 10; ++i) 13315 ; 13316 #pragma omp target 13317 #pragma omp teams 13318 #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?}} 13319 { 13320 bar(); 13321 } 13322 #pragma omp target 13323 #pragma omp teams 13324 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 13325 { 13326 bar(); 13327 } 13328 #pragma omp target 13329 #pragma omp teams 13330 #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?}} 13331 bar(); 13332 13333 #pragma omp target 13334 #pragma omp teams 13335 #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?}} 13336 { 13337 bar(); 13338 } 13339 #pragma omp target 13340 #pragma omp teams 13341 #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?}} 13342 { 13343 bar(); 13344 } 13345 #pragma omp target 13346 #pragma omp teams 13347 #pragma omp parallel for 13348 for (int i = 0; i < 10; ++i) 13349 ; 13350 #pragma omp target 13351 #pragma omp teams 13352 #pragma omp parallel for simd 13353 for (int i = 0; i < 10; ++i) 13354 ; 13355 #pragma omp target 13356 #pragma omp teams 13357 #pragma omp parallel sections 13358 { 13359 bar(); 13360 } 13361 #pragma omp target 13362 #pragma omp teams 13363 #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?}} 13364 { 13365 bar(); 13366 } 13367 #pragma omp target 13368 #pragma omp teams 13369 { 13370 #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?}} 13371 bar(); 13372 } 13373 #pragma omp target 13374 #pragma omp teams 13375 { 13376 #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?}} 13377 bar(); 13378 } 13379 #pragma omp target 13380 #pragma omp teams 13381 { 13382 #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?}} 13383 bar(); 13384 } 13385 #pragma omp target 13386 #pragma omp teams 13387 { 13388 #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?}} 13389 bar(); 13390 } 13391 #pragma omp target 13392 #pragma omp teams 13393 { 13394 #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?}} 13395 bar(); 13396 } 13397 #pragma omp target 13398 #pragma omp teams 13399 { 13400 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 13401 ++a; 13402 } 13403 #pragma omp target 13404 #pragma omp teams 13405 { 13406 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13407 ++a; 13408 } 13409 #pragma omp target 13410 #pragma omp teams 13411 { 13412 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13413 ++a; 13414 } 13415 #pragma omp target 13416 #pragma omp teams 13417 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13418 for (int i = 0; i < 10; ++i) 13419 ; 13420 #pragma omp target 13421 #pragma omp teams 13422 { 13423 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13424 } 13425 #pragma omp target 13426 #pragma omp teams 13427 { 13428 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13429 } 13430 #pragma omp target 13431 #pragma omp teams 13432 { 13433 #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?}} 13434 ++a; 13435 } 13436 #pragma omp target 13437 #pragma omp teams 13438 { 13439 #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?}} 13440 for (int i = 0; i < 10; ++i) 13441 ++a; 13442 } 13443 #pragma omp target 13444 #pragma omp teams 13445 #pragma omp distribute 13446 for (int i = 0; i < 10; ++i) 13447 ; 13448 #pragma omp target 13449 #pragma omp teams 13450 #pragma omp distribute 13451 for (int i = 0; i < 10; ++i) 13452 ; 13453 #pragma omp distribute 13454 for (int j = 0; j < 10; ++j) 13455 ; 13456 #pragma omp target 13457 #pragma omp teams 13458 { 13459 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13460 ++a; 13461 } 13462 #pragma omp target 13463 #pragma omp teams 13464 #pragma omp distribute parallel for 13465 for (int i = 0; i < 10; ++i) 13466 ; 13467 #pragma omp target 13468 #pragma omp teams 13469 { 13470 #pragma omp distribute parallel for 13471 for (int i = 0; i < 10; ++i) 13472 ; 13473 #pragma omp distribute parallel for 13474 for (int j = 0; j < 10; ++j) 13475 ; 13476 } 13477 #pragma omp target 13478 #pragma omp teams 13479 { 13480 #pragma omp distribute parallel for simd 13481 for (int i = 0; i < 10; ++i) 13482 ; 13483 #pragma omp distribute parallel for simd 13484 for (int j = 0; j < 10; ++j) 13485 ; 13486 } 13487 #pragma omp target 13488 #pragma omp teams 13489 { 13490 #pragma omp distribute simd 13491 for (int i = 0; i < 10; ++i) 13492 ; 13493 #pragma omp distribute simd 13494 for (int j = 0; j < 10; ++j) 13495 ; 13496 } 13497 #pragma omp target 13498 #pragma omp teams 13499 { 13500 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13501 for (int i = 0; i < 10; ++i) 13502 ; 13503 } 13504 #pragma omp target 13505 #pragma omp teams 13506 { 13507 #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?}} 13508 for (int i = 0; i < 10; ++i) 13509 ; 13510 } 13511 #pragma omp target 13512 #pragma omp teams 13513 { 13514 #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?}} 13515 for (int i = 0; i < 10; ++i) 13516 ; 13517 } 13518 #pragma omp target 13519 #pragma omp teams 13520 { 13521 #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?}} 13522 for (int i = 0; i < 10; ++i) 13523 ; 13524 } 13525 #pragma omp target 13526 #pragma omp teams 13527 { 13528 #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?}} 13529 for (int i = 0; i < 10; ++i) 13530 ; 13531 } 13532 #pragma omp target 13533 #pragma omp teams 13534 { 13535 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13536 a++; 13537 } 13538 #pragma omp target 13539 #pragma omp teams 13540 { 13541 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13542 for (int i = 0; i < 10; ++i) 13543 ; 13544 } 13545 #pragma omp target 13546 #pragma omp teams 13547 { 13548 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13549 for (int i = 0; i < 10; ++i) 13550 ; 13551 } 13552 #pragma omp target 13553 #pragma omp teams 13554 { 13555 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13556 for (int i = 0; i < 10; ++i) 13557 ; 13558 } 13559 #pragma omp target 13560 #pragma omp teams 13561 { 13562 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13563 for (int i = 0; i < 10; ++i) 13564 ; 13565 } 13566 13567 // TASKLOOP DIRECTIVE 13568 #pragma omp taskloop 13569 for (int i = 0; i < 10; ++i) { 13570 #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?}} 13571 for (int i = 0; i < 10; ++i) 13572 ; 13573 } 13574 #pragma omp taskloop 13575 for (int i = 0; i < 10; ++i) { 13576 #pragma omp simd 13577 for (int i = 0; i < 10; ++i) 13578 ; 13579 } 13580 #pragma omp taskloop 13581 for (int i = 0; i < 10; ++i) { 13582 #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?}} 13583 for (int i = 0; i < 10; ++i) 13584 ; 13585 } 13586 #pragma omp taskloop 13587 for (int i = 0; i < 10; ++i) { 13588 #pragma omp parallel 13589 for (int i = 0; i < 10; ++i) 13590 ; 13591 } 13592 #pragma omp taskloop 13593 for (int i = 0; i < 10; ++i) { 13594 #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?}} 13595 { 13596 bar(); 13597 } 13598 } 13599 #pragma omp taskloop 13600 for (int i = 0; i < 10; ++i) { 13601 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 13602 { 13603 bar(); 13604 } 13605 } 13606 #pragma omp taskloop 13607 for (int i = 0; i < 10; ++i) { 13608 #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?}} 13609 { 13610 bar(); 13611 } 13612 } 13613 13614 #pragma omp taskloop 13615 for (int i = 0; i < 10; ++i) { 13616 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 13617 { 13618 bar(); 13619 } 13620 } 13621 #pragma omp taskloop 13622 for (int i = 0; i < 10; ++i) { 13623 #pragma omp critical 13624 { 13625 bar(); 13626 } 13627 } 13628 #pragma omp taskloop 13629 for (int i = 0; i < 10; ++i) { 13630 #pragma omp parallel 13631 { 13632 #pragma omp single // OK 13633 { 13634 bar(); 13635 } 13636 #pragma omp for // OK 13637 for (int i = 0; i < 10; ++i) 13638 ; 13639 #pragma omp sections // OK 13640 { 13641 bar(); 13642 } 13643 } 13644 } 13645 #pragma omp taskloop 13646 for (int i = 0; i < 10; ++i) { 13647 #pragma omp parallel for 13648 for (int i = 0; i < 10; ++i) 13649 ; 13650 } 13651 #pragma omp taskloop 13652 for (int i = 0; i < 10; ++i) { 13653 #pragma omp parallel for simd 13654 for (int i = 0; i < 10; ++i) 13655 ; 13656 } 13657 #pragma omp taskloop 13658 for (int i = 0; i < 10; ++i) { 13659 #pragma omp parallel sections 13660 { 13661 bar(); 13662 } 13663 } 13664 #pragma omp taskloop 13665 for (int i = 0; i < 10; ++i) { 13666 #pragma omp task 13667 { 13668 bar(); 13669 } 13670 } 13671 #pragma omp taskloop 13672 for (int i = 0; i < 10; ++i) { 13673 #pragma omp taskyield 13674 bar(); 13675 } 13676 #pragma omp taskloop 13677 for (int i = 0; i < 10; ++i) { 13678 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 13679 bar(); 13680 } 13681 #pragma omp taskloop 13682 for (int i = 0; i < 10; ++i) { 13683 #pragma omp taskwait 13684 bar(); 13685 } 13686 #pragma omp taskloop 13687 for (int i = 0; i < 10; ++i) { 13688 #pragma omp flush 13689 bar(); 13690 } 13691 #pragma omp taskloop 13692 for (int i = 0; i < 10; ++i) { 13693 #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?}} 13694 bar(); 13695 } 13696 #pragma omp taskloop 13697 for (int i = 0; i < 10; ++i) { 13698 #pragma omp atomic 13699 ++a; 13700 } 13701 #pragma omp taskloop 13702 for (int i = 0; i < 10; ++i) { 13703 #pragma omp target 13704 ++a; 13705 } 13706 #pragma omp taskloop 13707 for (int i = 0; i < 10; ++i) { 13708 #pragma omp target parallel 13709 ++a; 13710 } 13711 #pragma omp taskloop 13712 for (int i = 0; i < 10; ++i) { 13713 #pragma omp target parallel for 13714 for (int i = 0; i < 10; ++i) 13715 ; 13716 } 13717 #pragma omp taskloop 13718 for (int i = 0; i < 10; ++i) { 13719 #pragma omp target enter data map(to: a) 13720 ++a; 13721 } 13722 #pragma omp taskloop 13723 for (int i = 0; i < 10; ++i) { 13724 #pragma omp target exit data map(from: a) 13725 ++a; 13726 } 13727 #pragma omp taskloop 13728 for (int i = 0; i < 10; ++i) { 13729 #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?}} 13730 ++a; 13731 } 13732 #pragma omp taskloop 13733 for (int i = 0; i < 10; ++i) { 13734 #pragma omp taskloop 13735 for (int i = 0; i < 10; ++i) 13736 ++a; 13737 } 13738 #pragma omp taskloop 13739 for (int i = 0; i < 10; ++i) { 13740 #pragma omp target update to(a) 13741 ++a; 13742 } 13743 #pragma omp taskloop 13744 for (int i = 0; i < 10; ++i) { 13745 #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?}} 13746 for (int i = 0; i < 10; ++i) 13747 ; 13748 } 13749 #pragma omp taskloop 13750 for (int i = 0; i < 10; ++i) { 13751 #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?}} 13752 for (int i = 0; i < 10; ++i) 13753 ; 13754 } 13755 #pragma omp taskloop 13756 for (int i = 0; i < 10; ++i) { 13757 #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?}} 13758 for (int i = 0; i < 10; ++i) 13759 ; 13760 } 13761 #pragma omp taskloop 13762 for (int i = 0; i < 10; ++i) { 13763 #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?}} 13764 for (int i = 0; i < 10; ++i) 13765 ; 13766 } 13767 #pragma omp taskloop 13768 for (int i = 0; i < 10; ++i) { 13769 #pragma omp target simd // OK 13770 for (int i = 0; i < 10; ++i) 13771 ; 13772 } 13773 #pragma omp taskloop 13774 for (int i = 0; i < 10; ++i) { 13775 #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?}} 13776 for (int i = 0; i < 10; ++i) 13777 ; 13778 } 13779 #pragma omp taskloop 13780 for (int i = 0; i < 10; ++i) { 13781 #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?}} 13782 for (int i = 0; i < 10; ++i) 13783 ; 13784 } 13785 #pragma omp taskloop 13786 for (int i = 0; i < 10; ++i) { 13787 #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?}} 13788 for (int i = 0; i < 10; ++i) 13789 ; 13790 } 13791 #pragma omp taskloop 13792 for (int i = 0; i < 10; ++i) { 13793 #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?}} 13794 for (int i = 0; i < 10; ++i) 13795 ; 13796 } 13797 #pragma omp taskloop 13798 for (int i = 0; i < 10; ++i) { 13799 #pragma omp target teams // OK 13800 a++; 13801 } 13802 #pragma omp taskloop 13803 for (int i = 0; i < 10; ++i) { 13804 #pragma omp target teams distribute // OK 13805 for (int i = 0; i < 10; ++i) 13806 ; 13807 } 13808 #pragma omp taskloop 13809 for (int i = 0; i < 10; ++i) { 13810 #pragma omp target teams distribute parallel for // OK 13811 for (int i = 0; i < 10; ++i) 13812 ; 13813 } 13814 #pragma omp taskloop 13815 for (int i = 0; i < 10; ++i) { 13816 #pragma omp target teams distribute parallel for simd // OK 13817 for (int i = 0; i < 10; ++i) 13818 ; 13819 } 13820 #pragma omp taskloop 13821 for (int i = 0; i < 10; ++i) { 13822 #pragma omp target teams distribute simd // OK 13823 for (int i = 0; i < 10; ++i) 13824 ; 13825 } 13826 13827 // DISTRIBUTE DIRECTIVE 13828 #pragma omp target 13829 #pragma omp teams 13830 #pragma omp distribute 13831 for (int i = 0; i < 10; ++i) { 13832 #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?}} 13833 for (int i = 0; i < 10; ++i) 13834 ; 13835 } 13836 #pragma omp target 13837 #pragma omp teams 13838 #pragma omp distribute 13839 for (int i = 0; i < 10; ++i) { 13840 #pragma omp for 13841 for (int i = 0; i < 10; ++i) 13842 ; 13843 } 13844 #pragma omp target 13845 #pragma omp teams 13846 #pragma omp distribute 13847 for (int i = 0; i < 10; ++i) { 13848 #pragma omp simd 13849 for (int i = 0; i < 10; ++i) 13850 ; 13851 } 13852 #pragma omp target 13853 #pragma omp teams 13854 #pragma omp distribute 13855 for (int i = 0; i < 10; ++i) { 13856 #pragma omp for simd 13857 for (int i = 0; i < 10; ++i) 13858 ; 13859 } 13860 #pragma omp target 13861 #pragma omp teams 13862 #pragma omp distribute 13863 for (int i = 0; i < 10; ++i) { 13864 #pragma omp parallel 13865 for (int i = 0; i < 10; ++i) 13866 ; 13867 } 13868 #pragma omp target 13869 #pragma omp teams 13870 #pragma omp distribute 13871 for (int i = 0; i < 10; ++i) { 13872 #pragma omp sections 13873 { 13874 bar(); 13875 } 13876 } 13877 #pragma omp target 13878 #pragma omp teams 13879 #pragma omp distribute 13880 for (int i = 0; i < 10; ++i) { 13881 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 13882 { 13883 bar(); 13884 } 13885 } 13886 #pragma omp target 13887 #pragma omp teams 13888 #pragma omp distribute 13889 for (int i = 0; i < 10; ++i) { 13890 #pragma omp single 13891 { 13892 bar(); 13893 } 13894 } 13895 #pragma omp target 13896 #pragma omp teams 13897 #pragma omp distribute 13898 for (int i = 0; i < 10; ++i) { 13899 #pragma omp master 13900 { 13901 bar(); 13902 } 13903 } 13904 #pragma omp target 13905 #pragma omp teams 13906 #pragma omp distribute 13907 for (int i = 0; i < 10; ++i) { 13908 #pragma omp critical 13909 { 13910 bar(); 13911 } 13912 } 13913 #pragma omp target 13914 #pragma omp teams 13915 #pragma omp distribute 13916 for (int i = 0; i < 10; ++i) { 13917 #pragma omp parallel 13918 { 13919 #pragma omp single 13920 { 13921 bar(); 13922 } 13923 } 13924 } 13925 #pragma omp target 13926 #pragma omp teams 13927 #pragma omp distribute 13928 for (int i = 0; i < 10; ++i) { 13929 #pragma omp parallel for 13930 for (int i = 0; i < 10; ++i) 13931 ; 13932 } 13933 #pragma omp target 13934 #pragma omp teams 13935 #pragma omp distribute 13936 for (int i = 0; i < 10; ++i) { 13937 #pragma omp parallel for simd 13938 for (int i = 0; i < 10; ++i) 13939 ; 13940 } 13941 #pragma omp target 13942 #pragma omp teams 13943 #pragma omp distribute 13944 for (int i = 0; i < 10; ++i) { 13945 #pragma omp parallel sections 13946 { 13947 bar(); 13948 } 13949 } 13950 #pragma omp target 13951 #pragma omp teams 13952 #pragma omp distribute 13953 for (int i = 0; i < 10; ++i) { 13954 #pragma omp task 13955 { 13956 bar(); 13957 } 13958 } 13959 #pragma omp target 13960 #pragma omp teams 13961 #pragma omp distribute 13962 for (int i = 0; i < 10; ++i) { 13963 #pragma omp taskyield 13964 bar(); 13965 } 13966 #pragma omp target 13967 #pragma omp teams 13968 #pragma omp distribute 13969 for (int i = 0; i < 10; ++i) { 13970 #pragma omp barrier 13971 bar(); 13972 } 13973 #pragma omp target 13974 #pragma omp teams 13975 #pragma omp distribute 13976 for (int i = 0; i < 10; ++i) { 13977 #pragma omp taskwait 13978 bar(); 13979 } 13980 #pragma omp target 13981 #pragma omp teams 13982 #pragma omp distribute 13983 for (int i = 0; i < 10; ++i) { 13984 #pragma omp flush 13985 bar(); 13986 } 13987 #pragma omp target 13988 #pragma omp teams 13989 #pragma omp distribute 13990 for (int i = 0; i < 10; ++i) { 13991 #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?}} 13992 bar(); 13993 } 13994 #pragma omp target 13995 #pragma omp teams 13996 #pragma omp distribute 13997 for (int i = 0; i < 10; ++i) { 13998 #pragma omp atomic 13999 ++a; 14000 } 14001 #pragma omp target 14002 #pragma omp teams 14003 #pragma omp distribute 14004 for (int i = 0; i < 10; ++i) { 14005 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14006 ++a; 14007 } 14008 #pragma omp target 14009 #pragma omp teams 14010 #pragma omp distribute 14011 for (int i = 0; i < 10; ++i) { 14012 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14013 ++a; 14014 } 14015 #pragma omp target 14016 #pragma omp teams 14017 #pragma omp distribute 14018 for (int i = 0; i < 10; ++i) { 14019 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14020 for (int i = 0; i < 10; ++i) 14021 ; 14022 } 14023 #pragma omp target 14024 #pragma omp teams 14025 #pragma omp distribute 14026 for (int i = 0; i < 10; ++i) { 14027 #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?}} 14028 ++a; 14029 } 14030 #pragma omp target 14031 #pragma omp teams 14032 #pragma omp distribute 14033 for (int i = 0; i < 10; ++i) { 14034 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14035 ++a; 14036 } 14037 #pragma omp target 14038 #pragma omp teams 14039 #pragma omp distribute 14040 for (int i = 0; i < 10; ++i) { 14041 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14042 ++a; 14043 } 14044 #pragma omp target 14045 #pragma omp teams 14046 #pragma omp distribute 14047 for (int i = 0; i < 10; ++i) { 14048 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14049 ++a; 14050 } 14051 #pragma omp target 14052 #pragma omp teams 14053 #pragma omp distribute 14054 for (int i = 0; i < 10; ++i) { 14055 #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?}} 14056 for (int i = 0; i < 10; ++i) 14057 ++a; 14058 } 14059 #pragma omp target 14060 #pragma omp teams 14061 #pragma omp distribute 14062 for (int i = 0; i < 10; ++i) { 14063 #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?}} 14064 for (int i = 0; i < 10; ++i) 14065 ++a; 14066 } 14067 #pragma omp target 14068 #pragma omp teams 14069 #pragma omp distribute 14070 for (int i = 0; i < 10; ++i) { 14071 #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?}} 14072 for (int i = 0; i < 10; ++i) 14073 ++a; 14074 } 14075 #pragma omp target 14076 #pragma omp teams 14077 #pragma omp distribute 14078 for (int i = 0; i < 10; ++i) { 14079 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14080 for (int i = 0; i < 10; ++i) 14081 ++a; 14082 } 14083 #pragma omp target 14084 #pragma omp teams 14085 #pragma omp distribute 14086 for (int i = 0; i < 10; ++i) { 14087 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14088 for (int i = 0; i < 10; ++i) 14089 ++a; 14090 } 14091 #pragma omp target 14092 #pragma omp teams 14093 #pragma omp distribute 14094 for (int i = 0; i < 10; ++i) { 14095 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14096 for (int i = 0; i < 10; ++i) 14097 ++a; 14098 } 14099 #pragma omp target 14100 #pragma omp teams 14101 #pragma omp distribute 14102 for (int i = 0; i < 10; ++i) { 14103 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14104 for (int i = 0; i < 10; ++i) 14105 ++a; 14106 } 14107 #pragma omp target 14108 #pragma omp teams 14109 #pragma omp distribute 14110 for (int i = 0; i < 10; ++i) { 14111 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14112 for (int i = 0; i < 10; ++i) 14113 ++a; 14114 } 14115 #pragma omp target 14116 #pragma omp teams 14117 #pragma omp distribute 14118 for (int i = 0; i < 10; ++i) { 14119 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14120 for (int i = 0; i < 10; ++i) 14121 ++a; 14122 } 14123 #pragma omp target 14124 #pragma omp teams 14125 #pragma omp distribute 14126 for (int i = 0; i < 10; ++i) { 14127 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14128 for (int i = 0; i < 10; ++i) 14129 ++a; 14130 } 14131 #pragma omp target 14132 #pragma omp teams 14133 #pragma omp distribute 14134 for (int i = 0; i < 10; ++i) { 14135 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14136 for (int i = 0; i < 10; ++i) 14137 ++a; 14138 } 14139 14140 // DISTRIBUTE PARALLEL FOR DIRECTIVE 14141 #pragma omp target 14142 #pragma omp teams 14143 #pragma omp distribute parallel for 14144 for (int i = 0; i < 10; ++i) { 14145 #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?}} 14146 for (int i = 0; i < 10; ++i) 14147 ; 14148 } 14149 14150 #pragma omp target 14151 #pragma omp teams 14152 #pragma omp distribute parallel for 14153 for (int i = 0; i < 10; ++i) { 14154 #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?}} 14155 for (int i = 0; i < 10; ++i) 14156 ; 14157 } 14158 #pragma omp target 14159 #pragma omp teams 14160 #pragma omp distribute parallel for 14161 for (int i = 0; i < 10; ++i) { 14162 #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?}} 14163 for (int i = 0; i < 10; ++i) 14164 ; 14165 } 14166 #pragma omp target 14167 #pragma omp teams 14168 #pragma omp distribute parallel for 14169 for (int i = 0; i < 10; ++i) { 14170 #pragma omp simd 14171 for (int i = 0; i < 10; ++i) 14172 ; 14173 } 14174 #pragma omp target 14175 #pragma omp teams 14176 #pragma omp distribute parallel for 14177 for (int i = 0; i < 10; ++i) { 14178 #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?}} 14179 for (int i = 0; i < 10; ++i) 14180 ; 14181 } 14182 #pragma omp target 14183 #pragma omp teams 14184 #pragma omp distribute parallel for 14185 for (int i = 0; i < 10; ++i) { 14186 #pragma omp parallel 14187 for (int i = 0; i < 10; ++i) 14188 ; 14189 } 14190 #pragma omp target 14191 #pragma omp teams 14192 #pragma omp distribute parallel for 14193 for (int i = 0; i < 10; ++i) { 14194 #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?}} 14195 { 14196 bar(); 14197 } 14198 } 14199 #pragma omp target 14200 #pragma omp teams 14201 #pragma omp distribute parallel for 14202 for (int i = 0; i < 10; ++i) { 14203 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 14204 { 14205 bar(); 14206 } 14207 } 14208 #pragma omp target 14209 #pragma omp teams 14210 #pragma omp distribute parallel for 14211 for (int i = 0; i < 10; ++i) { 14212 #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?}} 14213 { 14214 bar(); 14215 } 14216 } 14217 #pragma omp target 14218 #pragma omp teams 14219 #pragma omp distribute parallel for 14220 for (int i = 0; i < 10; ++i) { 14221 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14222 { 14223 bar(); 14224 } 14225 } 14226 #pragma omp target 14227 #pragma omp teams 14228 #pragma omp distribute parallel for 14229 for (int i = 0; i < 10; ++i) { 14230 #pragma omp critical 14231 { 14232 bar(); 14233 } 14234 } 14235 #pragma omp target 14236 #pragma omp teams 14237 #pragma omp distribute parallel for 14238 for (int i = 0; i < 10; ++i) { 14239 #pragma omp parallel 14240 { 14241 #pragma omp single 14242 { 14243 bar(); 14244 } 14245 } 14246 } 14247 #pragma omp target 14248 #pragma omp teams 14249 #pragma omp distribute parallel for 14250 for (int i = 0; i < 10; ++i) { 14251 #pragma omp parallel for 14252 for (int i = 0; i < 10; ++i) 14253 ; 14254 } 14255 #pragma omp target 14256 #pragma omp teams 14257 #pragma omp distribute parallel for 14258 for (int i = 0; i < 10; ++i) { 14259 #pragma omp parallel for simd 14260 for (int i = 0; i < 10; ++i) 14261 ; 14262 } 14263 #pragma omp target 14264 #pragma omp teams 14265 #pragma omp distribute parallel for 14266 for (int i = 0; i < 10; ++i) { 14267 #pragma omp parallel sections 14268 { 14269 bar(); 14270 } 14271 } 14272 #pragma omp target 14273 #pragma omp teams 14274 #pragma omp distribute parallel for 14275 for (int i = 0; i < 10; ++i) { 14276 #pragma omp task 14277 { 14278 bar(); 14279 } 14280 } 14281 #pragma omp target 14282 #pragma omp teams 14283 #pragma omp distribute parallel for 14284 for (int i = 0; i < 10; ++i) { 14285 #pragma omp taskyield 14286 bar(); 14287 } 14288 #pragma omp target 14289 #pragma omp teams 14290 #pragma omp distribute parallel for 14291 for (int i = 0; i < 10; ++i) { 14292 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14293 bar(); 14294 } 14295 #pragma omp target 14296 #pragma omp teams 14297 #pragma omp distribute parallel for 14298 for (int i = 0; i < 10; ++i) { 14299 #pragma omp taskwait 14300 bar(); 14301 } 14302 #pragma omp target 14303 #pragma omp teams 14304 #pragma omp distribute parallel for 14305 for (int i = 0; i < 10; ++i) { 14306 #pragma omp flush 14307 bar(); 14308 } 14309 #pragma omp target 14310 #pragma omp teams 14311 #pragma omp distribute parallel for 14312 for (int i = 0; i < 10; ++i) { 14313 #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?}} 14314 bar(); 14315 } 14316 #pragma omp target 14317 #pragma omp teams 14318 #pragma omp distribute parallel for 14319 for (int i = 0; i < 10; ++i) { 14320 #pragma omp atomic 14321 ++a; 14322 } 14323 #pragma omp target 14324 #pragma omp teams 14325 #pragma omp distribute parallel for 14326 for (int i = 0; i < 10; ++i) { 14327 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14328 ++a; 14329 } 14330 #pragma omp target 14331 #pragma omp teams 14332 #pragma omp distribute parallel for 14333 for (int i = 0; i < 10; ++i) { 14334 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14335 ++a; 14336 } 14337 #pragma omp target 14338 #pragma omp teams 14339 #pragma omp distribute parallel for 14340 for (int i = 0; i < 10; ++i) { 14341 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14342 for (int i = 0; i < 10; ++i) 14343 ; 14344 } 14345 #pragma omp target 14346 #pragma omp teams 14347 #pragma omp distribute parallel for 14348 for (int i = 0; i < 10; ++i) { 14349 #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?}} 14350 ++a; 14351 } 14352 #pragma omp target 14353 #pragma omp teams 14354 #pragma omp distribute parallel for 14355 for (int i = 0; i < 10; ++i) { 14356 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14357 ++a; 14358 } 14359 #pragma omp target 14360 #pragma omp teams 14361 #pragma omp distribute parallel for 14362 for (int i = 0; i < 10; ++i) { 14363 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14364 ++a; 14365 } 14366 #pragma omp target 14367 #pragma omp teams 14368 #pragma omp distribute parallel for 14369 for (int i = 0; i < 10; ++i) { 14370 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14371 ++a; 14372 } 14373 #pragma omp target 14374 #pragma omp teams 14375 #pragma omp distribute parallel for 14376 for (int i = 0; i < 10; ++i) { 14377 #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?}} 14378 for (int i = 0; i < 10; ++i) 14379 ++a; 14380 } 14381 #pragma omp target 14382 #pragma omp teams 14383 #pragma omp distribute parallel for 14384 for (int i = 0; i < 10; ++i) { 14385 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14386 for (int i = 0; i < 10; ++i) 14387 ++a; 14388 } 14389 #pragma omp target 14390 #pragma omp teams 14391 #pragma omp distribute parallel for 14392 for (int i = 0; i < 10; ++i) { 14393 #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?}} 14394 for (int i = 0; i < 10; ++i) 14395 ++a; 14396 } 14397 #pragma omp target 14398 #pragma omp teams 14399 #pragma omp distribute parallel for 14400 for (int i = 0; i < 10; ++i) { 14401 #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?}} 14402 for (int i = 0; i < 10; ++i) 14403 ++a; 14404 } 14405 #pragma omp target 14406 #pragma omp teams 14407 #pragma omp distribute parallel for 14408 for (int i = 0; i < 10; ++i) { 14409 #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?}} 14410 for (int i = 0; i < 10; ++i) 14411 ++a; 14412 } 14413 #pragma omp target 14414 #pragma omp teams 14415 #pragma omp distribute parallel for 14416 for (int i = 0; i < 10; ++i) { 14417 #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?}} 14418 for (int i = 0; i < 10; ++i) 14419 ++a; 14420 } 14421 #pragma omp target 14422 #pragma omp teams 14423 #pragma omp distribute parallel for 14424 for (int i = 0; i < 10; ++i) { 14425 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14426 ++a; 14427 } 14428 #pragma omp target 14429 #pragma omp teams 14430 #pragma omp distribute parallel for 14431 for (int i = 0; i < 10; ++i) { 14432 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14433 for (int i = 0; i < 10; ++i) 14434 ++a; 14435 } 14436 #pragma omp target 14437 #pragma omp teams 14438 #pragma omp distribute parallel for 14439 for (int i = 0; i < 10; ++i) { 14440 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14441 for (int i = 0; i < 10; ++i) 14442 ++a; 14443 } 14444 #pragma omp target 14445 #pragma omp teams 14446 #pragma omp distribute parallel for 14447 for (int i = 0; i < 10; ++i) { 14448 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14449 for (int i = 0; i < 10; ++i) 14450 ++a; 14451 } 14452 #pragma omp target 14453 #pragma omp teams 14454 #pragma omp distribute parallel for 14455 for (int i = 0; i < 10; ++i) { 14456 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14457 for (int i = 0; i < 10; ++i) 14458 ++a; 14459 } 14460 14461 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 14462 #pragma omp target 14463 #pragma omp teams 14464 #pragma omp distribute parallel for simd 14465 for (int i = 0; i < 10; ++i) { 14466 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14467 for (int i = 0; i < 10; ++i) 14468 ; 14469 } 14470 #pragma omp target 14471 #pragma omp teams 14472 #pragma omp distribute parallel for simd 14473 for (int i = 0; i < 10; ++i) { 14474 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14475 for (int i = 0; i < 10; ++i) 14476 ; 14477 } 14478 #pragma omp target 14479 #pragma omp teams 14480 #pragma omp distribute parallel for simd 14481 for (int i = 0; i < 10; ++i) { 14482 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14483 for (int i = 0; i < 10; ++i) 14484 ; 14485 } 14486 #pragma omp target 14487 #pragma omp teams 14488 #pragma omp distribute parallel for simd 14489 for (int i = 0; i < 10; ++i) { 14490 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 14491 for (int i = 0; i < 10; ++i) 14492 ; 14493 } 14494 #pragma omp target 14495 #pragma omp teams 14496 #pragma omp distribute parallel for simd 14497 for (int i = 0; i < 10; ++i) { 14498 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14499 for (int i = 0; i < 10; ++i) 14500 ; 14501 } 14502 #pragma omp target 14503 #pragma omp teams 14504 #pragma omp distribute parallel for simd 14505 for (int i = 0; i < 10; ++i) { 14506 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14507 for (int i = 0; i < 10; ++i) 14508 ; 14509 } 14510 #pragma omp target 14511 #pragma omp teams 14512 #pragma omp distribute parallel for simd 14513 for (int i = 0; i < 10; ++i) { 14514 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14515 { 14516 bar(); 14517 } 14518 } 14519 #pragma omp target 14520 #pragma omp teams 14521 #pragma omp distribute parallel for simd 14522 for (int i = 0; i < 10; ++i) { 14523 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14524 { 14525 bar(); 14526 } 14527 } 14528 #pragma omp target 14529 #pragma omp teams 14530 #pragma omp distribute parallel for simd 14531 for (int i = 0; i < 10; ++i) { 14532 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14533 { 14534 bar(); 14535 } 14536 } 14537 #pragma omp target 14538 #pragma omp teams 14539 #pragma omp distribute parallel for simd 14540 for (int i = 0; i < 10; ++i) { 14541 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14542 { 14543 bar(); 14544 } 14545 } 14546 #pragma omp target 14547 #pragma omp teams 14548 #pragma omp distribute parallel for simd 14549 for (int i = 0; i < 10; ++i) { 14550 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14551 { 14552 bar(); 14553 } 14554 } 14555 #pragma omp target 14556 #pragma omp teams 14557 #pragma omp distribute parallel for simd 14558 for (int i = 0; i < 10; ++i) { 14559 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14560 { 14561 #pragma omp single 14562 { 14563 bar(); 14564 } 14565 } 14566 } 14567 #pragma omp target 14568 #pragma omp teams 14569 #pragma omp distribute parallel for simd 14570 for (int i = 0; i < 10; ++i) { 14571 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14572 for (int i = 0; i < 10; ++i) 14573 ; 14574 } 14575 #pragma omp target 14576 #pragma omp teams 14577 #pragma omp distribute parallel for simd 14578 for (int i = 0; i < 10; ++i) { 14579 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14580 for (int i = 0; i < 10; ++i) 14581 ; 14582 } 14583 #pragma omp target 14584 #pragma omp teams 14585 #pragma omp distribute parallel for simd 14586 for (int i = 0; i < 10; ++i) { 14587 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14588 { 14589 bar(); 14590 } 14591 } 14592 #pragma omp target 14593 #pragma omp teams 14594 #pragma omp distribute parallel for simd 14595 for (int i = 0; i < 10; ++i) { 14596 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14597 { 14598 bar(); 14599 } 14600 } 14601 #pragma omp target 14602 #pragma omp teams 14603 #pragma omp distribute parallel for simd 14604 for (int i = 0; i < 10; ++i) { 14605 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14606 bar(); 14607 } 14608 #pragma omp target 14609 #pragma omp teams 14610 #pragma omp distribute parallel for simd 14611 for (int i = 0; i < 10; ++i) { 14612 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14613 bar(); 14614 } 14615 #pragma omp target 14616 #pragma omp teams 14617 #pragma omp distribute parallel for simd 14618 for (int i = 0; i < 10; ++i) { 14619 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14620 bar(); 14621 } 14622 #pragma omp target 14623 #pragma omp teams 14624 #pragma omp distribute parallel for simd 14625 for (int i = 0; i < 10; ++i) { 14626 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14627 bar(); 14628 } 14629 #pragma omp target 14630 #pragma omp teams 14631 #pragma omp distribute parallel for simd 14632 for (int i = 0; i < 10; ++i) { 14633 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14634 bar(); 14635 } 14636 #pragma omp target 14637 #pragma omp teams 14638 #pragma omp distribute parallel for simd 14639 for (int i = 0; i < 10; ++i) { 14640 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14641 ++a; 14642 } 14643 #pragma omp target 14644 #pragma omp teams 14645 #pragma omp distribute parallel for simd 14646 for (int i = 0; i < 10; ++i) { 14647 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14648 ++a; 14649 } 14650 #pragma omp target 14651 #pragma omp teams 14652 #pragma omp distribute parallel for simd 14653 for (int i = 0; i < 10; ++i) { 14654 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14655 ++a; 14656 } 14657 #pragma omp target 14658 #pragma omp teams 14659 #pragma omp distribute parallel for simd 14660 for (int i = 0; i < 10; ++i) { 14661 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14662 ++a; 14663 } 14664 #pragma omp target 14665 #pragma omp teams 14666 #pragma omp distribute parallel for simd 14667 for (int i = 0; i < 10; ++i) { 14668 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14669 ++a; 14670 } 14671 #pragma omp target 14672 #pragma omp teams 14673 #pragma omp distribute parallel for simd 14674 for (int i = 0; i < 10; ++i) { 14675 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14676 ++a; 14677 } 14678 #pragma omp target 14679 #pragma omp teams 14680 #pragma omp distribute parallel for simd 14681 for (int i = 0; i < 10; ++i) { 14682 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14683 ++a; 14684 } 14685 #pragma omp target 14686 #pragma omp teams 14687 #pragma omp distribute parallel for simd 14688 for (int i = 0; i < 10; ++i) { 14689 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14690 for (int i = 0; i < 10; ++i) 14691 ; 14692 } 14693 #pragma omp target 14694 #pragma omp teams 14695 #pragma omp distribute parallel for simd 14696 for (int i = 0; i < 10; ++i) { 14697 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14698 for (int i = 0; i < 10; ++i) 14699 ; 14700 } 14701 #pragma omp target 14702 #pragma omp teams 14703 #pragma omp distribute parallel for simd 14704 for (int i = 0; i < 10; ++i) { 14705 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14706 for (int i = 0; i < 10; ++i) 14707 ; 14708 } 14709 #pragma omp target 14710 #pragma omp teams 14711 #pragma omp distribute parallel for simd 14712 for (int i = 0; i < 10; ++i) { 14713 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14714 for (int i = 0; i < 10; ++i) 14715 ; 14716 } 14717 #pragma omp target 14718 #pragma omp teams 14719 #pragma omp distribute parallel for simd 14720 for (int i = 0; i < 10; ++i) { 14721 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14722 for (int i = 0; i < 10; ++i) 14723 ; 14724 } 14725 #pragma omp target 14726 #pragma omp teams 14727 #pragma omp distribute parallel for simd 14728 for (int i = 0; i < 10; ++i) { 14729 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14730 for (int i = 0; i < 10; ++i) 14731 ; 14732 } 14733 #pragma omp target 14734 #pragma omp teams 14735 #pragma omp distribute parallel for simd 14736 for (int i = 0; i < 10; ++i) { 14737 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14738 a++; 14739 } 14740 #pragma omp target 14741 #pragma omp teams 14742 #pragma omp distribute parallel for simd 14743 for (int i = 0; i < 10; ++i) { 14744 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14745 for (int i = 0; i < 10; ++i) 14746 ; 14747 } 14748 #pragma omp target 14749 #pragma omp teams 14750 #pragma omp distribute parallel for simd 14751 for (int i = 0; i < 10; ++i) { 14752 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14753 for (int i = 0; i < 10; ++i) 14754 ; 14755 } 14756 #pragma omp target 14757 #pragma omp teams 14758 #pragma omp distribute parallel for simd 14759 for (int i = 0; i < 10; ++i) { 14760 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14761 for (int i = 0; i < 10; ++i) 14762 ; 14763 } 14764 #pragma omp target 14765 #pragma omp teams 14766 #pragma omp distribute parallel for simd 14767 for (int i = 0; i < 10; ++i) { 14768 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14769 for (int i = 0; i < 10; ++i) 14770 ; 14771 } 14772 14773 // DISTRIBUTE SIMD DIRECTIVE 14774 #pragma omp target 14775 #pragma omp teams 14776 #pragma omp distribute simd 14777 for (int i = 0; i < 10; ++i) { 14778 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14779 for (int i = 0; i < 10; ++i) 14780 ; 14781 } 14782 #pragma omp target 14783 #pragma omp teams 14784 #pragma omp distribute simd 14785 for (int i = 0; i < 10; ++i) { 14786 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14787 for (int i = 0; i < 10; ++i) 14788 ; 14789 } 14790 #pragma omp target 14791 #pragma omp teams 14792 #pragma omp distribute simd 14793 for (int i = 0; i < 10; ++i) { 14794 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14795 for (int i = 0; i < 10; ++i) 14796 ; 14797 } 14798 #pragma omp target 14799 #pragma omp teams 14800 #pragma omp distribute simd 14801 for (int i = 0; i < 10; ++i) { 14802 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 14803 for (int i = 0; i < 10; ++i) 14804 ; 14805 } 14806 #pragma omp target 14807 #pragma omp teams 14808 #pragma omp distribute simd 14809 for (int i = 0; i < 10; ++i) { 14810 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14811 for (int i = 0; i < 10; ++i) 14812 ; 14813 } 14814 #pragma omp target 14815 #pragma omp teams 14816 #pragma omp distribute simd 14817 for (int i = 0; i < 10; ++i) { 14818 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14819 for (int i = 0; i < 10; ++i) 14820 ; 14821 } 14822 #pragma omp target 14823 #pragma omp teams 14824 #pragma omp distribute simd 14825 for (int i = 0; i < 10; ++i) { 14826 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14827 { 14828 bar(); 14829 } 14830 } 14831 #pragma omp target 14832 #pragma omp teams 14833 #pragma omp distribute simd 14834 for (int i = 0; i < 10; ++i) { 14835 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14836 { 14837 bar(); 14838 } 14839 } 14840 #pragma omp target 14841 #pragma omp teams 14842 #pragma omp distribute simd 14843 for (int i = 0; i < 10; ++i) { 14844 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14845 { 14846 bar(); 14847 } 14848 } 14849 #pragma omp target 14850 #pragma omp teams 14851 #pragma omp distribute simd 14852 for (int i = 0; i < 10; ++i) { 14853 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14854 { 14855 bar(); 14856 } 14857 } 14858 #pragma omp target 14859 #pragma omp teams 14860 #pragma omp distribute simd 14861 for (int i = 0; i < 10; ++i) { 14862 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14863 { 14864 bar(); 14865 } 14866 } 14867 #pragma omp target 14868 #pragma omp teams 14869 #pragma omp distribute simd 14870 for (int i = 0; i < 10; ++i) { 14871 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14872 { 14873 #pragma omp single 14874 { 14875 bar(); 14876 } 14877 } 14878 } 14879 #pragma omp target 14880 #pragma omp teams 14881 #pragma omp distribute simd 14882 for (int i = 0; i < 10; ++i) { 14883 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14884 for (int i = 0; i < 10; ++i) 14885 ; 14886 } 14887 #pragma omp target 14888 #pragma omp teams 14889 #pragma omp distribute simd 14890 for (int i = 0; i < 10; ++i) { 14891 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14892 for (int i = 0; i < 10; ++i) 14893 ; 14894 } 14895 #pragma omp target 14896 #pragma omp teams 14897 #pragma omp distribute simd 14898 for (int i = 0; i < 10; ++i) { 14899 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14900 { 14901 bar(); 14902 } 14903 } 14904 #pragma omp target 14905 #pragma omp teams 14906 #pragma omp distribute simd 14907 for (int i = 0; i < 10; ++i) { 14908 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14909 { 14910 bar(); 14911 } 14912 } 14913 #pragma omp target 14914 #pragma omp teams 14915 #pragma omp distribute simd 14916 for (int i = 0; i < 10; ++i) { 14917 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14918 bar(); 14919 } 14920 #pragma omp target 14921 #pragma omp teams 14922 #pragma omp distribute simd 14923 for (int i = 0; i < 10; ++i) { 14924 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14925 bar(); 14926 } 14927 #pragma omp target 14928 #pragma omp teams 14929 #pragma omp distribute simd 14930 for (int i = 0; i < 10; ++i) { 14931 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14932 bar(); 14933 } 14934 #pragma omp target 14935 #pragma omp teams 14936 #pragma omp distribute simd 14937 for (int i = 0; i < 10; ++i) { 14938 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14939 bar(); 14940 } 14941 #pragma omp target 14942 #pragma omp teams 14943 #pragma omp distribute simd 14944 for (int i = 0; i < 10; ++i) { 14945 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14946 bar(); 14947 } 14948 #pragma omp target 14949 #pragma omp teams 14950 #pragma omp distribute simd 14951 for (int i = 0; i < 10; ++i) { 14952 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14953 ++a; 14954 } 14955 #pragma omp target 14956 #pragma omp teams 14957 #pragma omp distribute simd 14958 for (int i = 0; i < 10; ++i) { 14959 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14960 ++a; 14961 } 14962 #pragma omp target 14963 #pragma omp teams 14964 #pragma omp distribute simd 14965 for (int i = 0; i < 10; ++i) { 14966 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14967 ++a; 14968 } 14969 #pragma omp target 14970 #pragma omp teams 14971 #pragma omp distribute simd 14972 for (int i = 0; i < 10; ++i) { 14973 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14974 ++a; 14975 } 14976 #pragma omp target 14977 #pragma omp teams 14978 #pragma omp distribute simd 14979 for (int i = 0; i < 10; ++i) { 14980 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14981 ++a; 14982 } 14983 #pragma omp target 14984 #pragma omp teams 14985 #pragma omp distribute simd 14986 for (int i = 0; i < 10; ++i) { 14987 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14988 ++a; 14989 } 14990 #pragma omp target 14991 #pragma omp teams 14992 #pragma omp distribute simd 14993 for (int i = 0; i < 10; ++i) { 14994 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14995 ++a; 14996 } 14997 #pragma omp target 14998 #pragma omp teams 14999 #pragma omp distribute simd 15000 for (int i = 0; i < 10; ++i) { 15001 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15002 for (int i = 0; i < 10; ++i) 15003 ; 15004 } 15005 #pragma omp target 15006 #pragma omp teams 15007 #pragma omp distribute simd 15008 for (int i = 0; i < 10; ++i) { 15009 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15010 for (int i = 0; i < 10; ++i) 15011 ; 15012 } 15013 #pragma omp target 15014 #pragma omp teams 15015 #pragma omp distribute simd 15016 for (int i = 0; i < 10; ++i) { 15017 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15018 for (int i = 0; i < 10; ++i) 15019 ; 15020 } 15021 #pragma omp target 15022 #pragma omp teams 15023 #pragma omp distribute simd 15024 for (int i = 0; i < 10; ++i) { 15025 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15026 for (int i = 0; i < 10; ++i) 15027 ; 15028 } 15029 #pragma omp target 15030 #pragma omp teams 15031 #pragma omp distribute simd 15032 for (int i = 0; i < 10; ++i) { 15033 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15034 for (int i = 0; i < 10; ++i) 15035 ; 15036 } 15037 #pragma omp target 15038 #pragma omp teams 15039 #pragma omp distribute simd 15040 for (int i = 0; i < 10; ++i) { 15041 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15042 for (int i = 0; i < 10; ++i) 15043 ; 15044 } 15045 #pragma omp target 15046 #pragma omp teams 15047 #pragma omp distribute simd 15048 for (int i = 0; i < 10; ++i) { 15049 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15050 a++; 15051 } 15052 #pragma omp target 15053 #pragma omp teams 15054 #pragma omp distribute simd 15055 for (int i = 0; i < 10; ++i) { 15056 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15057 for (int i = 0; i < 10; ++i) 15058 ; 15059 } 15060 #pragma omp target 15061 #pragma omp teams 15062 #pragma omp distribute simd 15063 for (int i = 0; i < 10; ++i) { 15064 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15065 for (int i = 0; i < 10; ++i) 15066 ; 15067 } 15068 #pragma omp target 15069 #pragma omp teams 15070 #pragma omp distribute simd 15071 for (int i = 0; i < 10; ++i) { 15072 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15073 for (int i = 0; i < 10; ++i) 15074 ; 15075 } 15076 #pragma omp target 15077 #pragma omp teams 15078 #pragma omp distribute simd 15079 for (int i = 0; i < 10; ++i) { 15080 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15081 for (int i = 0; i < 10; ++i) 15082 ; 15083 } 15084 15085 // TARGET SIMD DIRECTIVE 15086 #pragma omp target simd 15087 for (int i = 0; i < 10; ++i) { 15088 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15089 for (int i = 0; i < 10; ++i) 15090 ; 15091 } 15092 #pragma omp target simd 15093 for (int i = 0; i < 10; ++i) { 15094 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15095 for (int i = 0; i < 10; ++i) 15096 ; 15097 } 15098 #pragma omp target simd 15099 for (int i = 0; i < 10; ++i) { 15100 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15101 for (int i = 0; i < 10; ++i) 15102 ; 15103 } 15104 #pragma omp target simd 15105 for (int i = 0; i < 10; ++i) { 15106 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15107 for (int i = 0; i < 10; ++i) 15108 ; 15109 } 15110 #pragma omp target simd 15111 for (int i = 0; i < 10; ++i) { 15112 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15113 for (int i = 0; i < 10; ++i) 15114 ; 15115 } 15116 #pragma omp target simd 15117 for (int i = 0; i < 10; ++i) { 15118 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15119 for (int i = 0; i < 10; ++i) 15120 ; 15121 } 15122 #pragma omp target simd 15123 for (int i = 0; i < 10; ++i) { 15124 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15125 { 15126 bar(); 15127 } 15128 } 15129 #pragma omp target simd 15130 for (int i = 0; i < 10; ++i) { 15131 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15132 { 15133 bar(); 15134 } 15135 } 15136 #pragma omp target simd 15137 for (int i = 0; i < 10; ++i) { 15138 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15139 { 15140 bar(); 15141 } 15142 } 15143 #pragma omp target simd 15144 for (int i = 0; i < 10; ++i) { 15145 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15146 { 15147 bar(); 15148 } 15149 } 15150 #pragma omp target simd 15151 for (int i = 0; i < 10; ++i) { 15152 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15153 { 15154 bar(); 15155 } 15156 } 15157 #pragma omp target simd 15158 for (int i = 0; i < 10; ++i) { 15159 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15160 { 15161 #pragma omp single 15162 { 15163 bar(); 15164 } 15165 } 15166 } 15167 #pragma omp target simd 15168 for (int i = 0; i < 10; ++i) { 15169 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15170 for (int i = 0; i < 10; ++i) 15171 ; 15172 } 15173 #pragma omp target simd 15174 for (int i = 0; i < 10; ++i) { 15175 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15176 for (int i = 0; i < 10; ++i) 15177 ; 15178 } 15179 #pragma omp target simd 15180 for (int i = 0; i < 10; ++i) { 15181 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15182 { 15183 bar(); 15184 } 15185 } 15186 #pragma omp target simd 15187 for (int i = 0; i < 10; ++i) { 15188 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15189 { 15190 bar(); 15191 } 15192 } 15193 #pragma omp target simd 15194 for (int i = 0; i < 10; ++i) { 15195 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15196 bar(); 15197 } 15198 #pragma omp target simd 15199 for (int i = 0; i < 10; ++i) { 15200 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15201 bar(); 15202 } 15203 #pragma omp target simd 15204 for (int i = 0; i < 10; ++i) { 15205 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15206 bar(); 15207 } 15208 #pragma omp target simd 15209 for (int i = 0; i < 10; ++i) { 15210 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15211 bar(); 15212 } 15213 #pragma omp target simd 15214 for (int i = 0; i < 10; ++i) { 15215 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15216 bar(); 15217 } 15218 #pragma omp target simd 15219 for (int i = 0; i < 10; ++i) { 15220 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15221 ++a; 15222 } 15223 #pragma omp target simd 15224 for (int i = 0; i < 10; ++i) { 15225 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15226 ++a; 15227 } 15228 #pragma omp target simd 15229 for (int i = 0; i < 10; ++i) { 15230 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15231 ++a; 15232 } 15233 #pragma omp target simd 15234 for (int i = 0; i < 10; ++i) { 15235 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15236 ++a; 15237 } 15238 #pragma omp target simd 15239 for (int i = 0; i < 10; ++i) { 15240 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15241 ++a; 15242 } 15243 #pragma omp target simd 15244 for (int i = 0; i < 10; ++i) { 15245 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15246 ++a; 15247 } 15248 #pragma omp target simd 15249 for (int i = 0; i < 10; ++i) { 15250 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15251 ++a; 15252 } 15253 #pragma omp target simd 15254 for (int i = 0; i < 10; ++i) { 15255 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15256 for (int i = 0; i < 10; ++i) 15257 ; 15258 } 15259 #pragma omp target simd 15260 for (int i = 0; i < 10; ++i) { 15261 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15262 for (int i = 0; i < 10; ++i) 15263 ; 15264 } 15265 #pragma omp target simd 15266 for (int i = 0; i < 10; ++i) { 15267 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15268 for (int i = 0; i < 10; ++i) 15269 ; 15270 } 15271 #pragma omp target simd 15272 for (int i = 0; i < 10; ++i) { 15273 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15274 for (int i = 0; i < 10; ++i) 15275 ; 15276 } 15277 #pragma omp target simd 15278 for (int i = 0; i < 10; ++i) { 15279 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15280 for (int i = 0; i < 10; ++i) 15281 ; 15282 } 15283 #pragma omp target simd 15284 for (int i = 0; i < 10; ++i) { 15285 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15286 for (int i = 0; i < 10; ++i) 15287 ; 15288 } 15289 #pragma omp target simd 15290 for (int i = 0; i < 10; ++i) { 15291 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15292 a++; 15293 } 15294 #pragma omp target simd 15295 for (int i = 0; i < 10; ++i) { 15296 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15297 for (int i = 0; i < 10; ++i) 15298 ; 15299 } 15300 #pragma omp target simd 15301 for (int i = 0; i < 10; ++i) { 15302 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15303 for (int i = 0; i < 10; ++i) 15304 ; 15305 } 15306 #pragma omp target simd 15307 for (int i = 0; i < 10; ++i) { 15308 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15309 for (int i = 0; i < 10; ++i) 15310 ; 15311 } 15312 #pragma omp target simd 15313 for (int i = 0; i < 10; ++i) { 15314 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15315 for (int i = 0; i < 10; ++i) 15316 ; 15317 } 15318 15319 // TEAMS DISTRIBUTE DIRECTIVE 15320 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 15321 for (int i = 0; i < 10; ++i) 15322 ; 15323 #pragma omp target 15324 #pragma omp teams distribute 15325 for (int i = 0; i < 10; ++i) { 15326 #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?}} 15327 for (int i = 0; i < 10; ++i) 15328 ; 15329 } 15330 #pragma omp target 15331 #pragma omp teams distribute 15332 for (int i = 0; i < 10; ++i) { 15333 #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?}} 15334 for (int i = 0; i < 10; ++i) 15335 ; 15336 } 15337 #pragma omp target 15338 #pragma omp teams distribute 15339 for (int i = 0; i < 10; ++i) { 15340 #pragma omp for // OK 15341 for (int i = 0; i < 10; ++i) 15342 ; 15343 } 15344 #pragma omp target 15345 #pragma omp teams distribute 15346 for (int i = 0; i < 10; ++i) { 15347 #pragma omp simd // OK 15348 for (int i = 0; i < 10; ++i) 15349 ; 15350 } 15351 #pragma omp target 15352 #pragma omp teams distribute 15353 for (int i = 0; i < 10; ++i) { 15354 #pragma omp for simd // OK 15355 for (int i = 0; i < 10; ++i) 15356 ; 15357 } 15358 #pragma omp target 15359 #pragma omp teams distribute 15360 for (int i = 0; i < 10; ++i) { 15361 #pragma omp parallel // OK 15362 for (int i = 0; i < 10; ++i) 15363 ; 15364 } 15365 #pragma omp target 15366 #pragma omp teams distribute 15367 for (int i = 0; i < 10; ++i) { 15368 #pragma omp sections // OK 15369 { 15370 bar(); 15371 } 15372 } 15373 #pragma omp target 15374 #pragma omp teams distribute 15375 for (int i = 0; i < 10; ++i) { 15376 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 15377 { 15378 bar(); 15379 } 15380 } 15381 #pragma omp target 15382 #pragma omp teams distribute 15383 for (int i = 0; i < 10; ++i) { 15384 #pragma omp single // OK 15385 { 15386 bar(); 15387 } 15388 } 15389 #pragma omp target 15390 #pragma omp teams distribute 15391 for (int i = 0; i < 10; ++i) { 15392 #pragma omp master // OK 15393 { 15394 bar(); 15395 } 15396 } 15397 #pragma omp target 15398 #pragma omp teams distribute 15399 for (int i = 0; i < 10; ++i) { 15400 #pragma omp critical // OK 15401 { 15402 bar(); 15403 } 15404 } 15405 #pragma omp target 15406 #pragma omp teams distribute 15407 for (int i = 0; i < 10; ++i) { 15408 #pragma omp parallel // OK 15409 { 15410 #pragma omp single 15411 { 15412 bar(); 15413 } 15414 } 15415 } 15416 #pragma omp target 15417 #pragma omp teams distribute 15418 for (int i = 0; i < 10; ++i) { 15419 #pragma omp parallel for // OK 15420 for (int i = 0; i < 10; ++i) 15421 ; 15422 } 15423 #pragma omp target 15424 #pragma omp teams distribute 15425 for (int i = 0; i < 10; ++i) { 15426 #pragma omp parallel for simd // OK 15427 for (int i = 0; i < 10; ++i) 15428 ; 15429 } 15430 #pragma omp target 15431 #pragma omp teams distribute 15432 for (int i = 0; i < 10; ++i) { 15433 #pragma omp parallel sections // OK 15434 { 15435 bar(); 15436 } 15437 } 15438 #pragma omp target 15439 #pragma omp teams distribute 15440 for (int i = 0; i < 10; ++i) { 15441 #pragma omp task // OK 15442 { 15443 bar(); 15444 } 15445 } 15446 #pragma omp target 15447 #pragma omp teams distribute 15448 for (int i = 0; i < 10; ++i) { 15449 #pragma omp taskyield // OK 15450 bar(); 15451 } 15452 #pragma omp target 15453 #pragma omp teams distribute 15454 for (int i = 0; i < 10; ++i) { 15455 #pragma omp barrier // OK 15456 bar(); 15457 } 15458 #pragma omp target 15459 #pragma omp teams distribute 15460 for (int i = 0; i < 10; ++i) { 15461 #pragma omp taskwait // OK 15462 bar(); 15463 } 15464 #pragma omp target 15465 #pragma omp teams distribute 15466 for (int i = 0; i < 10; ++i) { 15467 #pragma omp flush // OK 15468 bar(); 15469 } 15470 #pragma omp target 15471 #pragma omp teams distribute 15472 for (int i = 0; i < 10; ++i) { 15473 #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?}} 15474 bar(); 15475 } 15476 #pragma omp target 15477 #pragma omp teams distribute 15478 for (int i = 0; i < 10; ++i) { 15479 #pragma omp atomic // OK 15480 ++a; 15481 } 15482 #pragma omp target 15483 #pragma omp teams distribute 15484 for (int i = 0; i < 10; ++i) { 15485 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15486 ++a; 15487 } 15488 #pragma omp target 15489 #pragma omp teams distribute 15490 for (int i = 0; i < 10; ++i) { 15491 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15492 ++a; 15493 } 15494 #pragma omp target 15495 #pragma omp teams distribute 15496 for (int i = 0; i < 10; ++i) { 15497 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15498 for (int i = 0; i < 10; ++i) 15499 ; 15500 } 15501 #pragma omp target 15502 #pragma omp teams distribute 15503 for (int i = 0; i < 10; ++i) { 15504 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15505 ++a; 15506 } 15507 #pragma omp target 15508 #pragma omp teams distribute 15509 for (int i = 0; i < 10; ++i) { 15510 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15511 ++a; 15512 } 15513 #pragma omp target 15514 #pragma omp teams distribute 15515 for (int i = 0; i < 10; ++i) { 15516 #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?}} 15517 ++a; 15518 } 15519 #pragma omp target 15520 #pragma omp teams distribute 15521 for (int i = 0; i < 10; ++i) { 15522 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15523 ++a; 15524 } 15525 #pragma omp target 15526 #pragma omp teams distribute 15527 for (int i = 0; i < 10; ++i) { 15528 #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?}} 15529 for (int i = 0; i < 10; ++i) 15530 ++a; 15531 } 15532 #pragma omp target 15533 #pragma omp teams distribute 15534 for (int i = 0; i < 10; ++i) { 15535 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15536 for (int i = 0; i < 10; ++i) 15537 ++a; 15538 } 15539 #pragma omp target 15540 #pragma omp teams distribute 15541 for (int i = 0; i < 10; ++i) { 15542 #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?}} 15543 for (int i = 0; i < 10; ++i) 15544 ++a; 15545 } 15546 #pragma omp target 15547 #pragma omp teams distribute 15548 for (int i = 0; i < 10; ++i) { 15549 #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?}} 15550 for (int i = 0; i < 10; ++i) 15551 ++a; 15552 } 15553 #pragma omp target 15554 #pragma omp teams distribute 15555 for (int i = 0; i < 10; ++i) { 15556 #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?}} 15557 for (int i = 0; i < 10; ++i) 15558 ++a; 15559 } 15560 #pragma omp target 15561 #pragma omp teams distribute 15562 for (int i = 0; i < 10; ++i) { 15563 #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?}} 15564 for (int i = 0; i < 10; ++i) 15565 ++a; 15566 } 15567 #pragma omp target 15568 #pragma omp teams distribute 15569 for (int i = 0; i < 10; ++i) { 15570 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15571 ++a; 15572 } 15573 #pragma omp target 15574 #pragma omp teams distribute 15575 for (int i = 0; i < 10; ++i) { 15576 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15577 for (int i = 0; i < 10; ++i) 15578 ++a; 15579 } 15580 #pragma omp target 15581 #pragma omp teams distribute 15582 for (int i = 0; i < 10; ++i) { 15583 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15584 for (int i = 0; i < 10; ++i) 15585 ++a; 15586 } 15587 #pragma omp target 15588 #pragma omp teams distribute 15589 for (int i = 0; i < 10; ++i) { 15590 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15591 for (int i = 0; i < 10; ++i) 15592 ++a; 15593 } 15594 #pragma omp target 15595 #pragma omp teams distribute 15596 for (int i = 0; i < 10; ++i) { 15597 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15598 for (int i = 0; i < 10; ++i) 15599 ++a; 15600 } 15601 15602 // TEAMS DISTRIBUTE SIMD DIRECTIVE 15603 #pragma omp teams distribute simd // expected-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 15604 for (int i = 0; i < 10; ++i) 15605 ; 15606 #pragma omp target 15607 #pragma omp teams distribute simd 15608 for (int i = 0; i < 10; ++i) { 15609 #pragma omp distribute parallel for simd // 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 distribute simd 15615 for (int i = 0; i < 10; ++i) { 15616 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15617 for (int i = 0; i < 10; ++i) 15618 ; 15619 } 15620 #pragma omp target 15621 #pragma omp teams distribute simd 15622 for (int i = 0; i < 10; ++i) { 15623 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15624 for (int i = 0; i < 10; ++i) 15625 ; 15626 } 15627 #pragma omp target 15628 #pragma omp teams distribute simd 15629 for (int i = 0; i < 10; ++i) { 15630 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15631 for (int i = 0; i < 10; ++i) 15632 ; 15633 } 15634 #pragma omp target 15635 #pragma omp teams distribute simd 15636 for (int i = 0; i < 10; ++i) { 15637 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15638 for (int i = 0; i < 10; ++i) 15639 ; 15640 } 15641 #pragma omp target 15642 #pragma omp teams distribute simd 15643 for (int i = 0; i < 10; ++i) { 15644 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15645 for (int i = 0; i < 10; ++i) 15646 ; 15647 } 15648 #pragma omp target 15649 #pragma omp teams distribute simd 15650 for (int i = 0; i < 10; ++i) { 15651 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15652 { 15653 bar(); 15654 } 15655 } 15656 #pragma omp target 15657 #pragma omp teams distribute simd 15658 for (int i = 0; i < 10; ++i) { 15659 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15660 { 15661 bar(); 15662 } 15663 } 15664 #pragma omp target 15665 #pragma omp teams distribute simd 15666 for (int i = 0; i < 10; ++i) { 15667 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15668 { 15669 bar(); 15670 } 15671 } 15672 #pragma omp target 15673 #pragma omp teams distribute simd 15674 for (int i = 0; i < 10; ++i) { 15675 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15676 { 15677 bar(); 15678 } 15679 } 15680 #pragma omp target 15681 #pragma omp teams distribute simd 15682 for (int i = 0; i < 10; ++i) { 15683 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15684 { 15685 bar(); 15686 } 15687 } 15688 #pragma omp target 15689 #pragma omp teams distribute simd 15690 for (int i = 0; i < 10; ++i) { 15691 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15692 { 15693 #pragma omp single 15694 { 15695 bar(); 15696 } 15697 } 15698 } 15699 #pragma omp target 15700 #pragma omp teams distribute simd 15701 for (int i = 0; i < 10; ++i) { 15702 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15703 for (int i = 0; i < 10; ++i) 15704 ; 15705 } 15706 #pragma omp target 15707 #pragma omp teams distribute simd 15708 for (int i = 0; i < 10; ++i) { 15709 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15710 for (int i = 0; i < 10; ++i) 15711 ; 15712 } 15713 #pragma omp target 15714 #pragma omp teams distribute simd 15715 for (int i = 0; i < 10; ++i) { 15716 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15717 { 15718 bar(); 15719 } 15720 } 15721 #pragma omp target 15722 #pragma omp teams distribute simd 15723 for (int i = 0; i < 10; ++i) { 15724 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15725 { 15726 bar(); 15727 } 15728 } 15729 #pragma omp target 15730 #pragma omp teams distribute simd 15731 for (int i = 0; i < 10; ++i) { 15732 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15733 bar(); 15734 } 15735 #pragma omp target 15736 #pragma omp teams distribute simd 15737 for (int i = 0; i < 10; ++i) { 15738 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15739 bar(); 15740 } 15741 #pragma omp target 15742 #pragma omp teams distribute simd 15743 for (int i = 0; i < 10; ++i) { 15744 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15745 bar(); 15746 } 15747 #pragma omp target 15748 #pragma omp teams distribute simd 15749 for (int i = 0; i < 10; ++i) { 15750 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15751 bar(); 15752 } 15753 #pragma omp target 15754 #pragma omp teams distribute simd 15755 for (int i = 0; i < 10; ++i) { 15756 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15757 bar(); 15758 } 15759 #pragma omp target 15760 #pragma omp teams distribute simd 15761 for (int i = 0; i < 10; ++i) { 15762 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15763 ++a; 15764 } 15765 #pragma omp target 15766 #pragma omp teams distribute simd 15767 for (int i = 0; i < 10; ++i) { 15768 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15769 ++a; 15770 } 15771 #pragma omp target 15772 #pragma omp teams distribute simd 15773 for (int i = 0; i < 10; ++i) { 15774 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15775 ++a; 15776 } 15777 #pragma omp target 15778 #pragma omp teams distribute simd 15779 for (int i = 0; i < 10; ++i) { 15780 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15781 for (int i = 0; i < 10; ++i) 15782 ; 15783 } 15784 #pragma omp target 15785 #pragma omp teams distribute simd 15786 for (int i = 0; i < 10; ++i) { 15787 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15788 ++a; 15789 } 15790 #pragma omp target 15791 #pragma omp teams distribute simd 15792 for (int i = 0; i < 10; ++i) { 15793 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15794 ++a; 15795 } 15796 #pragma omp target 15797 #pragma omp teams distribute simd 15798 for (int i = 0; i < 10; ++i) { 15799 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15800 ++a; 15801 } 15802 #pragma omp target 15803 #pragma omp teams distribute simd 15804 for (int i = 0; i < 10; ++i) { 15805 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15806 ++a; 15807 } 15808 #pragma omp target 15809 #pragma omp teams distribute simd 15810 for (int i = 0; i < 10; ++i) { 15811 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15812 for (int i = 0; i < 10; ++i) 15813 ++a; 15814 } 15815 #pragma omp target 15816 #pragma omp teams distribute simd 15817 for (int i = 0; i < 10; ++i) { 15818 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15819 for (int i = 0; i < 10; ++i) 15820 ++a; 15821 } 15822 #pragma omp target 15823 #pragma omp teams distribute simd 15824 for (int i = 0; i < 10; ++i) { 15825 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15826 for (int i = 0; i < 10; ++i) 15827 ++a; 15828 } 15829 #pragma omp target 15830 #pragma omp teams distribute simd 15831 for (int i = 0; i < 10; ++i) { 15832 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15833 for (int i = 0; i < 10; ++i) 15834 ++a; 15835 } 15836 #pragma omp target 15837 #pragma omp teams distribute simd 15838 for (int i = 0; i < 10; ++i) { 15839 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15840 for (int i = 0; i < 10; ++i) 15841 ++a; 15842 } 15843 #pragma omp target 15844 #pragma omp teams distribute simd 15845 for (int i = 0; i < 10; ++i) { 15846 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15847 for (int i = 0; i < 10; ++i) 15848 ++a; 15849 } 15850 #pragma omp target 15851 #pragma omp teams distribute simd 15852 for (int i = 0; i < 10; ++i) { 15853 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15854 ++a; 15855 } 15856 #pragma omp target 15857 #pragma omp teams distribute simd 15858 for (int i = 0; i < 10; ++i) { 15859 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15860 for (int i = 0; i < 10; ++i) 15861 ++a; 15862 } 15863 #pragma omp target 15864 #pragma omp teams distribute simd 15865 for (int i = 0; i < 10; ++i) { 15866 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15867 for (int i = 0; i < 10; ++i) 15868 ++a; 15869 } 15870 #pragma omp target 15871 #pragma omp teams distribute simd 15872 for (int i = 0; i < 10; ++i) { 15873 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15874 for (int i = 0; i < 10; ++i) 15875 ++a; 15876 } 15877 #pragma omp target 15878 #pragma omp teams distribute simd 15879 for (int i = 0; i < 10; ++i) { 15880 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15881 for (int i = 0; i < 10; ++i) 15882 ++a; 15883 } 15884 15885 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 15886 #pragma omp teams distribute parallel for simd // expected-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 15887 for (int i = 0; i < 10; ++i) 15888 ; 15889 #pragma omp target 15890 #pragma omp teams distribute parallel for simd 15891 for (int i = 0; i < 10; ++i) { 15892 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15893 for (int i = 0; i < 10; ++i) 15894 ; 15895 } 15896 #pragma omp target 15897 #pragma omp teams distribute parallel for simd 15898 for (int i = 0; i < 10; ++i) { 15899 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15900 for (int i = 0; i < 10; ++i) 15901 ; 15902 } 15903 #pragma omp target 15904 #pragma omp teams distribute parallel for simd 15905 for (int i = 0; i < 10; ++i) { 15906 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15907 for (int i = 0; i < 10; ++i) 15908 ; 15909 } 15910 #pragma omp target 15911 #pragma omp teams distribute parallel for simd 15912 for (int i = 0; i < 10; ++i) { 15913 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15914 for (int i = 0; i < 10; ++i) 15915 ; 15916 } 15917 #pragma omp target 15918 #pragma omp teams distribute parallel for simd 15919 for (int i = 0; i < 10; ++i) { 15920 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15921 for (int i = 0; i < 10; ++i) 15922 ; 15923 } 15924 #pragma omp target 15925 #pragma omp teams distribute parallel for simd 15926 for (int i = 0; i < 10; ++i) { 15927 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15928 for (int i = 0; i < 10; ++i) 15929 ; 15930 } 15931 #pragma omp target 15932 #pragma omp teams distribute parallel for simd 15933 for (int i = 0; i < 10; ++i) { 15934 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15935 { 15936 bar(); 15937 } 15938 } 15939 #pragma omp target 15940 #pragma omp teams distribute parallel for simd 15941 for (int i = 0; i < 10; ++i) { 15942 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15943 { 15944 bar(); 15945 } 15946 } 15947 #pragma omp target 15948 #pragma omp teams distribute parallel for simd 15949 for (int i = 0; i < 10; ++i) { 15950 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15951 { 15952 bar(); 15953 } 15954 } 15955 #pragma omp target 15956 #pragma omp teams distribute parallel for simd 15957 for (int i = 0; i < 10; ++i) { 15958 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15959 { 15960 bar(); 15961 } 15962 } 15963 #pragma omp target 15964 #pragma omp teams distribute parallel for simd 15965 for (int i = 0; i < 10; ++i) { 15966 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15967 { 15968 bar(); 15969 } 15970 } 15971 #pragma omp target 15972 #pragma omp teams distribute parallel for simd 15973 for (int i = 0; i < 10; ++i) { 15974 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15975 { 15976 #pragma omp single 15977 { 15978 bar(); 15979 } 15980 } 15981 } 15982 #pragma omp target 15983 #pragma omp teams distribute parallel for simd 15984 for (int i = 0; i < 10; ++i) { 15985 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15986 for (int i = 0; i < 10; ++i) 15987 ; 15988 } 15989 #pragma omp target 15990 #pragma omp teams distribute parallel for simd 15991 for (int i = 0; i < 10; ++i) { 15992 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15993 for (int i = 0; i < 10; ++i) 15994 ; 15995 } 15996 #pragma omp target 15997 #pragma omp teams distribute parallel for simd 15998 for (int i = 0; i < 10; ++i) { 15999 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16000 { 16001 bar(); 16002 } 16003 } 16004 #pragma omp target 16005 #pragma omp teams distribute parallel for simd 16006 for (int i = 0; i < 10; ++i) { 16007 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16008 { 16009 bar(); 16010 } 16011 } 16012 #pragma omp target 16013 #pragma omp teams distribute parallel for simd 16014 for (int i = 0; i < 10; ++i) { 16015 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16016 bar(); 16017 } 16018 #pragma omp target 16019 #pragma omp teams distribute parallel for simd 16020 for (int i = 0; i < 10; ++i) { 16021 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16022 bar(); 16023 } 16024 #pragma omp target 16025 #pragma omp teams distribute parallel for simd 16026 for (int i = 0; i < 10; ++i) { 16027 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16028 bar(); 16029 } 16030 #pragma omp target 16031 #pragma omp teams distribute parallel for simd 16032 for (int i = 0; i < 10; ++i) { 16033 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16034 bar(); 16035 } 16036 #pragma omp target 16037 #pragma omp teams distribute parallel for simd 16038 for (int i = 0; i < 10; ++i) { 16039 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16040 bar(); 16041 } 16042 #pragma omp target 16043 #pragma omp teams distribute parallel for simd 16044 for (int i = 0; i < 10; ++i) { 16045 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16046 ++a; 16047 } 16048 #pragma omp target 16049 #pragma omp teams distribute parallel for simd 16050 for (int i = 0; i < 10; ++i) { 16051 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16052 ++a; 16053 } 16054 #pragma omp target 16055 #pragma omp teams distribute parallel for simd 16056 for (int i = 0; i < 10; ++i) { 16057 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16058 ++a; 16059 } 16060 #pragma omp target 16061 #pragma omp teams distribute parallel for simd 16062 for (int i = 0; i < 10; ++i) { 16063 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16064 for (int i = 0; i < 10; ++i) 16065 ; 16066 } 16067 #pragma omp target 16068 #pragma omp teams distribute parallel for simd 16069 for (int i = 0; i < 10; ++i) { 16070 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16071 ++a; 16072 } 16073 #pragma omp target 16074 #pragma omp teams distribute parallel for simd 16075 for (int i = 0; i < 10; ++i) { 16076 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16077 ++a; 16078 } 16079 #pragma omp target 16080 #pragma omp teams distribute parallel for simd 16081 for (int i = 0; i < 10; ++i) { 16082 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16083 ++a; 16084 } 16085 #pragma omp target 16086 #pragma omp teams distribute parallel for simd 16087 for (int i = 0; i < 10; ++i) { 16088 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16089 ++a; 16090 } 16091 #pragma omp target 16092 #pragma omp teams distribute parallel for simd 16093 for (int i = 0; i < 10; ++i) { 16094 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16095 for (int i = 0; i < 10; ++i) 16096 ++a; 16097 } 16098 #pragma omp target 16099 #pragma omp teams distribute parallel for simd 16100 for (int i = 0; i < 10; ++i) { 16101 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16102 for (int i = 0; i < 10; ++i) 16103 ++a; 16104 } 16105 #pragma omp target 16106 #pragma omp teams distribute parallel for simd 16107 for (int i = 0; i < 10; ++i) { 16108 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16109 for (int i = 0; i < 10; ++i) 16110 ++a; 16111 } 16112 #pragma omp target 16113 #pragma omp teams distribute parallel for simd 16114 for (int i = 0; i < 10; ++i) { 16115 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16116 for (int i = 0; i < 10; ++i) 16117 ++a; 16118 } 16119 #pragma omp target 16120 #pragma omp teams distribute parallel for simd 16121 for (int i = 0; i < 10; ++i) { 16122 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16123 for (int i = 0; i < 10; ++i) 16124 ++a; 16125 } 16126 #pragma omp target 16127 #pragma omp teams distribute parallel for simd 16128 for (int i = 0; i < 10; ++i) { 16129 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16130 for (int i = 0; i < 10; ++i) 16131 ++a; 16132 } 16133 #pragma omp target 16134 #pragma omp teams distribute parallel for simd 16135 for (int i = 0; i < 10; ++i) { 16136 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16137 ++a; 16138 } 16139 #pragma omp target 16140 #pragma omp teams distribute parallel for simd 16141 for (int i = 0; i < 10; ++i) { 16142 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16143 for (int i = 0; i < 10; ++i) 16144 ++a; 16145 } 16146 #pragma omp target 16147 #pragma omp teams distribute parallel for simd 16148 for (int i = 0; i < 10; ++i) { 16149 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16150 for (int i = 0; i < 10; ++i) 16151 ++a; 16152 } 16153 #pragma omp target 16154 #pragma omp teams distribute parallel for simd 16155 for (int i = 0; i < 10; ++i) { 16156 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16157 for (int i = 0; i < 10; ++i) 16158 ++a; 16159 } 16160 #pragma omp target 16161 #pragma omp teams distribute parallel for simd 16162 for (int i = 0; i < 10; ++i) { 16163 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16164 for (int i = 0; i < 10; ++i) 16165 ++a; 16166 } 16167 16168 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16169 #pragma omp teams distribute parallel for // expected-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 16170 for (int i = 0; i < 10; ++i) 16171 ; 16172 #pragma omp target 16173 #pragma omp teams distribute parallel for 16174 for (int i = 0; i < 10; ++i) { 16175 #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?}} 16176 for (int i = 0; i < 10; ++i) 16177 ; 16178 } 16179 #pragma omp target 16180 #pragma omp teams distribute parallel for 16181 for (int i = 0; i < 10; ++i) { 16182 #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?}} 16183 for (int i = 0; i < 10; ++i) 16184 ; 16185 } 16186 #pragma omp target 16187 #pragma omp teams distribute parallel for 16188 for (int i = 0; i < 10; ++i) { 16189 #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?}} 16190 for (int i = 0; i < 10; ++i) 16191 ; 16192 } 16193 #pragma omp target 16194 #pragma omp teams distribute parallel for 16195 for (int i = 0; i < 10; ++i) { 16196 #pragma omp simd // OK 16197 for (int i = 0; i < 10; ++i) 16198 ; 16199 } 16200 #pragma omp target 16201 #pragma omp teams distribute parallel for 16202 for (int i = 0; i < 10; ++i) { 16203 #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?}} 16204 for (int i = 0; i < 10; ++i) 16205 ; 16206 } 16207 #pragma omp target 16208 #pragma omp teams distribute parallel for 16209 for (int i = 0; i < 10; ++i) { 16210 #pragma omp parallel // OK 16211 for (int i = 0; i < 10; ++i) 16212 ; 16213 } 16214 #pragma omp target 16215 #pragma omp teams distribute parallel for 16216 for (int i = 0; i < 10; ++i) { 16217 #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?}} 16218 { 16219 bar(); 16220 } 16221 } 16222 #pragma omp target 16223 #pragma omp teams distribute parallel for 16224 for (int i = 0; i < 10; ++i) { 16225 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 16226 { 16227 bar(); 16228 } 16229 } 16230 #pragma omp target 16231 #pragma omp teams distribute parallel for 16232 for (int i = 0; i < 10; ++i) { 16233 #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?}} 16234 { 16235 bar(); 16236 } 16237 } 16238 #pragma omp target 16239 #pragma omp teams distribute parallel for 16240 for (int i = 0; i < 10; ++i) { 16241 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16242 { 16243 bar(); 16244 } 16245 } 16246 #pragma omp target 16247 #pragma omp teams distribute parallel for 16248 for (int i = 0; i < 10; ++i) { 16249 #pragma omp critical // OK 16250 { 16251 bar(); 16252 } 16253 } 16254 #pragma omp target 16255 #pragma omp teams distribute parallel for 16256 for (int i = 0; i < 10; ++i) { 16257 #pragma omp parallel // OK 16258 { 16259 #pragma omp single 16260 { 16261 bar(); 16262 } 16263 } 16264 } 16265 #pragma omp target 16266 #pragma omp teams distribute parallel for 16267 for (int i = 0; i < 10; ++i) { 16268 #pragma omp parallel for // OK 16269 for (int i = 0; i < 10; ++i) 16270 ; 16271 } 16272 #pragma omp target 16273 #pragma omp teams distribute parallel for 16274 for (int i = 0; i < 10; ++i) { 16275 #pragma omp parallel for simd // OK 16276 for (int i = 0; i < 10; ++i) 16277 ; 16278 } 16279 #pragma omp target 16280 #pragma omp teams distribute parallel for 16281 for (int i = 0; i < 10; ++i) { 16282 #pragma omp parallel sections // OK 16283 { 16284 bar(); 16285 } 16286 } 16287 #pragma omp target 16288 #pragma omp teams distribute parallel for 16289 for (int i = 0; i < 10; ++i) { 16290 #pragma omp task // OK 16291 { 16292 bar(); 16293 } 16294 } 16295 #pragma omp target 16296 #pragma omp teams distribute parallel for 16297 for (int i = 0; i < 10; ++i) { 16298 #pragma omp taskyield // OK 16299 bar(); 16300 } 16301 #pragma omp target 16302 #pragma omp teams distribute parallel for 16303 for (int i = 0; i < 10; ++i) { 16304 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16305 bar(); 16306 } 16307 #pragma omp target 16308 #pragma omp teams distribute parallel for 16309 for (int i = 0; i < 10; ++i) { 16310 #pragma omp taskwait // OK 16311 bar(); 16312 } 16313 #pragma omp target 16314 #pragma omp teams distribute parallel for 16315 for (int i = 0; i < 10; ++i) { 16316 #pragma omp flush // OK 16317 bar(); 16318 } 16319 #pragma omp target 16320 #pragma omp teams distribute parallel for 16321 for (int i = 0; i < 10; ++i) { 16322 #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?}} 16323 bar(); 16324 } 16325 #pragma omp target 16326 #pragma omp teams distribute parallel for 16327 for (int i = 0; i < 10; ++i) { 16328 #pragma omp atomic // OK 16329 ++a; 16330 } 16331 #pragma omp target 16332 #pragma omp teams distribute parallel for 16333 for (int i = 0; i < 10; ++i) { 16334 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16335 ++a; 16336 } 16337 #pragma omp target 16338 #pragma omp teams distribute parallel for 16339 for (int i = 0; i < 10; ++i) { 16340 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16341 ++a; 16342 } 16343 #pragma omp target 16344 #pragma omp teams distribute parallel for 16345 for (int i = 0; i < 10; ++i) { 16346 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16347 for (int i = 0; i < 10; ++i) 16348 ; 16349 } 16350 #pragma omp target 16351 #pragma omp teams distribute parallel for 16352 for (int i = 0; i < 10; ++i) { 16353 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16354 ++a; 16355 } 16356 #pragma omp target 16357 #pragma omp teams distribute parallel for 16358 for (int i = 0; i < 10; ++i) { 16359 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16360 ++a; 16361 } 16362 #pragma omp target 16363 #pragma omp teams distribute parallel for 16364 for (int i = 0; i < 10; ++i) { 16365 #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?}} 16366 ++a; 16367 } 16368 #pragma omp target 16369 #pragma omp teams distribute parallel for 16370 for (int i = 0; i < 10; ++i) { 16371 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16372 ++a; 16373 } 16374 #pragma omp target 16375 #pragma omp teams distribute parallel for 16376 for (int i = 0; i < 10; ++i) { 16377 #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?}} 16378 for (int i = 0; i < 10; ++i) 16379 ++a; 16380 } 16381 #pragma omp target 16382 #pragma omp teams distribute parallel for 16383 for (int i = 0; i < 10; ++i) { 16384 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16385 for (int i = 0; i < 10; ++i) 16386 ++a; 16387 } 16388 #pragma omp target 16389 #pragma omp teams distribute parallel for 16390 for (int i = 0; i < 10; ++i) { 16391 #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?}} 16392 for (int i = 0; i < 10; ++i) 16393 ++a; 16394 } 16395 #pragma omp target 16396 #pragma omp teams distribute parallel for 16397 for (int i = 0; i < 10; ++i) { 16398 #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?}} 16399 for (int i = 0; i < 10; ++i) 16400 ++a; 16401 } 16402 #pragma omp target 16403 #pragma omp teams distribute parallel for 16404 for (int i = 0; i < 10; ++i) { 16405 #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?}} 16406 for (int i = 0; i < 10; ++i) 16407 ++a; 16408 } 16409 #pragma omp target 16410 #pragma omp teams distribute parallel for 16411 for (int i = 0; i < 10; ++i) { 16412 #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?}} 16413 for (int i = 0; i < 10; ++i) 16414 ++a; 16415 } 16416 #pragma omp target 16417 #pragma omp teams distribute parallel for 16418 for (int i = 0; i < 10; ++i) { 16419 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16420 ++a; 16421 } 16422 #pragma omp target 16423 #pragma omp teams distribute parallel for 16424 for (int i = 0; i < 10; ++i) { 16425 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16426 for (int i = 0; i < 10; ++i) 16427 ++a; 16428 } 16429 #pragma omp target 16430 #pragma omp teams distribute parallel for 16431 for (int i = 0; i < 10; ++i) { 16432 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16433 for (int i = 0; i < 10; ++i) 16434 ++a; 16435 } 16436 #pragma omp target 16437 #pragma omp teams distribute parallel for 16438 for (int i = 0; i < 10; ++i) { 16439 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16440 for (int i = 0; i < 10; ++i) 16441 ++a; 16442 } 16443 #pragma omp target 16444 #pragma omp teams distribute parallel for 16445 for (int i = 0; i < 10; ++i) { 16446 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16447 for (int i = 0; i < 10; ++i) 16448 ++a; 16449 } 16450 16451 // TARGET TEAMS DIRECTIVE 16452 #pragma omp target teams 16453 #pragma omp parallel 16454 bar(); 16455 #pragma omp target teams 16456 #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?}} 16457 for (int i = 0; i < 10; ++i) 16458 ; 16459 #pragma omp target teams 16460 #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?}} 16461 for (int i = 0; i < 10; ++i) 16462 ; 16463 #pragma omp target teams 16464 #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?}} 16465 for (int i = 0; i < 10; ++i) 16466 ; 16467 #pragma omp target teams 16468 #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?}} 16469 { 16470 bar(); 16471 } 16472 #pragma omp target teams 16473 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 16474 { 16475 bar(); 16476 } 16477 #pragma omp target teams 16478 #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?}} 16479 bar(); 16480 16481 #pragma omp target teams 16482 #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?}} 16483 { 16484 bar(); 16485 } 16486 #pragma omp target teams 16487 #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?}} 16488 { 16489 bar(); 16490 } 16491 #pragma omp target teams 16492 #pragma omp parallel for 16493 for (int i = 0; i < 10; ++i) 16494 ; 16495 #pragma omp target teams 16496 #pragma omp parallel for simd 16497 for (int i = 0; i < 10; ++i) 16498 ; 16499 #pragma omp target teams 16500 #pragma omp parallel sections 16501 { 16502 bar(); 16503 } 16504 #pragma omp target teams 16505 #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?}} 16506 { 16507 bar(); 16508 } 16509 #pragma omp target teams 16510 { 16511 #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?}} 16512 bar(); 16513 } 16514 #pragma omp target teams 16515 { 16516 #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?}} 16517 bar(); 16518 } 16519 #pragma omp target teams 16520 { 16521 #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?}} 16522 bar(); 16523 } 16524 #pragma omp target teams 16525 { 16526 #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?}} 16527 bar(); 16528 } 16529 #pragma omp target teams 16530 { 16531 #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?}} 16532 bar(); 16533 } 16534 #pragma omp target teams 16535 { 16536 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 16537 ++a; 16538 } 16539 #pragma omp target teams 16540 { 16541 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 16542 ++a; 16543 } 16544 #pragma omp target teams 16545 { 16546 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 16547 ++a; 16548 } 16549 #pragma omp target teams 16550 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 16551 for (int i = 0; i < 10; ++i) 16552 ; 16553 #pragma omp target teams 16554 { 16555 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16556 } 16557 #pragma omp target teams 16558 { 16559 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16560 } 16561 #pragma omp target teams 16562 { 16563 #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?}} 16564 ++a; 16565 } 16566 #pragma omp target teams 16567 { 16568 #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?}} 16569 for (int i = 0; i < 10; ++i) 16570 ++a; 16571 } 16572 #pragma omp target teams 16573 #pragma omp distribute 16574 for (int i = 0; i < 10; ++i) 16575 ; 16576 #pragma omp target teams 16577 { 16578 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 16579 ++a; 16580 } 16581 #pragma omp target teams 16582 #pragma omp distribute parallel for 16583 for (int i = 0; i < 10; ++i) 16584 ; 16585 #pragma omp target teams 16586 { 16587 #pragma omp distribute parallel for 16588 for (int i = 0; i < 10; ++i) 16589 ; 16590 #pragma omp distribute parallel for 16591 for (int j = 0; j < 10; ++j) 16592 ; 16593 } 16594 #pragma omp target teams 16595 { 16596 #pragma omp distribute parallel for simd 16597 for (int i = 0; i < 10; ++i) 16598 ; 16599 #pragma omp distribute parallel for simd 16600 for (int j = 0; j < 10; ++j) 16601 ; 16602 } 16603 #pragma omp target teams 16604 { 16605 #pragma omp distribute simd 16606 for (int i = 0; i < 10; ++i) 16607 ; 16608 #pragma omp distribute simd 16609 for (int j = 0; j < 10; ++j) 16610 ; 16611 } 16612 #pragma omp target teams 16613 { 16614 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 16615 for (int i = 0; i < 10; ++i) 16616 ; 16617 } 16618 #pragma omp target teams 16619 { 16620 #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?}} 16621 for (int i = 0; i < 10; ++i) 16622 ; 16623 } 16624 #pragma omp target teams 16625 { 16626 #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?}} 16627 for (int i = 0; i < 10; ++i) 16628 ; 16629 } 16630 #pragma omp target teams 16631 { 16632 #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?}} 16633 for (int i = 0; i < 10; ++i) 16634 ; 16635 } 16636 #pragma omp target teams 16637 { 16638 #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?}} 16639 for (int i = 0; i < 10; ++i) 16640 ; 16641 } 16642 #pragma omp target teams 16643 { 16644 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 16645 a++; 16646 } 16647 #pragma omp target teams 16648 { 16649 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 16650 for (int i = 0; i < 10; ++i) 16651 ; 16652 } 16653 #pragma omp target teams 16654 { 16655 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 16656 for (int i = 0; i < 10; ++i) 16657 ; 16658 } 16659 #pragma omp target teams 16660 { 16661 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 16662 for (int i = 0; i < 10; ++i) 16663 ; 16664 } 16665 #pragma omp target teams 16666 { 16667 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 16668 for (int i = 0; i < 10; ++i) 16669 ; 16670 } 16671 16672 // TARGET TEAMS DISTRIBUTE DIRECTIVE 16673 #pragma omp target teams distribute // OK 16674 for (int i = 0; i < 10; ++i) 16675 ; 16676 #pragma omp target teams distribute 16677 for (int i = 0; i < 10; ++i) { 16678 #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?}} 16679 for (int i = 0; i < 10; ++i) 16680 ; 16681 } 16682 #pragma omp target teams distribute 16683 for (int i = 0; i < 10; ++i) { 16684 #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?}} 16685 for (int i = 0; i < 10; ++i) 16686 ; 16687 } 16688 #pragma omp target teams distribute 16689 for (int i = 0; i < 10; ++i) { 16690 #pragma omp for // OK 16691 for (int i = 0; i < 10; ++i) 16692 ; 16693 } 16694 #pragma omp target teams distribute 16695 for (int i = 0; i < 10; ++i) { 16696 #pragma omp simd // OK 16697 for (int i = 0; i < 10; ++i) 16698 ; 16699 } 16700 #pragma omp target teams distribute 16701 for (int i = 0; i < 10; ++i) { 16702 #pragma omp for simd // OK 16703 for (int i = 0; i < 10; ++i) 16704 ; 16705 } 16706 #pragma omp target teams distribute 16707 for (int i = 0; i < 10; ++i) { 16708 #pragma omp parallel // OK 16709 for (int i = 0; i < 10; ++i) 16710 ; 16711 } 16712 #pragma omp target teams distribute 16713 for (int i = 0; i < 10; ++i) { 16714 #pragma omp sections // OK 16715 { 16716 bar(); 16717 } 16718 } 16719 #pragma omp target teams distribute 16720 for (int i = 0; i < 10; ++i) { 16721 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 16722 { 16723 bar(); 16724 } 16725 } 16726 #pragma omp target teams distribute 16727 for (int i = 0; i < 10; ++i) { 16728 #pragma omp single // OK 16729 { 16730 bar(); 16731 } 16732 } 16733 #pragma omp target teams distribute 16734 for (int i = 0; i < 10; ++i) { 16735 #pragma omp master // OK 16736 { 16737 bar(); 16738 } 16739 } 16740 #pragma omp target teams distribute 16741 for (int i = 0; i < 10; ++i) { 16742 #pragma omp critical // OK 16743 { 16744 bar(); 16745 } 16746 } 16747 #pragma omp target teams distribute 16748 for (int i = 0; i < 10; ++i) { 16749 #pragma omp parallel // OK 16750 { 16751 #pragma omp single 16752 { 16753 bar(); 16754 } 16755 } 16756 } 16757 #pragma omp target teams distribute 16758 for (int i = 0; i < 10; ++i) { 16759 #pragma omp parallel for // OK 16760 for (int i = 0; i < 10; ++i) 16761 ; 16762 } 16763 #pragma omp target teams distribute 16764 for (int i = 0; i < 10; ++i) { 16765 #pragma omp parallel for simd // OK 16766 for (int i = 0; i < 10; ++i) 16767 ; 16768 } 16769 #pragma omp target teams distribute 16770 for (int i = 0; i < 10; ++i) { 16771 #pragma omp parallel sections // OK 16772 { 16773 bar(); 16774 } 16775 } 16776 #pragma omp target teams distribute 16777 for (int i = 0; i < 10; ++i) { 16778 #pragma omp task // OK 16779 { 16780 bar(); 16781 } 16782 } 16783 #pragma omp target teams distribute 16784 for (int i = 0; i < 10; ++i) { 16785 #pragma omp taskyield // OK 16786 bar(); 16787 } 16788 #pragma omp target teams distribute 16789 for (int i = 0; i < 10; ++i) { 16790 #pragma omp barrier // OK 16791 bar(); 16792 } 16793 #pragma omp target teams distribute 16794 for (int i = 0; i < 10; ++i) { 16795 #pragma omp taskwait // OK 16796 bar(); 16797 } 16798 #pragma omp target teams distribute 16799 for (int i = 0; i < 10; ++i) { 16800 #pragma omp flush // OK 16801 bar(); 16802 } 16803 #pragma omp target teams distribute 16804 for (int i = 0; i < 10; ++i) { 16805 #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?}} 16806 bar(); 16807 } 16808 #pragma omp target teams distribute 16809 for (int i = 0; i < 10; ++i) { 16810 #pragma omp atomic // OK 16811 ++a; 16812 } 16813 #pragma omp target teams distribute 16814 for (int i = 0; i < 10; ++i) { 16815 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16816 ++a; 16817 } 16818 #pragma omp target teams distribute 16819 for (int i = 0; i < 10; ++i) { 16820 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16821 ++a; 16822 } 16823 #pragma omp target teams distribute 16824 for (int i = 0; i < 10; ++i) { 16825 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16826 for (int i = 0; i < 10; ++i) 16827 ; 16828 } 16829 #pragma omp target teams distribute 16830 for (int i = 0; i < 10; ++i) { 16831 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16832 ++a; 16833 } 16834 #pragma omp target teams distribute 16835 for (int i = 0; i < 10; ++i) { 16836 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16837 ++a; 16838 } 16839 #pragma omp target teams distribute 16840 for (int i = 0; i < 10; ++i) { 16841 #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?}} 16842 ++a; 16843 } 16844 #pragma omp target teams distribute 16845 for (int i = 0; i < 10; ++i) { 16846 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16847 ++a; 16848 } 16849 #pragma omp target teams distribute 16850 for (int i = 0; i < 10; ++i) { 16851 #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?}} 16852 for (int i = 0; i < 10; ++i) 16853 ++a; 16854 } 16855 #pragma omp target teams distribute 16856 for (int i = 0; i < 10; ++i) { 16857 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16858 for (int i = 0; i < 10; ++i) 16859 ++a; 16860 } 16861 #pragma omp target teams distribute 16862 for (int i = 0; i < 10; ++i) { 16863 #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?}} 16864 for (int i = 0; i < 10; ++i) 16865 ++a; 16866 } 16867 #pragma omp target teams distribute 16868 for (int i = 0; i < 10; ++i) { 16869 #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?}} 16870 for (int i = 0; i < 10; ++i) 16871 ++a; 16872 } 16873 #pragma omp target teams distribute 16874 for (int i = 0; i < 10; ++i) { 16875 #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?}} 16876 for (int i = 0; i < 10; ++i) 16877 ++a; 16878 } 16879 #pragma omp target teams distribute 16880 for (int i = 0; i < 10; ++i) { 16881 #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?}} 16882 for (int i = 0; i < 10; ++i) 16883 ++a; 16884 } 16885 #pragma omp target teams distribute 16886 for (int i = 0; i < 10; ++i) { 16887 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16888 ++a; 16889 } 16890 #pragma omp target teams distribute 16891 for (int i = 0; i < 10; ++i) { 16892 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16893 for (int i = 0; i < 10; ++i) 16894 ++a; 16895 } 16896 #pragma omp target teams distribute 16897 for (int i = 0; i < 10; ++i) { 16898 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16899 for (int i = 0; i < 10; ++i) 16900 ++a; 16901 } 16902 #pragma omp target teams distribute 16903 for (int i = 0; i < 10; ++i) { 16904 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16905 for (int i = 0; i < 10; ++i) 16906 ++a; 16907 } 16908 #pragma omp target teams distribute 16909 for (int i = 0; i < 10; ++i) { 16910 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16911 for (int i = 0; i < 10; ++i) 16912 ++a; 16913 } 16914 16915 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16916 #pragma omp target teams distribute parallel for // OK 16917 for (int i = 0; i < 10; ++i) 16918 ; 16919 #pragma omp target teams distribute parallel for 16920 for (int i = 0; i < 10; ++i) { 16921 #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?}} 16922 for (int i = 0; i < 10; ++i) 16923 ; 16924 } 16925 #pragma omp target teams distribute parallel for 16926 for (int i = 0; i < 10; ++i) { 16927 #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?}} 16928 for (int i = 0; i < 10; ++i) 16929 ; 16930 } 16931 #pragma omp target teams distribute parallel for 16932 for (int i = 0; i < 10; ++i) { 16933 #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?}} 16934 for (int i = 0; i < 10; ++i) 16935 ; 16936 } 16937 #pragma omp target teams distribute parallel for 16938 for (int i = 0; i < 10; ++i) { 16939 #pragma omp simd // OK 16940 for (int i = 0; i < 10; ++i) 16941 ; 16942 } 16943 #pragma omp target teams distribute parallel for 16944 for (int i = 0; i < 10; ++i) { 16945 #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?}} 16946 for (int i = 0; i < 10; ++i) 16947 ; 16948 } 16949 #pragma omp target teams distribute parallel for 16950 for (int i = 0; i < 10; ++i) { 16951 #pragma omp parallel // OK 16952 for (int i = 0; i < 10; ++i) 16953 ; 16954 } 16955 #pragma omp target teams distribute parallel for 16956 for (int i = 0; i < 10; ++i) { 16957 #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?}} 16958 { 16959 bar(); 16960 } 16961 } 16962 #pragma omp target teams distribute parallel for 16963 for (int i = 0; i < 10; ++i) { 16964 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 16965 { 16966 bar(); 16967 } 16968 } 16969 #pragma omp target teams distribute parallel for 16970 for (int i = 0; i < 10; ++i) { 16971 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 16972 { 16973 bar(); 16974 } 16975 } 16976 #pragma omp target teams distribute parallel for 16977 for (int i = 0; i < 10; ++i) { 16978 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 16979 { 16980 bar(); 16981 } 16982 } 16983 #pragma omp target teams distribute parallel for 16984 for (int i = 0; i < 10; ++i) { 16985 #pragma omp critical // OK 16986 { 16987 bar(); 16988 } 16989 } 16990 #pragma omp target teams distribute parallel for 16991 for (int i = 0; i < 10; ++i) { 16992 #pragma omp parallel // OK 16993 { 16994 #pragma omp single 16995 { 16996 bar(); 16997 } 16998 } 16999 } 17000 #pragma omp target teams distribute parallel for 17001 for (int i = 0; i < 10; ++i) { 17002 #pragma omp parallel for // OK 17003 for (int i = 0; i < 10; ++i) 17004 ; 17005 } 17006 #pragma omp target teams distribute parallel for 17007 for (int i = 0; i < 10; ++i) { 17008 #pragma omp parallel for simd // OK 17009 for (int i = 0; i < 10; ++i) 17010 ; 17011 } 17012 #pragma omp target teams distribute parallel for 17013 for (int i = 0; i < 10; ++i) { 17014 #pragma omp parallel sections // OK 17015 { 17016 bar(); 17017 } 17018 } 17019 #pragma omp target teams distribute parallel for 17020 for (int i = 0; i < 10; ++i) { 17021 #pragma omp task // OK 17022 { 17023 bar(); 17024 } 17025 } 17026 #pragma omp target teams distribute parallel for 17027 for (int i = 0; i < 10; ++i) { 17028 #pragma omp taskyield // OK 17029 bar(); 17030 } 17031 #pragma omp target teams distribute parallel for 17032 for (int i = 0; i < 10; ++i) { 17033 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17034 bar(); 17035 } 17036 #pragma omp target teams distribute parallel for 17037 for (int i = 0; i < 10; ++i) { 17038 #pragma omp taskwait // OK 17039 bar(); 17040 } 17041 #pragma omp target teams distribute parallel for 17042 for (int i = 0; i < 10; ++i) { 17043 #pragma omp flush // OK 17044 bar(); 17045 } 17046 #pragma omp target teams distribute parallel for 17047 for (int i = 0; i < 10; ++i) { 17048 #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?}} 17049 bar(); 17050 } 17051 #pragma omp target teams distribute parallel for 17052 for (int i = 0; i < 10; ++i) { 17053 #pragma omp atomic // OK 17054 ++a; 17055 } 17056 #pragma omp target teams distribute parallel for 17057 for (int i = 0; i < 10; ++i) { 17058 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17059 ++a; 17060 } 17061 #pragma omp target teams distribute parallel for 17062 for (int i = 0; i < 10; ++i) { 17063 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17064 ++a; 17065 } 17066 #pragma omp target teams distribute parallel for 17067 for (int i = 0; i < 10; ++i) { 17068 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17069 for (int i = 0; i < 10; ++i) 17070 ; 17071 } 17072 #pragma omp target teams distribute parallel for 17073 for (int i = 0; i < 10; ++i) { 17074 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17075 ++a; 17076 } 17077 #pragma omp target teams distribute parallel for 17078 for (int i = 0; i < 10; ++i) { 17079 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17080 ++a; 17081 } 17082 #pragma omp target teams distribute parallel for 17083 for (int i = 0; i < 10; ++i) { 17084 #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?}} 17085 ++a; 17086 } 17087 #pragma omp target teams distribute parallel for 17088 for (int i = 0; i < 10; ++i) { 17089 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17090 ++a; 17091 } 17092 #pragma omp target teams distribute parallel for 17093 for (int i = 0; i < 10; ++i) { 17094 #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?}} 17095 for (int i = 0; i < 10; ++i) 17096 ++a; 17097 } 17098 #pragma omp target teams distribute parallel for 17099 for (int i = 0; i < 10; ++i) { 17100 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17101 for (int i = 0; i < 10; ++i) 17102 ++a; 17103 } 17104 #pragma omp target teams distribute parallel for 17105 for (int i = 0; i < 10; ++i) { 17106 #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?}} 17107 for (int i = 0; i < 10; ++i) 17108 ++a; 17109 } 17110 #pragma omp target teams distribute parallel for 17111 for (int i = 0; i < 10; ++i) { 17112 #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?}} 17113 for (int i = 0; i < 10; ++i) 17114 ++a; 17115 } 17116 #pragma omp target teams distribute parallel for 17117 for (int i = 0; i < 10; ++i) { 17118 #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?}} 17119 for (int i = 0; i < 10; ++i) 17120 ++a; 17121 } 17122 #pragma omp target teams distribute parallel for 17123 for (int i = 0; i < 10; ++i) { 17124 #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?}} 17125 for (int i = 0; i < 10; ++i) 17126 ++a; 17127 } 17128 #pragma omp target teams distribute parallel for 17129 for (int i = 0; i < 10; ++i) { 17130 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17131 ++a; 17132 } 17133 #pragma omp target teams distribute parallel for 17134 for (int i = 0; i < 10; ++i) { 17135 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17136 for (int i = 0; i < 10; ++i) 17137 ++a; 17138 } 17139 #pragma omp target teams distribute parallel for 17140 for (int i = 0; i < 10; ++i) { 17141 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17142 for (int i = 0; i < 10; ++i) 17143 ++a; 17144 } 17145 #pragma omp target teams distribute parallel for 17146 for (int i = 0; i < 10; ++i) { 17147 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17148 for (int i = 0; i < 10; ++i) 17149 ++a; 17150 } 17151 #pragma omp target teams distribute parallel for 17152 for (int i = 0; i < 10; ++i) { 17153 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17154 for (int i = 0; i < 10; ++i) 17155 ++a; 17156 } 17157 17158 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 17159 #pragma omp target teams distribute parallel for simd // OK 17160 for (int i = 0; i < 10; ++i) 17161 ; 17162 #pragma omp target teams distribute parallel for simd 17163 for (int i = 0; i < 10; ++i) { 17164 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17165 for (int i = 0; i < 10; ++i) 17166 ; 17167 } 17168 #pragma omp target teams distribute parallel for simd 17169 for (int i = 0; i < 10; ++i) { 17170 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17171 for (int i = 0; i < 10; ++i) 17172 ; 17173 } 17174 #pragma omp target teams distribute parallel for simd 17175 for (int i = 0; i < 10; ++i) { 17176 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17177 for (int i = 0; i < 10; ++i) 17178 ; 17179 } 17180 #pragma omp target teams distribute parallel for simd 17181 for (int i = 0; i < 10; ++i) { 17182 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17183 for (int i = 0; i < 10; ++i) 17184 ; 17185 } 17186 #pragma omp target teams distribute parallel for simd 17187 for (int i = 0; i < 10; ++i) { 17188 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17189 for (int i = 0; i < 10; ++i) 17190 ; 17191 } 17192 #pragma omp target teams distribute parallel for simd 17193 for (int i = 0; i < 10; ++i) { 17194 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17195 for (int i = 0; i < 10; ++i) 17196 ; 17197 } 17198 #pragma omp target teams distribute parallel for simd 17199 for (int i = 0; i < 10; ++i) { 17200 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17201 { 17202 bar(); 17203 } 17204 } 17205 #pragma omp target teams distribute parallel for simd 17206 for (int i = 0; i < 10; ++i) { 17207 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17208 { 17209 bar(); 17210 } 17211 } 17212 #pragma omp target teams distribute parallel for simd 17213 for (int i = 0; i < 10; ++i) { 17214 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17215 { 17216 bar(); 17217 } 17218 } 17219 #pragma omp target teams distribute parallel for simd 17220 for (int i = 0; i < 10; ++i) { 17221 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17222 { 17223 bar(); 17224 } 17225 } 17226 #pragma omp target teams distribute parallel for simd 17227 for (int i = 0; i < 10; ++i) { 17228 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17229 { 17230 bar(); 17231 } 17232 } 17233 #pragma omp target teams distribute parallel for simd 17234 for (int i = 0; i < 10; ++i) { 17235 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17236 { 17237 #pragma omp single 17238 { 17239 bar(); 17240 } 17241 } 17242 } 17243 #pragma omp target teams distribute parallel for simd 17244 for (int i = 0; i < 10; ++i) { 17245 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17246 for (int i = 0; i < 10; ++i) 17247 ; 17248 } 17249 #pragma omp target teams distribute parallel for simd 17250 for (int i = 0; i < 10; ++i) { 17251 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17252 for (int i = 0; i < 10; ++i) 17253 ; 17254 } 17255 #pragma omp target teams distribute parallel for simd 17256 for (int i = 0; i < 10; ++i) { 17257 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17258 { 17259 bar(); 17260 } 17261 } 17262 #pragma omp target teams distribute parallel for simd 17263 for (int i = 0; i < 10; ++i) { 17264 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17265 { 17266 bar(); 17267 } 17268 } 17269 #pragma omp target teams distribute parallel for simd 17270 for (int i = 0; i < 10; ++i) { 17271 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17272 bar(); 17273 } 17274 #pragma omp target teams distribute parallel for simd 17275 for (int i = 0; i < 10; ++i) { 17276 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17277 bar(); 17278 } 17279 #pragma omp target teams distribute parallel for simd 17280 for (int i = 0; i < 10; ++i) { 17281 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17282 bar(); 17283 } 17284 #pragma omp target teams distribute parallel for simd 17285 for (int i = 0; i < 10; ++i) { 17286 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17287 bar(); 17288 } 17289 #pragma omp target teams distribute parallel for simd 17290 for (int i = 0; i < 10; ++i) { 17291 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17292 bar(); 17293 } 17294 #pragma omp target teams distribute parallel for simd 17295 for (int i = 0; i < 10; ++i) { 17296 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 17297 ++a; 17298 } 17299 #pragma omp target teams distribute parallel for simd 17300 for (int i = 0; i < 10; ++i) { 17301 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17302 ++a; 17303 } 17304 #pragma omp target teams distribute parallel for simd 17305 for (int i = 0; i < 10; ++i) { 17306 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17307 ++a; 17308 } 17309 #pragma omp target teams distribute parallel for simd 17310 for (int i = 0; i < 10; ++i) { 17311 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17312 for (int i = 0; i < 10; ++i) 17313 ; 17314 } 17315 #pragma omp target teams distribute parallel for simd 17316 for (int i = 0; i < 10; ++i) { 17317 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17318 ++a; 17319 } 17320 #pragma omp target teams distribute parallel for simd 17321 for (int i = 0; i < 10; ++i) { 17322 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17323 ++a; 17324 } 17325 #pragma omp target teams distribute parallel for simd 17326 for (int i = 0; i < 10; ++i) { 17327 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17328 ++a; 17329 } 17330 #pragma omp target teams distribute parallel for simd 17331 for (int i = 0; i < 10; ++i) { 17332 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17333 ++a; 17334 } 17335 #pragma omp target teams distribute parallel for simd 17336 for (int i = 0; i < 10; ++i) { 17337 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17338 for (int i = 0; i < 10; ++i) 17339 ++a; 17340 } 17341 #pragma omp target teams distribute parallel for simd 17342 for (int i = 0; i < 10; ++i) { 17343 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17344 for (int i = 0; i < 10; ++i) 17345 ++a; 17346 } 17347 #pragma omp target teams distribute parallel for simd 17348 for (int i = 0; i < 10; ++i) { 17349 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17350 for (int i = 0; i < 10; ++i) 17351 ++a; 17352 } 17353 #pragma omp target teams distribute parallel for simd 17354 for (int i = 0; i < 10; ++i) { 17355 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17356 for (int i = 0; i < 10; ++i) 17357 ++a; 17358 } 17359 #pragma omp target teams distribute parallel for simd 17360 for (int i = 0; i < 10; ++i) { 17361 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17362 for (int i = 0; i < 10; ++i) 17363 ++a; 17364 } 17365 #pragma omp target teams distribute parallel for simd 17366 for (int i = 0; i < 10; ++i) { 17367 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17368 for (int i = 0; i < 10; ++i) 17369 ; 17370 } 17371 #pragma omp target teams distribute parallel for simd 17372 for (int i = 0; i < 10; ++i) { 17373 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17374 a++; 17375 } 17376 #pragma omp target teams distribute parallel for simd 17377 for (int i = 0; i < 10; ++i) { 17378 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17379 for (int i = 0; i < 10; ++i) 17380 ; 17381 } 17382 #pragma omp target teams distribute parallel for simd 17383 for (int i = 0; i < 10; ++i) { 17384 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17385 for (int i = 0; i < 10; ++i) 17386 ; 17387 } 17388 #pragma omp target teams distribute parallel for simd 17389 for (int i = 0; i < 10; ++i) { 17390 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17391 for (int i = 0; i < 10; ++i) 17392 ; 17393 } 17394 #pragma omp target teams distribute parallel for simd 17395 for (int i = 0; i < 10; ++i) { 17396 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17397 for (int i = 0; i < 10; ++i) 17398 ; 17399 } 17400 17401 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 17402 #pragma omp target teams distribute simd // OK 17403 for (int i = 0; i < 10; ++i) 17404 ; 17405 #pragma omp target teams distribute simd 17406 for (int i = 0; i < 10; ++i) { 17407 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17408 for (int i = 0; i < 10; ++i) 17409 ; 17410 } 17411 #pragma omp target teams distribute simd 17412 for (int i = 0; i < 10; ++i) { 17413 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17414 for (int i = 0; i < 10; ++i) 17415 ; 17416 } 17417 #pragma omp target teams distribute simd 17418 for (int i = 0; i < 10; ++i) { 17419 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17420 for (int i = 0; i < 10; ++i) 17421 ; 17422 } 17423 #pragma omp target teams distribute simd 17424 for (int i = 0; i < 10; ++i) { 17425 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17426 for (int i = 0; i < 10; ++i) 17427 ; 17428 } 17429 #pragma omp target teams distribute simd 17430 for (int i = 0; i < 10; ++i) { 17431 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17432 for (int i = 0; i < 10; ++i) 17433 ; 17434 } 17435 #pragma omp target teams distribute simd 17436 for (int i = 0; i < 10; ++i) { 17437 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17438 for (int i = 0; i < 10; ++i) 17439 ; 17440 } 17441 #pragma omp target teams distribute simd 17442 for (int i = 0; i < 10; ++i) { 17443 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17444 { 17445 bar(); 17446 } 17447 } 17448 #pragma omp target teams distribute simd 17449 for (int i = 0; i < 10; ++i) { 17450 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17451 { 17452 bar(); 17453 } 17454 } 17455 #pragma omp target teams distribute simd 17456 for (int i = 0; i < 10; ++i) { 17457 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17458 { 17459 bar(); 17460 } 17461 } 17462 #pragma omp target teams distribute simd 17463 for (int i = 0; i < 10; ++i) { 17464 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17465 { 17466 bar(); 17467 } 17468 } 17469 #pragma omp target teams distribute simd 17470 for (int i = 0; i < 10; ++i) { 17471 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17472 { 17473 bar(); 17474 } 17475 } 17476 #pragma omp target teams distribute simd 17477 for (int i = 0; i < 10; ++i) { 17478 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17479 { 17480 #pragma omp single 17481 { 17482 bar(); 17483 } 17484 } 17485 } 17486 #pragma omp target teams distribute simd 17487 for (int i = 0; i < 10; ++i) { 17488 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17489 for (int i = 0; i < 10; ++i) 17490 ; 17491 } 17492 #pragma omp target teams distribute simd 17493 for (int i = 0; i < 10; ++i) { 17494 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17495 for (int i = 0; i < 10; ++i) 17496 ; 17497 } 17498 #pragma omp target teams distribute simd 17499 for (int i = 0; i < 10; ++i) { 17500 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17501 { 17502 bar(); 17503 } 17504 } 17505 #pragma omp target teams distribute simd 17506 for (int i = 0; i < 10; ++i) { 17507 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17508 { 17509 bar(); 17510 } 17511 } 17512 #pragma omp target teams distribute simd 17513 for (int i = 0; i < 10; ++i) { 17514 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17515 bar(); 17516 } 17517 #pragma omp target teams distribute simd 17518 for (int i = 0; i < 10; ++i) { 17519 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17520 bar(); 17521 } 17522 #pragma omp target teams distribute simd 17523 for (int i = 0; i < 10; ++i) { 17524 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17525 bar(); 17526 } 17527 #pragma omp target teams distribute simd 17528 for (int i = 0; i < 10; ++i) { 17529 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17530 bar(); 17531 } 17532 #pragma omp target teams distribute simd 17533 for (int i = 0; i < 10; ++i) { 17534 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17535 bar(); 17536 } 17537 #pragma omp target teams distribute simd 17538 for (int i = 0; i < 10; ++i) { 17539 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 17540 ++a; 17541 } 17542 #pragma omp target teams distribute simd 17543 for (int i = 0; i < 10; ++i) { 17544 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17545 ++a; 17546 } 17547 #pragma omp target teams distribute simd 17548 for (int i = 0; i < 10; ++i) { 17549 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17550 ++a; 17551 } 17552 #pragma omp target teams distribute simd 17553 for (int i = 0; i < 10; ++i) { 17554 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17555 for (int i = 0; i < 10; ++i) 17556 ; 17557 } 17558 #pragma omp target teams distribute simd 17559 for (int i = 0; i < 10; ++i) { 17560 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17561 ++a; 17562 } 17563 #pragma omp target teams distribute simd 17564 for (int i = 0; i < 10; ++i) { 17565 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17566 ++a; 17567 } 17568 #pragma omp target teams distribute simd 17569 for (int i = 0; i < 10; ++i) { 17570 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17571 ++a; 17572 } 17573 #pragma omp target teams distribute simd 17574 for (int i = 0; i < 10; ++i) { 17575 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17576 ++a; 17577 } 17578 #pragma omp target teams distribute simd 17579 for (int i = 0; i < 10; ++i) { 17580 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17581 for (int i = 0; i < 10; ++i) 17582 ++a; 17583 } 17584 #pragma omp target teams distribute simd 17585 for (int i = 0; i < 10; ++i) { 17586 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17587 for (int i = 0; i < 10; ++i) 17588 ++a; 17589 } 17590 #pragma omp target teams distribute simd 17591 for (int i = 0; i < 10; ++i) { 17592 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17593 for (int i = 0; i < 10; ++i) 17594 ++a; 17595 } 17596 #pragma omp target teams distribute simd 17597 for (int i = 0; i < 10; ++i) { 17598 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17599 for (int i = 0; i < 10; ++i) 17600 ++a; 17601 } 17602 #pragma omp target teams distribute simd 17603 for (int i = 0; i < 10; ++i) { 17604 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17605 for (int i = 0; i < 10; ++i) 17606 ++a; 17607 } 17608 #pragma omp target teams distribute simd 17609 for (int i = 0; i < 10; ++i) { 17610 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17611 for (int i = 0; i < 10; ++i) 17612 ; 17613 } 17614 #pragma omp target teams distribute simd 17615 for (int i = 0; i < 10; ++i) { 17616 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17617 a++; 17618 } 17619 #pragma omp target teams distribute simd 17620 for (int i = 0; i < 10; ++i) { 17621 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17622 for (int i = 0; i < 10; ++i) 17623 ; 17624 } 17625 #pragma omp target teams distribute simd 17626 for (int i = 0; i < 10; ++i) { 17627 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17628 for (int i = 0; i < 10; ++i) 17629 ; 17630 } 17631 #pragma omp target teams distribute simd 17632 for (int i = 0; i < 10; ++i) { 17633 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17634 for (int i = 0; i < 10; ++i) 17635 ; 17636 } 17637 #pragma omp target teams distribute simd 17638 for (int i = 0; i < 10; ++i) { 17639 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17640 for (int i = 0; i < 10; ++i) 17641 ; 17642 } 17643 17644 return foo<int>(); 17645 } 17646 17647