1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s 2 3 void bar(); 4 5 template <class T> 6 void foo() { 7 T a = T(); 8 // PARALLEL DIRECTIVE 9 #pragma omp parallel 10 #pragma omp for 11 for (int i = 0; i < 10; ++i) 12 ; 13 #pragma omp parallel 14 #pragma omp simd 15 for (int i = 0; i < 10; ++i) 16 ; 17 #pragma omp parallel 18 #pragma omp for simd 19 for (int i = 0; i < 10; ++i) 20 ; 21 #pragma omp parallel 22 #pragma omp sections 23 { 24 bar(); 25 } 26 #pragma omp parallel 27 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 28 { 29 bar(); 30 } 31 #pragma omp parallel 32 #pragma omp single 33 bar(); 34 35 #pragma omp parallel 36 #pragma omp master 37 { 38 bar(); 39 } 40 #pragma omp parallel 41 #pragma omp critical 42 { 43 bar(); 44 } 45 #pragma omp parallel 46 #pragma omp parallel for 47 for (int i = 0; i < 10; ++i) 48 ; 49 #pragma omp parallel 50 #pragma omp parallel for simd 51 for (int i = 0; i < 10; ++i) 52 ; 53 #pragma omp parallel 54 #pragma omp parallel sections 55 { 56 bar(); 57 } 58 #pragma omp parallel 59 #pragma omp task 60 { 61 bar(); 62 } 63 #pragma omp parallel 64 { 65 #pragma omp taskyield 66 bar(); 67 } 68 #pragma omp parallel 69 { 70 #pragma omp barrier 71 bar(); 72 } 73 #pragma omp parallel 74 { 75 #pragma omp taskwait 76 bar(); 77 } 78 #pragma omp parallel 79 { 80 #pragma omp flush 81 bar(); 82 } 83 #pragma omp parallel 84 { 85 #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?}} 86 bar(); 87 } 88 #pragma omp parallel 89 { 90 #pragma omp atomic 91 ++a; 92 } 93 #pragma omp parallel 94 { 95 #pragma omp target 96 ++a; 97 } 98 #pragma omp parallel 99 { 100 #pragma omp target parallel 101 ++a; 102 } 103 #pragma omp parallel 104 { 105 #pragma omp target parallel for 106 for (int i = 0; i < 10; ++i) 107 ; 108 } 109 #pragma omp parallel 110 { 111 #pragma omp target enter data map(to: a) 112 ++a; 113 } 114 #pragma omp parallel 115 { 116 #pragma omp target exit data map(from: a) 117 ++a; 118 } 119 #pragma omp parallel 120 { 121 #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?}} 122 ++a; 123 } 124 #pragma omp parallel 125 { 126 #pragma omp taskloop 127 for (int i = 0; i < 10; ++i) 128 ++a; 129 } 130 #pragma omp parallel 131 { 132 #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?}} 133 for (int i = 0; i < 10; ++i) 134 ; 135 } 136 #pragma omp parallel 137 { 138 #pragma omp target update to(a) 139 } 140 #pragma omp parallel 141 { 142 #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?}} 143 for (int i = 0; i < 10; ++i) 144 ; 145 } 146 #pragma omp parallel 147 { 148 #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?}} 149 for (int i = 0; i < 10; ++i) 150 ; 151 } 152 #pragma omp parallel 153 { 154 #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?}} 155 for (int i = 0; i < 10; ++i) 156 ; 157 } 158 #pragma omp parallel 159 { 160 #pragma omp target simd // OK 161 for (int i = 0; i < 10; ++i) 162 ; 163 } 164 #pragma omp parallel 165 { 166 #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?}} 167 for (int i = 0; i < 10; ++i) 168 ; 169 } 170 #pragma omp parallel 171 { 172 #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?}} 173 for (int i = 0; i < 10; ++i) 174 ; 175 } 176 #pragma omp parallel 177 { 178 #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?}} 179 for (int i = 0; i < 10; ++i) 180 ; 181 } 182 #pragma omp parallel 183 { 184 #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?}} 185 for (int i = 0; i < 10; ++i) 186 ; 187 } 188 #pragma omp parallel 189 { 190 #pragma omp target teams // OK 191 ++a; 192 } 193 #pragma omp parallel 194 { 195 #pragma omp target teams distribute // OK 196 for (int i = 0; i < 10; ++i) 197 ; 198 } 199 #pragma omp parallel 200 { 201 #pragma omp target teams distribute parallel for // OK 202 for (int i = 0; i < 10; ++i) 203 ; 204 } 205 #pragma omp parallel 206 { 207 #pragma omp target teams distribute parallel for simd // OK 208 for (int i = 0; i < 10; ++i) 209 ; 210 } 211 #pragma omp parallel 212 { 213 #pragma omp target teams distribute simd // OK 214 for (int i = 0; i < 10; ++i) 215 ; 216 } 217 218 // SIMD DIRECTIVE 219 #pragma omp simd 220 for (int i = 0; i < 10; ++i) { 221 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 222 for (int i = 0; i < 10; ++i) 223 ; 224 } 225 #pragma omp simd 226 for (int i = 0; i < 10; ++i) { 227 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 228 for (int i = 0; i < 10; ++i) 229 ; 230 } 231 #pragma omp simd 232 for (int i = 0; i < 10; ++i) { 233 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 234 for (int i = 0; i < 10; ++i) 235 ; 236 } 237 #pragma omp simd 238 for (int i = 0; i < 10; ++i) { 239 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 240 for (int i = 0; i < 10; ++i) 241 ; 242 } 243 #pragma omp simd 244 for (int i = 0; i < 10; ++i) { 245 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 246 { 247 bar(); 248 } 249 } 250 #pragma omp simd 251 for (int i = 0; i < 10; ++i) { 252 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 253 { 254 bar(); 255 } 256 } 257 #pragma omp simd 258 for (int i = 0; i < 10; ++i) { 259 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 260 { 261 bar(); 262 } 263 } 264 #pragma omp simd 265 for (int i = 0; i < 10; ++i) { 266 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 267 { 268 bar(); 269 } 270 } 271 #pragma omp simd 272 for (int i = 0; i < 10; ++i) { 273 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 274 { 275 bar(); 276 } 277 } 278 #pragma omp simd 279 for (int i = 0; i < 10; ++i) { 280 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 281 for (int i = 0; i < 10; ++i) 282 ; 283 } 284 #pragma omp simd 285 for (int i = 0; i < 10; ++i) { 286 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 287 for (int i = 0; i < 10; ++i) 288 ; 289 } 290 #pragma omp simd 291 for (int i = 0; i < 10; ++i) { 292 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 293 { 294 bar(); 295 } 296 } 297 #pragma omp simd 298 for (int i = 0; i < 10; ++i) { 299 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 300 { 301 bar(); 302 } 303 } 304 #pragma omp simd 305 for (int i = 0; i < 10; ++i) { 306 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 307 bar(); 308 } 309 #pragma omp simd 310 for (int i = 0; i < 10; ++i) { 311 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 312 bar(); 313 } 314 #pragma omp simd 315 for (int i = 0; i < 10; ++i) { 316 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 317 bar(); 318 } 319 #pragma omp simd 320 for (int i = 0; i < 10; ++i) { 321 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 322 bar(); 323 } 324 #pragma omp simd 325 for (int i = 0; i < 10; ++i) { 326 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 327 bar(); 328 } 329 #pragma omp simd 330 for (int i = 0; i < 10; ++i) { 331 #pragma omp ordered simd // OK 332 bar(); 333 } 334 #pragma omp simd 335 for (int i = 0; i < 10; ++i) { 336 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 337 bar(); 338 } 339 #pragma omp simd 340 for (int i = 0; i < 10; ++i) { 341 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 342 ++a; 343 } 344 #pragma omp simd 345 for (int i = 0; i < 10; ++i) { 346 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 347 ++a; 348 } 349 #pragma omp simd 350 for (int i = 0; i < 10; ++i) { 351 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 352 ++a; 353 } 354 #pragma omp simd 355 for (int i = 0; i < 10; ++i) { 356 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 357 for (int i = 0; i < 10; ++i) 358 ; 359 } 360 #pragma omp simd 361 for (int i = 0; i < 10; ++i) { 362 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 363 ++a; 364 } 365 #pragma omp simd 366 for (int i = 0; i < 10; ++i) { 367 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 368 ++a; 369 } 370 #pragma omp simd 371 for (int i = 0; i < 10; ++i) { 372 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 373 ++a; 374 } 375 #pragma omp simd 376 for (int i = 0; i < 10; ++i) { 377 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 378 for (int i = 0; i < 10; ++i) 379 ++a; 380 } 381 #pragma omp simd 382 for (int i = 0; i < 10; ++i) { 383 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 384 for (int j = 0; j < 10; ++j) 385 ; 386 } 387 #pragma omp simd 388 for (int i = 0; i < 10; ++i) { 389 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 390 } 391 #pragma omp simd 392 for (int i = 0; i < 10; ++i) { 393 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 394 for (int j = 0; j < 10; ++j) 395 ; 396 } 397 #pragma omp simd 398 for (int i = 0; i < 10; ++i) { 399 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 400 for (int j = 0; j < 10; ++j) 401 ; 402 } 403 #pragma omp simd 404 for (int i = 0; i < 10; ++i) { 405 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 406 for (int j = 0; j < 10; ++j) 407 ; 408 } 409 #pragma omp simd 410 for (int i = 0; i < 10; ++i) { 411 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 412 for (int j = 0; j < 10; ++j) 413 ; 414 } 415 #pragma omp simd 416 for (int i = 0; i < 10; ++i) { 417 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 418 for (int j = 0; j < 10; ++j) 419 ; 420 } 421 #pragma omp simd 422 for (int i = 0; i < 10; ++i) { 423 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 424 for (int j = 0; j < 10; ++j) 425 ; 426 } 427 #pragma omp simd 428 for (int i = 0; i < 10; ++i) { 429 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 430 for (int j = 0; j < 10; ++j) 431 ; 432 } 433 #pragma omp simd 434 for (int i = 0; i < 10; ++i) { 435 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 436 for (int j = 0; j < 10; ++j) 437 ; 438 } 439 #pragma omp simd 440 for (int i = 0; i < 10; ++i) { 441 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 442 ++a; 443 } 444 #pragma omp simd 445 for (int i = 0; i < 10; ++i) { 446 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 447 for (int j = 0; j < 10; ++j) 448 ; 449 } 450 #pragma omp simd 451 for (int i = 0; i < 10; ++i) { 452 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 453 for (int j = 0; j < 10; ++j) 454 ; 455 } 456 #pragma omp simd 457 for (int i = 0; i < 10; ++i) { 458 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 459 for (int j = 0; j < 10; ++j) 460 ; 461 } 462 #pragma omp simd 463 for (int i = 0; i < 10; ++i) { 464 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 465 for (int j = 0; j < 10; ++j) 466 ; 467 } 468 469 // FOR DIRECTIVE 470 #pragma omp for 471 for (int i = 0; i < 10; ++i) { 472 #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?}} 473 for (int i = 0; i < 10; ++i) 474 ; 475 } 476 #pragma omp for 477 for (int i = 0; i < 10; ++i) { 478 #pragma omp simd 479 for (int i = 0; i < 10; ++i) 480 ; 481 } 482 #pragma omp for 483 for (int i = 0; i < 10; ++i) { 484 #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?}} 485 for (int i = 0; i < 10; ++i) 486 ; 487 } 488 #pragma omp for 489 for (int i = 0; i < 10; ++i) { 490 #pragma omp parallel 491 for (int i = 0; i < 10; ++i) 492 ; 493 } 494 #pragma omp for 495 for (int i = 0; i < 10; ++i) { 496 #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?}} 497 { 498 bar(); 499 } 500 } 501 #pragma omp for 502 for (int i = 0; i < 10; ++i) { 503 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 504 { 505 bar(); 506 } 507 } 508 #pragma omp for 509 for (int i = 0; i < 10; ++i) { 510 #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?}} 511 { 512 bar(); 513 } 514 } 515 516 #pragma omp for 517 for (int i = 0; i < 10; ++i) { 518 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 519 { 520 bar(); 521 } 522 } 523 #pragma omp for 524 for (int i = 0; i < 10; ++i) { 525 #pragma omp critical 526 { 527 bar(); 528 } 529 } 530 #pragma omp for 531 for (int i = 0; i < 10; ++i) { 532 #pragma omp parallel 533 { 534 #pragma omp single // OK 535 { 536 bar(); 537 } 538 #pragma omp for // OK 539 for (int i = 0; i < 10; ++i) 540 ; 541 #pragma omp sections // OK 542 { 543 bar(); 544 } 545 } 546 } 547 #pragma omp for 548 for (int i = 0; i < 10; ++i) { 549 #pragma omp parallel for 550 for (int i = 0; i < 10; ++i) 551 ; 552 } 553 #pragma omp for 554 for (int i = 0; i < 10; ++i) { 555 #pragma omp parallel for simd 556 for (int i = 0; i < 10; ++i) 557 ; 558 } 559 #pragma omp for 560 for (int i = 0; i < 10; ++i) { 561 #pragma omp parallel sections 562 { 563 bar(); 564 } 565 } 566 #pragma omp for 567 for (int i = 0; i < 10; ++i) { 568 #pragma omp task 569 { 570 bar(); 571 } 572 } 573 #pragma omp for 574 for (int i = 0; i < 10; ++i) { 575 #pragma omp taskyield 576 bar(); 577 } 578 #pragma omp for 579 for (int i = 0; i < 10; ++i) { 580 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 581 bar(); 582 } 583 #pragma omp for 584 for (int i = 0; i < 10; ++i) { 585 #pragma omp taskwait 586 bar(); 587 } 588 #pragma omp for 589 for (int i = 0; i < 10; ++i) { 590 #pragma omp flush 591 bar(); 592 } 593 #pragma omp for 594 for (int i = 0; i < 10; ++i) { 595 #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?}} 596 bar(); 597 } 598 #pragma omp for ordered 599 for (int i = 0; i < 10; ++i) { 600 #pragma omp ordered // OK 601 bar(); 602 } 603 #pragma omp for 604 for (int i = 0; i < 10; ++i) { 605 #pragma omp atomic 606 ++a; 607 } 608 #pragma omp for 609 for (int i = 0; i < 10; ++i) { 610 #pragma omp target 611 ++a; 612 } 613 #pragma omp for 614 for (int i = 0; i < 10; ++i) { 615 #pragma omp target parallel 616 ++a; 617 } 618 #pragma omp for 619 for (int i = 0; i < 10; ++i) { 620 #pragma omp target parallel for 621 for (int i = 0; i < 10; ++i) 622 ; 623 } 624 #pragma omp for 625 for (int i = 0; i < 10; ++i) { 626 #pragma omp target enter data map(to: a) 627 ++a; 628 } 629 #pragma omp for 630 for (int i = 0; i < 10; ++i) { 631 #pragma omp target exit data map(from: a) 632 ++a; 633 } 634 #pragma omp for 635 for (int i = 0; i < 10; ++i) { 636 #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?}} 637 ++a; 638 } 639 #pragma omp for 640 for (int i = 0; i < 10; ++i) { 641 #pragma omp taskloop 642 for (int i = 0; i < 10; ++i) 643 ++a; 644 } 645 #pragma omp for 646 for (int i = 0; i < 10; ++i) { 647 #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?}} 648 for (int j = 0; j < 10; ++j) 649 ; 650 } 651 #pragma omp for 652 for (int i = 0; i < 10; ++i) { 653 #pragma omp target update to(a) 654 } 655 #pragma omp for 656 for (int i = 0; i < 10; ++i) { 657 #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?}} 658 for (int j = 0; j < 10; ++j) 659 ; 660 } 661 #pragma omp for 662 for (int i = 0; i < 10; ++i) { 663 #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?}} 664 for (int j = 0; j < 10; ++j) 665 ; 666 } 667 #pragma omp for 668 for (int i = 0; i < 10; ++i) { 669 #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?}} 670 for (int j = 0; j < 10; ++j) 671 ; 672 } 673 #pragma omp for 674 for (int i = 0; i < 10; ++i) { 675 #pragma omp target simd // OK 676 for (int j = 0; j < 10; ++j) 677 ; 678 } 679 #pragma omp for 680 for (int i = 0; i < 10; ++i) { 681 #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?}} 682 for (int j = 0; j < 10; ++j) 683 ; 684 } 685 #pragma omp for 686 for (int i = 0; i < 10; ++i) { 687 #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?}} 688 for (int j = 0; j < 10; ++j) 689 ; 690 } 691 #pragma omp for 692 for (int i = 0; i < 10; ++i) { 693 #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?}} 694 for (int j = 0; j < 10; ++j) 695 ; 696 } 697 #pragma omp for 698 for (int i = 0; i < 10; ++i) { 699 #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?}} 700 for (int j = 0; j < 10; ++j) 701 ; 702 } 703 #pragma omp for 704 for (int i = 0; i < 10; ++i) { 705 #pragma omp target teams // OK 706 ++a; 707 } 708 #pragma omp for 709 for (int i = 0; i < 10; ++i) { 710 #pragma omp target teams distribute // OK 711 for (int j = 0; j < 10; ++j) 712 ; 713 } 714 #pragma omp for 715 for (int i = 0; i < 10; ++i) { 716 #pragma omp target teams distribute parallel for // OK 717 for (int j = 0; j < 10; ++j) 718 ; 719 } 720 #pragma omp for 721 for (int i = 0; i < 10; ++i) { 722 #pragma omp target teams distribute parallel for simd // OK 723 for (int j = 0; j < 10; ++j) 724 ; 725 } 726 #pragma omp for 727 for (int i = 0; i < 10; ++i) { 728 #pragma omp target teams distribute simd // OK 729 for (int j = 0; j < 10; ++j) 730 ; 731 } 732 733 // FOR SIMD DIRECTIVE 734 #pragma omp for simd 735 for (int i = 0; i < 10; ++i) { 736 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 737 for (int i = 0; i < 10; ++i) 738 ; 739 } 740 #pragma omp for simd 741 for (int i = 0; i < 10; ++i) { 742 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 743 for (int i = 0; i < 10; ++i) 744 ; 745 } 746 #pragma omp for simd 747 for (int i = 0; i < 10; ++i) { 748 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 749 for (int i = 0; i < 10; ++i) 750 ; 751 } 752 #pragma omp for simd 753 for (int i = 0; i < 10; ++i) { 754 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 755 for (int i = 0; i < 10; ++i) 756 ; 757 } 758 #pragma omp for simd 759 for (int i = 0; i < 10; ++i) { 760 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 761 { 762 bar(); 763 } 764 } 765 #pragma omp for simd 766 for (int i = 0; i < 10; ++i) { 767 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 768 { 769 bar(); 770 } 771 } 772 #pragma omp for simd 773 for (int i = 0; i < 10; ++i) { 774 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 775 { 776 bar(); 777 } 778 } 779 #pragma omp for simd 780 for (int i = 0; i < 10; ++i) { 781 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 782 { 783 bar(); 784 } 785 } 786 #pragma omp for simd 787 for (int i = 0; i < 10; ++i) { 788 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 789 { 790 bar(); 791 } 792 } 793 #pragma omp for simd 794 for (int i = 0; i < 10; ++i) { 795 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 796 for (int i = 0; i < 10; ++i) 797 ; 798 } 799 #pragma omp for simd 800 for (int i = 0; i < 10; ++i) { 801 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 802 for (int i = 0; i < 10; ++i) 803 ; 804 } 805 #pragma omp for simd 806 for (int i = 0; i < 10; ++i) { 807 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 808 { 809 bar(); 810 } 811 } 812 #pragma omp for simd 813 for (int i = 0; i < 10; ++i) { 814 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 815 { 816 bar(); 817 } 818 } 819 #pragma omp for simd 820 for (int i = 0; i < 10; ++i) { 821 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 822 bar(); 823 } 824 #pragma omp for simd 825 for (int i = 0; i < 10; ++i) { 826 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 827 bar(); 828 } 829 #pragma omp for simd 830 for (int i = 0; i < 10; ++i) { 831 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 832 bar(); 833 } 834 #pragma omp for simd 835 for (int i = 0; i < 10; ++i) { 836 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 837 bar(); 838 } 839 #pragma omp for simd 840 for (int i = 0; i < 10; ++i) { 841 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 842 bar(); 843 } 844 #pragma omp for simd 845 for (int i = 0; i < 10; ++i) { 846 #pragma omp ordered simd // OK 847 bar(); 848 } 849 #pragma omp for simd 850 for (int i = 0; i < 10; ++i) { 851 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 852 bar(); 853 } 854 #pragma omp for simd 855 for (int i = 0; i < 10; ++i) { 856 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 857 ++a; 858 } 859 #pragma omp for simd 860 for (int i = 0; i < 10; ++i) { 861 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 862 ++a; 863 } 864 #pragma omp for simd 865 for (int i = 0; i < 10; ++i) { 866 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 867 ++a; 868 } 869 #pragma omp for simd 870 for (int i = 0; i < 10; ++i) { 871 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 872 for (int i = 0; i < 10; ++i) 873 ; 874 } 875 #pragma omp for simd 876 for (int i = 0; i < 10; ++i) { 877 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 878 ++a; 879 } 880 #pragma omp for simd 881 for (int i = 0; i < 10; ++i) { 882 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 883 ++a; 884 } 885 #pragma omp for simd 886 for (int i = 0; i < 10; ++i) { 887 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 888 ++a; 889 } 890 #pragma omp for simd 891 for (int i = 0; i < 10; ++i) { 892 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 893 for (int i = 0; i < 10; ++i) 894 ++a; 895 } 896 #pragma omp for simd 897 for (int i = 0; i < 10; ++i) { 898 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 899 for (int j = 0; j < 10; ++j) 900 ; 901 } 902 #pragma omp for simd 903 for (int i = 0; i < 10; ++i) { 904 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 905 bar(); 906 } 907 #pragma omp for simd 908 for (int i = 0; i < 10; ++i) { 909 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 910 for (int j = 0; j < 10; ++j) 911 ; 912 } 913 #pragma omp for simd 914 for (int i = 0; i < 10; ++i) { 915 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 916 for (int j = 0; j < 10; ++j) 917 ; 918 } 919 #pragma omp for simd 920 for (int i = 0; i < 10; ++i) { 921 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 922 for (int j = 0; j < 10; ++j) 923 ; 924 } 925 #pragma omp for simd 926 for (int i = 0; i < 10; ++i) { 927 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 928 for (int j = 0; j < 10; ++j) 929 ; 930 } 931 #pragma omp for simd 932 for (int i = 0; i < 10; ++i) { 933 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 934 for (int j = 0; j < 10; ++j) 935 ; 936 } 937 #pragma omp for simd 938 for (int i = 0; i < 10; ++i) { 939 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 940 for (int j = 0; j < 10; ++j) 941 ; 942 } 943 #pragma omp for simd 944 for (int i = 0; i < 10; ++i) { 945 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 946 for (int j = 0; j < 10; ++j) 947 ; 948 } 949 #pragma omp for simd 950 for (int i = 0; i < 10; ++i) { 951 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 952 for (int j = 0; j < 10; ++j) 953 ; 954 } 955 #pragma omp for simd 956 for (int i = 0; i < 10; ++i) { 957 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 958 a++; 959 } 960 #pragma omp for simd 961 for (int i = 0; i < 10; ++i) { 962 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 963 for (int j = 0; j < 10; ++j) 964 ; 965 } 966 #pragma omp for simd 967 for (int i = 0; i < 10; ++i) { 968 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 969 for (int j = 0; j < 10; ++j) 970 ; 971 } 972 #pragma omp for simd 973 for (int i = 0; i < 10; ++i) { 974 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 975 for (int j = 0; j < 10; ++j) 976 ; 977 } 978 #pragma omp for simd 979 for (int i = 0; i < 10; ++i) { 980 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 981 for (int j = 0; j < 10; ++j) 982 ; 983 } 984 985 // SECTIONS DIRECTIVE 986 #pragma omp sections 987 { 988 #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?}} 989 for (int i = 0; i < 10; ++i) 990 ; 991 } 992 #pragma omp sections 993 { 994 #pragma omp simd 995 for (int i = 0; i < 10; ++i) 996 ; 997 } 998 #pragma omp sections 999 { 1000 #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?}} 1001 for (int i = 0; i < 10; ++i) 1002 ; 1003 } 1004 #pragma omp sections 1005 { 1006 #pragma omp parallel 1007 for (int i = 0; i < 10; ++i) 1008 ; 1009 } 1010 #pragma omp sections 1011 { 1012 #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?}} 1013 { 1014 bar(); 1015 } 1016 } 1017 #pragma omp sections 1018 { 1019 #pragma omp section 1020 { 1021 bar(); 1022 } 1023 } 1024 #pragma omp sections 1025 { 1026 #pragma omp parallel 1027 { 1028 #pragma omp single // OK 1029 { 1030 bar(); 1031 } 1032 #pragma omp for // OK 1033 for (int i = 0; i < 10; ++i) 1034 ; 1035 #pragma omp sections // OK 1036 { 1037 bar(); 1038 } 1039 } 1040 } 1041 #pragma omp sections 1042 { 1043 #pragma omp parallel 1044 { 1045 #pragma omp master // OK 1046 { 1047 bar(); 1048 } 1049 #pragma omp for // OK 1050 for (int i = 0; i < 10; ++i) 1051 ; 1052 #pragma omp master // OK 1053 { 1054 bar(); 1055 } 1056 } 1057 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 1058 bar(); 1059 } 1060 #pragma omp sections 1061 { 1062 #pragma omp parallel 1063 { 1064 #pragma omp critical(A) // OK 1065 { 1066 bar(); 1067 } 1068 #pragma omp for // OK 1069 for (int i = 0; i < 10; ++i) 1070 ; 1071 #pragma omp critical // OK 1072 { 1073 bar(); 1074 } 1075 } 1076 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 1077 bar(); 1078 } 1079 #pragma omp sections 1080 { 1081 #pragma omp parallel for 1082 for (int i = 0; i < 10; ++i) 1083 ; 1084 } 1085 #pragma omp sections 1086 { 1087 #pragma omp parallel for simd 1088 for (int i = 0; i < 10; ++i) 1089 ; 1090 } 1091 #pragma omp sections 1092 { 1093 #pragma omp parallel sections 1094 { 1095 bar(); 1096 } 1097 } 1098 #pragma omp sections 1099 { 1100 #pragma omp task 1101 { 1102 bar(); 1103 } 1104 } 1105 #pragma omp sections 1106 { 1107 #pragma omp taskyield 1108 } 1109 #pragma omp sections 1110 { 1111 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1112 } 1113 #pragma omp sections 1114 { 1115 #pragma omp taskwait 1116 } 1117 #pragma omp sections 1118 { 1119 #pragma omp flush 1120 } 1121 #pragma omp sections 1122 { 1123 #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?}} 1124 bar(); 1125 } 1126 #pragma omp sections 1127 { 1128 #pragma omp atomic 1129 ++a; 1130 } 1131 #pragma omp sections 1132 { 1133 #pragma omp target 1134 ++a; 1135 } 1136 #pragma omp sections 1137 { 1138 #pragma omp target parallel 1139 ++a; 1140 } 1141 #pragma omp sections 1142 { 1143 #pragma omp target parallel for 1144 for (int i = 0; i < 10; ++i) 1145 ; 1146 } 1147 #pragma omp sections 1148 { 1149 #pragma omp target enter data map(to: a) 1150 } 1151 #pragma omp sections 1152 { 1153 #pragma omp target exit data map(from: a) 1154 } 1155 #pragma omp sections 1156 { 1157 #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?}} 1158 ++a; 1159 } 1160 #pragma omp sections 1161 { 1162 #pragma omp taskloop 1163 for (int i = 0; i < 10; ++i) 1164 ++a; 1165 } 1166 #pragma omp sections 1167 { 1168 #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?}} 1169 for (int i = 0; i < 10; ++i) 1170 ; 1171 } 1172 #pragma omp sections 1173 { 1174 #pragma omp target update to(a) 1175 } 1176 #pragma omp sections 1177 { 1178 #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?}} 1179 for (int i = 0; i < 10; ++i) 1180 ; 1181 } 1182 #pragma omp sections 1183 { 1184 #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?}} 1185 for (int i = 0; i < 10; ++i) 1186 ; 1187 } 1188 #pragma omp sections 1189 { 1190 #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?}} 1191 for (int i = 0; i < 10; ++i) 1192 ; 1193 } 1194 #pragma omp sections 1195 { 1196 #pragma omp target simd // OK 1197 for (int i = 0; i < 10; ++i) 1198 ; 1199 } 1200 #pragma omp sections 1201 { 1202 #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?}} 1203 for (int i = 0; i < 10; ++i) 1204 ; 1205 } 1206 #pragma omp sections 1207 { 1208 #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?}} 1209 for (int i = 0; i < 10; ++i) 1210 ; 1211 } 1212 #pragma omp sections 1213 { 1214 #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?}} 1215 for (int i = 0; i < 10; ++i) 1216 ; 1217 } 1218 #pragma omp sections 1219 { 1220 #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?}} 1221 for (int i = 0; i < 10; ++i) 1222 ; 1223 } 1224 #pragma omp sections 1225 { 1226 #pragma omp target teams // OK 1227 ++a; 1228 } 1229 #pragma omp sections 1230 { 1231 #pragma omp target teams distribute // OK 1232 for (int i = 0; i < 10; ++i) 1233 ; 1234 } 1235 #pragma omp sections 1236 { 1237 #pragma omp target teams distribute parallel for // OK 1238 for (int i = 0; i < 10; ++i) 1239 ; 1240 } 1241 #pragma omp sections 1242 { 1243 #pragma omp target teams distribute parallel for simd // OK 1244 for (int i = 0; i < 10; ++i) 1245 ; 1246 } 1247 #pragma omp sections 1248 { 1249 #pragma omp target teams distribute simd // OK 1250 for (int i = 0; i < 10; ++i) 1251 ; 1252 } 1253 1254 // SECTION DIRECTIVE 1255 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1256 { 1257 bar(); 1258 } 1259 #pragma omp sections 1260 { 1261 #pragma omp section 1262 { 1263 #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?}} 1264 for (int i = 0; i < 10; ++i) 1265 ; 1266 } 1267 } 1268 #pragma omp sections 1269 { 1270 #pragma omp section 1271 { 1272 #pragma omp simd 1273 for (int i = 0; i < 10; ++i) 1274 ; 1275 } 1276 } 1277 #pragma omp sections 1278 { 1279 #pragma omp section 1280 { 1281 #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?}} 1282 for (int i = 0; i < 10; ++i) 1283 ; 1284 } 1285 } 1286 #pragma omp sections 1287 { 1288 #pragma omp section 1289 { 1290 #pragma omp parallel 1291 for (int i = 0; i < 10; ++i) 1292 ; 1293 } 1294 } 1295 #pragma omp sections 1296 { 1297 #pragma omp section 1298 { 1299 #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?}} 1300 { 1301 bar(); 1302 } 1303 } 1304 } 1305 #pragma omp sections 1306 { 1307 #pragma omp section 1308 { 1309 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1310 { 1311 bar(); 1312 } 1313 } 1314 } 1315 #pragma omp sections 1316 { 1317 #pragma omp section 1318 { 1319 #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?}} 1320 bar(); 1321 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1322 bar(); 1323 #pragma omp critical 1324 bar(); 1325 } 1326 } 1327 #pragma omp sections 1328 { 1329 #pragma omp section 1330 { 1331 #pragma omp parallel 1332 { 1333 #pragma omp single // OK 1334 { 1335 bar(); 1336 } 1337 #pragma omp for // OK 1338 for (int i = 0; i < 10; ++i) 1339 ; 1340 #pragma omp for simd // OK 1341 for (int i = 0; i < 10; ++i) 1342 ; 1343 #pragma omp sections // OK 1344 { 1345 bar(); 1346 } 1347 } 1348 } 1349 } 1350 #pragma omp sections 1351 { 1352 #pragma omp section 1353 { 1354 #pragma omp parallel for 1355 for (int i = 0; i < 10; ++i) 1356 ; 1357 } 1358 } 1359 #pragma omp sections 1360 { 1361 #pragma omp section 1362 { 1363 #pragma omp parallel for simd 1364 for (int i = 0; i < 10; ++i) 1365 ; 1366 } 1367 } 1368 #pragma omp sections 1369 { 1370 #pragma omp section 1371 { 1372 #pragma omp parallel sections 1373 { 1374 bar(); 1375 } 1376 } 1377 } 1378 #pragma omp sections 1379 { 1380 #pragma omp section 1381 { 1382 #pragma omp task 1383 { 1384 bar(); 1385 } 1386 } 1387 } 1388 #pragma omp sections 1389 { 1390 #pragma omp section 1391 { 1392 #pragma omp taskyield 1393 bar(); 1394 } 1395 } 1396 #pragma omp sections 1397 { 1398 #pragma omp section 1399 { 1400 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1401 bar(); 1402 } 1403 } 1404 #pragma omp sections 1405 { 1406 #pragma omp section 1407 { 1408 #pragma omp taskwait 1409 bar(); 1410 } 1411 } 1412 #pragma omp sections 1413 { 1414 #pragma omp section 1415 { 1416 #pragma omp flush 1417 bar(); 1418 } 1419 } 1420 #pragma omp sections 1421 { 1422 #pragma omp section 1423 { 1424 #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?}} 1425 bar(); 1426 } 1427 } 1428 #pragma omp sections 1429 { 1430 #pragma omp section 1431 #pragma omp atomic 1432 ++a; 1433 } 1434 #pragma omp sections 1435 { 1436 #pragma omp section 1437 #pragma omp target 1438 ++a; 1439 } 1440 #pragma omp sections 1441 { 1442 #pragma omp section 1443 #pragma omp target parallel 1444 ++a; 1445 } 1446 #pragma omp sections 1447 { 1448 #pragma omp section 1449 { 1450 #pragma omp target parallel for 1451 for (int i = 0; i < 10; ++i) 1452 ; 1453 } 1454 } 1455 #pragma omp sections 1456 { 1457 #pragma omp section 1458 { 1459 #pragma omp target enter data map(to: a) 1460 ++a; 1461 } 1462 } 1463 #pragma omp sections 1464 { 1465 #pragma omp section 1466 { 1467 #pragma omp target exit data map(from: a) 1468 ++a; 1469 } 1470 } 1471 #pragma omp sections 1472 { 1473 #pragma omp section 1474 #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?}} 1475 ++a; 1476 } 1477 #pragma omp sections 1478 { 1479 #pragma omp section 1480 #pragma omp taskloop 1481 for (int i = 0; i < 10; ++i) 1482 ++a; 1483 } 1484 #pragma omp sections 1485 { 1486 #pragma omp section 1487 #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?}} 1488 for (int i = 0; i < 10; ++i) 1489 ; 1490 } 1491 #pragma omp sections 1492 { 1493 #pragma omp section 1494 { 1495 bar(); 1496 #pragma omp target update to(a) 1497 } 1498 } 1499 #pragma omp sections 1500 { 1501 #pragma omp section 1502 #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?}} 1503 for (int i = 0; i < 10; ++i) 1504 ; 1505 } 1506 #pragma omp sections 1507 { 1508 #pragma omp section 1509 #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?}} 1510 for (int i = 0; i < 10; ++i) 1511 ; 1512 } 1513 #pragma omp sections 1514 { 1515 #pragma omp section 1516 #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?}} 1517 for (int i = 0; i < 10; ++i) 1518 ; 1519 } 1520 #pragma omp sections 1521 { 1522 #pragma omp section 1523 #pragma omp target simd // OK 1524 for (int i = 0; i < 10; ++i) 1525 ; 1526 } 1527 #pragma omp sections 1528 { 1529 #pragma omp section 1530 #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?}} 1531 for (int i = 0; i < 10; ++i) 1532 ; 1533 } 1534 #pragma omp sections 1535 { 1536 #pragma omp section 1537 #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?}} 1538 for (int i = 0; i < 10; ++i) 1539 ; 1540 } 1541 #pragma omp sections 1542 { 1543 #pragma omp section 1544 #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?}} 1545 for (int i = 0; i < 10; ++i) 1546 ; 1547 } 1548 #pragma omp sections 1549 { 1550 #pragma omp section 1551 #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?}} 1552 for (int i = 0; i < 10; ++i) 1553 ; 1554 } 1555 #pragma omp sections 1556 { 1557 #pragma omp section 1558 #pragma omp target teams // OK 1559 ++a; 1560 } 1561 #pragma omp sections 1562 { 1563 #pragma omp section 1564 #pragma omp target teams distribute // OK 1565 for (int i = 0; i < 10; ++i) 1566 ; 1567 } 1568 #pragma omp sections 1569 { 1570 #pragma omp section 1571 #pragma omp target teams distribute parallel for // OK 1572 for (int i = 0; i < 10; ++i) 1573 ; 1574 } 1575 #pragma omp sections 1576 { 1577 #pragma omp section 1578 #pragma omp target teams distribute parallel for simd // OK 1579 for (int i = 0; i < 10; ++i) 1580 ; 1581 } 1582 #pragma omp sections 1583 { 1584 #pragma omp section 1585 #pragma omp target teams distribute simd // OK 1586 for (int i = 0; i < 10; ++i) 1587 ; 1588 } 1589 1590 // SINGLE DIRECTIVE 1591 #pragma omp single 1592 { 1593 #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?}} 1594 for (int i = 0; i < 10; ++i) 1595 ; 1596 } 1597 #pragma omp single 1598 { 1599 #pragma omp simd 1600 for (int i = 0; i < 10; ++i) 1601 ; 1602 } 1603 #pragma omp single 1604 { 1605 #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?}} 1606 for (int i = 0; i < 10; ++i) 1607 ; 1608 } 1609 #pragma omp single 1610 { 1611 #pragma omp parallel 1612 for (int i = 0; i < 10; ++i) 1613 ; 1614 } 1615 #pragma omp single 1616 { 1617 #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?}} 1618 { 1619 bar(); 1620 } 1621 } 1622 #pragma omp single 1623 { 1624 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1625 { 1626 bar(); 1627 } 1628 } 1629 #pragma omp single 1630 { 1631 #pragma omp critical 1632 { 1633 bar(); 1634 } 1635 } 1636 #pragma omp single 1637 { 1638 #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?}} 1639 { 1640 bar(); 1641 } 1642 } 1643 #pragma omp single 1644 { 1645 #pragma omp parallel 1646 { 1647 #pragma omp single // OK 1648 { 1649 bar(); 1650 } 1651 #pragma omp for // OK 1652 for (int i = 0; i < 10; ++i) 1653 ; 1654 #pragma omp for simd // OK 1655 for (int i = 0; i < 10; ++i) 1656 ; 1657 #pragma omp sections // OK 1658 { 1659 bar(); 1660 } 1661 } 1662 } 1663 #pragma omp single 1664 { 1665 #pragma omp parallel for 1666 for (int i = 0; i < 10; ++i) 1667 ; 1668 } 1669 #pragma omp single 1670 { 1671 #pragma omp parallel for simd 1672 for (int i = 0; i < 10; ++i) 1673 ; 1674 } 1675 #pragma omp single 1676 { 1677 #pragma omp parallel sections 1678 { 1679 bar(); 1680 } 1681 } 1682 #pragma omp single 1683 { 1684 #pragma omp task 1685 { 1686 bar(); 1687 } 1688 } 1689 #pragma omp single 1690 { 1691 #pragma omp taskyield 1692 bar(); 1693 } 1694 #pragma omp single 1695 { 1696 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1697 bar(); 1698 } 1699 #pragma omp single 1700 { 1701 #pragma omp taskwait 1702 bar(); 1703 } 1704 #pragma omp single 1705 { 1706 #pragma omp flush 1707 bar(); 1708 } 1709 #pragma omp single 1710 { 1711 #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?}} 1712 bar(); 1713 } 1714 #pragma omp single 1715 { 1716 #pragma omp atomic 1717 ++a; 1718 } 1719 #pragma omp single 1720 { 1721 #pragma omp target 1722 ++a; 1723 } 1724 #pragma omp single 1725 { 1726 #pragma omp target parallel 1727 ++a; 1728 } 1729 #pragma omp single 1730 { 1731 #pragma omp target parallel for 1732 for (int i = 0; i < 10; ++i) 1733 ; 1734 } 1735 #pragma omp single 1736 { 1737 #pragma omp target enter data map(to: a) 1738 ++a; 1739 } 1740 #pragma omp single 1741 { 1742 #pragma omp target exit data map(from: a) 1743 ++a; 1744 } 1745 #pragma omp single 1746 { 1747 #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?}} 1748 ++a; 1749 } 1750 #pragma omp single 1751 { 1752 #pragma omp taskloop 1753 for (int i = 0; i < 10; ++i) 1754 ++a; 1755 } 1756 #pragma omp single 1757 { 1758 #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?}} 1759 for (int i = 0; i < 10; ++i) 1760 ; 1761 } 1762 #pragma omp single 1763 { 1764 #pragma omp target update to(a) 1765 bar(); 1766 } 1767 #pragma omp single 1768 { 1769 #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?}} 1770 for (int i = 0; i < 10; ++i) 1771 ; 1772 } 1773 #pragma omp single 1774 { 1775 #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?}} 1776 for (int i = 0; i < 10; ++i) 1777 ; 1778 } 1779 #pragma omp single 1780 { 1781 #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?}} 1782 for (int i = 0; i < 10; ++i) 1783 ; 1784 } 1785 #pragma omp single 1786 { 1787 #pragma omp target simd // OK 1788 for (int i = 0; i < 10; ++i) 1789 ; 1790 } 1791 #pragma omp single 1792 { 1793 #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?}} 1794 for (int i = 0; i < 10; ++i) 1795 ; 1796 } 1797 #pragma omp single 1798 { 1799 #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?}} 1800 for (int i = 0; i < 10; ++i) 1801 ; 1802 } 1803 #pragma omp single 1804 { 1805 #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?}} 1806 for (int i = 0; i < 10; ++i) 1807 ; 1808 } 1809 #pragma omp single 1810 { 1811 #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?}} 1812 for (int i = 0; i < 10; ++i) 1813 ; 1814 } 1815 #pragma omp single 1816 { 1817 #pragma omp target teams // OK 1818 ++a; 1819 } 1820 #pragma omp single 1821 { 1822 #pragma omp target teams distribute // OK 1823 for (int i = 0; i < 10; ++i) 1824 ; 1825 } 1826 #pragma omp single 1827 { 1828 #pragma omp target teams distribute parallel for // OK 1829 for (int i = 0; i < 10; ++i) 1830 ; 1831 } 1832 #pragma omp single 1833 { 1834 #pragma omp target teams distribute parallel for simd // OK 1835 for (int i = 0; i < 10; ++i) 1836 ; 1837 } 1838 #pragma omp single 1839 { 1840 #pragma omp target teams distribute simd // OK 1841 for (int i = 0; i < 10; ++i) 1842 ; 1843 } 1844 1845 // MASTER DIRECTIVE 1846 #pragma omp master 1847 { 1848 #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?}} 1849 for (int i = 0; i < 10; ++i) 1850 ; 1851 } 1852 #pragma omp master 1853 { 1854 #pragma omp simd 1855 for (int i = 0; i < 10; ++i) 1856 ; 1857 } 1858 #pragma omp master 1859 { 1860 #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?}} 1861 for (int i = 0; i < 10; ++i) 1862 ; 1863 } 1864 #pragma omp master 1865 { 1866 #pragma omp parallel 1867 for (int i = 0; i < 10; ++i) 1868 ; 1869 } 1870 #pragma omp master 1871 { 1872 #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?}} 1873 { 1874 bar(); 1875 } 1876 } 1877 #pragma omp master 1878 { 1879 #pragma omp master // OK, though second 'master' is redundant 1880 { 1881 bar(); 1882 } 1883 } 1884 #pragma omp master 1885 { 1886 #pragma omp critical 1887 { 1888 bar(); 1889 } 1890 } 1891 #pragma omp master 1892 { 1893 #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?}} 1894 { 1895 bar(); 1896 } 1897 } 1898 #pragma omp master 1899 { 1900 #pragma omp parallel 1901 { 1902 #pragma omp master // OK 1903 { 1904 bar(); 1905 } 1906 #pragma omp for // OK 1907 for (int i = 0; i < 10; ++i) 1908 ; 1909 #pragma omp for simd // OK 1910 for (int i = 0; i < 10; ++i) 1911 ; 1912 #pragma omp sections // OK 1913 { 1914 bar(); 1915 } 1916 } 1917 } 1918 #pragma omp master 1919 { 1920 #pragma omp parallel for 1921 for (int i = 0; i < 10; ++i) 1922 ; 1923 } 1924 #pragma omp master 1925 { 1926 #pragma omp parallel for simd 1927 for (int i = 0; i < 10; ++i) 1928 ; 1929 } 1930 #pragma omp master 1931 { 1932 #pragma omp parallel sections 1933 { 1934 bar(); 1935 } 1936 } 1937 #pragma omp master 1938 { 1939 #pragma omp task 1940 { 1941 bar(); 1942 } 1943 } 1944 #pragma omp master 1945 { 1946 #pragma omp taskyield 1947 bar(); 1948 } 1949 #pragma omp master 1950 { 1951 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 1952 bar(); 1953 } 1954 #pragma omp master 1955 { 1956 #pragma omp taskwait 1957 bar(); 1958 } 1959 #pragma omp master 1960 { 1961 #pragma omp flush 1962 bar(); 1963 } 1964 #pragma omp master 1965 { 1966 #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?}} 1967 bar(); 1968 } 1969 #pragma omp master 1970 { 1971 #pragma omp atomic 1972 ++a; 1973 } 1974 #pragma omp master 1975 { 1976 #pragma omp target 1977 ++a; 1978 } 1979 #pragma omp master 1980 { 1981 #pragma omp target parallel 1982 ++a; 1983 } 1984 #pragma omp master 1985 { 1986 #pragma omp target parallel for 1987 for (int i = 0; i < 10; ++i) 1988 ; 1989 } 1990 #pragma omp master 1991 { 1992 #pragma omp target enter data map(to: a) 1993 ++a; 1994 } 1995 #pragma omp master 1996 { 1997 #pragma omp target exit data map(from: a) 1998 ++a; 1999 } 2000 #pragma omp master 2001 { 2002 #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?}} 2003 ++a; 2004 } 2005 #pragma omp master 2006 { 2007 #pragma omp taskloop 2008 for (int i = 0; i < 10; ++i) 2009 ++a; 2010 } 2011 #pragma omp master 2012 { 2013 #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?}} 2014 for (int i = 0; i < 10; ++i) 2015 ; 2016 } 2017 #pragma omp master 2018 { 2019 #pragma omp target update to(a) 2020 bar(); 2021 } 2022 #pragma omp master 2023 { 2024 #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?}} 2025 for (int i = 0; i < 10; ++i) 2026 ; 2027 } 2028 #pragma omp master 2029 { 2030 #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?}} 2031 for (int i = 0; i < 10; ++i) 2032 ; 2033 } 2034 #pragma omp master 2035 { 2036 #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?}} 2037 for (int i = 0; i < 10; ++i) 2038 ; 2039 } 2040 #pragma omp master 2041 { 2042 #pragma omp target simd // OK 2043 for (int i = 0; i < 10; ++i) 2044 ; 2045 } 2046 #pragma omp master 2047 { 2048 #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?}} 2049 for (int i = 0; i < 10; ++i) 2050 ; 2051 } 2052 #pragma omp master 2053 { 2054 #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?}} 2055 for (int i = 0; i < 10; ++i) 2056 ; 2057 } 2058 #pragma omp master 2059 { 2060 #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?}} 2061 for (int i = 0; i < 10; ++i) 2062 ; 2063 } 2064 #pragma omp master 2065 { 2066 #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?}} 2067 for (int i = 0; i < 10; ++i) 2068 ; 2069 } 2070 #pragma omp master 2071 { 2072 #pragma omp target teams // OK 2073 a++; 2074 } 2075 #pragma omp master 2076 { 2077 #pragma omp target teams distribute // OK 2078 for (int i = 0; i < 10; ++i) 2079 ; 2080 } 2081 #pragma omp master 2082 { 2083 #pragma omp target teams distribute parallel for // OK 2084 for (int i = 0; i < 10; ++i) 2085 ; 2086 } 2087 #pragma omp master 2088 { 2089 #pragma omp target teams distribute parallel for simd // OK 2090 for (int i = 0; i < 10; ++i) 2091 ; 2092 } 2093 #pragma omp master 2094 { 2095 #pragma omp target teams distribute simd // OK 2096 for (int i = 0; i < 10; ++i) 2097 ; 2098 } 2099 2100 // CRITICAL DIRECTIVE 2101 #pragma omp critical 2102 { 2103 #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?}} 2104 for (int i = 0; i < 10; ++i) 2105 ; 2106 } 2107 #pragma omp critical 2108 { 2109 #pragma omp simd 2110 for (int i = 0; i < 10; ++i) 2111 ; 2112 } 2113 #pragma omp critical 2114 { 2115 #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?}} 2116 for (int i = 0; i < 10; ++i) 2117 ; 2118 } 2119 #pragma omp critical 2120 { 2121 #pragma omp parallel 2122 for (int i = 0; i < 10; ++i) 2123 ; 2124 } 2125 #pragma omp critical 2126 { 2127 #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?}} 2128 { 2129 bar(); 2130 } 2131 } 2132 #pragma omp critical 2133 { 2134 #pragma omp master // OK, though second 'master' is redundant 2135 { 2136 bar(); 2137 } 2138 } 2139 #pragma omp critical 2140 { 2141 #pragma omp critical 2142 { 2143 bar(); 2144 } 2145 } 2146 #pragma omp critical 2147 { 2148 #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?}} 2149 { 2150 bar(); 2151 } 2152 } 2153 #pragma omp critical 2154 { 2155 #pragma omp parallel 2156 { 2157 #pragma omp master // OK 2158 { 2159 bar(); 2160 } 2161 #pragma omp for // OK 2162 for (int i = 0; i < 10; ++i) 2163 ; 2164 #pragma omp for simd // OK 2165 for (int i = 0; i < 10; ++i) 2166 ; 2167 #pragma omp sections // OK 2168 { 2169 bar(); 2170 } 2171 } 2172 } 2173 #pragma omp critical 2174 { 2175 #pragma omp parallel for 2176 for (int i = 0; i < 10; ++i) 2177 ; 2178 } 2179 #pragma omp critical 2180 { 2181 #pragma omp parallel for simd 2182 for (int i = 0; i < 10; ++i) 2183 ; 2184 } 2185 #pragma omp critical 2186 { 2187 #pragma omp parallel sections 2188 { 2189 bar(); 2190 } 2191 } 2192 #pragma omp critical 2193 { 2194 #pragma omp task 2195 { 2196 bar(); 2197 } 2198 } 2199 #pragma omp critical 2200 { 2201 #pragma omp taskyield 2202 bar(); 2203 } 2204 #pragma omp critical 2205 { 2206 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2207 bar(); 2208 } 2209 #pragma omp critical 2210 { 2211 #pragma omp taskwait 2212 bar(); 2213 } 2214 #pragma omp critical(Tuzik) 2215 { 2216 #pragma omp critical(grelka) 2217 bar(); 2218 } 2219 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2220 { 2221 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2222 { 2223 #pragma omp critical(Tuzik) 2224 { 2225 #pragma omp parallel 2226 #pragma omp critical(grelka) 2227 { 2228 bar(); 2229 } 2230 } 2231 } 2232 } 2233 #pragma omp critical 2234 { 2235 #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?}} 2236 bar(); 2237 } 2238 #pragma omp critical 2239 { 2240 #pragma omp atomic 2241 ++a; 2242 } 2243 #pragma omp critical 2244 { 2245 #pragma omp target 2246 ++a; 2247 } 2248 #pragma omp critical 2249 { 2250 #pragma omp target parallel 2251 ++a; 2252 } 2253 #pragma omp critical 2254 { 2255 #pragma omp target parallel for 2256 for (int i = 0; i < 10; ++i) 2257 ; 2258 } 2259 #pragma omp critical 2260 { 2261 #pragma omp target enter data map(to: a) 2262 ++a; 2263 } 2264 #pragma omp critical 2265 { 2266 #pragma omp target exit data map(from: a) 2267 ++a; 2268 } 2269 #pragma omp critical 2270 { 2271 #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?}} 2272 ++a; 2273 } 2274 #pragma omp critical 2275 { 2276 #pragma omp taskloop 2277 for (int i = 0; i < 10; ++i) 2278 ++a; 2279 } 2280 #pragma omp critical 2281 { 2282 #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?}} 2283 for (int i = 0; i < 10; ++i) 2284 ; 2285 } 2286 #pragma omp critical 2287 { 2288 #pragma omp target update to(a) 2289 bar(); 2290 } 2291 #pragma omp critical 2292 { 2293 #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?}} 2294 for (int i = 0; i < 10; ++i) 2295 ; 2296 } 2297 #pragma omp critical 2298 { 2299 #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?}} 2300 for (int i = 0; i < 10; ++i) 2301 ; 2302 } 2303 #pragma omp critical 2304 { 2305 #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?}} 2306 for (int i = 0; i < 10; ++i) 2307 ; 2308 } 2309 #pragma omp critical 2310 { 2311 #pragma omp target simd // OK 2312 for (int i = 0; i < 10; ++i) 2313 ; 2314 } 2315 #pragma omp critical 2316 { 2317 #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?}} 2318 for (int i = 0; i < 10; ++i) 2319 ; 2320 } 2321 #pragma omp critical 2322 { 2323 #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?}} 2324 for (int i = 0; i < 10; ++i) 2325 ; 2326 } 2327 #pragma omp critical 2328 { 2329 #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?}} 2330 for (int i = 0; i < 10; ++i) 2331 ; 2332 } 2333 #pragma omp critical 2334 { 2335 #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?}} 2336 for (int i = 0; i < 10; ++i) 2337 ; 2338 } 2339 #pragma omp critical 2340 { 2341 #pragma omp target teams // OK 2342 a++; 2343 } 2344 #pragma omp critical 2345 { 2346 #pragma omp target teams distribute // OK 2347 for (int i = 0; i < 10; ++i) 2348 ; 2349 } 2350 #pragma omp critical 2351 { 2352 #pragma omp target teams distribute parallel for // OK 2353 for (int i = 0; i < 10; ++i) 2354 ; 2355 } 2356 #pragma omp critical 2357 { 2358 #pragma omp target teams distribute parallel for simd // OK 2359 for (int i = 0; i < 10; ++i) 2360 ; 2361 } 2362 #pragma omp critical 2363 { 2364 #pragma omp target teams distribute simd // OK 2365 for (int i = 0; i < 10; ++i) 2366 ; 2367 } 2368 2369 // PARALLEL FOR DIRECTIVE 2370 #pragma omp parallel for 2371 for (int i = 0; i < 10; ++i) { 2372 #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?}} 2373 for (int i = 0; i < 10; ++i) 2374 ; 2375 } 2376 #pragma omp parallel for 2377 for (int i = 0; i < 10; ++i) { 2378 #pragma omp simd 2379 for (int i = 0; i < 10; ++i) 2380 ; 2381 } 2382 #pragma omp parallel for 2383 for (int i = 0; i < 10; ++i) { 2384 #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?}} 2385 for (int i = 0; i < 10; ++i) 2386 ; 2387 } 2388 #pragma omp parallel for 2389 for (int i = 0; i < 10; ++i) { 2390 #pragma omp parallel 2391 for (int i = 0; i < 10; ++i) 2392 ; 2393 } 2394 #pragma omp parallel for 2395 for (int i = 0; i < 10; ++i) { 2396 #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?}} 2397 { 2398 bar(); 2399 } 2400 } 2401 #pragma omp parallel for 2402 for (int i = 0; i < 10; ++i) { 2403 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2404 { 2405 bar(); 2406 } 2407 } 2408 #pragma omp parallel for 2409 for (int i = 0; i < 10; ++i) { 2410 #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?}} 2411 { 2412 bar(); 2413 } 2414 } 2415 2416 #pragma omp parallel for 2417 for (int i = 0; i < 10; ++i) { 2418 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2419 { 2420 bar(); 2421 } 2422 } 2423 2424 #pragma omp parallel for 2425 for (int i = 0; i < 10; ++i) { 2426 #pragma omp critical 2427 { 2428 bar(); 2429 } 2430 } 2431 2432 #pragma omp parallel for 2433 for (int i = 0; i < 10; ++i) { 2434 #pragma omp parallel 2435 { 2436 #pragma omp single // OK 2437 { 2438 bar(); 2439 } 2440 #pragma omp for // OK 2441 for (int i = 0; i < 10; ++i) 2442 ; 2443 #pragma omp for simd // OK 2444 for (int i = 0; i < 10; ++i) 2445 ; 2446 #pragma omp sections // OK 2447 { 2448 bar(); 2449 } 2450 } 2451 } 2452 #pragma omp parallel for 2453 for (int i = 0; i < 10; ++i) { 2454 #pragma omp parallel for 2455 for (int i = 0; i < 10; ++i) 2456 ; 2457 } 2458 #pragma omp parallel for 2459 for (int i = 0; i < 10; ++i) { 2460 #pragma omp parallel for simd 2461 for (int i = 0; i < 10; ++i) 2462 ; 2463 } 2464 #pragma omp parallel for 2465 for (int i = 0; i < 10; ++i) { 2466 #pragma omp parallel sections 2467 { 2468 bar(); 2469 } 2470 } 2471 #pragma omp parallel for 2472 for (int i = 0; i < 10; ++i) { 2473 #pragma omp task 2474 { 2475 bar(); 2476 } 2477 } 2478 #pragma omp parallel for 2479 for (int i = 0; i < 10; ++i) { 2480 #pragma omp taskyield 2481 bar(); 2482 } 2483 #pragma omp parallel for 2484 for (int i = 0; i < 10; ++i) { 2485 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2486 bar(); 2487 } 2488 #pragma omp parallel for 2489 for (int i = 0; i < 10; ++i) { 2490 #pragma omp taskwait 2491 bar(); 2492 } 2493 #pragma omp parallel for 2494 for (int i = 0; i < 10; ++i) { 2495 #pragma omp flush 2496 bar(); 2497 } 2498 #pragma omp parallel for 2499 for (int i = 0; i < 10; ++i) { 2500 #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?}} 2501 bar(); 2502 } 2503 #pragma omp parallel for ordered 2504 for (int i = 0; i < 10; ++i) { 2505 #pragma omp ordered // OK 2506 bar(); 2507 } 2508 #pragma omp parallel for 2509 for (int i = 0; i < 10; ++i) { 2510 #pragma omp atomic 2511 ++a; 2512 } 2513 #pragma omp parallel for 2514 for (int i = 0; i < 10; ++i) { 2515 #pragma omp target 2516 ++a; 2517 } 2518 #pragma omp parallel for 2519 for (int i = 0; i < 10; ++i) { 2520 #pragma omp target parallel 2521 ++a; 2522 } 2523 #pragma omp parallel for 2524 for (int i = 0; i < 10; ++i) { 2525 #pragma omp target parallel for 2526 for (int i = 0; i < 10; ++i) 2527 ; 2528 } 2529 #pragma omp parallel for 2530 for (int i = 0; i < 10; ++i) { 2531 #pragma omp target enter data map(to: a) 2532 ++a; 2533 } 2534 #pragma omp parallel for 2535 for (int i = 0; i < 10; ++i) { 2536 #pragma omp target exit data map(from: a) 2537 ++a; 2538 } 2539 #pragma omp parallel for 2540 for (int i = 0; i < 10; ++i) { 2541 #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?}} 2542 ++a; 2543 } 2544 #pragma omp parallel for 2545 for (int i = 0; i < 10; ++i) { 2546 #pragma omp taskloop 2547 for (int i = 0; i < 10; ++i) 2548 ++a; 2549 } 2550 #pragma omp parallel for 2551 for (int i = 0; i < 10; ++i) { 2552 #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?}} 2553 for (int j = 0; j < 10; ++j) 2554 ; 2555 } 2556 #pragma omp parallel for 2557 for (int i = 0; i < 10; ++i) { 2558 #pragma omp target update to(a) 2559 } 2560 #pragma omp parallel for 2561 for (int i = 0; i < 10; ++i) { 2562 #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?}} 2563 for (int j = 0; j < 10; ++j) 2564 ; 2565 } 2566 #pragma omp parallel for 2567 for (int i = 0; i < 10; ++i) { 2568 #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?}} 2569 for (int j = 0; j < 10; ++j) 2570 ; 2571 } 2572 #pragma omp parallel for 2573 for (int i = 0; i < 10; ++i) { 2574 #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?}} 2575 for (int j = 0; j < 10; ++j) 2576 ; 2577 } 2578 #pragma omp parallel for 2579 for (int i = 0; i < 10; ++i) { 2580 #pragma omp target simd // OK 2581 for (int j = 0; j < 10; ++j) 2582 ; 2583 } 2584 #pragma omp parallel for 2585 for (int i = 0; i < 10; ++i) { 2586 #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?}} 2587 for (int j = 0; j < 10; ++j) 2588 ; 2589 } 2590 #pragma omp parallel for 2591 for (int i = 0; i < 10; ++i) { 2592 #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?}} 2593 for (int j = 0; j < 10; ++j) 2594 ; 2595 } 2596 #pragma omp parallel for 2597 for (int i = 0; i < 10; ++i) { 2598 #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?}} 2599 for (int j = 0; j < 10; ++j) 2600 ; 2601 } 2602 #pragma omp parallel for 2603 for (int i = 0; i < 10; ++i) { 2604 #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?}} 2605 for (int j = 0; j < 10; ++j) 2606 ; 2607 } 2608 #pragma omp parallel for 2609 for (int i = 0; i < 10; ++i) { 2610 #pragma omp target teams // OK 2611 a++; 2612 } 2613 #pragma omp parallel for 2614 for (int i = 0; i < 10; ++i) { 2615 #pragma omp target teams distribute // OK 2616 for (int j = 0; j < 10; ++j) 2617 ; 2618 } 2619 #pragma omp parallel for 2620 for (int i = 0; i < 10; ++i) { 2621 #pragma omp target teams distribute parallel for // OK 2622 for (int j = 0; j < 10; ++j) 2623 ; 2624 } 2625 #pragma omp parallel for 2626 for (int i = 0; i < 10; ++i) { 2627 #pragma omp target teams distribute parallel for simd // OK 2628 for (int j = 0; j < 10; ++j) 2629 ; 2630 } 2631 #pragma omp parallel for 2632 for (int i = 0; i < 10; ++i) { 2633 #pragma omp target teams distribute simd // OK 2634 for (int j = 0; j < 10; ++j) 2635 ; 2636 } 2637 2638 // PARALLEL FOR SIMD DIRECTIVE 2639 #pragma omp parallel for simd 2640 for (int i = 0; i < 10; ++i) { 2641 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2642 for (int i = 0; i < 10; ++i) 2643 ; 2644 } 2645 #pragma omp parallel for simd 2646 for (int i = 0; i < 10; ++i) { 2647 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2648 for (int i = 0; i < 10; ++i) 2649 ; 2650 } 2651 #pragma omp parallel for simd 2652 for (int i = 0; i < 10; ++i) { 2653 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2654 for (int i = 0; i < 10; ++i) 2655 ; 2656 } 2657 #pragma omp parallel for simd 2658 for (int i = 0; i < 10; ++i) { 2659 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2660 for (int i = 0; i < 10; ++i) 2661 ; 2662 } 2663 #pragma omp parallel for simd 2664 for (int i = 0; i < 10; ++i) { 2665 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2666 { 2667 bar(); 2668 } 2669 } 2670 #pragma omp parallel for simd 2671 for (int i = 0; i < 10; ++i) { 2672 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2673 { 2674 bar(); 2675 } 2676 } 2677 #pragma omp parallel for simd 2678 for (int i = 0; i < 10; ++i) { 2679 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2680 { 2681 bar(); 2682 } 2683 } 2684 2685 #pragma omp parallel for simd 2686 for (int i = 0; i < 10; ++i) { 2687 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2688 { 2689 bar(); 2690 } 2691 } 2692 2693 #pragma omp parallel for simd 2694 for (int i = 0; i < 10; ++i) { 2695 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2696 { 2697 bar(); 2698 } 2699 } 2700 2701 #pragma omp parallel for simd 2702 for (int i = 0; i < 10; ++i) { 2703 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2704 { 2705 #pragma omp single 2706 { 2707 bar(); 2708 } 2709 #pragma omp for 2710 for (int i = 0; i < 10; ++i) 2711 ; 2712 #pragma omp for simd 2713 for (int i = 0; i < 10; ++i) 2714 ; 2715 #pragma omp sections 2716 { 2717 bar(); 2718 } 2719 } 2720 } 2721 #pragma omp parallel for simd 2722 for (int i = 0; i < 10; ++i) { 2723 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2724 for (int i = 0; i < 10; ++i) 2725 ; 2726 } 2727 #pragma omp parallel for simd 2728 for (int i = 0; i < 10; ++i) { 2729 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2730 for (int i = 0; i < 10; ++i) 2731 ; 2732 } 2733 #pragma omp parallel for simd 2734 for (int i = 0; i < 10; ++i) { 2735 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2736 { 2737 bar(); 2738 } 2739 } 2740 #pragma omp parallel for simd 2741 for (int i = 0; i < 10; ++i) { 2742 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2743 { 2744 bar(); 2745 } 2746 } 2747 #pragma omp parallel for simd 2748 for (int i = 0; i < 10; ++i) { 2749 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2750 bar(); 2751 } 2752 #pragma omp parallel for simd 2753 for (int i = 0; i < 10; ++i) { 2754 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2755 bar(); 2756 } 2757 #pragma omp parallel for simd 2758 for (int i = 0; i < 10; ++i) { 2759 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2760 bar(); 2761 } 2762 #pragma omp parallel for simd 2763 for (int i = 0; i < 10; ++i) { 2764 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2765 bar(); 2766 } 2767 #pragma omp parallel for simd 2768 for (int i = 0; i < 10; ++i) { 2769 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2770 bar(); 2771 } 2772 #pragma omp parallel for simd 2773 for (int i = 0; i < 10; ++i) { 2774 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2775 bar(); 2776 } 2777 #pragma omp parallel for simd 2778 for (int i = 0; i < 10; ++i) { 2779 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2780 ++a; 2781 } 2782 #pragma omp parallel for simd 2783 for (int i = 0; i < 10; ++i) { 2784 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2785 ++a; 2786 } 2787 #pragma omp parallel for simd 2788 for (int i = 0; i < 10; ++i) { 2789 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2790 ++a; 2791 } 2792 #pragma omp parallel for simd 2793 for (int i = 0; i < 10; ++i) { 2794 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2795 for (int i = 0; i < 10; ++i) 2796 ; 2797 } 2798 #pragma omp parallel for simd 2799 for (int i = 0; i < 10; ++i) { 2800 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2801 ++a; 2802 } 2803 #pragma omp parallel for simd 2804 for (int i = 0; i < 10; ++i) { 2805 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2806 ++a; 2807 } 2808 #pragma omp parallel for simd 2809 for (int i = 0; i < 10; ++i) { 2810 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2811 ++a; 2812 } 2813 #pragma omp parallel for simd 2814 for (int i = 0; i < 10; ++i) { 2815 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2816 for (int i = 0; i < 10; ++i) 2817 ++a; 2818 } 2819 #pragma omp parallel for simd 2820 for (int i = 0; i < 10; ++i) { 2821 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2822 for (int j = 0; j < 10; ++j) 2823 ; 2824 } 2825 #pragma omp parallel for simd 2826 for (int i = 0; i < 10; ++i) { 2827 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2828 bar(); 2829 } 2830 #pragma omp parallel for simd 2831 for (int i = 0; i < 10; ++i) { 2832 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2833 for (int j = 0; j < 10; ++j) 2834 ; 2835 } 2836 #pragma omp parallel for simd 2837 for (int i = 0; i < 10; ++i) { 2838 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2839 for (int j = 0; j < 10; ++j) 2840 ; 2841 } 2842 #pragma omp parallel for simd 2843 for (int i = 0; i < 10; ++i) { 2844 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2845 for (int j = 0; j < 10; ++j) 2846 ; 2847 } 2848 #pragma omp parallel for simd 2849 for (int i = 0; i < 10; ++i) { 2850 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2851 for (int j = 0; j < 10; ++j) 2852 ; 2853 } 2854 #pragma omp parallel for simd 2855 for (int i = 0; i < 10; ++i) { 2856 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2857 for (int j = 0; j < 10; ++j) 2858 ; 2859 } 2860 #pragma omp parallel for simd 2861 for (int i = 0; i < 10; ++i) { 2862 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2863 for (int j = 0; j < 10; ++j) 2864 ; 2865 } 2866 #pragma omp parallel for simd 2867 for (int i = 0; i < 10; ++i) { 2868 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2869 for (int j = 0; j < 10; ++j) 2870 ; 2871 } 2872 #pragma omp parallel for simd 2873 for (int i = 0; i < 10; ++i) { 2874 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2875 for (int j = 0; j < 10; ++j) 2876 ; 2877 } 2878 #pragma omp parallel for simd 2879 for (int i = 0; i < 10; ++i) { 2880 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2881 a++; 2882 } 2883 #pragma omp parallel for simd 2884 for (int i = 0; i < 10; ++i) { 2885 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2886 for (int j = 0; j < 10; ++j) 2887 ; 2888 } 2889 #pragma omp parallel for simd 2890 for (int i = 0; i < 10; ++i) { 2891 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2892 for (int j = 0; j < 10; ++j) 2893 ; 2894 } 2895 #pragma omp parallel for simd 2896 for (int i = 0; i < 10; ++i) { 2897 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2898 for (int j = 0; j < 10; ++j) 2899 ; 2900 } 2901 #pragma omp parallel for simd 2902 for (int i = 0; i < 10; ++i) { 2903 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2904 for (int j = 0; j < 10; ++j) 2905 ; 2906 } 2907 2908 // PARALLEL SECTIONS DIRECTIVE 2909 #pragma omp parallel sections 2910 { 2911 #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?}} 2912 for (int i = 0; i < 10; ++i) 2913 ; 2914 } 2915 #pragma omp parallel sections 2916 { 2917 #pragma omp simd 2918 for (int i = 0; i < 10; ++i) 2919 ; 2920 } 2921 #pragma omp parallel sections 2922 { 2923 #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?}} 2924 for (int i = 0; i < 10; ++i) 2925 ; 2926 } 2927 #pragma omp parallel sections 2928 { 2929 #pragma omp parallel 2930 for (int i = 0; i < 10; ++i) 2931 ; 2932 } 2933 #pragma omp parallel sections 2934 { 2935 #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?}} 2936 { 2937 bar(); 2938 } 2939 } 2940 #pragma omp parallel sections 2941 { 2942 #pragma omp section 2943 { 2944 bar(); 2945 } 2946 } 2947 #pragma omp parallel sections 2948 { 2949 #pragma omp section 2950 { 2951 #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?}} 2952 bar(); 2953 } 2954 } 2955 #pragma omp parallel sections 2956 { 2957 #pragma omp section 2958 { 2959 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 2960 bar(); 2961 } 2962 } 2963 #pragma omp parallel sections 2964 { 2965 #pragma omp section 2966 { 2967 #pragma omp critical 2968 bar(); 2969 } 2970 } 2971 #pragma omp parallel sections 2972 { 2973 #pragma omp parallel 2974 { 2975 #pragma omp single // OK 2976 { 2977 bar(); 2978 } 2979 #pragma omp for // OK 2980 for (int i = 0; i < 10; ++i) 2981 ; 2982 #pragma omp for simd // OK 2983 for (int i = 0; i < 10; ++i) 2984 ; 2985 #pragma omp sections // OK 2986 { 2987 bar(); 2988 } 2989 } 2990 } 2991 #pragma omp parallel sections 2992 { 2993 #pragma omp parallel for 2994 for (int i = 0; i < 10; ++i) 2995 ; 2996 } 2997 #pragma omp parallel sections 2998 { 2999 #pragma omp parallel for simd 3000 for (int i = 0; i < 10; ++i) 3001 ; 3002 } 3003 #pragma omp parallel sections 3004 { 3005 #pragma omp parallel sections 3006 { 3007 bar(); 3008 } 3009 } 3010 #pragma omp parallel sections 3011 { 3012 #pragma omp task 3013 { 3014 bar(); 3015 } 3016 } 3017 #pragma omp parallel sections 3018 { 3019 #pragma omp taskyield 3020 } 3021 #pragma omp parallel sections 3022 { 3023 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 3024 } 3025 #pragma omp parallel sections 3026 { 3027 #pragma omp taskwait 3028 } 3029 #pragma omp parallel sections 3030 { 3031 #pragma omp flush 3032 } 3033 #pragma omp parallel sections 3034 { 3035 #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?}} 3036 bar(); 3037 } 3038 #pragma omp parallel sections 3039 { 3040 #pragma omp atomic 3041 ++a; 3042 } 3043 #pragma omp parallel sections 3044 { 3045 #pragma omp target 3046 ++a; 3047 } 3048 #pragma omp parallel sections 3049 { 3050 #pragma omp target parallel 3051 ++a; 3052 } 3053 #pragma omp parallel sections 3054 { 3055 #pragma omp target parallel for 3056 for (int i = 0; i < 10; ++i) 3057 ; 3058 } 3059 #pragma omp parallel sections 3060 { 3061 #pragma omp target enter data map(to: a) 3062 } 3063 #pragma omp parallel sections 3064 { 3065 #pragma omp target exit data map(from: a) 3066 } 3067 #pragma omp parallel sections 3068 { 3069 #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?}} 3070 ++a; 3071 } 3072 #pragma omp parallel sections 3073 { 3074 #pragma omp taskloop 3075 for (int i = 0; i < 10; ++i) 3076 ++a; 3077 } 3078 #pragma omp parallel sections 3079 { 3080 #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?}} 3081 for (int i = 0; i < 10; ++i) 3082 ; 3083 } 3084 #pragma omp parallel sections 3085 { 3086 #pragma omp target update to(a) 3087 } 3088 #pragma omp parallel sections 3089 { 3090 #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?}} 3091 for (int i = 0; i < 10; ++i) 3092 ; 3093 } 3094 #pragma omp parallel sections 3095 { 3096 #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?}} 3097 for (int i = 0; i < 10; ++i) 3098 ; 3099 } 3100 #pragma omp parallel sections 3101 { 3102 #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?}} 3103 for (int i = 0; i < 10; ++i) 3104 ; 3105 } 3106 #pragma omp parallel sections 3107 { 3108 #pragma omp target simd // OK 3109 for (int i = 0; i < 10; ++i) 3110 ; 3111 } 3112 #pragma omp parallel sections 3113 { 3114 #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?}} 3115 for (int i = 0; i < 10; ++i) 3116 ; 3117 } 3118 #pragma omp parallel sections 3119 { 3120 #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?}} 3121 for (int i = 0; i < 10; ++i) 3122 ; 3123 } 3124 #pragma omp parallel sections 3125 { 3126 #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?}} 3127 for (int i = 0; i < 10; ++i) 3128 ; 3129 } 3130 #pragma omp parallel sections 3131 { 3132 #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?}} 3133 for (int i = 0; i < 10; ++i) 3134 ; 3135 } 3136 #pragma omp parallel sections 3137 { 3138 #pragma omp target teams // OK 3139 a++; 3140 } 3141 #pragma omp parallel sections 3142 { 3143 #pragma omp target teams distribute // OK 3144 for (int i = 0; i < 10; ++i) 3145 ; 3146 } 3147 #pragma omp parallel sections 3148 { 3149 #pragma omp target teams distribute parallel for // OK 3150 for (int i = 0; i < 10; ++i) 3151 ; 3152 } 3153 #pragma omp parallel sections 3154 { 3155 #pragma omp target teams distribute parallel for simd // OK 3156 for (int i = 0; i < 10; ++i) 3157 ; 3158 } 3159 #pragma omp parallel sections 3160 { 3161 #pragma omp target teams distribute simd // OK 3162 for (int i = 0; i < 10; ++i) 3163 ; 3164 } 3165 3166 // TASK DIRECTIVE 3167 #pragma omp task 3168 #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?}} 3169 for (int i = 0; i < 10; ++i) 3170 ; 3171 #pragma omp task 3172 #pragma omp simd 3173 for (int i = 0; i < 10; ++i) 3174 ; 3175 #pragma omp task 3176 #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?}} 3177 for (int i = 0; i < 10; ++i) 3178 ; 3179 #pragma omp task 3180 #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?}} 3181 { 3182 bar(); 3183 } 3184 #pragma omp task 3185 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 3186 { 3187 bar(); 3188 } 3189 #pragma omp task 3190 #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?}} 3191 bar(); 3192 #pragma omp task 3193 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 3194 bar(); 3195 #pragma omp task 3196 #pragma omp critical 3197 bar(); 3198 3199 #pragma omp task 3200 #pragma omp parallel for 3201 for (int i = 0; i < 10; ++i) 3202 ; 3203 #pragma omp task 3204 #pragma omp parallel for simd 3205 for (int i = 0; i < 10; ++i) 3206 ; 3207 #pragma omp task 3208 #pragma omp parallel sections 3209 { 3210 bar(); 3211 } 3212 #pragma omp task 3213 #pragma omp task 3214 { 3215 bar(); 3216 } 3217 #pragma omp task 3218 { 3219 #pragma omp taskyield 3220 bar(); 3221 } 3222 #pragma omp task 3223 { 3224 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 3225 bar(); 3226 } 3227 #pragma omp task 3228 { 3229 #pragma omp taskwait 3230 bar(); 3231 } 3232 #pragma omp task 3233 { 3234 #pragma omp flush 3235 bar(); 3236 } 3237 #pragma omp task 3238 { 3239 #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?}} 3240 bar(); 3241 } 3242 #pragma omp task 3243 { 3244 #pragma omp atomic 3245 ++a; 3246 } 3247 #pragma omp task 3248 { 3249 #pragma omp target 3250 ++a; 3251 } 3252 #pragma omp task 3253 { 3254 #pragma omp target parallel 3255 ++a; 3256 } 3257 #pragma omp task 3258 #pragma omp target parallel for 3259 for (int i = 0; i < 10; ++i) 3260 ; 3261 #pragma omp task 3262 { 3263 #pragma omp target enter data map(to: a) 3264 ++a; 3265 } 3266 #pragma omp task 3267 { 3268 #pragma omp target exit data map(from: a) 3269 ++a; 3270 } 3271 #pragma omp task 3272 { 3273 #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?}} 3274 ++a; 3275 } 3276 #pragma omp task 3277 { 3278 #pragma omp taskloop 3279 for (int i = 0; i < 10; ++i) 3280 ++a; 3281 } 3282 #pragma omp task 3283 { 3284 #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?}} 3285 for (int i = 0; i < 10; ++i) 3286 ; 3287 } 3288 #pragma omp task 3289 { 3290 #pragma omp target update to(a) 3291 bar(); 3292 } 3293 #pragma omp task 3294 { 3295 #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?}} 3296 for (int i = 0; i < 10; ++i) 3297 ; 3298 } 3299 #pragma omp task 3300 { 3301 #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?}} 3302 for (int i = 0; i < 10; ++i) 3303 ; 3304 } 3305 #pragma omp task 3306 { 3307 #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?}} 3308 for (int i = 0; i < 10; ++i) 3309 ; 3310 } 3311 #pragma omp task 3312 { 3313 #pragma omp target simd // OK 3314 for (int i = 0; i < 10; ++i) 3315 ; 3316 } 3317 #pragma omp task 3318 { 3319 #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?}} 3320 for (int i = 0; i < 10; ++i) 3321 ; 3322 } 3323 #pragma omp task 3324 { 3325 #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?}} 3326 for (int i = 0; i < 10; ++i) 3327 ; 3328 } 3329 #pragma omp task 3330 { 3331 #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?}} 3332 for (int i = 0; i < 10; ++i) 3333 ; 3334 } 3335 #pragma omp task 3336 { 3337 #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?}} 3338 for (int i = 0; i < 10; ++i) 3339 ; 3340 } 3341 #pragma omp task 3342 { 3343 #pragma omp target teams // OK 3344 a++; 3345 } 3346 #pragma omp task 3347 { 3348 #pragma omp target teams distribute // OK 3349 for (int i = 0; i < 10; ++i) 3350 ; 3351 } 3352 #pragma omp task 3353 { 3354 #pragma omp target teams distribute parallel for // OK 3355 for (int i = 0; i < 10; ++i) 3356 ; 3357 } 3358 #pragma omp task 3359 { 3360 #pragma omp target teams distribute parallel for simd // OK 3361 for (int i = 0; i < 10; ++i) 3362 ; 3363 } 3364 #pragma omp task 3365 { 3366 #pragma omp target teams distribute simd // OK 3367 for (int i = 0; i < 10; ++i) 3368 ; 3369 } 3370 3371 // ORDERED DIRECTIVE 3372 #pragma omp ordered 3373 { 3374 #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?}} 3375 for (int i = 0; i < 10; ++i) 3376 ; 3377 } 3378 #pragma omp ordered 3379 { 3380 #pragma omp simd 3381 for (int i = 0; i < 10; ++i) 3382 ; 3383 } 3384 #pragma omp ordered 3385 { 3386 #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?}} 3387 for (int i = 0; i < 10; ++i) 3388 ; 3389 } 3390 #pragma omp ordered 3391 { 3392 #pragma omp parallel 3393 for (int i = 0; i < 10; ++i) 3394 ; 3395 } 3396 #pragma omp ordered 3397 { 3398 #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?}} 3399 { 3400 bar(); 3401 } 3402 } 3403 #pragma omp ordered 3404 { 3405 #pragma omp master // OK, though second 'ordered' is redundant 3406 { 3407 bar(); 3408 } 3409 } 3410 #pragma omp ordered 3411 { 3412 #pragma omp critical 3413 { 3414 bar(); 3415 } 3416 } 3417 #pragma omp ordered 3418 { 3419 #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?}} 3420 { 3421 bar(); 3422 } 3423 } 3424 #pragma omp ordered 3425 { 3426 #pragma omp parallel for ordered 3427 for (int j = 0; j < 10; ++j) { 3428 #pragma omp ordered // OK 3429 { 3430 bar(); 3431 } 3432 } 3433 } 3434 #pragma omp ordered 3435 { 3436 #pragma omp parallel for simd ordered 3437 for (int j = 0; j < 10; ++j) { 3438 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3439 { 3440 bar(); 3441 } 3442 } 3443 } 3444 #pragma omp ordered 3445 { 3446 #pragma omp parallel for simd ordered 3447 for (int j = 0; j < 10; ++j) { 3448 #pragma omp ordered simd 3449 { 3450 bar(); 3451 } 3452 } 3453 } 3454 #pragma omp ordered 3455 { 3456 #pragma omp parallel for 3457 for (int i = 0; i < 10; ++i) 3458 ; 3459 } 3460 #pragma omp ordered 3461 { 3462 #pragma omp parallel for simd 3463 for (int i = 0; i < 10; ++i) 3464 ; 3465 } 3466 #pragma omp ordered 3467 { 3468 #pragma omp parallel sections 3469 { 3470 bar(); 3471 } 3472 } 3473 #pragma omp ordered 3474 { 3475 #pragma omp task 3476 { 3477 bar(); 3478 } 3479 } 3480 #pragma omp ordered 3481 { 3482 #pragma omp taskyield 3483 bar(); 3484 } 3485 #pragma omp ordered 3486 { 3487 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3488 bar(); 3489 } 3490 #pragma omp ordered 3491 { 3492 #pragma omp taskwait 3493 bar(); 3494 } 3495 #pragma omp ordered 3496 { 3497 #pragma omp flush 3498 bar(); 3499 } 3500 #pragma omp ordered 3501 { 3502 #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?}} 3503 bar(); 3504 } 3505 #pragma omp ordered 3506 { 3507 #pragma omp atomic 3508 ++a; 3509 } 3510 #pragma omp ordered 3511 { 3512 #pragma omp target 3513 ++a; 3514 } 3515 #pragma omp ordered 3516 { 3517 #pragma omp target parallel 3518 ++a; 3519 } 3520 #pragma omp ordered 3521 { 3522 #pragma omp target parallel for ordered 3523 for (int j = 0; j < 10; ++j) { 3524 #pragma omp ordered // OK 3525 { 3526 bar(); 3527 } 3528 } 3529 } 3530 #pragma omp ordered 3531 { 3532 #pragma omp target parallel for 3533 for (int i = 0; i < 10; ++i) 3534 ; 3535 } 3536 #pragma omp ordered 3537 { 3538 #pragma omp target enter data map(to: a) 3539 ++a; 3540 } 3541 #pragma omp ordered 3542 { 3543 #pragma omp target exit data map(from: a) 3544 ++a; 3545 } 3546 #pragma omp ordered 3547 { 3548 #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?}} 3549 ++a; 3550 } 3551 #pragma omp ordered 3552 { 3553 #pragma omp taskloop 3554 for (int i = 0; i < 10; ++i) 3555 ++a; 3556 } 3557 #pragma omp ordered 3558 { 3559 #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?}} 3560 for (int i = 0; i < 10; ++i) 3561 ; 3562 } 3563 #pragma omp ordered 3564 { 3565 bar(); 3566 #pragma omp target update to(a) 3567 bar(); 3568 } 3569 #pragma omp ordered 3570 { 3571 #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?}} 3572 for (int i = 0; i < 10; ++i) 3573 ; 3574 } 3575 #pragma omp ordered 3576 { 3577 #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?}} 3578 for (int i = 0; i < 10; ++i) 3579 ; 3580 } 3581 #pragma omp ordered 3582 { 3583 #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?}} 3584 for (int i = 0; i < 10; ++i) 3585 ; 3586 } 3587 #pragma omp ordered 3588 { 3589 #pragma omp target simd // OK 3590 for (int i = 0; i < 10; ++i) 3591 ; 3592 } 3593 #pragma omp ordered 3594 { 3595 #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?}} 3596 for (int i = 0; i < 10; ++i) 3597 ; 3598 } 3599 #pragma omp ordered 3600 { 3601 #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?}} 3602 for (int i = 0; i < 10; ++i) 3603 ; 3604 } 3605 #pragma omp ordered 3606 { 3607 #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?}} 3608 for (int i = 0; i < 10; ++i) 3609 ; 3610 } 3611 #pragma omp ordered 3612 { 3613 #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?}} 3614 for (int i = 0; i < 10; ++i) 3615 ; 3616 } 3617 #pragma omp ordered 3618 { 3619 #pragma omp target teams // OK 3620 a++; 3621 } 3622 #pragma omp ordered 3623 { 3624 #pragma omp target teams distribute // OK 3625 for (int i = 0; i < 10; ++i) 3626 ; 3627 } 3628 #pragma omp ordered 3629 { 3630 #pragma omp target teams distribute parallel for // OK 3631 for (int i = 0; i < 10; ++i) 3632 ; 3633 } 3634 #pragma omp ordered 3635 { 3636 #pragma omp target teams distribute parallel for simd // OK 3637 for (int i = 0; i < 10; ++i) 3638 ; 3639 } 3640 #pragma omp ordered 3641 { 3642 #pragma omp target teams distribute simd // OK 3643 for (int i = 0; i < 10; ++i) 3644 ; 3645 } 3646 3647 // ATOMIC DIRECTIVE 3648 #pragma omp atomic 3649 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3650 // expected-note@+1 {{expected an expression statement}} 3651 { 3652 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3653 for (int i = 0; i < 10; ++i) 3654 ; 3655 } 3656 #pragma omp atomic 3657 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3658 // expected-note@+1 {{expected an expression statement}} 3659 { 3660 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3661 for (int i = 0; i < 10; ++i) 3662 ; 3663 } 3664 #pragma omp atomic 3665 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3666 // expected-note@+1 {{expected an expression statement}} 3667 { 3668 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3669 for (int i = 0; i < 10; ++i) 3670 ; 3671 } 3672 #pragma omp atomic 3673 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3674 // expected-note@+1 {{expected an expression statement}} 3675 { 3676 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3677 for (int i = 0; i < 10; ++i) 3678 ; 3679 } 3680 #pragma omp atomic 3681 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3682 // expected-note@+1 {{expected an expression statement}} 3683 { 3684 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3685 { 3686 bar(); 3687 } 3688 } 3689 #pragma omp atomic 3690 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3691 // expected-note@+1 {{expected an expression statement}} 3692 { 3693 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3694 { 3695 bar(); 3696 } 3697 } 3698 #pragma omp atomic 3699 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3700 // expected-note@+1 {{expected an expression statement}} 3701 { 3702 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3703 { 3704 bar(); 3705 } 3706 } 3707 #pragma omp atomic 3708 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3709 // expected-note@+1 {{expected an expression statement}} 3710 { 3711 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3712 { 3713 bar(); 3714 } 3715 } 3716 #pragma omp atomic 3717 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3718 // expected-note@+1 {{expected an expression statement}} 3719 { 3720 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3721 { 3722 bar(); 3723 } 3724 } 3725 #pragma omp atomic 3726 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3727 // expected-note@+1 {{expected an expression statement}} 3728 { 3729 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3730 for (int i = 0; i < 10; ++i) 3731 ; 3732 } 3733 #pragma omp atomic 3734 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3735 // expected-note@+1 {{expected an expression statement}} 3736 { 3737 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3738 for (int i = 0; i < 10; ++i) 3739 ; 3740 } 3741 #pragma omp atomic 3742 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3743 // expected-note@+1 {{expected an expression statement}} 3744 { 3745 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3746 { 3747 bar(); 3748 } 3749 } 3750 #pragma omp atomic 3751 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3752 // expected-note@+1 {{expected an expression statement}} 3753 { 3754 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3755 { 3756 bar(); 3757 } 3758 } 3759 #pragma omp atomic 3760 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3761 // expected-note@+1 {{expected an expression statement}} 3762 { 3763 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3764 bar(); 3765 } 3766 #pragma omp atomic 3767 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3768 // expected-note@+1 {{expected an expression statement}} 3769 { 3770 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3771 bar(); 3772 } 3773 #pragma omp atomic 3774 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3775 // expected-note@+1 {{expected an expression statement}} 3776 { 3777 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3778 bar(); 3779 } 3780 #pragma omp atomic 3781 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3782 // expected-note@+1 {{expected an expression statement}} 3783 { 3784 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3785 bar(); 3786 } 3787 #pragma omp atomic 3788 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3789 // expected-note@+1 {{expected an expression statement}} 3790 { 3791 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3792 bar(); 3793 } 3794 #pragma omp atomic 3795 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3796 // expected-note@+1 {{expected an expression statement}} 3797 { 3798 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3799 ++a; 3800 } 3801 #pragma omp atomic 3802 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3803 // expected-note@+1 {{expected an expression statement}} 3804 { 3805 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3806 ++a; 3807 } 3808 #pragma omp atomic 3809 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3810 // expected-note@+1 {{expected an expression statement}} 3811 { 3812 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3813 ++a; 3814 } 3815 #pragma omp atomic 3816 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3817 // expected-note@+1 {{expected an expression statement}} 3818 { 3819 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3820 for (int i = 0; i < 10; ++i) 3821 ; 3822 } 3823 #pragma omp atomic 3824 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3825 // expected-note@+1 {{expected an expression statement}} 3826 { 3827 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3828 ++a; 3829 } 3830 #pragma omp atomic 3831 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3832 // expected-note@+1 {{expected an expression statement}} 3833 { 3834 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3835 ++a; 3836 } 3837 #pragma omp atomic 3838 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3839 // expected-note@+1 {{expected an expression statement}} 3840 { 3841 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3842 ++a; 3843 } 3844 #pragma omp atomic 3845 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3846 // expected-note@+1 {{expected an expression statement}} 3847 { 3848 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3849 for (int i = 0; i < 10; ++i) 3850 ++a; 3851 } 3852 #pragma omp atomic 3853 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3854 // expected-note@+1 {{expected an expression statement}} 3855 { 3856 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3857 for (int i = 0; i < 10; ++i) 3858 ; 3859 } 3860 #pragma omp atomic 3861 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3862 // expected-note@+1 {{expected an expression statement}} 3863 { 3864 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3865 bar(); 3866 } 3867 #pragma omp atomic 3868 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3869 // expected-note@+1 {{expected an expression statement}} 3870 { 3871 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3872 for (int i = 0; i < 10; ++i) 3873 ; 3874 } 3875 #pragma omp atomic 3876 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3877 // expected-note@+1 {{expected an expression statement}} 3878 { 3879 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3880 for (int i = 0; i < 10; ++i) 3881 ; 3882 } 3883 #pragma omp atomic 3884 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3885 // expected-note@+1 {{expected an expression statement}} 3886 { 3887 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3888 for (int i = 0; i < 10; ++i) 3889 ; 3890 } 3891 #pragma omp atomic 3892 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3893 // expected-note@+1 {{expected an expression statement}} 3894 { 3895 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3896 for (int i = 0; i < 10; ++i) 3897 ; 3898 } 3899 #pragma omp atomic 3900 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3901 // expected-note@+1 {{expected an expression statement}} 3902 { 3903 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3904 for (int i = 0; i < 10; ++i) 3905 ; 3906 } 3907 #pragma omp atomic 3908 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3909 // expected-note@+1 {{expected an expression statement}} 3910 { 3911 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3912 for (int i = 0; i < 10; ++i) 3913 ; 3914 } 3915 #pragma omp atomic 3916 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3917 // expected-note@+1 {{expected an expression statement}} 3918 { 3919 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3920 for (int i = 0; i < 10; ++i) 3921 ; 3922 } 3923 #pragma omp atomic 3924 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3925 // expected-note@+1 {{expected an expression statement}} 3926 { 3927 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3928 for (int i = 0; i < 10; ++i) 3929 ; 3930 } 3931 #pragma omp atomic 3932 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3933 // expected-note@+1 {{expected an expression statement}} 3934 { 3935 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3936 a++; 3937 } 3938 #pragma omp atomic 3939 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3940 // expected-note@+1 {{expected an expression statement}} 3941 { 3942 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3943 for (int i = 0; i < 10; ++i) 3944 ; 3945 } 3946 #pragma omp atomic 3947 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3948 // expected-note@+1 {{expected an expression statement}} 3949 { 3950 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3951 for (int i = 0; i < 10; ++i) 3952 ; 3953 } 3954 #pragma omp atomic 3955 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3956 // expected-note@+1 {{expected an expression statement}} 3957 { 3958 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3959 for (int i = 0; i < 10; ++i) 3960 ; 3961 } 3962 #pragma omp atomic 3963 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3964 // expected-note@+1 {{expected an expression statement}} 3965 { 3966 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3967 for (int i = 0; i < 10; ++i) 3968 ; 3969 } 3970 3971 // TARGET DIRECTIVE 3972 #pragma omp target 3973 #pragma omp parallel 3974 bar(); 3975 #pragma omp target 3976 #pragma omp for 3977 for (int i = 0; i < 10; ++i) 3978 ; 3979 #pragma omp target 3980 #pragma omp simd 3981 for (int i = 0; i < 10; ++i) 3982 ; 3983 #pragma omp target 3984 #pragma omp for simd 3985 for (int i = 0; i < 10; ++i) 3986 ; 3987 #pragma omp target 3988 #pragma omp sections 3989 { 3990 bar(); 3991 } 3992 #pragma omp target 3993 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 3994 { 3995 bar(); 3996 } 3997 #pragma omp target 3998 #pragma omp single 3999 bar(); 4000 4001 #pragma omp target 4002 #pragma omp master 4003 { 4004 bar(); 4005 } 4006 #pragma omp target 4007 #pragma omp critical 4008 { 4009 bar(); 4010 } 4011 #pragma omp target 4012 #pragma omp parallel for 4013 for (int i = 0; i < 10; ++i) 4014 ; 4015 #pragma omp target 4016 #pragma omp parallel for simd 4017 for (int i = 0; i < 10; ++i) 4018 ; 4019 #pragma omp target 4020 #pragma omp parallel sections 4021 { 4022 bar(); 4023 } 4024 #pragma omp target 4025 #pragma omp task 4026 { 4027 bar(); 4028 } 4029 #pragma omp target 4030 { 4031 #pragma omp taskyield 4032 bar(); 4033 } 4034 #pragma omp target 4035 { 4036 #pragma omp barrier 4037 bar(); 4038 } 4039 #pragma omp target 4040 { 4041 #pragma omp taskwait 4042 bar(); 4043 } 4044 #pragma omp target 4045 { 4046 #pragma omp flush 4047 bar(); 4048 } 4049 #pragma omp target 4050 { 4051 #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?}} 4052 bar(); 4053 } 4054 #pragma omp target 4055 { 4056 #pragma omp atomic 4057 ++a; 4058 } 4059 #pragma omp target 4060 { 4061 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4062 ++a; 4063 } 4064 #pragma omp target 4065 { 4066 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4067 ++a; 4068 } 4069 #pragma omp target 4070 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4071 for (int i = 0; i < 10; ++i) 4072 ; 4073 #pragma omp target 4074 { 4075 #pragma omp teams 4076 ++a; 4077 } 4078 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4079 { 4080 ++a; // expected-note {{statement outside teams construct here}} 4081 #pragma omp teams // expected-note {{nested teams construct here}} 4082 ++a; 4083 } 4084 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 4085 { 4086 while (0) // expected-note {{statement outside teams construct here}} 4087 #pragma omp teams // expected-note {{nested teams construct here}} 4088 ++a; 4089 } 4090 #pragma omp target 4091 { 4092 #pragma omp taskloop 4093 for (int i = 0; i < 10; ++i) 4094 ++a; 4095 } 4096 #pragma omp target 4097 { 4098 #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?}} 4099 for (int i = 0; i < 10; ++i) 4100 ; 4101 } 4102 #pragma omp target 4103 { 4104 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4105 } 4106 #pragma omp target 4107 { 4108 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4109 } 4110 #pragma omp target 4111 { 4112 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4113 } 4114 #pragma omp target 4115 { 4116 #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?}} 4117 for (int i = 0; i < 10; ++i) 4118 ; 4119 } 4120 #pragma omp target 4121 { 4122 #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?}} 4123 for (int i = 0; i < 10; ++i) 4124 ; 4125 } 4126 #pragma omp target 4127 { 4128 #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?}} 4129 for (int i = 0; i < 10; ++i) 4130 ; 4131 } 4132 #pragma omp target 4133 { 4134 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4135 for (int i = 0; i < 10; ++i) 4136 ; 4137 } 4138 #pragma omp target 4139 { 4140 #pragma omp teams distribute // OK 4141 for (int i = 0; i < 10; ++i) 4142 ; 4143 } 4144 #pragma omp target 4145 { 4146 #pragma omp teams distribute simd // OK 4147 for (int i = 0; i < 10; ++i) 4148 ; 4149 } 4150 #pragma omp target 4151 { 4152 #pragma omp teams distribute parallel for simd // OK 4153 for (int i = 0; i < 10; ++i) 4154 ; 4155 } 4156 #pragma omp target 4157 { 4158 #pragma omp teams distribute parallel for // OK 4159 for (int i = 0; i < 10; ++i) 4160 ; 4161 } 4162 #pragma omp target 4163 { 4164 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4165 for (int i = 0; i < 10; ++i) 4166 ; 4167 } 4168 #pragma omp target 4169 { 4170 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4171 for (int i = 0; i < 10; ++i) 4172 ; 4173 } 4174 #pragma omp target 4175 { 4176 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4177 for (int i = 0; i < 10; ++i) 4178 ; 4179 } 4180 #pragma omp target 4181 { 4182 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4183 for (int i = 0; i < 10; ++i) 4184 ; 4185 } 4186 #pragma omp target 4187 { 4188 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4189 for (int i = 0; i < 10; ++i) 4190 ; 4191 } 4192 4193 // TARGET PARALLEL DIRECTIVE 4194 #pragma omp target parallel 4195 #pragma omp parallel 4196 bar(); 4197 #pragma omp target parallel 4198 #pragma omp for 4199 for (int i = 0; i < 10; ++i) 4200 ; 4201 #pragma omp target parallel 4202 #pragma omp simd 4203 for (int i = 0; i < 10; ++i) 4204 ; 4205 #pragma omp target parallel 4206 #pragma omp for simd 4207 for (int i = 0; i < 10; ++i) 4208 ; 4209 #pragma omp target parallel 4210 #pragma omp sections 4211 { 4212 bar(); 4213 } 4214 #pragma omp target parallel 4215 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 4216 { 4217 bar(); 4218 } 4219 #pragma omp target parallel 4220 #pragma omp single 4221 bar(); 4222 4223 #pragma omp target parallel 4224 #pragma omp master 4225 { 4226 bar(); 4227 } 4228 #pragma omp target parallel 4229 #pragma omp critical 4230 { 4231 bar(); 4232 } 4233 #pragma omp target parallel 4234 #pragma omp parallel for 4235 for (int i = 0; i < 10; ++i) 4236 ; 4237 #pragma omp target parallel 4238 #pragma omp parallel for simd 4239 for (int i = 0; i < 10; ++i) 4240 ; 4241 #pragma omp target parallel 4242 #pragma omp parallel sections 4243 { 4244 bar(); 4245 } 4246 #pragma omp target parallel 4247 #pragma omp task 4248 { 4249 bar(); 4250 } 4251 #pragma omp target parallel 4252 { 4253 #pragma omp taskyield 4254 bar(); 4255 } 4256 #pragma omp target parallel 4257 { 4258 #pragma omp barrier 4259 bar(); 4260 } 4261 #pragma omp target parallel 4262 { 4263 #pragma omp taskwait 4264 bar(); 4265 } 4266 #pragma omp target parallel 4267 { 4268 #pragma omp flush 4269 bar(); 4270 } 4271 #pragma omp target parallel 4272 { 4273 #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?}} 4274 bar(); 4275 } 4276 #pragma omp target parallel 4277 { 4278 #pragma omp atomic 4279 ++a; 4280 } 4281 #pragma omp target parallel 4282 { 4283 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 4284 ++a; 4285 } 4286 #pragma omp target parallel 4287 { 4288 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 4289 ++a; 4290 } 4291 #pragma omp target parallel 4292 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4293 for (int i = 0; i < 10; ++i) 4294 ; 4295 #pragma omp target parallel 4296 { 4297 #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?}} 4298 ++a; 4299 } 4300 #pragma omp target parallel 4301 { 4302 ++a; 4303 #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?}} 4304 ++a; 4305 } 4306 #pragma omp target parallel 4307 { 4308 #pragma omp taskloop 4309 for (int i = 0; i < 10; ++i) 4310 ++a; 4311 } 4312 #pragma omp target parallel 4313 { 4314 #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?}} 4315 for (int i = 0; i < 10; ++i) 4316 ; 4317 } 4318 #pragma omp target parallel 4319 { 4320 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4321 } 4322 #pragma omp target parallel 4323 { 4324 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4325 } 4326 #pragma omp target parallel 4327 { 4328 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 4329 } 4330 #pragma omp target parallel 4331 { 4332 #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?}} 4333 for (int i = 0; i < 10; ++i) 4334 ; 4335 } 4336 #pragma omp target parallel 4337 { 4338 #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?}} 4339 for (int i = 0; i < 10; ++i) 4340 ; 4341 } 4342 #pragma omp target parallel 4343 { 4344 #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?}} 4345 for (int i = 0; i < 10; ++i) 4346 ; 4347 } 4348 #pragma omp target parallel 4349 { 4350 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4351 for (int i = 0; i < 10; ++i) 4352 ; 4353 } 4354 #pragma omp target parallel 4355 { 4356 #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?}} 4357 for (int i = 0; i < 10; ++i) 4358 ; 4359 } 4360 #pragma omp target parallel 4361 { 4362 #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?}} 4363 for (int i = 0; i < 10; ++i) 4364 ; 4365 } 4366 #pragma omp target parallel 4367 { 4368 #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?}} 4369 for (int i = 0; i < 10; ++i) 4370 ; 4371 } 4372 #pragma omp target parallel 4373 { 4374 #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?}} 4375 for (int i = 0; i < 10; ++i) 4376 ; 4377 } 4378 #pragma omp target parallel 4379 { 4380 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 4381 a++; 4382 } 4383 #pragma omp target parallel 4384 { 4385 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 4386 for (int i = 0; i < 10; ++i) 4387 ; 4388 } 4389 #pragma omp target parallel 4390 { 4391 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 4392 for (int i = 0; i < 10; ++i) 4393 ; 4394 } 4395 #pragma omp target parallel 4396 { 4397 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4398 for (int i = 0; i < 10; ++i) 4399 ; 4400 } 4401 #pragma omp target parallel 4402 { 4403 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 4404 for (int i = 0; i < 10; ++i) 4405 ; 4406 } 4407 4408 // TARGET PARALLEL FOR DIRECTIVE 4409 #pragma omp target parallel for 4410 for (int i = 0; i < 10; ++i) { 4411 #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?}} 4412 for (int i = 0; i < 10; ++i) 4413 ; 4414 } 4415 #pragma omp target parallel for 4416 for (int i = 0; i < 10; ++i) { 4417 #pragma omp simd 4418 for (int i = 0; i < 10; ++i) 4419 ; 4420 } 4421 #pragma omp target parallel for 4422 for (int i = 0; i < 10; ++i) { 4423 #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?}} 4424 for (int i = 0; i < 10; ++i) 4425 ; 4426 } 4427 #pragma omp target parallel for 4428 for (int i = 0; i < 10; ++i) { 4429 #pragma omp parallel 4430 for (int i = 0; i < 10; ++i) 4431 ; 4432 } 4433 #pragma omp target parallel for 4434 for (int i = 0; i < 10; ++i) { 4435 #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?}} 4436 { 4437 bar(); 4438 } 4439 } 4440 #pragma omp target parallel for 4441 for (int i = 0; i < 10; ++i) { 4442 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4443 { 4444 bar(); 4445 } 4446 } 4447 #pragma omp target parallel for 4448 for (int i = 0; i < 10; ++i) { 4449 #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?}} 4450 { 4451 bar(); 4452 } 4453 } 4454 4455 #pragma omp target parallel for 4456 for (int i = 0; i < 10; ++i) { 4457 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4458 { 4459 bar(); 4460 } 4461 } 4462 4463 #pragma omp target parallel for 4464 for (int i = 0; i < 10; ++i) { 4465 #pragma omp critical 4466 { 4467 bar(); 4468 } 4469 } 4470 4471 #pragma omp target parallel for 4472 for (int i = 0; i < 10; ++i) { 4473 #pragma omp parallel 4474 { 4475 #pragma omp single // OK 4476 { 4477 bar(); 4478 } 4479 #pragma omp for // OK 4480 for (int i = 0; i < 10; ++i) 4481 ; 4482 #pragma omp for simd // OK 4483 for (int i = 0; i < 10; ++i) 4484 ; 4485 #pragma omp sections // OK 4486 { 4487 bar(); 4488 } 4489 } 4490 } 4491 #pragma omp target parallel for 4492 for (int i = 0; i < 10; ++i) { 4493 #pragma omp parallel for 4494 for (int i = 0; i < 10; ++i) 4495 ; 4496 } 4497 #pragma omp target parallel for 4498 for (int i = 0; i < 10; ++i) { 4499 #pragma omp parallel for simd 4500 for (int i = 0; i < 10; ++i) 4501 ; 4502 } 4503 #pragma omp target parallel for 4504 for (int i = 0; i < 10; ++i) { 4505 #pragma omp parallel sections 4506 { 4507 bar(); 4508 } 4509 } 4510 #pragma omp target parallel for 4511 for (int i = 0; i < 10; ++i) { 4512 #pragma omp task 4513 { 4514 bar(); 4515 } 4516 } 4517 #pragma omp target parallel for 4518 for (int i = 0; i < 10; ++i) { 4519 #pragma omp taskyield 4520 bar(); 4521 } 4522 #pragma omp target parallel for 4523 for (int i = 0; i < 10; ++i) { 4524 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4525 bar(); 4526 } 4527 #pragma omp target parallel for 4528 for (int i = 0; i < 10; ++i) { 4529 #pragma omp taskwait 4530 bar(); 4531 } 4532 #pragma omp target parallel for 4533 for (int i = 0; i < 10; ++i) { 4534 #pragma omp flush 4535 bar(); 4536 } 4537 #pragma omp target parallel for 4538 for (int i = 0; i < 10; ++i) { 4539 #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?}} 4540 bar(); 4541 } 4542 #pragma omp target parallel for ordered 4543 for (int i = 0; i < 10; ++i) { 4544 #pragma omp ordered // OK 4545 bar(); 4546 } 4547 #pragma omp target parallel for 4548 for (int i = 0; i < 10; ++i) { 4549 #pragma omp atomic 4550 ++a; 4551 } 4552 #pragma omp target parallel for 4553 for (int i = 0; i < 10; ++i) { 4554 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 4555 ++a; 4556 } 4557 #pragma omp target parallel for 4558 for (int i = 0; i < 10; ++i) { 4559 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 4560 ++a; 4561 } 4562 #pragma omp target parallel for 4563 for (int i = 0; i < 10; ++i) { 4564 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4565 for (int i = 0; i < 10; ++i) 4566 ; 4567 } 4568 #pragma omp target parallel for 4569 for (int i = 0; i < 10; ++i) { 4570 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4571 ++a; 4572 } 4573 #pragma omp target parallel for 4574 for (int i = 0; i < 10; ++i) { 4575 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4576 ++a; 4577 } 4578 #pragma omp target parallel for 4579 for (int i = 0; i < 10; ++i) { 4580 #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?}} 4581 ++a; 4582 } 4583 #pragma omp target parallel for 4584 for (int i = 0; i < 10; ++i) { 4585 #pragma omp taskloop 4586 for (int i = 0; i < 10; ++i) 4587 ++a; 4588 } 4589 #pragma omp target parallel for 4590 for (int i = 0; i < 10; ++i) { 4591 #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?}} 4592 for (int j = 0; j < 10; ++j) 4593 ; 4594 } 4595 #pragma omp target parallel for 4596 for (int i = 0; i < 10; ++i) { 4597 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4598 } 4599 #pragma omp target parallel for 4600 for (int i = 0; i < 10; ++i) { 4601 #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?}} 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 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?}} 4608 for (int j = 0; j < 10; ++j) 4609 ; 4610 } 4611 #pragma omp target parallel for 4612 for (int i = 0; i < 10; ++i) { 4613 #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?}} 4614 for (int j = 0; j < 10; ++j) 4615 ; 4616 } 4617 #pragma omp target parallel for 4618 for (int i = 0; i < 10; ++i) { 4619 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4620 for (int j = 0; j < 10; ++j) 4621 ; 4622 } 4623 #pragma omp target parallel for 4624 for (int i = 0; i < 10; ++i) { 4625 #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?}} 4626 for (int j = 0; j < 10; ++j) 4627 ; 4628 } 4629 #pragma omp target parallel for 4630 for (int i = 0; i < 10; ++i) { 4631 #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?}} 4632 for (int j = 0; j < 10; ++j) 4633 ; 4634 } 4635 #pragma omp target parallel for 4636 for (int i = 0; i < 10; ++i) { 4637 #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?}} 4638 for (int j = 0; j < 10; ++j) 4639 ; 4640 } 4641 #pragma omp target parallel for 4642 for (int i = 0; i < 10; ++i) { 4643 #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?}} 4644 for (int j = 0; j < 10; ++j) 4645 ; 4646 } 4647 #pragma omp target parallel for 4648 for (int i = 0; i < 10; ++i) { 4649 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 4650 a++; 4651 } 4652 #pragma omp target parallel for 4653 for (int i = 0; i < 10; ++i) { 4654 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}} 4655 for (int j = 0; j < 10; ++j) 4656 ; 4657 } 4658 #pragma omp target parallel for 4659 for (int i = 0; i < 10; ++i) { 4660 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4661 for (int j = 0; j < 10; ++j) 4662 ; 4663 } 4664 #pragma omp target parallel for 4665 for (int i = 0; i < 10; ++i) { 4666 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4667 for (int j = 0; j < 10; ++j) 4668 ; 4669 } 4670 #pragma omp target parallel for 4671 for (int i = 0; i < 10; ++i) { 4672 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4673 for (int j = 0; j < 10; ++j) 4674 ; 4675 } 4676 4677 // TEAMS DIRECTIVE 4678 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 4679 bar(); 4680 #pragma omp target 4681 #pragma omp teams 4682 #pragma omp parallel 4683 bar(); 4684 #pragma omp target 4685 #pragma omp teams 4686 #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?}} 4687 for (int i = 0; i < 10; ++i) 4688 ; 4689 #pragma omp target 4690 #pragma omp teams 4691 #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?}} 4692 for (int i = 0; i < 10; ++i) 4693 ; 4694 #pragma omp target 4695 #pragma omp teams 4696 #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?}} 4697 for (int i = 0; i < 10; ++i) 4698 ; 4699 #pragma omp target 4700 #pragma omp teams 4701 #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?}} 4702 { 4703 bar(); 4704 } 4705 #pragma omp target 4706 #pragma omp teams 4707 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 4708 { 4709 bar(); 4710 } 4711 #pragma omp target 4712 #pragma omp teams 4713 #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?}} 4714 bar(); 4715 4716 #pragma omp target 4717 #pragma omp teams 4718 #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?}} 4719 { 4720 bar(); 4721 } 4722 #pragma omp target 4723 #pragma omp teams 4724 #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?}} 4725 { 4726 bar(); 4727 } 4728 #pragma omp target 4729 #pragma omp teams 4730 #pragma omp parallel for 4731 for (int i = 0; i < 10; ++i) 4732 ; 4733 #pragma omp target 4734 #pragma omp teams 4735 #pragma omp parallel for simd 4736 for (int i = 0; i < 10; ++i) 4737 ; 4738 #pragma omp target 4739 #pragma omp teams 4740 #pragma omp parallel sections 4741 { 4742 bar(); 4743 } 4744 #pragma omp target 4745 #pragma omp teams 4746 #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?}} 4747 { 4748 bar(); 4749 } 4750 #pragma omp target 4751 #pragma omp teams 4752 { 4753 #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?}} 4754 bar(); 4755 } 4756 #pragma omp target 4757 #pragma omp teams 4758 { 4759 #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?}} 4760 bar(); 4761 } 4762 #pragma omp target 4763 #pragma omp teams 4764 { 4765 #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?}} 4766 bar(); 4767 } 4768 #pragma omp target 4769 #pragma omp teams 4770 { 4771 #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?}} 4772 bar(); 4773 } 4774 #pragma omp target 4775 #pragma omp teams 4776 { 4777 #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?}} 4778 bar(); 4779 } 4780 #pragma omp target 4781 #pragma omp teams 4782 { 4783 #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?}} 4784 ++a; 4785 } 4786 #pragma omp target 4787 #pragma omp teams 4788 { 4789 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4790 ++a; 4791 } 4792 #pragma omp target 4793 #pragma omp teams 4794 { 4795 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4796 ++a; 4797 } 4798 #pragma omp target 4799 #pragma omp teams 4800 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4801 for (int i = 0; i < 10; ++i) 4802 ; 4803 #pragma omp target 4804 #pragma omp teams 4805 { 4806 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4807 ++a; 4808 } 4809 #pragma omp target 4810 #pragma omp teams 4811 { 4812 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4813 ++a; 4814 } 4815 #pragma omp target 4816 #pragma omp teams 4817 { 4818 #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?}} 4819 ++a; 4820 } 4821 #pragma omp target 4822 #pragma omp teams 4823 { 4824 #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?}} 4825 for (int i = 0; i < 10; ++i) 4826 ++a; 4827 } 4828 #pragma omp target 4829 #pragma omp teams 4830 #pragma omp distribute 4831 for (int i = 0; i < 10; ++i) 4832 ; 4833 #pragma omp target 4834 #pragma omp teams 4835 #pragma omp distribute 4836 for (int i = 0; i < 10; ++i) 4837 ; 4838 #pragma omp distribute 4839 for (int j = 0; j < 10; ++j) 4840 ; 4841 #pragma omp target 4842 #pragma omp teams 4843 { 4844 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4845 } 4846 #pragma omp target 4847 #pragma omp teams 4848 { 4849 #pragma omp distribute parallel for 4850 for (int i = 0; i < 10; ++i) 4851 ; 4852 #pragma omp distribute parallel for 4853 for (int j = 0; j < 10; ++j) 4854 ; 4855 } 4856 #pragma omp target 4857 #pragma omp teams 4858 { 4859 #pragma omp distribute parallel for simd 4860 for (int i = 0; i < 10; ++i) 4861 ; 4862 #pragma omp distribute parallel for simd 4863 for (int j = 0; j < 10; ++j) 4864 ; 4865 } 4866 #pragma omp target 4867 #pragma omp teams 4868 { 4869 #pragma omp distribute simd 4870 for (int i = 0; i < 10; ++i) 4871 ; 4872 #pragma omp distribute simd 4873 for (int j = 0; j < 10; ++j) 4874 ; 4875 } 4876 #pragma omp target 4877 #pragma omp teams 4878 { 4879 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4880 for (int i = 0; i < 10; ++i) 4881 ; 4882 } 4883 #pragma omp target 4884 #pragma omp teams 4885 { 4886 #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?}} 4887 for (int i = 0; i < 10; ++i) 4888 ; 4889 } 4890 #pragma omp target 4891 #pragma omp teams 4892 { 4893 #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?}} 4894 for (int i = 0; i < 10; ++i) 4895 ; 4896 } 4897 #pragma omp target 4898 #pragma omp teams 4899 { 4900 #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?}} 4901 for (int i = 0; i < 10; ++i) 4902 ; 4903 } 4904 #pragma omp target 4905 #pragma omp teams 4906 { 4907 #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?}} 4908 for (int i = 0; i < 10; ++i) 4909 ; 4910 } 4911 #pragma omp target 4912 #pragma omp teams 4913 { 4914 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4915 a++; 4916 } 4917 #pragma omp target 4918 #pragma omp teams 4919 { 4920 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 4921 for (int i = 0; i < 10; ++i) 4922 ; 4923 } 4924 #pragma omp target 4925 #pragma omp teams 4926 { 4927 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 4928 for (int i = 0; i < 10; ++i) 4929 ; 4930 } 4931 #pragma omp target 4932 #pragma omp teams 4933 { 4934 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 4935 for (int i = 0; i < 10; ++i) 4936 ; 4937 } 4938 #pragma omp target 4939 #pragma omp teams 4940 { 4941 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 4942 for (int i = 0; i < 10; ++i) 4943 ; 4944 } 4945 4946 // TASKLOOP DIRECTIVE 4947 #pragma omp taskloop 4948 for (int i = 0; i < 10; ++i) { 4949 #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?}} 4950 for (int i = 0; i < 10; ++i) 4951 ; 4952 } 4953 #pragma omp taskloop 4954 for (int i = 0; i < 10; ++i) { 4955 #pragma omp simd 4956 for (int i = 0; i < 10; ++i) 4957 ; 4958 } 4959 #pragma omp taskloop 4960 for (int i = 0; i < 10; ++i) { 4961 #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?}} 4962 for (int i = 0; i < 10; ++i) 4963 ; 4964 } 4965 #pragma omp taskloop 4966 for (int i = 0; i < 10; ++i) { 4967 #pragma omp parallel 4968 for (int i = 0; i < 10; ++i) 4969 ; 4970 } 4971 #pragma omp taskloop 4972 for (int i = 0; i < 10; ++i) { 4973 #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?}} 4974 { 4975 bar(); 4976 } 4977 } 4978 #pragma omp taskloop 4979 for (int i = 0; i < 10; ++i) { 4980 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 4981 { 4982 bar(); 4983 } 4984 } 4985 #pragma omp taskloop 4986 for (int i = 0; i < 10; ++i) { 4987 #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?}} 4988 { 4989 bar(); 4990 } 4991 } 4992 4993 #pragma omp taskloop 4994 for (int i = 0; i < 10; ++i) { 4995 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4996 { 4997 bar(); 4998 } 4999 } 5000 #pragma omp taskloop 5001 for (int i = 0; i < 10; ++i) { 5002 #pragma omp critical 5003 { 5004 bar(); 5005 } 5006 } 5007 #pragma omp taskloop 5008 for (int i = 0; i < 10; ++i) { 5009 #pragma omp parallel 5010 { 5011 #pragma omp single // OK 5012 { 5013 bar(); 5014 } 5015 #pragma omp for // OK 5016 for (int i = 0; i < 10; ++i) 5017 ; 5018 #pragma omp sections // OK 5019 { 5020 bar(); 5021 } 5022 } 5023 } 5024 #pragma omp taskloop 5025 for (int i = 0; i < 10; ++i) { 5026 #pragma omp parallel for 5027 for (int i = 0; i < 10; ++i) 5028 ; 5029 } 5030 #pragma omp taskloop 5031 for (int i = 0; i < 10; ++i) { 5032 #pragma omp parallel for simd 5033 for (int i = 0; i < 10; ++i) 5034 ; 5035 } 5036 #pragma omp taskloop 5037 for (int i = 0; i < 10; ++i) { 5038 #pragma omp parallel sections 5039 { 5040 bar(); 5041 } 5042 } 5043 #pragma omp taskloop 5044 for (int i = 0; i < 10; ++i) { 5045 #pragma omp task 5046 { 5047 bar(); 5048 } 5049 } 5050 #pragma omp taskloop 5051 for (int i = 0; i < 10; ++i) { 5052 #pragma omp taskyield 5053 bar(); 5054 } 5055 #pragma omp taskloop 5056 for (int i = 0; i < 10; ++i) { 5057 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 5058 bar(); 5059 } 5060 #pragma omp taskloop 5061 for (int i = 0; i < 10; ++i) { 5062 #pragma omp taskwait 5063 bar(); 5064 } 5065 #pragma omp taskloop 5066 for (int i = 0; i < 10; ++i) { 5067 #pragma omp flush 5068 bar(); 5069 } 5070 #pragma omp taskloop 5071 for (int i = 0; i < 10; ++i) { 5072 #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?}} 5073 bar(); 5074 } 5075 #pragma omp taskloop 5076 for (int i = 0; i < 10; ++i) { 5077 #pragma omp atomic 5078 ++a; 5079 } 5080 #pragma omp taskloop 5081 for (int i = 0; i < 10; ++i) { 5082 #pragma omp target 5083 ++a; 5084 } 5085 #pragma omp taskloop 5086 for (int i = 0; i < 10; ++i) { 5087 #pragma omp target parallel 5088 ++a; 5089 } 5090 #pragma omp taskloop 5091 for (int i = 0; i < 10; ++i) { 5092 #pragma omp target parallel for 5093 for (int i = 0; i < 10; ++i) 5094 ; 5095 } 5096 #pragma omp taskloop 5097 for (int i = 0; i < 10; ++i) { 5098 #pragma omp target enter data map(to: a) 5099 ++a; 5100 } 5101 #pragma omp taskloop 5102 for (int i = 0; i < 10; ++i) { 5103 #pragma omp target exit data map(from: a) 5104 ++a; 5105 } 5106 #pragma omp taskloop 5107 for (int i = 0; i < 10; ++i) { 5108 #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?}} 5109 ++a; 5110 } 5111 #pragma omp taskloop 5112 for (int i = 0; i < 10; ++i) { 5113 #pragma omp taskloop 5114 for (int i = 0; i < 10; ++i) 5115 ++a; 5116 } 5117 #pragma omp taskloop 5118 for (int i = 0; i < 10; ++i) { 5119 #pragma omp target update to(a) 5120 bar(); 5121 } 5122 #pragma omp taskloop 5123 for (int i = 0; i < 10; ++i) { 5124 #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?}} 5125 for (int j = 0; j < 10; ++j) 5126 ++a; 5127 } 5128 #pragma omp taskloop 5129 for (int i = 0; i < 10; ++i) { 5130 #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?}} 5131 for (int j = 0; j < 10; ++j) 5132 ++a; 5133 } 5134 #pragma omp taskloop 5135 for (int i = 0; i < 10; ++i) { 5136 #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?}} 5137 for (int j = 0; j < 10; ++j) 5138 ++a; 5139 } 5140 #pragma omp taskloop 5141 for (int i = 0; i < 10; ++i) { 5142 #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?}} 5143 for (int j = 0; j < 10; ++j) 5144 ++a; 5145 } 5146 #pragma omp taskloop 5147 for (int i = 0; i < 10; ++i) { 5148 #pragma omp target simd // OK 5149 for (int j = 0; j < 10; ++j) 5150 ++a; 5151 } 5152 #pragma omp taskloop 5153 for (int i = 0; i < 10; ++i) { 5154 #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?}} 5155 for (int j = 0; j < 10; ++j) 5156 ++a; 5157 } 5158 #pragma omp taskloop 5159 for (int i = 0; i < 10; ++i) { 5160 #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?}} 5161 for (int j = 0; j < 10; ++j) 5162 ++a; 5163 } 5164 #pragma omp taskloop 5165 for (int i = 0; i < 10; ++i) { 5166 #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?}} 5167 for (int j = 0; j < 10; ++j) 5168 ++a; 5169 } 5170 #pragma omp taskloop 5171 for (int i = 0; i < 10; ++i) { 5172 #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?}} 5173 for (int j = 0; j < 10; ++j) 5174 ++a; 5175 } 5176 #pragma omp taskloop 5177 for (int i = 0; i < 10; ++i) { 5178 #pragma omp target teams // OK 5179 ++a; 5180 } 5181 #pragma omp taskloop 5182 for (int i = 0; i < 10; ++i) { 5183 #pragma omp target teams distribute // OK 5184 for (int j = 0; j < 10; ++j) 5185 ++a; 5186 } 5187 #pragma omp taskloop 5188 for (int i = 0; i < 10; ++i) { 5189 #pragma omp target teams distribute parallel for // OK 5190 for (int j = 0; j < 10; ++j) 5191 ++a; 5192 } 5193 #pragma omp taskloop 5194 for (int i = 0; i < 10; ++i) { 5195 #pragma omp target teams distribute parallel for simd // OK 5196 for (int j = 0; j < 10; ++j) 5197 ++a; 5198 } 5199 #pragma omp taskloop 5200 for (int i = 0; i < 10; ++i) { 5201 #pragma omp target teams distribute simd // OK 5202 for (int j = 0; j < 10; ++j) 5203 ++a; 5204 } 5205 5206 // DISTRIBUTE DIRECTIVE 5207 #pragma omp target 5208 #pragma omp teams 5209 #pragma omp distribute 5210 for (int i = 0; i < 10; ++i) { 5211 #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?}} 5212 for (int i = 0; i < 10; ++i) 5213 ; 5214 } 5215 #pragma omp target 5216 #pragma omp teams 5217 #pragma omp distribute 5218 for (int i = 0; i < 10; ++i) { 5219 #pragma omp for 5220 for (int i = 0; i < 10; ++i) 5221 ; 5222 } 5223 #pragma omp target 5224 #pragma omp teams 5225 #pragma omp distribute 5226 for (int i = 0; i < 10; ++i) { 5227 #pragma omp simd 5228 for (int i = 0; i < 10; ++i) 5229 ; 5230 } 5231 #pragma omp target 5232 #pragma omp teams 5233 #pragma omp distribute 5234 for (int i = 0; i < 10; ++i) { 5235 #pragma omp for simd 5236 for (int i = 0; i < 10; ++i) 5237 ; 5238 } 5239 #pragma omp target 5240 #pragma omp teams 5241 #pragma omp distribute 5242 for (int i = 0; i < 10; ++i) { 5243 #pragma omp parallel 5244 for (int i = 0; i < 10; ++i) 5245 ; 5246 } 5247 #pragma omp target 5248 #pragma omp teams 5249 #pragma omp distribute 5250 for (int i = 0; i < 10; ++i) { 5251 #pragma omp sections 5252 { 5253 bar(); 5254 } 5255 } 5256 #pragma omp target 5257 #pragma omp teams 5258 #pragma omp distribute 5259 for (int i = 0; i < 10; ++i) { 5260 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 5261 { 5262 bar(); 5263 } 5264 } 5265 #pragma omp target 5266 #pragma omp teams 5267 #pragma omp distribute 5268 for (int i = 0; i < 10; ++i) { 5269 #pragma omp single 5270 { 5271 bar(); 5272 } 5273 } 5274 #pragma omp target 5275 #pragma omp teams 5276 #pragma omp distribute 5277 for (int i = 0; i < 10; ++i) { 5278 #pragma omp master 5279 { 5280 bar(); 5281 } 5282 } 5283 #pragma omp target 5284 #pragma omp teams 5285 #pragma omp distribute 5286 for (int i = 0; i < 10; ++i) { 5287 #pragma omp critical 5288 { 5289 bar(); 5290 } 5291 } 5292 #pragma omp target 5293 #pragma omp teams 5294 #pragma omp distribute 5295 for (int i = 0; i < 10; ++i) { 5296 #pragma omp parallel 5297 { 5298 #pragma omp single 5299 { 5300 bar(); 5301 } 5302 } 5303 } 5304 #pragma omp target 5305 #pragma omp teams 5306 #pragma omp distribute 5307 for (int i = 0; i < 10; ++i) { 5308 #pragma omp parallel for 5309 for (int i = 0; i < 10; ++i) 5310 ; 5311 } 5312 #pragma omp target 5313 #pragma omp teams 5314 #pragma omp distribute 5315 for (int i = 0; i < 10; ++i) { 5316 #pragma omp parallel for simd 5317 for (int i = 0; i < 10; ++i) 5318 ; 5319 } 5320 #pragma omp target 5321 #pragma omp teams 5322 #pragma omp distribute 5323 for (int i = 0; i < 10; ++i) { 5324 #pragma omp parallel sections 5325 { 5326 bar(); 5327 } 5328 } 5329 #pragma omp target 5330 #pragma omp teams 5331 #pragma omp distribute 5332 for (int i = 0; i < 10; ++i) { 5333 #pragma omp task 5334 { 5335 bar(); 5336 } 5337 } 5338 #pragma omp target 5339 #pragma omp teams 5340 #pragma omp distribute 5341 for (int i = 0; i < 10; ++i) { 5342 #pragma omp taskyield 5343 bar(); 5344 } 5345 #pragma omp target 5346 #pragma omp teams 5347 #pragma omp distribute 5348 for (int i = 0; i < 10; ++i) { 5349 #pragma omp barrier 5350 bar(); 5351 } 5352 #pragma omp target 5353 #pragma omp teams 5354 #pragma omp distribute 5355 for (int i = 0; i < 10; ++i) { 5356 #pragma omp taskwait 5357 bar(); 5358 } 5359 #pragma omp target 5360 #pragma omp teams 5361 #pragma omp distribute 5362 for (int i = 0; i < 10; ++i) { 5363 #pragma omp flush 5364 bar(); 5365 } 5366 #pragma omp target 5367 #pragma omp teams 5368 #pragma omp distribute 5369 for (int i = 0; i < 10; ++i) { 5370 #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?}} 5371 bar(); 5372 } 5373 #pragma omp target 5374 #pragma omp teams 5375 #pragma omp distribute 5376 for (int i = 0; i < 10; ++i) { 5377 #pragma omp atomic 5378 ++a; 5379 } 5380 #pragma omp target 5381 #pragma omp teams 5382 #pragma omp distribute 5383 for (int i = 0; i < 10; ++i) { 5384 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5385 ++a; 5386 } 5387 #pragma omp target 5388 #pragma omp teams 5389 #pragma omp distribute 5390 for (int i = 0; i < 10; ++i) { 5391 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5392 ++a; 5393 } 5394 #pragma omp target 5395 #pragma omp teams 5396 #pragma omp distribute 5397 for (int i = 0; i < 10; ++i) { 5398 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5399 for (int i = 0; i < 10; ++i) 5400 ; 5401 } 5402 #pragma omp target 5403 #pragma omp teams 5404 #pragma omp distribute 5405 for (int i = 0; i < 10; ++i) { 5406 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5407 ++a; 5408 } 5409 #pragma omp target 5410 #pragma omp teams 5411 #pragma omp distribute 5412 for (int i = 0; i < 10; ++i) { 5413 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5414 ++a; 5415 } 5416 #pragma omp target 5417 #pragma omp teams 5418 #pragma omp distribute 5419 for (int i = 0; i < 10; ++i) { 5420 #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?}} 5421 ++a; 5422 } 5423 #pragma omp target 5424 #pragma omp teams 5425 #pragma omp distribute 5426 for (int i = 0; i < 10; ++i) { 5427 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5428 ++a; 5429 } 5430 #pragma omp target 5431 #pragma omp teams 5432 #pragma omp distribute 5433 for (int i = 0; i < 10; ++i) { 5434 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5435 for (int j = 0; j < 10; ++j) 5436 ; 5437 } 5438 #pragma omp target 5439 #pragma omp teams 5440 #pragma omp distribute 5441 for (int i = 0; i < 10; ++i) { 5442 #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?}} 5443 for (int j = 0; j < 10; ++j) 5444 ; 5445 } 5446 #pragma omp target 5447 #pragma omp teams 5448 #pragma omp distribute 5449 for (int i = 0; i < 10; ++i) { 5450 #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?}} 5451 for (int j = 0; j < 10; ++j) 5452 ; 5453 } 5454 #pragma omp target 5455 #pragma omp teams 5456 #pragma omp distribute 5457 for (int i = 0; i < 10; ++i) { 5458 #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?}} 5459 for (int j = 0; j < 10; ++j) 5460 ; 5461 } 5462 #pragma omp target 5463 #pragma omp teams 5464 #pragma omp distribute 5465 for (int i = 0; i < 10; ++i) { 5466 #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?}} 5467 for (int j = 0; j < 10; ++j) 5468 ; 5469 } 5470 #pragma omp target 5471 #pragma omp teams 5472 #pragma omp distribute 5473 for (int i = 0; i < 10; ++i) { 5474 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5475 a++; 5476 } 5477 #pragma omp target 5478 #pragma omp teams 5479 #pragma omp distribute 5480 for (int i = 0; i < 10; ++i) { 5481 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5482 for (int j = 0; j < 10; ++j) 5483 ; 5484 } 5485 #pragma omp target 5486 #pragma omp teams 5487 #pragma omp distribute 5488 for (int i = 0; i < 10; ++i) { 5489 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5490 for (int j = 0; j < 10; ++j) 5491 ; 5492 } 5493 #pragma omp target 5494 #pragma omp teams 5495 #pragma omp distribute 5496 for (int i = 0; i < 10; ++i) { 5497 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5498 for (int j = 0; j < 10; ++j) 5499 ; 5500 } 5501 #pragma omp target 5502 #pragma omp teams 5503 #pragma omp distribute 5504 for (int i = 0; i < 10; ++i) { 5505 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5506 for (int j = 0; j < 10; ++j) 5507 ; 5508 } 5509 5510 // DISTRIBUTE PARALLEL FOR DIRECTIVE 5511 #pragma omp target 5512 #pragma omp teams 5513 #pragma omp distribute parallel for 5514 for (int i = 0; i < 10; ++i) { 5515 #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?}} 5516 for (int i = 0; i < 10; ++i) 5517 ; 5518 } 5519 #pragma omp target 5520 #pragma omp teams 5521 #pragma omp distribute parallel for 5522 for (int i = 0; i < 10; ++i) { 5523 #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?}} 5524 for (int i = 0; i < 10; ++i) 5525 ; 5526 } 5527 #pragma omp target 5528 #pragma omp teams 5529 #pragma omp distribute parallel for 5530 for (int i = 0; i < 10; ++i) { 5531 #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?}} 5532 for (int i = 0; i < 10; ++i) 5533 ; 5534 } 5535 #pragma omp target 5536 #pragma omp teams 5537 #pragma omp distribute parallel for 5538 for (int i = 0; i < 10; ++i) { 5539 #pragma omp simd 5540 for (int i = 0; i < 10; ++i) 5541 ; 5542 } 5543 #pragma omp target 5544 #pragma omp teams 5545 #pragma omp distribute parallel for 5546 for (int i = 0; i < 10; ++i) { 5547 #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?}} 5548 for (int i = 0; i < 10; ++i) 5549 ; 5550 } 5551 #pragma omp target 5552 #pragma omp teams 5553 #pragma omp distribute parallel for 5554 for (int i = 0; i < 10; ++i) { 5555 #pragma omp parallel 5556 for (int i = 0; i < 10; ++i) 5557 ; 5558 } 5559 #pragma omp target 5560 #pragma omp teams 5561 #pragma omp distribute parallel for 5562 for (int i = 0; i < 10; ++i) { 5563 #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?}} 5564 { 5565 bar(); 5566 } 5567 } 5568 #pragma omp target 5569 #pragma omp teams 5570 #pragma omp distribute parallel for 5571 for (int i = 0; i < 10; ++i) { 5572 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 5573 { 5574 bar(); 5575 } 5576 } 5577 #pragma omp target 5578 #pragma omp teams 5579 #pragma omp distribute parallel for 5580 for (int i = 0; i < 10; ++i) { 5581 #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?}} 5582 { 5583 bar(); 5584 } 5585 } 5586 #pragma omp target 5587 #pragma omp teams 5588 #pragma omp distribute parallel for 5589 for (int i = 0; i < 10; ++i) { 5590 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5591 { 5592 bar(); 5593 } 5594 } 5595 #pragma omp target 5596 #pragma omp teams 5597 #pragma omp distribute parallel for 5598 for (int i = 0; i < 10; ++i) { 5599 #pragma omp critical 5600 { 5601 bar(); 5602 } 5603 } 5604 #pragma omp target 5605 #pragma omp teams 5606 #pragma omp distribute parallel for 5607 for (int i = 0; i < 10; ++i) { 5608 #pragma omp parallel 5609 { 5610 #pragma omp single 5611 { 5612 bar(); 5613 } 5614 } 5615 } 5616 #pragma omp target 5617 #pragma omp teams 5618 #pragma omp distribute parallel for 5619 for (int i = 0; i < 10; ++i) { 5620 #pragma omp parallel for 5621 for (int i = 0; i < 10; ++i) 5622 ; 5623 } 5624 #pragma omp target 5625 #pragma omp teams 5626 #pragma omp distribute parallel for 5627 for (int i = 0; i < 10; ++i) { 5628 #pragma omp parallel for simd 5629 for (int i = 0; i < 10; ++i) 5630 ; 5631 } 5632 #pragma omp target 5633 #pragma omp teams 5634 #pragma omp distribute parallel for 5635 for (int i = 0; i < 10; ++i) { 5636 #pragma omp parallel sections 5637 { 5638 bar(); 5639 } 5640 } 5641 #pragma omp target 5642 #pragma omp teams 5643 #pragma omp distribute parallel for 5644 for (int i = 0; i < 10; ++i) { 5645 #pragma omp task 5646 { 5647 bar(); 5648 } 5649 } 5650 #pragma omp target 5651 #pragma omp teams 5652 #pragma omp distribute parallel for 5653 for (int i = 0; i < 10; ++i) { 5654 #pragma omp taskyield 5655 bar(); 5656 } 5657 #pragma omp target 5658 #pragma omp teams 5659 #pragma omp distribute parallel for 5660 for (int i = 0; i < 10; ++i) { 5661 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5662 bar(); 5663 } 5664 #pragma omp target 5665 #pragma omp teams 5666 #pragma omp distribute parallel for 5667 for (int i = 0; i < 10; ++i) { 5668 #pragma omp taskwait 5669 bar(); 5670 } 5671 #pragma omp target 5672 #pragma omp teams 5673 #pragma omp distribute parallel for 5674 for (int i = 0; i < 10; ++i) { 5675 #pragma omp flush 5676 bar(); 5677 } 5678 #pragma omp target 5679 #pragma omp teams 5680 #pragma omp distribute parallel for 5681 for (int i = 0; i < 10; ++i) { 5682 #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?}} 5683 bar(); 5684 } 5685 #pragma omp target 5686 #pragma omp teams 5687 #pragma omp distribute parallel for 5688 for (int i = 0; i < 10; ++i) { 5689 #pragma omp atomic 5690 ++a; 5691 } 5692 #pragma omp target 5693 #pragma omp teams 5694 #pragma omp distribute parallel for 5695 for (int i = 0; i < 10; ++i) { 5696 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5697 ++a; 5698 } 5699 #pragma omp target 5700 #pragma omp teams 5701 #pragma omp distribute parallel for 5702 for (int i = 0; i < 10; ++i) { 5703 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5704 ++a; 5705 } 5706 #pragma omp target 5707 #pragma omp teams 5708 #pragma omp distribute parallel for 5709 for (int i = 0; i < 10; ++i) { 5710 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5711 for (int i = 0; i < 10; ++i) 5712 ; 5713 } 5714 #pragma omp target 5715 #pragma omp teams 5716 #pragma omp distribute parallel for 5717 for (int i = 0; i < 10; ++i) { 5718 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5719 ++a; 5720 } 5721 #pragma omp target 5722 #pragma omp teams 5723 #pragma omp distribute parallel for 5724 for (int i = 0; i < 10; ++i) { 5725 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5726 ++a; 5727 } 5728 #pragma omp target 5729 #pragma omp teams 5730 #pragma omp distribute parallel for 5731 for (int i = 0; i < 10; ++i) { 5732 #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?}} 5733 ++a; 5734 } 5735 #pragma omp target 5736 #pragma omp teams 5737 #pragma omp distribute parallel for 5738 for (int i = 0; i < 10; ++i) { 5739 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5740 ++a; 5741 } 5742 #pragma omp target 5743 #pragma omp teams 5744 #pragma omp distribute parallel for 5745 for (int i = 0; i < 10; ++i) { 5746 #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?}} 5747 for (int i = 0; i < 10; ++i) 5748 ; 5749 } 5750 #pragma omp target 5751 #pragma omp teams 5752 #pragma omp distribute parallel for 5753 for (int i = 0; i < 10; ++i) { 5754 #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?}} 5755 for (int i = 0; i < 10; ++i) 5756 ; 5757 } 5758 #pragma omp target 5759 #pragma omp teams 5760 #pragma omp distribute parallel for 5761 for (int i = 0; i < 10; ++i) { 5762 #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?}} 5763 for (int i = 0; i < 10; ++i) 5764 ; 5765 } 5766 #pragma omp target 5767 #pragma omp teams 5768 #pragma omp distribute parallel for 5769 for (int i = 0; i < 10; ++i) { 5770 #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?}} 5771 for (int i = 0; i < 10; ++i) 5772 ; 5773 } 5774 #pragma omp target 5775 #pragma omp teams 5776 #pragma omp distribute parallel for 5777 for (int i = 0; i < 10; ++i) { 5778 #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?}} 5779 for (int i = 0; i < 10; ++i) 5780 ; 5781 } 5782 #pragma omp target 5783 #pragma omp teams 5784 #pragma omp distribute parallel for 5785 for (int i = 0; i < 10; ++i) { 5786 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5787 a++; 5788 } 5789 #pragma omp target 5790 #pragma omp teams 5791 #pragma omp distribute parallel for 5792 for (int i = 0; i < 10; ++i) { 5793 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 5794 for (int i = 0; i < 10; ++i) 5795 ; 5796 } 5797 #pragma omp target 5798 #pragma omp teams 5799 #pragma omp distribute parallel for 5800 for (int i = 0; i < 10; ++i) { 5801 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 5802 for (int i = 0; i < 10; ++i) 5803 ; 5804 } 5805 #pragma omp target 5806 #pragma omp teams 5807 #pragma omp distribute parallel for 5808 for (int i = 0; i < 10; ++i) { 5809 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 5810 for (int i = 0; i < 10; ++i) 5811 ; 5812 } 5813 #pragma omp target 5814 #pragma omp teams 5815 #pragma omp distribute parallel for 5816 for (int i = 0; i < 10; ++i) { 5817 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 5818 for (int i = 0; i < 10; ++i) 5819 ; 5820 } 5821 5822 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 5823 #pragma omp target 5824 #pragma omp teams 5825 #pragma omp distribute parallel for simd 5826 for (int i = 0; i < 10; ++i) { 5827 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5828 for (int i = 0; i < 10; ++i) 5829 ; 5830 } 5831 #pragma omp target 5832 #pragma omp teams 5833 #pragma omp distribute parallel for simd 5834 for (int i = 0; i < 10; ++i) { 5835 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5836 for (int i = 0; i < 10; ++i) 5837 ; 5838 } 5839 #pragma omp target 5840 #pragma omp teams 5841 #pragma omp distribute parallel for simd 5842 for (int i = 0; i < 10; ++i) { 5843 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5844 for (int i = 0; i < 10; ++i) 5845 ; 5846 } 5847 #pragma omp target 5848 #pragma omp teams 5849 #pragma omp distribute parallel for simd 5850 for (int i = 0; i < 10; ++i) { 5851 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5852 for (int i = 0; i < 10; ++i) 5853 ; 5854 } 5855 #pragma omp target 5856 #pragma omp teams 5857 #pragma omp distribute parallel for simd 5858 for (int i = 0; i < 10; ++i) { 5859 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5860 for (int i = 0; i < 10; ++i) 5861 ; 5862 } 5863 #pragma omp target 5864 #pragma omp teams 5865 #pragma omp distribute parallel for simd 5866 for (int i = 0; i < 10; ++i) { 5867 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5868 for (int i = 0; i < 10; ++i) 5869 ; 5870 } 5871 #pragma omp target 5872 #pragma omp teams 5873 #pragma omp distribute parallel for simd 5874 for (int i = 0; i < 10; ++i) { 5875 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5876 { 5877 bar(); 5878 } 5879 } 5880 #pragma omp target 5881 #pragma omp teams 5882 #pragma omp distribute parallel for simd 5883 for (int i = 0; i < 10; ++i) { 5884 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5885 { 5886 bar(); 5887 } 5888 } 5889 #pragma omp target 5890 #pragma omp teams 5891 #pragma omp distribute parallel for simd 5892 for (int i = 0; i < 10; ++i) { 5893 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5894 { 5895 bar(); 5896 } 5897 } 5898 #pragma omp target 5899 #pragma omp teams 5900 #pragma omp distribute parallel for simd 5901 for (int i = 0; i < 10; ++i) { 5902 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5903 { 5904 bar(); 5905 } 5906 } 5907 #pragma omp target 5908 #pragma omp teams 5909 #pragma omp distribute parallel for simd 5910 for (int i = 0; i < 10; ++i) { 5911 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5912 { 5913 bar(); 5914 } 5915 } 5916 #pragma omp target 5917 #pragma omp teams 5918 #pragma omp distribute parallel for simd 5919 for (int i = 0; i < 10; ++i) { 5920 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5921 { 5922 #pragma omp single 5923 { 5924 bar(); 5925 } 5926 } 5927 } 5928 #pragma omp target 5929 #pragma omp teams 5930 #pragma omp distribute parallel for simd 5931 for (int i = 0; i < 10; ++i) { 5932 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5933 for (int i = 0; i < 10; ++i) 5934 ; 5935 } 5936 #pragma omp target 5937 #pragma omp teams 5938 #pragma omp distribute parallel for simd 5939 for (int i = 0; i < 10; ++i) { 5940 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5941 for (int i = 0; i < 10; ++i) 5942 ; 5943 } 5944 #pragma omp target 5945 #pragma omp teams 5946 #pragma omp distribute parallel for simd 5947 for (int i = 0; i < 10; ++i) { 5948 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5949 { 5950 bar(); 5951 } 5952 } 5953 #pragma omp target 5954 #pragma omp teams 5955 #pragma omp distribute parallel for simd 5956 for (int i = 0; i < 10; ++i) { 5957 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5958 { 5959 bar(); 5960 } 5961 } 5962 #pragma omp target 5963 #pragma omp teams 5964 #pragma omp distribute parallel for simd 5965 for (int i = 0; i < 10; ++i) { 5966 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5967 bar(); 5968 } 5969 #pragma omp target 5970 #pragma omp teams 5971 #pragma omp distribute parallel for simd 5972 for (int i = 0; i < 10; ++i) { 5973 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5974 bar(); 5975 } 5976 #pragma omp target 5977 #pragma omp teams 5978 #pragma omp distribute parallel for simd 5979 for (int i = 0; i < 10; ++i) { 5980 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5981 bar(); 5982 } 5983 #pragma omp target 5984 #pragma omp teams 5985 #pragma omp distribute parallel for simd 5986 for (int i = 0; i < 10; ++i) { 5987 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5988 bar(); 5989 } 5990 #pragma omp target 5991 #pragma omp teams 5992 #pragma omp distribute parallel for simd 5993 for (int i = 0; i < 10; ++i) { 5994 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5995 bar(); 5996 } 5997 #pragma omp target 5998 #pragma omp teams 5999 #pragma omp distribute parallel for simd 6000 for (int i = 0; i < 10; ++i) { 6001 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6002 ++a; 6003 } 6004 #pragma omp target 6005 #pragma omp teams 6006 #pragma omp distribute parallel for simd 6007 for (int i = 0; i < 10; ++i) { 6008 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6009 ++a; 6010 } 6011 #pragma omp target 6012 #pragma omp teams 6013 #pragma omp distribute parallel for simd 6014 for (int i = 0; i < 10; ++i) { 6015 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6016 ++a; 6017 } 6018 #pragma omp target 6019 #pragma omp teams 6020 #pragma omp distribute parallel for simd 6021 for (int i = 0; i < 10; ++i) { 6022 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6023 for (int i = 0; i < 10; ++i) 6024 ; 6025 } 6026 #pragma omp target 6027 #pragma omp teams 6028 #pragma omp distribute parallel for simd 6029 for (int i = 0; i < 10; ++i) { 6030 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6031 ++a; 6032 } 6033 #pragma omp target 6034 #pragma omp teams 6035 #pragma omp distribute parallel for simd 6036 for (int i = 0; i < 10; ++i) { 6037 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6038 ++a; 6039 } 6040 #pragma omp target 6041 #pragma omp teams 6042 #pragma omp distribute parallel for simd 6043 for (int i = 0; i < 10; ++i) { 6044 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6045 ++a; 6046 } 6047 #pragma omp target 6048 #pragma omp teams 6049 #pragma omp distribute parallel for simd 6050 for (int i = 0; i < 10; ++i) { 6051 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6052 ++a; 6053 } 6054 #pragma omp target 6055 #pragma omp teams 6056 #pragma omp distribute parallel for simd 6057 for (int i = 0; i < 10; ++i) { 6058 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6059 for (int i = 0; i < 10; ++i) 6060 ++a; 6061 } 6062 #pragma omp target 6063 #pragma omp teams 6064 #pragma omp distribute parallel for simd 6065 for (int i = 0; i < 10; ++i) { 6066 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6067 for (int i = 0; i < 10; ++i) 6068 ++a; 6069 } 6070 #pragma omp target 6071 #pragma omp teams 6072 #pragma omp distribute parallel for simd 6073 for (int i = 0; i < 10; ++i) { 6074 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6075 for (int i = 0; i < 10; ++i) 6076 ++a; 6077 } 6078 #pragma omp target 6079 #pragma omp teams 6080 #pragma omp distribute parallel for simd 6081 for (int i = 0; i < 10; ++i) { 6082 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6083 for (int i = 0; i < 10; ++i) 6084 ++a; 6085 } 6086 #pragma omp target 6087 #pragma omp teams 6088 #pragma omp distribute parallel for simd 6089 for (int i = 0; i < 10; ++i) { 6090 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6091 for (int i = 0; i < 10; ++i) 6092 ++a; 6093 } 6094 #pragma omp target 6095 #pragma omp teams 6096 #pragma omp distribute parallel for simd 6097 for (int i = 0; i < 10; ++i) { 6098 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6099 for (int i = 0; i < 10; ++i) 6100 ++a; 6101 } 6102 #pragma omp target 6103 #pragma omp teams 6104 #pragma omp distribute parallel for simd 6105 for (int i = 0; i < 10; ++i) { 6106 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6107 ++a; 6108 } 6109 #pragma omp target 6110 #pragma omp teams 6111 #pragma omp distribute parallel for simd 6112 for (int i = 0; i < 10; ++i) { 6113 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6114 for (int i = 0; i < 10; ++i) 6115 ++a; 6116 } 6117 #pragma omp target 6118 #pragma omp teams 6119 #pragma omp distribute parallel for simd 6120 for (int i = 0; i < 10; ++i) { 6121 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6122 for (int i = 0; i < 10; ++i) 6123 ++a; 6124 } 6125 #pragma omp target 6126 #pragma omp teams 6127 #pragma omp distribute parallel for simd 6128 for (int i = 0; i < 10; ++i) { 6129 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6130 for (int i = 0; i < 10; ++i) 6131 ++a; 6132 } 6133 #pragma omp target 6134 #pragma omp teams 6135 #pragma omp distribute parallel for simd 6136 for (int i = 0; i < 10; ++i) { 6137 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6138 for (int i = 0; i < 10; ++i) 6139 ++a; 6140 } 6141 6142 // TARGET SIMD DIRECTIVE 6143 #pragma omp target simd 6144 for (int i = 0; i < 10; ++i) { 6145 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6146 for (int i = 0; i < 10; ++i) 6147 ; 6148 } 6149 #pragma omp target simd 6150 for (int i = 0; i < 10; ++i) { 6151 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6152 for (int i = 0; i < 10; ++i) 6153 ; 6154 } 6155 #pragma omp target simd 6156 for (int i = 0; i < 10; ++i) { 6157 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6158 for (int i = 0; i < 10; ++i) 6159 ; 6160 } 6161 #pragma omp target simd 6162 for (int i = 0; i < 10; ++i) { 6163 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6164 for (int i = 0; i < 10; ++i) 6165 ; 6166 } 6167 #pragma omp target simd 6168 for (int i = 0; i < 10; ++i) { 6169 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6170 for (int i = 0; i < 10; ++i) 6171 ; 6172 } 6173 #pragma omp target simd 6174 for (int i = 0; i < 10; ++i) { 6175 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6176 for (int i = 0; i < 10; ++i) 6177 ; 6178 } 6179 #pragma omp target simd 6180 for (int i = 0; i < 10; ++i) { 6181 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6182 { 6183 bar(); 6184 } 6185 } 6186 #pragma omp target simd 6187 for (int i = 0; i < 10; ++i) { 6188 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6189 { 6190 bar(); 6191 } 6192 } 6193 #pragma omp target simd 6194 for (int i = 0; i < 10; ++i) { 6195 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6196 { 6197 bar(); 6198 } 6199 } 6200 #pragma omp target simd 6201 for (int i = 0; i < 10; ++i) { 6202 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6203 { 6204 bar(); 6205 } 6206 } 6207 #pragma omp target simd 6208 for (int i = 0; i < 10; ++i) { 6209 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6210 { 6211 bar(); 6212 } 6213 } 6214 #pragma omp target simd 6215 for (int i = 0; i < 10; ++i) { 6216 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6217 { 6218 #pragma omp single 6219 { 6220 bar(); 6221 } 6222 } 6223 } 6224 #pragma omp target simd 6225 for (int i = 0; i < 10; ++i) { 6226 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6227 for (int i = 0; i < 10; ++i) 6228 ; 6229 } 6230 #pragma omp target simd 6231 for (int i = 0; i < 10; ++i) { 6232 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6233 for (int i = 0; i < 10; ++i) 6234 ; 6235 } 6236 #pragma omp target simd 6237 for (int i = 0; i < 10; ++i) { 6238 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6239 { 6240 bar(); 6241 } 6242 } 6243 #pragma omp target simd 6244 for (int i = 0; i < 10; ++i) { 6245 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6246 { 6247 bar(); 6248 } 6249 } 6250 #pragma omp target simd 6251 for (int i = 0; i < 10; ++i) { 6252 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6253 bar(); 6254 } 6255 #pragma omp target simd 6256 for (int i = 0; i < 10; ++i) { 6257 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6258 bar(); 6259 } 6260 #pragma omp target simd 6261 for (int i = 0; i < 10; ++i) { 6262 #pragma omp taskwait // 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 flush // 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 ordered // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6278 ++a; 6279 } 6280 #pragma omp target simd 6281 for (int i = 0; i < 10; ++i) { 6282 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6283 ++a; 6284 } 6285 #pragma omp target simd 6286 for (int i = 0; i < 10; ++i) { 6287 #pragma omp target parallel // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6293 for (int i = 0; i < 10; ++i) 6294 ; 6295 } 6296 #pragma omp target simd 6297 for (int i = 0; i < 10; ++i) { 6298 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6299 ++a; 6300 } 6301 #pragma omp target simd 6302 for (int i = 0; i < 10; ++i) { 6303 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6304 ++a; 6305 } 6306 #pragma omp target simd 6307 for (int i = 0; i < 10; ++i) { 6308 #pragma omp teams // 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 update to(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 distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6319 for (int i = 0; i < 10; ++i) 6320 ++a; 6321 } 6322 #pragma omp target simd 6323 for (int i = 0; i < 10; ++i) { 6324 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6325 for (int i = 0; i < 10; ++i) 6326 ++a; 6327 } 6328 #pragma omp target simd 6329 for (int i = 0; i < 10; ++i) { 6330 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6331 for (int i = 0; i < 10; ++i) 6332 ++a; 6333 } 6334 #pragma omp target simd 6335 for (int i = 0; i < 10; ++i) { 6336 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6337 for (int i = 0; i < 10; ++i) 6338 ++a; 6339 } 6340 #pragma omp target simd 6341 for (int i = 0; i < 10; ++i) { 6342 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6343 for (int i = 0; i < 10; ++i) 6344 ++a; 6345 } 6346 #pragma omp target simd 6347 for (int i = 0; i < 10; ++i) { 6348 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6349 for (int i = 0; i < 10; ++i) 6350 ++a; 6351 } 6352 #pragma omp target simd 6353 for (int i = 0; i < 10; ++i) { 6354 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6355 for (int i = 0; i < 10; ++i) 6356 ++a; 6357 } 6358 #pragma omp target simd 6359 for (int i = 0; i < 10; ++i) { 6360 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6361 for (int i = 0; i < 10; ++i) 6362 ++a; 6363 } 6364 6365 // TEAMS DISTRIBUTE DIRECTIVE 6366 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6367 for (int i = 0; i < 10; ++i) 6368 ; 6369 #pragma omp target 6370 #pragma omp teams distribute 6371 for (int i = 0; i < 10; ++i) { 6372 #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?}} 6373 for (int i = 0; i < 10; ++i) 6374 ; 6375 } 6376 #pragma omp target 6377 #pragma omp teams distribute 6378 for (int i = 0; i < 10; ++i) { 6379 #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?}} 6380 for (int i = 0; i < 10; ++i) 6381 ; 6382 } 6383 #pragma omp target 6384 #pragma omp teams distribute 6385 for (int i = 0; i < 10; ++i) { 6386 #pragma omp for // OK 6387 for (int i = 0; i < 10; ++i) 6388 ; 6389 } 6390 #pragma omp target 6391 #pragma omp teams distribute 6392 for (int i = 0; i < 10; ++i) { 6393 #pragma omp simd // OK 6394 for (int i = 0; i < 10; ++i) 6395 ; 6396 } 6397 #pragma omp target 6398 #pragma omp teams distribute 6399 for (int i = 0; i < 10; ++i) { 6400 #pragma omp for simd // OK 6401 for (int i = 0; i < 10; ++i) 6402 ; 6403 } 6404 #pragma omp target 6405 #pragma omp teams distribute 6406 for (int i = 0; i < 10; ++i) { 6407 #pragma omp parallel // OK 6408 for (int i = 0; i < 10; ++i) 6409 ; 6410 } 6411 #pragma omp target 6412 #pragma omp teams distribute 6413 for (int i = 0; i < 10; ++i) { 6414 #pragma omp sections // OK 6415 { 6416 bar(); 6417 } 6418 } 6419 #pragma omp target 6420 #pragma omp teams distribute 6421 for (int i = 0; i < 10; ++i) { 6422 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6423 { 6424 bar(); 6425 } 6426 } 6427 #pragma omp target 6428 #pragma omp teams distribute 6429 for (int i = 0; i < 10; ++i) { 6430 #pragma omp single // OK 6431 { 6432 bar(); 6433 } 6434 } 6435 #pragma omp target 6436 #pragma omp teams distribute 6437 for (int i = 0; i < 10; ++i) { 6438 #pragma omp master // OK 6439 { 6440 bar(); 6441 } 6442 } 6443 #pragma omp target 6444 #pragma omp teams distribute 6445 for (int i = 0; i < 10; ++i) { 6446 #pragma omp critical // OK 6447 { 6448 bar(); 6449 } 6450 } 6451 #pragma omp target 6452 #pragma omp teams distribute 6453 for (int i = 0; i < 10; ++i) { 6454 #pragma omp parallel // OK 6455 { 6456 #pragma omp single 6457 { 6458 bar(); 6459 } 6460 } 6461 } 6462 #pragma omp target 6463 #pragma omp teams distribute 6464 for (int i = 0; i < 10; ++i) { 6465 #pragma omp parallel for // OK 6466 for (int i = 0; i < 10; ++i) 6467 ; 6468 } 6469 #pragma omp target 6470 #pragma omp teams distribute 6471 for (int i = 0; i < 10; ++i) { 6472 #pragma omp parallel for simd // OK 6473 for (int i = 0; i < 10; ++i) 6474 ; 6475 } 6476 #pragma omp target 6477 #pragma omp teams distribute 6478 for (int i = 0; i < 10; ++i) { 6479 #pragma omp parallel sections // OK 6480 { 6481 bar(); 6482 } 6483 } 6484 #pragma omp target 6485 #pragma omp teams distribute 6486 for (int i = 0; i < 10; ++i) { 6487 #pragma omp task // OK 6488 { 6489 bar(); 6490 } 6491 } 6492 #pragma omp target 6493 #pragma omp teams distribute 6494 for (int i = 0; i < 10; ++i) { 6495 #pragma omp taskyield // OK 6496 bar(); 6497 } 6498 #pragma omp target 6499 #pragma omp teams distribute 6500 for (int i = 0; i < 10; ++i) { 6501 #pragma omp barrier // OK 6502 bar(); 6503 } 6504 #pragma omp target 6505 #pragma omp teams distribute 6506 for (int i = 0; i < 10; ++i) { 6507 #pragma omp taskwait // OK 6508 bar(); 6509 } 6510 #pragma omp target 6511 #pragma omp teams distribute 6512 for (int i = 0; i < 10; ++i) { 6513 #pragma omp flush // OK 6514 bar(); 6515 } 6516 #pragma omp target 6517 #pragma omp teams distribute 6518 for (int i = 0; i < 10; ++i) { 6519 #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?}} 6520 bar(); 6521 } 6522 #pragma omp target 6523 #pragma omp teams distribute 6524 for (int i = 0; i < 10; ++i) { 6525 #pragma omp atomic // OK 6526 ++a; 6527 } 6528 #pragma omp target 6529 #pragma omp teams distribute 6530 for (int i = 0; i < 10; ++i) { 6531 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6532 ++a; 6533 } 6534 #pragma omp target 6535 #pragma omp teams distribute 6536 for (int i = 0; i < 10; ++i) { 6537 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6538 ++a; 6539 } 6540 #pragma omp target 6541 #pragma omp teams distribute 6542 for (int i = 0; i < 10; ++i) { 6543 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6544 for (int i = 0; i < 10; ++i) 6545 ; 6546 } 6547 #pragma omp target 6548 #pragma omp teams distribute 6549 for (int i = 0; i < 10; ++i) { 6550 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6551 ++a; 6552 } 6553 #pragma omp target 6554 #pragma omp teams distribute 6555 for (int i = 0; i < 10; ++i) { 6556 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6557 ++a; 6558 } 6559 #pragma omp target 6560 #pragma omp teams distribute 6561 for (int i = 0; i < 10; ++i) { 6562 #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?}} 6563 ++a; 6564 } 6565 #pragma omp target 6566 #pragma omp teams distribute 6567 for (int i = 0; i < 10; ++i) { 6568 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6569 ++a; 6570 } 6571 #pragma omp target 6572 #pragma omp teams distribute 6573 for (int i = 0; i < 10; ++i) { 6574 #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?}} 6575 for (int i = 0; i < 10; ++i) 6576 ++a; 6577 } 6578 #pragma omp target 6579 #pragma omp teams distribute 6580 for (int i = 0; i < 10; ++i) { 6581 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6582 for (int i = 0; i < 10; ++i) 6583 ++a; 6584 } 6585 #pragma omp target 6586 #pragma omp teams distribute 6587 for (int i = 0; i < 10; ++i) { 6588 #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?}} 6589 for (int i = 0; i < 10; ++i) 6590 ++a; 6591 } 6592 #pragma omp target 6593 #pragma omp teams distribute 6594 for (int i = 0; i < 10; ++i) { 6595 #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?}} 6596 for (int i = 0; i < 10; ++i) 6597 ++a; 6598 } 6599 #pragma omp target 6600 #pragma omp teams distribute 6601 for (int i = 0; i < 10; ++i) { 6602 #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?}} 6603 for (int i = 0; i < 10; ++i) 6604 ++a; 6605 } 6606 #pragma omp target 6607 #pragma omp teams distribute 6608 for (int i = 0; i < 10; ++i) { 6609 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6610 for (int i = 0; i < 10; ++i) 6611 ++a; 6612 } 6613 #pragma omp target 6614 #pragma omp teams distribute 6615 for (int i = 0; i < 10; ++i) { 6616 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6617 for (int i = 0; i < 10; ++i) 6618 ++a; 6619 } 6620 #pragma omp target 6621 #pragma omp teams distribute 6622 for (int i = 0; i < 10; ++i) { 6623 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6624 for (int i = 0; i < 10; ++i) 6625 ++a; 6626 } 6627 6628 // TEAMS DISTRIBUTE DIRECTIVE 6629 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6630 for (int i = 0; i < 10; ++i) 6631 ; 6632 #pragma omp target 6633 #pragma omp teams distribute 6634 for (int i = 0; i < 10; ++i) { 6635 #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?}} 6636 for (int i = 0; i < 10; ++i) 6637 ; 6638 } 6639 #pragma omp target 6640 #pragma omp teams distribute 6641 for (int i = 0; i < 10; ++i) { 6642 #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?}} 6643 for (int i = 0; i < 10; ++i) 6644 ; 6645 } 6646 #pragma omp target 6647 #pragma omp teams distribute 6648 for (int i = 0; i < 10; ++i) { 6649 #pragma omp for // OK 6650 for (int i = 0; i < 10; ++i) 6651 ; 6652 } 6653 #pragma omp target 6654 #pragma omp teams distribute 6655 for (int i = 0; i < 10; ++i) { 6656 #pragma omp simd // OK 6657 for (int i = 0; i < 10; ++i) 6658 ; 6659 } 6660 #pragma omp target 6661 #pragma omp teams distribute 6662 for (int i = 0; i < 10; ++i) { 6663 #pragma omp for simd // OK 6664 for (int i = 0; i < 10; ++i) 6665 ; 6666 } 6667 #pragma omp target 6668 #pragma omp teams distribute 6669 for (int i = 0; i < 10; ++i) { 6670 #pragma omp parallel // OK 6671 for (int i = 0; i < 10; ++i) 6672 ; 6673 } 6674 #pragma omp target 6675 #pragma omp teams distribute 6676 for (int i = 0; i < 10; ++i) { 6677 #pragma omp sections // OK 6678 { 6679 bar(); 6680 } 6681 } 6682 #pragma omp target 6683 #pragma omp teams distribute 6684 for (int i = 0; i < 10; ++i) { 6685 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6686 { 6687 bar(); 6688 } 6689 } 6690 #pragma omp target 6691 #pragma omp teams distribute 6692 for (int i = 0; i < 10; ++i) { 6693 #pragma omp single // OK 6694 { 6695 bar(); 6696 } 6697 } 6698 #pragma omp target 6699 #pragma omp teams distribute 6700 for (int i = 0; i < 10; ++i) { 6701 #pragma omp master // OK 6702 { 6703 bar(); 6704 } 6705 } 6706 #pragma omp target 6707 #pragma omp teams distribute 6708 for (int i = 0; i < 10; ++i) { 6709 #pragma omp critical // OK 6710 { 6711 bar(); 6712 } 6713 } 6714 #pragma omp target 6715 #pragma omp teams distribute 6716 for (int i = 0; i < 10; ++i) { 6717 #pragma omp parallel // OK 6718 { 6719 #pragma omp single 6720 { 6721 bar(); 6722 } 6723 } 6724 } 6725 #pragma omp target 6726 #pragma omp teams distribute 6727 for (int i = 0; i < 10; ++i) { 6728 #pragma omp parallel for // OK 6729 for (int i = 0; i < 10; ++i) 6730 ; 6731 } 6732 #pragma omp target 6733 #pragma omp teams distribute 6734 for (int i = 0; i < 10; ++i) { 6735 #pragma omp parallel for simd // OK 6736 for (int i = 0; i < 10; ++i) 6737 ; 6738 } 6739 #pragma omp target 6740 #pragma omp teams distribute 6741 for (int i = 0; i < 10; ++i) { 6742 #pragma omp parallel sections // OK 6743 { 6744 bar(); 6745 } 6746 } 6747 #pragma omp target 6748 #pragma omp teams distribute 6749 for (int i = 0; i < 10; ++i) { 6750 #pragma omp task // OK 6751 { 6752 bar(); 6753 } 6754 } 6755 #pragma omp target 6756 #pragma omp teams distribute 6757 for (int i = 0; i < 10; ++i) { 6758 #pragma omp taskyield // OK 6759 bar(); 6760 } 6761 #pragma omp target 6762 #pragma omp teams distribute 6763 for (int i = 0; i < 10; ++i) { 6764 #pragma omp barrier // OK 6765 bar(); 6766 } 6767 #pragma omp target 6768 #pragma omp teams distribute 6769 for (int i = 0; i < 10; ++i) { 6770 #pragma omp taskwait // OK 6771 bar(); 6772 } 6773 #pragma omp target 6774 #pragma omp teams distribute 6775 for (int i = 0; i < 10; ++i) { 6776 #pragma omp flush // OK 6777 bar(); 6778 } 6779 #pragma omp target 6780 #pragma omp teams distribute 6781 for (int i = 0; i < 10; ++i) { 6782 #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?}} 6783 bar(); 6784 } 6785 #pragma omp target 6786 #pragma omp teams distribute 6787 for (int i = 0; i < 10; ++i) { 6788 #pragma omp atomic // OK 6789 ++a; 6790 } 6791 #pragma omp target 6792 #pragma omp teams distribute 6793 for (int i = 0; i < 10; ++i) { 6794 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6795 ++a; 6796 } 6797 #pragma omp target 6798 #pragma omp teams distribute 6799 for (int i = 0; i < 10; ++i) { 6800 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6801 ++a; 6802 } 6803 #pragma omp target 6804 #pragma omp teams distribute 6805 for (int i = 0; i < 10; ++i) { 6806 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6807 for (int i = 0; i < 10; ++i) 6808 ; 6809 } 6810 #pragma omp target 6811 #pragma omp teams distribute 6812 for (int i = 0; i < 10; ++i) { 6813 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6814 ++a; 6815 } 6816 #pragma omp target 6817 #pragma omp teams distribute 6818 for (int i = 0; i < 10; ++i) { 6819 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6820 ++a; 6821 } 6822 #pragma omp target 6823 #pragma omp teams distribute 6824 for (int i = 0; i < 10; ++i) { 6825 #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?}} 6826 ++a; 6827 } 6828 #pragma omp target 6829 #pragma omp teams distribute 6830 for (int i = 0; i < 10; ++i) { 6831 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6832 ++a; 6833 } 6834 #pragma omp target 6835 #pragma omp teams distribute 6836 for (int i = 0; i < 10; ++i) { 6837 #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?}} 6838 for (int i = 0; i < 10; ++i) 6839 ++a; 6840 } 6841 #pragma omp target 6842 #pragma omp teams distribute 6843 for (int i = 0; i < 10; ++i) { 6844 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6845 for (int i = 0; i < 10; ++i) 6846 ++a; 6847 } 6848 #pragma omp target 6849 #pragma omp teams distribute 6850 for (int i = 0; i < 10; ++i) { 6851 #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?}} 6852 for (int i = 0; i < 10; ++i) 6853 ++a; 6854 } 6855 #pragma omp target 6856 #pragma omp teams distribute 6857 for (int i = 0; i < 10; ++i) { 6858 #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?}} 6859 for (int i = 0; i < 10; ++i) 6860 ++a; 6861 } 6862 #pragma omp target 6863 #pragma omp teams distribute 6864 for (int i = 0; i < 10; ++i) { 6865 #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?}} 6866 for (int i = 0; i < 10; ++i) 6867 ++a; 6868 } 6869 #pragma omp target 6870 #pragma omp teams distribute 6871 for (int i = 0; i < 10; ++i) { 6872 #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?}} 6873 for (int i = 0; i < 10; ++i) 6874 ++a; 6875 } 6876 #pragma omp target 6877 #pragma omp teams distribute 6878 for (int i = 0; i < 10; ++i) { 6879 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6880 ++a; 6881 } 6882 #pragma omp target 6883 #pragma omp teams distribute 6884 for (int i = 0; i < 10; ++i) { 6885 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 6886 for (int i = 0; i < 10; ++i) 6887 ++a; 6888 } 6889 #pragma omp target 6890 #pragma omp teams distribute 6891 for (int i = 0; i < 10; ++i) { 6892 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 6893 for (int i = 0; i < 10; ++i) 6894 ++a; 6895 } 6896 #pragma omp target 6897 #pragma omp teams distribute 6898 for (int i = 0; i < 10; ++i) { 6899 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 6900 for (int i = 0; i < 10; ++i) 6901 ++a; 6902 } 6903 #pragma omp target 6904 #pragma omp teams distribute 6905 for (int i = 0; i < 10; ++i) { 6906 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 6907 for (int i = 0; i < 10; ++i) 6908 ++a; 6909 } 6910 6911 // TEAMS DISTRIBUTE SIMD DIRECTIVE 6912 #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?}} 6913 for (int i = 0; i < 10; ++i) 6914 ; 6915 #pragma omp target 6916 #pragma omp teams distribute simd 6917 for (int i = 0; i < 10; ++i) { 6918 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6919 for (int i = 0; i < 10; ++i) 6920 ; 6921 } 6922 #pragma omp target 6923 #pragma omp teams distribute simd 6924 for (int i = 0; i < 10; ++i) { 6925 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6926 for (int i = 0; i < 10; ++i) 6927 ; 6928 } 6929 #pragma omp target 6930 #pragma omp teams distribute simd 6931 for (int i = 0; i < 10; ++i) { 6932 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6933 for (int i = 0; i < 10; ++i) 6934 ; 6935 } 6936 #pragma omp target 6937 #pragma omp teams distribute simd 6938 for (int i = 0; i < 10; ++i) { 6939 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6940 for (int i = 0; i < 10; ++i) 6941 ; 6942 } 6943 #pragma omp target 6944 #pragma omp teams distribute simd 6945 for (int i = 0; i < 10; ++i) { 6946 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6947 for (int i = 0; i < 10; ++i) 6948 ; 6949 } 6950 #pragma omp target 6951 #pragma omp teams distribute simd 6952 for (int i = 0; i < 10; ++i) { 6953 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6954 for (int i = 0; i < 10; ++i) 6955 ; 6956 } 6957 #pragma omp target 6958 #pragma omp teams distribute simd 6959 for (int i = 0; i < 10; ++i) { 6960 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6961 { 6962 bar(); 6963 } 6964 } 6965 #pragma omp target 6966 #pragma omp teams distribute simd 6967 for (int i = 0; i < 10; ++i) { 6968 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6969 { 6970 bar(); 6971 } 6972 } 6973 #pragma omp target 6974 #pragma omp teams distribute simd 6975 for (int i = 0; i < 10; ++i) { 6976 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6977 { 6978 bar(); 6979 } 6980 } 6981 #pragma omp target 6982 #pragma omp teams distribute simd 6983 for (int i = 0; i < 10; ++i) { 6984 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6985 { 6986 bar(); 6987 } 6988 } 6989 #pragma omp target 6990 #pragma omp teams distribute simd 6991 for (int i = 0; i < 10; ++i) { 6992 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6993 { 6994 bar(); 6995 } 6996 } 6997 #pragma omp target 6998 #pragma omp teams distribute simd 6999 for (int i = 0; i < 10; ++i) { 7000 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7001 { 7002 #pragma omp single 7003 { 7004 bar(); 7005 } 7006 } 7007 } 7008 #pragma omp target 7009 #pragma omp teams distribute simd 7010 for (int i = 0; i < 10; ++i) { 7011 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7012 for (int i = 0; i < 10; ++i) 7013 ; 7014 } 7015 #pragma omp target 7016 #pragma omp teams distribute simd 7017 for (int i = 0; i < 10; ++i) { 7018 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7019 for (int i = 0; i < 10; ++i) 7020 ; 7021 } 7022 #pragma omp target 7023 #pragma omp teams distribute simd 7024 for (int i = 0; i < 10; ++i) { 7025 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7026 { 7027 bar(); 7028 } 7029 } 7030 #pragma omp target 7031 #pragma omp teams distribute simd 7032 for (int i = 0; i < 10; ++i) { 7033 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7034 { 7035 bar(); 7036 } 7037 } 7038 #pragma omp target 7039 #pragma omp teams distribute simd 7040 for (int i = 0; i < 10; ++i) { 7041 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7042 bar(); 7043 } 7044 #pragma omp target 7045 #pragma omp teams distribute simd 7046 for (int i = 0; i < 10; ++i) { 7047 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7048 bar(); 7049 } 7050 #pragma omp target 7051 #pragma omp teams distribute simd 7052 for (int i = 0; i < 10; ++i) { 7053 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7054 bar(); 7055 } 7056 #pragma omp target 7057 #pragma omp teams distribute simd 7058 for (int i = 0; i < 10; ++i) { 7059 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7060 bar(); 7061 } 7062 #pragma omp target 7063 #pragma omp teams distribute simd 7064 for (int i = 0; i < 10; ++i) { 7065 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7066 bar(); 7067 } 7068 #pragma omp target 7069 #pragma omp teams distribute simd 7070 for (int i = 0; i < 10; ++i) { 7071 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7072 ++a; 7073 } 7074 #pragma omp target 7075 #pragma omp teams distribute simd 7076 for (int i = 0; i < 10; ++i) { 7077 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7078 ++a; 7079 } 7080 #pragma omp target 7081 #pragma omp teams distribute simd 7082 for (int i = 0; i < 10; ++i) { 7083 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7084 ++a; 7085 } 7086 #pragma omp target 7087 #pragma omp teams distribute simd 7088 for (int i = 0; i < 10; ++i) { 7089 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7090 for (int i = 0; i < 10; ++i) 7091 ; 7092 } 7093 #pragma omp target 7094 #pragma omp teams distribute simd 7095 for (int i = 0; i < 10; ++i) { 7096 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7097 ++a; 7098 } 7099 #pragma omp target 7100 #pragma omp teams distribute simd 7101 for (int i = 0; i < 10; ++i) { 7102 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7103 ++a; 7104 } 7105 #pragma omp target 7106 #pragma omp teams distribute simd 7107 for (int i = 0; i < 10; ++i) { 7108 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7109 ++a; 7110 } 7111 #pragma omp target 7112 #pragma omp teams distribute simd 7113 for (int i = 0; i < 10; ++i) { 7114 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7115 ++a; 7116 } 7117 #pragma omp target 7118 #pragma omp teams distribute simd 7119 for (int i = 0; i < 10; ++i) { 7120 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7121 for (int i = 0; i < 10; ++i) 7122 ++a; 7123 } 7124 #pragma omp target 7125 #pragma omp teams distribute simd 7126 for (int i = 0; i < 10; ++i) { 7127 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7128 for (int i = 0; i < 10; ++i) 7129 ++a; 7130 } 7131 #pragma omp target 7132 #pragma omp teams distribute simd 7133 for (int i = 0; i < 10; ++i) { 7134 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7135 for (int i = 0; i < 10; ++i) 7136 ++a; 7137 } 7138 #pragma omp target 7139 #pragma omp teams distribute simd 7140 for (int i = 0; i < 10; ++i) { 7141 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7142 for (int i = 0; i < 10; ++i) 7143 ++a; 7144 } 7145 #pragma omp target 7146 #pragma omp teams distribute simd 7147 for (int i = 0; i < 10; ++i) { 7148 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7149 for (int i = 0; i < 10; ++i) 7150 ++a; 7151 } 7152 #pragma omp target 7153 #pragma omp teams distribute simd 7154 for (int i = 0; i < 10; ++i) { 7155 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7156 for (int i = 0; i < 10; ++i) 7157 ++a; 7158 } 7159 #pragma omp target 7160 #pragma omp teams distribute simd 7161 for (int i = 0; i < 10; ++i) { 7162 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7163 ++a; 7164 } 7165 #pragma omp target 7166 #pragma omp teams distribute simd 7167 for (int i = 0; i < 10; ++i) { 7168 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7169 for (int i = 0; i < 10; ++i) 7170 ++a; 7171 } 7172 #pragma omp target 7173 #pragma omp teams distribute simd 7174 for (int i = 0; i < 10; ++i) { 7175 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7176 for (int i = 0; i < 10; ++i) 7177 ++a; 7178 } 7179 #pragma omp target 7180 #pragma omp teams distribute simd 7181 for (int i = 0; i < 10; ++i) { 7182 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7183 for (int i = 0; i < 10; ++i) 7184 ++a; 7185 } 7186 #pragma omp target 7187 #pragma omp teams distribute simd 7188 for (int i = 0; i < 10; ++i) { 7189 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7190 for (int i = 0; i < 10; ++i) 7191 ++a; 7192 } 7193 7194 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 7195 #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?}} 7196 for (int i = 0; i < 10; ++i) 7197 ; 7198 #pragma omp target 7199 #pragma omp teams distribute parallel for simd 7200 for (int i = 0; i < 10; ++i) { 7201 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7202 for (int i = 0; i < 10; ++i) 7203 ; 7204 } 7205 #pragma omp target 7206 #pragma omp teams distribute parallel for simd 7207 for (int i = 0; i < 10; ++i) { 7208 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7209 for (int i = 0; i < 10; ++i) 7210 ; 7211 } 7212 #pragma omp target 7213 #pragma omp teams distribute parallel for simd 7214 for (int i = 0; i < 10; ++i) { 7215 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7216 for (int i = 0; i < 10; ++i) 7217 ; 7218 } 7219 #pragma omp target 7220 #pragma omp teams distribute parallel for simd 7221 for (int i = 0; i < 10; ++i) { 7222 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7223 for (int i = 0; i < 10; ++i) 7224 ; 7225 } 7226 #pragma omp target 7227 #pragma omp teams distribute parallel for simd 7228 for (int i = 0; i < 10; ++i) { 7229 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7230 for (int i = 0; i < 10; ++i) 7231 ; 7232 } 7233 #pragma omp target 7234 #pragma omp teams distribute parallel for simd 7235 for (int i = 0; i < 10; ++i) { 7236 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7237 for (int i = 0; i < 10; ++i) 7238 ; 7239 } 7240 #pragma omp target 7241 #pragma omp teams distribute parallel for simd 7242 for (int i = 0; i < 10; ++i) { 7243 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7244 { 7245 bar(); 7246 } 7247 } 7248 #pragma omp target 7249 #pragma omp teams distribute parallel for simd 7250 for (int i = 0; i < 10; ++i) { 7251 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7252 { 7253 bar(); 7254 } 7255 } 7256 #pragma omp target 7257 #pragma omp teams distribute parallel for simd 7258 for (int i = 0; i < 10; ++i) { 7259 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7260 { 7261 bar(); 7262 } 7263 } 7264 #pragma omp target 7265 #pragma omp teams distribute parallel for simd 7266 for (int i = 0; i < 10; ++i) { 7267 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7268 { 7269 bar(); 7270 } 7271 } 7272 #pragma omp target 7273 #pragma omp teams distribute parallel for simd 7274 for (int i = 0; i < 10; ++i) { 7275 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7276 { 7277 bar(); 7278 } 7279 } 7280 #pragma omp target 7281 #pragma omp teams distribute parallel for simd 7282 for (int i = 0; i < 10; ++i) { 7283 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7284 { 7285 #pragma omp single 7286 { 7287 bar(); 7288 } 7289 } 7290 } 7291 #pragma omp target 7292 #pragma omp teams distribute parallel for simd 7293 for (int i = 0; i < 10; ++i) { 7294 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7295 for (int i = 0; i < 10; ++i) 7296 ; 7297 } 7298 #pragma omp target 7299 #pragma omp teams distribute parallel for simd 7300 for (int i = 0; i < 10; ++i) { 7301 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7302 for (int i = 0; i < 10; ++i) 7303 ; 7304 } 7305 #pragma omp target 7306 #pragma omp teams distribute parallel for simd 7307 for (int i = 0; i < 10; ++i) { 7308 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7309 { 7310 bar(); 7311 } 7312 } 7313 #pragma omp target 7314 #pragma omp teams distribute parallel for simd 7315 for (int i = 0; i < 10; ++i) { 7316 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7317 { 7318 bar(); 7319 } 7320 } 7321 #pragma omp target 7322 #pragma omp teams distribute parallel for simd 7323 for (int i = 0; i < 10; ++i) { 7324 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7325 bar(); 7326 } 7327 #pragma omp target 7328 #pragma omp teams distribute parallel for simd 7329 for (int i = 0; i < 10; ++i) { 7330 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7331 bar(); 7332 } 7333 #pragma omp target 7334 #pragma omp teams distribute parallel for simd 7335 for (int i = 0; i < 10; ++i) { 7336 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7337 bar(); 7338 } 7339 #pragma omp target 7340 #pragma omp teams distribute parallel for simd 7341 for (int i = 0; i < 10; ++i) { 7342 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7343 bar(); 7344 } 7345 #pragma omp target 7346 #pragma omp teams distribute parallel for simd 7347 for (int i = 0; i < 10; ++i) { 7348 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7349 bar(); 7350 } 7351 #pragma omp target 7352 #pragma omp teams distribute parallel for simd 7353 for (int i = 0; i < 10; ++i) { 7354 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7355 ++a; 7356 } 7357 #pragma omp target 7358 #pragma omp teams distribute parallel for simd 7359 for (int i = 0; i < 10; ++i) { 7360 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7361 ++a; 7362 } 7363 #pragma omp target 7364 #pragma omp teams distribute parallel for simd 7365 for (int i = 0; i < 10; ++i) { 7366 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7367 ++a; 7368 } 7369 #pragma omp target 7370 #pragma omp teams distribute parallel for simd 7371 for (int i = 0; i < 10; ++i) { 7372 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7373 for (int i = 0; i < 10; ++i) 7374 ; 7375 } 7376 #pragma omp target 7377 #pragma omp teams distribute parallel for simd 7378 for (int i = 0; i < 10; ++i) { 7379 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7380 ++a; 7381 } 7382 #pragma omp target 7383 #pragma omp teams distribute parallel for simd 7384 for (int i = 0; i < 10; ++i) { 7385 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7386 ++a; 7387 } 7388 #pragma omp target 7389 #pragma omp teams distribute parallel for simd 7390 for (int i = 0; i < 10; ++i) { 7391 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7392 ++a; 7393 } 7394 #pragma omp target 7395 #pragma omp teams distribute parallel for simd 7396 for (int i = 0; i < 10; ++i) { 7397 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7398 ++a; 7399 } 7400 #pragma omp target 7401 #pragma omp teams distribute parallel for simd 7402 for (int i = 0; i < 10; ++i) { 7403 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7404 for (int i = 0; i < 10; ++i) 7405 ++a; 7406 } 7407 #pragma omp target 7408 #pragma omp teams distribute parallel for simd 7409 for (int i = 0; i < 10; ++i) { 7410 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7411 for (int i = 0; i < 10; ++i) 7412 ++a; 7413 } 7414 #pragma omp target 7415 #pragma omp teams distribute parallel for simd 7416 for (int i = 0; i < 10; ++i) { 7417 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7418 for (int i = 0; i < 10; ++i) 7419 ++a; 7420 } 7421 #pragma omp target 7422 #pragma omp teams distribute parallel for simd 7423 for (int i = 0; i < 10; ++i) { 7424 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7425 for (int i = 0; i < 10; ++i) 7426 ++a; 7427 } 7428 #pragma omp target 7429 #pragma omp teams distribute parallel for simd 7430 for (int i = 0; i < 10; ++i) { 7431 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7432 for (int i = 0; i < 10; ++i) 7433 ++a; 7434 } 7435 #pragma omp target 7436 #pragma omp teams distribute parallel for simd 7437 for (int i = 0; i < 10; ++i) { 7438 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7439 for (int i = 0; i < 10; ++i) 7440 ++a; 7441 } 7442 #pragma omp target 7443 #pragma omp teams distribute parallel for simd 7444 for (int i = 0; i < 10; ++i) { 7445 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7446 ++a; 7447 } 7448 #pragma omp target 7449 #pragma omp teams distribute parallel for simd 7450 for (int i = 0; i < 10; ++i) { 7451 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7452 for (int i = 0; i < 10; ++i) 7453 ++a; 7454 } 7455 #pragma omp target 7456 #pragma omp teams distribute parallel for simd 7457 for (int i = 0; i < 10; ++i) { 7458 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7459 for (int i = 0; i < 10; ++i) 7460 ++a; 7461 } 7462 #pragma omp target 7463 #pragma omp teams distribute parallel for simd 7464 for (int i = 0; i < 10; ++i) { 7465 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7466 for (int i = 0; i < 10; ++i) 7467 ++a; 7468 } 7469 #pragma omp target 7470 #pragma omp teams distribute parallel for simd 7471 for (int i = 0; i < 10; ++i) { 7472 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7473 for (int i = 0; i < 10; ++i) 7474 ++a; 7475 } 7476 7477 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 7478 #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?}} 7479 for (int i = 0; i < 10; ++i) 7480 ; 7481 #pragma omp target 7482 #pragma omp teams distribute parallel for 7483 for (int i = 0; i < 10; ++i) { 7484 #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?}} 7485 for (int i = 0; i < 10; ++i) 7486 ; 7487 } 7488 #pragma omp target 7489 #pragma omp teams distribute parallel for 7490 for (int i = 0; i < 10; ++i) { 7491 #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?}} 7492 for (int i = 0; i < 10; ++i) 7493 ; 7494 } 7495 #pragma omp target 7496 #pragma omp teams distribute parallel for 7497 for (int i = 0; i < 10; ++i) { 7498 #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?}} 7499 for (int i = 0; i < 10; ++i) 7500 ; 7501 } 7502 #pragma omp target 7503 #pragma omp teams distribute parallel for 7504 for (int i = 0; i < 10; ++i) { 7505 #pragma omp simd // OK 7506 for (int i = 0; i < 10; ++i) 7507 ; 7508 } 7509 #pragma omp target 7510 #pragma omp teams distribute parallel for 7511 for (int i = 0; i < 10; ++i) { 7512 #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?}} 7513 for (int i = 0; i < 10; ++i) 7514 ; 7515 } 7516 #pragma omp target 7517 #pragma omp teams distribute parallel for 7518 for (int i = 0; i < 10; ++i) { 7519 #pragma omp parallel // OK 7520 for (int i = 0; i < 10; ++i) 7521 ; 7522 } 7523 #pragma omp target 7524 #pragma omp teams distribute parallel for 7525 for (int i = 0; i < 10; ++i) { 7526 #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?}} 7527 { 7528 bar(); 7529 } 7530 } 7531 #pragma omp target 7532 #pragma omp teams distribute parallel for 7533 for (int i = 0; i < 10; ++i) { 7534 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 7535 { 7536 bar(); 7537 } 7538 } 7539 #pragma omp target 7540 #pragma omp teams distribute parallel for 7541 for (int i = 0; i < 10; ++i) { 7542 #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?}} 7543 { 7544 bar(); 7545 } 7546 } 7547 #pragma omp target 7548 #pragma omp teams distribute parallel for 7549 for (int i = 0; i < 10; ++i) { 7550 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7551 { 7552 bar(); 7553 } 7554 } 7555 #pragma omp target 7556 #pragma omp teams distribute parallel for 7557 for (int i = 0; i < 10; ++i) { 7558 #pragma omp critical // OK 7559 { 7560 bar(); 7561 } 7562 } 7563 #pragma omp target 7564 #pragma omp teams distribute parallel for 7565 for (int i = 0; i < 10; ++i) { 7566 #pragma omp parallel // OK 7567 { 7568 #pragma omp single 7569 { 7570 bar(); 7571 } 7572 } 7573 } 7574 #pragma omp target 7575 #pragma omp teams distribute parallel for 7576 for (int i = 0; i < 10; ++i) { 7577 #pragma omp parallel for // OK 7578 for (int i = 0; i < 10; ++i) 7579 ; 7580 } 7581 #pragma omp target 7582 #pragma omp teams distribute parallel for 7583 for (int i = 0; i < 10; ++i) { 7584 #pragma omp parallel for simd // OK 7585 for (int i = 0; i < 10; ++i) 7586 ; 7587 } 7588 #pragma omp target 7589 #pragma omp teams distribute parallel for 7590 for (int i = 0; i < 10; ++i) { 7591 #pragma omp parallel sections // OK 7592 { 7593 bar(); 7594 } 7595 } 7596 #pragma omp target 7597 #pragma omp teams distribute parallel for 7598 for (int i = 0; i < 10; ++i) { 7599 #pragma omp task // OK 7600 { 7601 bar(); 7602 } 7603 } 7604 #pragma omp target 7605 #pragma omp teams distribute parallel for 7606 for (int i = 0; i < 10; ++i) { 7607 #pragma omp taskyield // OK 7608 bar(); 7609 } 7610 #pragma omp target 7611 #pragma omp teams distribute parallel for 7612 for (int i = 0; i < 10; ++i) { 7613 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 7614 bar(); 7615 } 7616 #pragma omp target 7617 #pragma omp teams distribute parallel for 7618 for (int i = 0; i < 10; ++i) { 7619 #pragma omp taskwait // OK 7620 bar(); 7621 } 7622 #pragma omp target 7623 #pragma omp teams distribute parallel for 7624 for (int i = 0; i < 10; ++i) { 7625 #pragma omp flush // OK 7626 bar(); 7627 } 7628 #pragma omp target 7629 #pragma omp teams distribute parallel for 7630 for (int i = 0; i < 10; ++i) { 7631 #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?}} 7632 bar(); 7633 } 7634 #pragma omp target 7635 #pragma omp teams distribute parallel for 7636 for (int i = 0; i < 10; ++i) { 7637 #pragma omp atomic // OK 7638 ++a; 7639 } 7640 #pragma omp target 7641 #pragma omp teams distribute parallel for 7642 for (int i = 0; i < 10; ++i) { 7643 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 7644 ++a; 7645 } 7646 #pragma omp target 7647 #pragma omp teams distribute parallel for 7648 for (int i = 0; i < 10; ++i) { 7649 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 7650 ++a; 7651 } 7652 #pragma omp target 7653 #pragma omp teams distribute parallel for 7654 for (int i = 0; i < 10; ++i) { 7655 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 7656 for (int i = 0; i < 10; ++i) 7657 ; 7658 } 7659 #pragma omp target 7660 #pragma omp teams distribute parallel for 7661 for (int i = 0; i < 10; ++i) { 7662 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 7663 ++a; 7664 } 7665 #pragma omp target 7666 #pragma omp teams distribute parallel for 7667 for (int i = 0; i < 10; ++i) { 7668 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 7669 ++a; 7670 } 7671 #pragma omp target 7672 #pragma omp teams distribute parallel for 7673 for (int i = 0; i < 10; ++i) { 7674 #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?}} 7675 ++a; 7676 } 7677 #pragma omp target 7678 #pragma omp teams distribute parallel for 7679 for (int i = 0; i < 10; ++i) { 7680 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 7681 ++a; 7682 } 7683 #pragma omp target 7684 #pragma omp teams distribute parallel for 7685 for (int i = 0; i < 10; ++i) { 7686 #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?}} 7687 for (int i = 0; i < 10; ++i) 7688 ++a; 7689 } 7690 #pragma omp target 7691 #pragma omp teams distribute parallel for 7692 for (int i = 0; i < 10; ++i) { 7693 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 7694 for (int i = 0; i < 10; ++i) 7695 ++a; 7696 } 7697 #pragma omp target 7698 #pragma omp teams distribute parallel for 7699 for (int i = 0; i < 10; ++i) { 7700 #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?}} 7701 for (int i = 0; i < 10; ++i) 7702 ++a; 7703 } 7704 #pragma omp target 7705 #pragma omp teams distribute parallel for 7706 for (int i = 0; i < 10; ++i) { 7707 #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?}} 7708 for (int i = 0; i < 10; ++i) 7709 ++a; 7710 } 7711 #pragma omp target 7712 #pragma omp teams distribute parallel for 7713 for (int i = 0; i < 10; ++i) { 7714 #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?}} 7715 for (int i = 0; i < 10; ++i) 7716 ++a; 7717 } 7718 #pragma omp target 7719 #pragma omp teams distribute parallel for 7720 for (int i = 0; i < 10; ++i) { 7721 #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?}} 7722 for (int i = 0; i < 10; ++i) 7723 ++a; 7724 } 7725 #pragma omp target 7726 #pragma omp teams distribute parallel for 7727 for (int i = 0; i < 10; ++i) { 7728 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7729 ++a; 7730 } 7731 #pragma omp target 7732 #pragma omp teams distribute parallel for 7733 for (int i = 0; i < 10; ++i) { 7734 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 7735 for (int i = 0; i < 10; ++i) 7736 ++a; 7737 } 7738 #pragma omp target 7739 #pragma omp teams distribute parallel for 7740 for (int i = 0; i < 10; ++i) { 7741 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 7742 for (int i = 0; i < 10; ++i) 7743 ++a; 7744 } 7745 #pragma omp target 7746 #pragma omp teams distribute parallel for 7747 for (int i = 0; i < 10; ++i) { 7748 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 7749 for (int i = 0; i < 10; ++i) 7750 ++a; 7751 } 7752 #pragma omp target 7753 #pragma omp teams distribute parallel for 7754 for (int i = 0; i < 10; ++i) { 7755 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 7756 for (int i = 0; i < 10; ++i) 7757 ++a; 7758 } 7759 7760 // TARGET TEAMS DIRECTIVE 7761 #pragma omp target teams 7762 #pragma omp parallel 7763 bar(); 7764 #pragma omp target teams 7765 #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?}} 7766 for (int i = 0; i < 10; ++i) 7767 ; 7768 #pragma omp target teams 7769 #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?}} 7770 for (int i = 0; i < 10; ++i) 7771 ; 7772 #pragma omp target teams 7773 #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?}} 7774 for (int i = 0; i < 10; ++i) 7775 ; 7776 #pragma omp target teams 7777 #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?}} 7778 { 7779 bar(); 7780 } 7781 #pragma omp target teams 7782 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 7783 { 7784 bar(); 7785 } 7786 #pragma omp target teams 7787 #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?}} 7788 bar(); 7789 7790 #pragma omp target teams 7791 #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?}} 7792 { 7793 bar(); 7794 } 7795 #pragma omp target teams 7796 #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?}} 7797 { 7798 bar(); 7799 } 7800 #pragma omp target teams 7801 #pragma omp parallel for 7802 for (int i = 0; i < 10; ++i) 7803 ; 7804 #pragma omp target teams 7805 #pragma omp parallel for simd 7806 for (int i = 0; i < 10; ++i) 7807 ; 7808 #pragma omp target teams 7809 #pragma omp parallel sections 7810 { 7811 bar(); 7812 } 7813 #pragma omp target teams 7814 #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?}} 7815 { 7816 bar(); 7817 } 7818 #pragma omp target teams 7819 { 7820 #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?}} 7821 bar(); 7822 } 7823 #pragma omp target teams 7824 { 7825 #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?}} 7826 bar(); 7827 } 7828 #pragma omp target teams 7829 { 7830 #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?}} 7831 bar(); 7832 } 7833 #pragma omp target teams 7834 { 7835 #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?}} 7836 bar(); 7837 } 7838 #pragma omp target teams 7839 { 7840 #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?}} 7841 bar(); 7842 } 7843 #pragma omp target teams 7844 { 7845 #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?}} 7846 ++a; 7847 } 7848 #pragma omp target teams 7849 { 7850 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 7851 ++a; 7852 } 7853 #pragma omp target teams 7854 { 7855 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 7856 ++a; 7857 } 7858 #pragma omp target teams 7859 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 7860 for (int i = 0; i < 10; ++i) 7861 ; 7862 #pragma omp target teams 7863 { 7864 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 7865 } 7866 #pragma omp target teams 7867 { 7868 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 7869 } 7870 #pragma omp target teams 7871 { 7872 #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?}} 7873 ++a; 7874 } 7875 #pragma omp target teams 7876 { 7877 #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?}} 7878 for (int i = 0; i < 10; ++i) 7879 ++a; 7880 } 7881 #pragma omp target teams 7882 #pragma omp distribute 7883 for (int i = 0; i < 10; ++i) 7884 ; 7885 #pragma omp target teams 7886 { 7887 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 7888 ++a; 7889 } 7890 #pragma omp target teams 7891 #pragma omp distribute parallel for 7892 for (int i = 0; i < 10; ++i) 7893 ; 7894 #pragma omp target teams 7895 { 7896 #pragma omp distribute parallel for 7897 for (int i = 0; i < 10; ++i) 7898 ; 7899 #pragma omp distribute parallel for 7900 for (int j = 0; j < 10; ++j) 7901 ; 7902 } 7903 #pragma omp target teams 7904 { 7905 #pragma omp distribute parallel for simd 7906 for (int i = 0; i < 10; ++i) 7907 ; 7908 #pragma omp distribute parallel for simd 7909 for (int j = 0; j < 10; ++j) 7910 ; 7911 } 7912 #pragma omp target teams 7913 { 7914 #pragma omp distribute simd 7915 for (int i = 0; i < 10; ++i) 7916 ; 7917 #pragma omp distribute simd 7918 for (int j = 0; j < 10; ++j) 7919 ; 7920 } 7921 #pragma omp target teams 7922 { 7923 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 7924 for (int i = 0; i < 10; ++i) 7925 ; 7926 } 7927 #pragma omp target teams 7928 { 7929 #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?}} 7930 for (int i = 0; i < 10; ++i) 7931 ; 7932 } 7933 #pragma omp target teams 7934 { 7935 #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?}} 7936 for (int i = 0; i < 10; ++i) 7937 ; 7938 } 7939 #pragma omp target teams 7940 { 7941 #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?}} 7942 for (int i = 0; i < 10; ++i) 7943 ; 7944 } 7945 #pragma omp target teams 7946 { 7947 #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?}} 7948 for (int i = 0; i < 10; ++i) 7949 ; 7950 } 7951 #pragma omp target teams 7952 { 7953 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 7954 a++; 7955 } 7956 #pragma omp target teams 7957 { 7958 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 7959 for (int i = 0; i < 10; ++i) 7960 ; 7961 } 7962 #pragma omp target teams 7963 { 7964 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 7965 for (int i = 0; i < 10; ++i) 7966 ; 7967 } 7968 #pragma omp target teams 7969 { 7970 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 7971 for (int i = 0; i < 10; ++i) 7972 ; 7973 } 7974 #pragma omp target teams 7975 { 7976 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 7977 for (int i = 0; i < 10; ++i) 7978 ; 7979 } 7980 7981 // TARGET TEAMS DISTRIBUTE DIRECTIVE 7982 #pragma omp target teams distribute // OK 7983 for (int i = 0; i < 10; ++i) 7984 ; 7985 #pragma omp target teams distribute 7986 for (int i = 0; i < 10; ++i) { 7987 #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?}} 7988 for (int i = 0; i < 10; ++i) 7989 ; 7990 } 7991 #pragma omp target teams distribute 7992 for (int i = 0; i < 10; ++i) { 7993 #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?}} 7994 for (int i = 0; i < 10; ++i) 7995 ; 7996 } 7997 #pragma omp target teams distribute 7998 for (int i = 0; i < 10; ++i) { 7999 #pragma omp for // OK 8000 for (int i = 0; i < 10; ++i) 8001 ; 8002 } 8003 #pragma omp target teams distribute 8004 for (int i = 0; i < 10; ++i) { 8005 #pragma omp simd // OK 8006 for (int i = 0; i < 10; ++i) 8007 ; 8008 } 8009 #pragma omp target teams distribute 8010 for (int i = 0; i < 10; ++i) { 8011 #pragma omp for simd // OK 8012 for (int i = 0; i < 10; ++i) 8013 ; 8014 } 8015 #pragma omp target teams distribute 8016 for (int i = 0; i < 10; ++i) { 8017 #pragma omp parallel // OK 8018 for (int i = 0; i < 10; ++i) 8019 ; 8020 } 8021 #pragma omp target teams distribute 8022 for (int i = 0; i < 10; ++i) { 8023 #pragma omp sections // OK 8024 { 8025 bar(); 8026 } 8027 } 8028 #pragma omp target teams distribute 8029 for (int i = 0; i < 10; ++i) { 8030 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 8031 { 8032 bar(); 8033 } 8034 } 8035 #pragma omp target teams distribute 8036 for (int i = 0; i < 10; ++i) { 8037 #pragma omp single // OK 8038 { 8039 bar(); 8040 } 8041 } 8042 #pragma omp target teams distribute 8043 for (int i = 0; i < 10; ++i) { 8044 #pragma omp master // OK 8045 { 8046 bar(); 8047 } 8048 } 8049 #pragma omp target teams distribute 8050 for (int i = 0; i < 10; ++i) { 8051 #pragma omp critical // OK 8052 { 8053 bar(); 8054 } 8055 } 8056 #pragma omp target teams distribute 8057 for (int i = 0; i < 10; ++i) { 8058 #pragma omp parallel // OK 8059 { 8060 #pragma omp single 8061 { 8062 bar(); 8063 } 8064 } 8065 } 8066 #pragma omp target teams distribute 8067 for (int i = 0; i < 10; ++i) { 8068 #pragma omp parallel for // OK 8069 for (int i = 0; i < 10; ++i) 8070 ; 8071 } 8072 #pragma omp target teams distribute 8073 for (int i = 0; i < 10; ++i) { 8074 #pragma omp parallel for simd // OK 8075 for (int i = 0; i < 10; ++i) 8076 ; 8077 } 8078 #pragma omp target teams distribute 8079 for (int i = 0; i < 10; ++i) { 8080 #pragma omp parallel sections // OK 8081 { 8082 bar(); 8083 } 8084 } 8085 #pragma omp target teams distribute 8086 for (int i = 0; i < 10; ++i) { 8087 #pragma omp task // OK 8088 { 8089 bar(); 8090 } 8091 } 8092 #pragma omp target teams distribute 8093 for (int i = 0; i < 10; ++i) { 8094 #pragma omp taskyield // OK 8095 bar(); 8096 } 8097 #pragma omp target teams distribute 8098 for (int i = 0; i < 10; ++i) { 8099 #pragma omp barrier // OK 8100 bar(); 8101 } 8102 #pragma omp target teams distribute 8103 for (int i = 0; i < 10; ++i) { 8104 #pragma omp taskwait // OK 8105 bar(); 8106 } 8107 #pragma omp target teams distribute 8108 for (int i = 0; i < 10; ++i) { 8109 #pragma omp flush // OK 8110 bar(); 8111 } 8112 #pragma omp target teams distribute 8113 for (int i = 0; i < 10; ++i) { 8114 #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?}} 8115 bar(); 8116 } 8117 #pragma omp target teams distribute 8118 for (int i = 0; i < 10; ++i) { 8119 #pragma omp atomic // OK 8120 ++a; 8121 } 8122 #pragma omp target teams distribute 8123 for (int i = 0; i < 10; ++i) { 8124 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8125 ++a; 8126 } 8127 #pragma omp target teams distribute 8128 for (int i = 0; i < 10; ++i) { 8129 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8130 ++a; 8131 } 8132 #pragma omp target teams distribute 8133 for (int i = 0; i < 10; ++i) { 8134 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8135 for (int i = 0; i < 10; ++i) 8136 ; 8137 } 8138 #pragma omp target teams distribute 8139 for (int i = 0; i < 10; ++i) { 8140 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8141 ++a; 8142 } 8143 #pragma omp target teams distribute 8144 for (int i = 0; i < 10; ++i) { 8145 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8146 ++a; 8147 } 8148 #pragma omp target teams distribute 8149 for (int i = 0; i < 10; ++i) { 8150 #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?}} 8151 ++a; 8152 } 8153 #pragma omp target teams distribute 8154 for (int i = 0; i < 10; ++i) { 8155 #pragma omp target update to(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 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?}} 8161 for (int i = 0; i < 10; ++i) 8162 ++a; 8163 } 8164 #pragma omp target teams distribute 8165 for (int i = 0; i < 10; ++i) { 8166 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8167 for (int i = 0; i < 10; ++i) 8168 ++a; 8169 } 8170 #pragma omp target teams distribute 8171 for (int i = 0; i < 10; ++i) { 8172 #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?}} 8173 for (int i = 0; i < 10; ++i) 8174 ++a; 8175 } 8176 #pragma omp target teams distribute 8177 for (int i = 0; i < 10; ++i) { 8178 #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?}} 8179 for (int i = 0; i < 10; ++i) 8180 ++a; 8181 } 8182 #pragma omp target teams distribute 8183 for (int i = 0; i < 10; ++i) { 8184 #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?}} 8185 for (int i = 0; i < 10; ++i) 8186 ++a; 8187 } 8188 #pragma omp target teams distribute 8189 for (int i = 0; i < 10; ++i) { 8190 #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?}} 8191 for (int i = 0; i < 10; ++i) 8192 ; 8193 } 8194 #pragma omp target teams distribute 8195 for (int i = 0; i < 10; ++i) { 8196 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8197 a++; 8198 } 8199 #pragma omp target teams distribute 8200 for (int i = 0; i < 10; ++i) { 8201 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8202 for (int i = 0; i < 10; ++i) 8203 ; 8204 } 8205 #pragma omp target teams distribute 8206 for (int i = 0; i < 10; ++i) { 8207 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8208 for (int i = 0; i < 10; ++i) 8209 ; 8210 } 8211 #pragma omp target teams distribute 8212 for (int i = 0; i < 10; ++i) { 8213 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8214 for (int i = 0; i < 10; ++i) 8215 ; 8216 } 8217 #pragma omp target teams distribute 8218 for (int i = 0; i < 10; ++i) { 8219 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 8220 for (int i = 0; i < 10; ++i) 8221 ; 8222 } 8223 8224 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 8225 #pragma omp target teams distribute parallel for // OK 8226 for (int i = 0; i < 10; ++i) 8227 ; 8228 #pragma omp target teams distribute parallel for 8229 for (int i = 0; i < 10; ++i) { 8230 #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?}} 8231 for (int i = 0; i < 10; ++i) 8232 ; 8233 } 8234 #pragma omp target teams distribute parallel for 8235 for (int i = 0; i < 10; ++i) { 8236 #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?}} 8237 for (int i = 0; i < 10; ++i) 8238 ; 8239 } 8240 #pragma omp target teams distribute parallel for 8241 for (int i = 0; i < 10; ++i) { 8242 #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?}} 8243 for (int i = 0; i < 10; ++i) 8244 ; 8245 } 8246 #pragma omp target teams distribute parallel for 8247 for (int i = 0; i < 10; ++i) { 8248 #pragma omp simd // OK 8249 for (int i = 0; i < 10; ++i) 8250 ; 8251 } 8252 #pragma omp target teams distribute parallel for 8253 for (int i = 0; i < 10; ++i) { 8254 #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?}} 8255 for (int i = 0; i < 10; ++i) 8256 ; 8257 } 8258 #pragma omp target teams distribute parallel for 8259 for (int i = 0; i < 10; ++i) { 8260 #pragma omp parallel // OK 8261 for (int i = 0; i < 10; ++i) 8262 ; 8263 } 8264 #pragma omp target teams distribute parallel for 8265 for (int i = 0; i < 10; ++i) { 8266 #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?}} 8267 { 8268 bar(); 8269 } 8270 } 8271 #pragma omp target teams distribute parallel for 8272 for (int i = 0; i < 10; ++i) { 8273 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 8274 { 8275 bar(); 8276 } 8277 } 8278 #pragma omp target teams distribute parallel for 8279 for (int i = 0; i < 10; ++i) { 8280 #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?}} 8281 { 8282 bar(); 8283 } 8284 } 8285 #pragma omp target teams distribute parallel for 8286 for (int i = 0; i < 10; ++i) { 8287 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8288 { 8289 bar(); 8290 } 8291 } 8292 #pragma omp target teams distribute parallel for 8293 for (int i = 0; i < 10; ++i) { 8294 #pragma omp critical // OK 8295 { 8296 bar(); 8297 } 8298 } 8299 #pragma omp target teams distribute parallel for 8300 for (int i = 0; i < 10; ++i) { 8301 #pragma omp parallel // OK 8302 { 8303 #pragma omp single 8304 { 8305 bar(); 8306 } 8307 } 8308 } 8309 #pragma omp target teams distribute parallel for 8310 for (int i = 0; i < 10; ++i) { 8311 #pragma omp parallel for // OK 8312 for (int i = 0; i < 10; ++i) 8313 ; 8314 } 8315 #pragma omp target teams distribute parallel for 8316 for (int i = 0; i < 10; ++i) { 8317 #pragma omp parallel for simd // OK 8318 for (int i = 0; i < 10; ++i) 8319 ; 8320 } 8321 #pragma omp target teams distribute parallel for 8322 for (int i = 0; i < 10; ++i) { 8323 #pragma omp parallel sections // OK 8324 { 8325 bar(); 8326 } 8327 } 8328 #pragma omp target teams distribute parallel for 8329 for (int i = 0; i < 10; ++i) { 8330 #pragma omp task // OK 8331 { 8332 bar(); 8333 } 8334 } 8335 #pragma omp target teams distribute parallel for 8336 for (int i = 0; i < 10; ++i) { 8337 #pragma omp taskyield // OK 8338 bar(); 8339 } 8340 #pragma omp target teams distribute parallel for 8341 for (int i = 0; i < 10; ++i) { 8342 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 8343 bar(); 8344 } 8345 #pragma omp target teams distribute parallel for 8346 for (int i = 0; i < 10; ++i) { 8347 #pragma omp taskwait // OK 8348 bar(); 8349 } 8350 #pragma omp target teams distribute parallel for 8351 for (int i = 0; i < 10; ++i) { 8352 #pragma omp flush // OK 8353 bar(); 8354 } 8355 #pragma omp target teams distribute parallel for 8356 for (int i = 0; i < 10; ++i) { 8357 #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?}} 8358 bar(); 8359 } 8360 #pragma omp target teams distribute parallel for 8361 for (int i = 0; i < 10; ++i) { 8362 #pragma omp atomic // OK 8363 ++a; 8364 } 8365 #pragma omp target teams distribute parallel for 8366 for (int i = 0; i < 10; ++i) { 8367 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8368 ++a; 8369 } 8370 #pragma omp target teams distribute parallel for 8371 for (int i = 0; i < 10; ++i) { 8372 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8373 ++a; 8374 } 8375 #pragma omp target teams distribute parallel for 8376 for (int i = 0; i < 10; ++i) { 8377 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8378 for (int i = 0; i < 10; ++i) 8379 ; 8380 } 8381 #pragma omp target teams distribute parallel for 8382 for (int i = 0; i < 10; ++i) { 8383 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8384 ++a; 8385 } 8386 #pragma omp target teams distribute parallel for 8387 for (int i = 0; i < 10; ++i) { 8388 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8389 ++a; 8390 } 8391 #pragma omp target teams distribute parallel for 8392 for (int i = 0; i < 10; ++i) { 8393 #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?}} 8394 ++a; 8395 } 8396 #pragma omp target teams distribute parallel for 8397 for (int i = 0; i < 10; ++i) { 8398 #pragma omp target update to(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 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?}} 8404 for (int i = 0; i < 10; ++i) 8405 ++a; 8406 } 8407 #pragma omp target teams distribute parallel for 8408 for (int i = 0; i < 10; ++i) { 8409 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8410 for (int i = 0; i < 10; ++i) 8411 ++a; 8412 } 8413 #pragma omp target teams distribute parallel for 8414 for (int i = 0; i < 10; ++i) { 8415 #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?}} 8416 for (int i = 0; i < 10; ++i) 8417 ++a; 8418 } 8419 #pragma omp target teams distribute parallel for 8420 for (int i = 0; i < 10; ++i) { 8421 #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?}} 8422 for (int i = 0; i < 10; ++i) 8423 ++a; 8424 } 8425 #pragma omp target teams distribute parallel for 8426 for (int i = 0; i < 10; ++i) { 8427 #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?}} 8428 for (int i = 0; i < 10; ++i) 8429 ++a; 8430 } 8431 #pragma omp target teams distribute parallel for 8432 for (int i = 0; i < 10; ++i) { 8433 #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?}} 8434 for (int i = 0; i < 10; ++i) 8435 ; 8436 } 8437 #pragma omp target teams distribute parallel for 8438 for (int i = 0; i < 10; ++i) { 8439 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8440 a++; 8441 } 8442 #pragma omp target teams distribute parallel for 8443 for (int i = 0; i < 10; ++i) { 8444 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8445 for (int i = 0; i < 10; ++i) 8446 ; 8447 } 8448 #pragma omp target teams distribute parallel for 8449 for (int i = 0; i < 10; ++i) { 8450 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8451 for (int i = 0; i < 10; ++i) 8452 ; 8453 } 8454 #pragma omp target teams distribute parallel for 8455 for (int i = 0; i < 10; ++i) { 8456 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8457 for (int i = 0; i < 10; ++i) 8458 ; 8459 } 8460 #pragma omp target teams distribute parallel for 8461 for (int i = 0; i < 10; ++i) { 8462 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 8463 for (int i = 0; i < 10; ++i) 8464 ; 8465 } 8466 8467 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 8468 #pragma omp target teams distribute parallel for simd // OK 8469 for (int i = 0; i < 10; ++i) 8470 ; 8471 #pragma omp target teams distribute parallel for simd 8472 for (int i = 0; i < 10; ++i) { 8473 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8474 for (int i = 0; i < 10; ++i) 8475 ; 8476 } 8477 #pragma omp target teams distribute parallel for simd 8478 for (int i = 0; i < 10; ++i) { 8479 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8480 for (int i = 0; i < 10; ++i) 8481 ; 8482 } 8483 #pragma omp target teams distribute parallel for simd 8484 for (int i = 0; i < 10; ++i) { 8485 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8486 for (int i = 0; i < 10; ++i) 8487 ; 8488 } 8489 #pragma omp target teams distribute parallel for simd 8490 for (int i = 0; i < 10; ++i) { 8491 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8492 for (int i = 0; i < 10; ++i) 8493 ; 8494 } 8495 #pragma omp target teams distribute parallel for simd 8496 for (int i = 0; i < 10; ++i) { 8497 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8498 for (int i = 0; i < 10; ++i) 8499 ; 8500 } 8501 #pragma omp target teams distribute parallel for simd 8502 for (int i = 0; i < 10; ++i) { 8503 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8504 for (int i = 0; i < 10; ++i) 8505 ; 8506 } 8507 #pragma omp target teams distribute parallel for simd 8508 for (int i = 0; i < 10; ++i) { 8509 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8510 { 8511 bar(); 8512 } 8513 } 8514 #pragma omp target teams distribute parallel for simd 8515 for (int i = 0; i < 10; ++i) { 8516 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8517 { 8518 bar(); 8519 } 8520 } 8521 #pragma omp target teams distribute parallel for simd 8522 for (int i = 0; i < 10; ++i) { 8523 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8524 { 8525 bar(); 8526 } 8527 } 8528 #pragma omp target teams distribute parallel for simd 8529 for (int i = 0; i < 10; ++i) { 8530 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8531 { 8532 bar(); 8533 } 8534 } 8535 #pragma omp target teams distribute parallel for simd 8536 for (int i = 0; i < 10; ++i) { 8537 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8538 { 8539 bar(); 8540 } 8541 } 8542 #pragma omp target teams distribute parallel for simd 8543 for (int i = 0; i < 10; ++i) { 8544 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8545 { 8546 #pragma omp single 8547 { 8548 bar(); 8549 } 8550 } 8551 } 8552 #pragma omp target teams distribute parallel for simd 8553 for (int i = 0; i < 10; ++i) { 8554 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8555 for (int i = 0; i < 10; ++i) 8556 ; 8557 } 8558 #pragma omp target teams distribute parallel for simd 8559 for (int i = 0; i < 10; ++i) { 8560 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8561 for (int i = 0; i < 10; ++i) 8562 ; 8563 } 8564 #pragma omp target teams distribute parallel for simd 8565 for (int i = 0; i < 10; ++i) { 8566 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8567 { 8568 bar(); 8569 } 8570 } 8571 #pragma omp target teams distribute parallel for simd 8572 for (int i = 0; i < 10; ++i) { 8573 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8574 { 8575 bar(); 8576 } 8577 } 8578 #pragma omp target teams distribute parallel for simd 8579 for (int i = 0; i < 10; ++i) { 8580 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8581 bar(); 8582 } 8583 #pragma omp target teams distribute parallel for simd 8584 for (int i = 0; i < 10; ++i) { 8585 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8586 bar(); 8587 } 8588 #pragma omp target teams distribute parallel for simd 8589 for (int i = 0; i < 10; ++i) { 8590 #pragma omp taskwait // 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 flush // 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 ordered // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 8606 ++a; 8607 } 8608 #pragma omp target teams distribute parallel for simd 8609 for (int i = 0; i < 10; ++i) { 8610 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8611 ++a; 8612 } 8613 #pragma omp target teams distribute parallel for simd 8614 for (int i = 0; i < 10; ++i) { 8615 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8616 ++a; 8617 } 8618 #pragma omp target teams distribute parallel for simd 8619 for (int i = 0; i < 10; ++i) { 8620 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8621 for (int i = 0; i < 10; ++i) 8622 ; 8623 } 8624 #pragma omp target teams distribute parallel for simd 8625 for (int i = 0; i < 10; ++i) { 8626 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8627 ++a; 8628 } 8629 #pragma omp target teams distribute parallel for simd 8630 for (int i = 0; i < 10; ++i) { 8631 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8632 ++a; 8633 } 8634 #pragma omp target teams distribute parallel for simd 8635 for (int i = 0; i < 10; ++i) { 8636 #pragma omp teams // 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 update to(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 distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8647 for (int i = 0; i < 10; ++i) 8648 ++a; 8649 } 8650 #pragma omp target teams distribute parallel for simd 8651 for (int i = 0; i < 10; ++i) { 8652 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8653 for (int i = 0; i < 10; ++i) 8654 ++a; 8655 } 8656 #pragma omp target teams distribute parallel for simd 8657 for (int i = 0; i < 10; ++i) { 8658 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8659 for (int i = 0; i < 10; ++i) 8660 ++a; 8661 } 8662 #pragma omp target teams distribute parallel for simd 8663 for (int i = 0; i < 10; ++i) { 8664 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8665 for (int i = 0; i < 10; ++i) 8666 ++a; 8667 } 8668 #pragma omp target teams distribute parallel for simd 8669 for (int i = 0; i < 10; ++i) { 8670 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8671 for (int i = 0; i < 10; ++i) 8672 ++a; 8673 } 8674 #pragma omp target teams distribute parallel for simd 8675 for (int i = 0; i < 10; ++i) { 8676 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8677 for (int i = 0; i < 10; ++i) 8678 ; 8679 } 8680 #pragma omp target teams distribute parallel for simd 8681 for (int i = 0; i < 10; ++i) { 8682 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8683 a++; 8684 } 8685 #pragma omp target teams distribute parallel for simd 8686 for (int i = 0; i < 10; ++i) { 8687 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8688 for (int i = 0; i < 10; ++i) 8689 ; 8690 } 8691 #pragma omp target teams distribute parallel for simd 8692 for (int i = 0; i < 10; ++i) { 8693 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8694 for (int i = 0; i < 10; ++i) 8695 ; 8696 } 8697 #pragma omp target teams distribute parallel for simd 8698 for (int i = 0; i < 10; ++i) { 8699 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8700 for (int i = 0; i < 10; ++i) 8701 ; 8702 } 8703 #pragma omp target teams distribute parallel for simd 8704 for (int i = 0; i < 10; ++i) { 8705 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8706 for (int i = 0; i < 10; ++i) 8707 ; 8708 } 8709 8710 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 8711 #pragma omp target teams distribute simd // OK 8712 for (int i = 0; i < 10; ++i) 8713 ; 8714 #pragma omp target teams distribute simd 8715 for (int i = 0; i < 10; ++i) { 8716 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8717 for (int i = 0; i < 10; ++i) 8718 ; 8719 } 8720 #pragma omp target teams distribute simd 8721 for (int i = 0; i < 10; ++i) { 8722 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8723 for (int i = 0; i < 10; ++i) 8724 ; 8725 } 8726 #pragma omp target teams distribute simd 8727 for (int i = 0; i < 10; ++i) { 8728 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8729 for (int i = 0; i < 10; ++i) 8730 ; 8731 } 8732 #pragma omp target teams distribute simd 8733 for (int i = 0; i < 10; ++i) { 8734 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8735 for (int i = 0; i < 10; ++i) 8736 ; 8737 } 8738 #pragma omp target teams distribute simd 8739 for (int i = 0; i < 10; ++i) { 8740 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8741 for (int i = 0; i < 10; ++i) 8742 ; 8743 } 8744 #pragma omp target teams distribute simd 8745 for (int i = 0; i < 10; ++i) { 8746 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8747 for (int i = 0; i < 10; ++i) 8748 ; 8749 } 8750 #pragma omp target teams distribute simd 8751 for (int i = 0; i < 10; ++i) { 8752 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8753 { 8754 bar(); 8755 } 8756 } 8757 #pragma omp target teams distribute simd 8758 for (int i = 0; i < 10; ++i) { 8759 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8760 { 8761 bar(); 8762 } 8763 } 8764 #pragma omp target teams distribute simd 8765 for (int i = 0; i < 10; ++i) { 8766 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8767 { 8768 bar(); 8769 } 8770 } 8771 #pragma omp target teams distribute simd 8772 for (int i = 0; i < 10; ++i) { 8773 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8774 { 8775 bar(); 8776 } 8777 } 8778 #pragma omp target teams distribute simd 8779 for (int i = 0; i < 10; ++i) { 8780 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8781 { 8782 bar(); 8783 } 8784 } 8785 #pragma omp target teams distribute simd 8786 for (int i = 0; i < 10; ++i) { 8787 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8788 { 8789 #pragma omp single 8790 { 8791 bar(); 8792 } 8793 } 8794 } 8795 #pragma omp target teams distribute simd 8796 for (int i = 0; i < 10; ++i) { 8797 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8798 for (int i = 0; i < 10; ++i) 8799 ; 8800 } 8801 #pragma omp target teams distribute simd 8802 for (int i = 0; i < 10; ++i) { 8803 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8804 for (int i = 0; i < 10; ++i) 8805 ; 8806 } 8807 #pragma omp target teams distribute simd 8808 for (int i = 0; i < 10; ++i) { 8809 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8810 { 8811 bar(); 8812 } 8813 } 8814 #pragma omp target teams distribute simd 8815 for (int i = 0; i < 10; ++i) { 8816 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8817 { 8818 bar(); 8819 } 8820 } 8821 #pragma omp target teams distribute simd 8822 for (int i = 0; i < 10; ++i) { 8823 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8824 bar(); 8825 } 8826 #pragma omp target teams distribute simd 8827 for (int i = 0; i < 10; ++i) { 8828 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8829 bar(); 8830 } 8831 #pragma omp target teams distribute simd 8832 for (int i = 0; i < 10; ++i) { 8833 #pragma omp taskwait // 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 flush // 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 ordered // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 8849 ++a; 8850 } 8851 #pragma omp target teams distribute simd 8852 for (int i = 0; i < 10; ++i) { 8853 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8854 ++a; 8855 } 8856 #pragma omp target teams distribute simd 8857 for (int i = 0; i < 10; ++i) { 8858 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8859 ++a; 8860 } 8861 #pragma omp target teams distribute simd 8862 for (int i = 0; i < 10; ++i) { 8863 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8864 for (int i = 0; i < 10; ++i) 8865 ; 8866 } 8867 #pragma omp target teams distribute simd 8868 for (int i = 0; i < 10; ++i) { 8869 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8870 ++a; 8871 } 8872 #pragma omp target teams distribute simd 8873 for (int i = 0; i < 10; ++i) { 8874 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8875 ++a; 8876 } 8877 #pragma omp target teams distribute simd 8878 for (int i = 0; i < 10; ++i) { 8879 #pragma omp teams // 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 update to(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 distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8890 for (int i = 0; i < 10; ++i) 8891 ++a; 8892 } 8893 #pragma omp target teams distribute simd 8894 for (int i = 0; i < 10; ++i) { 8895 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8896 for (int i = 0; i < 10; ++i) 8897 ++a; 8898 } 8899 #pragma omp target teams distribute simd 8900 for (int i = 0; i < 10; ++i) { 8901 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8902 for (int i = 0; i < 10; ++i) 8903 ++a; 8904 } 8905 #pragma omp target teams distribute simd 8906 for (int i = 0; i < 10; ++i) { 8907 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8908 for (int i = 0; i < 10; ++i) 8909 ++a; 8910 } 8911 #pragma omp target teams distribute simd 8912 for (int i = 0; i < 10; ++i) { 8913 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8914 for (int i = 0; i < 10; ++i) 8915 ++a; 8916 } 8917 #pragma omp target teams distribute simd 8918 for (int i = 0; i < 10; ++i) { 8919 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8920 for (int i = 0; i < 10; ++i) 8921 ; 8922 } 8923 #pragma omp target teams distribute simd 8924 for (int i = 0; i < 10; ++i) { 8925 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8926 a++; 8927 } 8928 #pragma omp target teams distribute simd 8929 for (int i = 0; i < 10; ++i) { 8930 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8931 for (int i = 0; i < 10; ++i) 8932 ; 8933 } 8934 #pragma omp target teams distribute simd 8935 for (int i = 0; i < 10; ++i) { 8936 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8937 for (int i = 0; i < 10; ++i) 8938 ; 8939 } 8940 #pragma omp target teams distribute simd 8941 for (int i = 0; i < 10; ++i) { 8942 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8943 for (int i = 0; i < 10; ++i) 8944 ; 8945 } 8946 #pragma omp target teams distribute simd 8947 for (int i = 0; i < 10; ++i) { 8948 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8949 for (int i = 0; i < 10; ++i) 8950 ; 8951 } 8952 8953 } 8954 8955 void foo() { 8956 int a = 0; 8957 // PARALLEL DIRECTIVE 8958 #pragma omp parallel 8959 #pragma omp for 8960 for (int i = 0; i < 10; ++i) 8961 ; 8962 #pragma omp parallel 8963 #pragma omp simd 8964 for (int i = 0; i < 10; ++i) 8965 ; 8966 #pragma omp parallel 8967 #pragma omp for simd 8968 for (int i = 0; i < 10; ++i) 8969 ; 8970 #pragma omp parallel 8971 #pragma omp sections 8972 { 8973 bar(); 8974 } 8975 #pragma omp parallel 8976 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 8977 { 8978 bar(); 8979 } 8980 #pragma omp parallel 8981 #pragma omp sections 8982 { 8983 bar(); 8984 } 8985 #pragma omp parallel 8986 #pragma omp single 8987 bar(); 8988 #pragma omp parallel 8989 #pragma omp master 8990 bar(); 8991 #pragma omp parallel 8992 #pragma omp critical 8993 bar(); 8994 #pragma omp parallel 8995 #pragma omp parallel for 8996 for (int i = 0; i < 10; ++i) 8997 ; 8998 #pragma omp parallel 8999 #pragma omp parallel for simd 9000 for (int i = 0; i < 10; ++i) 9001 ; 9002 #pragma omp parallel 9003 #pragma omp parallel sections 9004 { 9005 bar(); 9006 } 9007 #pragma omp parallel 9008 #pragma omp task 9009 { 9010 bar(); 9011 } 9012 #pragma omp parallel 9013 { 9014 #pragma omp taskyield 9015 bar(); 9016 } 9017 #pragma omp parallel 9018 { 9019 #pragma omp barrier 9020 bar(); 9021 } 9022 #pragma omp parallel 9023 { 9024 #pragma omp taskwait 9025 bar(); 9026 } 9027 #pragma omp parallel 9028 { 9029 #pragma omp flush 9030 bar(); 9031 } 9032 #pragma omp parallel 9033 { 9034 #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?}} 9035 bar(); 9036 } 9037 #pragma omp parallel 9038 { 9039 #pragma omp atomic 9040 ++a; 9041 } 9042 #pragma omp parallel 9043 { 9044 #pragma omp target 9045 ++a; 9046 } 9047 #pragma omp parallel 9048 { 9049 #pragma omp target parallel 9050 ++a; 9051 } 9052 #pragma omp parallel 9053 #pragma omp target parallel for 9054 for (int i = 0; i < 10; ++i) 9055 ; 9056 #pragma omp parallel 9057 { 9058 #pragma omp target enter data map(to: a) 9059 ++a; 9060 } 9061 #pragma omp parallel 9062 { 9063 #pragma omp target exit data map(from: a) 9064 ++a; 9065 } 9066 #pragma omp parallel 9067 { 9068 #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?}} 9069 ++a; 9070 } 9071 #pragma omp parallel 9072 { 9073 #pragma omp taskloop 9074 for (int i = 0; i < 10; ++i) 9075 ++a; 9076 } 9077 #pragma omp parallel 9078 { 9079 #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?}} 9080 for (int i = 0; i < 10; ++i) 9081 ; 9082 } 9083 #pragma omp parallel 9084 { 9085 #pragma omp target update to(a) 9086 a++; 9087 } 9088 #pragma omp parallel 9089 { 9090 #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?}} 9091 for (int i = 0; i < 10; ++i) 9092 ; 9093 } 9094 #pragma omp parallel 9095 { 9096 #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?}} 9097 for (int i = 0; i < 10; ++i) 9098 ; 9099 } 9100 #pragma omp parallel 9101 { 9102 #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?}} 9103 for (int i = 0; i < 10; ++i) 9104 ; 9105 } 9106 #pragma omp parallel 9107 { 9108 #pragma omp target simd // OK 9109 for (int i = 0; i < 10; ++i) 9110 ; 9111 } 9112 #pragma omp parallel 9113 { 9114 #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?}} 9115 for (int i = 0; i < 10; ++i) 9116 ; 9117 } 9118 #pragma omp parallel 9119 { 9120 #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?}} 9121 for (int i = 0; i < 10; ++i) 9122 ; 9123 } 9124 #pragma omp parallel 9125 { 9126 #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?}} 9127 for (int i = 0; i < 10; ++i) 9128 ; 9129 } 9130 #pragma omp parallel 9131 { 9132 #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?}} 9133 for (int i = 0; i < 10; ++i) 9134 ; 9135 } 9136 #pragma omp parallel 9137 { 9138 #pragma omp target teams // OK 9139 a++; 9140 } 9141 #pragma omp parallel 9142 { 9143 #pragma omp target teams distribute // OK 9144 for (int i = 0; i < 10; ++i) 9145 ; 9146 } 9147 #pragma omp parallel 9148 { 9149 #pragma omp target teams distribute parallel for // OK 9150 for (int i = 0; i < 10; ++i) 9151 ; 9152 } 9153 #pragma omp parallel 9154 { 9155 #pragma omp target teams distribute parallel for simd // OK 9156 for (int i = 0; i < 10; ++i) 9157 ; 9158 } 9159 #pragma omp parallel 9160 { 9161 #pragma omp target teams distribute simd // OK 9162 for (int i = 0; i < 10; ++i) 9163 ; 9164 } 9165 9166 // SIMD DIRECTIVE 9167 #pragma omp simd 9168 for (int i = 0; i < 10; ++i) { 9169 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9170 for (int i = 0; i < 10; ++i) 9171 ; 9172 } 9173 #pragma omp simd 9174 for (int i = 0; i < 10; ++i) { 9175 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9176 for (int i = 0; i < 10; ++i) 9177 ; 9178 } 9179 #pragma omp simd 9180 for (int i = 0; i < 10; ++i) { 9181 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9182 for (int i = 0; i < 10; ++i) 9183 ; 9184 } 9185 #pragma omp simd 9186 for (int i = 0; i < 10; ++i) { 9187 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9188 for (int i = 0; i < 10; ++i) 9189 ; 9190 } 9191 #pragma omp simd 9192 for (int i = 0; i < 10; ++i) { 9193 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9194 { 9195 bar(); 9196 } 9197 } 9198 #pragma omp simd 9199 for (int i = 0; i < 10; ++i) { 9200 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9201 { 9202 bar(); 9203 } 9204 } 9205 #pragma omp simd 9206 for (int i = 0; i < 10; ++i) { 9207 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9208 bar(); 9209 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9210 bar(); 9211 } 9212 #pragma omp simd 9213 for (int i = 0; i < 10; ++i) { 9214 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9215 bar(); 9216 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9217 bar(); 9218 } 9219 #pragma omp simd 9220 for (int i = 0; i < 10; ++i) { 9221 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9222 for (int i = 0; i < 10; ++i) 9223 ; 9224 } 9225 #pragma omp simd 9226 for (int i = 0; i < 10; ++i) { 9227 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9228 for (int i = 0; i < 10; ++i) 9229 ; 9230 } 9231 #pragma omp simd 9232 for (int i = 0; i < 10; ++i) { 9233 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9234 { 9235 bar(); 9236 } 9237 } 9238 #pragma omp simd 9239 for (int i = 0; i < 10; ++i) { 9240 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9241 { 9242 bar(); 9243 } 9244 } 9245 #pragma omp simd 9246 for (int i = 0; i < 10; ++i) { 9247 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9248 bar(); 9249 } 9250 #pragma omp simd 9251 for (int i = 0; i < 10; ++i) { 9252 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9253 bar(); 9254 } 9255 #pragma omp simd 9256 for (int i = 0; i < 10; ++i) { 9257 #pragma omp taskwait // 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 flush // 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 ordered // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9273 ++a; 9274 } 9275 #pragma omp simd 9276 for (int i = 0; i < 10; ++i) { 9277 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9278 ++a; 9279 } 9280 #pragma omp simd 9281 for (int i = 0; i < 10; ++i) { 9282 #pragma omp target parallel // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9288 for (int i = 0; i < 10; ++i) 9289 ; 9290 } 9291 #pragma omp simd 9292 for (int i = 0; i < 10; ++i) { 9293 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9294 ++a; 9295 } 9296 #pragma omp simd 9297 for (int i = 0; i < 10; ++i) { 9298 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9299 ++a; 9300 } 9301 #pragma omp simd 9302 for (int i = 0; i < 10; ++i) { 9303 #pragma omp teams // 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 taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9309 for (int i = 0; i < 10; ++i) 9310 ++a; 9311 } 9312 #pragma omp simd 9313 for (int i = 0; i < 10; ++i) { 9314 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9315 for (int j = 0; j < 10; ++j) 9316 ; 9317 } 9318 #pragma omp simd 9319 for (int i = 0; i < 10; ++i) { 9320 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9321 a++; 9322 } 9323 #pragma omp simd 9324 for (int i = 0; i < 10; ++i) { 9325 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9326 for (int j = 0; j < 10; ++j) 9327 ; 9328 } 9329 #pragma omp simd 9330 for (int i = 0; i < 10; ++i) { 9331 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9332 for (int j = 0; j < 10; ++j) 9333 ; 9334 } 9335 #pragma omp simd 9336 for (int i = 0; i < 10; ++i) { 9337 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9338 for (int j = 0; j < 10; ++j) 9339 ; 9340 } 9341 #pragma omp simd 9342 for (int i = 0; i < 10; ++i) { 9343 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9344 for (int j = 0; j < 10; ++j) 9345 ; 9346 } 9347 #pragma omp simd 9348 for (int i = 0; i < 10; ++i) { 9349 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9350 for (int j = 0; j < 10; ++j) 9351 ; 9352 } 9353 #pragma omp simd 9354 for (int i = 0; i < 10; ++i) { 9355 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9356 for (int j = 0; j < 10; ++j) 9357 ; 9358 } 9359 #pragma omp simd 9360 for (int i = 0; i < 10; ++i) { 9361 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9362 for (int j = 0; j < 10; ++j) 9363 ; 9364 } 9365 #pragma omp simd 9366 for (int i = 0; i < 10; ++i) { 9367 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9368 for (int j = 0; j < 10; ++j) 9369 ; 9370 } 9371 #pragma omp simd 9372 for (int i = 0; i < 10; ++i) { 9373 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9374 a++; 9375 } 9376 #pragma omp simd 9377 for (int i = 0; i < 10; ++i) { 9378 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9379 for (int j = 0; j < 10; ++j) 9380 ; 9381 } 9382 #pragma omp simd 9383 for (int i = 0; i < 10; ++i) { 9384 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9385 for (int j = 0; j < 10; ++j) 9386 ; 9387 } 9388 #pragma omp simd 9389 for (int i = 0; i < 10; ++i) { 9390 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9391 for (int j = 0; j < 10; ++j) 9392 ; 9393 } 9394 #pragma omp simd 9395 for (int i = 0; i < 10; ++i) { 9396 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9397 for (int j = 0; j < 10; ++j) 9398 ; 9399 } 9400 9401 // FOR DIRECTIVE 9402 #pragma omp for 9403 for (int i = 0; i < 10; ++i) { 9404 #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?}} 9405 for (int i = 0; i < 10; ++i) 9406 ; 9407 } 9408 #pragma omp for 9409 for (int i = 0; i < 10; ++i) { 9410 #pragma omp simd 9411 for (int i = 0; i < 10; ++i) 9412 ; 9413 } 9414 #pragma omp for 9415 for (int i = 0; i < 10; ++i) { 9416 #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?}} 9417 for (int i = 0; i < 10; ++i) 9418 ; 9419 } 9420 #pragma omp for 9421 for (int i = 0; i < 10; ++i) { 9422 #pragma omp parallel 9423 for (int i = 0; i < 10; ++i) 9424 ; 9425 } 9426 #pragma omp for 9427 for (int i = 0; i < 10; ++i) { 9428 #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?}} 9429 { 9430 bar(); 9431 } 9432 } 9433 #pragma omp for 9434 for (int i = 0; i < 10; ++i) { 9435 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 9436 { 9437 bar(); 9438 } 9439 } 9440 #pragma omp for 9441 for (int i = 0; i < 10; ++i) { 9442 #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?}} 9443 bar(); 9444 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 9445 bar(); 9446 #pragma omp critical 9447 bar(); 9448 } 9449 #pragma omp for 9450 for (int i = 0; i < 10; ++i) { 9451 #pragma omp parallel 9452 { 9453 #pragma omp single // OK 9454 { 9455 bar(); 9456 } 9457 #pragma omp for // OK 9458 for (int i = 0; i < 10; ++i) 9459 ; 9460 #pragma omp for simd // OK 9461 for (int i = 0; i < 10; ++i) 9462 ; 9463 #pragma omp sections // OK 9464 { 9465 bar(); 9466 } 9467 } 9468 } 9469 #pragma omp for 9470 for (int i = 0; i < 10; ++i) { 9471 #pragma omp parallel for 9472 for (int i = 0; i < 10; ++i) 9473 ; 9474 } 9475 #pragma omp for 9476 for (int i = 0; i < 10; ++i) { 9477 #pragma omp parallel for simd 9478 for (int i = 0; i < 10; ++i) 9479 ; 9480 } 9481 #pragma omp for 9482 for (int i = 0; i < 10; ++i) { 9483 #pragma omp parallel sections 9484 { 9485 bar(); 9486 } 9487 } 9488 #pragma omp for 9489 for (int i = 0; i < 10; ++i) { 9490 #pragma omp task 9491 { 9492 bar(); 9493 } 9494 } 9495 #pragma omp for 9496 for (int i = 0; i < 10; ++i) { 9497 #pragma omp taskyield 9498 bar(); 9499 } 9500 #pragma omp for 9501 for (int i = 0; i < 10; ++i) { 9502 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 9503 bar(); 9504 } 9505 #pragma omp for 9506 for (int i = 0; i < 10; ++i) { 9507 #pragma omp taskwait 9508 bar(); 9509 } 9510 #pragma omp for 9511 for (int i = 0; i < 10; ++i) { 9512 #pragma omp flush 9513 bar(); 9514 } 9515 #pragma omp for 9516 for (int i = 0; i < 10; ++i) { 9517 #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?}} 9518 bar(); 9519 } 9520 #pragma omp for ordered 9521 for (int i = 0; i < 10; ++i) { 9522 #pragma omp ordered // OK 9523 bar(); 9524 } 9525 #pragma omp for 9526 for (int i = 0; i < 10; ++i) { 9527 #pragma omp atomic 9528 ++a; 9529 } 9530 #pragma omp for 9531 for (int i = 0; i < 10; ++i) { 9532 #pragma omp target 9533 ++a; 9534 } 9535 #pragma omp for 9536 for (int i = 0; i < 10; ++i) { 9537 #pragma omp target parallel 9538 ++a; 9539 } 9540 #pragma omp for 9541 for (int i = 0; i < 10; ++i) { 9542 #pragma omp target parallel for 9543 for (int i = 0; i < 10; ++i) 9544 ; 9545 } 9546 #pragma omp for 9547 for (int i = 0; i < 10; ++i) { 9548 #pragma omp target enter data map(to: a) 9549 ++a; 9550 } 9551 #pragma omp for 9552 for (int i = 0; i < 10; ++i) { 9553 #pragma omp target exit data map(from: a) 9554 ++a; 9555 } 9556 #pragma omp for 9557 for (int i = 0; i < 10; ++i) { 9558 #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?}} 9559 ++a; 9560 } 9561 #pragma omp for 9562 for (int i = 0; i < 10; ++i) { 9563 #pragma omp taskloop 9564 for (int i = 0; i < 10; ++i) 9565 ++a; 9566 } 9567 #pragma omp for 9568 for (int i = 0; i < 10; ++i) { 9569 #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?}} 9570 for (int j = 0; j < 10; ++j) 9571 ; 9572 } 9573 #pragma omp for 9574 for (int i = 0; i < 10; ++i) { 9575 #pragma omp target update to(a) 9576 ++a; 9577 } 9578 #pragma omp for 9579 for (int i = 0; i < 10; ++i) { 9580 #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?}} 9581 for (int j = 0; j < 10; ++j) 9582 ; 9583 } 9584 #pragma omp for 9585 for (int i = 0; i < 10; ++i) { 9586 #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?}} 9587 for (int j = 0; j < 10; ++j) 9588 ; 9589 } 9590 #pragma omp for 9591 for (int i = 0; i < 10; ++i) { 9592 #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?}} 9593 for (int j = 0; j < 10; ++j) 9594 ; 9595 } 9596 #pragma omp for 9597 for (int i = 0; i < 10; ++i) { 9598 #pragma omp target simd // OK 9599 for (int j = 0; j < 10; ++j) 9600 ; 9601 } 9602 #pragma omp for 9603 for (int i = 0; i < 10; ++i) { 9604 #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?}} 9605 for (int j = 0; j < 10; ++j) 9606 ; 9607 } 9608 #pragma omp for 9609 for (int i = 0; i < 10; ++i) { 9610 #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?}} 9611 for (int j = 0; j < 10; ++j) 9612 ; 9613 } 9614 #pragma omp for 9615 for (int i = 0; i < 10; ++i) { 9616 #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?}} 9617 for (int j = 0; j < 10; ++j) 9618 ; 9619 } 9620 #pragma omp for 9621 for (int i = 0; i < 10; ++i) { 9622 #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?}} 9623 for (int j = 0; j < 10; ++j) 9624 ; 9625 } 9626 #pragma omp for 9627 for (int i = 0; i < 10; ++i) { 9628 #pragma omp target teams // OK 9629 a++; 9630 } 9631 #pragma omp for 9632 for (int i = 0; i < 10; ++i) { 9633 #pragma omp target teams distribute // OK 9634 for (int j = 0; j < 10; ++j) 9635 ; 9636 } 9637 #pragma omp for 9638 for (int i = 0; i < 10; ++i) { 9639 #pragma omp target teams distribute parallel for // OK 9640 for (int j = 0; j < 10; ++j) 9641 ; 9642 } 9643 #pragma omp for 9644 for (int i = 0; i < 10; ++i) { 9645 #pragma omp target teams distribute parallel for simd // OK 9646 for (int j = 0; j < 10; ++j) 9647 ; 9648 } 9649 #pragma omp for 9650 for (int i = 0; i < 10; ++i) { 9651 #pragma omp target teams distribute simd // OK 9652 for (int j = 0; j < 10; ++j) 9653 ; 9654 } 9655 9656 // FOR SIMD DIRECTIVE 9657 #pragma omp for simd 9658 for (int i = 0; i < 10; ++i) { 9659 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9660 for (int i = 0; i < 10; ++i) 9661 ; 9662 } 9663 #pragma omp for simd 9664 for (int i = 0; i < 10; ++i) { 9665 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9666 for (int i = 0; i < 10; ++i) 9667 ; 9668 } 9669 #pragma omp for simd 9670 for (int i = 0; i < 10; ++i) { 9671 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9672 for (int i = 0; i < 10; ++i) 9673 ; 9674 } 9675 #pragma omp for simd 9676 for (int i = 0; i < 10; ++i) { 9677 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9678 for (int i = 0; i < 10; ++i) 9679 ; 9680 } 9681 #pragma omp for simd 9682 for (int i = 0; i < 10; ++i) { 9683 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9684 { 9685 bar(); 9686 } 9687 } 9688 #pragma omp for simd 9689 for (int i = 0; i < 10; ++i) { 9690 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9691 { 9692 bar(); 9693 } 9694 } 9695 #pragma omp for simd 9696 for (int i = 0; i < 10; ++i) { 9697 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9698 bar(); 9699 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9700 bar(); 9701 } 9702 #pragma omp for simd 9703 for (int i = 0; i < 10; ++i) { 9704 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9705 bar(); 9706 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9707 bar(); 9708 } 9709 #pragma omp for simd 9710 for (int i = 0; i < 10; ++i) { 9711 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9712 for (int i = 0; i < 10; ++i) 9713 ; 9714 } 9715 #pragma omp for simd 9716 for (int i = 0; i < 10; ++i) { 9717 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9718 for (int i = 0; i < 10; ++i) 9719 ; 9720 } 9721 #pragma omp for simd 9722 for (int i = 0; i < 10; ++i) { 9723 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9724 { 9725 bar(); 9726 } 9727 } 9728 #pragma omp for simd 9729 for (int i = 0; i < 10; ++i) { 9730 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9731 { 9732 bar(); 9733 } 9734 } 9735 #pragma omp for simd 9736 for (int i = 0; i < 10; ++i) { 9737 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9738 bar(); 9739 } 9740 #pragma omp for simd 9741 for (int i = 0; i < 10; ++i) { 9742 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9743 bar(); 9744 } 9745 #pragma omp for simd 9746 for (int i = 0; i < 10; ++i) { 9747 #pragma omp taskwait // 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 flush // 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 ordered // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9763 ++a; 9764 } 9765 #pragma omp for simd 9766 for (int i = 0; i < 10; ++i) { 9767 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9768 ++a; 9769 } 9770 #pragma omp for simd 9771 for (int i = 0; i < 10; ++i) { 9772 #pragma omp target parallel // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9778 for (int i = 0; i < 10; ++i) 9779 ; 9780 } 9781 #pragma omp for simd 9782 for (int i = 0; i < 10; ++i) { 9783 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9784 ++a; 9785 } 9786 #pragma omp for simd 9787 for (int i = 0; i < 10; ++i) { 9788 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9789 ++a; 9790 } 9791 #pragma omp for simd 9792 for (int i = 0; i < 10; ++i) { 9793 #pragma omp teams // 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 taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9799 for (int i = 0; i < 10; ++i) 9800 ++a; 9801 } 9802 #pragma omp for simd 9803 for (int i = 0; i < 10; ++i) { 9804 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9805 for (int j = 0; j < 10; ++j) 9806 ; 9807 } 9808 #pragma omp for simd 9809 for (int i = 0; i < 10; ++i) { 9810 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9811 ++a; 9812 } 9813 #pragma omp for simd 9814 for (int i = 0; i < 10; ++i) { 9815 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9816 for (int j = 0; j < 10; ++j) 9817 ; 9818 } 9819 #pragma omp for simd 9820 for (int i = 0; i < 10; ++i) { 9821 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9822 for (int j = 0; j < 10; ++j) 9823 ; 9824 } 9825 #pragma omp for simd 9826 for (int i = 0; i < 10; ++i) { 9827 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9828 for (int j = 0; j < 10; ++j) 9829 ; 9830 } 9831 #pragma omp for simd 9832 for (int i = 0; i < 10; ++i) { 9833 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9834 for (int j = 0; j < 10; ++j) 9835 ; 9836 } 9837 #pragma omp for simd 9838 for (int i = 0; i < 10; ++i) { 9839 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9840 for (int j = 0; j < 10; ++j) 9841 ; 9842 } 9843 #pragma omp for simd 9844 for (int i = 0; i < 10; ++i) { 9845 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9846 for (int j = 0; j < 10; ++j) 9847 ; 9848 } 9849 #pragma omp for simd 9850 for (int i = 0; i < 10; ++i) { 9851 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9852 for (int j = 0; j < 10; ++j) 9853 ; 9854 } 9855 #pragma omp for simd 9856 for (int i = 0; i < 10; ++i) { 9857 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9858 for (int j = 0; j < 10; ++j) 9859 ; 9860 } 9861 #pragma omp for simd 9862 for (int i = 0; i < 10; ++i) { 9863 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9864 a++; 9865 } 9866 #pragma omp for simd 9867 for (int i = 0; i < 10; ++i) { 9868 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9869 for (int j = 0; j < 10; ++j) 9870 ; 9871 } 9872 #pragma omp for simd 9873 for (int i = 0; i < 10; ++i) { 9874 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9875 for (int j = 0; j < 10; ++j) 9876 ; 9877 } 9878 #pragma omp for simd 9879 for (int i = 0; i < 10; ++i) { 9880 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9881 for (int j = 0; j < 10; ++j) 9882 ; 9883 } 9884 #pragma omp for simd 9885 for (int i = 0; i < 10; ++i) { 9886 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9887 for (int j = 0; j < 10; ++j) 9888 ; 9889 } 9890 9891 // SECTIONS DIRECTIVE 9892 #pragma omp sections 9893 { 9894 #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?}} 9895 for (int i = 0; i < 10; ++i) 9896 ; 9897 } 9898 #pragma omp sections 9899 { 9900 #pragma omp simd 9901 for (int i = 0; i < 10; ++i) 9902 ; 9903 } 9904 #pragma omp sections 9905 { 9906 #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?}} 9907 for (int i = 0; i < 10; ++i) 9908 ; 9909 } 9910 #pragma omp sections 9911 { 9912 #pragma omp parallel 9913 for (int i = 0; i < 10; ++i) 9914 ; 9915 } 9916 #pragma omp sections 9917 { 9918 #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?}} 9919 { 9920 bar(); 9921 } 9922 } 9923 #pragma omp sections 9924 { 9925 #pragma omp section 9926 { 9927 bar(); 9928 } 9929 } 9930 #pragma omp sections 9931 { 9932 #pragma omp critical 9933 bar(); 9934 #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?}} 9935 bar(); 9936 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 9937 bar(); 9938 } 9939 #pragma omp sections 9940 { 9941 #pragma omp parallel 9942 { 9943 #pragma omp single // OK 9944 { 9945 bar(); 9946 } 9947 #pragma omp for // OK 9948 for (int i = 0; i < 10; ++i) 9949 ; 9950 #pragma omp for simd // OK 9951 for (int i = 0; i < 10; ++i) 9952 ; 9953 #pragma omp sections // OK 9954 { 9955 bar(); 9956 } 9957 } 9958 } 9959 #pragma omp sections 9960 { 9961 #pragma omp parallel for 9962 for (int i = 0; i < 10; ++i) 9963 ; 9964 } 9965 #pragma omp sections 9966 { 9967 #pragma omp parallel for simd 9968 for (int i = 0; i < 10; ++i) 9969 ; 9970 } 9971 #pragma omp sections 9972 { 9973 #pragma omp parallel sections 9974 { 9975 bar(); 9976 } 9977 } 9978 #pragma omp sections 9979 { 9980 #pragma omp task 9981 { 9982 bar(); 9983 } 9984 } 9985 #pragma omp sections 9986 { 9987 #pragma omp taskyield 9988 } 9989 #pragma omp sections 9990 { 9991 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 9992 bar(); 9993 } 9994 #pragma omp sections 9995 { 9996 #pragma omp taskwait 9997 } 9998 #pragma omp sections 9999 { 10000 #pragma omp flush 10001 } 10002 #pragma omp sections 10003 { 10004 #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?}} 10005 bar(); 10006 } 10007 #pragma omp sections 10008 { 10009 #pragma omp atomic 10010 ++a; 10011 } 10012 #pragma omp sections 10013 { 10014 #pragma omp target 10015 ++a; 10016 } 10017 #pragma omp sections 10018 { 10019 #pragma omp target parallel 10020 ++a; 10021 } 10022 #pragma omp sections 10023 { 10024 #pragma omp target parallel for 10025 for (int i = 0; i < 10; ++i) 10026 ; 10027 } 10028 #pragma omp sections 10029 { 10030 #pragma omp target enter data map(to: a) 10031 } 10032 #pragma omp sections 10033 { 10034 #pragma omp target exit data map(from: a) 10035 } 10036 #pragma omp sections 10037 { 10038 #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?}} 10039 ++a; 10040 } 10041 #pragma omp sections 10042 { 10043 #pragma omp taskloop 10044 for (int i = 0; i < 10; ++i) 10045 ++a; 10046 } 10047 #pragma omp sections 10048 { 10049 #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?}} 10050 for (int i = 0; i < 10; ++i) 10051 ; 10052 } 10053 #pragma omp sections 10054 { 10055 #pragma omp target update to(a) 10056 } 10057 #pragma omp sections 10058 { 10059 #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?}} 10060 for (int i = 0; i < 10; ++i) 10061 ; 10062 } 10063 #pragma omp sections 10064 { 10065 #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?}} 10066 for (int i = 0; i < 10; ++i) 10067 ; 10068 } 10069 #pragma omp sections 10070 { 10071 #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?}} 10072 for (int i = 0; i < 10; ++i) 10073 ; 10074 } 10075 #pragma omp sections 10076 { 10077 #pragma omp target simd // OK 10078 for (int i = 0; i < 10; ++i) 10079 ; 10080 } 10081 #pragma omp sections 10082 { 10083 #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?}} 10084 for (int i = 0; i < 10; ++i) 10085 ; 10086 } 10087 #pragma omp sections 10088 { 10089 #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?}} 10090 for (int i = 0; i < 10; ++i) 10091 ; 10092 } 10093 #pragma omp sections 10094 { 10095 #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?}} 10096 for (int i = 0; i < 10; ++i) 10097 ; 10098 } 10099 #pragma omp sections 10100 { 10101 #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?}} 10102 for (int i = 0; i < 10; ++i) 10103 ; 10104 } 10105 #pragma omp sections 10106 { 10107 #pragma omp target teams // OK 10108 a++; 10109 } 10110 #pragma omp sections 10111 { 10112 #pragma omp target teams distribute // OK 10113 for (int i = 0; i < 10; ++i) 10114 ; 10115 } 10116 #pragma omp sections 10117 { 10118 #pragma omp target teams distribute parallel for // OK 10119 for (int i = 0; i < 10; ++i) 10120 ; 10121 } 10122 #pragma omp sections 10123 { 10124 #pragma omp target teams distribute parallel for simd // OK 10125 for (int i = 0; i < 10; ++i) 10126 ; 10127 } 10128 #pragma omp sections 10129 { 10130 #pragma omp target teams distribute simd // OK 10131 for (int i = 0; i < 10; ++i) 10132 ; 10133 } 10134 10135 // SECTION DIRECTIVE 10136 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 10137 { 10138 bar(); 10139 } 10140 #pragma omp sections 10141 { 10142 #pragma omp section 10143 { 10144 #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?}} 10145 for (int i = 0; i < 10; ++i) 10146 ; 10147 } 10148 } 10149 #pragma omp sections 10150 { 10151 #pragma omp section 10152 { 10153 #pragma omp simd 10154 for (int i = 0; i < 10; ++i) 10155 ; 10156 } 10157 } 10158 #pragma omp sections 10159 { 10160 #pragma omp section 10161 { 10162 #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?}} 10163 for (int i = 0; i < 10; ++i) 10164 ; 10165 } 10166 } 10167 #pragma omp sections 10168 { 10169 #pragma omp section 10170 { 10171 #pragma omp parallel 10172 for (int i = 0; i < 10; ++i) 10173 ; 10174 } 10175 } 10176 #pragma omp sections 10177 { 10178 #pragma omp section 10179 { 10180 #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?}} 10181 { 10182 bar(); 10183 } 10184 } 10185 } 10186 #pragma omp sections 10187 { 10188 #pragma omp section 10189 { 10190 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 10191 { 10192 bar(); 10193 } 10194 } 10195 } 10196 #pragma omp sections 10197 { 10198 #pragma omp section 10199 { 10200 #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?}} 10201 bar(); 10202 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 10203 bar(); 10204 #pragma omp critical 10205 bar(); 10206 } 10207 } 10208 #pragma omp sections 10209 { 10210 #pragma omp section 10211 { 10212 #pragma omp parallel 10213 { 10214 #pragma omp single // OK 10215 { 10216 bar(); 10217 } 10218 #pragma omp for // OK 10219 for (int i = 0; i < 10; ++i) 10220 ; 10221 #pragma omp for simd // OK 10222 for (int i = 0; i < 10; ++i) 10223 ; 10224 #pragma omp sections // OK 10225 { 10226 bar(); 10227 } 10228 } 10229 } 10230 } 10231 #pragma omp sections 10232 { 10233 #pragma omp section 10234 { 10235 #pragma omp parallel for 10236 for (int i = 0; i < 10; ++i) 10237 ; 10238 } 10239 } 10240 #pragma omp sections 10241 { 10242 #pragma omp section 10243 { 10244 #pragma omp parallel for simd 10245 for (int i = 0; i < 10; ++i) 10246 ; 10247 } 10248 } 10249 #pragma omp sections 10250 { 10251 #pragma omp section 10252 { 10253 #pragma omp parallel sections 10254 { 10255 bar(); 10256 } 10257 } 10258 } 10259 #pragma omp sections 10260 { 10261 #pragma omp section 10262 { 10263 #pragma omp task 10264 { 10265 bar(); 10266 } 10267 } 10268 } 10269 #pragma omp sections 10270 { 10271 #pragma omp section 10272 { 10273 #pragma omp taskyield 10274 bar(); 10275 } 10276 } 10277 #pragma omp sections 10278 { 10279 #pragma omp section 10280 { 10281 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 10282 bar(); 10283 } 10284 } 10285 #pragma omp sections 10286 { 10287 #pragma omp section 10288 { 10289 #pragma omp taskwait 10290 bar(); 10291 } 10292 } 10293 #pragma omp sections 10294 { 10295 #pragma omp section 10296 { 10297 #pragma omp flush 10298 bar(); 10299 } 10300 } 10301 #pragma omp sections 10302 { 10303 #pragma omp section 10304 { 10305 #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?}} 10306 bar(); 10307 } 10308 } 10309 #pragma omp sections 10310 { 10311 #pragma omp section 10312 { 10313 #pragma omp atomic 10314 ++a; 10315 } 10316 } 10317 #pragma omp sections 10318 { 10319 #pragma omp section 10320 { 10321 #pragma omp target 10322 ++a; 10323 } 10324 } 10325 #pragma omp sections 10326 { 10327 #pragma omp section 10328 { 10329 #pragma omp target parallel 10330 ++a; 10331 } 10332 } 10333 #pragma omp sections 10334 { 10335 #pragma omp section 10336 { 10337 #pragma omp target parallel for 10338 for (int i = 0; i < 10; ++i) 10339 ; 10340 } 10341 } 10342 #pragma omp sections 10343 { 10344 #pragma omp section 10345 { 10346 #pragma omp target enter data map(to: a) 10347 ++a; 10348 } 10349 } 10350 #pragma omp sections 10351 { 10352 #pragma omp section 10353 { 10354 #pragma omp target exit data map(from: a) 10355 ++a; 10356 } 10357 } 10358 #pragma omp sections 10359 { 10360 #pragma omp section 10361 { 10362 #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?}} 10363 ++a; 10364 } 10365 } 10366 #pragma omp sections 10367 { 10368 #pragma omp section 10369 { 10370 #pragma omp taskloop 10371 for (int i = 0; i < 10; ++i) 10372 ++a; 10373 } 10374 } 10375 #pragma omp sections 10376 { 10377 #pragma omp section 10378 #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?}} 10379 for (int i = 0; i < 10; ++i) 10380 ; 10381 } 10382 #pragma omp sections 10383 { 10384 #pragma omp section 10385 { 10386 #pragma omp target update to(a) 10387 a++; 10388 } 10389 } 10390 #pragma omp sections 10391 { 10392 #pragma omp section 10393 #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?}} 10394 for (int i = 0; i < 10; ++i) 10395 ; 10396 } 10397 #pragma omp sections 10398 { 10399 #pragma omp section 10400 #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?}} 10401 for (int i = 0; i < 10; ++i) 10402 ; 10403 } 10404 #pragma omp sections 10405 { 10406 #pragma omp section 10407 #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?}} 10408 for (int i = 0; i < 10; ++i) 10409 ; 10410 } 10411 #pragma omp sections 10412 { 10413 #pragma omp section 10414 #pragma omp target simd // OK 10415 for (int i = 0; i < 10; ++i) 10416 ; 10417 } 10418 #pragma omp sections 10419 { 10420 #pragma omp section 10421 #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?}} 10422 for (int i = 0; i < 10; ++i) 10423 ; 10424 } 10425 #pragma omp sections 10426 { 10427 #pragma omp section 10428 #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?}} 10429 for (int i = 0; i < 10; ++i) 10430 ; 10431 } 10432 #pragma omp sections 10433 { 10434 #pragma omp section 10435 #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?}} 10436 for (int i = 0; i < 10; ++i) 10437 ; 10438 } 10439 #pragma omp sections 10440 { 10441 #pragma omp section 10442 #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?}} 10443 for (int i = 0; i < 10; ++i) 10444 ; 10445 } 10446 #pragma omp sections 10447 { 10448 #pragma omp section 10449 #pragma omp target teams // OK 10450 a++; 10451 } 10452 #pragma omp sections 10453 { 10454 #pragma omp section 10455 #pragma omp target teams distribute // OK 10456 for (int i = 0; i < 10; ++i) 10457 ; 10458 } 10459 #pragma omp sections 10460 { 10461 #pragma omp section 10462 #pragma omp target teams distribute parallel for // OK 10463 for (int i = 0; i < 10; ++i) 10464 ; 10465 } 10466 #pragma omp sections 10467 { 10468 #pragma omp section 10469 #pragma omp target teams distribute parallel for simd // OK 10470 for (int i = 0; i < 10; ++i) 10471 ; 10472 } 10473 #pragma omp sections 10474 { 10475 #pragma omp section 10476 #pragma omp target teams distribute simd // OK 10477 for (int i = 0; i < 10; ++i) 10478 ; 10479 } 10480 10481 // SINGLE DIRECTIVE 10482 #pragma omp single 10483 { 10484 #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?}} 10485 for (int i = 0; i < 10; ++i) 10486 ; 10487 } 10488 #pragma omp single 10489 { 10490 #pragma omp simd 10491 for (int i = 0; i < 10; ++i) 10492 ; 10493 } 10494 #pragma omp single 10495 { 10496 #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?}} 10497 for (int i = 0; i < 10; ++i) 10498 ; 10499 } 10500 #pragma omp single 10501 { 10502 #pragma omp parallel 10503 for (int i = 0; i < 10; ++i) 10504 ; 10505 } 10506 #pragma omp single 10507 { 10508 #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?}} 10509 { 10510 bar(); 10511 } 10512 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 10513 bar(); 10514 #pragma omp critical 10515 bar(); 10516 } 10517 #pragma omp single 10518 { 10519 #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?}} 10520 { 10521 bar(); 10522 } 10523 } 10524 #pragma omp single 10525 { 10526 #pragma omp parallel 10527 { 10528 #pragma omp single // OK 10529 { 10530 bar(); 10531 } 10532 #pragma omp for // OK 10533 for (int i = 0; i < 10; ++i) 10534 ; 10535 #pragma omp for simd // OK 10536 for (int i = 0; i < 10; ++i) 10537 ; 10538 #pragma omp sections // OK 10539 { 10540 bar(); 10541 } 10542 } 10543 } 10544 #pragma omp single 10545 { 10546 #pragma omp parallel for 10547 for (int i = 0; i < 10; ++i) 10548 ; 10549 } 10550 #pragma omp single 10551 { 10552 #pragma omp parallel for simd 10553 for (int i = 0; i < 10; ++i) 10554 ; 10555 } 10556 #pragma omp single 10557 { 10558 #pragma omp parallel sections 10559 { 10560 bar(); 10561 } 10562 } 10563 #pragma omp single 10564 { 10565 #pragma omp task 10566 { 10567 bar(); 10568 } 10569 } 10570 #pragma omp single 10571 { 10572 #pragma omp taskyield 10573 bar(); 10574 } 10575 #pragma omp single 10576 { 10577 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 10578 bar(); 10579 } 10580 #pragma omp single 10581 { 10582 #pragma omp taskwait 10583 bar(); 10584 } 10585 #pragma omp single 10586 { 10587 #pragma omp flush 10588 bar(); 10589 } 10590 #pragma omp single 10591 { 10592 #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?}} 10593 bar(); 10594 } 10595 #pragma omp single 10596 { 10597 #pragma omp atomic 10598 ++a; 10599 } 10600 #pragma omp single 10601 { 10602 #pragma omp target 10603 ++a; 10604 } 10605 #pragma omp single 10606 { 10607 #pragma omp target parallel 10608 ++a; 10609 } 10610 #pragma omp single 10611 { 10612 #pragma omp target parallel for 10613 for (int i = 0; i < 10; ++i) 10614 ; 10615 } 10616 #pragma omp single 10617 { 10618 #pragma omp target enter data map(to: a) 10619 ++a; 10620 } 10621 #pragma omp single 10622 { 10623 #pragma omp target exit data map(from: a) 10624 ++a; 10625 } 10626 #pragma omp single 10627 { 10628 #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?}} 10629 ++a; 10630 } 10631 #pragma omp single 10632 { 10633 #pragma omp taskloop 10634 for (int i = 0; i < 10; ++i) 10635 ++a; 10636 } 10637 #pragma omp single 10638 { 10639 #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?}} 10640 for (int i = 0; i < 10; ++i) 10641 ; 10642 } 10643 #pragma omp single 10644 { 10645 #pragma omp target update to(a) 10646 a++; 10647 } 10648 #pragma omp single 10649 { 10650 #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?}} 10651 for (int i = 0; i < 10; ++i) 10652 ; 10653 } 10654 #pragma omp single 10655 { 10656 #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?}} 10657 for (int i = 0; i < 10; ++i) 10658 ; 10659 } 10660 #pragma omp single 10661 { 10662 #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?}} 10663 for (int i = 0; i < 10; ++i) 10664 ; 10665 } 10666 #pragma omp single 10667 { 10668 #pragma omp target simd // OK 10669 for (int i = 0; i < 10; ++i) 10670 ; 10671 } 10672 #pragma omp single 10673 { 10674 #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?}} 10675 for (int i = 0; i < 10; ++i) 10676 ; 10677 } 10678 #pragma omp single 10679 { 10680 #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?}} 10681 for (int i = 0; i < 10; ++i) 10682 ; 10683 } 10684 #pragma omp single 10685 { 10686 #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?}} 10687 for (int i = 0; i < 10; ++i) 10688 ; 10689 } 10690 #pragma omp single 10691 { 10692 #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?}} 10693 for (int i = 0; i < 10; ++i) 10694 ; 10695 } 10696 #pragma omp single 10697 { 10698 #pragma omp target teams // oK 10699 a++; 10700 } 10701 #pragma omp single 10702 { 10703 #pragma omp target teams distribute // OK 10704 for (int i = 0; i < 10; ++i) 10705 ; 10706 } 10707 #pragma omp single 10708 { 10709 #pragma omp target teams distribute parallel for // OK 10710 for (int i = 0; i < 10; ++i) 10711 ; 10712 } 10713 #pragma omp single 10714 { 10715 #pragma omp target teams distribute parallel for simd // OK 10716 for (int i = 0; i < 10; ++i) 10717 ; 10718 } 10719 #pragma omp single 10720 { 10721 #pragma omp target teams distribute simd // OK 10722 for (int i = 0; i < 10; ++i) 10723 ; 10724 } 10725 10726 // MASTER DIRECTIVE 10727 #pragma omp master 10728 { 10729 #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?}} 10730 for (int i = 0; i < 10; ++i) 10731 ; 10732 } 10733 #pragma omp master 10734 { 10735 #pragma omp simd 10736 for (int i = 0; i < 10; ++i) 10737 ; 10738 } 10739 #pragma omp master 10740 { 10741 #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?}} 10742 for (int i = 0; i < 10; ++i) 10743 ; 10744 } 10745 #pragma omp master 10746 { 10747 #pragma omp parallel 10748 for (int i = 0; i < 10; ++i) 10749 ; 10750 } 10751 #pragma omp master 10752 { 10753 #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?}} 10754 { 10755 bar(); 10756 } 10757 } 10758 #pragma omp master 10759 { 10760 #pragma omp master // OK, though second 'master' is redundant 10761 { 10762 bar(); 10763 } 10764 } 10765 #pragma omp master 10766 { 10767 #pragma omp critical 10768 { 10769 bar(); 10770 } 10771 } 10772 #pragma omp master 10773 { 10774 #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?}} 10775 { 10776 bar(); 10777 } 10778 } 10779 #pragma omp master 10780 { 10781 #pragma omp parallel 10782 { 10783 #pragma omp master // OK 10784 { 10785 bar(); 10786 } 10787 #pragma omp for // OK 10788 for (int i = 0; i < 10; ++i) 10789 ; 10790 #pragma omp for simd // OK 10791 for (int i = 0; i < 10; ++i) 10792 ; 10793 #pragma omp sections // OK 10794 { 10795 bar(); 10796 } 10797 } 10798 } 10799 #pragma omp master 10800 { 10801 #pragma omp parallel for 10802 for (int i = 0; i < 10; ++i) 10803 ; 10804 } 10805 #pragma omp master 10806 { 10807 #pragma omp parallel for simd 10808 for (int i = 0; i < 10; ++i) 10809 ; 10810 } 10811 #pragma omp master 10812 { 10813 #pragma omp parallel sections 10814 { 10815 bar(); 10816 } 10817 } 10818 #pragma omp master 10819 { 10820 #pragma omp task 10821 { 10822 bar(); 10823 } 10824 } 10825 #pragma omp master 10826 { 10827 #pragma omp taskyield 10828 bar(); 10829 } 10830 #pragma omp master 10831 { 10832 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 10833 bar(); 10834 } 10835 #pragma omp master 10836 { 10837 #pragma omp taskwait 10838 bar(); 10839 } 10840 #pragma omp master 10841 { 10842 #pragma omp flush 10843 bar(); 10844 } 10845 #pragma omp master 10846 { 10847 #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?}} 10848 bar(); 10849 } 10850 #pragma omp master 10851 { 10852 #pragma omp atomic 10853 ++a; 10854 } 10855 #pragma omp master 10856 { 10857 #pragma omp target 10858 ++a; 10859 } 10860 #pragma omp master 10861 { 10862 #pragma omp target parallel 10863 ++a; 10864 } 10865 #pragma omp master 10866 { 10867 #pragma omp target parallel for 10868 for (int i = 0; i < 10; ++i) 10869 ; 10870 } 10871 #pragma omp master 10872 { 10873 #pragma omp target enter data map(to: a) 10874 ++a; 10875 } 10876 #pragma omp master 10877 { 10878 #pragma omp target exit data map(from: a) 10879 ++a; 10880 } 10881 #pragma omp master 10882 { 10883 #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?}} 10884 ++a; 10885 } 10886 #pragma omp master 10887 { 10888 #pragma omp taskloop 10889 for (int i = 0; i < 10; ++i) 10890 ++a; 10891 } 10892 #pragma omp master 10893 { 10894 #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?}} 10895 for (int i = 0; i < 10; ++i) 10896 ; 10897 } 10898 #pragma omp master 10899 { 10900 #pragma omp target update to(a) 10901 ++a; 10902 } 10903 #pragma omp master 10904 { 10905 #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?}} 10906 for (int i = 0; i < 10; ++i) 10907 ; 10908 } 10909 #pragma omp master 10910 { 10911 #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?}} 10912 for (int i = 0; i < 10; ++i) 10913 ; 10914 } 10915 #pragma omp master 10916 { 10917 #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?}} 10918 for (int i = 0; i < 10; ++i) 10919 ; 10920 } 10921 #pragma omp master 10922 { 10923 #pragma omp target simd // OK 10924 for (int i = 0; i < 10; ++i) 10925 ; 10926 } 10927 #pragma omp master 10928 { 10929 #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?}} 10930 for (int i = 0; i < 10; ++i) 10931 ; 10932 } 10933 #pragma omp master 10934 { 10935 #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?}} 10936 for (int i = 0; i < 10; ++i) 10937 ; 10938 } 10939 #pragma omp master 10940 { 10941 #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?}} 10942 for (int i = 0; i < 10; ++i) 10943 ; 10944 } 10945 #pragma omp master 10946 { 10947 #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?}} 10948 for (int i = 0; i < 10; ++i) 10949 ; 10950 } 10951 #pragma omp master 10952 { 10953 #pragma omp target teams // OK 10954 a++; 10955 } 10956 #pragma omp master 10957 { 10958 #pragma omp target teams distribute // OK 10959 for (int i = 0; i < 10; ++i) 10960 ; 10961 } 10962 #pragma omp master 10963 { 10964 #pragma omp target teams distribute parallel for // OK 10965 for (int i = 0; i < 10; ++i) 10966 ; 10967 } 10968 #pragma omp master 10969 { 10970 #pragma omp target teams distribute parallel for simd // OK 10971 for (int i = 0; i < 10; ++i) 10972 ; 10973 } 10974 #pragma omp master 10975 { 10976 #pragma omp target teams distribute simd // OK 10977 for (int i = 0; i < 10; ++i) 10978 ; 10979 } 10980 10981 // CRITICAL DIRECTIVE 10982 #pragma omp critical 10983 { 10984 #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?}} 10985 for (int i = 0; i < 10; ++i) 10986 ; 10987 } 10988 #pragma omp critical 10989 { 10990 #pragma omp simd 10991 for (int i = 0; i < 10; ++i) 10992 ; 10993 } 10994 #pragma omp critical 10995 { 10996 #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?}} 10997 for (int i = 0; i < 10; ++i) 10998 ; 10999 } 11000 #pragma omp critical 11001 { 11002 #pragma omp parallel 11003 for (int i = 0; i < 10; ++i) 11004 ; 11005 } 11006 #pragma omp critical 11007 { 11008 #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?}} 11009 { 11010 bar(); 11011 } 11012 } 11013 #pragma omp critical 11014 { 11015 #pragma omp master // OK, though second 'master' is redundant 11016 { 11017 bar(); 11018 } 11019 } 11020 #pragma omp critical 11021 { 11022 #pragma omp critical 11023 { 11024 bar(); 11025 } 11026 } 11027 #pragma omp critical 11028 { 11029 #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?}} 11030 { 11031 bar(); 11032 } 11033 } 11034 #pragma omp critical 11035 { 11036 #pragma omp parallel 11037 { 11038 #pragma omp master // OK 11039 { 11040 bar(); 11041 } 11042 #pragma omp for // OK 11043 for (int i = 0; i < 10; ++i) 11044 ; 11045 #pragma omp for simd // OK 11046 for (int i = 0; i < 10; ++i) 11047 ; 11048 #pragma omp sections // OK 11049 { 11050 bar(); 11051 } 11052 } 11053 } 11054 #pragma omp critical 11055 { 11056 #pragma omp parallel for 11057 for (int i = 0; i < 10; ++i) 11058 ; 11059 } 11060 #pragma omp critical 11061 { 11062 #pragma omp parallel for simd 11063 for (int i = 0; i < 10; ++i) 11064 ; 11065 } 11066 #pragma omp critical 11067 { 11068 #pragma omp parallel sections 11069 { 11070 bar(); 11071 } 11072 } 11073 #pragma omp critical 11074 { 11075 #pragma omp task 11076 { 11077 bar(); 11078 } 11079 } 11080 #pragma omp critical 11081 { 11082 #pragma omp taskyield 11083 bar(); 11084 } 11085 #pragma omp critical 11086 { 11087 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 11088 bar(); 11089 } 11090 #pragma omp critical 11091 { 11092 #pragma omp taskwait 11093 bar(); 11094 } 11095 #pragma omp critical(Belka) 11096 { 11097 #pragma omp critical(Strelka) 11098 bar(); 11099 } 11100 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 11101 { 11102 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 11103 { 11104 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 11105 { 11106 #pragma omp parallel 11107 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 11108 { 11109 bar(); 11110 } 11111 } 11112 } 11113 } 11114 #pragma omp critical 11115 { 11116 #pragma omp flush 11117 bar(); 11118 } 11119 #pragma omp critical 11120 { 11121 #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?}} 11122 bar(); 11123 } 11124 #pragma omp critical 11125 { 11126 #pragma omp atomic 11127 ++a; 11128 } 11129 #pragma omp critical 11130 { 11131 #pragma omp target 11132 ++a; 11133 } 11134 #pragma omp critical 11135 { 11136 #pragma omp target parallel 11137 ++a; 11138 } 11139 #pragma omp critical 11140 { 11141 #pragma omp target parallel for 11142 for (int i = 0; i < 10; ++i) 11143 ; 11144 } 11145 #pragma omp critical 11146 { 11147 #pragma omp target enter data map(to: a) 11148 ++a; 11149 } 11150 #pragma omp critical 11151 { 11152 #pragma omp target exit data map(from: a) 11153 ++a; 11154 } 11155 #pragma omp critical 11156 { 11157 #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?}} 11158 ++a; 11159 } 11160 #pragma omp critical 11161 { 11162 #pragma omp taskloop 11163 for (int i = 0; i < 10; ++i) 11164 ++a; 11165 } 11166 #pragma omp critical 11167 { 11168 #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?}} 11169 for (int i = 0; i < 10; ++i) 11170 ; 11171 } 11172 #pragma omp critical 11173 { 11174 #pragma omp target update to(a) 11175 a++; 11176 } 11177 #pragma omp critical 11178 { 11179 #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?}} 11180 for (int i = 0; i < 10; ++i) 11181 ; 11182 } 11183 #pragma omp critical 11184 { 11185 #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?}} 11186 for (int i = 0; i < 10; ++i) 11187 ; 11188 } 11189 #pragma omp critical 11190 { 11191 #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?}} 11192 for (int i = 0; i < 10; ++i) 11193 ; 11194 } 11195 #pragma omp critical 11196 { 11197 #pragma omp target simd // OK 11198 for (int i = 0; i < 10; ++i) 11199 ; 11200 } 11201 #pragma omp critical 11202 { 11203 #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?}} 11204 for (int i = 0; i < 10; ++i) 11205 ; 11206 } 11207 #pragma omp critical 11208 { 11209 #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?}} 11210 for (int i = 0; i < 10; ++i) 11211 ; 11212 } 11213 #pragma omp critical 11214 { 11215 #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?}} 11216 for (int i = 0; i < 10; ++i) 11217 ; 11218 } 11219 #pragma omp critical 11220 { 11221 #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?}} 11222 for (int i = 0; i < 10; ++i) 11223 ; 11224 } 11225 #pragma omp critical 11226 { 11227 #pragma omp target teams // OK 11228 a++; 11229 } 11230 #pragma omp critical 11231 { 11232 #pragma omp target teams distribute // OK 11233 for (int i = 0; i < 10; ++i) 11234 ; 11235 } 11236 #pragma omp critical 11237 { 11238 #pragma omp target teams distribute parallel for // OK 11239 for (int i = 0; i < 10; ++i) 11240 ; 11241 } 11242 #pragma omp critical 11243 { 11244 #pragma omp target teams distribute parallel for simd // OK 11245 for (int i = 0; i < 10; ++i) 11246 ; 11247 } 11248 #pragma omp critical 11249 { 11250 #pragma omp target teams distribute simd // OK 11251 for (int i = 0; i < 10; ++i) 11252 ; 11253 } 11254 11255 // PARALLEL FOR DIRECTIVE 11256 #pragma omp parallel for 11257 for (int i = 0; i < 10; ++i) { 11258 #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?}} 11259 for (int i = 0; i < 10; ++i) 11260 ; 11261 } 11262 #pragma omp parallel for 11263 for (int i = 0; i < 10; ++i) { 11264 #pragma omp simd 11265 for (int i = 0; i < 10; ++i) 11266 ; 11267 } 11268 #pragma omp parallel for 11269 for (int i = 0; i < 10; ++i) { 11270 #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?}} 11271 for (int i = 0; i < 10; ++i) 11272 ; 11273 } 11274 11275 #pragma omp parallel for 11276 for (int i = 0; i < 10; ++i) { 11277 #pragma omp parallel 11278 for (int i = 0; i < 10; ++i) 11279 ; 11280 } 11281 #pragma omp parallel for 11282 for (int i = 0; i < 10; ++i) { 11283 #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?}} 11284 { 11285 bar(); 11286 } 11287 } 11288 #pragma omp parallel for 11289 for (int i = 0; i < 10; ++i) { 11290 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 11291 { 11292 bar(); 11293 } 11294 } 11295 #pragma omp parallel for 11296 for (int i = 0; i < 10; ++i) { 11297 #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?}} 11298 { 11299 bar(); 11300 } 11301 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11302 { 11303 bar(); 11304 } 11305 #pragma omp critical 11306 { 11307 bar(); 11308 } 11309 } 11310 #pragma omp parallel for 11311 for (int i = 0; i < 10; ++i) { 11312 #pragma omp parallel 11313 { 11314 #pragma omp single // OK 11315 { 11316 bar(); 11317 } 11318 #pragma omp master // OK 11319 { 11320 bar(); 11321 } 11322 #pragma omp critical // OK 11323 { 11324 bar(); 11325 } 11326 #pragma omp for // OK 11327 for (int i = 0; i < 10; ++i) 11328 ; 11329 #pragma omp for simd // OK 11330 for (int i = 0; i < 10; ++i) 11331 ; 11332 #pragma omp sections // OK 11333 { 11334 bar(); 11335 } 11336 } 11337 } 11338 #pragma omp parallel for 11339 for (int i = 0; i < 10; ++i) { 11340 #pragma omp parallel for 11341 for (int i = 0; i < 10; ++i) 11342 ; 11343 } 11344 #pragma omp parallel for 11345 for (int i = 0; i < 10; ++i) { 11346 #pragma omp parallel for simd 11347 for (int i = 0; i < 10; ++i) 11348 ; 11349 } 11350 #pragma omp parallel for 11351 for (int i = 0; i < 10; ++i) { 11352 #pragma omp parallel sections 11353 { 11354 bar(); 11355 } 11356 } 11357 #pragma omp parallel for 11358 for (int i = 0; i < 10; ++i) { 11359 #pragma omp task 11360 { 11361 bar(); 11362 } 11363 } 11364 #pragma omp parallel for 11365 for (int i = 0; i < 10; ++i) { 11366 #pragma omp taskyield 11367 bar(); 11368 } 11369 #pragma omp parallel for 11370 for (int i = 0; i < 10; ++i) { 11371 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 11372 bar(); 11373 } 11374 #pragma omp parallel for 11375 for (int i = 0; i < 10; ++i) { 11376 #pragma omp taskwait 11377 bar(); 11378 } 11379 #pragma omp parallel for 11380 for (int i = 0; i < 10; ++i) { 11381 #pragma omp flush 11382 bar(); 11383 } 11384 #pragma omp parallel for 11385 for (int i = 0; i < 10; ++i) { 11386 #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?}} 11387 bar(); 11388 } 11389 #pragma omp parallel for ordered 11390 for (int i = 0; i < 10; ++i) { 11391 #pragma omp ordered // OK 11392 bar(); 11393 } 11394 #pragma omp parallel for 11395 for (int i = 0; i < 10; ++i) { 11396 #pragma omp atomic 11397 ++a; 11398 } 11399 #pragma omp parallel for 11400 for (int i = 0; i < 10; ++i) { 11401 #pragma omp target 11402 ++a; 11403 } 11404 #pragma omp parallel for 11405 for (int i = 0; i < 10; ++i) { 11406 #pragma omp target parallel 11407 ++a; 11408 } 11409 #pragma omp parallel for 11410 for (int i = 0; i < 10; ++i) { 11411 #pragma omp target parallel for 11412 for (int i = 0; i < 10; ++i) 11413 ; 11414 } 11415 #pragma omp parallel for 11416 for (int i = 0; i < 10; ++i) { 11417 #pragma omp target enter data map(to: a) 11418 ++a; 11419 } 11420 #pragma omp parallel for 11421 for (int i = 0; i < 10; ++i) { 11422 #pragma omp target exit data map(from: a) 11423 ++a; 11424 } 11425 #pragma omp parallel for 11426 for (int i = 0; i < 10; ++i) { 11427 #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?}} 11428 ++a; 11429 } 11430 #pragma omp parallel for 11431 for (int i = 0; i < 10; ++i) { 11432 #pragma omp taskloop 11433 for (int i = 0; i < 10; ++i) 11434 ++a; 11435 } 11436 #pragma omp parallel for 11437 for (int i = 0; i < 10; ++i) { 11438 #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?}} 11439 for (int j = 0; j < 10; ++j) 11440 ; 11441 } 11442 #pragma omp parallel for 11443 for (int i = 0; i < 10; ++i) { 11444 #pragma omp target update to(a) 11445 a++; 11446 } 11447 #pragma omp parallel for 11448 for (int i = 0; i < 10; ++i) { 11449 #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?}} 11450 for (int j = 0; j < 10; ++j) 11451 ; 11452 } 11453 #pragma omp parallel for 11454 for (int i = 0; i < 10; ++i) { 11455 #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?}} 11456 for (int j = 0; j < 10; ++j) 11457 ; 11458 } 11459 #pragma omp parallel for 11460 for (int i = 0; i < 10; ++i) { 11461 #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?}} 11462 for (int j = 0; j < 10; ++j) 11463 ; 11464 } 11465 #pragma omp parallel for 11466 for (int i = 0; i < 10; ++i) { 11467 #pragma omp target simd // OK 11468 for (int j = 0; j < 10; ++j) 11469 ; 11470 } 11471 #pragma omp parallel for 11472 for (int i = 0; i < 10; ++i) { 11473 #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?}} 11474 for (int j = 0; j < 10; ++j) 11475 ; 11476 } 11477 #pragma omp parallel for 11478 for (int i = 0; i < 10; ++i) { 11479 #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?}} 11480 for (int j = 0; j < 10; ++j) 11481 ; 11482 } 11483 #pragma omp parallel for 11484 for (int i = 0; i < 10; ++i) { 11485 #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?}} 11486 for (int j = 0; j < 10; ++j) 11487 ; 11488 } 11489 #pragma omp parallel for 11490 for (int i = 0; i < 10; ++i) { 11491 #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?}} 11492 for (int j = 0; j < 10; ++j) 11493 ; 11494 } 11495 #pragma omp parallel for 11496 for (int i = 0; i < 10; ++i) { 11497 #pragma omp target teams // OK 11498 a++; 11499 } 11500 #pragma omp parallel for 11501 for (int i = 0; i < 10; ++i) { 11502 #pragma omp target teams distribute // OK 11503 for (int j = 0; j < 10; ++j) 11504 ; 11505 } 11506 #pragma omp parallel for 11507 for (int i = 0; i < 10; ++i) { 11508 #pragma omp target teams distribute parallel for // OK 11509 for (int j = 0; j < 10; ++j) 11510 ; 11511 } 11512 #pragma omp parallel for 11513 for (int i = 0; i < 10; ++i) { 11514 #pragma omp target teams distribute parallel for simd // OK 11515 for (int j = 0; j < 10; ++j) 11516 ; 11517 } 11518 #pragma omp parallel for 11519 for (int i = 0; i < 10; ++i) { 11520 #pragma omp target teams distribute simd // OK 11521 for (int j = 0; j < 10; ++j) 11522 ; 11523 } 11524 11525 // PARALLEL FOR SIMD DIRECTIVE 11526 #pragma omp parallel for simd 11527 for (int i = 0; i < 10; ++i) { 11528 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11529 for (int i = 0; i < 10; ++i) 11530 ; 11531 } 11532 #pragma omp parallel for simd 11533 for (int i = 0; i < 10; ++i) { 11534 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11535 for (int i = 0; i < 10; ++i) 11536 ; 11537 } 11538 #pragma omp parallel for simd 11539 for (int i = 0; i < 10; ++i) { 11540 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11541 for (int i = 0; i < 10; ++i) 11542 ; 11543 } 11544 #pragma omp parallel for simd 11545 for (int i = 0; i < 10; ++i) { 11546 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11547 for (int i = 0; i < 10; ++i) 11548 ; 11549 } 11550 #pragma omp parallel for simd 11551 for (int i = 0; i < 10; ++i) { 11552 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11553 { 11554 bar(); 11555 } 11556 } 11557 #pragma omp parallel for simd 11558 for (int i = 0; i < 10; ++i) { 11559 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11560 { 11561 bar(); 11562 } 11563 } 11564 #pragma omp parallel for simd 11565 for (int i = 0; i < 10; ++i) { 11566 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11567 { 11568 bar(); 11569 } 11570 } 11571 11572 #pragma omp parallel for simd 11573 for (int i = 0; i < 10; ++i) { 11574 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11575 { 11576 bar(); 11577 } 11578 } 11579 11580 #pragma omp parallel for simd 11581 for (int i = 0; i < 10; ++i) { 11582 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11583 { 11584 bar(); 11585 } 11586 } 11587 11588 #pragma omp parallel for simd 11589 for (int i = 0; i < 10; ++i) { 11590 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11591 { 11592 #pragma omp single 11593 { 11594 bar(); 11595 } 11596 #pragma omp for 11597 for (int i = 0; i < 10; ++i) 11598 ; 11599 #pragma omp for simd 11600 for (int i = 0; i < 10; ++i) 11601 ; 11602 #pragma omp sections 11603 { 11604 bar(); 11605 } 11606 } 11607 } 11608 #pragma omp parallel for simd 11609 for (int i = 0; i < 10; ++i) { 11610 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11611 for (int i = 0; i < 10; ++i) 11612 ; 11613 } 11614 #pragma omp parallel for simd 11615 for (int i = 0; i < 10; ++i) { 11616 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 11617 for (int i = 0; i < 10; ++i) 11618 ; 11619 } 11620 #pragma omp parallel for simd 11621 for (int i = 0; i < 10; ++i) { 11622 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11623 { 11624 bar(); 11625 } 11626 } 11627 #pragma omp parallel for simd 11628 for (int i = 0; i < 10; ++i) { 11629 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11630 { 11631 bar(); 11632 } 11633 } 11634 #pragma omp parallel for simd 11635 for (int i = 0; i < 10; ++i) { 11636 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11637 bar(); 11638 } 11639 #pragma omp parallel for simd 11640 for (int i = 0; i < 10; ++i) { 11641 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11642 bar(); 11643 } 11644 #pragma omp parallel for simd 11645 for (int i = 0; i < 10; ++i) { 11646 #pragma omp taskwait // 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 flush // 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 ordered // 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 ordered // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11667 ++a; 11668 } 11669 #pragma omp parallel for simd 11670 for (int i = 0; i < 10; ++i) { 11671 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11672 ++a; 11673 } 11674 #pragma omp parallel for simd 11675 for (int i = 0; i < 10; ++i) { 11676 #pragma omp target parallel // 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 parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11682 for (int i = 0; i < 10; ++i) 11683 ; 11684 } 11685 #pragma omp parallel for simd 11686 for (int i = 0; i < 10; ++i) { 11687 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11688 ++a; 11689 } 11690 #pragma omp parallel for simd 11691 for (int i = 0; i < 10; ++i) { 11692 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11693 ++a; 11694 } 11695 #pragma omp parallel for simd 11696 for (int i = 0; i < 10; ++i) { 11697 #pragma omp teams // 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 taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11703 for (int i = 0; i < 10; ++i) 11704 ++a; 11705 } 11706 #pragma omp parallel for simd 11707 for (int i = 0; i < 10; ++i) { 11708 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11709 for (int j = 0; j < 10; ++j) 11710 ; 11711 } 11712 #pragma omp parallel for simd 11713 for (int i = 0; i < 10; ++i) { 11714 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11715 a++; 11716 } 11717 #pragma omp parallel for simd 11718 for (int i = 0; i < 10; ++i) { 11719 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11720 for (int j = 0; j < 10; ++j) 11721 ; 11722 } 11723 #pragma omp parallel for simd 11724 for (int i = 0; i < 10; ++i) { 11725 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11726 for (int j = 0; j < 10; ++j) 11727 ; 11728 } 11729 #pragma omp parallel for simd 11730 for (int i = 0; i < 10; ++i) { 11731 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11732 for (int j = 0; j < 10; ++j) 11733 ; 11734 } 11735 #pragma omp parallel for simd 11736 for (int i = 0; i < 10; ++i) { 11737 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11738 for (int j = 0; j < 10; ++j) 11739 ; 11740 } 11741 #pragma omp parallel for simd 11742 for (int i = 0; i < 10; ++i) { 11743 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11744 for (int j = 0; j < 10; ++j) 11745 ; 11746 } 11747 #pragma omp parallel for simd 11748 for (int i = 0; i < 10; ++i) { 11749 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11750 for (int j = 0; j < 10; ++j) 11751 ; 11752 } 11753 #pragma omp parallel for simd 11754 for (int i = 0; i < 10; ++i) { 11755 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11756 for (int j = 0; j < 10; ++j) 11757 ; 11758 } 11759 #pragma omp parallel for simd 11760 for (int i = 0; i < 10; ++i) { 11761 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11762 for (int j = 0; j < 10; ++j) 11763 ; 11764 } 11765 #pragma omp parallel for simd 11766 for (int i = 0; i < 10; ++i) { 11767 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11768 a++; 11769 } 11770 #pragma omp parallel for simd 11771 for (int i = 0; i < 10; ++i) { 11772 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11773 for (int j = 0; j < 10; ++j) 11774 ; 11775 } 11776 #pragma omp parallel for simd 11777 for (int i = 0; i < 10; ++i) { 11778 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11779 for (int j = 0; j < 10; ++j) 11780 ; 11781 } 11782 #pragma omp parallel for simd 11783 for (int i = 0; i < 10; ++i) { 11784 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11785 for (int j = 0; j < 10; ++j) 11786 ; 11787 } 11788 #pragma omp parallel for simd 11789 for (int i = 0; i < 10; ++i) { 11790 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11791 for (int j = 0; j < 10; ++j) 11792 ; 11793 } 11794 11795 // PARALLEL SECTIONS DIRECTIVE 11796 #pragma omp parallel sections 11797 { 11798 #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?}} 11799 for (int i = 0; i < 10; ++i) 11800 ; 11801 } 11802 #pragma omp parallel sections 11803 { 11804 #pragma omp simd 11805 for (int i = 0; i < 10; ++i) 11806 ; 11807 } 11808 #pragma omp parallel sections 11809 { 11810 #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?}} 11811 for (int i = 0; i < 10; ++i) 11812 ; 11813 } 11814 #pragma omp parallel sections 11815 { 11816 #pragma omp parallel 11817 for (int i = 0; i < 10; ++i) 11818 ; 11819 } 11820 #pragma omp parallel sections 11821 { 11822 #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?}} 11823 { 11824 bar(); 11825 } 11826 } 11827 #pragma omp parallel sections 11828 { 11829 #pragma omp section 11830 { 11831 bar(); 11832 } 11833 } 11834 #pragma omp parallel sections 11835 { 11836 #pragma omp section 11837 { 11838 #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?}} 11839 bar(); 11840 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 11841 bar(); 11842 #pragma omp critical 11843 bar(); 11844 } 11845 } 11846 #pragma omp parallel sections 11847 { 11848 #pragma omp parallel 11849 { 11850 #pragma omp single // OK 11851 { 11852 bar(); 11853 } 11854 #pragma omp master // OK 11855 { 11856 bar(); 11857 } 11858 #pragma omp critical // OK 11859 { 11860 bar(); 11861 } 11862 #pragma omp for // OK 11863 for (int i = 0; i < 10; ++i) 11864 ; 11865 #pragma omp for simd // OK 11866 for (int i = 0; i < 10; ++i) 11867 ; 11868 #pragma omp sections // OK 11869 { 11870 bar(); 11871 } 11872 } 11873 } 11874 #pragma omp parallel sections 11875 { 11876 #pragma omp parallel for 11877 for (int i = 0; i < 10; ++i) 11878 ; 11879 } 11880 #pragma omp parallel sections 11881 { 11882 #pragma omp parallel for simd 11883 for (int i = 0; i < 10; ++i) 11884 ; 11885 } 11886 #pragma omp parallel sections 11887 { 11888 #pragma omp parallel sections 11889 { 11890 bar(); 11891 } 11892 } 11893 #pragma omp parallel sections 11894 { 11895 #pragma omp task 11896 { 11897 bar(); 11898 } 11899 } 11900 #pragma omp parallel sections 11901 { 11902 #pragma omp taskyield 11903 } 11904 #pragma omp parallel sections 11905 { 11906 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 11907 } 11908 #pragma omp parallel sections 11909 { 11910 #pragma omp taskwait 11911 } 11912 #pragma omp parallel sections 11913 { 11914 #pragma omp flush 11915 } 11916 #pragma omp parallel sections 11917 { 11918 #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?}} 11919 bar(); 11920 } 11921 #pragma omp parallel sections 11922 { 11923 #pragma omp atomic 11924 ++a; 11925 } 11926 #pragma omp parallel sections 11927 { 11928 #pragma omp target 11929 ++a; 11930 } 11931 #pragma omp parallel sections 11932 { 11933 #pragma omp target parallel 11934 ++a; 11935 } 11936 #pragma omp parallel sections 11937 { 11938 #pragma omp target parallel for 11939 for (int i = 0; i < 10; ++i) 11940 ; 11941 } 11942 #pragma omp parallel sections 11943 { 11944 #pragma omp target enter data map(to: a) 11945 } 11946 #pragma omp parallel sections 11947 { 11948 #pragma omp target exit data map(from: a) 11949 } 11950 #pragma omp parallel sections 11951 { 11952 #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?}} 11953 ++a; 11954 } 11955 #pragma omp parallel sections 11956 { 11957 #pragma omp taskloop 11958 for (int i = 0; i < 10; ++i) 11959 ++a; 11960 } 11961 #pragma omp parallel sections 11962 { 11963 #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?}} 11964 for (int i = 0; i < 10; ++i) 11965 ; 11966 } 11967 #pragma omp parallel sections 11968 { 11969 #pragma omp target update to(a) 11970 } 11971 #pragma omp parallel sections 11972 { 11973 #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?}} 11974 for (int i = 0; i < 10; ++i) 11975 ; 11976 } 11977 #pragma omp parallel sections 11978 { 11979 #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?}} 11980 for (int i = 0; i < 10; ++i) 11981 ; 11982 } 11983 #pragma omp parallel sections 11984 { 11985 #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?}} 11986 for (int i = 0; i < 10; ++i) 11987 ; 11988 } 11989 #pragma omp parallel sections 11990 { 11991 #pragma omp target simd // OK 11992 for (int i = 0; i < 10; ++i) 11993 ; 11994 } 11995 #pragma omp parallel sections 11996 { 11997 #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?}} 11998 for (int i = 0; i < 10; ++i) 11999 ; 12000 } 12001 #pragma omp parallel sections 12002 { 12003 #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?}} 12004 for (int i = 0; i < 10; ++i) 12005 ; 12006 } 12007 #pragma omp parallel sections 12008 { 12009 #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?}} 12010 for (int i = 0; i < 10; ++i) 12011 ; 12012 } 12013 #pragma omp parallel sections 12014 { 12015 #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?}} 12016 for (int i = 0; i < 10; ++i) 12017 ; 12018 } 12019 #pragma omp parallel sections 12020 { 12021 #pragma omp target teams // OK 12022 a++; 12023 } 12024 #pragma omp parallel sections 12025 { 12026 #pragma omp target teams distribute // OK 12027 for (int i = 0; i < 10; ++i) 12028 ; 12029 } 12030 #pragma omp parallel sections 12031 { 12032 #pragma omp target teams distribute parallel for // OK 12033 for (int i = 0; i < 10; ++i) 12034 ; 12035 } 12036 #pragma omp parallel sections 12037 { 12038 #pragma omp target teams distribute parallel for simd // OK 12039 for (int i = 0; i < 10; ++i) 12040 ; 12041 } 12042 #pragma omp parallel sections 12043 { 12044 #pragma omp target teams distribute simd // OK 12045 for (int i = 0; i < 10; ++i) 12046 ; 12047 } 12048 12049 // TASK DIRECTIVE 12050 #pragma omp task 12051 #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?}} 12052 for (int i = 0; i < 10; ++i) 12053 ; 12054 #pragma omp task 12055 #pragma omp simd 12056 for (int i = 0; i < 10; ++i) 12057 ; 12058 #pragma omp task 12059 #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?}} 12060 for (int i = 0; i < 10; ++i) 12061 ; 12062 #pragma omp task 12063 #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?}} 12064 { 12065 bar(); 12066 } 12067 #pragma omp task 12068 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 12069 { 12070 bar(); 12071 } 12072 #pragma omp task 12073 #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?}} 12074 bar(); 12075 #pragma omp task 12076 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 12077 bar(); 12078 #pragma omp task 12079 #pragma omp critical 12080 bar(); 12081 #pragma omp task 12082 #pragma omp parallel for 12083 for (int i = 0; i < 10; ++i) 12084 ; 12085 #pragma omp task 12086 #pragma omp parallel for simd 12087 for (int i = 0; i < 10; ++i) 12088 ; 12089 #pragma omp task 12090 #pragma omp parallel sections 12091 { 12092 bar(); 12093 } 12094 #pragma omp task 12095 #pragma omp task 12096 { 12097 bar(); 12098 } 12099 #pragma omp task 12100 { 12101 #pragma omp taskyield 12102 bar(); 12103 } 12104 #pragma omp task 12105 { 12106 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 12107 bar(); 12108 } 12109 #pragma omp task 12110 { 12111 #pragma omp taskwait 12112 bar(); 12113 } 12114 #pragma omp task 12115 { 12116 #pragma omp flush 12117 bar(); 12118 } 12119 #pragma omp task 12120 { 12121 #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?}} 12122 bar(); 12123 } 12124 #pragma omp task 12125 { 12126 #pragma omp atomic 12127 ++a; 12128 } 12129 #pragma omp task 12130 { 12131 #pragma omp target 12132 ++a; 12133 } 12134 #pragma omp task 12135 { 12136 #pragma omp target parallel 12137 ++a; 12138 } 12139 #pragma omp task 12140 #pragma omp target parallel for 12141 for (int i = 0; i < 10; ++i) 12142 ; 12143 #pragma omp task 12144 { 12145 #pragma omp target enter data map(to: a) 12146 ++a; 12147 } 12148 #pragma omp task 12149 { 12150 #pragma omp target exit data map(from: a) 12151 ++a; 12152 } 12153 #pragma omp task 12154 { 12155 #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?}} 12156 ++a; 12157 } 12158 #pragma omp task 12159 { 12160 #pragma omp taskloop 12161 for (int i = 0; i < 10; ++i) 12162 ++a; 12163 } 12164 #pragma omp task 12165 { 12166 #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?}} 12167 for (int i = 0; i < 10; ++i) 12168 ; 12169 } 12170 #pragma omp task 12171 { 12172 #pragma omp target update to(a) 12173 a++; 12174 } 12175 #pragma omp task 12176 { 12177 #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?}} 12178 for (int i = 0; i < 10; ++i) 12179 ; 12180 } 12181 #pragma omp task 12182 { 12183 #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?}} 12184 for (int i = 0; i < 10; ++i) 12185 ; 12186 } 12187 #pragma omp task 12188 { 12189 #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?}} 12190 for (int i = 0; i < 10; ++i) 12191 ; 12192 } 12193 #pragma omp task 12194 { 12195 #pragma omp target simd // OK 12196 for (int i = 0; i < 10; ++i) 12197 ; 12198 } 12199 #pragma omp task 12200 { 12201 #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?}} 12202 for (int i = 0; i < 10; ++i) 12203 ; 12204 } 12205 #pragma omp task 12206 { 12207 #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?}} 12208 for (int i = 0; i < 10; ++i) 12209 ; 12210 } 12211 #pragma omp task 12212 { 12213 #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?}} 12214 for (int i = 0; i < 10; ++i) 12215 ; 12216 } 12217 #pragma omp task 12218 { 12219 #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?}} 12220 for (int i = 0; i < 10; ++i) 12221 ; 12222 } 12223 #pragma omp task 12224 { 12225 #pragma omp target teams // OK 12226 a++; 12227 } 12228 #pragma omp task 12229 { 12230 #pragma omp target teams distribute // OK 12231 for (int i = 0; i < 10; ++i) 12232 ; 12233 } 12234 #pragma omp task 12235 { 12236 #pragma omp target teams distribute parallel for // OK 12237 for (int i = 0; i < 10; ++i) 12238 ; 12239 } 12240 #pragma omp task 12241 { 12242 #pragma omp target teams distribute parallel for simd // OK 12243 for (int i = 0; i < 10; ++i) 12244 ; 12245 } 12246 #pragma omp task 12247 { 12248 #pragma omp target teams distribute simd // OK 12249 for (int i = 0; i < 10; ++i) 12250 ; 12251 } 12252 12253 // ATOMIC DIRECTIVE 12254 #pragma omp atomic 12255 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12256 // expected-note@+1 {{expected an expression statement}} 12257 { 12258 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12259 for (int i = 0; i < 10; ++i) 12260 ; 12261 } 12262 #pragma omp atomic 12263 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12264 // expected-note@+1 {{expected an expression statement}} 12265 { 12266 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12267 for (int i = 0; i < 10; ++i) 12268 ; 12269 } 12270 #pragma omp atomic 12271 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12272 // expected-note@+1 {{expected an expression statement}} 12273 { 12274 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12275 for (int i = 0; i < 10; ++i) 12276 ; 12277 } 12278 #pragma omp atomic 12279 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12280 // expected-note@+1 {{expected an expression statement}} 12281 { 12282 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12283 for (int i = 0; i < 10; ++i) 12284 ; 12285 } 12286 #pragma omp atomic 12287 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12288 // expected-note@+1 {{expected an expression statement}} 12289 { 12290 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12291 { 12292 bar(); 12293 } 12294 } 12295 #pragma omp atomic 12296 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12297 // expected-note@+1 {{expected an expression statement}} 12298 { 12299 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12300 { 12301 bar(); 12302 } 12303 } 12304 #pragma omp atomic 12305 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12306 // expected-note@+1 {{expected an expression statement}} 12307 { 12308 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12309 { 12310 bar(); 12311 } 12312 } 12313 #pragma omp atomic 12314 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12315 // expected-note@+1 {{expected an expression statement}} 12316 { 12317 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12318 { 12319 bar(); 12320 } 12321 } 12322 #pragma omp atomic 12323 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12324 // expected-note@+1 {{expected an expression statement}} 12325 { 12326 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12327 { 12328 bar(); 12329 } 12330 } 12331 #pragma omp atomic 12332 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12333 // expected-note@+1 {{expected an expression statement}} 12334 { 12335 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12336 for (int i = 0; i < 10; ++i) 12337 ; 12338 } 12339 #pragma omp atomic 12340 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12341 // expected-note@+1 {{expected an expression statement}} 12342 { 12343 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12344 for (int i = 0; i < 10; ++i) 12345 ; 12346 } 12347 #pragma omp atomic 12348 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12349 // expected-note@+1 {{expected an expression statement}} 12350 { 12351 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12352 { 12353 bar(); 12354 } 12355 } 12356 #pragma omp atomic 12357 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12358 // expected-note@+1 {{expected an expression statement}} 12359 { 12360 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12361 { 12362 bar(); 12363 } 12364 } 12365 #pragma omp atomic 12366 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12367 // expected-note@+1 {{expected an expression statement}} 12368 { 12369 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12370 bar(); 12371 } 12372 #pragma omp atomic 12373 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12374 // expected-note@+1 {{expected an expression statement}} 12375 { 12376 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12377 bar(); 12378 } 12379 #pragma omp atomic 12380 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12381 // expected-note@+1 {{expected an expression statement}} 12382 { 12383 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12384 bar(); 12385 } 12386 #pragma omp atomic 12387 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12388 // expected-note@+1 {{expected an expression statement}} 12389 { 12390 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12391 bar(); 12392 } 12393 #pragma omp atomic 12394 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12395 // expected-note@+1 {{expected an expression statement}} 12396 { 12397 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12398 bar(); 12399 } 12400 #pragma omp atomic 12401 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12402 // expected-note@+1 {{expected an expression statement}} 12403 { 12404 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12405 ++a; 12406 } 12407 #pragma omp atomic 12408 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12409 // expected-note@+1 {{expected an expression statement}} 12410 { 12411 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12412 ++a; 12413 } 12414 #pragma omp atomic 12415 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12416 // expected-note@+1 {{expected an expression statement}} 12417 { 12418 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12419 ++a; 12420 } 12421 #pragma omp atomic 12422 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12423 // expected-note@+1 {{expected an expression statement}} 12424 { 12425 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12426 for (int i = 0; i < 10; ++i) 12427 ; 12428 } 12429 #pragma omp atomic 12430 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12431 // expected-note@+1 {{expected an expression statement}} 12432 { 12433 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12434 ++a; 12435 } 12436 #pragma omp atomic 12437 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12438 // expected-note@+1 {{expected an expression statement}} 12439 { 12440 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12441 ++a; 12442 } 12443 #pragma omp atomic 12444 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12445 // expected-note@+1 {{expected an expression statement}} 12446 { 12447 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12448 ++a; 12449 } 12450 #pragma omp atomic 12451 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12452 // expected-note@+1 {{expected an expression statement}} 12453 { 12454 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12455 for (int i = 0; i < 10; ++i) 12456 ++a; 12457 } 12458 #pragma omp atomic 12459 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12460 // expected-note@+1 {{expected an expression statement}} 12461 { 12462 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12463 for (int i = 0; i < 10; ++i) 12464 ; 12465 } 12466 #pragma omp atomic 12467 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12468 // expected-note@+1 {{expected an expression statement}} 12469 { 12470 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12471 } 12472 #pragma omp atomic 12473 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12474 // expected-note@+1 {{expected an expression statement}} 12475 { 12476 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12477 for (int i = 0; i < 10; ++i) 12478 ; 12479 } 12480 #pragma omp atomic 12481 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12482 // expected-note@+1 {{expected an expression statement}} 12483 { 12484 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12485 for (int i = 0; i < 10; ++i) 12486 ; 12487 } 12488 #pragma omp atomic 12489 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12490 // expected-note@+1 {{expected an expression statement}} 12491 { 12492 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12493 for (int i = 0; i < 10; ++i) 12494 ; 12495 } 12496 #pragma omp atomic 12497 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12498 // expected-note@+1 {{expected an expression statement}} 12499 { 12500 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12501 for (int i = 0; i < 10; ++i) 12502 ; 12503 } 12504 #pragma omp atomic 12505 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12506 // expected-note@+1 {{expected an expression statement}} 12507 { 12508 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12509 for (int i = 0; i < 10; ++i) 12510 ; 12511 } 12512 #pragma omp atomic 12513 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12514 // expected-note@+1 {{expected an expression statement}} 12515 { 12516 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12517 for (int i = 0; i < 10; ++i) 12518 ; 12519 } 12520 #pragma omp atomic 12521 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12522 // expected-note@+1 {{expected an expression statement}} 12523 { 12524 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12525 for (int i = 0; i < 10; ++i) 12526 ; 12527 } 12528 #pragma omp atomic 12529 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12530 // expected-note@+1 {{expected an expression statement}} 12531 { 12532 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12533 for (int i = 0; i < 10; ++i) 12534 ; 12535 } 12536 #pragma omp atomic 12537 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12538 // expected-note@+1 {{expected an expression statement}} 12539 { 12540 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12541 a++; 12542 } 12543 #pragma omp atomic 12544 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12545 // expected-note@+1 {{expected an expression statement}} 12546 { 12547 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12548 for (int i = 0; i < 10; ++i) 12549 ; 12550 } 12551 #pragma omp atomic 12552 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12553 // expected-note@+1 {{expected an expression statement}} 12554 { 12555 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12556 for (int i = 0; i < 10; ++i) 12557 ; 12558 } 12559 #pragma omp atomic 12560 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12561 // expected-note@+1 {{expected an expression statement}} 12562 { 12563 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12564 for (int i = 0; i < 10; ++i) 12565 ; 12566 } 12567 #pragma omp atomic 12568 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12569 // expected-note@+1 {{expected an expression statement}} 12570 { 12571 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12572 for (int i = 0; i < 10; ++i) 12573 ; 12574 } 12575 12576 // TARGET DIRECTIVE 12577 #pragma omp target 12578 #pragma omp parallel 12579 bar(); 12580 #pragma omp target 12581 #pragma omp for 12582 for (int i = 0; i < 10; ++i) 12583 ; 12584 #pragma omp target 12585 #pragma omp simd 12586 for (int i = 0; i < 10; ++i) 12587 ; 12588 #pragma omp target 12589 #pragma omp for simd 12590 for (int i = 0; i < 10; ++i) 12591 ; 12592 #pragma omp target 12593 #pragma omp sections 12594 { 12595 bar(); 12596 } 12597 #pragma omp target 12598 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 12599 { 12600 bar(); 12601 } 12602 #pragma omp target 12603 #pragma omp single 12604 bar(); 12605 12606 #pragma omp target 12607 #pragma omp master 12608 { 12609 bar(); 12610 } 12611 #pragma omp target 12612 #pragma omp critical 12613 { 12614 bar(); 12615 } 12616 #pragma omp target 12617 #pragma omp parallel for 12618 for (int i = 0; i < 10; ++i) 12619 ; 12620 #pragma omp target 12621 #pragma omp parallel for simd 12622 for (int i = 0; i < 10; ++i) 12623 ; 12624 #pragma omp target 12625 #pragma omp parallel sections 12626 { 12627 bar(); 12628 } 12629 #pragma omp target 12630 #pragma omp task 12631 { 12632 bar(); 12633 } 12634 #pragma omp target 12635 { 12636 #pragma omp taskyield 12637 bar(); 12638 } 12639 #pragma omp target 12640 { 12641 #pragma omp barrier 12642 bar(); 12643 } 12644 #pragma omp target 12645 { 12646 #pragma omp taskwait 12647 bar(); 12648 } 12649 #pragma omp target 12650 { 12651 #pragma omp flush 12652 bar(); 12653 } 12654 #pragma omp target 12655 { 12656 #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?}} 12657 bar(); 12658 } 12659 #pragma omp target 12660 { 12661 #pragma omp atomic 12662 ++a; 12663 } 12664 #pragma omp target 12665 { 12666 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 12667 ++a; 12668 } 12669 #pragma omp target 12670 { 12671 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 12672 ++a; 12673 } 12674 #pragma omp target 12675 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 12676 for (int i = 0; i < 10; ++i) 12677 ; 12678 #pragma omp target 12679 { 12680 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 12681 } 12682 #pragma omp target 12683 { 12684 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 12685 } 12686 #pragma omp target 12687 { 12688 #pragma omp teams 12689 ++a; 12690 } 12691 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 12692 { 12693 ++a; // expected-note {{statement outside teams construct here}} 12694 #pragma omp teams // expected-note {{nested teams construct here}} 12695 ++a; 12696 } 12697 #pragma omp target 12698 { 12699 #pragma omp taskloop 12700 for (int i = 0; i < 10; ++i) 12701 ++a; 12702 } 12703 #pragma omp target 12704 { 12705 #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?}} 12706 for (int i = 0; i < 10; ++i) 12707 ; 12708 } 12709 #pragma omp atomic 12710 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 12711 // expected-note@+1 {{expected an expression statement}} 12712 { 12713 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 12714 a++; 12715 } 12716 #pragma omp target 12717 { 12718 #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?}} 12719 for (int i = 0; i < 10; ++i) 12720 ; 12721 } 12722 #pragma omp target 12723 { 12724 #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?}} 12725 for (int i = 0; i < 10; ++i) 12726 ; 12727 } 12728 #pragma omp target 12729 { 12730 #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?}} 12731 for (int i = 0; i < 10; ++i) 12732 ; 12733 } 12734 #pragma omp target 12735 { 12736 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 12737 for (int i = 0; i < 10; ++i) 12738 ; 12739 } 12740 #pragma omp target 12741 { 12742 #pragma omp teams distribute // OK 12743 for (int i = 0; i < 10; ++i) 12744 ; 12745 } 12746 #pragma omp target 12747 { 12748 #pragma omp teams distribute simd // OK 12749 for (int i = 0; i < 10; ++i) 12750 ; 12751 } 12752 #pragma omp target 12753 { 12754 #pragma omp teams distribute parallel for simd // OK 12755 for (int i = 0; i < 10; ++i) 12756 ; 12757 } 12758 #pragma omp target 12759 { 12760 #pragma omp teams distribute parallel for // OK 12761 for (int i = 0; i < 10; ++i) 12762 ; 12763 } 12764 #pragma omp target 12765 { 12766 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 12767 a++; 12768 } 12769 #pragma omp target 12770 { 12771 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 12772 for (int i = 0; i < 10; ++i) 12773 ; 12774 } 12775 #pragma omp target 12776 { 12777 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 12778 for (int i = 0; i < 10; ++i) 12779 ; 12780 } 12781 #pragma omp target 12782 { 12783 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 12784 for (int i = 0; i < 10; ++i) 12785 ; 12786 } 12787 #pragma omp target 12788 { 12789 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 12790 for (int i = 0; i < 10; ++i) 12791 ; 12792 } 12793 12794 // TARGET PARALLEL DIRECTIVE 12795 #pragma omp target parallel 12796 #pragma omp parallel 12797 bar(); 12798 #pragma omp target parallel 12799 #pragma omp for 12800 for (int i = 0; i < 10; ++i) 12801 ; 12802 #pragma omp target parallel 12803 #pragma omp simd 12804 for (int i = 0; i < 10; ++i) 12805 ; 12806 #pragma omp target parallel 12807 #pragma omp for simd 12808 for (int i = 0; i < 10; ++i) 12809 ; 12810 #pragma omp target parallel 12811 #pragma omp sections 12812 { 12813 bar(); 12814 } 12815 #pragma omp target parallel 12816 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 12817 { 12818 bar(); 12819 } 12820 #pragma omp target parallel 12821 #pragma omp single 12822 bar(); 12823 12824 #pragma omp target parallel 12825 #pragma omp master 12826 { 12827 bar(); 12828 } 12829 #pragma omp target parallel 12830 #pragma omp critical 12831 { 12832 bar(); 12833 } 12834 #pragma omp target parallel 12835 #pragma omp parallel for 12836 for (int i = 0; i < 10; ++i) 12837 ; 12838 #pragma omp target parallel 12839 #pragma omp parallel for simd 12840 for (int i = 0; i < 10; ++i) 12841 ; 12842 #pragma omp target parallel 12843 #pragma omp parallel sections 12844 { 12845 bar(); 12846 } 12847 #pragma omp target parallel 12848 #pragma omp task 12849 { 12850 bar(); 12851 } 12852 #pragma omp target parallel 12853 { 12854 #pragma omp taskyield 12855 bar(); 12856 } 12857 #pragma omp target parallel 12858 { 12859 #pragma omp barrier 12860 bar(); 12861 } 12862 #pragma omp target parallel 12863 { 12864 #pragma omp taskwait 12865 bar(); 12866 } 12867 #pragma omp target parallel 12868 { 12869 #pragma omp flush 12870 bar(); 12871 } 12872 #pragma omp target parallel 12873 { 12874 #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?}} 12875 bar(); 12876 } 12877 #pragma omp target parallel 12878 { 12879 #pragma omp atomic 12880 ++a; 12881 } 12882 #pragma omp target parallel 12883 { 12884 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 12885 ++a; 12886 } 12887 #pragma omp target parallel 12888 { 12889 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 12890 ++a; 12891 } 12892 #pragma omp target parallel 12893 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 12894 for (int i = 0; i < 10; ++i) 12895 ; 12896 #pragma omp target parallel 12897 { 12898 #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?}} 12899 ++a; 12900 } 12901 #pragma omp target parallel 12902 { 12903 ++a; 12904 #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?}} 12905 ++a; 12906 } 12907 #pragma omp target parallel 12908 { 12909 #pragma omp taskloop 12910 for (int i = 0; i < 10; ++i) 12911 ++a; 12912 } 12913 #pragma omp target parallel 12914 { 12915 #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?}} 12916 for (int i = 0; i < 10; ++i) 12917 ; 12918 } 12919 #pragma omp target parallel 12920 { 12921 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 12922 } 12923 #pragma omp target parallel 12924 { 12925 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 12926 } 12927 #pragma omp target parallel 12928 { 12929 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 12930 } 12931 #pragma omp target parallel 12932 { 12933 #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?}} 12934 for (int i = 0; i < 10; ++i) 12935 ; 12936 } 12937 #pragma omp target parallel 12938 { 12939 #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?}} 12940 for (int i = 0; i < 10; ++i) 12941 ; 12942 } 12943 #pragma omp target parallel 12944 { 12945 #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?}} 12946 for (int i = 0; i < 10; ++i) 12947 ; 12948 } 12949 #pragma omp target parallel 12950 { 12951 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 12952 for (int i = 0; i < 10; ++i) 12953 ; 12954 } 12955 #pragma omp target parallel 12956 { 12957 #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?}} 12958 for (int i = 0; i < 10; ++i) 12959 ; 12960 } 12961 #pragma omp target parallel 12962 { 12963 #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?}} 12964 for (int i = 0; i < 10; ++i) 12965 ; 12966 } 12967 #pragma omp target parallel 12968 { 12969 #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?}} 12970 for (int i = 0; i < 10; ++i) 12971 ; 12972 } 12973 #pragma omp target parallel 12974 { 12975 #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?}} 12976 for (int i = 0; i < 10; ++i) 12977 ; 12978 } 12979 #pragma omp target parallel 12980 { 12981 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 12982 a++; 12983 } 12984 #pragma omp target parallel 12985 { 12986 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}} 12987 for (int i = 0; i < 10; ++i) 12988 ; 12989 } 12990 #pragma omp target parallel 12991 { 12992 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 12993 for (int i = 0; i < 10; ++i) 12994 ; 12995 } 12996 #pragma omp target parallel 12997 { 12998 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}} 12999 for (int i = 0; i < 10; ++i) 13000 ; 13001 } 13002 #pragma omp target parallel 13003 { 13004 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}} 13005 for (int i = 0; i < 10; ++i) 13006 ; 13007 } 13008 13009 // TARGET PARALLEL FOR DIRECTIVE 13010 #pragma omp target parallel for 13011 for (int i = 0; i < 10; ++i) { 13012 #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?}} 13013 for (int i = 0; i < 10; ++i) 13014 ; 13015 } 13016 #pragma omp target parallel for 13017 for (int i = 0; i < 10; ++i) { 13018 #pragma omp simd 13019 for (int i = 0; i < 10; ++i) 13020 ; 13021 } 13022 #pragma omp target parallel for 13023 for (int i = 0; i < 10; ++i) { 13024 #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?}} 13025 for (int i = 0; i < 10; ++i) 13026 ; 13027 } 13028 #pragma omp target parallel for 13029 for (int i = 0; i < 10; ++i) { 13030 #pragma omp parallel 13031 for (int i = 0; i < 10; ++i) 13032 ; 13033 } 13034 #pragma omp target parallel for 13035 for (int i = 0; i < 10; ++i) { 13036 #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?}} 13037 { 13038 bar(); 13039 } 13040 } 13041 #pragma omp target parallel for 13042 for (int i = 0; i < 10; ++i) { 13043 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 13044 { 13045 bar(); 13046 } 13047 } 13048 #pragma omp target parallel for 13049 for (int i = 0; i < 10; ++i) { 13050 #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?}} 13051 { 13052 bar(); 13053 } 13054 } 13055 13056 #pragma omp target parallel for 13057 for (int i = 0; i < 10; ++i) { 13058 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13059 { 13060 bar(); 13061 } 13062 } 13063 13064 #pragma omp target parallel for 13065 for (int i = 0; i < 10; ++i) { 13066 #pragma omp critical 13067 { 13068 bar(); 13069 } 13070 } 13071 13072 #pragma omp target parallel for 13073 for (int i = 0; i < 10; ++i) { 13074 #pragma omp parallel 13075 { 13076 #pragma omp single // OK 13077 { 13078 bar(); 13079 } 13080 #pragma omp for // OK 13081 for (int i = 0; i < 10; ++i) 13082 ; 13083 #pragma omp for simd // OK 13084 for (int i = 0; i < 10; ++i) 13085 ; 13086 #pragma omp sections // OK 13087 { 13088 bar(); 13089 } 13090 } 13091 } 13092 #pragma omp target parallel for 13093 for (int i = 0; i < 10; ++i) { 13094 #pragma omp parallel for 13095 for (int i = 0; i < 10; ++i) 13096 ; 13097 } 13098 #pragma omp target parallel for 13099 for (int i = 0; i < 10; ++i) { 13100 #pragma omp parallel for simd 13101 for (int i = 0; i < 10; ++i) 13102 ; 13103 } 13104 #pragma omp target parallel for 13105 for (int i = 0; i < 10; ++i) { 13106 #pragma omp parallel sections 13107 { 13108 bar(); 13109 } 13110 } 13111 #pragma omp target parallel for 13112 for (int i = 0; i < 10; ++i) { 13113 #pragma omp task 13114 { 13115 bar(); 13116 } 13117 } 13118 #pragma omp target parallel for 13119 for (int i = 0; i < 10; ++i) { 13120 #pragma omp taskyield 13121 bar(); 13122 } 13123 #pragma omp target parallel for 13124 for (int i = 0; i < 10; ++i) { 13125 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 13126 bar(); 13127 } 13128 #pragma omp target parallel for 13129 for (int i = 0; i < 10; ++i) { 13130 #pragma omp taskwait 13131 bar(); 13132 } 13133 #pragma omp target parallel for 13134 for (int i = 0; i < 10; ++i) { 13135 #pragma omp flush 13136 bar(); 13137 } 13138 #pragma omp target parallel for 13139 for (int i = 0; i < 10; ++i) { 13140 #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?}} 13141 bar(); 13142 } 13143 #pragma omp target parallel for ordered 13144 for (int i = 0; i < 10; ++i) { 13145 #pragma omp ordered // OK 13146 bar(); 13147 } 13148 #pragma omp target parallel for 13149 for (int i = 0; i < 10; ++i) { 13150 #pragma omp atomic 13151 ++a; 13152 } 13153 #pragma omp target parallel for 13154 for (int i = 0; i < 10; ++i) { 13155 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 13156 ++a; 13157 } 13158 #pragma omp target parallel for 13159 for (int i = 0; i < 10; ++i) { 13160 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 13161 ++a; 13162 } 13163 #pragma omp target parallel for 13164 for (int i = 0; i < 10; ++i) { 13165 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 13166 for (int i = 0; i < 10; ++i) 13167 ; 13168 } 13169 #pragma omp target parallel for 13170 for (int i = 0; i < 10; ++i) { 13171 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13172 ++a; 13173 } 13174 #pragma omp target parallel for 13175 for (int i = 0; i < 10; ++i) { 13176 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13177 ++a; 13178 } 13179 #pragma omp target parallel for 13180 for (int i = 0; i < 10; ++i) { 13181 #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?}} 13182 ++a; 13183 } 13184 #pragma omp target parallel for 13185 for (int i = 0; i < 10; ++i) { 13186 #pragma omp taskloop 13187 for (int i = 0; i < 10; ++i) 13188 ++a; 13189 } 13190 #pragma omp target parallel for 13191 for (int i = 0; i < 10; ++i) { 13192 #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?}} 13193 for (int j = 0; j < 10; ++j) 13194 ; 13195 } 13196 #pragma omp target parallel for 13197 for (int i = 0; i < 10; ++i) { 13198 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 13199 a++; 13200 } 13201 #pragma omp target parallel for 13202 for (int i = 0; i < 10; ++i) { 13203 #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?}} 13204 for (int j = 0; j < 10; ++j) 13205 ; 13206 } 13207 #pragma omp target parallel for 13208 for (int i = 0; i < 10; ++i) { 13209 #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?}} 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 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?}} 13216 for (int j = 0; j < 10; ++j) 13217 ; 13218 } 13219 #pragma omp target parallel for 13220 for (int i = 0; i < 10; ++i) { 13221 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13222 for (int j = 0; j < 10; ++j) 13223 ; 13224 } 13225 #pragma omp target parallel for 13226 for (int i = 0; i < 10; ++i) { 13227 #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?}} 13228 for (int j = 0; j < 10; ++j) 13229 ; 13230 } 13231 #pragma omp target parallel for 13232 for (int i = 0; i < 10; ++i) { 13233 #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?}} 13234 for (int j = 0; j < 10; ++j) 13235 ; 13236 } 13237 #pragma omp target parallel for 13238 for (int i = 0; i < 10; ++i) { 13239 #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?}} 13240 for (int j = 0; j < 10; ++j) 13241 ; 13242 } 13243 #pragma omp target parallel for 13244 for (int i = 0; i < 10; ++i) { 13245 #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?}} 13246 for (int j = 0; j < 10; ++j) 13247 ; 13248 } 13249 #pragma omp target parallel for 13250 for (int i = 0; i < 10; ++i) { 13251 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 13252 a++; 13253 } 13254 #pragma omp target parallel for 13255 for (int i = 0; i < 10; ++i) { 13256 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' 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 target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' 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 distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13269 for (int j = 0; j < 10; ++j) 13270 ; 13271 } 13272 #pragma omp target parallel for 13273 for (int i = 0; i < 10; ++i) { 13274 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 13275 for (int j = 0; j < 10; ++j) 13276 ; 13277 } 13278 13279 // TEAMS DIRECTIVE 13280 #pragma omp target 13281 #pragma omp teams 13282 #pragma omp parallel 13283 bar(); 13284 #pragma omp target 13285 #pragma omp teams 13286 #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?}} 13287 for (int i = 0; i < 10; ++i) 13288 ; 13289 #pragma omp target 13290 #pragma omp teams 13291 #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?}} 13292 for (int i = 0; i < 10; ++i) 13293 ; 13294 #pragma omp target 13295 #pragma omp teams 13296 #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?}} 13297 for (int i = 0; i < 10; ++i) 13298 ; 13299 #pragma omp target 13300 #pragma omp teams 13301 #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?}} 13302 { 13303 bar(); 13304 } 13305 #pragma omp target 13306 #pragma omp teams 13307 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 13308 { 13309 bar(); 13310 } 13311 #pragma omp target 13312 #pragma omp teams 13313 #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?}} 13314 bar(); 13315 13316 #pragma omp target 13317 #pragma omp teams 13318 #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?}} 13319 { 13320 bar(); 13321 } 13322 #pragma omp target 13323 #pragma omp teams 13324 #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?}} 13325 { 13326 bar(); 13327 } 13328 #pragma omp target 13329 #pragma omp teams 13330 #pragma omp parallel for 13331 for (int i = 0; i < 10; ++i) 13332 ; 13333 #pragma omp target 13334 #pragma omp teams 13335 #pragma omp parallel for simd 13336 for (int i = 0; i < 10; ++i) 13337 ; 13338 #pragma omp target 13339 #pragma omp teams 13340 #pragma omp parallel sections 13341 { 13342 bar(); 13343 } 13344 #pragma omp target 13345 #pragma omp teams 13346 #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?}} 13347 { 13348 bar(); 13349 } 13350 #pragma omp target 13351 #pragma omp teams 13352 { 13353 #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?}} 13354 bar(); 13355 } 13356 #pragma omp target 13357 #pragma omp teams 13358 { 13359 #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?}} 13360 bar(); 13361 } 13362 #pragma omp target 13363 #pragma omp teams 13364 { 13365 #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?}} 13366 bar(); 13367 } 13368 #pragma omp target 13369 #pragma omp teams 13370 { 13371 #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?}} 13372 bar(); 13373 } 13374 #pragma omp target 13375 #pragma omp teams 13376 { 13377 #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?}} 13378 bar(); 13379 } 13380 #pragma omp target 13381 #pragma omp teams 13382 { 13383 #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?}} 13384 ++a; 13385 } 13386 #pragma omp target 13387 #pragma omp teams 13388 { 13389 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13390 ++a; 13391 } 13392 #pragma omp target 13393 #pragma omp teams 13394 { 13395 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13396 ++a; 13397 } 13398 #pragma omp target 13399 #pragma omp teams 13400 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13401 for (int i = 0; i < 10; ++i) 13402 ; 13403 #pragma omp target 13404 #pragma omp teams 13405 { 13406 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13407 } 13408 #pragma omp target 13409 #pragma omp teams 13410 { 13411 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13412 } 13413 #pragma omp target 13414 #pragma omp teams 13415 { 13416 #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?}} 13417 ++a; 13418 } 13419 #pragma omp target 13420 #pragma omp teams 13421 { 13422 #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?}} 13423 for (int i = 0; i < 10; ++i) 13424 ++a; 13425 } 13426 #pragma omp target 13427 #pragma omp teams 13428 #pragma omp distribute 13429 for (int i = 0; i < 10; ++i) 13430 ; 13431 #pragma omp target 13432 #pragma omp teams 13433 #pragma omp distribute 13434 for (int i = 0; i < 10; ++i) 13435 ; 13436 #pragma omp distribute 13437 for (int j = 0; j < 10; ++j) 13438 ; 13439 #pragma omp target 13440 #pragma omp teams 13441 { 13442 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13443 ++a; 13444 } 13445 #pragma omp target 13446 #pragma omp teams 13447 #pragma omp distribute parallel for 13448 for (int i = 0; i < 10; ++i) 13449 ; 13450 #pragma omp target 13451 #pragma omp teams 13452 { 13453 #pragma omp distribute parallel for 13454 for (int i = 0; i < 10; ++i) 13455 ; 13456 #pragma omp distribute parallel for 13457 for (int j = 0; j < 10; ++j) 13458 ; 13459 } 13460 #pragma omp target 13461 #pragma omp teams 13462 { 13463 #pragma omp distribute parallel for simd 13464 for (int i = 0; i < 10; ++i) 13465 ; 13466 #pragma omp distribute parallel for simd 13467 for (int j = 0; j < 10; ++j) 13468 ; 13469 } 13470 #pragma omp target 13471 #pragma omp teams 13472 { 13473 #pragma omp distribute simd 13474 for (int i = 0; i < 10; ++i) 13475 ; 13476 #pragma omp distribute simd 13477 for (int j = 0; j < 10; ++j) 13478 ; 13479 } 13480 #pragma omp target 13481 #pragma omp teams 13482 { 13483 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13484 for (int i = 0; i < 10; ++i) 13485 ; 13486 } 13487 #pragma omp target 13488 #pragma omp teams 13489 { 13490 #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?}} 13491 for (int i = 0; i < 10; ++i) 13492 ; 13493 } 13494 #pragma omp target 13495 #pragma omp teams 13496 { 13497 #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?}} 13498 for (int i = 0; i < 10; ++i) 13499 ; 13500 } 13501 #pragma omp target 13502 #pragma omp teams 13503 { 13504 #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?}} 13505 for (int i = 0; i < 10; ++i) 13506 ; 13507 } 13508 #pragma omp target 13509 #pragma omp teams 13510 { 13511 #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?}} 13512 for (int i = 0; i < 10; ++i) 13513 ; 13514 } 13515 #pragma omp target 13516 #pragma omp teams 13517 { 13518 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13519 a++; 13520 } 13521 #pragma omp target 13522 #pragma omp teams 13523 { 13524 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 13525 for (int i = 0; i < 10; ++i) 13526 ; 13527 } 13528 #pragma omp target 13529 #pragma omp teams 13530 { 13531 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 13532 for (int i = 0; i < 10; ++i) 13533 ; 13534 } 13535 #pragma omp target 13536 #pragma omp teams 13537 { 13538 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 13539 for (int i = 0; i < 10; ++i) 13540 ; 13541 } 13542 #pragma omp target 13543 #pragma omp teams 13544 { 13545 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 13546 for (int i = 0; i < 10; ++i) 13547 ; 13548 } 13549 13550 // TASKLOOP DIRECTIVE 13551 #pragma omp taskloop 13552 for (int i = 0; i < 10; ++i) { 13553 #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?}} 13554 for (int i = 0; i < 10; ++i) 13555 ; 13556 } 13557 #pragma omp taskloop 13558 for (int i = 0; i < 10; ++i) { 13559 #pragma omp simd 13560 for (int i = 0; i < 10; ++i) 13561 ; 13562 } 13563 #pragma omp taskloop 13564 for (int i = 0; i < 10; ++i) { 13565 #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?}} 13566 for (int i = 0; i < 10; ++i) 13567 ; 13568 } 13569 #pragma omp taskloop 13570 for (int i = 0; i < 10; ++i) { 13571 #pragma omp parallel 13572 for (int i = 0; i < 10; ++i) 13573 ; 13574 } 13575 #pragma omp taskloop 13576 for (int i = 0; i < 10; ++i) { 13577 #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?}} 13578 { 13579 bar(); 13580 } 13581 } 13582 #pragma omp taskloop 13583 for (int i = 0; i < 10; ++i) { 13584 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 13585 { 13586 bar(); 13587 } 13588 } 13589 #pragma omp taskloop 13590 for (int i = 0; i < 10; ++i) { 13591 #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?}} 13592 { 13593 bar(); 13594 } 13595 } 13596 13597 #pragma omp taskloop 13598 for (int i = 0; i < 10; ++i) { 13599 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 13600 { 13601 bar(); 13602 } 13603 } 13604 #pragma omp taskloop 13605 for (int i = 0; i < 10; ++i) { 13606 #pragma omp critical 13607 { 13608 bar(); 13609 } 13610 } 13611 #pragma omp taskloop 13612 for (int i = 0; i < 10; ++i) { 13613 #pragma omp parallel 13614 { 13615 #pragma omp single // OK 13616 { 13617 bar(); 13618 } 13619 #pragma omp for // OK 13620 for (int i = 0; i < 10; ++i) 13621 ; 13622 #pragma omp sections // OK 13623 { 13624 bar(); 13625 } 13626 } 13627 } 13628 #pragma omp taskloop 13629 for (int i = 0; i < 10; ++i) { 13630 #pragma omp parallel for 13631 for (int i = 0; i < 10; ++i) 13632 ; 13633 } 13634 #pragma omp taskloop 13635 for (int i = 0; i < 10; ++i) { 13636 #pragma omp parallel for simd 13637 for (int i = 0; i < 10; ++i) 13638 ; 13639 } 13640 #pragma omp taskloop 13641 for (int i = 0; i < 10; ++i) { 13642 #pragma omp parallel sections 13643 { 13644 bar(); 13645 } 13646 } 13647 #pragma omp taskloop 13648 for (int i = 0; i < 10; ++i) { 13649 #pragma omp task 13650 { 13651 bar(); 13652 } 13653 } 13654 #pragma omp taskloop 13655 for (int i = 0; i < 10; ++i) { 13656 #pragma omp taskyield 13657 bar(); 13658 } 13659 #pragma omp taskloop 13660 for (int i = 0; i < 10; ++i) { 13661 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 13662 bar(); 13663 } 13664 #pragma omp taskloop 13665 for (int i = 0; i < 10; ++i) { 13666 #pragma omp taskwait 13667 bar(); 13668 } 13669 #pragma omp taskloop 13670 for (int i = 0; i < 10; ++i) { 13671 #pragma omp flush 13672 bar(); 13673 } 13674 #pragma omp taskloop 13675 for (int i = 0; i < 10; ++i) { 13676 #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?}} 13677 bar(); 13678 } 13679 #pragma omp taskloop 13680 for (int i = 0; i < 10; ++i) { 13681 #pragma omp atomic 13682 ++a; 13683 } 13684 #pragma omp taskloop 13685 for (int i = 0; i < 10; ++i) { 13686 #pragma omp target 13687 ++a; 13688 } 13689 #pragma omp taskloop 13690 for (int i = 0; i < 10; ++i) { 13691 #pragma omp target parallel 13692 ++a; 13693 } 13694 #pragma omp taskloop 13695 for (int i = 0; i < 10; ++i) { 13696 #pragma omp target parallel for 13697 for (int i = 0; i < 10; ++i) 13698 ; 13699 } 13700 #pragma omp taskloop 13701 for (int i = 0; i < 10; ++i) { 13702 #pragma omp target enter data map(to: a) 13703 ++a; 13704 } 13705 #pragma omp taskloop 13706 for (int i = 0; i < 10; ++i) { 13707 #pragma omp target exit data map(from: a) 13708 ++a; 13709 } 13710 #pragma omp taskloop 13711 for (int i = 0; i < 10; ++i) { 13712 #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?}} 13713 ++a; 13714 } 13715 #pragma omp taskloop 13716 for (int i = 0; i < 10; ++i) { 13717 #pragma omp taskloop 13718 for (int i = 0; i < 10; ++i) 13719 ++a; 13720 } 13721 #pragma omp taskloop 13722 for (int i = 0; i < 10; ++i) { 13723 #pragma omp target update to(a) 13724 ++a; 13725 } 13726 #pragma omp taskloop 13727 for (int i = 0; i < 10; ++i) { 13728 #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?}} 13729 for (int i = 0; i < 10; ++i) 13730 ; 13731 } 13732 #pragma omp taskloop 13733 for (int i = 0; i < 10; ++i) { 13734 #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?}} 13735 for (int i = 0; i < 10; ++i) 13736 ; 13737 } 13738 #pragma omp taskloop 13739 for (int i = 0; i < 10; ++i) { 13740 #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?}} 13741 for (int i = 0; i < 10; ++i) 13742 ; 13743 } 13744 #pragma omp taskloop 13745 for (int i = 0; i < 10; ++i) { 13746 #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?}} 13747 for (int i = 0; i < 10; ++i) 13748 ; 13749 } 13750 #pragma omp taskloop 13751 for (int i = 0; i < 10; ++i) { 13752 #pragma omp target simd // OK 13753 for (int i = 0; i < 10; ++i) 13754 ; 13755 } 13756 #pragma omp taskloop 13757 for (int i = 0; i < 10; ++i) { 13758 #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?}} 13759 for (int i = 0; i < 10; ++i) 13760 ; 13761 } 13762 #pragma omp taskloop 13763 for (int i = 0; i < 10; ++i) { 13764 #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?}} 13765 for (int i = 0; i < 10; ++i) 13766 ; 13767 } 13768 #pragma omp taskloop 13769 for (int i = 0; i < 10; ++i) { 13770 #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?}} 13771 for (int i = 0; i < 10; ++i) 13772 ; 13773 } 13774 #pragma omp taskloop 13775 for (int i = 0; i < 10; ++i) { 13776 #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?}} 13777 for (int i = 0; i < 10; ++i) 13778 ; 13779 } 13780 #pragma omp taskloop 13781 for (int i = 0; i < 10; ++i) { 13782 #pragma omp target teams // OK 13783 a++; 13784 } 13785 #pragma omp taskloop 13786 for (int i = 0; i < 10; ++i) { 13787 #pragma omp target teams distribute // OK 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 target teams distribute parallel for // OK 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 distribute parallel for simd // OK 13800 for (int i = 0; i < 10; ++i) 13801 ; 13802 } 13803 #pragma omp taskloop 13804 for (int i = 0; i < 10; ++i) { 13805 #pragma omp target teams distribute simd // OK 13806 for (int i = 0; i < 10; ++i) 13807 ; 13808 } 13809 13810 // DISTRIBUTE DIRECTIVE 13811 #pragma omp target 13812 #pragma omp teams 13813 #pragma omp distribute 13814 for (int i = 0; i < 10; ++i) { 13815 #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?}} 13816 for (int i = 0; i < 10; ++i) 13817 ; 13818 } 13819 #pragma omp target 13820 #pragma omp teams 13821 #pragma omp distribute 13822 for (int i = 0; i < 10; ++i) { 13823 #pragma omp for 13824 for (int i = 0; i < 10; ++i) 13825 ; 13826 } 13827 #pragma omp target 13828 #pragma omp teams 13829 #pragma omp distribute 13830 for (int i = 0; i < 10; ++i) { 13831 #pragma omp simd 13832 for (int i = 0; i < 10; ++i) 13833 ; 13834 } 13835 #pragma omp target 13836 #pragma omp teams 13837 #pragma omp distribute 13838 for (int i = 0; i < 10; ++i) { 13839 #pragma omp for simd 13840 for (int i = 0; i < 10; ++i) 13841 ; 13842 } 13843 #pragma omp target 13844 #pragma omp teams 13845 #pragma omp distribute 13846 for (int i = 0; i < 10; ++i) { 13847 #pragma omp parallel 13848 for (int i = 0; i < 10; ++i) 13849 ; 13850 } 13851 #pragma omp target 13852 #pragma omp teams 13853 #pragma omp distribute 13854 for (int i = 0; i < 10; ++i) { 13855 #pragma omp sections 13856 { 13857 bar(); 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 section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 13865 { 13866 bar(); 13867 } 13868 } 13869 #pragma omp target 13870 #pragma omp teams 13871 #pragma omp distribute 13872 for (int i = 0; i < 10; ++i) { 13873 #pragma omp single 13874 { 13875 bar(); 13876 } 13877 } 13878 #pragma omp target 13879 #pragma omp teams 13880 #pragma omp distribute 13881 for (int i = 0; i < 10; ++i) { 13882 #pragma omp master 13883 { 13884 bar(); 13885 } 13886 } 13887 #pragma omp target 13888 #pragma omp teams 13889 #pragma omp distribute 13890 for (int i = 0; i < 10; ++i) { 13891 #pragma omp critical 13892 { 13893 bar(); 13894 } 13895 } 13896 #pragma omp target 13897 #pragma omp teams 13898 #pragma omp distribute 13899 for (int i = 0; i < 10; ++i) { 13900 #pragma omp parallel 13901 { 13902 #pragma omp single 13903 { 13904 bar(); 13905 } 13906 } 13907 } 13908 #pragma omp target 13909 #pragma omp teams 13910 #pragma omp distribute 13911 for (int i = 0; i < 10; ++i) { 13912 #pragma omp parallel for 13913 for (int i = 0; i < 10; ++i) 13914 ; 13915 } 13916 #pragma omp target 13917 #pragma omp teams 13918 #pragma omp distribute 13919 for (int i = 0; i < 10; ++i) { 13920 #pragma omp parallel for simd 13921 for (int i = 0; i < 10; ++i) 13922 ; 13923 } 13924 #pragma omp target 13925 #pragma omp teams 13926 #pragma omp distribute 13927 for (int i = 0; i < 10; ++i) { 13928 #pragma omp parallel sections 13929 { 13930 bar(); 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 task 13938 { 13939 bar(); 13940 } 13941 } 13942 #pragma omp target 13943 #pragma omp teams 13944 #pragma omp distribute 13945 for (int i = 0; i < 10; ++i) { 13946 #pragma omp taskyield 13947 bar(); 13948 } 13949 #pragma omp target 13950 #pragma omp teams 13951 #pragma omp distribute 13952 for (int i = 0; i < 10; ++i) { 13953 #pragma omp barrier 13954 bar(); 13955 } 13956 #pragma omp target 13957 #pragma omp teams 13958 #pragma omp distribute 13959 for (int i = 0; i < 10; ++i) { 13960 #pragma omp taskwait 13961 bar(); 13962 } 13963 #pragma omp target 13964 #pragma omp teams 13965 #pragma omp distribute 13966 for (int i = 0; i < 10; ++i) { 13967 #pragma omp flush 13968 bar(); 13969 } 13970 #pragma omp target 13971 #pragma omp teams 13972 #pragma omp distribute 13973 for (int i = 0; i < 10; ++i) { 13974 #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?}} 13975 bar(); 13976 } 13977 #pragma omp target 13978 #pragma omp teams 13979 #pragma omp distribute 13980 for (int i = 0; i < 10; ++i) { 13981 #pragma omp atomic 13982 ++a; 13983 } 13984 #pragma omp target 13985 #pragma omp teams 13986 #pragma omp distribute 13987 for (int i = 0; i < 10; ++i) { 13988 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13989 ++a; 13990 } 13991 #pragma omp target 13992 #pragma omp teams 13993 #pragma omp distribute 13994 for (int i = 0; i < 10; ++i) { 13995 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13996 ++a; 13997 } 13998 #pragma omp target 13999 #pragma omp teams 14000 #pragma omp distribute 14001 for (int i = 0; i < 10; ++i) { 14002 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14003 for (int i = 0; i < 10; ++i) 14004 ; 14005 } 14006 #pragma omp target 14007 #pragma omp teams 14008 #pragma omp distribute 14009 for (int i = 0; i < 10; ++i) { 14010 #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?}} 14011 ++a; 14012 } 14013 #pragma omp target 14014 #pragma omp teams 14015 #pragma omp distribute 14016 for (int i = 0; i < 10; ++i) { 14017 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14018 ++a; 14019 } 14020 #pragma omp target 14021 #pragma omp teams 14022 #pragma omp distribute 14023 for (int i = 0; i < 10; ++i) { 14024 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14025 ++a; 14026 } 14027 #pragma omp target 14028 #pragma omp teams 14029 #pragma omp distribute 14030 for (int i = 0; i < 10; ++i) { 14031 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14032 ++a; 14033 } 14034 #pragma omp target 14035 #pragma omp teams 14036 #pragma omp distribute 14037 for (int i = 0; i < 10; ++i) { 14038 #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?}} 14039 for (int i = 0; i < 10; ++i) 14040 ++a; 14041 } 14042 #pragma omp target 14043 #pragma omp teams 14044 #pragma omp distribute 14045 for (int i = 0; i < 10; ++i) { 14046 #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?}} 14047 for (int i = 0; i < 10; ++i) 14048 ++a; 14049 } 14050 #pragma omp target 14051 #pragma omp teams 14052 #pragma omp distribute 14053 for (int i = 0; i < 10; ++i) { 14054 #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?}} 14055 for (int i = 0; i < 10; ++i) 14056 ++a; 14057 } 14058 #pragma omp target 14059 #pragma omp teams 14060 #pragma omp distribute 14061 for (int i = 0; i < 10; ++i) { 14062 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14063 for (int i = 0; i < 10; ++i) 14064 ++a; 14065 } 14066 #pragma omp target 14067 #pragma omp teams 14068 #pragma omp distribute 14069 for (int i = 0; i < 10; ++i) { 14070 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14071 for (int i = 0; i < 10; ++i) 14072 ++a; 14073 } 14074 #pragma omp target 14075 #pragma omp teams 14076 #pragma omp distribute 14077 for (int i = 0; i < 10; ++i) { 14078 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14079 for (int i = 0; i < 10; ++i) 14080 ++a; 14081 } 14082 #pragma omp target 14083 #pragma omp teams 14084 #pragma omp distribute 14085 for (int i = 0; i < 10; ++i) { 14086 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14087 for (int i = 0; i < 10; ++i) 14088 ++a; 14089 } 14090 #pragma omp target 14091 #pragma omp teams 14092 #pragma omp distribute 14093 for (int i = 0; i < 10; ++i) { 14094 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14095 for (int i = 0; i < 10; ++i) 14096 ++a; 14097 } 14098 #pragma omp target 14099 #pragma omp teams 14100 #pragma omp distribute 14101 for (int i = 0; i < 10; ++i) { 14102 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14103 for (int i = 0; i < 10; ++i) 14104 ++a; 14105 } 14106 #pragma omp target 14107 #pragma omp teams 14108 #pragma omp distribute 14109 for (int i = 0; i < 10; ++i) { 14110 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14111 for (int i = 0; i < 10; ++i) 14112 ++a; 14113 } 14114 #pragma omp target 14115 #pragma omp teams 14116 #pragma omp distribute 14117 for (int i = 0; i < 10; ++i) { 14118 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14119 for (int i = 0; i < 10; ++i) 14120 ++a; 14121 } 14122 14123 // DISTRIBUTE PARALLEL FOR DIRECTIVE 14124 #pragma omp target 14125 #pragma omp teams 14126 #pragma omp distribute parallel for 14127 for (int i = 0; i < 10; ++i) { 14128 #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?}} 14129 for (int i = 0; i < 10; ++i) 14130 ; 14131 } 14132 14133 #pragma omp target 14134 #pragma omp teams 14135 #pragma omp distribute parallel for 14136 for (int i = 0; i < 10; ++i) { 14137 #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?}} 14138 for (int i = 0; i < 10; ++i) 14139 ; 14140 } 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 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?}} 14146 for (int i = 0; i < 10; ++i) 14147 ; 14148 } 14149 #pragma omp target 14150 #pragma omp teams 14151 #pragma omp distribute parallel for 14152 for (int i = 0; i < 10; ++i) { 14153 #pragma omp simd 14154 for (int i = 0; i < 10; ++i) 14155 ; 14156 } 14157 #pragma omp target 14158 #pragma omp teams 14159 #pragma omp distribute parallel for 14160 for (int i = 0; i < 10; ++i) { 14161 #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?}} 14162 for (int i = 0; i < 10; ++i) 14163 ; 14164 } 14165 #pragma omp target 14166 #pragma omp teams 14167 #pragma omp distribute parallel for 14168 for (int i = 0; i < 10; ++i) { 14169 #pragma omp parallel 14170 for (int i = 0; i < 10; ++i) 14171 ; 14172 } 14173 #pragma omp target 14174 #pragma omp teams 14175 #pragma omp distribute parallel for 14176 for (int i = 0; i < 10; ++i) { 14177 #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?}} 14178 { 14179 bar(); 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 section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 14187 { 14188 bar(); 14189 } 14190 } 14191 #pragma omp target 14192 #pragma omp teams 14193 #pragma omp distribute parallel for 14194 for (int i = 0; i < 10; ++i) { 14195 #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?}} 14196 { 14197 bar(); 14198 } 14199 } 14200 #pragma omp target 14201 #pragma omp teams 14202 #pragma omp distribute parallel for 14203 for (int i = 0; i < 10; ++i) { 14204 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14205 { 14206 bar(); 14207 } 14208 } 14209 #pragma omp target 14210 #pragma omp teams 14211 #pragma omp distribute parallel for 14212 for (int i = 0; i < 10; ++i) { 14213 #pragma omp critical 14214 { 14215 bar(); 14216 } 14217 } 14218 #pragma omp target 14219 #pragma omp teams 14220 #pragma omp distribute parallel for 14221 for (int i = 0; i < 10; ++i) { 14222 #pragma omp parallel 14223 { 14224 #pragma omp single 14225 { 14226 bar(); 14227 } 14228 } 14229 } 14230 #pragma omp target 14231 #pragma omp teams 14232 #pragma omp distribute parallel for 14233 for (int i = 0; i < 10; ++i) { 14234 #pragma omp parallel for 14235 for (int i = 0; i < 10; ++i) 14236 ; 14237 } 14238 #pragma omp target 14239 #pragma omp teams 14240 #pragma omp distribute parallel for 14241 for (int i = 0; i < 10; ++i) { 14242 #pragma omp parallel for simd 14243 for (int i = 0; i < 10; ++i) 14244 ; 14245 } 14246 #pragma omp target 14247 #pragma omp teams 14248 #pragma omp distribute parallel for 14249 for (int i = 0; i < 10; ++i) { 14250 #pragma omp parallel sections 14251 { 14252 bar(); 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 task 14260 { 14261 bar(); 14262 } 14263 } 14264 #pragma omp target 14265 #pragma omp teams 14266 #pragma omp distribute parallel for 14267 for (int i = 0; i < 10; ++i) { 14268 #pragma omp taskyield 14269 bar(); 14270 } 14271 #pragma omp target 14272 #pragma omp teams 14273 #pragma omp distribute parallel for 14274 for (int i = 0; i < 10; ++i) { 14275 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 14276 bar(); 14277 } 14278 #pragma omp target 14279 #pragma omp teams 14280 #pragma omp distribute parallel for 14281 for (int i = 0; i < 10; ++i) { 14282 #pragma omp taskwait 14283 bar(); 14284 } 14285 #pragma omp target 14286 #pragma omp teams 14287 #pragma omp distribute parallel for 14288 for (int i = 0; i < 10; ++i) { 14289 #pragma omp flush 14290 bar(); 14291 } 14292 #pragma omp target 14293 #pragma omp teams 14294 #pragma omp distribute parallel for 14295 for (int i = 0; i < 10; ++i) { 14296 #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?}} 14297 bar(); 14298 } 14299 #pragma omp target 14300 #pragma omp teams 14301 #pragma omp distribute parallel for 14302 for (int i = 0; i < 10; ++i) { 14303 #pragma omp atomic 14304 ++a; 14305 } 14306 #pragma omp target 14307 #pragma omp teams 14308 #pragma omp distribute parallel for 14309 for (int i = 0; i < 10; ++i) { 14310 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 14311 ++a; 14312 } 14313 #pragma omp target 14314 #pragma omp teams 14315 #pragma omp distribute parallel for 14316 for (int i = 0; i < 10; ++i) { 14317 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 14318 ++a; 14319 } 14320 #pragma omp target 14321 #pragma omp teams 14322 #pragma omp distribute parallel for 14323 for (int i = 0; i < 10; ++i) { 14324 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 14325 for (int i = 0; i < 10; ++i) 14326 ; 14327 } 14328 #pragma omp target 14329 #pragma omp teams 14330 #pragma omp distribute parallel for 14331 for (int i = 0; i < 10; ++i) { 14332 #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?}} 14333 ++a; 14334 } 14335 #pragma omp target 14336 #pragma omp teams 14337 #pragma omp distribute parallel for 14338 for (int i = 0; i < 10; ++i) { 14339 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 14340 ++a; 14341 } 14342 #pragma omp target 14343 #pragma omp teams 14344 #pragma omp distribute parallel for 14345 for (int i = 0; i < 10; ++i) { 14346 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 14347 ++a; 14348 } 14349 #pragma omp target 14350 #pragma omp teams 14351 #pragma omp distribute parallel for 14352 for (int i = 0; i < 10; ++i) { 14353 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 14354 ++a; 14355 } 14356 #pragma omp target 14357 #pragma omp teams 14358 #pragma omp distribute parallel for 14359 for (int i = 0; i < 10; ++i) { 14360 #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?}} 14361 for (int i = 0; i < 10; ++i) 14362 ++a; 14363 } 14364 #pragma omp target 14365 #pragma omp teams 14366 #pragma omp distribute parallel for 14367 for (int i = 0; i < 10; ++i) { 14368 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 14369 for (int i = 0; i < 10; ++i) 14370 ++a; 14371 } 14372 #pragma omp target 14373 #pragma omp teams 14374 #pragma omp distribute parallel for 14375 for (int i = 0; i < 10; ++i) { 14376 #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?}} 14377 for (int i = 0; i < 10; ++i) 14378 ++a; 14379 } 14380 #pragma omp target 14381 #pragma omp teams 14382 #pragma omp distribute parallel for 14383 for (int i = 0; i < 10; ++i) { 14384 #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?}} 14385 for (int i = 0; i < 10; ++i) 14386 ++a; 14387 } 14388 #pragma omp target 14389 #pragma omp teams 14390 #pragma omp distribute parallel for 14391 for (int i = 0; i < 10; ++i) { 14392 #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?}} 14393 for (int i = 0; i < 10; ++i) 14394 ++a; 14395 } 14396 #pragma omp target 14397 #pragma omp teams 14398 #pragma omp distribute parallel for 14399 for (int i = 0; i < 10; ++i) { 14400 #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?}} 14401 for (int i = 0; i < 10; ++i) 14402 ++a; 14403 } 14404 #pragma omp target 14405 #pragma omp teams 14406 #pragma omp distribute parallel for 14407 for (int i = 0; i < 10; ++i) { 14408 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 14409 ++a; 14410 } 14411 #pragma omp target 14412 #pragma omp teams 14413 #pragma omp distribute parallel for 14414 for (int i = 0; i < 10; ++i) { 14415 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 14416 for (int i = 0; i < 10; ++i) 14417 ++a; 14418 } 14419 #pragma omp target 14420 #pragma omp teams 14421 #pragma omp distribute parallel for 14422 for (int i = 0; i < 10; ++i) { 14423 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 14424 for (int i = 0; i < 10; ++i) 14425 ++a; 14426 } 14427 #pragma omp target 14428 #pragma omp teams 14429 #pragma omp distribute parallel for 14430 for (int i = 0; i < 10; ++i) { 14431 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 14432 for (int i = 0; i < 10; ++i) 14433 ++a; 14434 } 14435 #pragma omp target 14436 #pragma omp teams 14437 #pragma omp distribute parallel for 14438 for (int i = 0; i < 10; ++i) { 14439 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 14440 for (int i = 0; i < 10; ++i) 14441 ++a; 14442 } 14443 14444 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 14445 #pragma omp target 14446 #pragma omp teams 14447 #pragma omp distribute parallel for simd 14448 for (int i = 0; i < 10; ++i) { 14449 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14450 for (int i = 0; i < 10; ++i) 14451 ; 14452 } 14453 #pragma omp target 14454 #pragma omp teams 14455 #pragma omp distribute parallel for simd 14456 for (int i = 0; i < 10; ++i) { 14457 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14458 for (int i = 0; i < 10; ++i) 14459 ; 14460 } 14461 #pragma omp target 14462 #pragma omp teams 14463 #pragma omp distribute parallel for simd 14464 for (int i = 0; i < 10; ++i) { 14465 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14466 for (int i = 0; i < 10; ++i) 14467 ; 14468 } 14469 #pragma omp target 14470 #pragma omp teams 14471 #pragma omp distribute parallel for simd 14472 for (int i = 0; i < 10; ++i) { 14473 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 14474 for (int i = 0; i < 10; ++i) 14475 ; 14476 } 14477 #pragma omp target 14478 #pragma omp teams 14479 #pragma omp distribute parallel for simd 14480 for (int i = 0; i < 10; ++i) { 14481 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14482 for (int i = 0; i < 10; ++i) 14483 ; 14484 } 14485 #pragma omp target 14486 #pragma omp teams 14487 #pragma omp distribute parallel for simd 14488 for (int i = 0; i < 10; ++i) { 14489 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14490 for (int i = 0; i < 10; ++i) 14491 ; 14492 } 14493 #pragma omp target 14494 #pragma omp teams 14495 #pragma omp distribute parallel for simd 14496 for (int i = 0; i < 10; ++i) { 14497 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14498 { 14499 bar(); 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 section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14507 { 14508 bar(); 14509 } 14510 } 14511 #pragma omp target 14512 #pragma omp teams 14513 #pragma omp distribute parallel for simd 14514 for (int i = 0; i < 10; ++i) { 14515 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14516 { 14517 bar(); 14518 } 14519 } 14520 #pragma omp target 14521 #pragma omp teams 14522 #pragma omp distribute parallel for simd 14523 for (int i = 0; i < 10; ++i) { 14524 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14525 { 14526 bar(); 14527 } 14528 } 14529 #pragma omp target 14530 #pragma omp teams 14531 #pragma omp distribute parallel for simd 14532 for (int i = 0; i < 10; ++i) { 14533 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14534 { 14535 bar(); 14536 } 14537 } 14538 #pragma omp target 14539 #pragma omp teams 14540 #pragma omp distribute parallel for simd 14541 for (int i = 0; i < 10; ++i) { 14542 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14543 { 14544 #pragma omp single 14545 { 14546 bar(); 14547 } 14548 } 14549 } 14550 #pragma omp target 14551 #pragma omp teams 14552 #pragma omp distribute parallel for simd 14553 for (int i = 0; i < 10; ++i) { 14554 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14555 for (int i = 0; i < 10; ++i) 14556 ; 14557 } 14558 #pragma omp target 14559 #pragma omp teams 14560 #pragma omp distribute parallel for simd 14561 for (int i = 0; i < 10; ++i) { 14562 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14563 for (int i = 0; i < 10; ++i) 14564 ; 14565 } 14566 #pragma omp target 14567 #pragma omp teams 14568 #pragma omp distribute parallel for simd 14569 for (int i = 0; i < 10; ++i) { 14570 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14571 { 14572 bar(); 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14580 { 14581 bar(); 14582 } 14583 } 14584 #pragma omp target 14585 #pragma omp teams 14586 #pragma omp distribute parallel for simd 14587 for (int i = 0; i < 10; ++i) { 14588 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14589 bar(); 14590 } 14591 #pragma omp target 14592 #pragma omp teams 14593 #pragma omp distribute parallel for simd 14594 for (int i = 0; i < 10; ++i) { 14595 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14596 bar(); 14597 } 14598 #pragma omp target 14599 #pragma omp teams 14600 #pragma omp distribute parallel for simd 14601 for (int i = 0; i < 10; ++i) { 14602 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14603 bar(); 14604 } 14605 #pragma omp target 14606 #pragma omp teams 14607 #pragma omp distribute parallel for simd 14608 for (int i = 0; i < 10; ++i) { 14609 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14610 bar(); 14611 } 14612 #pragma omp target 14613 #pragma omp teams 14614 #pragma omp distribute parallel for simd 14615 for (int i = 0; i < 10; ++i) { 14616 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14617 bar(); 14618 } 14619 #pragma omp target 14620 #pragma omp teams 14621 #pragma omp distribute parallel for simd 14622 for (int i = 0; i < 10; ++i) { 14623 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14624 ++a; 14625 } 14626 #pragma omp target 14627 #pragma omp teams 14628 #pragma omp distribute parallel for simd 14629 for (int i = 0; i < 10; ++i) { 14630 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14631 ++a; 14632 } 14633 #pragma omp target 14634 #pragma omp teams 14635 #pragma omp distribute parallel for simd 14636 for (int i = 0; i < 10; ++i) { 14637 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14638 ++a; 14639 } 14640 #pragma omp target 14641 #pragma omp teams 14642 #pragma omp distribute parallel for simd 14643 for (int i = 0; i < 10; ++i) { 14644 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14645 ++a; 14646 } 14647 #pragma omp target 14648 #pragma omp teams 14649 #pragma omp distribute parallel for simd 14650 for (int i = 0; i < 10; ++i) { 14651 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14652 ++a; 14653 } 14654 #pragma omp target 14655 #pragma omp teams 14656 #pragma omp distribute parallel for simd 14657 for (int i = 0; i < 10; ++i) { 14658 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14659 ++a; 14660 } 14661 #pragma omp target 14662 #pragma omp teams 14663 #pragma omp distribute parallel for simd 14664 for (int i = 0; i < 10; ++i) { 14665 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14666 ++a; 14667 } 14668 #pragma omp target 14669 #pragma omp teams 14670 #pragma omp distribute parallel for simd 14671 for (int i = 0; i < 10; ++i) { 14672 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14673 for (int i = 0; i < 10; ++i) 14674 ; 14675 } 14676 #pragma omp target 14677 #pragma omp teams 14678 #pragma omp distribute parallel for simd 14679 for (int i = 0; i < 10; ++i) { 14680 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14681 for (int i = 0; i < 10; ++i) 14682 ; 14683 } 14684 #pragma omp target 14685 #pragma omp teams 14686 #pragma omp distribute parallel for simd 14687 for (int i = 0; i < 10; ++i) { 14688 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14689 for (int i = 0; i < 10; ++i) 14690 ; 14691 } 14692 #pragma omp target 14693 #pragma omp teams 14694 #pragma omp distribute parallel for simd 14695 for (int i = 0; i < 10; ++i) { 14696 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14697 for (int i = 0; i < 10; ++i) 14698 ; 14699 } 14700 #pragma omp target 14701 #pragma omp teams 14702 #pragma omp distribute parallel for simd 14703 for (int i = 0; i < 10; ++i) { 14704 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14705 for (int i = 0; i < 10; ++i) 14706 ; 14707 } 14708 #pragma omp target 14709 #pragma omp teams 14710 #pragma omp distribute parallel for simd 14711 for (int i = 0; i < 10; ++i) { 14712 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14713 for (int i = 0; i < 10; ++i) 14714 ; 14715 } 14716 #pragma omp target 14717 #pragma omp teams 14718 #pragma omp distribute parallel for simd 14719 for (int i = 0; i < 10; ++i) { 14720 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14721 a++; 14722 } 14723 #pragma omp target 14724 #pragma omp teams 14725 #pragma omp distribute parallel for simd 14726 for (int i = 0; i < 10; ++i) { 14727 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14728 for (int i = 0; i < 10; ++i) 14729 ; 14730 } 14731 #pragma omp target 14732 #pragma omp teams 14733 #pragma omp distribute parallel for simd 14734 for (int i = 0; i < 10; ++i) { 14735 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14736 for (int i = 0; i < 10; ++i) 14737 ; 14738 } 14739 #pragma omp target 14740 #pragma omp teams 14741 #pragma omp distribute parallel for simd 14742 for (int i = 0; i < 10; ++i) { 14743 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14744 for (int i = 0; i < 10; ++i) 14745 ; 14746 } 14747 #pragma omp target 14748 #pragma omp teams 14749 #pragma omp distribute parallel for simd 14750 for (int i = 0; i < 10; ++i) { 14751 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14752 for (int i = 0; i < 10; ++i) 14753 ; 14754 } 14755 14756 // DISTRIBUTE SIMD DIRECTIVE 14757 #pragma omp target 14758 #pragma omp teams 14759 #pragma omp distribute simd 14760 for (int i = 0; i < 10; ++i) { 14761 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14762 for (int i = 0; i < 10; ++i) 14763 ; 14764 } 14765 #pragma omp target 14766 #pragma omp teams 14767 #pragma omp distribute simd 14768 for (int i = 0; i < 10; ++i) { 14769 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14770 for (int i = 0; i < 10; ++i) 14771 ; 14772 } 14773 #pragma omp target 14774 #pragma omp teams 14775 #pragma omp distribute simd 14776 for (int i = 0; i < 10; ++i) { 14777 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14778 for (int i = 0; i < 10; ++i) 14779 ; 14780 } 14781 #pragma omp target 14782 #pragma omp teams 14783 #pragma omp distribute simd 14784 for (int i = 0; i < 10; ++i) { 14785 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 14786 for (int i = 0; i < 10; ++i) 14787 ; 14788 } 14789 #pragma omp target 14790 #pragma omp teams 14791 #pragma omp distribute simd 14792 for (int i = 0; i < 10; ++i) { 14793 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14794 for (int i = 0; i < 10; ++i) 14795 ; 14796 } 14797 #pragma omp target 14798 #pragma omp teams 14799 #pragma omp distribute simd 14800 for (int i = 0; i < 10; ++i) { 14801 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14802 for (int i = 0; i < 10; ++i) 14803 ; 14804 } 14805 #pragma omp target 14806 #pragma omp teams 14807 #pragma omp distribute simd 14808 for (int i = 0; i < 10; ++i) { 14809 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14810 { 14811 bar(); 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 section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14819 { 14820 bar(); 14821 } 14822 } 14823 #pragma omp target 14824 #pragma omp teams 14825 #pragma omp distribute simd 14826 for (int i = 0; i < 10; ++i) { 14827 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14828 { 14829 bar(); 14830 } 14831 } 14832 #pragma omp target 14833 #pragma omp teams 14834 #pragma omp distribute simd 14835 for (int i = 0; i < 10; ++i) { 14836 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14837 { 14838 bar(); 14839 } 14840 } 14841 #pragma omp target 14842 #pragma omp teams 14843 #pragma omp distribute simd 14844 for (int i = 0; i < 10; ++i) { 14845 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14846 { 14847 bar(); 14848 } 14849 } 14850 #pragma omp target 14851 #pragma omp teams 14852 #pragma omp distribute simd 14853 for (int i = 0; i < 10; ++i) { 14854 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14855 { 14856 #pragma omp single 14857 { 14858 bar(); 14859 } 14860 } 14861 } 14862 #pragma omp target 14863 #pragma omp teams 14864 #pragma omp distribute simd 14865 for (int i = 0; i < 10; ++i) { 14866 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14867 for (int i = 0; i < 10; ++i) 14868 ; 14869 } 14870 #pragma omp target 14871 #pragma omp teams 14872 #pragma omp distribute simd 14873 for (int i = 0; i < 10; ++i) { 14874 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14875 for (int i = 0; i < 10; ++i) 14876 ; 14877 } 14878 #pragma omp target 14879 #pragma omp teams 14880 #pragma omp distribute simd 14881 for (int i = 0; i < 10; ++i) { 14882 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14883 { 14884 bar(); 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 task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14892 { 14893 bar(); 14894 } 14895 } 14896 #pragma omp target 14897 #pragma omp teams 14898 #pragma omp distribute simd 14899 for (int i = 0; i < 10; ++i) { 14900 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14901 bar(); 14902 } 14903 #pragma omp target 14904 #pragma omp teams 14905 #pragma omp distribute simd 14906 for (int i = 0; i < 10; ++i) { 14907 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14908 bar(); 14909 } 14910 #pragma omp target 14911 #pragma omp teams 14912 #pragma omp distribute simd 14913 for (int i = 0; i < 10; ++i) { 14914 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14915 bar(); 14916 } 14917 #pragma omp target 14918 #pragma omp teams 14919 #pragma omp distribute simd 14920 for (int i = 0; i < 10; ++i) { 14921 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14922 bar(); 14923 } 14924 #pragma omp target 14925 #pragma omp teams 14926 #pragma omp distribute simd 14927 for (int i = 0; i < 10; ++i) { 14928 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14929 bar(); 14930 } 14931 #pragma omp target 14932 #pragma omp teams 14933 #pragma omp distribute simd 14934 for (int i = 0; i < 10; ++i) { 14935 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14936 ++a; 14937 } 14938 #pragma omp target 14939 #pragma omp teams 14940 #pragma omp distribute simd 14941 for (int i = 0; i < 10; ++i) { 14942 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14943 ++a; 14944 } 14945 #pragma omp target 14946 #pragma omp teams 14947 #pragma omp distribute simd 14948 for (int i = 0; i < 10; ++i) { 14949 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14950 ++a; 14951 } 14952 #pragma omp target 14953 #pragma omp teams 14954 #pragma omp distribute simd 14955 for (int i = 0; i < 10; ++i) { 14956 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14957 ++a; 14958 } 14959 #pragma omp target 14960 #pragma omp teams 14961 #pragma omp distribute simd 14962 for (int i = 0; i < 10; ++i) { 14963 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14964 ++a; 14965 } 14966 #pragma omp target 14967 #pragma omp teams 14968 #pragma omp distribute simd 14969 for (int i = 0; i < 10; ++i) { 14970 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14971 ++a; 14972 } 14973 #pragma omp target 14974 #pragma omp teams 14975 #pragma omp distribute simd 14976 for (int i = 0; i < 10; ++i) { 14977 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14978 ++a; 14979 } 14980 #pragma omp target 14981 #pragma omp teams 14982 #pragma omp distribute simd 14983 for (int i = 0; i < 10; ++i) { 14984 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14985 for (int i = 0; i < 10; ++i) 14986 ; 14987 } 14988 #pragma omp target 14989 #pragma omp teams 14990 #pragma omp distribute simd 14991 for (int i = 0; i < 10; ++i) { 14992 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 14993 for (int i = 0; i < 10; ++i) 14994 ; 14995 } 14996 #pragma omp target 14997 #pragma omp teams 14998 #pragma omp distribute simd 14999 for (int i = 0; i < 10; ++i) { 15000 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15001 for (int i = 0; i < 10; ++i) 15002 ; 15003 } 15004 #pragma omp target 15005 #pragma omp teams 15006 #pragma omp distribute simd 15007 for (int i = 0; i < 10; ++i) { 15008 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15009 for (int i = 0; i < 10; ++i) 15010 ; 15011 } 15012 #pragma omp target 15013 #pragma omp teams 15014 #pragma omp distribute simd 15015 for (int i = 0; i < 10; ++i) { 15016 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15017 for (int i = 0; i < 10; ++i) 15018 ; 15019 } 15020 #pragma omp target 15021 #pragma omp teams 15022 #pragma omp distribute simd 15023 for (int i = 0; i < 10; ++i) { 15024 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15025 for (int i = 0; i < 10; ++i) 15026 ; 15027 } 15028 #pragma omp target 15029 #pragma omp teams 15030 #pragma omp distribute simd 15031 for (int i = 0; i < 10; ++i) { 15032 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15033 a++; 15034 } 15035 #pragma omp target 15036 #pragma omp teams 15037 #pragma omp distribute simd 15038 for (int i = 0; i < 10; ++i) { 15039 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15040 for (int i = 0; i < 10; ++i) 15041 ; 15042 } 15043 #pragma omp target 15044 #pragma omp teams 15045 #pragma omp distribute simd 15046 for (int i = 0; i < 10; ++i) { 15047 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15048 for (int i = 0; i < 10; ++i) 15049 ; 15050 } 15051 #pragma omp target 15052 #pragma omp teams 15053 #pragma omp distribute simd 15054 for (int i = 0; i < 10; ++i) { 15055 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15056 for (int i = 0; i < 10; ++i) 15057 ; 15058 } 15059 #pragma omp target 15060 #pragma omp teams 15061 #pragma omp distribute simd 15062 for (int i = 0; i < 10; ++i) { 15063 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15064 for (int i = 0; i < 10; ++i) 15065 ; 15066 } 15067 15068 // TARGET SIMD DIRECTIVE 15069 #pragma omp target simd 15070 for (int i = 0; i < 10; ++i) { 15071 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15072 for (int i = 0; i < 10; ++i) 15073 ; 15074 } 15075 #pragma omp target simd 15076 for (int i = 0; i < 10; ++i) { 15077 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15078 for (int i = 0; i < 10; ++i) 15079 ; 15080 } 15081 #pragma omp target simd 15082 for (int i = 0; i < 10; ++i) { 15083 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15084 for (int i = 0; i < 10; ++i) 15085 ; 15086 } 15087 #pragma omp target simd 15088 for (int i = 0; i < 10; ++i) { 15089 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15090 for (int i = 0; i < 10; ++i) 15091 ; 15092 } 15093 #pragma omp target simd 15094 for (int i = 0; i < 10; ++i) { 15095 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15096 for (int i = 0; i < 10; ++i) 15097 ; 15098 } 15099 #pragma omp target simd 15100 for (int i = 0; i < 10; ++i) { 15101 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15102 for (int i = 0; i < 10; ++i) 15103 ; 15104 } 15105 #pragma omp target simd 15106 for (int i = 0; i < 10; ++i) { 15107 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15108 { 15109 bar(); 15110 } 15111 } 15112 #pragma omp target simd 15113 for (int i = 0; i < 10; ++i) { 15114 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15115 { 15116 bar(); 15117 } 15118 } 15119 #pragma omp target simd 15120 for (int i = 0; i < 10; ++i) { 15121 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15122 { 15123 bar(); 15124 } 15125 } 15126 #pragma omp target simd 15127 for (int i = 0; i < 10; ++i) { 15128 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15129 { 15130 bar(); 15131 } 15132 } 15133 #pragma omp target simd 15134 for (int i = 0; i < 10; ++i) { 15135 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15136 { 15137 bar(); 15138 } 15139 } 15140 #pragma omp target simd 15141 for (int i = 0; i < 10; ++i) { 15142 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15143 { 15144 #pragma omp single 15145 { 15146 bar(); 15147 } 15148 } 15149 } 15150 #pragma omp target simd 15151 for (int i = 0; i < 10; ++i) { 15152 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15153 for (int i = 0; i < 10; ++i) 15154 ; 15155 } 15156 #pragma omp target simd 15157 for (int i = 0; i < 10; ++i) { 15158 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15159 for (int i = 0; i < 10; ++i) 15160 ; 15161 } 15162 #pragma omp target simd 15163 for (int i = 0; i < 10; ++i) { 15164 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15165 { 15166 bar(); 15167 } 15168 } 15169 #pragma omp target simd 15170 for (int i = 0; i < 10; ++i) { 15171 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15172 { 15173 bar(); 15174 } 15175 } 15176 #pragma omp target simd 15177 for (int i = 0; i < 10; ++i) { 15178 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15179 bar(); 15180 } 15181 #pragma omp target simd 15182 for (int i = 0; i < 10; ++i) { 15183 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15184 bar(); 15185 } 15186 #pragma omp target simd 15187 for (int i = 0; i < 10; ++i) { 15188 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15189 bar(); 15190 } 15191 #pragma omp target simd 15192 for (int i = 0; i < 10; ++i) { 15193 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15194 bar(); 15195 } 15196 #pragma omp target simd 15197 for (int i = 0; i < 10; ++i) { 15198 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15199 bar(); 15200 } 15201 #pragma omp target simd 15202 for (int i = 0; i < 10; ++i) { 15203 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15204 ++a; 15205 } 15206 #pragma omp target simd 15207 for (int i = 0; i < 10; ++i) { 15208 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15209 ++a; 15210 } 15211 #pragma omp target simd 15212 for (int i = 0; i < 10; ++i) { 15213 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15214 ++a; 15215 } 15216 #pragma omp target simd 15217 for (int i = 0; i < 10; ++i) { 15218 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15219 ++a; 15220 } 15221 #pragma omp target simd 15222 for (int i = 0; i < 10; ++i) { 15223 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15224 ++a; 15225 } 15226 #pragma omp target simd 15227 for (int i = 0; i < 10; ++i) { 15228 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15229 ++a; 15230 } 15231 #pragma omp target simd 15232 for (int i = 0; i < 10; ++i) { 15233 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15234 ++a; 15235 } 15236 #pragma omp target simd 15237 for (int i = 0; i < 10; ++i) { 15238 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15239 for (int i = 0; i < 10; ++i) 15240 ; 15241 } 15242 #pragma omp target simd 15243 for (int i = 0; i < 10; ++i) { 15244 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15245 for (int i = 0; i < 10; ++i) 15246 ; 15247 } 15248 #pragma omp target simd 15249 for (int i = 0; i < 10; ++i) { 15250 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15251 for (int i = 0; i < 10; ++i) 15252 ; 15253 } 15254 #pragma omp target simd 15255 for (int i = 0; i < 10; ++i) { 15256 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15257 for (int i = 0; i < 10; ++i) 15258 ; 15259 } 15260 #pragma omp target simd 15261 for (int i = 0; i < 10; ++i) { 15262 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15263 for (int i = 0; i < 10; ++i) 15264 ; 15265 } 15266 #pragma omp target simd 15267 for (int i = 0; i < 10; ++i) { 15268 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15269 for (int i = 0; i < 10; ++i) 15270 ; 15271 } 15272 #pragma omp target simd 15273 for (int i = 0; i < 10; ++i) { 15274 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15275 a++; 15276 } 15277 #pragma omp target simd 15278 for (int i = 0; i < 10; ++i) { 15279 #pragma omp target teams distribute // 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 target 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 distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15292 for (int i = 0; i < 10; ++i) 15293 ; 15294 } 15295 #pragma omp target simd 15296 for (int i = 0; i < 10; ++i) { 15297 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15298 for (int i = 0; i < 10; ++i) 15299 ; 15300 } 15301 15302 // TEAMS DISTRIBUTE DIRECTIVE 15303 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 15304 for (int i = 0; i < 10; ++i) 15305 ; 15306 #pragma omp target 15307 #pragma omp teams distribute 15308 for (int i = 0; i < 10; ++i) { 15309 #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?}} 15310 for (int i = 0; i < 10; ++i) 15311 ; 15312 } 15313 #pragma omp target 15314 #pragma omp teams distribute 15315 for (int i = 0; i < 10; ++i) { 15316 #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?}} 15317 for (int i = 0; i < 10; ++i) 15318 ; 15319 } 15320 #pragma omp target 15321 #pragma omp teams distribute 15322 for (int i = 0; i < 10; ++i) { 15323 #pragma omp for // OK 15324 for (int i = 0; i < 10; ++i) 15325 ; 15326 } 15327 #pragma omp target 15328 #pragma omp teams distribute 15329 for (int i = 0; i < 10; ++i) { 15330 #pragma omp simd // OK 15331 for (int i = 0; i < 10; ++i) 15332 ; 15333 } 15334 #pragma omp target 15335 #pragma omp teams distribute 15336 for (int i = 0; i < 10; ++i) { 15337 #pragma omp for simd // OK 15338 for (int i = 0; i < 10; ++i) 15339 ; 15340 } 15341 #pragma omp target 15342 #pragma omp teams distribute 15343 for (int i = 0; i < 10; ++i) { 15344 #pragma omp parallel // OK 15345 for (int i = 0; i < 10; ++i) 15346 ; 15347 } 15348 #pragma omp target 15349 #pragma omp teams distribute 15350 for (int i = 0; i < 10; ++i) { 15351 #pragma omp sections // OK 15352 { 15353 bar(); 15354 } 15355 } 15356 #pragma omp target 15357 #pragma omp teams distribute 15358 for (int i = 0; i < 10; ++i) { 15359 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 15360 { 15361 bar(); 15362 } 15363 } 15364 #pragma omp target 15365 #pragma omp teams distribute 15366 for (int i = 0; i < 10; ++i) { 15367 #pragma omp single // OK 15368 { 15369 bar(); 15370 } 15371 } 15372 #pragma omp target 15373 #pragma omp teams distribute 15374 for (int i = 0; i < 10; ++i) { 15375 #pragma omp master // OK 15376 { 15377 bar(); 15378 } 15379 } 15380 #pragma omp target 15381 #pragma omp teams distribute 15382 for (int i = 0; i < 10; ++i) { 15383 #pragma omp critical // OK 15384 { 15385 bar(); 15386 } 15387 } 15388 #pragma omp target 15389 #pragma omp teams distribute 15390 for (int i = 0; i < 10; ++i) { 15391 #pragma omp parallel // OK 15392 { 15393 #pragma omp single 15394 { 15395 bar(); 15396 } 15397 } 15398 } 15399 #pragma omp target 15400 #pragma omp teams distribute 15401 for (int i = 0; i < 10; ++i) { 15402 #pragma omp parallel for // OK 15403 for (int i = 0; i < 10; ++i) 15404 ; 15405 } 15406 #pragma omp target 15407 #pragma omp teams distribute 15408 for (int i = 0; i < 10; ++i) { 15409 #pragma omp parallel for simd // OK 15410 for (int i = 0; i < 10; ++i) 15411 ; 15412 } 15413 #pragma omp target 15414 #pragma omp teams distribute 15415 for (int i = 0; i < 10; ++i) { 15416 #pragma omp parallel sections // OK 15417 { 15418 bar(); 15419 } 15420 } 15421 #pragma omp target 15422 #pragma omp teams distribute 15423 for (int i = 0; i < 10; ++i) { 15424 #pragma omp task // OK 15425 { 15426 bar(); 15427 } 15428 } 15429 #pragma omp target 15430 #pragma omp teams distribute 15431 for (int i = 0; i < 10; ++i) { 15432 #pragma omp taskyield // OK 15433 bar(); 15434 } 15435 #pragma omp target 15436 #pragma omp teams distribute 15437 for (int i = 0; i < 10; ++i) { 15438 #pragma omp barrier // OK 15439 bar(); 15440 } 15441 #pragma omp target 15442 #pragma omp teams distribute 15443 for (int i = 0; i < 10; ++i) { 15444 #pragma omp taskwait // OK 15445 bar(); 15446 } 15447 #pragma omp target 15448 #pragma omp teams distribute 15449 for (int i = 0; i < 10; ++i) { 15450 #pragma omp flush // OK 15451 bar(); 15452 } 15453 #pragma omp target 15454 #pragma omp teams distribute 15455 for (int i = 0; i < 10; ++i) { 15456 #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?}} 15457 bar(); 15458 } 15459 #pragma omp target 15460 #pragma omp teams distribute 15461 for (int i = 0; i < 10; ++i) { 15462 #pragma omp atomic // OK 15463 ++a; 15464 } 15465 #pragma omp target 15466 #pragma omp teams distribute 15467 for (int i = 0; i < 10; ++i) { 15468 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 15469 ++a; 15470 } 15471 #pragma omp target 15472 #pragma omp teams distribute 15473 for (int i = 0; i < 10; ++i) { 15474 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 15475 ++a; 15476 } 15477 #pragma omp target 15478 #pragma omp teams distribute 15479 for (int i = 0; i < 10; ++i) { 15480 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 15481 for (int i = 0; i < 10; ++i) 15482 ; 15483 } 15484 #pragma omp target 15485 #pragma omp teams distribute 15486 for (int i = 0; i < 10; ++i) { 15487 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 15488 ++a; 15489 } 15490 #pragma omp target 15491 #pragma omp teams distribute 15492 for (int i = 0; i < 10; ++i) { 15493 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 15494 ++a; 15495 } 15496 #pragma omp target 15497 #pragma omp teams distribute 15498 for (int i = 0; i < 10; ++i) { 15499 #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?}} 15500 ++a; 15501 } 15502 #pragma omp target 15503 #pragma omp teams distribute 15504 for (int i = 0; i < 10; ++i) { 15505 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 15506 ++a; 15507 } 15508 #pragma omp target 15509 #pragma omp teams distribute 15510 for (int i = 0; i < 10; ++i) { 15511 #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?}} 15512 for (int i = 0; i < 10; ++i) 15513 ++a; 15514 } 15515 #pragma omp target 15516 #pragma omp teams distribute 15517 for (int i = 0; i < 10; ++i) { 15518 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 15519 for (int i = 0; i < 10; ++i) 15520 ++a; 15521 } 15522 #pragma omp target 15523 #pragma omp teams distribute 15524 for (int i = 0; i < 10; ++i) { 15525 #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?}} 15526 for (int i = 0; i < 10; ++i) 15527 ++a; 15528 } 15529 #pragma omp target 15530 #pragma omp teams distribute 15531 for (int i = 0; i < 10; ++i) { 15532 #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?}} 15533 for (int i = 0; i < 10; ++i) 15534 ++a; 15535 } 15536 #pragma omp target 15537 #pragma omp teams distribute 15538 for (int i = 0; i < 10; ++i) { 15539 #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?}} 15540 for (int i = 0; i < 10; ++i) 15541 ++a; 15542 } 15543 #pragma omp target 15544 #pragma omp teams distribute 15545 for (int i = 0; i < 10; ++i) { 15546 #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?}} 15547 for (int i = 0; i < 10; ++i) 15548 ++a; 15549 } 15550 #pragma omp target 15551 #pragma omp teams distribute 15552 for (int i = 0; i < 10; ++i) { 15553 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 15554 ++a; 15555 } 15556 #pragma omp target 15557 #pragma omp teams distribute 15558 for (int i = 0; i < 10; ++i) { 15559 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 15560 for (int i = 0; i < 10; ++i) 15561 ++a; 15562 } 15563 #pragma omp target 15564 #pragma omp teams distribute 15565 for (int i = 0; i < 10; ++i) { 15566 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 15567 for (int i = 0; i < 10; ++i) 15568 ++a; 15569 } 15570 #pragma omp target 15571 #pragma omp teams distribute 15572 for (int i = 0; i < 10; ++i) { 15573 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 15574 for (int i = 0; i < 10; ++i) 15575 ++a; 15576 } 15577 #pragma omp target 15578 #pragma omp teams distribute 15579 for (int i = 0; i < 10; ++i) { 15580 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 15581 for (int i = 0; i < 10; ++i) 15582 ++a; 15583 } 15584 15585 // TEAMS DISTRIBUTE SIMD DIRECTIVE 15586 #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?}} 15587 for (int i = 0; i < 10; ++i) 15588 ; 15589 #pragma omp target 15590 #pragma omp teams distribute simd 15591 for (int i = 0; i < 10; ++i) { 15592 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15593 for (int i = 0; i < 10; ++i) 15594 ; 15595 } 15596 #pragma omp target 15597 #pragma omp teams distribute simd 15598 for (int i = 0; i < 10; ++i) { 15599 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15600 for (int i = 0; i < 10; ++i) 15601 ; 15602 } 15603 #pragma omp target 15604 #pragma omp teams distribute simd 15605 for (int i = 0; i < 10; ++i) { 15606 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15607 for (int i = 0; i < 10; ++i) 15608 ; 15609 } 15610 #pragma omp target 15611 #pragma omp teams distribute simd 15612 for (int i = 0; i < 10; ++i) { 15613 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15614 for (int i = 0; i < 10; ++i) 15615 ; 15616 } 15617 #pragma omp target 15618 #pragma omp teams distribute simd 15619 for (int i = 0; i < 10; ++i) { 15620 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15621 for (int i = 0; i < 10; ++i) 15622 ; 15623 } 15624 #pragma omp target 15625 #pragma omp teams distribute simd 15626 for (int i = 0; i < 10; ++i) { 15627 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15628 for (int i = 0; i < 10; ++i) 15629 ; 15630 } 15631 #pragma omp target 15632 #pragma omp teams distribute simd 15633 for (int i = 0; i < 10; ++i) { 15634 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15635 { 15636 bar(); 15637 } 15638 } 15639 #pragma omp target 15640 #pragma omp teams distribute simd 15641 for (int i = 0; i < 10; ++i) { 15642 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15643 { 15644 bar(); 15645 } 15646 } 15647 #pragma omp target 15648 #pragma omp teams distribute simd 15649 for (int i = 0; i < 10; ++i) { 15650 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15651 { 15652 bar(); 15653 } 15654 } 15655 #pragma omp target 15656 #pragma omp teams distribute simd 15657 for (int i = 0; i < 10; ++i) { 15658 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15659 { 15660 bar(); 15661 } 15662 } 15663 #pragma omp target 15664 #pragma omp teams distribute simd 15665 for (int i = 0; i < 10; ++i) { 15666 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15667 { 15668 bar(); 15669 } 15670 } 15671 #pragma omp target 15672 #pragma omp teams distribute simd 15673 for (int i = 0; i < 10; ++i) { 15674 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15675 { 15676 #pragma omp single 15677 { 15678 bar(); 15679 } 15680 } 15681 } 15682 #pragma omp target 15683 #pragma omp teams distribute simd 15684 for (int i = 0; i < 10; ++i) { 15685 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15686 for (int i = 0; i < 10; ++i) 15687 ; 15688 } 15689 #pragma omp target 15690 #pragma omp teams distribute simd 15691 for (int i = 0; i < 10; ++i) { 15692 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15693 for (int i = 0; i < 10; ++i) 15694 ; 15695 } 15696 #pragma omp target 15697 #pragma omp teams distribute simd 15698 for (int i = 0; i < 10; ++i) { 15699 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15700 { 15701 bar(); 15702 } 15703 } 15704 #pragma omp target 15705 #pragma omp teams distribute simd 15706 for (int i = 0; i < 10; ++i) { 15707 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15708 { 15709 bar(); 15710 } 15711 } 15712 #pragma omp target 15713 #pragma omp teams distribute simd 15714 for (int i = 0; i < 10; ++i) { 15715 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15716 bar(); 15717 } 15718 #pragma omp target 15719 #pragma omp teams distribute simd 15720 for (int i = 0; i < 10; ++i) { 15721 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15722 bar(); 15723 } 15724 #pragma omp target 15725 #pragma omp teams distribute simd 15726 for (int i = 0; i < 10; ++i) { 15727 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15728 bar(); 15729 } 15730 #pragma omp target 15731 #pragma omp teams distribute simd 15732 for (int i = 0; i < 10; ++i) { 15733 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15734 bar(); 15735 } 15736 #pragma omp target 15737 #pragma omp teams distribute simd 15738 for (int i = 0; i < 10; ++i) { 15739 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15740 bar(); 15741 } 15742 #pragma omp target 15743 #pragma omp teams distribute simd 15744 for (int i = 0; i < 10; ++i) { 15745 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15746 ++a; 15747 } 15748 #pragma omp target 15749 #pragma omp teams distribute simd 15750 for (int i = 0; i < 10; ++i) { 15751 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15752 ++a; 15753 } 15754 #pragma omp target 15755 #pragma omp teams distribute simd 15756 for (int i = 0; i < 10; ++i) { 15757 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15758 ++a; 15759 } 15760 #pragma omp target 15761 #pragma omp teams distribute simd 15762 for (int i = 0; i < 10; ++i) { 15763 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15764 for (int i = 0; i < 10; ++i) 15765 ; 15766 } 15767 #pragma omp target 15768 #pragma omp teams distribute simd 15769 for (int i = 0; i < 10; ++i) { 15770 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15771 ++a; 15772 } 15773 #pragma omp target 15774 #pragma omp teams distribute simd 15775 for (int i = 0; i < 10; ++i) { 15776 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15777 ++a; 15778 } 15779 #pragma omp target 15780 #pragma omp teams distribute simd 15781 for (int i = 0; i < 10; ++i) { 15782 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15783 ++a; 15784 } 15785 #pragma omp target 15786 #pragma omp teams distribute simd 15787 for (int i = 0; i < 10; ++i) { 15788 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15789 ++a; 15790 } 15791 #pragma omp target 15792 #pragma omp teams distribute simd 15793 for (int i = 0; i < 10; ++i) { 15794 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15795 for (int i = 0; i < 10; ++i) 15796 ++a; 15797 } 15798 #pragma omp target 15799 #pragma omp teams distribute simd 15800 for (int i = 0; i < 10; ++i) { 15801 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15802 for (int i = 0; i < 10; ++i) 15803 ++a; 15804 } 15805 #pragma omp target 15806 #pragma omp teams distribute simd 15807 for (int i = 0; i < 10; ++i) { 15808 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15809 for (int i = 0; i < 10; ++i) 15810 ++a; 15811 } 15812 #pragma omp target 15813 #pragma omp teams distribute simd 15814 for (int i = 0; i < 10; ++i) { 15815 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15816 for (int i = 0; i < 10; ++i) 15817 ++a; 15818 } 15819 #pragma omp target 15820 #pragma omp teams distribute simd 15821 for (int i = 0; i < 10; ++i) { 15822 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15823 for (int i = 0; i < 10; ++i) 15824 ++a; 15825 } 15826 #pragma omp target 15827 #pragma omp teams distribute simd 15828 for (int i = 0; i < 10; ++i) { 15829 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15830 for (int i = 0; i < 10; ++i) 15831 ++a; 15832 } 15833 #pragma omp target 15834 #pragma omp teams distribute simd 15835 for (int i = 0; i < 10; ++i) { 15836 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15837 ++a; 15838 } 15839 #pragma omp target 15840 #pragma omp teams distribute simd 15841 for (int i = 0; i < 10; ++i) { 15842 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15843 for (int i = 0; i < 10; ++i) 15844 ++a; 15845 } 15846 #pragma omp target 15847 #pragma omp teams distribute simd 15848 for (int i = 0; i < 10; ++i) { 15849 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15850 for (int i = 0; i < 10; ++i) 15851 ++a; 15852 } 15853 #pragma omp target 15854 #pragma omp teams distribute simd 15855 for (int i = 0; i < 10; ++i) { 15856 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15857 for (int i = 0; i < 10; ++i) 15858 ++a; 15859 } 15860 #pragma omp target 15861 #pragma omp teams distribute simd 15862 for (int i = 0; i < 10; ++i) { 15863 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15864 for (int i = 0; i < 10; ++i) 15865 ++a; 15866 } 15867 15868 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 15869 #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?}} 15870 for (int i = 0; i < 10; ++i) 15871 ; 15872 #pragma omp target 15873 #pragma omp teams distribute parallel for simd 15874 for (int i = 0; i < 10; ++i) { 15875 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15876 for (int i = 0; i < 10; ++i) 15877 ; 15878 } 15879 #pragma omp target 15880 #pragma omp teams distribute parallel for simd 15881 for (int i = 0; i < 10; ++i) { 15882 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15883 for (int i = 0; i < 10; ++i) 15884 ; 15885 } 15886 #pragma omp target 15887 #pragma omp teams distribute parallel for simd 15888 for (int i = 0; i < 10; ++i) { 15889 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15890 for (int i = 0; i < 10; ++i) 15891 ; 15892 } 15893 #pragma omp target 15894 #pragma omp teams distribute parallel for simd 15895 for (int i = 0; i < 10; ++i) { 15896 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 15897 for (int i = 0; i < 10; ++i) 15898 ; 15899 } 15900 #pragma omp target 15901 #pragma omp teams distribute parallel for simd 15902 for (int i = 0; i < 10; ++i) { 15903 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15904 for (int i = 0; i < 10; ++i) 15905 ; 15906 } 15907 #pragma omp target 15908 #pragma omp teams distribute parallel for simd 15909 for (int i = 0; i < 10; ++i) { 15910 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15911 for (int i = 0; i < 10; ++i) 15912 ; 15913 } 15914 #pragma omp target 15915 #pragma omp teams distribute parallel for simd 15916 for (int i = 0; i < 10; ++i) { 15917 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15918 { 15919 bar(); 15920 } 15921 } 15922 #pragma omp target 15923 #pragma omp teams distribute parallel for simd 15924 for (int i = 0; i < 10; ++i) { 15925 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15926 { 15927 bar(); 15928 } 15929 } 15930 #pragma omp target 15931 #pragma omp teams distribute parallel for simd 15932 for (int i = 0; i < 10; ++i) { 15933 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15934 { 15935 bar(); 15936 } 15937 } 15938 #pragma omp target 15939 #pragma omp teams distribute parallel for simd 15940 for (int i = 0; i < 10; ++i) { 15941 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15942 { 15943 bar(); 15944 } 15945 } 15946 #pragma omp target 15947 #pragma omp teams distribute parallel for simd 15948 for (int i = 0; i < 10; ++i) { 15949 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15950 { 15951 bar(); 15952 } 15953 } 15954 #pragma omp target 15955 #pragma omp teams distribute parallel for simd 15956 for (int i = 0; i < 10; ++i) { 15957 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15958 { 15959 #pragma omp single 15960 { 15961 bar(); 15962 } 15963 } 15964 } 15965 #pragma omp target 15966 #pragma omp teams distribute parallel for simd 15967 for (int i = 0; i < 10; ++i) { 15968 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15969 for (int i = 0; i < 10; ++i) 15970 ; 15971 } 15972 #pragma omp target 15973 #pragma omp teams distribute parallel for simd 15974 for (int i = 0; i < 10; ++i) { 15975 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15976 for (int i = 0; i < 10; ++i) 15977 ; 15978 } 15979 #pragma omp target 15980 #pragma omp teams distribute parallel for simd 15981 for (int i = 0; i < 10; ++i) { 15982 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15983 { 15984 bar(); 15985 } 15986 } 15987 #pragma omp target 15988 #pragma omp teams distribute parallel for simd 15989 for (int i = 0; i < 10; ++i) { 15990 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15991 { 15992 bar(); 15993 } 15994 } 15995 #pragma omp target 15996 #pragma omp teams distribute parallel for simd 15997 for (int i = 0; i < 10; ++i) { 15998 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 15999 bar(); 16000 } 16001 #pragma omp target 16002 #pragma omp teams distribute parallel for simd 16003 for (int i = 0; i < 10; ++i) { 16004 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16005 bar(); 16006 } 16007 #pragma omp target 16008 #pragma omp teams distribute parallel for simd 16009 for (int i = 0; i < 10; ++i) { 16010 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16011 bar(); 16012 } 16013 #pragma omp target 16014 #pragma omp teams distribute parallel for simd 16015 for (int i = 0; i < 10; ++i) { 16016 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16017 bar(); 16018 } 16019 #pragma omp target 16020 #pragma omp teams distribute parallel for simd 16021 for (int i = 0; i < 10; ++i) { 16022 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16023 bar(); 16024 } 16025 #pragma omp target 16026 #pragma omp teams distribute parallel for simd 16027 for (int i = 0; i < 10; ++i) { 16028 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16029 ++a; 16030 } 16031 #pragma omp target 16032 #pragma omp teams distribute parallel for simd 16033 for (int i = 0; i < 10; ++i) { 16034 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16035 ++a; 16036 } 16037 #pragma omp target 16038 #pragma omp teams distribute parallel for simd 16039 for (int i = 0; i < 10; ++i) { 16040 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16041 ++a; 16042 } 16043 #pragma omp target 16044 #pragma omp teams distribute parallel for simd 16045 for (int i = 0; i < 10; ++i) { 16046 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16047 for (int i = 0; i < 10; ++i) 16048 ; 16049 } 16050 #pragma omp target 16051 #pragma omp teams distribute parallel for simd 16052 for (int i = 0; i < 10; ++i) { 16053 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16054 ++a; 16055 } 16056 #pragma omp target 16057 #pragma omp teams distribute parallel for simd 16058 for (int i = 0; i < 10; ++i) { 16059 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16060 ++a; 16061 } 16062 #pragma omp target 16063 #pragma omp teams distribute parallel for simd 16064 for (int i = 0; i < 10; ++i) { 16065 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16066 ++a; 16067 } 16068 #pragma omp target 16069 #pragma omp teams distribute parallel for simd 16070 for (int i = 0; i < 10; ++i) { 16071 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16072 ++a; 16073 } 16074 #pragma omp target 16075 #pragma omp teams distribute parallel for simd 16076 for (int i = 0; i < 10; ++i) { 16077 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16078 for (int i = 0; i < 10; ++i) 16079 ++a; 16080 } 16081 #pragma omp target 16082 #pragma omp teams distribute parallel for simd 16083 for (int i = 0; i < 10; ++i) { 16084 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16085 for (int i = 0; i < 10; ++i) 16086 ++a; 16087 } 16088 #pragma omp target 16089 #pragma omp teams distribute parallel for simd 16090 for (int i = 0; i < 10; ++i) { 16091 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16092 for (int i = 0; i < 10; ++i) 16093 ++a; 16094 } 16095 #pragma omp target 16096 #pragma omp teams distribute parallel for simd 16097 for (int i = 0; i < 10; ++i) { 16098 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16099 for (int i = 0; i < 10; ++i) 16100 ++a; 16101 } 16102 #pragma omp target 16103 #pragma omp teams distribute parallel for simd 16104 for (int i = 0; i < 10; ++i) { 16105 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16106 for (int i = 0; i < 10; ++i) 16107 ++a; 16108 } 16109 #pragma omp target 16110 #pragma omp teams distribute parallel for simd 16111 for (int i = 0; i < 10; ++i) { 16112 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16113 for (int i = 0; i < 10; ++i) 16114 ++a; 16115 } 16116 #pragma omp target 16117 #pragma omp teams distribute parallel for simd 16118 for (int i = 0; i < 10; ++i) { 16119 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16120 ++a; 16121 } 16122 #pragma omp target 16123 #pragma omp teams distribute parallel for simd 16124 for (int i = 0; i < 10; ++i) { 16125 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16126 for (int i = 0; i < 10; ++i) 16127 ++a; 16128 } 16129 #pragma omp target 16130 #pragma omp teams distribute parallel for simd 16131 for (int i = 0; i < 10; ++i) { 16132 #pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16133 for (int i = 0; i < 10; ++i) 16134 ++a; 16135 } 16136 #pragma omp target 16137 #pragma omp teams distribute parallel for simd 16138 for (int i = 0; i < 10; ++i) { 16139 #pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16140 for (int i = 0; i < 10; ++i) 16141 ++a; 16142 } 16143 #pragma omp target 16144 #pragma omp teams distribute parallel for simd 16145 for (int i = 0; i < 10; ++i) { 16146 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 16147 for (int i = 0; i < 10; ++i) 16148 ++a; 16149 } 16150 16151 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16152 #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?}} 16153 for (int i = 0; i < 10; ++i) 16154 ; 16155 #pragma omp target 16156 #pragma omp teams distribute parallel for 16157 for (int i = 0; i < 10; ++i) { 16158 #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?}} 16159 for (int i = 0; i < 10; ++i) 16160 ; 16161 } 16162 #pragma omp target 16163 #pragma omp teams distribute parallel for 16164 for (int i = 0; i < 10; ++i) { 16165 #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?}} 16166 for (int i = 0; i < 10; ++i) 16167 ; 16168 } 16169 #pragma omp target 16170 #pragma omp teams distribute parallel for 16171 for (int i = 0; i < 10; ++i) { 16172 #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?}} 16173 for (int i = 0; i < 10; ++i) 16174 ; 16175 } 16176 #pragma omp target 16177 #pragma omp teams distribute parallel for 16178 for (int i = 0; i < 10; ++i) { 16179 #pragma omp simd // OK 16180 for (int i = 0; i < 10; ++i) 16181 ; 16182 } 16183 #pragma omp target 16184 #pragma omp teams distribute parallel for 16185 for (int i = 0; i < 10; ++i) { 16186 #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?}} 16187 for (int i = 0; i < 10; ++i) 16188 ; 16189 } 16190 #pragma omp target 16191 #pragma omp teams distribute parallel for 16192 for (int i = 0; i < 10; ++i) { 16193 #pragma omp parallel // OK 16194 for (int i = 0; i < 10; ++i) 16195 ; 16196 } 16197 #pragma omp target 16198 #pragma omp teams distribute parallel for 16199 for (int i = 0; i < 10; ++i) { 16200 #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?}} 16201 { 16202 bar(); 16203 } 16204 } 16205 #pragma omp target 16206 #pragma omp teams distribute parallel for 16207 for (int i = 0; i < 10; ++i) { 16208 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 16209 { 16210 bar(); 16211 } 16212 } 16213 #pragma omp target 16214 #pragma omp teams distribute parallel for 16215 for (int i = 0; i < 10; ++i) { 16216 #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?}} 16217 { 16218 bar(); 16219 } 16220 } 16221 #pragma omp target 16222 #pragma omp teams distribute parallel for 16223 for (int i = 0; i < 10; ++i) { 16224 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16225 { 16226 bar(); 16227 } 16228 } 16229 #pragma omp target 16230 #pragma omp teams distribute parallel for 16231 for (int i = 0; i < 10; ++i) { 16232 #pragma omp critical // OK 16233 { 16234 bar(); 16235 } 16236 } 16237 #pragma omp target 16238 #pragma omp teams distribute parallel for 16239 for (int i = 0; i < 10; ++i) { 16240 #pragma omp parallel // OK 16241 { 16242 #pragma omp single 16243 { 16244 bar(); 16245 } 16246 } 16247 } 16248 #pragma omp target 16249 #pragma omp teams distribute parallel for 16250 for (int i = 0; i < 10; ++i) { 16251 #pragma omp parallel for // OK 16252 for (int i = 0; i < 10; ++i) 16253 ; 16254 } 16255 #pragma omp target 16256 #pragma omp teams distribute parallel for 16257 for (int i = 0; i < 10; ++i) { 16258 #pragma omp parallel for simd // OK 16259 for (int i = 0; i < 10; ++i) 16260 ; 16261 } 16262 #pragma omp target 16263 #pragma omp teams distribute parallel for 16264 for (int i = 0; i < 10; ++i) { 16265 #pragma omp parallel sections // OK 16266 { 16267 bar(); 16268 } 16269 } 16270 #pragma omp target 16271 #pragma omp teams distribute parallel for 16272 for (int i = 0; i < 10; ++i) { 16273 #pragma omp task // OK 16274 { 16275 bar(); 16276 } 16277 } 16278 #pragma omp target 16279 #pragma omp teams distribute parallel for 16280 for (int i = 0; i < 10; ++i) { 16281 #pragma omp taskyield // OK 16282 bar(); 16283 } 16284 #pragma omp target 16285 #pragma omp teams distribute parallel for 16286 for (int i = 0; i < 10; ++i) { 16287 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 16288 bar(); 16289 } 16290 #pragma omp target 16291 #pragma omp teams distribute parallel for 16292 for (int i = 0; i < 10; ++i) { 16293 #pragma omp taskwait // OK 16294 bar(); 16295 } 16296 #pragma omp target 16297 #pragma omp teams distribute parallel for 16298 for (int i = 0; i < 10; ++i) { 16299 #pragma omp flush // OK 16300 bar(); 16301 } 16302 #pragma omp target 16303 #pragma omp teams distribute parallel for 16304 for (int i = 0; i < 10; ++i) { 16305 #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?}} 16306 bar(); 16307 } 16308 #pragma omp target 16309 #pragma omp teams distribute parallel for 16310 for (int i = 0; i < 10; ++i) { 16311 #pragma omp atomic // OK 16312 ++a; 16313 } 16314 #pragma omp target 16315 #pragma omp teams distribute parallel for 16316 for (int i = 0; i < 10; ++i) { 16317 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 16318 ++a; 16319 } 16320 #pragma omp target 16321 #pragma omp teams distribute parallel for 16322 for (int i = 0; i < 10; ++i) { 16323 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 16324 ++a; 16325 } 16326 #pragma omp target 16327 #pragma omp teams distribute parallel for 16328 for (int i = 0; i < 10; ++i) { 16329 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 16330 for (int i = 0; i < 10; ++i) 16331 ; 16332 } 16333 #pragma omp target 16334 #pragma omp teams distribute parallel for 16335 for (int i = 0; i < 10; ++i) { 16336 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 16337 ++a; 16338 } 16339 #pragma omp target 16340 #pragma omp teams distribute parallel for 16341 for (int i = 0; i < 10; ++i) { 16342 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 16343 ++a; 16344 } 16345 #pragma omp target 16346 #pragma omp teams distribute parallel for 16347 for (int i = 0; i < 10; ++i) { 16348 #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?}} 16349 ++a; 16350 } 16351 #pragma omp target 16352 #pragma omp teams distribute parallel for 16353 for (int i = 0; i < 10; ++i) { 16354 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 16355 ++a; 16356 } 16357 #pragma omp target 16358 #pragma omp teams distribute parallel for 16359 for (int i = 0; i < 10; ++i) { 16360 #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?}} 16361 for (int i = 0; i < 10; ++i) 16362 ++a; 16363 } 16364 #pragma omp target 16365 #pragma omp teams distribute parallel for 16366 for (int i = 0; i < 10; ++i) { 16367 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 16368 for (int i = 0; i < 10; ++i) 16369 ++a; 16370 } 16371 #pragma omp target 16372 #pragma omp teams distribute parallel for 16373 for (int i = 0; i < 10; ++i) { 16374 #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?}} 16375 for (int i = 0; i < 10; ++i) 16376 ++a; 16377 } 16378 #pragma omp target 16379 #pragma omp teams distribute parallel for 16380 for (int i = 0; i < 10; ++i) { 16381 #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?}} 16382 for (int i = 0; i < 10; ++i) 16383 ++a; 16384 } 16385 #pragma omp target 16386 #pragma omp teams distribute parallel for 16387 for (int i = 0; i < 10; ++i) { 16388 #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?}} 16389 for (int i = 0; i < 10; ++i) 16390 ++a; 16391 } 16392 #pragma omp target 16393 #pragma omp teams distribute parallel for 16394 for (int i = 0; i < 10; ++i) { 16395 #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?}} 16396 for (int i = 0; i < 10; ++i) 16397 ++a; 16398 } 16399 #pragma omp target 16400 #pragma omp teams distribute parallel for 16401 for (int i = 0; i < 10; ++i) { 16402 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 16403 ++a; 16404 } 16405 #pragma omp target 16406 #pragma omp teams distribute parallel for 16407 for (int i = 0; i < 10; ++i) { 16408 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}} 16409 for (int i = 0; i < 10; ++i) 16410 ++a; 16411 } 16412 #pragma omp target 16413 #pragma omp teams distribute parallel for 16414 for (int i = 0; i < 10; ++i) { 16415 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}} 16416 for (int i = 0; i < 10; ++i) 16417 ++a; 16418 } 16419 #pragma omp target 16420 #pragma omp teams distribute parallel for 16421 for (int i = 0; i < 10; ++i) { 16422 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 16423 for (int i = 0; i < 10; ++i) 16424 ++a; 16425 } 16426 #pragma omp target 16427 #pragma omp teams distribute parallel for 16428 for (int i = 0; i < 10; ++i) { 16429 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}} 16430 for (int i = 0; i < 10; ++i) 16431 ++a; 16432 } 16433 16434 // TARGET TEAMS DIRECTIVE 16435 #pragma omp target teams 16436 #pragma omp parallel 16437 bar(); 16438 #pragma omp target teams 16439 #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?}} 16440 for (int i = 0; i < 10; ++i) 16441 ; 16442 #pragma omp target teams 16443 #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?}} 16444 for (int i = 0; i < 10; ++i) 16445 ; 16446 #pragma omp target teams 16447 #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?}} 16448 for (int i = 0; i < 10; ++i) 16449 ; 16450 #pragma omp target teams 16451 #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?}} 16452 { 16453 bar(); 16454 } 16455 #pragma omp target teams 16456 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 16457 { 16458 bar(); 16459 } 16460 #pragma omp target teams 16461 #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?}} 16462 bar(); 16463 16464 #pragma omp target teams 16465 #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?}} 16466 { 16467 bar(); 16468 } 16469 #pragma omp target teams 16470 #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?}} 16471 { 16472 bar(); 16473 } 16474 #pragma omp target teams 16475 #pragma omp parallel for 16476 for (int i = 0; i < 10; ++i) 16477 ; 16478 #pragma omp target teams 16479 #pragma omp parallel for simd 16480 for (int i = 0; i < 10; ++i) 16481 ; 16482 #pragma omp target teams 16483 #pragma omp parallel sections 16484 { 16485 bar(); 16486 } 16487 #pragma omp target teams 16488 #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?}} 16489 { 16490 bar(); 16491 } 16492 #pragma omp target teams 16493 { 16494 #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?}} 16495 bar(); 16496 } 16497 #pragma omp target teams 16498 { 16499 #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?}} 16500 bar(); 16501 } 16502 #pragma omp target teams 16503 { 16504 #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?}} 16505 bar(); 16506 } 16507 #pragma omp target teams 16508 { 16509 #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?}} 16510 bar(); 16511 } 16512 #pragma omp target teams 16513 { 16514 #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?}} 16515 bar(); 16516 } 16517 #pragma omp target teams 16518 { 16519 #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?}} 16520 ++a; 16521 } 16522 #pragma omp target teams 16523 { 16524 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 16525 ++a; 16526 } 16527 #pragma omp target teams 16528 { 16529 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 16530 ++a; 16531 } 16532 #pragma omp target teams 16533 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 16534 for (int i = 0; i < 10; ++i) 16535 ; 16536 #pragma omp target teams 16537 { 16538 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16539 } 16540 #pragma omp target teams 16541 { 16542 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 16543 } 16544 #pragma omp target teams 16545 { 16546 #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?}} 16547 ++a; 16548 } 16549 #pragma omp target teams 16550 { 16551 #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?}} 16552 for (int i = 0; i < 10; ++i) 16553 ++a; 16554 } 16555 #pragma omp target teams 16556 #pragma omp distribute 16557 for (int i = 0; i < 10; ++i) 16558 ; 16559 #pragma omp target teams 16560 { 16561 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 16562 ++a; 16563 } 16564 #pragma omp target teams 16565 #pragma omp distribute parallel for 16566 for (int i = 0; i < 10; ++i) 16567 ; 16568 #pragma omp target teams 16569 { 16570 #pragma omp distribute parallel for 16571 for (int i = 0; i < 10; ++i) 16572 ; 16573 #pragma omp distribute parallel for 16574 for (int j = 0; j < 10; ++j) 16575 ; 16576 } 16577 #pragma omp target teams 16578 { 16579 #pragma omp distribute parallel for simd 16580 for (int i = 0; i < 10; ++i) 16581 ; 16582 #pragma omp distribute parallel for simd 16583 for (int j = 0; j < 10; ++j) 16584 ; 16585 } 16586 #pragma omp target teams 16587 { 16588 #pragma omp distribute simd 16589 for (int i = 0; i < 10; ++i) 16590 ; 16591 #pragma omp distribute simd 16592 for (int j = 0; j < 10; ++j) 16593 ; 16594 } 16595 #pragma omp target teams 16596 { 16597 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 16598 for (int i = 0; i < 10; ++i) 16599 ; 16600 } 16601 #pragma omp target teams 16602 { 16603 #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?}} 16604 for (int i = 0; i < 10; ++i) 16605 ; 16606 } 16607 #pragma omp target teams 16608 { 16609 #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?}} 16610 for (int i = 0; i < 10; ++i) 16611 ; 16612 } 16613 #pragma omp target teams 16614 { 16615 #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?}} 16616 for (int i = 0; i < 10; ++i) 16617 ; 16618 } 16619 #pragma omp target teams 16620 { 16621 #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?}} 16622 for (int i = 0; i < 10; ++i) 16623 ; 16624 } 16625 #pragma omp target teams 16626 { 16627 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 16628 a++; 16629 } 16630 #pragma omp target teams 16631 { 16632 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}} 16633 for (int i = 0; i < 10; ++i) 16634 ; 16635 } 16636 #pragma omp target teams 16637 { 16638 #pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 16639 for (int i = 0; i < 10; ++i) 16640 ; 16641 } 16642 #pragma omp target teams 16643 { 16644 #pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}} 16645 for (int i = 0; i < 10; ++i) 16646 ; 16647 } 16648 #pragma omp target teams 16649 { 16650 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}} 16651 for (int i = 0; i < 10; ++i) 16652 ; 16653 } 16654 16655 // TARGET TEAMS DISTRIBUTE DIRECTIVE 16656 #pragma omp target teams distribute // OK 16657 for (int i = 0; i < 10; ++i) 16658 ; 16659 #pragma omp target teams distribute 16660 for (int i = 0; i < 10; ++i) { 16661 #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?}} 16662 for (int i = 0; i < 10; ++i) 16663 ; 16664 } 16665 #pragma omp target teams distribute 16666 for (int i = 0; i < 10; ++i) { 16667 #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?}} 16668 for (int i = 0; i < 10; ++i) 16669 ; 16670 } 16671 #pragma omp target teams distribute 16672 for (int i = 0; i < 10; ++i) { 16673 #pragma omp for // OK 16674 for (int i = 0; i < 10; ++i) 16675 ; 16676 } 16677 #pragma omp target teams distribute 16678 for (int i = 0; i < 10; ++i) { 16679 #pragma omp simd // OK 16680 for (int i = 0; i < 10; ++i) 16681 ; 16682 } 16683 #pragma omp target teams distribute 16684 for (int i = 0; i < 10; ++i) { 16685 #pragma omp for simd // OK 16686 for (int i = 0; i < 10; ++i) 16687 ; 16688 } 16689 #pragma omp target teams distribute 16690 for (int i = 0; i < 10; ++i) { 16691 #pragma omp parallel // OK 16692 for (int i = 0; i < 10; ++i) 16693 ; 16694 } 16695 #pragma omp target teams distribute 16696 for (int i = 0; i < 10; ++i) { 16697 #pragma omp sections // OK 16698 { 16699 bar(); 16700 } 16701 } 16702 #pragma omp target teams distribute 16703 for (int i = 0; i < 10; ++i) { 16704 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}} 16705 { 16706 bar(); 16707 } 16708 } 16709 #pragma omp target teams distribute 16710 for (int i = 0; i < 10; ++i) { 16711 #pragma omp single // OK 16712 { 16713 bar(); 16714 } 16715 } 16716 #pragma omp target teams distribute 16717 for (int i = 0; i < 10; ++i) { 16718 #pragma omp master // OK 16719 { 16720 bar(); 16721 } 16722 } 16723 #pragma omp target teams distribute 16724 for (int i = 0; i < 10; ++i) { 16725 #pragma omp critical // OK 16726 { 16727 bar(); 16728 } 16729 } 16730 #pragma omp target teams distribute 16731 for (int i = 0; i < 10; ++i) { 16732 #pragma omp parallel // OK 16733 { 16734 #pragma omp single 16735 { 16736 bar(); 16737 } 16738 } 16739 } 16740 #pragma omp target teams distribute 16741 for (int i = 0; i < 10; ++i) { 16742 #pragma omp parallel for // OK 16743 for (int i = 0; i < 10; ++i) 16744 ; 16745 } 16746 #pragma omp target teams distribute 16747 for (int i = 0; i < 10; ++i) { 16748 #pragma omp parallel for simd // OK 16749 for (int i = 0; i < 10; ++i) 16750 ; 16751 } 16752 #pragma omp target teams distribute 16753 for (int i = 0; i < 10; ++i) { 16754 #pragma omp parallel sections // OK 16755 { 16756 bar(); 16757 } 16758 } 16759 #pragma omp target teams distribute 16760 for (int i = 0; i < 10; ++i) { 16761 #pragma omp task // OK 16762 { 16763 bar(); 16764 } 16765 } 16766 #pragma omp target teams distribute 16767 for (int i = 0; i < 10; ++i) { 16768 #pragma omp taskyield // OK 16769 bar(); 16770 } 16771 #pragma omp target teams distribute 16772 for (int i = 0; i < 10; ++i) { 16773 #pragma omp barrier // OK 16774 bar(); 16775 } 16776 #pragma omp target teams distribute 16777 for (int i = 0; i < 10; ++i) { 16778 #pragma omp taskwait // OK 16779 bar(); 16780 } 16781 #pragma omp target teams distribute 16782 for (int i = 0; i < 10; ++i) { 16783 #pragma omp flush // OK 16784 bar(); 16785 } 16786 #pragma omp target teams distribute 16787 for (int i = 0; i < 10; ++i) { 16788 #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?}} 16789 bar(); 16790 } 16791 #pragma omp target teams distribute 16792 for (int i = 0; i < 10; ++i) { 16793 #pragma omp atomic // OK 16794 ++a; 16795 } 16796 #pragma omp target teams distribute 16797 for (int i = 0; i < 10; ++i) { 16798 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16799 ++a; 16800 } 16801 #pragma omp target teams distribute 16802 for (int i = 0; i < 10; ++i) { 16803 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16804 ++a; 16805 } 16806 #pragma omp target teams distribute 16807 for (int i = 0; i < 10; ++i) { 16808 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16809 for (int i = 0; i < 10; ++i) 16810 ; 16811 } 16812 #pragma omp target teams distribute 16813 for (int i = 0; i < 10; ++i) { 16814 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16815 ++a; 16816 } 16817 #pragma omp target teams distribute 16818 for (int i = 0; i < 10; ++i) { 16819 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16820 ++a; 16821 } 16822 #pragma omp target teams distribute 16823 for (int i = 0; i < 10; ++i) { 16824 #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?}} 16825 ++a; 16826 } 16827 #pragma omp target teams distribute 16828 for (int i = 0; i < 10; ++i) { 16829 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16830 ++a; 16831 } 16832 #pragma omp target teams distribute 16833 for (int i = 0; i < 10; ++i) { 16834 #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?}} 16835 for (int i = 0; i < 10; ++i) 16836 ++a; 16837 } 16838 #pragma omp target teams distribute 16839 for (int i = 0; i < 10; ++i) { 16840 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16841 for (int i = 0; i < 10; ++i) 16842 ++a; 16843 } 16844 #pragma omp target teams distribute 16845 for (int i = 0; i < 10; ++i) { 16846 #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?}} 16847 for (int i = 0; i < 10; ++i) 16848 ++a; 16849 } 16850 #pragma omp target teams distribute 16851 for (int i = 0; i < 10; ++i) { 16852 #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?}} 16853 for (int i = 0; i < 10; ++i) 16854 ++a; 16855 } 16856 #pragma omp target teams distribute 16857 for (int i = 0; i < 10; ++i) { 16858 #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?}} 16859 for (int i = 0; i < 10; ++i) 16860 ++a; 16861 } 16862 #pragma omp target teams distribute 16863 for (int i = 0; i < 10; ++i) { 16864 #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?}} 16865 for (int i = 0; i < 10; ++i) 16866 ++a; 16867 } 16868 #pragma omp target teams distribute 16869 for (int i = 0; i < 10; ++i) { 16870 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16871 ++a; 16872 } 16873 #pragma omp target teams distribute 16874 for (int i = 0; i < 10; ++i) { 16875 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' 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 target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' 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 distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16888 for (int i = 0; i < 10; ++i) 16889 ++a; 16890 } 16891 #pragma omp target teams distribute 16892 for (int i = 0; i < 10; ++i) { 16893 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}} 16894 for (int i = 0; i < 10; ++i) 16895 ++a; 16896 } 16897 16898 // TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 16899 #pragma omp target teams distribute parallel for // OK 16900 for (int i = 0; i < 10; ++i) 16901 ; 16902 #pragma omp target teams distribute parallel for 16903 for (int i = 0; i < 10; ++i) { 16904 #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?}} 16905 for (int i = 0; i < 10; ++i) 16906 ; 16907 } 16908 #pragma omp target teams distribute parallel for 16909 for (int i = 0; i < 10; ++i) { 16910 #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?}} 16911 for (int i = 0; i < 10; ++i) 16912 ; 16913 } 16914 #pragma omp target teams distribute parallel for 16915 for (int i = 0; i < 10; ++i) { 16916 #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?}} 16917 for (int i = 0; i < 10; ++i) 16918 ; 16919 } 16920 #pragma omp target teams distribute parallel for 16921 for (int i = 0; i < 10; ++i) { 16922 #pragma omp simd // OK 16923 for (int i = 0; i < 10; ++i) 16924 ; 16925 } 16926 #pragma omp target teams distribute parallel for 16927 for (int i = 0; i < 10; ++i) { 16928 #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?}} 16929 for (int i = 0; i < 10; ++i) 16930 ; 16931 } 16932 #pragma omp target teams distribute parallel for 16933 for (int i = 0; i < 10; ++i) { 16934 #pragma omp parallel // OK 16935 for (int i = 0; i < 10; ++i) 16936 ; 16937 } 16938 #pragma omp target teams distribute parallel for 16939 for (int i = 0; i < 10; ++i) { 16940 #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?}} 16941 { 16942 bar(); 16943 } 16944 } 16945 #pragma omp target teams distribute parallel for 16946 for (int i = 0; i < 10; ++i) { 16947 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}} 16948 { 16949 bar(); 16950 } 16951 } 16952 #pragma omp target teams distribute parallel for 16953 for (int i = 0; i < 10; ++i) { 16954 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 16955 { 16956 bar(); 16957 } 16958 } 16959 #pragma omp target teams distribute parallel for 16960 for (int i = 0; i < 10; ++i) { 16961 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 16962 { 16963 bar(); 16964 } 16965 } 16966 #pragma omp target teams distribute parallel for 16967 for (int i = 0; i < 10; ++i) { 16968 #pragma omp critical // OK 16969 { 16970 bar(); 16971 } 16972 } 16973 #pragma omp target teams distribute parallel for 16974 for (int i = 0; i < 10; ++i) { 16975 #pragma omp parallel // OK 16976 { 16977 #pragma omp single 16978 { 16979 bar(); 16980 } 16981 } 16982 } 16983 #pragma omp target teams distribute parallel for 16984 for (int i = 0; i < 10; ++i) { 16985 #pragma omp parallel for // OK 16986 for (int i = 0; i < 10; ++i) 16987 ; 16988 } 16989 #pragma omp target teams distribute parallel for 16990 for (int i = 0; i < 10; ++i) { 16991 #pragma omp parallel for simd // OK 16992 for (int i = 0; i < 10; ++i) 16993 ; 16994 } 16995 #pragma omp target teams distribute parallel for 16996 for (int i = 0; i < 10; ++i) { 16997 #pragma omp parallel sections // OK 16998 { 16999 bar(); 17000 } 17001 } 17002 #pragma omp target teams distribute parallel for 17003 for (int i = 0; i < 10; ++i) { 17004 #pragma omp task // OK 17005 { 17006 bar(); 17007 } 17008 } 17009 #pragma omp target teams distribute parallel for 17010 for (int i = 0; i < 10; ++i) { 17011 #pragma omp taskyield // OK 17012 bar(); 17013 } 17014 #pragma omp target teams distribute parallel for 17015 for (int i = 0; i < 10; ++i) { 17016 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}} 17017 bar(); 17018 } 17019 #pragma omp target teams distribute parallel for 17020 for (int i = 0; i < 10; ++i) { 17021 #pragma omp taskwait // OK 17022 bar(); 17023 } 17024 #pragma omp target teams distribute parallel for 17025 for (int i = 0; i < 10; ++i) { 17026 #pragma omp flush // OK 17027 bar(); 17028 } 17029 #pragma omp target teams distribute parallel for 17030 for (int i = 0; i < 10; ++i) { 17031 #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?}} 17032 bar(); 17033 } 17034 #pragma omp target teams distribute parallel for 17035 for (int i = 0; i < 10; ++i) { 17036 #pragma omp atomic // OK 17037 ++a; 17038 } 17039 #pragma omp target teams distribute parallel for 17040 for (int i = 0; i < 10; ++i) { 17041 #pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17042 ++a; 17043 } 17044 #pragma omp target teams distribute parallel for 17045 for (int i = 0; i < 10; ++i) { 17046 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17047 ++a; 17048 } 17049 #pragma omp target teams distribute parallel for 17050 for (int i = 0; i < 10; ++i) { 17051 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17052 for (int i = 0; i < 10; ++i) 17053 ; 17054 } 17055 #pragma omp target teams distribute parallel for 17056 for (int i = 0; i < 10; ++i) { 17057 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17058 ++a; 17059 } 17060 #pragma omp target teams distribute parallel for 17061 for (int i = 0; i < 10; ++i) { 17062 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17063 ++a; 17064 } 17065 #pragma omp target teams distribute parallel for 17066 for (int i = 0; i < 10; ++i) { 17067 #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?}} 17068 ++a; 17069 } 17070 #pragma omp target teams distribute parallel for 17071 for (int i = 0; i < 10; ++i) { 17072 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17073 ++a; 17074 } 17075 #pragma omp target teams distribute parallel for 17076 for (int i = 0; i < 10; ++i) { 17077 #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?}} 17078 for (int i = 0; i < 10; ++i) 17079 ++a; 17080 } 17081 #pragma omp target teams distribute parallel for 17082 for (int i = 0; i < 10; ++i) { 17083 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17084 for (int i = 0; i < 10; ++i) 17085 ++a; 17086 } 17087 #pragma omp target teams distribute parallel for 17088 for (int i = 0; i < 10; ++i) { 17089 #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?}} 17090 for (int i = 0; i < 10; ++i) 17091 ++a; 17092 } 17093 #pragma omp target teams distribute parallel for 17094 for (int i = 0; i < 10; ++i) { 17095 #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?}} 17096 for (int i = 0; i < 10; ++i) 17097 ++a; 17098 } 17099 #pragma omp target teams distribute parallel for 17100 for (int i = 0; i < 10; ++i) { 17101 #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?}} 17102 for (int i = 0; i < 10; ++i) 17103 ++a; 17104 } 17105 #pragma omp target teams distribute parallel for 17106 for (int i = 0; i < 10; ++i) { 17107 #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?}} 17108 for (int i = 0; i < 10; ++i) 17109 ++a; 17110 } 17111 #pragma omp target teams distribute parallel for 17112 for (int i = 0; i < 10; ++i) { 17113 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17114 ++a; 17115 } 17116 #pragma omp target teams distribute parallel for 17117 for (int i = 0; i < 10; ++i) { 17118 #pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' 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 target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' 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 distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17131 for (int i = 0; i < 10; ++i) 17132 ++a; 17133 } 17134 #pragma omp target teams distribute parallel for 17135 for (int i = 0; i < 10; ++i) { 17136 #pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}} 17137 for (int i = 0; i < 10; ++i) 17138 ++a; 17139 } 17140 17141 // TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 17142 #pragma omp target teams distribute parallel for simd // OK 17143 for (int i = 0; i < 10; ++i) 17144 ; 17145 #pragma omp target teams distribute parallel for simd 17146 for (int i = 0; i < 10; ++i) { 17147 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17148 for (int i = 0; i < 10; ++i) 17149 ; 17150 } 17151 #pragma omp target teams distribute parallel for simd 17152 for (int i = 0; i < 10; ++i) { 17153 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17154 for (int i = 0; i < 10; ++i) 17155 ; 17156 } 17157 #pragma omp target teams distribute parallel for simd 17158 for (int i = 0; i < 10; ++i) { 17159 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17160 for (int i = 0; i < 10; ++i) 17161 ; 17162 } 17163 #pragma omp target teams distribute parallel for simd 17164 for (int i = 0; i < 10; ++i) { 17165 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17166 for (int i = 0; i < 10; ++i) 17167 ; 17168 } 17169 #pragma omp target teams distribute parallel for simd 17170 for (int i = 0; i < 10; ++i) { 17171 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17172 for (int i = 0; i < 10; ++i) 17173 ; 17174 } 17175 #pragma omp target teams distribute parallel for simd 17176 for (int i = 0; i < 10; ++i) { 17177 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17178 for (int i = 0; i < 10; ++i) 17179 ; 17180 } 17181 #pragma omp target teams distribute parallel for simd 17182 for (int i = 0; i < 10; ++i) { 17183 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17184 { 17185 bar(); 17186 } 17187 } 17188 #pragma omp target teams distribute parallel for simd 17189 for (int i = 0; i < 10; ++i) { 17190 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17191 { 17192 bar(); 17193 } 17194 } 17195 #pragma omp target teams distribute parallel for simd 17196 for (int i = 0; i < 10; ++i) { 17197 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17198 { 17199 bar(); 17200 } 17201 } 17202 #pragma omp target teams distribute parallel for simd 17203 for (int i = 0; i < 10; ++i) { 17204 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17205 { 17206 bar(); 17207 } 17208 } 17209 #pragma omp target teams distribute parallel for simd 17210 for (int i = 0; i < 10; ++i) { 17211 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17212 { 17213 bar(); 17214 } 17215 } 17216 #pragma omp target teams distribute parallel for simd 17217 for (int i = 0; i < 10; ++i) { 17218 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17219 { 17220 #pragma omp single 17221 { 17222 bar(); 17223 } 17224 } 17225 } 17226 #pragma omp target teams distribute parallel for simd 17227 for (int i = 0; i < 10; ++i) { 17228 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17229 for (int i = 0; i < 10; ++i) 17230 ; 17231 } 17232 #pragma omp target teams distribute parallel for simd 17233 for (int i = 0; i < 10; ++i) { 17234 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17235 for (int i = 0; i < 10; ++i) 17236 ; 17237 } 17238 #pragma omp target teams distribute parallel for simd 17239 for (int i = 0; i < 10; ++i) { 17240 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17241 { 17242 bar(); 17243 } 17244 } 17245 #pragma omp target teams distribute parallel for simd 17246 for (int i = 0; i < 10; ++i) { 17247 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17248 { 17249 bar(); 17250 } 17251 } 17252 #pragma omp target teams distribute parallel for simd 17253 for (int i = 0; i < 10; ++i) { 17254 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17255 bar(); 17256 } 17257 #pragma omp target teams distribute parallel for simd 17258 for (int i = 0; i < 10; ++i) { 17259 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17260 bar(); 17261 } 17262 #pragma omp target teams distribute parallel for simd 17263 for (int i = 0; i < 10; ++i) { 17264 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17265 bar(); 17266 } 17267 #pragma omp target teams distribute parallel for simd 17268 for (int i = 0; i < 10; ++i) { 17269 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17270 bar(); 17271 } 17272 #pragma omp target teams distribute parallel for simd 17273 for (int i = 0; i < 10; ++i) { 17274 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17275 bar(); 17276 } 17277 #pragma omp target teams distribute parallel for simd 17278 for (int i = 0; i < 10; ++i) { 17279 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 17280 ++a; 17281 } 17282 #pragma omp target teams distribute parallel for simd 17283 for (int i = 0; i < 10; ++i) { 17284 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17285 ++a; 17286 } 17287 #pragma omp target teams distribute parallel for simd 17288 for (int i = 0; i < 10; ++i) { 17289 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17290 ++a; 17291 } 17292 #pragma omp target teams distribute parallel for simd 17293 for (int i = 0; i < 10; ++i) { 17294 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17295 for (int i = 0; i < 10; ++i) 17296 ; 17297 } 17298 #pragma omp target teams distribute parallel for simd 17299 for (int i = 0; i < 10; ++i) { 17300 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17301 ++a; 17302 } 17303 #pragma omp target teams distribute parallel for simd 17304 for (int i = 0; i < 10; ++i) { 17305 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17306 ++a; 17307 } 17308 #pragma omp target teams distribute parallel for simd 17309 for (int i = 0; i < 10; ++i) { 17310 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17311 ++a; 17312 } 17313 #pragma omp target teams distribute parallel for simd 17314 for (int i = 0; i < 10; ++i) { 17315 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17316 ++a; 17317 } 17318 #pragma omp target teams distribute parallel for simd 17319 for (int i = 0; i < 10; ++i) { 17320 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17321 for (int i = 0; i < 10; ++i) 17322 ++a; 17323 } 17324 #pragma omp target teams distribute parallel for simd 17325 for (int i = 0; i < 10; ++i) { 17326 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17327 for (int i = 0; i < 10; ++i) 17328 ++a; 17329 } 17330 #pragma omp target teams distribute parallel for simd 17331 for (int i = 0; i < 10; ++i) { 17332 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17333 for (int i = 0; i < 10; ++i) 17334 ++a; 17335 } 17336 #pragma omp target teams distribute parallel for simd 17337 for (int i = 0; i < 10; ++i) { 17338 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17339 for (int i = 0; i < 10; ++i) 17340 ++a; 17341 } 17342 #pragma omp target teams distribute parallel for simd 17343 for (int i = 0; i < 10; ++i) { 17344 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17345 for (int i = 0; i < 10; ++i) 17346 ++a; 17347 } 17348 #pragma omp target teams distribute parallel for simd 17349 for (int i = 0; i < 10; ++i) { 17350 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17351 for (int i = 0; i < 10; ++i) 17352 ; 17353 } 17354 #pragma omp target teams distribute parallel for simd 17355 for (int i = 0; i < 10; ++i) { 17356 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17357 a++; 17358 } 17359 #pragma omp target teams distribute parallel for simd 17360 for (int i = 0; i < 10; ++i) { 17361 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17362 for (int i = 0; i < 10; ++i) 17363 ; 17364 } 17365 #pragma omp target teams distribute parallel for simd 17366 for (int i = 0; i < 10; ++i) { 17367 #pragma omp target 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 distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17374 for (int i = 0; i < 10; ++i) 17375 ; 17376 } 17377 #pragma omp target teams distribute parallel for simd 17378 for (int i = 0; i < 10; ++i) { 17379 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17380 for (int i = 0; i < 10; ++i) 17381 ; 17382 } 17383 17384 // TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE 17385 #pragma omp target teams distribute simd // OK 17386 for (int i = 0; i < 10; ++i) 17387 ; 17388 #pragma omp target teams distribute simd 17389 for (int i = 0; i < 10; ++i) { 17390 #pragma omp 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 simd 17395 for (int i = 0; i < 10; ++i) { 17396 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17397 for (int i = 0; i < 10; ++i) 17398 ; 17399 } 17400 #pragma omp target teams distribute simd 17401 for (int i = 0; i < 10; ++i) { 17402 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17403 for (int i = 0; i < 10; ++i) 17404 ; 17405 } 17406 #pragma omp target teams distribute simd 17407 for (int i = 0; i < 10; ++i) { 17408 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 17409 for (int i = 0; i < 10; ++i) 17410 ; 17411 } 17412 #pragma omp target teams distribute simd 17413 for (int i = 0; i < 10; ++i) { 17414 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17415 for (int i = 0; i < 10; ++i) 17416 ; 17417 } 17418 #pragma omp target teams distribute simd 17419 for (int i = 0; i < 10; ++i) { 17420 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17421 for (int i = 0; i < 10; ++i) 17422 ; 17423 } 17424 #pragma omp target teams distribute simd 17425 for (int i = 0; i < 10; ++i) { 17426 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17427 { 17428 bar(); 17429 } 17430 } 17431 #pragma omp target teams distribute simd 17432 for (int i = 0; i < 10; ++i) { 17433 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17434 { 17435 bar(); 17436 } 17437 } 17438 #pragma omp target teams distribute simd 17439 for (int i = 0; i < 10; ++i) { 17440 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17441 { 17442 bar(); 17443 } 17444 } 17445 #pragma omp target teams distribute simd 17446 for (int i = 0; i < 10; ++i) { 17447 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17448 { 17449 bar(); 17450 } 17451 } 17452 #pragma omp target teams distribute simd 17453 for (int i = 0; i < 10; ++i) { 17454 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17455 { 17456 bar(); 17457 } 17458 } 17459 #pragma omp target teams distribute simd 17460 for (int i = 0; i < 10; ++i) { 17461 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17462 { 17463 #pragma omp single 17464 { 17465 bar(); 17466 } 17467 } 17468 } 17469 #pragma omp target teams distribute simd 17470 for (int i = 0; i < 10; ++i) { 17471 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17472 for (int i = 0; i < 10; ++i) 17473 ; 17474 } 17475 #pragma omp target teams distribute simd 17476 for (int i = 0; i < 10; ++i) { 17477 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17478 for (int i = 0; i < 10; ++i) 17479 ; 17480 } 17481 #pragma omp target teams distribute simd 17482 for (int i = 0; i < 10; ++i) { 17483 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17484 { 17485 bar(); 17486 } 17487 } 17488 #pragma omp target teams distribute simd 17489 for (int i = 0; i < 10; ++i) { 17490 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17491 { 17492 bar(); 17493 } 17494 } 17495 #pragma omp target teams distribute simd 17496 for (int i = 0; i < 10; ++i) { 17497 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17498 bar(); 17499 } 17500 #pragma omp target teams distribute simd 17501 for (int i = 0; i < 10; ++i) { 17502 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17503 bar(); 17504 } 17505 #pragma omp target teams distribute simd 17506 for (int i = 0; i < 10; ++i) { 17507 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17508 bar(); 17509 } 17510 #pragma omp target teams distribute simd 17511 for (int i = 0; i < 10; ++i) { 17512 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17513 bar(); 17514 } 17515 #pragma omp target teams distribute simd 17516 for (int i = 0; i < 10; ++i) { 17517 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17518 bar(); 17519 } 17520 #pragma omp target teams distribute simd 17521 for (int i = 0; i < 10; ++i) { 17522 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}}OK 17523 ++a; 17524 } 17525 #pragma omp target teams distribute simd 17526 for (int i = 0; i < 10; ++i) { 17527 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17528 ++a; 17529 } 17530 #pragma omp target teams distribute simd 17531 for (int i = 0; i < 10; ++i) { 17532 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17533 ++a; 17534 } 17535 #pragma omp target teams distribute simd 17536 for (int i = 0; i < 10; ++i) { 17537 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17538 for (int i = 0; i < 10; ++i) 17539 ; 17540 } 17541 #pragma omp target teams distribute simd 17542 for (int i = 0; i < 10; ++i) { 17543 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17544 ++a; 17545 } 17546 #pragma omp target teams distribute simd 17547 for (int i = 0; i < 10; ++i) { 17548 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17549 ++a; 17550 } 17551 #pragma omp target teams distribute simd 17552 for (int i = 0; i < 10; ++i) { 17553 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17554 ++a; 17555 } 17556 #pragma omp target teams distribute simd 17557 for (int i = 0; i < 10; ++i) { 17558 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17559 ++a; 17560 } 17561 #pragma omp target teams distribute simd 17562 for (int i = 0; i < 10; ++i) { 17563 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17564 for (int i = 0; i < 10; ++i) 17565 ++a; 17566 } 17567 #pragma omp target teams distribute simd 17568 for (int i = 0; i < 10; ++i) { 17569 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17570 for (int i = 0; i < 10; ++i) 17571 ++a; 17572 } 17573 #pragma omp target teams distribute simd 17574 for (int i = 0; i < 10; ++i) { 17575 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17576 for (int i = 0; i < 10; ++i) 17577 ++a; 17578 } 17579 #pragma omp target teams distribute simd 17580 for (int i = 0; i < 10; ++i) { 17581 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17582 for (int i = 0; i < 10; ++i) 17583 ++a; 17584 } 17585 #pragma omp target teams distribute simd 17586 for (int i = 0; i < 10; ++i) { 17587 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17588 for (int i = 0; i < 10; ++i) 17589 ++a; 17590 } 17591 #pragma omp target teams distribute simd 17592 for (int i = 0; i < 10; ++i) { 17593 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17594 for (int i = 0; i < 10; ++i) 17595 ; 17596 } 17597 #pragma omp target teams distribute simd 17598 for (int i = 0; i < 10; ++i) { 17599 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17600 a++; 17601 } 17602 #pragma omp target teams distribute simd 17603 for (int i = 0; i < 10; ++i) { 17604 #pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17605 for (int i = 0; i < 10; ++i) 17606 ; 17607 } 17608 #pragma omp target teams distribute simd 17609 for (int i = 0; i < 10; ++i) { 17610 #pragma omp target 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 distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17617 for (int i = 0; i < 10; ++i) 17618 ; 17619 } 17620 #pragma omp target teams distribute simd 17621 for (int i = 0; i < 10; ++i) { 17622 #pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 17623 for (int i = 0; i < 10; ++i) 17624 ; 17625 } 17626 17627 return foo<int>(); 17628 } 17629 17630