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 177 // SIMD DIRECTIVE 178 #pragma omp simd 179 for (int i = 0; i < 10; ++i) { 180 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 181 for (int i = 0; i < 10; ++i) 182 ; 183 } 184 #pragma omp simd 185 for (int i = 0; i < 10; ++i) { 186 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 187 for (int i = 0; i < 10; ++i) 188 ; 189 } 190 #pragma omp simd 191 for (int i = 0; i < 10; ++i) { 192 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 193 for (int i = 0; i < 10; ++i) 194 ; 195 } 196 #pragma omp simd 197 for (int i = 0; i < 10; ++i) { 198 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 199 for (int i = 0; i < 10; ++i) 200 ; 201 } 202 #pragma omp simd 203 for (int i = 0; i < 10; ++i) { 204 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 205 { 206 bar(); 207 } 208 } 209 #pragma omp simd 210 for (int i = 0; i < 10; ++i) { 211 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 212 { 213 bar(); 214 } 215 } 216 #pragma omp simd 217 for (int i = 0; i < 10; ++i) { 218 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 219 { 220 bar(); 221 } 222 } 223 #pragma omp simd 224 for (int i = 0; i < 10; ++i) { 225 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 226 { 227 bar(); 228 } 229 } 230 #pragma omp simd 231 for (int i = 0; i < 10; ++i) { 232 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 233 { 234 bar(); 235 } 236 } 237 #pragma omp simd 238 for (int i = 0; i < 10; ++i) { 239 #pragma omp parallel for // 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 parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 246 for (int i = 0; i < 10; ++i) 247 ; 248 } 249 #pragma omp simd 250 for (int i = 0; i < 10; ++i) { 251 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 252 { 253 bar(); 254 } 255 } 256 #pragma omp simd 257 for (int i = 0; i < 10; ++i) { 258 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 259 { 260 bar(); 261 } 262 } 263 #pragma omp simd 264 for (int i = 0; i < 10; ++i) { 265 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 266 bar(); 267 } 268 #pragma omp simd 269 for (int i = 0; i < 10; ++i) { 270 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 271 bar(); 272 } 273 #pragma omp simd 274 for (int i = 0; i < 10; ++i) { 275 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 276 bar(); 277 } 278 #pragma omp simd 279 for (int i = 0; i < 10; ++i) { 280 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 281 bar(); 282 } 283 #pragma omp simd 284 for (int i = 0; i < 10; ++i) { 285 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 286 bar(); 287 } 288 #pragma omp simd 289 for (int i = 0; i < 10; ++i) { 290 #pragma omp ordered simd // OK 291 bar(); 292 } 293 #pragma omp simd 294 for (int i = 0; i < 10; ++i) { 295 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 296 bar(); 297 } 298 #pragma omp simd 299 for (int i = 0; i < 10; ++i) { 300 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 301 ++a; 302 } 303 #pragma omp simd 304 for (int i = 0; i < 10; ++i) { 305 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 306 ++a; 307 } 308 #pragma omp simd 309 for (int i = 0; i < 10; ++i) { 310 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 311 ++a; 312 } 313 #pragma omp simd 314 for (int i = 0; i < 10; ++i) { 315 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 316 for (int i = 0; i < 10; ++i) 317 ; 318 } 319 #pragma omp simd 320 for (int i = 0; i < 10; ++i) { 321 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 322 ++a; 323 } 324 #pragma omp simd 325 for (int i = 0; i < 10; ++i) { 326 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 327 ++a; 328 } 329 #pragma omp simd 330 for (int i = 0; i < 10; ++i) { 331 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 332 ++a; 333 } 334 #pragma omp simd 335 for (int i = 0; i < 10; ++i) { 336 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 337 for (int i = 0; i < 10; ++i) 338 ++a; 339 } 340 #pragma omp simd 341 for (int i = 0; i < 10; ++i) { 342 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 343 for (int j = 0; j < 10; ++j) 344 ; 345 } 346 #pragma omp simd 347 for (int i = 0; i < 10; ++i) { 348 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 349 } 350 #pragma omp simd 351 for (int i = 0; i < 10; ++i) { 352 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 353 for (int j = 0; j < 10; ++j) 354 ; 355 } 356 #pragma omp simd 357 for (int i = 0; i < 10; ++i) { 358 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 359 for (int j = 0; j < 10; ++j) 360 ; 361 } 362 #pragma omp simd 363 for (int i = 0; i < 10; ++i) { 364 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 365 for (int j = 0; j < 10; ++j) 366 ; 367 } 368 #pragma omp simd 369 for (int i = 0; i < 10; ++i) { 370 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 371 for (int j = 0; j < 10; ++j) 372 ; 373 } 374 #pragma omp simd 375 for (int i = 0; i < 10; ++i) { 376 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 377 for (int j = 0; j < 10; ++j) 378 ; 379 } 380 #pragma omp simd 381 for (int i = 0; i < 10; ++i) { 382 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 383 for (int j = 0; j < 10; ++j) 384 ; 385 } 386 387 // FOR DIRECTIVE 388 #pragma omp for 389 for (int i = 0; i < 10; ++i) { 390 #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?}} 391 for (int i = 0; i < 10; ++i) 392 ; 393 } 394 #pragma omp for 395 for (int i = 0; i < 10; ++i) { 396 #pragma omp simd 397 for (int i = 0; i < 10; ++i) 398 ; 399 } 400 #pragma omp for 401 for (int i = 0; i < 10; ++i) { 402 #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?}} 403 for (int i = 0; i < 10; ++i) 404 ; 405 } 406 #pragma omp for 407 for (int i = 0; i < 10; ++i) { 408 #pragma omp parallel 409 for (int i = 0; i < 10; ++i) 410 ; 411 } 412 #pragma omp for 413 for (int i = 0; i < 10; ++i) { 414 #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?}} 415 { 416 bar(); 417 } 418 } 419 #pragma omp for 420 for (int i = 0; i < 10; ++i) { 421 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 422 { 423 bar(); 424 } 425 } 426 #pragma omp for 427 for (int i = 0; i < 10; ++i) { 428 #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?}} 429 { 430 bar(); 431 } 432 } 433 434 #pragma omp for 435 for (int i = 0; i < 10; ++i) { 436 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 437 { 438 bar(); 439 } 440 } 441 #pragma omp for 442 for (int i = 0; i < 10; ++i) { 443 #pragma omp critical 444 { 445 bar(); 446 } 447 } 448 #pragma omp for 449 for (int i = 0; i < 10; ++i) { 450 #pragma omp parallel 451 { 452 #pragma omp single // OK 453 { 454 bar(); 455 } 456 #pragma omp for // OK 457 for (int i = 0; i < 10; ++i) 458 ; 459 #pragma omp sections // OK 460 { 461 bar(); 462 } 463 } 464 } 465 #pragma omp for 466 for (int i = 0; i < 10; ++i) { 467 #pragma omp parallel for 468 for (int i = 0; i < 10; ++i) 469 ; 470 } 471 #pragma omp for 472 for (int i = 0; i < 10; ++i) { 473 #pragma omp parallel for simd 474 for (int i = 0; i < 10; ++i) 475 ; 476 } 477 #pragma omp for 478 for (int i = 0; i < 10; ++i) { 479 #pragma omp parallel sections 480 { 481 bar(); 482 } 483 } 484 #pragma omp for 485 for (int i = 0; i < 10; ++i) { 486 #pragma omp task 487 { 488 bar(); 489 } 490 } 491 #pragma omp for 492 for (int i = 0; i < 10; ++i) { 493 #pragma omp taskyield 494 bar(); 495 } 496 #pragma omp for 497 for (int i = 0; i < 10; ++i) { 498 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 499 bar(); 500 } 501 #pragma omp for 502 for (int i = 0; i < 10; ++i) { 503 #pragma omp taskwait 504 bar(); 505 } 506 #pragma omp for 507 for (int i = 0; i < 10; ++i) { 508 #pragma omp flush 509 bar(); 510 } 511 #pragma omp for 512 for (int i = 0; i < 10; ++i) { 513 #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?}} 514 bar(); 515 } 516 #pragma omp for ordered 517 for (int i = 0; i < 10; ++i) { 518 #pragma omp ordered // OK 519 bar(); 520 } 521 #pragma omp for 522 for (int i = 0; i < 10; ++i) { 523 #pragma omp atomic 524 ++a; 525 } 526 #pragma omp for 527 for (int i = 0; i < 10; ++i) { 528 #pragma omp target 529 ++a; 530 } 531 #pragma omp for 532 for (int i = 0; i < 10; ++i) { 533 #pragma omp target parallel 534 ++a; 535 } 536 #pragma omp for 537 for (int i = 0; i < 10; ++i) { 538 #pragma omp target parallel for 539 for (int i = 0; i < 10; ++i) 540 ; 541 } 542 #pragma omp for 543 for (int i = 0; i < 10; ++i) { 544 #pragma omp target enter data map(to: a) 545 ++a; 546 } 547 #pragma omp for 548 for (int i = 0; i < 10; ++i) { 549 #pragma omp target exit data map(from: a) 550 ++a; 551 } 552 #pragma omp for 553 for (int i = 0; i < 10; ++i) { 554 #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?}} 555 ++a; 556 } 557 #pragma omp for 558 for (int i = 0; i < 10; ++i) { 559 #pragma omp taskloop 560 for (int i = 0; i < 10; ++i) 561 ++a; 562 } 563 #pragma omp for 564 for (int i = 0; i < 10; ++i) { 565 #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?}} 566 for (int j = 0; j < 10; ++j) 567 ; 568 } 569 #pragma omp for 570 for (int i = 0; i < 10; ++i) { 571 #pragma omp target update to(a) 572 } 573 #pragma omp for 574 for (int i = 0; i < 10; ++i) { 575 #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?}} 576 for (int j = 0; j < 10; ++j) 577 ; 578 } 579 #pragma omp for 580 for (int i = 0; i < 10; ++i) { 581 #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?}} 582 for (int j = 0; j < 10; ++j) 583 ; 584 } 585 #pragma omp for 586 for (int i = 0; i < 10; ++i) { 587 #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?}} 588 for (int j = 0; j < 10; ++j) 589 ; 590 } 591 #pragma omp for 592 for (int i = 0; i < 10; ++i) { 593 #pragma omp target simd // OK 594 for (int j = 0; j < 10; ++j) 595 ; 596 } 597 #pragma omp for 598 for (int i = 0; i < 10; ++i) { 599 #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?}} 600 for (int j = 0; j < 10; ++j) 601 ; 602 } 603 #pragma omp for 604 for (int i = 0; i < 10; ++i) { 605 #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?}} 606 for (int j = 0; j < 10; ++j) 607 ; 608 } 609 610 // FOR SIMD DIRECTIVE 611 #pragma omp for simd 612 for (int i = 0; i < 10; ++i) { 613 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 614 for (int i = 0; i < 10; ++i) 615 ; 616 } 617 #pragma omp for simd 618 for (int i = 0; i < 10; ++i) { 619 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 620 for (int i = 0; i < 10; ++i) 621 ; 622 } 623 #pragma omp for simd 624 for (int i = 0; i < 10; ++i) { 625 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 626 for (int i = 0; i < 10; ++i) 627 ; 628 } 629 #pragma omp for simd 630 for (int i = 0; i < 10; ++i) { 631 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 632 for (int i = 0; i < 10; ++i) 633 ; 634 } 635 #pragma omp for simd 636 for (int i = 0; i < 10; ++i) { 637 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 638 { 639 bar(); 640 } 641 } 642 #pragma omp for simd 643 for (int i = 0; i < 10; ++i) { 644 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 645 { 646 bar(); 647 } 648 } 649 #pragma omp for simd 650 for (int i = 0; i < 10; ++i) { 651 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 652 { 653 bar(); 654 } 655 } 656 #pragma omp for simd 657 for (int i = 0; i < 10; ++i) { 658 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 659 { 660 bar(); 661 } 662 } 663 #pragma omp for simd 664 for (int i = 0; i < 10; ++i) { 665 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 666 { 667 bar(); 668 } 669 } 670 #pragma omp for simd 671 for (int i = 0; i < 10; ++i) { 672 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 673 for (int i = 0; i < 10; ++i) 674 ; 675 } 676 #pragma omp for simd 677 for (int i = 0; i < 10; ++i) { 678 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 679 for (int i = 0; i < 10; ++i) 680 ; 681 } 682 #pragma omp for simd 683 for (int i = 0; i < 10; ++i) { 684 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 685 { 686 bar(); 687 } 688 } 689 #pragma omp for simd 690 for (int i = 0; i < 10; ++i) { 691 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 692 { 693 bar(); 694 } 695 } 696 #pragma omp for simd 697 for (int i = 0; i < 10; ++i) { 698 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 699 bar(); 700 } 701 #pragma omp for simd 702 for (int i = 0; i < 10; ++i) { 703 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 704 bar(); 705 } 706 #pragma omp for simd 707 for (int i = 0; i < 10; ++i) { 708 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 709 bar(); 710 } 711 #pragma omp for simd 712 for (int i = 0; i < 10; ++i) { 713 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 714 bar(); 715 } 716 #pragma omp for simd 717 for (int i = 0; i < 10; ++i) { 718 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 719 bar(); 720 } 721 #pragma omp for simd 722 for (int i = 0; i < 10; ++i) { 723 #pragma omp ordered simd // OK 724 bar(); 725 } 726 #pragma omp for simd 727 for (int i = 0; i < 10; ++i) { 728 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 729 bar(); 730 } 731 #pragma omp for simd 732 for (int i = 0; i < 10; ++i) { 733 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 734 ++a; 735 } 736 #pragma omp for simd 737 for (int i = 0; i < 10; ++i) { 738 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 739 ++a; 740 } 741 #pragma omp for simd 742 for (int i = 0; i < 10; ++i) { 743 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 744 ++a; 745 } 746 #pragma omp for simd 747 for (int i = 0; i < 10; ++i) { 748 #pragma omp target parallel for // 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 target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 755 ++a; 756 } 757 #pragma omp for simd 758 for (int i = 0; i < 10; ++i) { 759 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 760 ++a; 761 } 762 #pragma omp for simd 763 for (int i = 0; i < 10; ++i) { 764 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 765 ++a; 766 } 767 #pragma omp for simd 768 for (int i = 0; i < 10; ++i) { 769 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 770 for (int i = 0; i < 10; ++i) 771 ++a; 772 } 773 #pragma omp for simd 774 for (int i = 0; i < 10; ++i) { 775 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 776 for (int j = 0; j < 10; ++j) 777 ; 778 } 779 #pragma omp for simd 780 for (int i = 0; i < 10; ++i) { 781 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 782 bar(); 783 } 784 #pragma omp for simd 785 for (int i = 0; i < 10; ++i) { 786 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 787 for (int j = 0; j < 10; ++j) 788 ; 789 } 790 #pragma omp for simd 791 for (int i = 0; i < 10; ++i) { 792 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 793 for (int j = 0; j < 10; ++j) 794 ; 795 } 796 #pragma omp for simd 797 for (int i = 0; i < 10; ++i) { 798 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 799 for (int j = 0; j < 10; ++j) 800 ; 801 } 802 #pragma omp for simd 803 for (int i = 0; i < 10; ++i) { 804 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 805 for (int j = 0; j < 10; ++j) 806 ; 807 } 808 #pragma omp for simd 809 for (int i = 0; i < 10; ++i) { 810 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 811 for (int j = 0; j < 10; ++j) 812 ; 813 } 814 #pragma omp for simd 815 for (int i = 0; i < 10; ++i) { 816 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 817 for (int j = 0; j < 10; ++j) 818 ; 819 } 820 821 // SECTIONS DIRECTIVE 822 #pragma omp sections 823 { 824 #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?}} 825 for (int i = 0; i < 10; ++i) 826 ; 827 } 828 #pragma omp sections 829 { 830 #pragma omp simd 831 for (int i = 0; i < 10; ++i) 832 ; 833 } 834 #pragma omp sections 835 { 836 #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?}} 837 for (int i = 0; i < 10; ++i) 838 ; 839 } 840 #pragma omp sections 841 { 842 #pragma omp parallel 843 for (int i = 0; i < 10; ++i) 844 ; 845 } 846 #pragma omp sections 847 { 848 #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?}} 849 { 850 bar(); 851 } 852 } 853 #pragma omp sections 854 { 855 #pragma omp section 856 { 857 bar(); 858 } 859 } 860 #pragma omp sections 861 { 862 #pragma omp parallel 863 { 864 #pragma omp single // OK 865 { 866 bar(); 867 } 868 #pragma omp for // OK 869 for (int i = 0; i < 10; ++i) 870 ; 871 #pragma omp sections // OK 872 { 873 bar(); 874 } 875 } 876 } 877 #pragma omp sections 878 { 879 #pragma omp parallel 880 { 881 #pragma omp master // OK 882 { 883 bar(); 884 } 885 #pragma omp for // OK 886 for (int i = 0; i < 10; ++i) 887 ; 888 #pragma omp master // OK 889 { 890 bar(); 891 } 892 } 893 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 894 bar(); 895 } 896 #pragma omp sections 897 { 898 #pragma omp parallel 899 { 900 #pragma omp critical(A) // OK 901 { 902 bar(); 903 } 904 #pragma omp for // OK 905 for (int i = 0; i < 10; ++i) 906 ; 907 #pragma omp critical // OK 908 { 909 bar(); 910 } 911 } 912 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 913 bar(); 914 } 915 #pragma omp sections 916 { 917 #pragma omp parallel for 918 for (int i = 0; i < 10; ++i) 919 ; 920 } 921 #pragma omp sections 922 { 923 #pragma omp parallel for simd 924 for (int i = 0; i < 10; ++i) 925 ; 926 } 927 #pragma omp sections 928 { 929 #pragma omp parallel sections 930 { 931 bar(); 932 } 933 } 934 #pragma omp sections 935 { 936 #pragma omp task 937 { 938 bar(); 939 } 940 } 941 #pragma omp sections 942 { 943 #pragma omp taskyield 944 } 945 #pragma omp sections 946 { 947 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 948 } 949 #pragma omp sections 950 { 951 #pragma omp taskwait 952 } 953 #pragma omp sections 954 { 955 #pragma omp flush 956 } 957 #pragma omp sections 958 { 959 #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?}} 960 bar(); 961 } 962 #pragma omp sections 963 { 964 #pragma omp atomic 965 ++a; 966 } 967 #pragma omp sections 968 { 969 #pragma omp target 970 ++a; 971 } 972 #pragma omp sections 973 { 974 #pragma omp target parallel 975 ++a; 976 } 977 #pragma omp sections 978 { 979 #pragma omp target parallel for 980 for (int i = 0; i < 10; ++i) 981 ; 982 } 983 #pragma omp sections 984 { 985 #pragma omp target enter data map(to: a) 986 } 987 #pragma omp sections 988 { 989 #pragma omp target exit data map(from: a) 990 } 991 #pragma omp sections 992 { 993 #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?}} 994 ++a; 995 } 996 #pragma omp sections 997 { 998 #pragma omp taskloop 999 for (int i = 0; i < 10; ++i) 1000 ++a; 1001 } 1002 #pragma omp sections 1003 { 1004 #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?}} 1005 for (int i = 0; i < 10; ++i) 1006 ; 1007 } 1008 #pragma omp sections 1009 { 1010 #pragma omp target update to(a) 1011 } 1012 #pragma omp sections 1013 { 1014 #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?}} 1015 for (int i = 0; i < 10; ++i) 1016 ; 1017 } 1018 #pragma omp sections 1019 { 1020 #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?}} 1021 for (int i = 0; i < 10; ++i) 1022 ; 1023 } 1024 #pragma omp sections 1025 { 1026 #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?}} 1027 for (int i = 0; i < 10; ++i) 1028 ; 1029 } 1030 #pragma omp sections 1031 { 1032 #pragma omp target simd // OK 1033 for (int i = 0; i < 10; ++i) 1034 ; 1035 } 1036 #pragma omp sections 1037 { 1038 #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?}} 1039 for (int i = 0; i < 10; ++i) 1040 ; 1041 } 1042 #pragma omp sections 1043 { 1044 #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?}} 1045 for (int i = 0; i < 10; ++i) 1046 ; 1047 } 1048 1049 // SECTION DIRECTIVE 1050 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1051 { 1052 bar(); 1053 } 1054 #pragma omp sections 1055 { 1056 #pragma omp section 1057 { 1058 #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?}} 1059 for (int i = 0; i < 10; ++i) 1060 ; 1061 } 1062 } 1063 #pragma omp sections 1064 { 1065 #pragma omp section 1066 { 1067 #pragma omp simd 1068 for (int i = 0; i < 10; ++i) 1069 ; 1070 } 1071 } 1072 #pragma omp sections 1073 { 1074 #pragma omp section 1075 { 1076 #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?}} 1077 for (int i = 0; i < 10; ++i) 1078 ; 1079 } 1080 } 1081 #pragma omp sections 1082 { 1083 #pragma omp section 1084 { 1085 #pragma omp parallel 1086 for (int i = 0; i < 10; ++i) 1087 ; 1088 } 1089 } 1090 #pragma omp sections 1091 { 1092 #pragma omp section 1093 { 1094 #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?}} 1095 { 1096 bar(); 1097 } 1098 } 1099 } 1100 #pragma omp sections 1101 { 1102 #pragma omp section 1103 { 1104 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1105 { 1106 bar(); 1107 } 1108 } 1109 } 1110 #pragma omp sections 1111 { 1112 #pragma omp section 1113 { 1114 #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?}} 1115 bar(); 1116 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1117 bar(); 1118 #pragma omp critical 1119 bar(); 1120 } 1121 } 1122 #pragma omp sections 1123 { 1124 #pragma omp section 1125 { 1126 #pragma omp parallel 1127 { 1128 #pragma omp single // OK 1129 { 1130 bar(); 1131 } 1132 #pragma omp for // OK 1133 for (int i = 0; i < 10; ++i) 1134 ; 1135 #pragma omp for simd // OK 1136 for (int i = 0; i < 10; ++i) 1137 ; 1138 #pragma omp sections // OK 1139 { 1140 bar(); 1141 } 1142 } 1143 } 1144 } 1145 #pragma omp sections 1146 { 1147 #pragma omp section 1148 { 1149 #pragma omp parallel for 1150 for (int i = 0; i < 10; ++i) 1151 ; 1152 } 1153 } 1154 #pragma omp sections 1155 { 1156 #pragma omp section 1157 { 1158 #pragma omp parallel for simd 1159 for (int i = 0; i < 10; ++i) 1160 ; 1161 } 1162 } 1163 #pragma omp sections 1164 { 1165 #pragma omp section 1166 { 1167 #pragma omp parallel sections 1168 { 1169 bar(); 1170 } 1171 } 1172 } 1173 #pragma omp sections 1174 { 1175 #pragma omp section 1176 { 1177 #pragma omp task 1178 { 1179 bar(); 1180 } 1181 } 1182 } 1183 #pragma omp sections 1184 { 1185 #pragma omp section 1186 { 1187 #pragma omp taskyield 1188 bar(); 1189 } 1190 } 1191 #pragma omp sections 1192 { 1193 #pragma omp section 1194 { 1195 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1196 bar(); 1197 } 1198 } 1199 #pragma omp sections 1200 { 1201 #pragma omp section 1202 { 1203 #pragma omp taskwait 1204 bar(); 1205 } 1206 } 1207 #pragma omp sections 1208 { 1209 #pragma omp section 1210 { 1211 #pragma omp flush 1212 bar(); 1213 } 1214 } 1215 #pragma omp sections 1216 { 1217 #pragma omp section 1218 { 1219 #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?}} 1220 bar(); 1221 } 1222 } 1223 #pragma omp sections 1224 { 1225 #pragma omp section 1226 #pragma omp atomic 1227 ++a; 1228 } 1229 #pragma omp sections 1230 { 1231 #pragma omp section 1232 #pragma omp target 1233 ++a; 1234 } 1235 #pragma omp sections 1236 { 1237 #pragma omp section 1238 #pragma omp target parallel 1239 ++a; 1240 } 1241 #pragma omp sections 1242 { 1243 #pragma omp section 1244 { 1245 #pragma omp target parallel for 1246 for (int i = 0; i < 10; ++i) 1247 ; 1248 } 1249 } 1250 #pragma omp sections 1251 { 1252 #pragma omp section 1253 { 1254 #pragma omp target enter data map(to: a) 1255 ++a; 1256 } 1257 } 1258 #pragma omp sections 1259 { 1260 #pragma omp section 1261 { 1262 #pragma omp target exit data map(from: a) 1263 ++a; 1264 } 1265 } 1266 #pragma omp sections 1267 { 1268 #pragma omp section 1269 #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?}} 1270 ++a; 1271 } 1272 #pragma omp sections 1273 { 1274 #pragma omp section 1275 #pragma omp taskloop 1276 for (int i = 0; i < 10; ++i) 1277 ++a; 1278 } 1279 #pragma omp sections 1280 { 1281 #pragma omp section 1282 #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?}} 1283 for (int i = 0; i < 10; ++i) 1284 ; 1285 } 1286 #pragma omp sections 1287 { 1288 #pragma omp section 1289 { 1290 bar(); 1291 #pragma omp target update to(a) 1292 } 1293 } 1294 #pragma omp sections 1295 { 1296 #pragma omp section 1297 #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?}} 1298 for (int i = 0; i < 10; ++i) 1299 ; 1300 } 1301 #pragma omp sections 1302 { 1303 #pragma omp section 1304 #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?}} 1305 for (int i = 0; i < 10; ++i) 1306 ; 1307 } 1308 #pragma omp sections 1309 { 1310 #pragma omp section 1311 #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?}} 1312 for (int i = 0; i < 10; ++i) 1313 ; 1314 } 1315 #pragma omp sections 1316 { 1317 #pragma omp section 1318 #pragma omp target simd // OK 1319 for (int i = 0; i < 10; ++i) 1320 ; 1321 } 1322 #pragma omp sections 1323 { 1324 #pragma omp section 1325 #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?}} 1326 for (int i = 0; i < 10; ++i) 1327 ; 1328 } 1329 #pragma omp sections 1330 { 1331 #pragma omp section 1332 #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?}} 1333 for (int i = 0; i < 10; ++i) 1334 ; 1335 } 1336 1337 // SINGLE DIRECTIVE 1338 #pragma omp single 1339 { 1340 #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?}} 1341 for (int i = 0; i < 10; ++i) 1342 ; 1343 } 1344 #pragma omp single 1345 { 1346 #pragma omp simd 1347 for (int i = 0; i < 10; ++i) 1348 ; 1349 } 1350 #pragma omp single 1351 { 1352 #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?}} 1353 for (int i = 0; i < 10; ++i) 1354 ; 1355 } 1356 #pragma omp single 1357 { 1358 #pragma omp parallel 1359 for (int i = 0; i < 10; ++i) 1360 ; 1361 } 1362 #pragma omp single 1363 { 1364 #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?}} 1365 { 1366 bar(); 1367 } 1368 } 1369 #pragma omp single 1370 { 1371 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1372 { 1373 bar(); 1374 } 1375 } 1376 #pragma omp single 1377 { 1378 #pragma omp critical 1379 { 1380 bar(); 1381 } 1382 } 1383 #pragma omp single 1384 { 1385 #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?}} 1386 { 1387 bar(); 1388 } 1389 } 1390 #pragma omp single 1391 { 1392 #pragma omp parallel 1393 { 1394 #pragma omp single // OK 1395 { 1396 bar(); 1397 } 1398 #pragma omp for // OK 1399 for (int i = 0; i < 10; ++i) 1400 ; 1401 #pragma omp for simd // OK 1402 for (int i = 0; i < 10; ++i) 1403 ; 1404 #pragma omp sections // OK 1405 { 1406 bar(); 1407 } 1408 } 1409 } 1410 #pragma omp single 1411 { 1412 #pragma omp parallel for 1413 for (int i = 0; i < 10; ++i) 1414 ; 1415 } 1416 #pragma omp single 1417 { 1418 #pragma omp parallel for simd 1419 for (int i = 0; i < 10; ++i) 1420 ; 1421 } 1422 #pragma omp single 1423 { 1424 #pragma omp parallel sections 1425 { 1426 bar(); 1427 } 1428 } 1429 #pragma omp single 1430 { 1431 #pragma omp task 1432 { 1433 bar(); 1434 } 1435 } 1436 #pragma omp single 1437 { 1438 #pragma omp taskyield 1439 bar(); 1440 } 1441 #pragma omp single 1442 { 1443 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1444 bar(); 1445 } 1446 #pragma omp single 1447 { 1448 #pragma omp taskwait 1449 bar(); 1450 } 1451 #pragma omp single 1452 { 1453 #pragma omp flush 1454 bar(); 1455 } 1456 #pragma omp single 1457 { 1458 #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?}} 1459 bar(); 1460 } 1461 #pragma omp single 1462 { 1463 #pragma omp atomic 1464 ++a; 1465 } 1466 #pragma omp single 1467 { 1468 #pragma omp target 1469 ++a; 1470 } 1471 #pragma omp single 1472 { 1473 #pragma omp target parallel 1474 ++a; 1475 } 1476 #pragma omp single 1477 { 1478 #pragma omp target parallel for 1479 for (int i = 0; i < 10; ++i) 1480 ; 1481 } 1482 #pragma omp single 1483 { 1484 #pragma omp target enter data map(to: a) 1485 ++a; 1486 } 1487 #pragma omp single 1488 { 1489 #pragma omp target exit data map(from: a) 1490 ++a; 1491 } 1492 #pragma omp single 1493 { 1494 #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?}} 1495 ++a; 1496 } 1497 #pragma omp single 1498 { 1499 #pragma omp taskloop 1500 for (int i = 0; i < 10; ++i) 1501 ++a; 1502 } 1503 #pragma omp single 1504 { 1505 #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?}} 1506 for (int i = 0; i < 10; ++i) 1507 ; 1508 } 1509 #pragma omp single 1510 { 1511 #pragma omp target update to(a) 1512 bar(); 1513 } 1514 #pragma omp single 1515 { 1516 #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?}} 1517 for (int i = 0; i < 10; ++i) 1518 ; 1519 } 1520 #pragma omp single 1521 { 1522 #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?}} 1523 for (int i = 0; i < 10; ++i) 1524 ; 1525 } 1526 #pragma omp single 1527 { 1528 #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?}} 1529 for (int i = 0; i < 10; ++i) 1530 ; 1531 } 1532 #pragma omp single 1533 { 1534 #pragma omp target simd // OK 1535 for (int i = 0; i < 10; ++i) 1536 ; 1537 } 1538 #pragma omp single 1539 { 1540 #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?}} 1541 for (int i = 0; i < 10; ++i) 1542 ; 1543 } 1544 #pragma omp single 1545 { 1546 #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?}} 1547 for (int i = 0; i < 10; ++i) 1548 ; 1549 } 1550 1551 // MASTER DIRECTIVE 1552 #pragma omp master 1553 { 1554 #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?}} 1555 for (int i = 0; i < 10; ++i) 1556 ; 1557 } 1558 #pragma omp master 1559 { 1560 #pragma omp simd 1561 for (int i = 0; i < 10; ++i) 1562 ; 1563 } 1564 #pragma omp master 1565 { 1566 #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?}} 1567 for (int i = 0; i < 10; ++i) 1568 ; 1569 } 1570 #pragma omp master 1571 { 1572 #pragma omp parallel 1573 for (int i = 0; i < 10; ++i) 1574 ; 1575 } 1576 #pragma omp master 1577 { 1578 #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?}} 1579 { 1580 bar(); 1581 } 1582 } 1583 #pragma omp master 1584 { 1585 #pragma omp master // OK, though second 'master' is redundant 1586 { 1587 bar(); 1588 } 1589 } 1590 #pragma omp master 1591 { 1592 #pragma omp critical 1593 { 1594 bar(); 1595 } 1596 } 1597 #pragma omp master 1598 { 1599 #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?}} 1600 { 1601 bar(); 1602 } 1603 } 1604 #pragma omp master 1605 { 1606 #pragma omp parallel 1607 { 1608 #pragma omp master // OK 1609 { 1610 bar(); 1611 } 1612 #pragma omp for // OK 1613 for (int i = 0; i < 10; ++i) 1614 ; 1615 #pragma omp for simd // OK 1616 for (int i = 0; i < 10; ++i) 1617 ; 1618 #pragma omp sections // OK 1619 { 1620 bar(); 1621 } 1622 } 1623 } 1624 #pragma omp master 1625 { 1626 #pragma omp parallel for 1627 for (int i = 0; i < 10; ++i) 1628 ; 1629 } 1630 #pragma omp master 1631 { 1632 #pragma omp parallel for simd 1633 for (int i = 0; i < 10; ++i) 1634 ; 1635 } 1636 #pragma omp master 1637 { 1638 #pragma omp parallel sections 1639 { 1640 bar(); 1641 } 1642 } 1643 #pragma omp master 1644 { 1645 #pragma omp task 1646 { 1647 bar(); 1648 } 1649 } 1650 #pragma omp master 1651 { 1652 #pragma omp taskyield 1653 bar(); 1654 } 1655 #pragma omp master 1656 { 1657 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 1658 bar(); 1659 } 1660 #pragma omp master 1661 { 1662 #pragma omp taskwait 1663 bar(); 1664 } 1665 #pragma omp master 1666 { 1667 #pragma omp flush 1668 bar(); 1669 } 1670 #pragma omp master 1671 { 1672 #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?}} 1673 bar(); 1674 } 1675 #pragma omp master 1676 { 1677 #pragma omp atomic 1678 ++a; 1679 } 1680 #pragma omp master 1681 { 1682 #pragma omp target 1683 ++a; 1684 } 1685 #pragma omp master 1686 { 1687 #pragma omp target parallel 1688 ++a; 1689 } 1690 #pragma omp master 1691 { 1692 #pragma omp target parallel for 1693 for (int i = 0; i < 10; ++i) 1694 ; 1695 } 1696 #pragma omp master 1697 { 1698 #pragma omp target enter data map(to: a) 1699 ++a; 1700 } 1701 #pragma omp master 1702 { 1703 #pragma omp target exit data map(from: a) 1704 ++a; 1705 } 1706 #pragma omp master 1707 { 1708 #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?}} 1709 ++a; 1710 } 1711 #pragma omp master 1712 { 1713 #pragma omp taskloop 1714 for (int i = 0; i < 10; ++i) 1715 ++a; 1716 } 1717 #pragma omp master 1718 { 1719 #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?}} 1720 for (int i = 0; i < 10; ++i) 1721 ; 1722 } 1723 #pragma omp master 1724 { 1725 #pragma omp target update to(a) 1726 bar(); 1727 } 1728 #pragma omp master 1729 { 1730 #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?}} 1731 for (int i = 0; i < 10; ++i) 1732 ; 1733 } 1734 #pragma omp master 1735 { 1736 #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?}} 1737 for (int i = 0; i < 10; ++i) 1738 ; 1739 } 1740 #pragma omp master 1741 { 1742 #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?}} 1743 for (int i = 0; i < 10; ++i) 1744 ; 1745 } 1746 #pragma omp master 1747 { 1748 #pragma omp target simd // OK 1749 for (int i = 0; i < 10; ++i) 1750 ; 1751 } 1752 #pragma omp master 1753 { 1754 #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?}} 1755 for (int i = 0; i < 10; ++i) 1756 ; 1757 } 1758 #pragma omp master 1759 { 1760 #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?}} 1761 for (int i = 0; i < 10; ++i) 1762 ; 1763 } 1764 1765 // CRITICAL DIRECTIVE 1766 #pragma omp critical 1767 { 1768 #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?}} 1769 for (int i = 0; i < 10; ++i) 1770 ; 1771 } 1772 #pragma omp critical 1773 { 1774 #pragma omp simd 1775 for (int i = 0; i < 10; ++i) 1776 ; 1777 } 1778 #pragma omp critical 1779 { 1780 #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?}} 1781 for (int i = 0; i < 10; ++i) 1782 ; 1783 } 1784 #pragma omp critical 1785 { 1786 #pragma omp parallel 1787 for (int i = 0; i < 10; ++i) 1788 ; 1789 } 1790 #pragma omp critical 1791 { 1792 #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?}} 1793 { 1794 bar(); 1795 } 1796 } 1797 #pragma omp critical 1798 { 1799 #pragma omp master // OK, though second 'master' is redundant 1800 { 1801 bar(); 1802 } 1803 } 1804 #pragma omp critical 1805 { 1806 #pragma omp critical 1807 { 1808 bar(); 1809 } 1810 } 1811 #pragma omp critical 1812 { 1813 #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?}} 1814 { 1815 bar(); 1816 } 1817 } 1818 #pragma omp critical 1819 { 1820 #pragma omp parallel 1821 { 1822 #pragma omp master // OK 1823 { 1824 bar(); 1825 } 1826 #pragma omp for // OK 1827 for (int i = 0; i < 10; ++i) 1828 ; 1829 #pragma omp for simd // OK 1830 for (int i = 0; i < 10; ++i) 1831 ; 1832 #pragma omp sections // OK 1833 { 1834 bar(); 1835 } 1836 } 1837 } 1838 #pragma omp critical 1839 { 1840 #pragma omp parallel for 1841 for (int i = 0; i < 10; ++i) 1842 ; 1843 } 1844 #pragma omp critical 1845 { 1846 #pragma omp parallel for simd 1847 for (int i = 0; i < 10; ++i) 1848 ; 1849 } 1850 #pragma omp critical 1851 { 1852 #pragma omp parallel sections 1853 { 1854 bar(); 1855 } 1856 } 1857 #pragma omp critical 1858 { 1859 #pragma omp task 1860 { 1861 bar(); 1862 } 1863 } 1864 #pragma omp critical 1865 { 1866 #pragma omp taskyield 1867 bar(); 1868 } 1869 #pragma omp critical 1870 { 1871 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 1872 bar(); 1873 } 1874 #pragma omp critical 1875 { 1876 #pragma omp taskwait 1877 bar(); 1878 } 1879 #pragma omp critical(Tuzik) 1880 { 1881 #pragma omp critical(grelka) 1882 bar(); 1883 } 1884 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 1885 { 1886 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 1887 { 1888 #pragma omp critical(Tuzik) 1889 { 1890 #pragma omp parallel 1891 #pragma omp critical(grelka) 1892 { 1893 bar(); 1894 } 1895 } 1896 } 1897 } 1898 #pragma omp critical 1899 { 1900 #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?}} 1901 bar(); 1902 } 1903 #pragma omp critical 1904 { 1905 #pragma omp atomic 1906 ++a; 1907 } 1908 #pragma omp critical 1909 { 1910 #pragma omp target 1911 ++a; 1912 } 1913 #pragma omp critical 1914 { 1915 #pragma omp target parallel 1916 ++a; 1917 } 1918 #pragma omp critical 1919 { 1920 #pragma omp target parallel for 1921 for (int i = 0; i < 10; ++i) 1922 ; 1923 } 1924 #pragma omp critical 1925 { 1926 #pragma omp target enter data map(to: a) 1927 ++a; 1928 } 1929 #pragma omp critical 1930 { 1931 #pragma omp target exit data map(from: a) 1932 ++a; 1933 } 1934 #pragma omp critical 1935 { 1936 #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?}} 1937 ++a; 1938 } 1939 #pragma omp critical 1940 { 1941 #pragma omp taskloop 1942 for (int i = 0; i < 10; ++i) 1943 ++a; 1944 } 1945 #pragma omp critical 1946 { 1947 #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?}} 1948 for (int i = 0; i < 10; ++i) 1949 ; 1950 } 1951 #pragma omp critical 1952 { 1953 #pragma omp target update to(a) 1954 bar(); 1955 } 1956 #pragma omp critical 1957 { 1958 #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?}} 1959 for (int i = 0; i < 10; ++i) 1960 ; 1961 } 1962 #pragma omp critical 1963 { 1964 #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?}} 1965 for (int i = 0; i < 10; ++i) 1966 ; 1967 } 1968 #pragma omp critical 1969 { 1970 #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?}} 1971 for (int i = 0; i < 10; ++i) 1972 ; 1973 } 1974 #pragma omp critical 1975 { 1976 #pragma omp target simd // OK 1977 for (int i = 0; i < 10; ++i) 1978 ; 1979 } 1980 #pragma omp critical 1981 { 1982 #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?}} 1983 for (int i = 0; i < 10; ++i) 1984 ; 1985 } 1986 #pragma omp critical 1987 { 1988 #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?}} 1989 for (int i = 0; i < 10; ++i) 1990 ; 1991 } 1992 1993 // PARALLEL FOR DIRECTIVE 1994 #pragma omp parallel for 1995 for (int i = 0; i < 10; ++i) { 1996 #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?}} 1997 for (int i = 0; i < 10; ++i) 1998 ; 1999 } 2000 #pragma omp parallel for 2001 for (int i = 0; i < 10; ++i) { 2002 #pragma omp simd 2003 for (int i = 0; i < 10; ++i) 2004 ; 2005 } 2006 #pragma omp parallel for 2007 for (int i = 0; i < 10; ++i) { 2008 #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?}} 2009 for (int i = 0; i < 10; ++i) 2010 ; 2011 } 2012 #pragma omp parallel for 2013 for (int i = 0; i < 10; ++i) { 2014 #pragma omp parallel 2015 for (int i = 0; i < 10; ++i) 2016 ; 2017 } 2018 #pragma omp parallel for 2019 for (int i = 0; i < 10; ++i) { 2020 #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?}} 2021 { 2022 bar(); 2023 } 2024 } 2025 #pragma omp parallel for 2026 for (int i = 0; i < 10; ++i) { 2027 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2028 { 2029 bar(); 2030 } 2031 } 2032 #pragma omp parallel for 2033 for (int i = 0; i < 10; ++i) { 2034 #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?}} 2035 { 2036 bar(); 2037 } 2038 } 2039 2040 #pragma omp parallel for 2041 for (int i = 0; i < 10; ++i) { 2042 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2043 { 2044 bar(); 2045 } 2046 } 2047 2048 #pragma omp parallel for 2049 for (int i = 0; i < 10; ++i) { 2050 #pragma omp critical 2051 { 2052 bar(); 2053 } 2054 } 2055 2056 #pragma omp parallel for 2057 for (int i = 0; i < 10; ++i) { 2058 #pragma omp parallel 2059 { 2060 #pragma omp single // OK 2061 { 2062 bar(); 2063 } 2064 #pragma omp for // OK 2065 for (int i = 0; i < 10; ++i) 2066 ; 2067 #pragma omp for simd // OK 2068 for (int i = 0; i < 10; ++i) 2069 ; 2070 #pragma omp sections // OK 2071 { 2072 bar(); 2073 } 2074 } 2075 } 2076 #pragma omp parallel for 2077 for (int i = 0; i < 10; ++i) { 2078 #pragma omp parallel for 2079 for (int i = 0; i < 10; ++i) 2080 ; 2081 } 2082 #pragma omp parallel for 2083 for (int i = 0; i < 10; ++i) { 2084 #pragma omp parallel for simd 2085 for (int i = 0; i < 10; ++i) 2086 ; 2087 } 2088 #pragma omp parallel for 2089 for (int i = 0; i < 10; ++i) { 2090 #pragma omp parallel sections 2091 { 2092 bar(); 2093 } 2094 } 2095 #pragma omp parallel for 2096 for (int i = 0; i < 10; ++i) { 2097 #pragma omp task 2098 { 2099 bar(); 2100 } 2101 } 2102 #pragma omp parallel for 2103 for (int i = 0; i < 10; ++i) { 2104 #pragma omp taskyield 2105 bar(); 2106 } 2107 #pragma omp parallel for 2108 for (int i = 0; i < 10; ++i) { 2109 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2110 bar(); 2111 } 2112 #pragma omp parallel for 2113 for (int i = 0; i < 10; ++i) { 2114 #pragma omp taskwait 2115 bar(); 2116 } 2117 #pragma omp parallel for 2118 for (int i = 0; i < 10; ++i) { 2119 #pragma omp flush 2120 bar(); 2121 } 2122 #pragma omp parallel for 2123 for (int i = 0; i < 10; ++i) { 2124 #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?}} 2125 bar(); 2126 } 2127 #pragma omp parallel for ordered 2128 for (int i = 0; i < 10; ++i) { 2129 #pragma omp ordered // OK 2130 bar(); 2131 } 2132 #pragma omp parallel for 2133 for (int i = 0; i < 10; ++i) { 2134 #pragma omp atomic 2135 ++a; 2136 } 2137 #pragma omp parallel for 2138 for (int i = 0; i < 10; ++i) { 2139 #pragma omp target 2140 ++a; 2141 } 2142 #pragma omp parallel for 2143 for (int i = 0; i < 10; ++i) { 2144 #pragma omp target parallel 2145 ++a; 2146 } 2147 #pragma omp parallel for 2148 for (int i = 0; i < 10; ++i) { 2149 #pragma omp target parallel for 2150 for (int i = 0; i < 10; ++i) 2151 ; 2152 } 2153 #pragma omp parallel for 2154 for (int i = 0; i < 10; ++i) { 2155 #pragma omp target enter data map(to: a) 2156 ++a; 2157 } 2158 #pragma omp parallel for 2159 for (int i = 0; i < 10; ++i) { 2160 #pragma omp target exit data map(from: a) 2161 ++a; 2162 } 2163 #pragma omp parallel for 2164 for (int i = 0; i < 10; ++i) { 2165 #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?}} 2166 ++a; 2167 } 2168 #pragma omp parallel for 2169 for (int i = 0; i < 10; ++i) { 2170 #pragma omp taskloop 2171 for (int i = 0; i < 10; ++i) 2172 ++a; 2173 } 2174 #pragma omp parallel for 2175 for (int i = 0; i < 10; ++i) { 2176 #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?}} 2177 for (int j = 0; j < 10; ++j) 2178 ; 2179 } 2180 #pragma omp parallel for 2181 for (int i = 0; i < 10; ++i) { 2182 #pragma omp target update to(a) 2183 } 2184 #pragma omp parallel for 2185 for (int i = 0; i < 10; ++i) { 2186 #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?}} 2187 for (int j = 0; j < 10; ++j) 2188 ; 2189 } 2190 #pragma omp parallel for 2191 for (int i = 0; i < 10; ++i) { 2192 #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?}} 2193 for (int j = 0; j < 10; ++j) 2194 ; 2195 } 2196 #pragma omp parallel for 2197 for (int i = 0; i < 10; ++i) { 2198 #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?}} 2199 for (int j = 0; j < 10; ++j) 2200 ; 2201 } 2202 #pragma omp parallel for 2203 for (int i = 0; i < 10; ++i) { 2204 #pragma omp target simd // OK 2205 for (int j = 0; j < 10; ++j) 2206 ; 2207 } 2208 #pragma omp parallel for 2209 for (int i = 0; i < 10; ++i) { 2210 #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?}} 2211 for (int j = 0; j < 10; ++j) 2212 ; 2213 } 2214 #pragma omp parallel for 2215 for (int i = 0; i < 10; ++i) { 2216 #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?}} 2217 for (int j = 0; j < 10; ++j) 2218 ; 2219 } 2220 2221 // PARALLEL FOR SIMD DIRECTIVE 2222 #pragma omp parallel for simd 2223 for (int i = 0; i < 10; ++i) { 2224 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2225 for (int i = 0; i < 10; ++i) 2226 ; 2227 } 2228 #pragma omp parallel for simd 2229 for (int i = 0; i < 10; ++i) { 2230 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2231 for (int i = 0; i < 10; ++i) 2232 ; 2233 } 2234 #pragma omp parallel for simd 2235 for (int i = 0; i < 10; ++i) { 2236 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2237 for (int i = 0; i < 10; ++i) 2238 ; 2239 } 2240 #pragma omp parallel for simd 2241 for (int i = 0; i < 10; ++i) { 2242 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2243 for (int i = 0; i < 10; ++i) 2244 ; 2245 } 2246 #pragma omp parallel for simd 2247 for (int i = 0; i < 10; ++i) { 2248 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2249 { 2250 bar(); 2251 } 2252 } 2253 #pragma omp parallel for simd 2254 for (int i = 0; i < 10; ++i) { 2255 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2256 { 2257 bar(); 2258 } 2259 } 2260 #pragma omp parallel for simd 2261 for (int i = 0; i < 10; ++i) { 2262 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2263 { 2264 bar(); 2265 } 2266 } 2267 2268 #pragma omp parallel for simd 2269 for (int i = 0; i < 10; ++i) { 2270 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2271 { 2272 bar(); 2273 } 2274 } 2275 2276 #pragma omp parallel for simd 2277 for (int i = 0; i < 10; ++i) { 2278 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2279 { 2280 bar(); 2281 } 2282 } 2283 2284 #pragma omp parallel for simd 2285 for (int i = 0; i < 10; ++i) { 2286 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2287 { 2288 #pragma omp single 2289 { 2290 bar(); 2291 } 2292 #pragma omp for 2293 for (int i = 0; i < 10; ++i) 2294 ; 2295 #pragma omp for simd 2296 for (int i = 0; i < 10; ++i) 2297 ; 2298 #pragma omp sections 2299 { 2300 bar(); 2301 } 2302 } 2303 } 2304 #pragma omp parallel for simd 2305 for (int i = 0; i < 10; ++i) { 2306 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2307 for (int i = 0; i < 10; ++i) 2308 ; 2309 } 2310 #pragma omp parallel for simd 2311 for (int i = 0; i < 10; ++i) { 2312 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2313 for (int i = 0; i < 10; ++i) 2314 ; 2315 } 2316 #pragma omp parallel for simd 2317 for (int i = 0; i < 10; ++i) { 2318 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2319 { 2320 bar(); 2321 } 2322 } 2323 #pragma omp parallel for simd 2324 for (int i = 0; i < 10; ++i) { 2325 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2326 { 2327 bar(); 2328 } 2329 } 2330 #pragma omp parallel for simd 2331 for (int i = 0; i < 10; ++i) { 2332 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2333 bar(); 2334 } 2335 #pragma omp parallel for simd 2336 for (int i = 0; i < 10; ++i) { 2337 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2338 bar(); 2339 } 2340 #pragma omp parallel for simd 2341 for (int i = 0; i < 10; ++i) { 2342 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2343 bar(); 2344 } 2345 #pragma omp parallel for simd 2346 for (int i = 0; i < 10; ++i) { 2347 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2348 bar(); 2349 } 2350 #pragma omp parallel for simd 2351 for (int i = 0; i < 10; ++i) { 2352 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2353 bar(); 2354 } 2355 #pragma omp parallel for simd 2356 for (int i = 0; i < 10; ++i) { 2357 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2358 bar(); 2359 } 2360 #pragma omp parallel for simd 2361 for (int i = 0; i < 10; ++i) { 2362 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2363 ++a; 2364 } 2365 #pragma omp parallel for simd 2366 for (int i = 0; i < 10; ++i) { 2367 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2368 ++a; 2369 } 2370 #pragma omp parallel for simd 2371 for (int i = 0; i < 10; ++i) { 2372 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2373 ++a; 2374 } 2375 #pragma omp parallel for simd 2376 for (int i = 0; i < 10; ++i) { 2377 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2378 for (int i = 0; i < 10; ++i) 2379 ; 2380 } 2381 #pragma omp parallel for simd 2382 for (int i = 0; i < 10; ++i) { 2383 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2384 ++a; 2385 } 2386 #pragma omp parallel for simd 2387 for (int i = 0; i < 10; ++i) { 2388 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2389 ++a; 2390 } 2391 #pragma omp parallel for simd 2392 for (int i = 0; i < 10; ++i) { 2393 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2394 ++a; 2395 } 2396 #pragma omp parallel for simd 2397 for (int i = 0; i < 10; ++i) { 2398 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2399 for (int i = 0; i < 10; ++i) 2400 ++a; 2401 } 2402 #pragma omp parallel for simd 2403 for (int i = 0; i < 10; ++i) { 2404 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2405 for (int j = 0; j < 10; ++j) 2406 ; 2407 } 2408 #pragma omp parallel for simd 2409 for (int i = 0; i < 10; ++i) { 2410 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2411 bar(); 2412 } 2413 #pragma omp parallel for simd 2414 for (int i = 0; i < 10; ++i) { 2415 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2416 for (int j = 0; j < 10; ++j) 2417 ; 2418 } 2419 #pragma omp parallel for simd 2420 for (int i = 0; i < 10; ++i) { 2421 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2422 for (int j = 0; j < 10; ++j) 2423 ; 2424 } 2425 #pragma omp parallel for simd 2426 for (int i = 0; i < 10; ++i) { 2427 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2428 for (int j = 0; j < 10; ++j) 2429 ; 2430 } 2431 #pragma omp parallel for simd 2432 for (int i = 0; i < 10; ++i) { 2433 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2434 for (int j = 0; j < 10; ++j) 2435 ; 2436 } 2437 #pragma omp parallel for simd 2438 for (int i = 0; i < 10; ++i) { 2439 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2440 for (int j = 0; j < 10; ++j) 2441 ; 2442 } 2443 #pragma omp parallel for simd 2444 for (int i = 0; i < 10; ++i) { 2445 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2446 for (int j = 0; j < 10; ++j) 2447 ; 2448 } 2449 2450 // PARALLEL SECTIONS DIRECTIVE 2451 #pragma omp parallel sections 2452 { 2453 #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?}} 2454 for (int i = 0; i < 10; ++i) 2455 ; 2456 } 2457 #pragma omp parallel sections 2458 { 2459 #pragma omp simd 2460 for (int i = 0; i < 10; ++i) 2461 ; 2462 } 2463 #pragma omp parallel sections 2464 { 2465 #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?}} 2466 for (int i = 0; i < 10; ++i) 2467 ; 2468 } 2469 #pragma omp parallel sections 2470 { 2471 #pragma omp parallel 2472 for (int i = 0; i < 10; ++i) 2473 ; 2474 } 2475 #pragma omp parallel sections 2476 { 2477 #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?}} 2478 { 2479 bar(); 2480 } 2481 } 2482 #pragma omp parallel sections 2483 { 2484 #pragma omp section 2485 { 2486 bar(); 2487 } 2488 } 2489 #pragma omp parallel sections 2490 { 2491 #pragma omp section 2492 { 2493 #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?}} 2494 bar(); 2495 } 2496 } 2497 #pragma omp parallel sections 2498 { 2499 #pragma omp section 2500 { 2501 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 2502 bar(); 2503 } 2504 } 2505 #pragma omp parallel sections 2506 { 2507 #pragma omp section 2508 { 2509 #pragma omp critical 2510 bar(); 2511 } 2512 } 2513 #pragma omp parallel sections 2514 { 2515 #pragma omp parallel 2516 { 2517 #pragma omp single // OK 2518 { 2519 bar(); 2520 } 2521 #pragma omp for // OK 2522 for (int i = 0; i < 10; ++i) 2523 ; 2524 #pragma omp for simd // OK 2525 for (int i = 0; i < 10; ++i) 2526 ; 2527 #pragma omp sections // OK 2528 { 2529 bar(); 2530 } 2531 } 2532 } 2533 #pragma omp parallel sections 2534 { 2535 #pragma omp parallel for 2536 for (int i = 0; i < 10; ++i) 2537 ; 2538 } 2539 #pragma omp parallel sections 2540 { 2541 #pragma omp parallel for simd 2542 for (int i = 0; i < 10; ++i) 2543 ; 2544 } 2545 #pragma omp parallel sections 2546 { 2547 #pragma omp parallel sections 2548 { 2549 bar(); 2550 } 2551 } 2552 #pragma omp parallel sections 2553 { 2554 #pragma omp task 2555 { 2556 bar(); 2557 } 2558 } 2559 #pragma omp parallel sections 2560 { 2561 #pragma omp taskyield 2562 } 2563 #pragma omp parallel sections 2564 { 2565 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 2566 } 2567 #pragma omp parallel sections 2568 { 2569 #pragma omp taskwait 2570 } 2571 #pragma omp parallel sections 2572 { 2573 #pragma omp flush 2574 } 2575 #pragma omp parallel sections 2576 { 2577 #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?}} 2578 bar(); 2579 } 2580 #pragma omp parallel sections 2581 { 2582 #pragma omp atomic 2583 ++a; 2584 } 2585 #pragma omp parallel sections 2586 { 2587 #pragma omp target 2588 ++a; 2589 } 2590 #pragma omp parallel sections 2591 { 2592 #pragma omp target parallel 2593 ++a; 2594 } 2595 #pragma omp parallel sections 2596 { 2597 #pragma omp target parallel for 2598 for (int i = 0; i < 10; ++i) 2599 ; 2600 } 2601 #pragma omp parallel sections 2602 { 2603 #pragma omp target enter data map(to: a) 2604 } 2605 #pragma omp parallel sections 2606 { 2607 #pragma omp target exit data map(from: a) 2608 } 2609 #pragma omp parallel sections 2610 { 2611 #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?}} 2612 ++a; 2613 } 2614 #pragma omp parallel sections 2615 { 2616 #pragma omp taskloop 2617 for (int i = 0; i < 10; ++i) 2618 ++a; 2619 } 2620 #pragma omp parallel sections 2621 { 2622 #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?}} 2623 for (int i = 0; i < 10; ++i) 2624 ; 2625 } 2626 #pragma omp parallel sections 2627 { 2628 #pragma omp target update to(a) 2629 } 2630 #pragma omp parallel sections 2631 { 2632 #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?}} 2633 for (int i = 0; i < 10; ++i) 2634 ; 2635 } 2636 #pragma omp parallel sections 2637 { 2638 #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?}} 2639 for (int i = 0; i < 10; ++i) 2640 ; 2641 } 2642 #pragma omp parallel sections 2643 { 2644 #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?}} 2645 for (int i = 0; i < 10; ++i) 2646 ; 2647 } 2648 #pragma omp parallel sections 2649 { 2650 #pragma omp target simd // OK 2651 for (int i = 0; i < 10; ++i) 2652 ; 2653 } 2654 #pragma omp parallel sections 2655 { 2656 #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?}} 2657 for (int i = 0; i < 10; ++i) 2658 ; 2659 } 2660 #pragma omp parallel sections 2661 { 2662 #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?}} 2663 for (int i = 0; i < 10; ++i) 2664 ; 2665 } 2666 2667 // TASK DIRECTIVE 2668 #pragma omp task 2669 #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?}} 2670 for (int i = 0; i < 10; ++i) 2671 ; 2672 #pragma omp task 2673 #pragma omp simd 2674 for (int i = 0; i < 10; ++i) 2675 ; 2676 #pragma omp task 2677 #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?}} 2678 for (int i = 0; i < 10; ++i) 2679 ; 2680 #pragma omp task 2681 #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?}} 2682 { 2683 bar(); 2684 } 2685 #pragma omp task 2686 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 2687 { 2688 bar(); 2689 } 2690 #pragma omp task 2691 #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?}} 2692 bar(); 2693 #pragma omp task 2694 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 2695 bar(); 2696 #pragma omp task 2697 #pragma omp critical 2698 bar(); 2699 2700 #pragma omp task 2701 #pragma omp parallel for 2702 for (int i = 0; i < 10; ++i) 2703 ; 2704 #pragma omp task 2705 #pragma omp parallel for simd 2706 for (int i = 0; i < 10; ++i) 2707 ; 2708 #pragma omp task 2709 #pragma omp parallel sections 2710 { 2711 bar(); 2712 } 2713 #pragma omp task 2714 #pragma omp task 2715 { 2716 bar(); 2717 } 2718 #pragma omp task 2719 { 2720 #pragma omp taskyield 2721 bar(); 2722 } 2723 #pragma omp task 2724 { 2725 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 2726 bar(); 2727 } 2728 #pragma omp task 2729 { 2730 #pragma omp taskwait 2731 bar(); 2732 } 2733 #pragma omp task 2734 { 2735 #pragma omp flush 2736 bar(); 2737 } 2738 #pragma omp task 2739 { 2740 #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?}} 2741 bar(); 2742 } 2743 #pragma omp task 2744 { 2745 #pragma omp atomic 2746 ++a; 2747 } 2748 #pragma omp task 2749 { 2750 #pragma omp target 2751 ++a; 2752 } 2753 #pragma omp task 2754 { 2755 #pragma omp target parallel 2756 ++a; 2757 } 2758 #pragma omp task 2759 #pragma omp target parallel for 2760 for (int i = 0; i < 10; ++i) 2761 ; 2762 #pragma omp task 2763 { 2764 #pragma omp target enter data map(to: a) 2765 ++a; 2766 } 2767 #pragma omp task 2768 { 2769 #pragma omp target exit data map(from: a) 2770 ++a; 2771 } 2772 #pragma omp task 2773 { 2774 #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?}} 2775 ++a; 2776 } 2777 #pragma omp task 2778 { 2779 #pragma omp taskloop 2780 for (int i = 0; i < 10; ++i) 2781 ++a; 2782 } 2783 #pragma omp task 2784 { 2785 #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?}} 2786 for (int i = 0; i < 10; ++i) 2787 ; 2788 } 2789 #pragma omp task 2790 { 2791 #pragma omp target update to(a) 2792 bar(); 2793 } 2794 #pragma omp task 2795 { 2796 #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?}} 2797 for (int i = 0; i < 10; ++i) 2798 ; 2799 } 2800 #pragma omp task 2801 { 2802 #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?}} 2803 for (int i = 0; i < 10; ++i) 2804 ; 2805 } 2806 #pragma omp task 2807 { 2808 #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?}} 2809 for (int i = 0; i < 10; ++i) 2810 ; 2811 } 2812 #pragma omp task 2813 { 2814 #pragma omp target simd // OK 2815 for (int i = 0; i < 10; ++i) 2816 ; 2817 } 2818 #pragma omp task 2819 { 2820 #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?}} 2821 for (int i = 0; i < 10; ++i) 2822 ; 2823 } 2824 #pragma omp task 2825 { 2826 #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?}} 2827 for (int i = 0; i < 10; ++i) 2828 ; 2829 } 2830 2831 // ORDERED DIRECTIVE 2832 #pragma omp ordered 2833 { 2834 #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?}} 2835 for (int i = 0; i < 10; ++i) 2836 ; 2837 } 2838 #pragma omp ordered 2839 { 2840 #pragma omp simd 2841 for (int i = 0; i < 10; ++i) 2842 ; 2843 } 2844 #pragma omp ordered 2845 { 2846 #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?}} 2847 for (int i = 0; i < 10; ++i) 2848 ; 2849 } 2850 #pragma omp ordered 2851 { 2852 #pragma omp parallel 2853 for (int i = 0; i < 10; ++i) 2854 ; 2855 } 2856 #pragma omp ordered 2857 { 2858 #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?}} 2859 { 2860 bar(); 2861 } 2862 } 2863 #pragma omp ordered 2864 { 2865 #pragma omp master // OK, though second 'ordered' is redundant 2866 { 2867 bar(); 2868 } 2869 } 2870 #pragma omp ordered 2871 { 2872 #pragma omp critical 2873 { 2874 bar(); 2875 } 2876 } 2877 #pragma omp ordered 2878 { 2879 #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?}} 2880 { 2881 bar(); 2882 } 2883 } 2884 #pragma omp ordered 2885 { 2886 #pragma omp parallel for ordered 2887 for (int j = 0; j < 10; ++j) { 2888 #pragma omp ordered // OK 2889 { 2890 bar(); 2891 } 2892 } 2893 } 2894 #pragma omp ordered 2895 { 2896 #pragma omp parallel for simd ordered 2897 for (int j = 0; j < 10; ++j) { 2898 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2899 { 2900 bar(); 2901 } 2902 } 2903 } 2904 #pragma omp ordered 2905 { 2906 #pragma omp parallel for simd ordered 2907 for (int j = 0; j < 10; ++j) { 2908 #pragma omp ordered simd 2909 { 2910 bar(); 2911 } 2912 } 2913 } 2914 #pragma omp ordered 2915 { 2916 #pragma omp parallel for 2917 for (int i = 0; i < 10; ++i) 2918 ; 2919 } 2920 #pragma omp ordered 2921 { 2922 #pragma omp parallel for simd 2923 for (int i = 0; i < 10; ++i) 2924 ; 2925 } 2926 #pragma omp ordered 2927 { 2928 #pragma omp parallel sections 2929 { 2930 bar(); 2931 } 2932 } 2933 #pragma omp ordered 2934 { 2935 #pragma omp task 2936 { 2937 bar(); 2938 } 2939 } 2940 #pragma omp ordered 2941 { 2942 #pragma omp taskyield 2943 bar(); 2944 } 2945 #pragma omp ordered 2946 { 2947 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 2948 bar(); 2949 } 2950 #pragma omp ordered 2951 { 2952 #pragma omp taskwait 2953 bar(); 2954 } 2955 #pragma omp ordered 2956 { 2957 #pragma omp flush 2958 bar(); 2959 } 2960 #pragma omp ordered 2961 { 2962 #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?}} 2963 bar(); 2964 } 2965 #pragma omp ordered 2966 { 2967 #pragma omp atomic 2968 ++a; 2969 } 2970 #pragma omp ordered 2971 { 2972 #pragma omp target 2973 ++a; 2974 } 2975 #pragma omp ordered 2976 { 2977 #pragma omp target parallel 2978 ++a; 2979 } 2980 #pragma omp ordered 2981 { 2982 #pragma omp target parallel for ordered 2983 for (int j = 0; j < 10; ++j) { 2984 #pragma omp ordered // OK 2985 { 2986 bar(); 2987 } 2988 } 2989 } 2990 #pragma omp ordered 2991 { 2992 #pragma omp target parallel for 2993 for (int i = 0; i < 10; ++i) 2994 ; 2995 } 2996 #pragma omp ordered 2997 { 2998 #pragma omp target enter data map(to: a) 2999 ++a; 3000 } 3001 #pragma omp ordered 3002 { 3003 #pragma omp target exit data map(from: a) 3004 ++a; 3005 } 3006 #pragma omp ordered 3007 { 3008 #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?}} 3009 ++a; 3010 } 3011 #pragma omp ordered 3012 { 3013 #pragma omp taskloop 3014 for (int i = 0; i < 10; ++i) 3015 ++a; 3016 } 3017 #pragma omp ordered 3018 { 3019 #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?}} 3020 for (int i = 0; i < 10; ++i) 3021 ; 3022 } 3023 #pragma omp ordered 3024 { 3025 bar(); 3026 #pragma omp target update to(a) 3027 bar(); 3028 } 3029 #pragma omp ordered 3030 { 3031 #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?}} 3032 for (int i = 0; i < 10; ++i) 3033 ; 3034 } 3035 #pragma omp ordered 3036 { 3037 #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?}} 3038 for (int i = 0; i < 10; ++i) 3039 ; 3040 } 3041 #pragma omp ordered 3042 { 3043 #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?}} 3044 for (int i = 0; i < 10; ++i) 3045 ; 3046 } 3047 #pragma omp ordered 3048 { 3049 #pragma omp target simd // OK 3050 for (int i = 0; i < 10; ++i) 3051 ; 3052 } 3053 #pragma omp ordered 3054 { 3055 #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?}} 3056 for (int i = 0; i < 10; ++i) 3057 ; 3058 } 3059 #pragma omp ordered 3060 { 3061 #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?}} 3062 for (int i = 0; i < 10; ++i) 3063 ; 3064 } 3065 3066 // ATOMIC DIRECTIVE 3067 #pragma omp atomic 3068 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3069 // expected-note@+1 {{expected an expression statement}} 3070 { 3071 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3072 for (int i = 0; i < 10; ++i) 3073 ; 3074 } 3075 #pragma omp atomic 3076 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3077 // expected-note@+1 {{expected an expression statement}} 3078 { 3079 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3080 for (int i = 0; i < 10; ++i) 3081 ; 3082 } 3083 #pragma omp atomic 3084 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3085 // expected-note@+1 {{expected an expression statement}} 3086 { 3087 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3088 for (int i = 0; i < 10; ++i) 3089 ; 3090 } 3091 #pragma omp atomic 3092 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3093 // expected-note@+1 {{expected an expression statement}} 3094 { 3095 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3096 for (int i = 0; i < 10; ++i) 3097 ; 3098 } 3099 #pragma omp atomic 3100 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3101 // expected-note@+1 {{expected an expression statement}} 3102 { 3103 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3104 { 3105 bar(); 3106 } 3107 } 3108 #pragma omp atomic 3109 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3110 // expected-note@+1 {{expected an expression statement}} 3111 { 3112 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3113 { 3114 bar(); 3115 } 3116 } 3117 #pragma omp atomic 3118 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3119 // expected-note@+1 {{expected an expression statement}} 3120 { 3121 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3122 { 3123 bar(); 3124 } 3125 } 3126 #pragma omp atomic 3127 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3128 // expected-note@+1 {{expected an expression statement}} 3129 { 3130 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3131 { 3132 bar(); 3133 } 3134 } 3135 #pragma omp atomic 3136 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3137 // expected-note@+1 {{expected an expression statement}} 3138 { 3139 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3140 { 3141 bar(); 3142 } 3143 } 3144 #pragma omp atomic 3145 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3146 // expected-note@+1 {{expected an expression statement}} 3147 { 3148 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3149 for (int i = 0; i < 10; ++i) 3150 ; 3151 } 3152 #pragma omp atomic 3153 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3154 // expected-note@+1 {{expected an expression statement}} 3155 { 3156 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3157 for (int i = 0; i < 10; ++i) 3158 ; 3159 } 3160 #pragma omp atomic 3161 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3162 // expected-note@+1 {{expected an expression statement}} 3163 { 3164 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3165 { 3166 bar(); 3167 } 3168 } 3169 #pragma omp atomic 3170 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3171 // expected-note@+1 {{expected an expression statement}} 3172 { 3173 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3174 { 3175 bar(); 3176 } 3177 } 3178 #pragma omp atomic 3179 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3180 // expected-note@+1 {{expected an expression statement}} 3181 { 3182 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3183 bar(); 3184 } 3185 #pragma omp atomic 3186 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3187 // expected-note@+1 {{expected an expression statement}} 3188 { 3189 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3190 bar(); 3191 } 3192 #pragma omp atomic 3193 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3194 // expected-note@+1 {{expected an expression statement}} 3195 { 3196 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3197 bar(); 3198 } 3199 #pragma omp atomic 3200 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3201 // expected-note@+1 {{expected an expression statement}} 3202 { 3203 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3204 bar(); 3205 } 3206 #pragma omp atomic 3207 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3208 // expected-note@+1 {{expected an expression statement}} 3209 { 3210 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3211 bar(); 3212 } 3213 #pragma omp atomic 3214 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3215 // expected-note@+1 {{expected an expression statement}} 3216 { 3217 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3218 ++a; 3219 } 3220 #pragma omp atomic 3221 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3222 // expected-note@+1 {{expected an expression statement}} 3223 { 3224 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3225 ++a; 3226 } 3227 #pragma omp atomic 3228 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3229 // expected-note@+1 {{expected an expression statement}} 3230 { 3231 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3232 ++a; 3233 } 3234 #pragma omp atomic 3235 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3236 // expected-note@+1 {{expected an expression statement}} 3237 { 3238 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3239 for (int i = 0; i < 10; ++i) 3240 ; 3241 } 3242 #pragma omp atomic 3243 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3244 // expected-note@+1 {{expected an expression statement}} 3245 { 3246 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3247 ++a; 3248 } 3249 #pragma omp atomic 3250 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3251 // expected-note@+1 {{expected an expression statement}} 3252 { 3253 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3254 ++a; 3255 } 3256 #pragma omp atomic 3257 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3258 // expected-note@+1 {{expected an expression statement}} 3259 { 3260 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3261 ++a; 3262 } 3263 #pragma omp atomic 3264 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3265 // expected-note@+1 {{expected an expression statement}} 3266 { 3267 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3268 for (int i = 0; i < 10; ++i) 3269 ++a; 3270 } 3271 #pragma omp atomic 3272 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3273 // expected-note@+1 {{expected an expression statement}} 3274 { 3275 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3276 for (int i = 0; i < 10; ++i) 3277 ; 3278 } 3279 #pragma omp atomic 3280 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3281 // expected-note@+1 {{expected an expression statement}} 3282 { 3283 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3284 bar(); 3285 } 3286 #pragma omp atomic 3287 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3288 // expected-note@+1 {{expected an expression statement}} 3289 { 3290 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3291 for (int i = 0; i < 10; ++i) 3292 ; 3293 } 3294 #pragma omp atomic 3295 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3296 // expected-note@+1 {{expected an expression statement}} 3297 { 3298 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3299 for (int i = 0; i < 10; ++i) 3300 ; 3301 } 3302 #pragma omp atomic 3303 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3304 // expected-note@+1 {{expected an expression statement}} 3305 { 3306 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3307 for (int i = 0; i < 10; ++i) 3308 ; 3309 } 3310 #pragma omp atomic 3311 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3312 // expected-note@+1 {{expected an expression statement}} 3313 { 3314 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3315 for (int i = 0; i < 10; ++i) 3316 ; 3317 } 3318 #pragma omp atomic 3319 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 3320 // expected-note@+1 {{expected an expression statement}} 3321 { 3322 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3323 for (int i = 0; i < 10; ++i) 3324 ; 3325 } 3326 #pragma omp ordered 3327 { 3328 #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?}} 3329 for (int i = 0; i < 10; ++i) 3330 ; 3331 } 3332 3333 // TARGET DIRECTIVE 3334 #pragma omp target 3335 #pragma omp parallel 3336 bar(); 3337 #pragma omp target 3338 #pragma omp for 3339 for (int i = 0; i < 10; ++i) 3340 ; 3341 #pragma omp target 3342 #pragma omp simd 3343 for (int i = 0; i < 10; ++i) 3344 ; 3345 #pragma omp target 3346 #pragma omp for simd 3347 for (int i = 0; i < 10; ++i) 3348 ; 3349 #pragma omp target 3350 #pragma omp sections 3351 { 3352 bar(); 3353 } 3354 #pragma omp target 3355 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 3356 { 3357 bar(); 3358 } 3359 #pragma omp target 3360 #pragma omp single 3361 bar(); 3362 3363 #pragma omp target 3364 #pragma omp master 3365 { 3366 bar(); 3367 } 3368 #pragma omp target 3369 #pragma omp critical 3370 { 3371 bar(); 3372 } 3373 #pragma omp target 3374 #pragma omp parallel for 3375 for (int i = 0; i < 10; ++i) 3376 ; 3377 #pragma omp target 3378 #pragma omp parallel for simd 3379 for (int i = 0; i < 10; ++i) 3380 ; 3381 #pragma omp target 3382 #pragma omp parallel sections 3383 { 3384 bar(); 3385 } 3386 #pragma omp target 3387 #pragma omp task 3388 { 3389 bar(); 3390 } 3391 #pragma omp target 3392 { 3393 #pragma omp taskyield 3394 bar(); 3395 } 3396 #pragma omp target 3397 { 3398 #pragma omp barrier 3399 bar(); 3400 } 3401 #pragma omp target 3402 { 3403 #pragma omp taskwait 3404 bar(); 3405 } 3406 #pragma omp target 3407 { 3408 #pragma omp flush 3409 bar(); 3410 } 3411 #pragma omp target 3412 { 3413 #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?}} 3414 bar(); 3415 } 3416 #pragma omp target 3417 { 3418 #pragma omp atomic 3419 ++a; 3420 } 3421 #pragma omp target 3422 { 3423 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 3424 ++a; 3425 } 3426 #pragma omp target 3427 { 3428 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 3429 ++a; 3430 } 3431 #pragma omp target 3432 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 3433 for (int i = 0; i < 10; ++i) 3434 ; 3435 #pragma omp target 3436 { 3437 #pragma omp teams 3438 ++a; 3439 } 3440 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 3441 { 3442 ++a; // expected-note {{statement outside teams construct here}} 3443 #pragma omp teams // expected-note {{nested teams construct here}} 3444 ++a; 3445 } 3446 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 3447 { 3448 while (0) // expected-note {{statement outside teams construct here}} 3449 #pragma omp teams // expected-note {{nested teams construct here}} 3450 ++a; 3451 } 3452 #pragma omp target 3453 { 3454 #pragma omp taskloop 3455 for (int i = 0; i < 10; ++i) 3456 ++a; 3457 } 3458 #pragma omp target 3459 { 3460 #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?}} 3461 for (int i = 0; i < 10; ++i) 3462 ; 3463 } 3464 #pragma omp target 3465 { 3466 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 3467 } 3468 #pragma omp target 3469 { 3470 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 3471 } 3472 #pragma omp target 3473 { 3474 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 3475 } 3476 #pragma omp target 3477 { 3478 #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?}} 3479 for (int i = 0; i < 10; ++i) 3480 ; 3481 } 3482 #pragma omp target 3483 { 3484 #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?}} 3485 for (int i = 0; i < 10; ++i) 3486 ; 3487 } 3488 #pragma omp target 3489 { 3490 #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?}} 3491 for (int i = 0; i < 10; ++i) 3492 ; 3493 } 3494 #pragma omp target 3495 { 3496 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 3497 for (int i = 0; i < 10; ++i) 3498 ; 3499 } 3500 #pragma omp target 3501 { 3502 #pragma omp teams distribute // OK 3503 for (int i = 0; i < 10; ++i) 3504 ; 3505 } 3506 #pragma omp target 3507 { 3508 #pragma omp teams distribute simd // OK 3509 for (int i = 0; i < 10; ++i) 3510 ; 3511 } 3512 3513 // TARGET PARALLEL DIRECTIVE 3514 #pragma omp target parallel 3515 #pragma omp parallel 3516 bar(); 3517 #pragma omp target parallel 3518 #pragma omp for 3519 for (int i = 0; i < 10; ++i) 3520 ; 3521 #pragma omp target parallel 3522 #pragma omp simd 3523 for (int i = 0; i < 10; ++i) 3524 ; 3525 #pragma omp target parallel 3526 #pragma omp for simd 3527 for (int i = 0; i < 10; ++i) 3528 ; 3529 #pragma omp target parallel 3530 #pragma omp sections 3531 { 3532 bar(); 3533 } 3534 #pragma omp target parallel 3535 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 3536 { 3537 bar(); 3538 } 3539 #pragma omp target parallel 3540 #pragma omp single 3541 bar(); 3542 3543 #pragma omp target parallel 3544 #pragma omp master 3545 { 3546 bar(); 3547 } 3548 #pragma omp target parallel 3549 #pragma omp critical 3550 { 3551 bar(); 3552 } 3553 #pragma omp target parallel 3554 #pragma omp parallel for 3555 for (int i = 0; i < 10; ++i) 3556 ; 3557 #pragma omp target parallel 3558 #pragma omp parallel for simd 3559 for (int i = 0; i < 10; ++i) 3560 ; 3561 #pragma omp target parallel 3562 #pragma omp parallel sections 3563 { 3564 bar(); 3565 } 3566 #pragma omp target parallel 3567 #pragma omp task 3568 { 3569 bar(); 3570 } 3571 #pragma omp target parallel 3572 { 3573 #pragma omp taskyield 3574 bar(); 3575 } 3576 #pragma omp target parallel 3577 { 3578 #pragma omp barrier 3579 bar(); 3580 } 3581 #pragma omp target parallel 3582 { 3583 #pragma omp taskwait 3584 bar(); 3585 } 3586 #pragma omp target parallel 3587 { 3588 #pragma omp flush 3589 bar(); 3590 } 3591 #pragma omp target parallel 3592 { 3593 #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?}} 3594 bar(); 3595 } 3596 #pragma omp target parallel 3597 { 3598 #pragma omp atomic 3599 ++a; 3600 } 3601 #pragma omp target parallel 3602 { 3603 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 3604 ++a; 3605 } 3606 #pragma omp target parallel 3607 { 3608 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 3609 ++a; 3610 } 3611 #pragma omp target parallel 3612 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 3613 for (int i = 0; i < 10; ++i) 3614 ; 3615 #pragma omp target parallel 3616 { 3617 #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?}} 3618 ++a; 3619 } 3620 #pragma omp target parallel 3621 { 3622 ++a; 3623 #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?}} 3624 ++a; 3625 } 3626 #pragma omp target parallel 3627 { 3628 #pragma omp taskloop 3629 for (int i = 0; i < 10; ++i) 3630 ++a; 3631 } 3632 #pragma omp target parallel 3633 { 3634 #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?}} 3635 for (int i = 0; i < 10; ++i) 3636 ; 3637 } 3638 #pragma omp target parallel 3639 { 3640 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3641 } 3642 #pragma omp target parallel 3643 { 3644 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3645 } 3646 #pragma omp target parallel 3647 { 3648 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3649 } 3650 #pragma omp target parallel 3651 { 3652 #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?}} 3653 for (int i = 0; i < 10; ++i) 3654 ; 3655 } 3656 #pragma omp target parallel 3657 { 3658 #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?}} 3659 for (int i = 0; i < 10; ++i) 3660 ; 3661 } 3662 #pragma omp target parallel 3663 { 3664 #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?}} 3665 for (int i = 0; i < 10; ++i) 3666 ; 3667 } 3668 #pragma omp target parallel 3669 { 3670 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 3671 for (int i = 0; i < 10; ++i) 3672 ; 3673 } 3674 #pragma omp target parallel 3675 { 3676 #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?}} 3677 for (int i = 0; i < 10; ++i) 3678 ; 3679 } 3680 #pragma omp target parallel 3681 { 3682 #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?}} 3683 for (int i = 0; i < 10; ++i) 3684 ; 3685 } 3686 3687 // TARGET PARALLEL FOR DIRECTIVE 3688 #pragma omp target parallel for 3689 for (int i = 0; i < 10; ++i) { 3690 #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?}} 3691 for (int i = 0; i < 10; ++i) 3692 ; 3693 } 3694 #pragma omp target parallel for 3695 for (int i = 0; i < 10; ++i) { 3696 #pragma omp simd 3697 for (int i = 0; i < 10; ++i) 3698 ; 3699 } 3700 #pragma omp target parallel for 3701 for (int i = 0; i < 10; ++i) { 3702 #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?}} 3703 for (int i = 0; i < 10; ++i) 3704 ; 3705 } 3706 #pragma omp target parallel for 3707 for (int i = 0; i < 10; ++i) { 3708 #pragma omp parallel 3709 for (int i = 0; i < 10; ++i) 3710 ; 3711 } 3712 #pragma omp target parallel for 3713 for (int i = 0; i < 10; ++i) { 3714 #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?}} 3715 { 3716 bar(); 3717 } 3718 } 3719 #pragma omp target parallel for 3720 for (int i = 0; i < 10; ++i) { 3721 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 3722 { 3723 bar(); 3724 } 3725 } 3726 #pragma omp target parallel for 3727 for (int i = 0; i < 10; ++i) { 3728 #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?}} 3729 { 3730 bar(); 3731 } 3732 } 3733 3734 #pragma omp target parallel for 3735 for (int i = 0; i < 10; ++i) { 3736 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 3737 { 3738 bar(); 3739 } 3740 } 3741 3742 #pragma omp target parallel for 3743 for (int i = 0; i < 10; ++i) { 3744 #pragma omp critical 3745 { 3746 bar(); 3747 } 3748 } 3749 3750 #pragma omp target parallel for 3751 for (int i = 0; i < 10; ++i) { 3752 #pragma omp parallel 3753 { 3754 #pragma omp single // OK 3755 { 3756 bar(); 3757 } 3758 #pragma omp for // OK 3759 for (int i = 0; i < 10; ++i) 3760 ; 3761 #pragma omp for simd // OK 3762 for (int i = 0; i < 10; ++i) 3763 ; 3764 #pragma omp sections // OK 3765 { 3766 bar(); 3767 } 3768 } 3769 } 3770 #pragma omp target parallel for 3771 for (int i = 0; i < 10; ++i) { 3772 #pragma omp parallel for 3773 for (int i = 0; i < 10; ++i) 3774 ; 3775 } 3776 #pragma omp target parallel for 3777 for (int i = 0; i < 10; ++i) { 3778 #pragma omp parallel for simd 3779 for (int i = 0; i < 10; ++i) 3780 ; 3781 } 3782 #pragma omp target parallel for 3783 for (int i = 0; i < 10; ++i) { 3784 #pragma omp parallel sections 3785 { 3786 bar(); 3787 } 3788 } 3789 #pragma omp target parallel for 3790 for (int i = 0; i < 10; ++i) { 3791 #pragma omp task 3792 { 3793 bar(); 3794 } 3795 } 3796 #pragma omp target parallel for 3797 for (int i = 0; i < 10; ++i) { 3798 #pragma omp taskyield 3799 bar(); 3800 } 3801 #pragma omp target parallel for 3802 for (int i = 0; i < 10; ++i) { 3803 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 3804 bar(); 3805 } 3806 #pragma omp target parallel for 3807 for (int i = 0; i < 10; ++i) { 3808 #pragma omp taskwait 3809 bar(); 3810 } 3811 #pragma omp target parallel for 3812 for (int i = 0; i < 10; ++i) { 3813 #pragma omp flush 3814 bar(); 3815 } 3816 #pragma omp target parallel for 3817 for (int i = 0; i < 10; ++i) { 3818 #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?}} 3819 bar(); 3820 } 3821 #pragma omp target parallel for ordered 3822 for (int i = 0; i < 10; ++i) { 3823 #pragma omp ordered // OK 3824 bar(); 3825 } 3826 #pragma omp target parallel for 3827 for (int i = 0; i < 10; ++i) { 3828 #pragma omp atomic 3829 ++a; 3830 } 3831 #pragma omp target parallel for 3832 for (int i = 0; i < 10; ++i) { 3833 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 3834 ++a; 3835 } 3836 #pragma omp target parallel for 3837 for (int i = 0; i < 10; ++i) { 3838 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 3839 ++a; 3840 } 3841 #pragma omp target parallel for 3842 for (int i = 0; i < 10; ++i) { 3843 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 3844 for (int i = 0; i < 10; ++i) 3845 ; 3846 } 3847 #pragma omp target parallel for 3848 for (int i = 0; i < 10; ++i) { 3849 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 3850 ++a; 3851 } 3852 #pragma omp target parallel for 3853 for (int i = 0; i < 10; ++i) { 3854 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 3855 ++a; 3856 } 3857 #pragma omp target parallel for 3858 for (int i = 0; i < 10; ++i) { 3859 #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?}} 3860 ++a; 3861 } 3862 #pragma omp target parallel for 3863 for (int i = 0; i < 10; ++i) { 3864 #pragma omp taskloop 3865 for (int i = 0; i < 10; ++i) 3866 ++a; 3867 } 3868 #pragma omp target parallel for 3869 for (int i = 0; i < 10; ++i) { 3870 #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?}} 3871 for (int j = 0; j < 10; ++j) 3872 ; 3873 } 3874 #pragma omp target parallel for 3875 for (int i = 0; i < 10; ++i) { 3876 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 3877 } 3878 #pragma omp target parallel for 3879 for (int i = 0; i < 10; ++i) { 3880 #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?}} 3881 for (int j = 0; j < 10; ++j) 3882 ; 3883 } 3884 #pragma omp target parallel for 3885 for (int i = 0; i < 10; ++i) { 3886 #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?}} 3887 for (int j = 0; j < 10; ++j) 3888 ; 3889 } 3890 #pragma omp target parallel for 3891 for (int i = 0; i < 10; ++i) { 3892 #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?}} 3893 for (int j = 0; j < 10; ++j) 3894 ; 3895 } 3896 #pragma omp target parallel for 3897 for (int i = 0; i < 10; ++i) { 3898 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 3899 for (int j = 0; j < 10; ++j) 3900 ; 3901 } 3902 #pragma omp target parallel for 3903 for (int i = 0; i < 10; ++i) { 3904 #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?}} 3905 for (int j = 0; j < 10; ++j) 3906 ; 3907 } 3908 #pragma omp target parallel for 3909 for (int i = 0; i < 10; ++i) { 3910 #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?}} 3911 for (int j = 0; j < 10; ++j) 3912 ; 3913 } 3914 3915 // TEAMS DIRECTIVE 3916 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 3917 bar(); 3918 #pragma omp target 3919 #pragma omp teams 3920 #pragma omp parallel 3921 bar(); 3922 #pragma omp target 3923 #pragma omp teams 3924 #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?}} 3925 for (int i = 0; i < 10; ++i) 3926 ; 3927 #pragma omp target 3928 #pragma omp teams 3929 #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?}} 3930 for (int i = 0; i < 10; ++i) 3931 ; 3932 #pragma omp target 3933 #pragma omp teams 3934 #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?}} 3935 for (int i = 0; i < 10; ++i) 3936 ; 3937 #pragma omp target 3938 #pragma omp teams 3939 #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?}} 3940 { 3941 bar(); 3942 } 3943 #pragma omp target 3944 #pragma omp teams 3945 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 3946 { 3947 bar(); 3948 } 3949 #pragma omp target 3950 #pragma omp teams 3951 #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?}} 3952 bar(); 3953 3954 #pragma omp target 3955 #pragma omp teams 3956 #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?}} 3957 { 3958 bar(); 3959 } 3960 #pragma omp target 3961 #pragma omp teams 3962 #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?}} 3963 { 3964 bar(); 3965 } 3966 #pragma omp target 3967 #pragma omp teams 3968 #pragma omp parallel for 3969 for (int i = 0; i < 10; ++i) 3970 ; 3971 #pragma omp target 3972 #pragma omp teams 3973 #pragma omp parallel for simd 3974 for (int i = 0; i < 10; ++i) 3975 ; 3976 #pragma omp target 3977 #pragma omp teams 3978 #pragma omp parallel sections 3979 { 3980 bar(); 3981 } 3982 #pragma omp target 3983 #pragma omp teams 3984 #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?}} 3985 { 3986 bar(); 3987 } 3988 #pragma omp target 3989 #pragma omp teams 3990 { 3991 #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?}} 3992 bar(); 3993 } 3994 #pragma omp target 3995 #pragma omp teams 3996 { 3997 #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?}} 3998 bar(); 3999 } 4000 #pragma omp target 4001 #pragma omp teams 4002 { 4003 #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?}} 4004 bar(); 4005 } 4006 #pragma omp target 4007 #pragma omp teams 4008 { 4009 #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?}} 4010 bar(); 4011 } 4012 #pragma omp target 4013 #pragma omp teams 4014 { 4015 #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?}} 4016 bar(); 4017 } 4018 #pragma omp target 4019 #pragma omp teams 4020 { 4021 #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?}} 4022 ++a; 4023 } 4024 #pragma omp target 4025 #pragma omp teams 4026 { 4027 #pragma omp target // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target' directive into a parallel region?}} 4028 ++a; 4029 } 4030 #pragma omp target 4031 #pragma omp teams 4032 { 4033 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4034 ++a; 4035 } 4036 #pragma omp target 4037 #pragma omp teams 4038 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4039 for (int i = 0; i < 10; ++i) 4040 ; 4041 #pragma omp target 4042 #pragma omp teams 4043 { 4044 #pragma omp target enter data map(to: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target enter data' directive into a parallel region?}} 4045 ++a; 4046 } 4047 #pragma omp target 4048 #pragma omp teams 4049 { 4050 #pragma omp target exit data map(from: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target exit data' directive into a parallel region?}} 4051 ++a; 4052 } 4053 #pragma omp target 4054 #pragma omp teams 4055 { 4056 #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?}} 4057 ++a; 4058 } 4059 #pragma omp target 4060 #pragma omp teams 4061 { 4062 #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?}} 4063 for (int i = 0; i < 10; ++i) 4064 ++a; 4065 } 4066 #pragma omp target 4067 #pragma omp teams 4068 #pragma omp distribute 4069 for (int i = 0; i < 10; ++i) 4070 ; 4071 #pragma omp target 4072 #pragma omp teams 4073 #pragma omp distribute 4074 for (int i = 0; i < 10; ++i) 4075 ; 4076 #pragma omp distribute 4077 for (int j = 0; j < 10; ++j) 4078 ; 4079 #pragma omp target 4080 #pragma omp teams 4081 { 4082 #pragma omp target update to(a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target update' directive into a parallel region?}} 4083 } 4084 #pragma omp target 4085 #pragma omp teams 4086 { 4087 #pragma omp distribute parallel for 4088 for (int i = 0; i < 10; ++i) 4089 ; 4090 #pragma omp distribute parallel for 4091 for (int j = 0; j < 10; ++j) 4092 ; 4093 } 4094 #pragma omp target 4095 #pragma omp teams 4096 { 4097 #pragma omp distribute parallel for simd 4098 for (int i = 0; i < 10; ++i) 4099 ; 4100 #pragma omp distribute parallel for simd 4101 for (int j = 0; j < 10; ++j) 4102 ; 4103 } 4104 #pragma omp target 4105 #pragma omp teams 4106 { 4107 #pragma omp distribute simd 4108 for (int i = 0; i < 10; ++i) 4109 ; 4110 #pragma omp distribute simd 4111 for (int j = 0; j < 10; ++j) 4112 ; 4113 } 4114 #pragma omp target 4115 #pragma omp teams 4116 { 4117 #pragma omp target simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target simd' directive into a parallel region?}} 4118 for (int i = 0; i < 10; ++i) 4119 ; 4120 } 4121 #pragma omp target 4122 #pragma omp teams 4123 { 4124 #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?}} 4125 for (int i = 0; i < 10; ++i) 4126 ; 4127 } 4128 #pragma omp target 4129 #pragma omp teams 4130 { 4131 #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?}} 4132 for (int i = 0; i < 10; ++i) 4133 ; 4134 } 4135 4136 // TASKLOOP DIRECTIVE 4137 #pragma omp taskloop 4138 for (int i = 0; i < 10; ++i) { 4139 #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?}} 4140 for (int i = 0; i < 10; ++i) 4141 ; 4142 } 4143 #pragma omp taskloop 4144 for (int i = 0; i < 10; ++i) { 4145 #pragma omp simd 4146 for (int i = 0; i < 10; ++i) 4147 ; 4148 } 4149 #pragma omp taskloop 4150 for (int i = 0; i < 10; ++i) { 4151 #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?}} 4152 for (int i = 0; i < 10; ++i) 4153 ; 4154 } 4155 #pragma omp taskloop 4156 for (int i = 0; i < 10; ++i) { 4157 #pragma omp parallel 4158 for (int i = 0; i < 10; ++i) 4159 ; 4160 } 4161 #pragma omp taskloop 4162 for (int i = 0; i < 10; ++i) { 4163 #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?}} 4164 { 4165 bar(); 4166 } 4167 } 4168 #pragma omp taskloop 4169 for (int i = 0; i < 10; ++i) { 4170 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 4171 { 4172 bar(); 4173 } 4174 } 4175 #pragma omp taskloop 4176 for (int i = 0; i < 10; ++i) { 4177 #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?}} 4178 { 4179 bar(); 4180 } 4181 } 4182 4183 #pragma omp taskloop 4184 for (int i = 0; i < 10; ++i) { 4185 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4186 { 4187 bar(); 4188 } 4189 } 4190 #pragma omp taskloop 4191 for (int i = 0; i < 10; ++i) { 4192 #pragma omp critical 4193 { 4194 bar(); 4195 } 4196 } 4197 #pragma omp taskloop 4198 for (int i = 0; i < 10; ++i) { 4199 #pragma omp parallel 4200 { 4201 #pragma omp single // OK 4202 { 4203 bar(); 4204 } 4205 #pragma omp for // OK 4206 for (int i = 0; i < 10; ++i) 4207 ; 4208 #pragma omp sections // OK 4209 { 4210 bar(); 4211 } 4212 } 4213 } 4214 #pragma omp taskloop 4215 for (int i = 0; i < 10; ++i) { 4216 #pragma omp parallel for 4217 for (int i = 0; i < 10; ++i) 4218 ; 4219 } 4220 #pragma omp taskloop 4221 for (int i = 0; i < 10; ++i) { 4222 #pragma omp parallel for simd 4223 for (int i = 0; i < 10; ++i) 4224 ; 4225 } 4226 #pragma omp taskloop 4227 for (int i = 0; i < 10; ++i) { 4228 #pragma omp parallel sections 4229 { 4230 bar(); 4231 } 4232 } 4233 #pragma omp taskloop 4234 for (int i = 0; i < 10; ++i) { 4235 #pragma omp task 4236 { 4237 bar(); 4238 } 4239 } 4240 #pragma omp taskloop 4241 for (int i = 0; i < 10; ++i) { 4242 #pragma omp taskyield 4243 bar(); 4244 } 4245 #pragma omp taskloop 4246 for (int i = 0; i < 10; ++i) { 4247 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4248 bar(); 4249 } 4250 #pragma omp taskloop 4251 for (int i = 0; i < 10; ++i) { 4252 #pragma omp taskwait 4253 bar(); 4254 } 4255 #pragma omp taskloop 4256 for (int i = 0; i < 10; ++i) { 4257 #pragma omp flush 4258 bar(); 4259 } 4260 #pragma omp taskloop 4261 for (int i = 0; i < 10; ++i) { 4262 #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?}} 4263 bar(); 4264 } 4265 #pragma omp taskloop 4266 for (int i = 0; i < 10; ++i) { 4267 #pragma omp atomic 4268 ++a; 4269 } 4270 #pragma omp taskloop 4271 for (int i = 0; i < 10; ++i) { 4272 #pragma omp target 4273 ++a; 4274 } 4275 #pragma omp taskloop 4276 for (int i = 0; i < 10; ++i) { 4277 #pragma omp target parallel 4278 ++a; 4279 } 4280 #pragma omp taskloop 4281 for (int i = 0; i < 10; ++i) { 4282 #pragma omp target parallel for 4283 for (int i = 0; i < 10; ++i) 4284 ; 4285 } 4286 #pragma omp taskloop 4287 for (int i = 0; i < 10; ++i) { 4288 #pragma omp target enter data map(to: a) 4289 ++a; 4290 } 4291 #pragma omp taskloop 4292 for (int i = 0; i < 10; ++i) { 4293 #pragma omp target exit data map(from: a) 4294 ++a; 4295 } 4296 #pragma omp taskloop 4297 for (int i = 0; i < 10; ++i) { 4298 #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?}} 4299 ++a; 4300 } 4301 #pragma omp taskloop 4302 for (int i = 0; i < 10; ++i) { 4303 #pragma omp taskloop 4304 for (int i = 0; i < 10; ++i) 4305 ++a; 4306 } 4307 #pragma omp taskloop 4308 for (int i = 0; i < 10; ++i) { 4309 #pragma omp target update to(a) 4310 bar(); 4311 } 4312 #pragma omp taskloop 4313 for (int i = 0; i < 10; ++i) { 4314 #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?}} 4315 for (int j = 0; j < 10; ++j) 4316 ++a; 4317 } 4318 #pragma omp taskloop 4319 for (int i = 0; i < 10; ++i) { 4320 #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?}} 4321 for (int j = 0; j < 10; ++j) 4322 ++a; 4323 } 4324 #pragma omp taskloop 4325 for (int i = 0; i < 10; ++i) { 4326 #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?}} 4327 for (int j = 0; j < 10; ++j) 4328 ++a; 4329 } 4330 #pragma omp taskloop 4331 for (int i = 0; i < 10; ++i) { 4332 #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?}} 4333 for (int j = 0; j < 10; ++j) 4334 ++a; 4335 } 4336 #pragma omp taskloop 4337 for (int i = 0; i < 10; ++i) { 4338 #pragma omp target simd // OK 4339 for (int j = 0; j < 10; ++j) 4340 ++a; 4341 } 4342 #pragma omp taskloop 4343 for (int i = 0; i < 10; ++i) { 4344 #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?}} 4345 for (int j = 0; j < 10; ++j) 4346 ++a; 4347 } 4348 #pragma omp taskloop 4349 for (int i = 0; i < 10; ++i) { 4350 #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?}} 4351 for (int j = 0; j < 10; ++j) 4352 ++a; 4353 } 4354 4355 // DISTRIBUTE DIRECTIVE 4356 #pragma omp target 4357 #pragma omp teams 4358 #pragma omp distribute 4359 for (int i = 0; i < 10; ++i) { 4360 #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?}} 4361 for (int i = 0; i < 10; ++i) 4362 ; 4363 } 4364 #pragma omp target 4365 #pragma omp teams 4366 #pragma omp distribute 4367 for (int i = 0; i < 10; ++i) { 4368 #pragma omp for 4369 for (int i = 0; i < 10; ++i) 4370 ; 4371 } 4372 #pragma omp target 4373 #pragma omp teams 4374 #pragma omp distribute 4375 for (int i = 0; i < 10; ++i) { 4376 #pragma omp simd 4377 for (int i = 0; i < 10; ++i) 4378 ; 4379 } 4380 #pragma omp target 4381 #pragma omp teams 4382 #pragma omp distribute 4383 for (int i = 0; i < 10; ++i) { 4384 #pragma omp for simd 4385 for (int i = 0; i < 10; ++i) 4386 ; 4387 } 4388 #pragma omp target 4389 #pragma omp teams 4390 #pragma omp distribute 4391 for (int i = 0; i < 10; ++i) { 4392 #pragma omp parallel 4393 for (int i = 0; i < 10; ++i) 4394 ; 4395 } 4396 #pragma omp target 4397 #pragma omp teams 4398 #pragma omp distribute 4399 for (int i = 0; i < 10; ++i) { 4400 #pragma omp sections 4401 { 4402 bar(); 4403 } 4404 } 4405 #pragma omp target 4406 #pragma omp teams 4407 #pragma omp distribute 4408 for (int i = 0; i < 10; ++i) { 4409 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 4410 { 4411 bar(); 4412 } 4413 } 4414 #pragma omp target 4415 #pragma omp teams 4416 #pragma omp distribute 4417 for (int i = 0; i < 10; ++i) { 4418 #pragma omp single 4419 { 4420 bar(); 4421 } 4422 } 4423 #pragma omp target 4424 #pragma omp teams 4425 #pragma omp distribute 4426 for (int i = 0; i < 10; ++i) { 4427 #pragma omp master 4428 { 4429 bar(); 4430 } 4431 } 4432 #pragma omp target 4433 #pragma omp teams 4434 #pragma omp distribute 4435 for (int i = 0; i < 10; ++i) { 4436 #pragma omp critical 4437 { 4438 bar(); 4439 } 4440 } 4441 #pragma omp target 4442 #pragma omp teams 4443 #pragma omp distribute 4444 for (int i = 0; i < 10; ++i) { 4445 #pragma omp parallel 4446 { 4447 #pragma omp single 4448 { 4449 bar(); 4450 } 4451 } 4452 } 4453 #pragma omp target 4454 #pragma omp teams 4455 #pragma omp distribute 4456 for (int i = 0; i < 10; ++i) { 4457 #pragma omp parallel for 4458 for (int i = 0; i < 10; ++i) 4459 ; 4460 } 4461 #pragma omp target 4462 #pragma omp teams 4463 #pragma omp distribute 4464 for (int i = 0; i < 10; ++i) { 4465 #pragma omp parallel for simd 4466 for (int i = 0; i < 10; ++i) 4467 ; 4468 } 4469 #pragma omp target 4470 #pragma omp teams 4471 #pragma omp distribute 4472 for (int i = 0; i < 10; ++i) { 4473 #pragma omp parallel sections 4474 { 4475 bar(); 4476 } 4477 } 4478 #pragma omp target 4479 #pragma omp teams 4480 #pragma omp distribute 4481 for (int i = 0; i < 10; ++i) { 4482 #pragma omp task 4483 { 4484 bar(); 4485 } 4486 } 4487 #pragma omp target 4488 #pragma omp teams 4489 #pragma omp distribute 4490 for (int i = 0; i < 10; ++i) { 4491 #pragma omp taskyield 4492 bar(); 4493 } 4494 #pragma omp target 4495 #pragma omp teams 4496 #pragma omp distribute 4497 for (int i = 0; i < 10; ++i) { 4498 #pragma omp barrier 4499 bar(); 4500 } 4501 #pragma omp target 4502 #pragma omp teams 4503 #pragma omp distribute 4504 for (int i = 0; i < 10; ++i) { 4505 #pragma omp taskwait 4506 bar(); 4507 } 4508 #pragma omp target 4509 #pragma omp teams 4510 #pragma omp distribute 4511 for (int i = 0; i < 10; ++i) { 4512 #pragma omp flush 4513 bar(); 4514 } 4515 #pragma omp target 4516 #pragma omp teams 4517 #pragma omp distribute 4518 for (int i = 0; i < 10; ++i) { 4519 #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?}} 4520 bar(); 4521 } 4522 #pragma omp target 4523 #pragma omp teams 4524 #pragma omp distribute 4525 for (int i = 0; i < 10; ++i) { 4526 #pragma omp atomic 4527 ++a; 4528 } 4529 #pragma omp target 4530 #pragma omp teams 4531 #pragma omp distribute 4532 for (int i = 0; i < 10; ++i) { 4533 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4534 ++a; 4535 } 4536 #pragma omp target 4537 #pragma omp teams 4538 #pragma omp distribute 4539 for (int i = 0; i < 10; ++i) { 4540 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4541 ++a; 4542 } 4543 #pragma omp target 4544 #pragma omp teams 4545 #pragma omp distribute 4546 for (int i = 0; i < 10; ++i) { 4547 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4548 for (int i = 0; i < 10; ++i) 4549 ; 4550 } 4551 #pragma omp target 4552 #pragma omp teams 4553 #pragma omp distribute 4554 for (int i = 0; i < 10; ++i) { 4555 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4556 ++a; 4557 } 4558 #pragma omp target 4559 #pragma omp teams 4560 #pragma omp distribute 4561 for (int i = 0; i < 10; ++i) { 4562 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4563 ++a; 4564 } 4565 #pragma omp target 4566 #pragma omp teams 4567 #pragma omp distribute 4568 for (int i = 0; i < 10; ++i) { 4569 #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?}} 4570 ++a; 4571 } 4572 #pragma omp target 4573 #pragma omp teams 4574 #pragma omp distribute 4575 for (int i = 0; i < 10; ++i) { 4576 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4577 ++a; 4578 } 4579 #pragma omp target 4580 #pragma omp teams 4581 #pragma omp distribute 4582 for (int i = 0; i < 10; ++i) { 4583 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4584 for (int j = 0; j < 10; ++j) 4585 ; 4586 } 4587 #pragma omp target 4588 #pragma omp teams 4589 #pragma omp distribute 4590 for (int i = 0; i < 10; ++i) { 4591 #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?}} 4592 for (int j = 0; j < 10; ++j) 4593 ; 4594 } 4595 #pragma omp target 4596 #pragma omp teams 4597 #pragma omp distribute 4598 for (int i = 0; i < 10; ++i) { 4599 #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?}} 4600 for (int j = 0; j < 10; ++j) 4601 ; 4602 } 4603 4604 // DISTRIBUTE PARALLEL FOR DIRECTIVE 4605 #pragma omp target 4606 #pragma omp teams 4607 #pragma omp distribute parallel for 4608 for (int i = 0; i < 10; ++i) { 4609 #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?}} 4610 for (int i = 0; i < 10; ++i) 4611 ; 4612 } 4613 #pragma omp target 4614 #pragma omp teams 4615 #pragma omp distribute parallel for 4616 for (int i = 0; i < 10; ++i) { 4617 #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?}} 4618 for (int i = 0; i < 10; ++i) 4619 ; 4620 } 4621 #pragma omp target 4622 #pragma omp teams 4623 #pragma omp distribute parallel for 4624 for (int i = 0; i < 10; ++i) { 4625 #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?}} 4626 for (int i = 0; i < 10; ++i) 4627 ; 4628 } 4629 #pragma omp target 4630 #pragma omp teams 4631 #pragma omp distribute parallel for 4632 for (int i = 0; i < 10; ++i) { 4633 #pragma omp simd 4634 for (int i = 0; i < 10; ++i) 4635 ; 4636 } 4637 #pragma omp target 4638 #pragma omp teams 4639 #pragma omp distribute parallel for 4640 for (int i = 0; i < 10; ++i) { 4641 #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?}} 4642 for (int i = 0; i < 10; ++i) 4643 ; 4644 } 4645 #pragma omp target 4646 #pragma omp teams 4647 #pragma omp distribute parallel for 4648 for (int i = 0; i < 10; ++i) { 4649 #pragma omp parallel 4650 for (int i = 0; i < 10; ++i) 4651 ; 4652 } 4653 #pragma omp target 4654 #pragma omp teams 4655 #pragma omp distribute parallel for 4656 for (int i = 0; i < 10; ++i) { 4657 #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?}} 4658 { 4659 bar(); 4660 } 4661 } 4662 #pragma omp target 4663 #pragma omp teams 4664 #pragma omp distribute parallel for 4665 for (int i = 0; i < 10; ++i) { 4666 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 4667 { 4668 bar(); 4669 } 4670 } 4671 #pragma omp target 4672 #pragma omp teams 4673 #pragma omp distribute parallel for 4674 for (int i = 0; i < 10; ++i) { 4675 #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?}} 4676 { 4677 bar(); 4678 } 4679 } 4680 #pragma omp target 4681 #pragma omp teams 4682 #pragma omp distribute parallel for 4683 for (int i = 0; i < 10; ++i) { 4684 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 4685 { 4686 bar(); 4687 } 4688 } 4689 #pragma omp target 4690 #pragma omp teams 4691 #pragma omp distribute parallel for 4692 for (int i = 0; i < 10; ++i) { 4693 #pragma omp critical 4694 { 4695 bar(); 4696 } 4697 } 4698 #pragma omp target 4699 #pragma omp teams 4700 #pragma omp distribute parallel for 4701 for (int i = 0; i < 10; ++i) { 4702 #pragma omp parallel 4703 { 4704 #pragma omp single 4705 { 4706 bar(); 4707 } 4708 } 4709 } 4710 #pragma omp target 4711 #pragma omp teams 4712 #pragma omp distribute parallel for 4713 for (int i = 0; i < 10; ++i) { 4714 #pragma omp parallel for 4715 for (int i = 0; i < 10; ++i) 4716 ; 4717 } 4718 #pragma omp target 4719 #pragma omp teams 4720 #pragma omp distribute parallel for 4721 for (int i = 0; i < 10; ++i) { 4722 #pragma omp parallel for simd 4723 for (int i = 0; i < 10; ++i) 4724 ; 4725 } 4726 #pragma omp target 4727 #pragma omp teams 4728 #pragma omp distribute parallel for 4729 for (int i = 0; i < 10; ++i) { 4730 #pragma omp parallel sections 4731 { 4732 bar(); 4733 } 4734 } 4735 #pragma omp target 4736 #pragma omp teams 4737 #pragma omp distribute parallel for 4738 for (int i = 0; i < 10; ++i) { 4739 #pragma omp task 4740 { 4741 bar(); 4742 } 4743 } 4744 #pragma omp target 4745 #pragma omp teams 4746 #pragma omp distribute parallel for 4747 for (int i = 0; i < 10; ++i) { 4748 #pragma omp taskyield 4749 bar(); 4750 } 4751 #pragma omp target 4752 #pragma omp teams 4753 #pragma omp distribute parallel for 4754 for (int i = 0; i < 10; ++i) { 4755 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 4756 bar(); 4757 } 4758 #pragma omp target 4759 #pragma omp teams 4760 #pragma omp distribute parallel for 4761 for (int i = 0; i < 10; ++i) { 4762 #pragma omp taskwait 4763 bar(); 4764 } 4765 #pragma omp target 4766 #pragma omp teams 4767 #pragma omp distribute parallel for 4768 for (int i = 0; i < 10; ++i) { 4769 #pragma omp flush 4770 bar(); 4771 } 4772 #pragma omp target 4773 #pragma omp teams 4774 #pragma omp distribute parallel for 4775 for (int i = 0; i < 10; ++i) { 4776 #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?}} 4777 bar(); 4778 } 4779 #pragma omp target 4780 #pragma omp teams 4781 #pragma omp distribute parallel for 4782 for (int i = 0; i < 10; ++i) { 4783 #pragma omp atomic 4784 ++a; 4785 } 4786 #pragma omp target 4787 #pragma omp teams 4788 #pragma omp distribute parallel for 4789 for (int i = 0; i < 10; ++i) { 4790 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4791 ++a; 4792 } 4793 #pragma omp target 4794 #pragma omp teams 4795 #pragma omp distribute parallel for 4796 for (int i = 0; i < 10; ++i) { 4797 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4798 ++a; 4799 } 4800 #pragma omp target 4801 #pragma omp teams 4802 #pragma omp distribute parallel for 4803 for (int i = 0; i < 10; ++i) { 4804 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4805 for (int i = 0; i < 10; ++i) 4806 ; 4807 } 4808 #pragma omp target 4809 #pragma omp teams 4810 #pragma omp distribute parallel for 4811 for (int i = 0; i < 10; ++i) { 4812 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4813 ++a; 4814 } 4815 #pragma omp target 4816 #pragma omp teams 4817 #pragma omp distribute parallel for 4818 for (int i = 0; i < 10; ++i) { 4819 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4820 ++a; 4821 } 4822 #pragma omp target 4823 #pragma omp teams 4824 #pragma omp distribute parallel for 4825 for (int i = 0; i < 10; ++i) { 4826 #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?}} 4827 ++a; 4828 } 4829 #pragma omp target 4830 #pragma omp teams 4831 #pragma omp distribute parallel for 4832 for (int i = 0; i < 10; ++i) { 4833 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4834 ++a; 4835 } 4836 #pragma omp target 4837 #pragma omp teams 4838 #pragma omp distribute parallel for 4839 for (int i = 0; i < 10; ++i) { 4840 #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?}} 4841 for (int i = 0; i < 10; ++i) 4842 ; 4843 } 4844 #pragma omp target 4845 #pragma omp teams 4846 #pragma omp distribute parallel for 4847 for (int i = 0; i < 10; ++i) { 4848 #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?}} 4849 for (int i = 0; i < 10; ++i) 4850 ; 4851 } 4852 #pragma omp target 4853 #pragma omp teams 4854 #pragma omp distribute parallel for 4855 for (int i = 0; i < 10; ++i) { 4856 #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?}} 4857 for (int i = 0; i < 10; ++i) 4858 ; 4859 } 4860 4861 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 4862 #pragma omp target 4863 #pragma omp teams 4864 #pragma omp distribute parallel for simd 4865 for (int i = 0; i < 10; ++i) { 4866 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4867 for (int i = 0; i < 10; ++i) 4868 ; 4869 } 4870 #pragma omp target 4871 #pragma omp teams 4872 #pragma omp distribute parallel for simd 4873 for (int i = 0; i < 10; ++i) { 4874 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4875 for (int i = 0; i < 10; ++i) 4876 ; 4877 } 4878 #pragma omp target 4879 #pragma omp teams 4880 #pragma omp distribute parallel for simd 4881 for (int i = 0; i < 10; ++i) { 4882 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4883 for (int i = 0; i < 10; ++i) 4884 ; 4885 } 4886 #pragma omp target 4887 #pragma omp teams 4888 #pragma omp distribute parallel for simd 4889 for (int i = 0; i < 10; ++i) { 4890 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 4891 for (int i = 0; i < 10; ++i) 4892 ; 4893 } 4894 #pragma omp target 4895 #pragma omp teams 4896 #pragma omp distribute parallel for simd 4897 for (int i = 0; i < 10; ++i) { 4898 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4899 for (int i = 0; i < 10; ++i) 4900 ; 4901 } 4902 #pragma omp target 4903 #pragma omp teams 4904 #pragma omp distribute parallel for simd 4905 for (int i = 0; i < 10; ++i) { 4906 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4907 for (int i = 0; i < 10; ++i) 4908 ; 4909 } 4910 #pragma omp target 4911 #pragma omp teams 4912 #pragma omp distribute parallel for simd 4913 for (int i = 0; i < 10; ++i) { 4914 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4915 { 4916 bar(); 4917 } 4918 } 4919 #pragma omp target 4920 #pragma omp teams 4921 #pragma omp distribute parallel for simd 4922 for (int i = 0; i < 10; ++i) { 4923 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4924 { 4925 bar(); 4926 } 4927 } 4928 #pragma omp target 4929 #pragma omp teams 4930 #pragma omp distribute parallel for simd 4931 for (int i = 0; i < 10; ++i) { 4932 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4933 { 4934 bar(); 4935 } 4936 } 4937 #pragma omp target 4938 #pragma omp teams 4939 #pragma omp distribute parallel for simd 4940 for (int i = 0; i < 10; ++i) { 4941 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4942 { 4943 bar(); 4944 } 4945 } 4946 #pragma omp target 4947 #pragma omp teams 4948 #pragma omp distribute parallel for simd 4949 for (int i = 0; i < 10; ++i) { 4950 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4951 { 4952 bar(); 4953 } 4954 } 4955 #pragma omp target 4956 #pragma omp teams 4957 #pragma omp distribute parallel for simd 4958 for (int i = 0; i < 10; ++i) { 4959 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4960 { 4961 #pragma omp single 4962 { 4963 bar(); 4964 } 4965 } 4966 } 4967 #pragma omp target 4968 #pragma omp teams 4969 #pragma omp distribute parallel for simd 4970 for (int i = 0; i < 10; ++i) { 4971 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4972 for (int i = 0; i < 10; ++i) 4973 ; 4974 } 4975 #pragma omp target 4976 #pragma omp teams 4977 #pragma omp distribute parallel for simd 4978 for (int i = 0; i < 10; ++i) { 4979 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4980 for (int i = 0; i < 10; ++i) 4981 ; 4982 } 4983 #pragma omp target 4984 #pragma omp teams 4985 #pragma omp distribute parallel for simd 4986 for (int i = 0; i < 10; ++i) { 4987 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4988 { 4989 bar(); 4990 } 4991 } 4992 #pragma omp target 4993 #pragma omp teams 4994 #pragma omp distribute parallel for simd 4995 for (int i = 0; i < 10; ++i) { 4996 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 4997 { 4998 bar(); 4999 } 5000 } 5001 #pragma omp target 5002 #pragma omp teams 5003 #pragma omp distribute parallel for simd 5004 for (int i = 0; i < 10; ++i) { 5005 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5006 bar(); 5007 } 5008 #pragma omp target 5009 #pragma omp teams 5010 #pragma omp distribute parallel for simd 5011 for (int i = 0; i < 10; ++i) { 5012 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5013 bar(); 5014 } 5015 #pragma omp target 5016 #pragma omp teams 5017 #pragma omp distribute parallel for simd 5018 for (int i = 0; i < 10; ++i) { 5019 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5020 bar(); 5021 } 5022 #pragma omp target 5023 #pragma omp teams 5024 #pragma omp distribute parallel for simd 5025 for (int i = 0; i < 10; ++i) { 5026 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5027 bar(); 5028 } 5029 #pragma omp target 5030 #pragma omp teams 5031 #pragma omp distribute parallel for simd 5032 for (int i = 0; i < 10; ++i) { 5033 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5034 bar(); 5035 } 5036 #pragma omp target 5037 #pragma omp teams 5038 #pragma omp distribute parallel for simd 5039 for (int i = 0; i < 10; ++i) { 5040 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5041 ++a; 5042 } 5043 #pragma omp target 5044 #pragma omp teams 5045 #pragma omp distribute parallel for simd 5046 for (int i = 0; i < 10; ++i) { 5047 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5048 ++a; 5049 } 5050 #pragma omp target 5051 #pragma omp teams 5052 #pragma omp distribute parallel for simd 5053 for (int i = 0; i < 10; ++i) { 5054 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5055 ++a; 5056 } 5057 #pragma omp target 5058 #pragma omp teams 5059 #pragma omp distribute parallel for simd 5060 for (int i = 0; i < 10; ++i) { 5061 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5062 for (int i = 0; i < 10; ++i) 5063 ; 5064 } 5065 #pragma omp target 5066 #pragma omp teams 5067 #pragma omp distribute parallel for simd 5068 for (int i = 0; i < 10; ++i) { 5069 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5070 ++a; 5071 } 5072 #pragma omp target 5073 #pragma omp teams 5074 #pragma omp distribute parallel for simd 5075 for (int i = 0; i < 10; ++i) { 5076 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5077 ++a; 5078 } 5079 #pragma omp target 5080 #pragma omp teams 5081 #pragma omp distribute parallel for simd 5082 for (int i = 0; i < 10; ++i) { 5083 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5084 ++a; 5085 } 5086 #pragma omp target 5087 #pragma omp teams 5088 #pragma omp distribute parallel for simd 5089 for (int i = 0; i < 10; ++i) { 5090 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5091 ++a; 5092 } 5093 #pragma omp target 5094 #pragma omp teams 5095 #pragma omp distribute parallel for simd 5096 for (int i = 0; i < 10; ++i) { 5097 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5098 for (int i = 0; i < 10; ++i) 5099 ++a; 5100 } 5101 #pragma omp target 5102 #pragma omp teams 5103 #pragma omp distribute parallel for simd 5104 for (int i = 0; i < 10; ++i) { 5105 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5106 for (int i = 0; i < 10; ++i) 5107 ++a; 5108 } 5109 #pragma omp target 5110 #pragma omp teams 5111 #pragma omp distribute parallel for simd 5112 for (int i = 0; i < 10; ++i) { 5113 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5114 for (int i = 0; i < 10; ++i) 5115 ++a; 5116 } 5117 #pragma omp target 5118 #pragma omp teams 5119 #pragma omp distribute parallel for simd 5120 for (int i = 0; i < 10; ++i) { 5121 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5122 for (int i = 0; i < 10; ++i) 5123 ++a; 5124 } 5125 5126 // TARGET SIMD DIRECTIVE 5127 #pragma omp target simd 5128 for (int i = 0; i < 10; ++i) { 5129 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5130 for (int i = 0; i < 10; ++i) 5131 ; 5132 } 5133 #pragma omp target simd 5134 for (int i = 0; i < 10; ++i) { 5135 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5136 for (int i = 0; i < 10; ++i) 5137 ; 5138 } 5139 #pragma omp target simd 5140 for (int i = 0; i < 10; ++i) { 5141 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5142 for (int i = 0; i < 10; ++i) 5143 ; 5144 } 5145 #pragma omp target simd 5146 for (int i = 0; i < 10; ++i) { 5147 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5148 for (int i = 0; i < 10; ++i) 5149 ; 5150 } 5151 #pragma omp target simd 5152 for (int i = 0; i < 10; ++i) { 5153 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5154 for (int i = 0; i < 10; ++i) 5155 ; 5156 } 5157 #pragma omp target simd 5158 for (int i = 0; i < 10; ++i) { 5159 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5160 for (int i = 0; i < 10; ++i) 5161 ; 5162 } 5163 #pragma omp target simd 5164 for (int i = 0; i < 10; ++i) { 5165 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5166 { 5167 bar(); 5168 } 5169 } 5170 #pragma omp target simd 5171 for (int i = 0; i < 10; ++i) { 5172 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5173 { 5174 bar(); 5175 } 5176 } 5177 #pragma omp target simd 5178 for (int i = 0; i < 10; ++i) { 5179 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5180 { 5181 bar(); 5182 } 5183 } 5184 #pragma omp target simd 5185 for (int i = 0; i < 10; ++i) { 5186 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5187 { 5188 bar(); 5189 } 5190 } 5191 #pragma omp target simd 5192 for (int i = 0; i < 10; ++i) { 5193 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5194 { 5195 bar(); 5196 } 5197 } 5198 #pragma omp target simd 5199 for (int i = 0; i < 10; ++i) { 5200 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5201 { 5202 #pragma omp single 5203 { 5204 bar(); 5205 } 5206 } 5207 } 5208 #pragma omp target simd 5209 for (int i = 0; i < 10; ++i) { 5210 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5211 for (int i = 0; i < 10; ++i) 5212 ; 5213 } 5214 #pragma omp target simd 5215 for (int i = 0; i < 10; ++i) { 5216 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5217 for (int i = 0; i < 10; ++i) 5218 ; 5219 } 5220 #pragma omp target simd 5221 for (int i = 0; i < 10; ++i) { 5222 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5223 { 5224 bar(); 5225 } 5226 } 5227 #pragma omp target simd 5228 for (int i = 0; i < 10; ++i) { 5229 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5230 { 5231 bar(); 5232 } 5233 } 5234 #pragma omp target simd 5235 for (int i = 0; i < 10; ++i) { 5236 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5237 bar(); 5238 } 5239 #pragma omp target simd 5240 for (int i = 0; i < 10; ++i) { 5241 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5242 bar(); 5243 } 5244 #pragma omp target simd 5245 for (int i = 0; i < 10; ++i) { 5246 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5247 bar(); 5248 } 5249 #pragma omp target simd 5250 for (int i = 0; i < 10; ++i) { 5251 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5252 bar(); 5253 } 5254 #pragma omp target simd 5255 for (int i = 0; i < 10; ++i) { 5256 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5257 bar(); 5258 } 5259 #pragma omp target simd 5260 for (int i = 0; i < 10; ++i) { 5261 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5262 ++a; 5263 } 5264 #pragma omp target simd 5265 for (int i = 0; i < 10; ++i) { 5266 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5267 ++a; 5268 } 5269 #pragma omp target simd 5270 for (int i = 0; i < 10; ++i) { 5271 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5272 ++a; 5273 } 5274 #pragma omp target simd 5275 for (int i = 0; i < 10; ++i) { 5276 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5277 for (int i = 0; i < 10; ++i) 5278 ; 5279 } 5280 #pragma omp target simd 5281 for (int i = 0; i < 10; ++i) { 5282 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5283 ++a; 5284 } 5285 #pragma omp target simd 5286 for (int i = 0; i < 10; ++i) { 5287 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5288 ++a; 5289 } 5290 #pragma omp target simd 5291 for (int i = 0; i < 10; ++i) { 5292 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5293 ++a; 5294 } 5295 #pragma omp target simd 5296 for (int i = 0; i < 10; ++i) { 5297 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5298 ++a; 5299 } 5300 #pragma omp target simd 5301 for (int i = 0; i < 10; ++i) { 5302 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5303 for (int i = 0; i < 10; ++i) 5304 ++a; 5305 } 5306 #pragma omp target simd 5307 for (int i = 0; i < 10; ++i) { 5308 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5309 for (int i = 0; i < 10; ++i) 5310 ++a; 5311 } 5312 #pragma omp target simd 5313 for (int i = 0; i < 10; ++i) { 5314 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5315 for (int i = 0; i < 10; ++i) 5316 ++a; 5317 } 5318 #pragma omp target simd 5319 for (int i = 0; i < 10; ++i) { 5320 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5321 for (int i = 0; i < 10; ++i) 5322 ++a; 5323 } 5324 5325 // TEAMS DISTRIBUTE DIRECTIVE 5326 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5327 for (int i = 0; i < 10; ++i) 5328 ; 5329 #pragma omp target 5330 #pragma omp teams distribute 5331 for (int i = 0; i < 10; ++i) { 5332 #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?}} 5333 for (int i = 0; i < 10; ++i) 5334 ; 5335 } 5336 #pragma omp target 5337 #pragma omp teams distribute 5338 for (int i = 0; i < 10; ++i) { 5339 #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?}} 5340 for (int i = 0; i < 10; ++i) 5341 ; 5342 } 5343 #pragma omp target 5344 #pragma omp teams distribute 5345 for (int i = 0; i < 10; ++i) { 5346 #pragma omp for // OK 5347 for (int i = 0; i < 10; ++i) 5348 ; 5349 } 5350 #pragma omp target 5351 #pragma omp teams distribute 5352 for (int i = 0; i < 10; ++i) { 5353 #pragma omp simd // OK 5354 for (int i = 0; i < 10; ++i) 5355 ; 5356 } 5357 #pragma omp target 5358 #pragma omp teams distribute 5359 for (int i = 0; i < 10; ++i) { 5360 #pragma omp for simd // OK 5361 for (int i = 0; i < 10; ++i) 5362 ; 5363 } 5364 #pragma omp target 5365 #pragma omp teams distribute 5366 for (int i = 0; i < 10; ++i) { 5367 #pragma omp parallel // OK 5368 for (int i = 0; i < 10; ++i) 5369 ; 5370 } 5371 #pragma omp target 5372 #pragma omp teams distribute 5373 for (int i = 0; i < 10; ++i) { 5374 #pragma omp sections // OK 5375 { 5376 bar(); 5377 } 5378 } 5379 #pragma omp target 5380 #pragma omp teams distribute 5381 for (int i = 0; i < 10; ++i) { 5382 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 5383 { 5384 bar(); 5385 } 5386 } 5387 #pragma omp target 5388 #pragma omp teams distribute 5389 for (int i = 0; i < 10; ++i) { 5390 #pragma omp single // OK 5391 { 5392 bar(); 5393 } 5394 } 5395 #pragma omp target 5396 #pragma omp teams distribute 5397 for (int i = 0; i < 10; ++i) { 5398 #pragma omp master // OK 5399 { 5400 bar(); 5401 } 5402 } 5403 #pragma omp target 5404 #pragma omp teams distribute 5405 for (int i = 0; i < 10; ++i) { 5406 #pragma omp critical // OK 5407 { 5408 bar(); 5409 } 5410 } 5411 #pragma omp target 5412 #pragma omp teams distribute 5413 for (int i = 0; i < 10; ++i) { 5414 #pragma omp parallel // OK 5415 { 5416 #pragma omp single 5417 { 5418 bar(); 5419 } 5420 } 5421 } 5422 #pragma omp target 5423 #pragma omp teams distribute 5424 for (int i = 0; i < 10; ++i) { 5425 #pragma omp parallel for // OK 5426 for (int i = 0; i < 10; ++i) 5427 ; 5428 } 5429 #pragma omp target 5430 #pragma omp teams distribute 5431 for (int i = 0; i < 10; ++i) { 5432 #pragma omp parallel for simd // OK 5433 for (int i = 0; i < 10; ++i) 5434 ; 5435 } 5436 #pragma omp target 5437 #pragma omp teams distribute 5438 for (int i = 0; i < 10; ++i) { 5439 #pragma omp parallel sections // OK 5440 { 5441 bar(); 5442 } 5443 } 5444 #pragma omp target 5445 #pragma omp teams distribute 5446 for (int i = 0; i < 10; ++i) { 5447 #pragma omp task // OK 5448 { 5449 bar(); 5450 } 5451 } 5452 #pragma omp target 5453 #pragma omp teams distribute 5454 for (int i = 0; i < 10; ++i) { 5455 #pragma omp taskyield // OK 5456 bar(); 5457 } 5458 #pragma omp target 5459 #pragma omp teams distribute 5460 for (int i = 0; i < 10; ++i) { 5461 #pragma omp barrier // OK 5462 bar(); 5463 } 5464 #pragma omp target 5465 #pragma omp teams distribute 5466 for (int i = 0; i < 10; ++i) { 5467 #pragma omp taskwait // OK 5468 bar(); 5469 } 5470 #pragma omp target 5471 #pragma omp teams distribute 5472 for (int i = 0; i < 10; ++i) { 5473 #pragma omp flush // OK 5474 bar(); 5475 } 5476 #pragma omp target 5477 #pragma omp teams distribute 5478 for (int i = 0; i < 10; ++i) { 5479 #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?}} 5480 bar(); 5481 } 5482 #pragma omp target 5483 #pragma omp teams distribute 5484 for (int i = 0; i < 10; ++i) { 5485 #pragma omp atomic // OK 5486 ++a; 5487 } 5488 #pragma omp target 5489 #pragma omp teams distribute 5490 for (int i = 0; i < 10; ++i) { 5491 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5492 ++a; 5493 } 5494 #pragma omp target 5495 #pragma omp teams distribute 5496 for (int i = 0; i < 10; ++i) { 5497 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5498 ++a; 5499 } 5500 #pragma omp target 5501 #pragma omp teams distribute 5502 for (int i = 0; i < 10; ++i) { 5503 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5504 for (int i = 0; i < 10; ++i) 5505 ; 5506 } 5507 #pragma omp target 5508 #pragma omp teams distribute 5509 for (int i = 0; i < 10; ++i) { 5510 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5511 ++a; 5512 } 5513 #pragma omp target 5514 #pragma omp teams distribute 5515 for (int i = 0; i < 10; ++i) { 5516 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5517 ++a; 5518 } 5519 #pragma omp target 5520 #pragma omp teams distribute 5521 for (int i = 0; i < 10; ++i) { 5522 #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?}} 5523 ++a; 5524 } 5525 #pragma omp target 5526 #pragma omp teams distribute 5527 for (int i = 0; i < 10; ++i) { 5528 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5529 ++a; 5530 } 5531 #pragma omp target 5532 #pragma omp teams distribute 5533 for (int i = 0; i < 10; ++i) { 5534 #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?}} 5535 for (int i = 0; i < 10; ++i) 5536 ++a; 5537 } 5538 #pragma omp target 5539 #pragma omp teams distribute 5540 for (int i = 0; i < 10; ++i) { 5541 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5542 for (int i = 0; i < 10; ++i) 5543 ++a; 5544 } 5545 #pragma omp target 5546 #pragma omp teams distribute 5547 for (int i = 0; i < 10; ++i) { 5548 #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?}} 5549 for (int i = 0; i < 10; ++i) 5550 ++a; 5551 } 5552 #pragma omp target 5553 #pragma omp teams distribute 5554 for (int i = 0; i < 10; ++i) { 5555 #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?}} 5556 for (int i = 0; i < 10; ++i) 5557 ++a; 5558 } 5559 5560 // TEAMS DISTRIBUTE DIRECTIVE 5561 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5562 for (int i = 0; i < 10; ++i) 5563 ; 5564 #pragma omp target 5565 #pragma omp teams distribute 5566 for (int i = 0; i < 10; ++i) { 5567 #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?}} 5568 for (int i = 0; i < 10; ++i) 5569 ; 5570 } 5571 #pragma omp target 5572 #pragma omp teams distribute 5573 for (int i = 0; i < 10; ++i) { 5574 #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?}} 5575 for (int i = 0; i < 10; ++i) 5576 ; 5577 } 5578 #pragma omp target 5579 #pragma omp teams distribute 5580 for (int i = 0; i < 10; ++i) { 5581 #pragma omp for // OK 5582 for (int i = 0; i < 10; ++i) 5583 ; 5584 } 5585 #pragma omp target 5586 #pragma omp teams distribute 5587 for (int i = 0; i < 10; ++i) { 5588 #pragma omp simd // OK 5589 for (int i = 0; i < 10; ++i) 5590 ; 5591 } 5592 #pragma omp target 5593 #pragma omp teams distribute 5594 for (int i = 0; i < 10; ++i) { 5595 #pragma omp for simd // OK 5596 for (int i = 0; i < 10; ++i) 5597 ; 5598 } 5599 #pragma omp target 5600 #pragma omp teams distribute 5601 for (int i = 0; i < 10; ++i) { 5602 #pragma omp parallel // OK 5603 for (int i = 0; i < 10; ++i) 5604 ; 5605 } 5606 #pragma omp target 5607 #pragma omp teams distribute 5608 for (int i = 0; i < 10; ++i) { 5609 #pragma omp sections // OK 5610 { 5611 bar(); 5612 } 5613 } 5614 #pragma omp target 5615 #pragma omp teams distribute 5616 for (int i = 0; i < 10; ++i) { 5617 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 5618 { 5619 bar(); 5620 } 5621 } 5622 #pragma omp target 5623 #pragma omp teams distribute 5624 for (int i = 0; i < 10; ++i) { 5625 #pragma omp single // OK 5626 { 5627 bar(); 5628 } 5629 } 5630 #pragma omp target 5631 #pragma omp teams distribute 5632 for (int i = 0; i < 10; ++i) { 5633 #pragma omp master // OK 5634 { 5635 bar(); 5636 } 5637 } 5638 #pragma omp target 5639 #pragma omp teams distribute 5640 for (int i = 0; i < 10; ++i) { 5641 #pragma omp critical // OK 5642 { 5643 bar(); 5644 } 5645 } 5646 #pragma omp target 5647 #pragma omp teams distribute 5648 for (int i = 0; i < 10; ++i) { 5649 #pragma omp parallel // OK 5650 { 5651 #pragma omp single 5652 { 5653 bar(); 5654 } 5655 } 5656 } 5657 #pragma omp target 5658 #pragma omp teams distribute 5659 for (int i = 0; i < 10; ++i) { 5660 #pragma omp parallel for // OK 5661 for (int i = 0; i < 10; ++i) 5662 ; 5663 } 5664 #pragma omp target 5665 #pragma omp teams distribute 5666 for (int i = 0; i < 10; ++i) { 5667 #pragma omp parallel for simd // OK 5668 for (int i = 0; i < 10; ++i) 5669 ; 5670 } 5671 #pragma omp target 5672 #pragma omp teams distribute 5673 for (int i = 0; i < 10; ++i) { 5674 #pragma omp parallel sections // OK 5675 { 5676 bar(); 5677 } 5678 } 5679 #pragma omp target 5680 #pragma omp teams distribute 5681 for (int i = 0; i < 10; ++i) { 5682 #pragma omp task // OK 5683 { 5684 bar(); 5685 } 5686 } 5687 #pragma omp target 5688 #pragma omp teams distribute 5689 for (int i = 0; i < 10; ++i) { 5690 #pragma omp taskyield // OK 5691 bar(); 5692 } 5693 #pragma omp target 5694 #pragma omp teams distribute 5695 for (int i = 0; i < 10; ++i) { 5696 #pragma omp barrier // OK 5697 bar(); 5698 } 5699 #pragma omp target 5700 #pragma omp teams distribute 5701 for (int i = 0; i < 10; ++i) { 5702 #pragma omp taskwait // OK 5703 bar(); 5704 } 5705 #pragma omp target 5706 #pragma omp teams distribute 5707 for (int i = 0; i < 10; ++i) { 5708 #pragma omp flush // OK 5709 bar(); 5710 } 5711 #pragma omp target 5712 #pragma omp teams distribute 5713 for (int i = 0; i < 10; ++i) { 5714 #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?}} 5715 bar(); 5716 } 5717 #pragma omp target 5718 #pragma omp teams distribute 5719 for (int i = 0; i < 10; ++i) { 5720 #pragma omp atomic // OK 5721 ++a; 5722 } 5723 #pragma omp target 5724 #pragma omp teams distribute 5725 for (int i = 0; i < 10; ++i) { 5726 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5727 ++a; 5728 } 5729 #pragma omp target 5730 #pragma omp teams distribute 5731 for (int i = 0; i < 10; ++i) { 5732 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5733 ++a; 5734 } 5735 #pragma omp target 5736 #pragma omp teams distribute 5737 for (int i = 0; i < 10; ++i) { 5738 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5739 for (int i = 0; i < 10; ++i) 5740 ; 5741 } 5742 #pragma omp target 5743 #pragma omp teams distribute 5744 for (int i = 0; i < 10; ++i) { 5745 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5746 ++a; 5747 } 5748 #pragma omp target 5749 #pragma omp teams distribute 5750 for (int i = 0; i < 10; ++i) { 5751 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5752 ++a; 5753 } 5754 #pragma omp target 5755 #pragma omp teams distribute 5756 for (int i = 0; i < 10; ++i) { 5757 #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?}} 5758 ++a; 5759 } 5760 #pragma omp target 5761 #pragma omp teams distribute 5762 for (int i = 0; i < 10; ++i) { 5763 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5764 ++a; 5765 } 5766 #pragma omp target 5767 #pragma omp teams distribute 5768 for (int i = 0; i < 10; ++i) { 5769 #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?}} 5770 for (int i = 0; i < 10; ++i) 5771 ++a; 5772 } 5773 #pragma omp target 5774 #pragma omp teams distribute 5775 for (int i = 0; i < 10; ++i) { 5776 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5777 for (int i = 0; i < 10; ++i) 5778 ++a; 5779 } 5780 #pragma omp target 5781 #pragma omp teams distribute 5782 for (int i = 0; i < 10; ++i) { 5783 #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?}} 5784 for (int i = 0; i < 10; ++i) 5785 ++a; 5786 } 5787 #pragma omp target 5788 #pragma omp teams distribute 5789 for (int i = 0; i < 10; ++i) { 5790 #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?}} 5791 for (int i = 0; i < 10; ++i) 5792 ++a; 5793 } 5794 5795 // TEAMS DISTRIBUTE SIMD DIRECTIVE 5796 #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?}} 5797 for (int i = 0; i < 10; ++i) 5798 ; 5799 #pragma omp target 5800 #pragma omp teams distribute simd 5801 for (int i = 0; i < 10; ++i) { 5802 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5803 for (int i = 0; i < 10; ++i) 5804 ; 5805 } 5806 #pragma omp target 5807 #pragma omp teams distribute simd 5808 for (int i = 0; i < 10; ++i) { 5809 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5810 for (int i = 0; i < 10; ++i) 5811 ; 5812 } 5813 #pragma omp target 5814 #pragma omp teams distribute simd 5815 for (int i = 0; i < 10; ++i) { 5816 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5817 for (int i = 0; i < 10; ++i) 5818 ; 5819 } 5820 #pragma omp target 5821 #pragma omp teams distribute simd 5822 for (int i = 0; i < 10; ++i) { 5823 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5824 for (int i = 0; i < 10; ++i) 5825 ; 5826 } 5827 #pragma omp target 5828 #pragma omp teams distribute simd 5829 for (int i = 0; i < 10; ++i) { 5830 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5831 for (int i = 0; i < 10; ++i) 5832 ; 5833 } 5834 #pragma omp target 5835 #pragma omp teams distribute simd 5836 for (int i = 0; i < 10; ++i) { 5837 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5838 for (int i = 0; i < 10; ++i) 5839 ; 5840 } 5841 #pragma omp target 5842 #pragma omp teams distribute simd 5843 for (int i = 0; i < 10; ++i) { 5844 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5845 { 5846 bar(); 5847 } 5848 } 5849 #pragma omp target 5850 #pragma omp teams distribute simd 5851 for (int i = 0; i < 10; ++i) { 5852 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5853 { 5854 bar(); 5855 } 5856 } 5857 #pragma omp target 5858 #pragma omp teams distribute simd 5859 for (int i = 0; i < 10; ++i) { 5860 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5861 { 5862 bar(); 5863 } 5864 } 5865 #pragma omp target 5866 #pragma omp teams distribute simd 5867 for (int i = 0; i < 10; ++i) { 5868 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5869 { 5870 bar(); 5871 } 5872 } 5873 #pragma omp target 5874 #pragma omp teams distribute simd 5875 for (int i = 0; i < 10; ++i) { 5876 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5877 { 5878 bar(); 5879 } 5880 } 5881 #pragma omp target 5882 #pragma omp teams distribute simd 5883 for (int i = 0; i < 10; ++i) { 5884 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5885 { 5886 #pragma omp single 5887 { 5888 bar(); 5889 } 5890 } 5891 } 5892 #pragma omp target 5893 #pragma omp teams distribute simd 5894 for (int i = 0; i < 10; ++i) { 5895 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5896 for (int i = 0; i < 10; ++i) 5897 ; 5898 } 5899 #pragma omp target 5900 #pragma omp teams distribute simd 5901 for (int i = 0; i < 10; ++i) { 5902 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5903 for (int i = 0; i < 10; ++i) 5904 ; 5905 } 5906 #pragma omp target 5907 #pragma omp teams distribute simd 5908 for (int i = 0; i < 10; ++i) { 5909 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5910 { 5911 bar(); 5912 } 5913 } 5914 #pragma omp target 5915 #pragma omp teams distribute simd 5916 for (int i = 0; i < 10; ++i) { 5917 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5918 { 5919 bar(); 5920 } 5921 } 5922 #pragma omp target 5923 #pragma omp teams distribute simd 5924 for (int i = 0; i < 10; ++i) { 5925 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5926 bar(); 5927 } 5928 #pragma omp target 5929 #pragma omp teams distribute simd 5930 for (int i = 0; i < 10; ++i) { 5931 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5932 bar(); 5933 } 5934 #pragma omp target 5935 #pragma omp teams distribute simd 5936 for (int i = 0; i < 10; ++i) { 5937 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5938 bar(); 5939 } 5940 #pragma omp target 5941 #pragma omp teams distribute simd 5942 for (int i = 0; i < 10; ++i) { 5943 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5944 bar(); 5945 } 5946 #pragma omp target 5947 #pragma omp teams distribute simd 5948 for (int i = 0; i < 10; ++i) { 5949 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5950 bar(); 5951 } 5952 #pragma omp target 5953 #pragma omp teams distribute simd 5954 for (int i = 0; i < 10; ++i) { 5955 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5956 ++a; 5957 } 5958 #pragma omp target 5959 #pragma omp teams distribute simd 5960 for (int i = 0; i < 10; ++i) { 5961 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5962 ++a; 5963 } 5964 #pragma omp target 5965 #pragma omp teams distribute simd 5966 for (int i = 0; i < 10; ++i) { 5967 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5968 ++a; 5969 } 5970 #pragma omp target 5971 #pragma omp teams distribute simd 5972 for (int i = 0; i < 10; ++i) { 5973 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5974 for (int i = 0; i < 10; ++i) 5975 ; 5976 } 5977 #pragma omp target 5978 #pragma omp teams distribute simd 5979 for (int i = 0; i < 10; ++i) { 5980 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5981 ++a; 5982 } 5983 #pragma omp target 5984 #pragma omp teams distribute simd 5985 for (int i = 0; i < 10; ++i) { 5986 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5987 ++a; 5988 } 5989 #pragma omp target 5990 #pragma omp teams distribute simd 5991 for (int i = 0; i < 10; ++i) { 5992 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5993 ++a; 5994 } 5995 #pragma omp target 5996 #pragma omp teams distribute simd 5997 for (int i = 0; i < 10; ++i) { 5998 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5999 ++a; 6000 } 6001 #pragma omp target 6002 #pragma omp teams distribute simd 6003 for (int i = 0; i < 10; ++i) { 6004 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6005 for (int i = 0; i < 10; ++i) 6006 ++a; 6007 } 6008 #pragma omp target 6009 #pragma omp teams distribute simd 6010 for (int i = 0; i < 10; ++i) { 6011 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6012 for (int i = 0; i < 10; ++i) 6013 ++a; 6014 } 6015 #pragma omp target 6016 #pragma omp teams distribute simd 6017 for (int i = 0; i < 10; ++i) { 6018 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6019 for (int i = 0; i < 10; ++i) 6020 ++a; 6021 } 6022 #pragma omp target 6023 #pragma omp teams distribute simd 6024 for (int i = 0; i < 10; ++i) { 6025 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6026 for (int i = 0; i < 10; ++i) 6027 ++a; 6028 } 6029 } 6030 6031 void foo() { 6032 int a = 0; 6033 // PARALLEL DIRECTIVE 6034 #pragma omp parallel 6035 #pragma omp for 6036 for (int i = 0; i < 10; ++i) 6037 ; 6038 #pragma omp parallel 6039 #pragma omp simd 6040 for (int i = 0; i < 10; ++i) 6041 ; 6042 #pragma omp parallel 6043 #pragma omp for simd 6044 for (int i = 0; i < 10; ++i) 6045 ; 6046 #pragma omp parallel 6047 #pragma omp sections 6048 { 6049 bar(); 6050 } 6051 #pragma omp parallel 6052 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 6053 { 6054 bar(); 6055 } 6056 #pragma omp parallel 6057 #pragma omp sections 6058 { 6059 bar(); 6060 } 6061 #pragma omp parallel 6062 #pragma omp single 6063 bar(); 6064 #pragma omp parallel 6065 #pragma omp master 6066 bar(); 6067 #pragma omp parallel 6068 #pragma omp critical 6069 bar(); 6070 #pragma omp parallel 6071 #pragma omp parallel for 6072 for (int i = 0; i < 10; ++i) 6073 ; 6074 #pragma omp parallel 6075 #pragma omp parallel for simd 6076 for (int i = 0; i < 10; ++i) 6077 ; 6078 #pragma omp parallel 6079 #pragma omp parallel sections 6080 { 6081 bar(); 6082 } 6083 #pragma omp parallel 6084 #pragma omp task 6085 { 6086 bar(); 6087 } 6088 #pragma omp parallel 6089 { 6090 #pragma omp taskyield 6091 bar(); 6092 } 6093 #pragma omp parallel 6094 { 6095 #pragma omp barrier 6096 bar(); 6097 } 6098 #pragma omp parallel 6099 { 6100 #pragma omp taskwait 6101 bar(); 6102 } 6103 #pragma omp parallel 6104 { 6105 #pragma omp flush 6106 bar(); 6107 } 6108 #pragma omp parallel 6109 { 6110 #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?}} 6111 bar(); 6112 } 6113 #pragma omp parallel 6114 { 6115 #pragma omp atomic 6116 ++a; 6117 } 6118 #pragma omp parallel 6119 { 6120 #pragma omp target 6121 ++a; 6122 } 6123 #pragma omp parallel 6124 { 6125 #pragma omp target parallel 6126 ++a; 6127 } 6128 #pragma omp parallel 6129 #pragma omp target parallel for 6130 for (int i = 0; i < 10; ++i) 6131 ; 6132 #pragma omp parallel 6133 { 6134 #pragma omp target enter data map(to: a) 6135 ++a; 6136 } 6137 #pragma omp parallel 6138 { 6139 #pragma omp target exit data map(from: a) 6140 ++a; 6141 } 6142 #pragma omp parallel 6143 { 6144 #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?}} 6145 ++a; 6146 } 6147 #pragma omp parallel 6148 { 6149 #pragma omp taskloop 6150 for (int i = 0; i < 10; ++i) 6151 ++a; 6152 } 6153 #pragma omp parallel 6154 { 6155 #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?}} 6156 for (int i = 0; i < 10; ++i) 6157 ; 6158 } 6159 #pragma omp parallel 6160 { 6161 #pragma omp target update to(a) 6162 a++; 6163 } 6164 #pragma omp parallel 6165 { 6166 #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?}} 6167 for (int i = 0; i < 10; ++i) 6168 ; 6169 } 6170 #pragma omp parallel 6171 { 6172 #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?}} 6173 for (int i = 0; i < 10; ++i) 6174 ; 6175 } 6176 #pragma omp parallel 6177 { 6178 #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?}} 6179 for (int i = 0; i < 10; ++i) 6180 ; 6181 } 6182 #pragma omp parallel 6183 { 6184 #pragma omp target simd // OK 6185 for (int i = 0; i < 10; ++i) 6186 ; 6187 } 6188 #pragma omp parallel 6189 { 6190 #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?}} 6191 for (int i = 0; i < 10; ++i) 6192 ; 6193 } 6194 #pragma omp parallel 6195 { 6196 #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?}} 6197 for (int i = 0; i < 10; ++i) 6198 ; 6199 } 6200 6201 // SIMD DIRECTIVE 6202 #pragma omp simd 6203 for (int i = 0; i < 10; ++i) { 6204 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6205 for (int i = 0; i < 10; ++i) 6206 ; 6207 } 6208 #pragma omp simd 6209 for (int i = 0; i < 10; ++i) { 6210 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6211 for (int i = 0; i < 10; ++i) 6212 ; 6213 } 6214 #pragma omp simd 6215 for (int i = 0; i < 10; ++i) { 6216 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6217 for (int i = 0; i < 10; ++i) 6218 ; 6219 } 6220 #pragma omp simd 6221 for (int i = 0; i < 10; ++i) { 6222 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6223 for (int i = 0; i < 10; ++i) 6224 ; 6225 } 6226 #pragma omp simd 6227 for (int i = 0; i < 10; ++i) { 6228 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6229 { 6230 bar(); 6231 } 6232 } 6233 #pragma omp simd 6234 for (int i = 0; i < 10; ++i) { 6235 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6236 { 6237 bar(); 6238 } 6239 } 6240 #pragma omp simd 6241 for (int i = 0; i < 10; ++i) { 6242 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6243 bar(); 6244 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6245 bar(); 6246 } 6247 #pragma omp simd 6248 for (int i = 0; i < 10; ++i) { 6249 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6250 bar(); 6251 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6252 bar(); 6253 } 6254 #pragma omp simd 6255 for (int i = 0; i < 10; ++i) { 6256 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6257 for (int i = 0; i < 10; ++i) 6258 ; 6259 } 6260 #pragma omp simd 6261 for (int i = 0; i < 10; ++i) { 6262 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6263 for (int i = 0; i < 10; ++i) 6264 ; 6265 } 6266 #pragma omp simd 6267 for (int i = 0; i < 10; ++i) { 6268 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6269 { 6270 bar(); 6271 } 6272 } 6273 #pragma omp simd 6274 for (int i = 0; i < 10; ++i) { 6275 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6276 { 6277 bar(); 6278 } 6279 } 6280 #pragma omp simd 6281 for (int i = 0; i < 10; ++i) { 6282 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6283 bar(); 6284 } 6285 #pragma omp simd 6286 for (int i = 0; i < 10; ++i) { 6287 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6288 bar(); 6289 } 6290 #pragma omp simd 6291 for (int i = 0; i < 10; ++i) { 6292 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6293 bar(); 6294 } 6295 #pragma omp simd 6296 for (int i = 0; i < 10; ++i) { 6297 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6298 bar(); 6299 } 6300 #pragma omp simd 6301 for (int i = 0; i < 10; ++i) { 6302 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6303 bar(); 6304 } 6305 #pragma omp simd 6306 for (int i = 0; i < 10; ++i) { 6307 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6308 ++a; 6309 } 6310 #pragma omp simd 6311 for (int i = 0; i < 10; ++i) { 6312 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6313 ++a; 6314 } 6315 #pragma omp simd 6316 for (int i = 0; i < 10; ++i) { 6317 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6318 ++a; 6319 } 6320 #pragma omp simd 6321 for (int i = 0; i < 10; ++i) { 6322 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6323 for (int i = 0; i < 10; ++i) 6324 ; 6325 } 6326 #pragma omp simd 6327 for (int i = 0; i < 10; ++i) { 6328 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6329 ++a; 6330 } 6331 #pragma omp simd 6332 for (int i = 0; i < 10; ++i) { 6333 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6334 ++a; 6335 } 6336 #pragma omp simd 6337 for (int i = 0; i < 10; ++i) { 6338 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6339 ++a; 6340 } 6341 #pragma omp simd 6342 for (int i = 0; i < 10; ++i) { 6343 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6344 for (int i = 0; i < 10; ++i) 6345 ++a; 6346 } 6347 #pragma omp simd 6348 for (int i = 0; i < 10; ++i) { 6349 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6350 for (int j = 0; j < 10; ++j) 6351 ; 6352 } 6353 #pragma omp simd 6354 for (int i = 0; i < 10; ++i) { 6355 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6356 a++; 6357 } 6358 #pragma omp simd 6359 for (int i = 0; i < 10; ++i) { 6360 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6361 for (int j = 0; j < 10; ++j) 6362 ; 6363 } 6364 #pragma omp simd 6365 for (int i = 0; i < 10; ++i) { 6366 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6367 for (int j = 0; j < 10; ++j) 6368 ; 6369 } 6370 #pragma omp simd 6371 for (int i = 0; i < 10; ++i) { 6372 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6373 for (int j = 0; j < 10; ++j) 6374 ; 6375 } 6376 #pragma omp simd 6377 for (int i = 0; i < 10; ++i) { 6378 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6379 for (int j = 0; j < 10; ++j) 6380 ; 6381 } 6382 #pragma omp simd 6383 for (int i = 0; i < 10; ++i) { 6384 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6385 for (int j = 0; j < 10; ++j) 6386 ; 6387 } 6388 #pragma omp simd 6389 for (int i = 0; i < 10; ++i) { 6390 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6391 for (int j = 0; j < 10; ++j) 6392 ; 6393 } 6394 6395 // FOR DIRECTIVE 6396 #pragma omp for 6397 for (int i = 0; i < 10; ++i) { 6398 #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?}} 6399 for (int i = 0; i < 10; ++i) 6400 ; 6401 } 6402 #pragma omp for 6403 for (int i = 0; i < 10; ++i) { 6404 #pragma omp simd 6405 for (int i = 0; i < 10; ++i) 6406 ; 6407 } 6408 #pragma omp for 6409 for (int i = 0; i < 10; ++i) { 6410 #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?}} 6411 for (int i = 0; i < 10; ++i) 6412 ; 6413 } 6414 #pragma omp for 6415 for (int i = 0; i < 10; ++i) { 6416 #pragma omp parallel 6417 for (int i = 0; i < 10; ++i) 6418 ; 6419 } 6420 #pragma omp for 6421 for (int i = 0; i < 10; ++i) { 6422 #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?}} 6423 { 6424 bar(); 6425 } 6426 } 6427 #pragma omp for 6428 for (int i = 0; i < 10; ++i) { 6429 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 6430 { 6431 bar(); 6432 } 6433 } 6434 #pragma omp for 6435 for (int i = 0; i < 10; ++i) { 6436 #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?}} 6437 bar(); 6438 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 6439 bar(); 6440 #pragma omp critical 6441 bar(); 6442 } 6443 #pragma omp for 6444 for (int i = 0; i < 10; ++i) { 6445 #pragma omp parallel 6446 { 6447 #pragma omp single // OK 6448 { 6449 bar(); 6450 } 6451 #pragma omp for // OK 6452 for (int i = 0; i < 10; ++i) 6453 ; 6454 #pragma omp for simd // OK 6455 for (int i = 0; i < 10; ++i) 6456 ; 6457 #pragma omp sections // OK 6458 { 6459 bar(); 6460 } 6461 } 6462 } 6463 #pragma omp for 6464 for (int i = 0; i < 10; ++i) { 6465 #pragma omp parallel for 6466 for (int i = 0; i < 10; ++i) 6467 ; 6468 } 6469 #pragma omp for 6470 for (int i = 0; i < 10; ++i) { 6471 #pragma omp parallel for simd 6472 for (int i = 0; i < 10; ++i) 6473 ; 6474 } 6475 #pragma omp for 6476 for (int i = 0; i < 10; ++i) { 6477 #pragma omp parallel sections 6478 { 6479 bar(); 6480 } 6481 } 6482 #pragma omp for 6483 for (int i = 0; i < 10; ++i) { 6484 #pragma omp task 6485 { 6486 bar(); 6487 } 6488 } 6489 #pragma omp for 6490 for (int i = 0; i < 10; ++i) { 6491 #pragma omp taskyield 6492 bar(); 6493 } 6494 #pragma omp for 6495 for (int i = 0; i < 10; ++i) { 6496 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 6497 bar(); 6498 } 6499 #pragma omp for 6500 for (int i = 0; i < 10; ++i) { 6501 #pragma omp taskwait 6502 bar(); 6503 } 6504 #pragma omp for 6505 for (int i = 0; i < 10; ++i) { 6506 #pragma omp flush 6507 bar(); 6508 } 6509 #pragma omp for 6510 for (int i = 0; i < 10; ++i) { 6511 #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?}} 6512 bar(); 6513 } 6514 #pragma omp for ordered 6515 for (int i = 0; i < 10; ++i) { 6516 #pragma omp ordered // OK 6517 bar(); 6518 } 6519 #pragma omp for 6520 for (int i = 0; i < 10; ++i) { 6521 #pragma omp atomic 6522 ++a; 6523 } 6524 #pragma omp for 6525 for (int i = 0; i < 10; ++i) { 6526 #pragma omp target 6527 ++a; 6528 } 6529 #pragma omp for 6530 for (int i = 0; i < 10; ++i) { 6531 #pragma omp target parallel 6532 ++a; 6533 } 6534 #pragma omp for 6535 for (int i = 0; i < 10; ++i) { 6536 #pragma omp target parallel for 6537 for (int i = 0; i < 10; ++i) 6538 ; 6539 } 6540 #pragma omp for 6541 for (int i = 0; i < 10; ++i) { 6542 #pragma omp target enter data map(to: a) 6543 ++a; 6544 } 6545 #pragma omp for 6546 for (int i = 0; i < 10; ++i) { 6547 #pragma omp target exit data map(from: a) 6548 ++a; 6549 } 6550 #pragma omp for 6551 for (int i = 0; i < 10; ++i) { 6552 #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?}} 6553 ++a; 6554 } 6555 #pragma omp for 6556 for (int i = 0; i < 10; ++i) { 6557 #pragma omp taskloop 6558 for (int i = 0; i < 10; ++i) 6559 ++a; 6560 } 6561 #pragma omp for 6562 for (int i = 0; i < 10; ++i) { 6563 #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?}} 6564 for (int j = 0; j < 10; ++j) 6565 ; 6566 } 6567 #pragma omp for 6568 for (int i = 0; i < 10; ++i) { 6569 #pragma omp target update to(a) 6570 ++a; 6571 } 6572 #pragma omp for 6573 for (int i = 0; i < 10; ++i) { 6574 #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?}} 6575 for (int j = 0; j < 10; ++j) 6576 ; 6577 } 6578 #pragma omp for 6579 for (int i = 0; i < 10; ++i) { 6580 #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?}} 6581 for (int j = 0; j < 10; ++j) 6582 ; 6583 } 6584 #pragma omp for 6585 for (int i = 0; i < 10; ++i) { 6586 #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?}} 6587 for (int j = 0; j < 10; ++j) 6588 ; 6589 } 6590 #pragma omp for 6591 for (int i = 0; i < 10; ++i) { 6592 #pragma omp target simd // OK 6593 for (int j = 0; j < 10; ++j) 6594 ; 6595 } 6596 #pragma omp for 6597 for (int i = 0; i < 10; ++i) { 6598 #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?}} 6599 for (int j = 0; j < 10; ++j) 6600 ; 6601 } 6602 #pragma omp for 6603 for (int i = 0; i < 10; ++i) { 6604 #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?}} 6605 for (int j = 0; j < 10; ++j) 6606 ; 6607 } 6608 6609 // FOR SIMD DIRECTIVE 6610 #pragma omp for simd 6611 for (int i = 0; i < 10; ++i) { 6612 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6613 for (int i = 0; i < 10; ++i) 6614 ; 6615 } 6616 #pragma omp for simd 6617 for (int i = 0; i < 10; ++i) { 6618 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6619 for (int i = 0; i < 10; ++i) 6620 ; 6621 } 6622 #pragma omp for simd 6623 for (int i = 0; i < 10; ++i) { 6624 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6625 for (int i = 0; i < 10; ++i) 6626 ; 6627 } 6628 #pragma omp for simd 6629 for (int i = 0; i < 10; ++i) { 6630 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6631 for (int i = 0; i < 10; ++i) 6632 ; 6633 } 6634 #pragma omp for simd 6635 for (int i = 0; i < 10; ++i) { 6636 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6637 { 6638 bar(); 6639 } 6640 } 6641 #pragma omp for simd 6642 for (int i = 0; i < 10; ++i) { 6643 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6644 { 6645 bar(); 6646 } 6647 } 6648 #pragma omp for simd 6649 for (int i = 0; i < 10; ++i) { 6650 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6651 bar(); 6652 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6653 bar(); 6654 } 6655 #pragma omp for simd 6656 for (int i = 0; i < 10; ++i) { 6657 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6658 bar(); 6659 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6660 bar(); 6661 } 6662 #pragma omp for simd 6663 for (int i = 0; i < 10; ++i) { 6664 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6665 for (int i = 0; i < 10; ++i) 6666 ; 6667 } 6668 #pragma omp for simd 6669 for (int i = 0; i < 10; ++i) { 6670 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6671 for (int i = 0; i < 10; ++i) 6672 ; 6673 } 6674 #pragma omp for simd 6675 for (int i = 0; i < 10; ++i) { 6676 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6677 { 6678 bar(); 6679 } 6680 } 6681 #pragma omp for simd 6682 for (int i = 0; i < 10; ++i) { 6683 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6684 { 6685 bar(); 6686 } 6687 } 6688 #pragma omp for simd 6689 for (int i = 0; i < 10; ++i) { 6690 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6691 bar(); 6692 } 6693 #pragma omp for simd 6694 for (int i = 0; i < 10; ++i) { 6695 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6696 bar(); 6697 } 6698 #pragma omp for simd 6699 for (int i = 0; i < 10; ++i) { 6700 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6701 bar(); 6702 } 6703 #pragma omp for simd 6704 for (int i = 0; i < 10; ++i) { 6705 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6706 bar(); 6707 } 6708 #pragma omp for simd 6709 for (int i = 0; i < 10; ++i) { 6710 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6711 bar(); 6712 } 6713 #pragma omp for simd 6714 for (int i = 0; i < 10; ++i) { 6715 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6716 ++a; 6717 } 6718 #pragma omp for simd 6719 for (int i = 0; i < 10; ++i) { 6720 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6721 ++a; 6722 } 6723 #pragma omp for simd 6724 for (int i = 0; i < 10; ++i) { 6725 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6726 ++a; 6727 } 6728 #pragma omp for simd 6729 for (int i = 0; i < 10; ++i) { 6730 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6731 for (int i = 0; i < 10; ++i) 6732 ; 6733 } 6734 #pragma omp for simd 6735 for (int i = 0; i < 10; ++i) { 6736 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6737 ++a; 6738 } 6739 #pragma omp for simd 6740 for (int i = 0; i < 10; ++i) { 6741 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6742 ++a; 6743 } 6744 #pragma omp for simd 6745 for (int i = 0; i < 10; ++i) { 6746 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6747 ++a; 6748 } 6749 #pragma omp for simd 6750 for (int i = 0; i < 10; ++i) { 6751 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6752 for (int i = 0; i < 10; ++i) 6753 ++a; 6754 } 6755 #pragma omp for simd 6756 for (int i = 0; i < 10; ++i) { 6757 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6758 for (int j = 0; j < 10; ++j) 6759 ; 6760 } 6761 #pragma omp for simd 6762 for (int i = 0; i < 10; ++i) { 6763 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6764 ++a; 6765 } 6766 #pragma omp for simd 6767 for (int i = 0; i < 10; ++i) { 6768 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6769 for (int j = 0; j < 10; ++j) 6770 ; 6771 } 6772 #pragma omp for simd 6773 for (int i = 0; i < 10; ++i) { 6774 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6775 for (int j = 0; j < 10; ++j) 6776 ; 6777 } 6778 #pragma omp for simd 6779 for (int i = 0; i < 10; ++i) { 6780 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6781 for (int j = 0; j < 10; ++j) 6782 ; 6783 } 6784 #pragma omp for simd 6785 for (int i = 0; i < 10; ++i) { 6786 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6787 for (int j = 0; j < 10; ++j) 6788 ; 6789 } 6790 #pragma omp for simd 6791 for (int i = 0; i < 10; ++i) { 6792 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6793 for (int j = 0; j < 10; ++j) 6794 ; 6795 } 6796 #pragma omp for simd 6797 for (int i = 0; i < 10; ++i) { 6798 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6799 for (int j = 0; j < 10; ++j) 6800 ; 6801 } 6802 6803 // SECTIONS DIRECTIVE 6804 #pragma omp sections 6805 { 6806 #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?}} 6807 for (int i = 0; i < 10; ++i) 6808 ; 6809 } 6810 #pragma omp sections 6811 { 6812 #pragma omp simd 6813 for (int i = 0; i < 10; ++i) 6814 ; 6815 } 6816 #pragma omp sections 6817 { 6818 #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?}} 6819 for (int i = 0; i < 10; ++i) 6820 ; 6821 } 6822 #pragma omp sections 6823 { 6824 #pragma omp parallel 6825 for (int i = 0; i < 10; ++i) 6826 ; 6827 } 6828 #pragma omp sections 6829 { 6830 #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?}} 6831 { 6832 bar(); 6833 } 6834 } 6835 #pragma omp sections 6836 { 6837 #pragma omp section 6838 { 6839 bar(); 6840 } 6841 } 6842 #pragma omp sections 6843 { 6844 #pragma omp critical 6845 bar(); 6846 #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?}} 6847 bar(); 6848 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 6849 bar(); 6850 } 6851 #pragma omp sections 6852 { 6853 #pragma omp parallel 6854 { 6855 #pragma omp single // OK 6856 { 6857 bar(); 6858 } 6859 #pragma omp for // OK 6860 for (int i = 0; i < 10; ++i) 6861 ; 6862 #pragma omp for simd // OK 6863 for (int i = 0; i < 10; ++i) 6864 ; 6865 #pragma omp sections // OK 6866 { 6867 bar(); 6868 } 6869 } 6870 } 6871 #pragma omp sections 6872 { 6873 #pragma omp parallel for 6874 for (int i = 0; i < 10; ++i) 6875 ; 6876 } 6877 #pragma omp sections 6878 { 6879 #pragma omp parallel for simd 6880 for (int i = 0; i < 10; ++i) 6881 ; 6882 } 6883 #pragma omp sections 6884 { 6885 #pragma omp parallel sections 6886 { 6887 bar(); 6888 } 6889 } 6890 #pragma omp sections 6891 { 6892 #pragma omp task 6893 { 6894 bar(); 6895 } 6896 } 6897 #pragma omp sections 6898 { 6899 #pragma omp taskyield 6900 } 6901 #pragma omp sections 6902 { 6903 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 6904 bar(); 6905 } 6906 #pragma omp sections 6907 { 6908 #pragma omp taskwait 6909 } 6910 #pragma omp sections 6911 { 6912 #pragma omp flush 6913 } 6914 #pragma omp sections 6915 { 6916 #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?}} 6917 bar(); 6918 } 6919 #pragma omp sections 6920 { 6921 #pragma omp atomic 6922 ++a; 6923 } 6924 #pragma omp sections 6925 { 6926 #pragma omp target 6927 ++a; 6928 } 6929 #pragma omp sections 6930 { 6931 #pragma omp target parallel 6932 ++a; 6933 } 6934 #pragma omp sections 6935 { 6936 #pragma omp target parallel for 6937 for (int i = 0; i < 10; ++i) 6938 ; 6939 } 6940 #pragma omp sections 6941 { 6942 #pragma omp target enter data map(to: a) 6943 } 6944 #pragma omp sections 6945 { 6946 #pragma omp target exit data map(from: a) 6947 } 6948 #pragma omp sections 6949 { 6950 #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?}} 6951 ++a; 6952 } 6953 #pragma omp sections 6954 { 6955 #pragma omp taskloop 6956 for (int i = 0; i < 10; ++i) 6957 ++a; 6958 } 6959 #pragma omp sections 6960 { 6961 #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?}} 6962 for (int i = 0; i < 10; ++i) 6963 ; 6964 } 6965 #pragma omp sections 6966 { 6967 #pragma omp target update to(a) 6968 } 6969 #pragma omp sections 6970 { 6971 #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?}} 6972 for (int i = 0; i < 10; ++i) 6973 ; 6974 } 6975 #pragma omp sections 6976 { 6977 #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?}} 6978 for (int i = 0; i < 10; ++i) 6979 ; 6980 } 6981 #pragma omp sections 6982 { 6983 #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?}} 6984 for (int i = 0; i < 10; ++i) 6985 ; 6986 } 6987 #pragma omp sections 6988 { 6989 #pragma omp target simd // OK 6990 for (int i = 0; i < 10; ++i) 6991 ; 6992 } 6993 #pragma omp sections 6994 { 6995 #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?}} 6996 for (int i = 0; i < 10; ++i) 6997 ; 6998 } 6999 #pragma omp sections 7000 { 7001 #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?}} 7002 for (int i = 0; i < 10; ++i) 7003 ; 7004 } 7005 7006 // SECTION DIRECTIVE 7007 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 7008 { 7009 bar(); 7010 } 7011 #pragma omp sections 7012 { 7013 #pragma omp section 7014 { 7015 #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?}} 7016 for (int i = 0; i < 10; ++i) 7017 ; 7018 } 7019 } 7020 #pragma omp sections 7021 { 7022 #pragma omp section 7023 { 7024 #pragma omp simd 7025 for (int i = 0; i < 10; ++i) 7026 ; 7027 } 7028 } 7029 #pragma omp sections 7030 { 7031 #pragma omp section 7032 { 7033 #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?}} 7034 for (int i = 0; i < 10; ++i) 7035 ; 7036 } 7037 } 7038 #pragma omp sections 7039 { 7040 #pragma omp section 7041 { 7042 #pragma omp parallel 7043 for (int i = 0; i < 10; ++i) 7044 ; 7045 } 7046 } 7047 #pragma omp sections 7048 { 7049 #pragma omp section 7050 { 7051 #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?}} 7052 { 7053 bar(); 7054 } 7055 } 7056 } 7057 #pragma omp sections 7058 { 7059 #pragma omp section 7060 { 7061 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 7062 { 7063 bar(); 7064 } 7065 } 7066 } 7067 #pragma omp sections 7068 { 7069 #pragma omp section 7070 { 7071 #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?}} 7072 bar(); 7073 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 7074 bar(); 7075 #pragma omp critical 7076 bar(); 7077 } 7078 } 7079 #pragma omp sections 7080 { 7081 #pragma omp section 7082 { 7083 #pragma omp parallel 7084 { 7085 #pragma omp single // OK 7086 { 7087 bar(); 7088 } 7089 #pragma omp for // OK 7090 for (int i = 0; i < 10; ++i) 7091 ; 7092 #pragma omp for simd // OK 7093 for (int i = 0; i < 10; ++i) 7094 ; 7095 #pragma omp sections // OK 7096 { 7097 bar(); 7098 } 7099 } 7100 } 7101 } 7102 #pragma omp sections 7103 { 7104 #pragma omp section 7105 { 7106 #pragma omp parallel for 7107 for (int i = 0; i < 10; ++i) 7108 ; 7109 } 7110 } 7111 #pragma omp sections 7112 { 7113 #pragma omp section 7114 { 7115 #pragma omp parallel for simd 7116 for (int i = 0; i < 10; ++i) 7117 ; 7118 } 7119 } 7120 #pragma omp sections 7121 { 7122 #pragma omp section 7123 { 7124 #pragma omp parallel sections 7125 { 7126 bar(); 7127 } 7128 } 7129 } 7130 #pragma omp sections 7131 { 7132 #pragma omp section 7133 { 7134 #pragma omp task 7135 { 7136 bar(); 7137 } 7138 } 7139 } 7140 #pragma omp sections 7141 { 7142 #pragma omp section 7143 { 7144 #pragma omp taskyield 7145 bar(); 7146 } 7147 } 7148 #pragma omp sections 7149 { 7150 #pragma omp section 7151 { 7152 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 7153 bar(); 7154 } 7155 } 7156 #pragma omp sections 7157 { 7158 #pragma omp section 7159 { 7160 #pragma omp taskwait 7161 bar(); 7162 } 7163 } 7164 #pragma omp sections 7165 { 7166 #pragma omp section 7167 { 7168 #pragma omp flush 7169 bar(); 7170 } 7171 } 7172 #pragma omp sections 7173 { 7174 #pragma omp section 7175 { 7176 #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?}} 7177 bar(); 7178 } 7179 } 7180 #pragma omp sections 7181 { 7182 #pragma omp section 7183 { 7184 #pragma omp atomic 7185 ++a; 7186 } 7187 } 7188 #pragma omp sections 7189 { 7190 #pragma omp section 7191 { 7192 #pragma omp target 7193 ++a; 7194 } 7195 } 7196 #pragma omp sections 7197 { 7198 #pragma omp section 7199 { 7200 #pragma omp target parallel 7201 ++a; 7202 } 7203 } 7204 #pragma omp sections 7205 { 7206 #pragma omp section 7207 { 7208 #pragma omp target parallel for 7209 for (int i = 0; i < 10; ++i) 7210 ; 7211 } 7212 } 7213 #pragma omp sections 7214 { 7215 #pragma omp section 7216 { 7217 #pragma omp target enter data map(to: a) 7218 ++a; 7219 } 7220 } 7221 #pragma omp sections 7222 { 7223 #pragma omp section 7224 { 7225 #pragma omp target exit data map(from: a) 7226 ++a; 7227 } 7228 } 7229 #pragma omp sections 7230 { 7231 #pragma omp section 7232 { 7233 #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?}} 7234 ++a; 7235 } 7236 } 7237 #pragma omp sections 7238 { 7239 #pragma omp section 7240 { 7241 #pragma omp taskloop 7242 for (int i = 0; i < 10; ++i) 7243 ++a; 7244 } 7245 } 7246 #pragma omp sections 7247 { 7248 #pragma omp section 7249 #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?}} 7250 for (int i = 0; i < 10; ++i) 7251 ; 7252 } 7253 #pragma omp sections 7254 { 7255 #pragma omp section 7256 { 7257 #pragma omp target update to(a) 7258 a++; 7259 } 7260 } 7261 #pragma omp sections 7262 { 7263 #pragma omp section 7264 #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?}} 7265 for (int i = 0; i < 10; ++i) 7266 ; 7267 } 7268 #pragma omp sections 7269 { 7270 #pragma omp section 7271 #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?}} 7272 for (int i = 0; i < 10; ++i) 7273 ; 7274 } 7275 #pragma omp sections 7276 { 7277 #pragma omp section 7278 #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?}} 7279 for (int i = 0; i < 10; ++i) 7280 ; 7281 } 7282 #pragma omp sections 7283 { 7284 #pragma omp section 7285 #pragma omp target simd // OK 7286 for (int i = 0; i < 10; ++i) 7287 ; 7288 } 7289 #pragma omp sections 7290 { 7291 #pragma omp section 7292 #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?}} 7293 for (int i = 0; i < 10; ++i) 7294 ; 7295 } 7296 #pragma omp sections 7297 { 7298 #pragma omp section 7299 #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?}} 7300 for (int i = 0; i < 10; ++i) 7301 ; 7302 } 7303 7304 // SINGLE DIRECTIVE 7305 #pragma omp single 7306 { 7307 #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?}} 7308 for (int i = 0; i < 10; ++i) 7309 ; 7310 } 7311 #pragma omp single 7312 { 7313 #pragma omp simd 7314 for (int i = 0; i < 10; ++i) 7315 ; 7316 } 7317 #pragma omp single 7318 { 7319 #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?}} 7320 for (int i = 0; i < 10; ++i) 7321 ; 7322 } 7323 #pragma omp single 7324 { 7325 #pragma omp parallel 7326 for (int i = 0; i < 10; ++i) 7327 ; 7328 } 7329 #pragma omp single 7330 { 7331 #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?}} 7332 { 7333 bar(); 7334 } 7335 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 7336 bar(); 7337 #pragma omp critical 7338 bar(); 7339 } 7340 #pragma omp single 7341 { 7342 #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?}} 7343 { 7344 bar(); 7345 } 7346 } 7347 #pragma omp single 7348 { 7349 #pragma omp parallel 7350 { 7351 #pragma omp single // OK 7352 { 7353 bar(); 7354 } 7355 #pragma omp for // OK 7356 for (int i = 0; i < 10; ++i) 7357 ; 7358 #pragma omp for simd // OK 7359 for (int i = 0; i < 10; ++i) 7360 ; 7361 #pragma omp sections // OK 7362 { 7363 bar(); 7364 } 7365 } 7366 } 7367 #pragma omp single 7368 { 7369 #pragma omp parallel for 7370 for (int i = 0; i < 10; ++i) 7371 ; 7372 } 7373 #pragma omp single 7374 { 7375 #pragma omp parallel for simd 7376 for (int i = 0; i < 10; ++i) 7377 ; 7378 } 7379 #pragma omp single 7380 { 7381 #pragma omp parallel sections 7382 { 7383 bar(); 7384 } 7385 } 7386 #pragma omp single 7387 { 7388 #pragma omp task 7389 { 7390 bar(); 7391 } 7392 } 7393 #pragma omp single 7394 { 7395 #pragma omp taskyield 7396 bar(); 7397 } 7398 #pragma omp single 7399 { 7400 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 7401 bar(); 7402 } 7403 #pragma omp single 7404 { 7405 #pragma omp taskwait 7406 bar(); 7407 } 7408 #pragma omp single 7409 { 7410 #pragma omp flush 7411 bar(); 7412 } 7413 #pragma omp single 7414 { 7415 #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?}} 7416 bar(); 7417 } 7418 #pragma omp single 7419 { 7420 #pragma omp atomic 7421 ++a; 7422 } 7423 #pragma omp single 7424 { 7425 #pragma omp target 7426 ++a; 7427 } 7428 #pragma omp single 7429 { 7430 #pragma omp target parallel 7431 ++a; 7432 } 7433 #pragma omp single 7434 { 7435 #pragma omp target parallel for 7436 for (int i = 0; i < 10; ++i) 7437 ; 7438 } 7439 #pragma omp single 7440 { 7441 #pragma omp target enter data map(to: a) 7442 ++a; 7443 } 7444 #pragma omp single 7445 { 7446 #pragma omp target exit data map(from: a) 7447 ++a; 7448 } 7449 #pragma omp single 7450 { 7451 #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?}} 7452 ++a; 7453 } 7454 #pragma omp single 7455 { 7456 #pragma omp taskloop 7457 for (int i = 0; i < 10; ++i) 7458 ++a; 7459 } 7460 #pragma omp single 7461 { 7462 #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?}} 7463 for (int i = 0; i < 10; ++i) 7464 ; 7465 } 7466 #pragma omp single 7467 { 7468 #pragma omp target update to(a) 7469 a++; 7470 } 7471 #pragma omp single 7472 { 7473 #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?}} 7474 for (int i = 0; i < 10; ++i) 7475 ; 7476 } 7477 #pragma omp single 7478 { 7479 #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?}} 7480 for (int i = 0; i < 10; ++i) 7481 ; 7482 } 7483 #pragma omp single 7484 { 7485 #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?}} 7486 for (int i = 0; i < 10; ++i) 7487 ; 7488 } 7489 #pragma omp single 7490 { 7491 #pragma omp target simd // OK 7492 for (int i = 0; i < 10; ++i) 7493 ; 7494 } 7495 #pragma omp single 7496 { 7497 #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?}} 7498 for (int i = 0; i < 10; ++i) 7499 ; 7500 } 7501 #pragma omp single 7502 { 7503 #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?}} 7504 for (int i = 0; i < 10; ++i) 7505 ; 7506 } 7507 7508 // MASTER DIRECTIVE 7509 #pragma omp master 7510 { 7511 #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?}} 7512 for (int i = 0; i < 10; ++i) 7513 ; 7514 } 7515 #pragma omp master 7516 { 7517 #pragma omp simd 7518 for (int i = 0; i < 10; ++i) 7519 ; 7520 } 7521 #pragma omp master 7522 { 7523 #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?}} 7524 for (int i = 0; i < 10; ++i) 7525 ; 7526 } 7527 #pragma omp master 7528 { 7529 #pragma omp parallel 7530 for (int i = 0; i < 10; ++i) 7531 ; 7532 } 7533 #pragma omp master 7534 { 7535 #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?}} 7536 { 7537 bar(); 7538 } 7539 } 7540 #pragma omp master 7541 { 7542 #pragma omp master // OK, though second 'master' is redundant 7543 { 7544 bar(); 7545 } 7546 } 7547 #pragma omp master 7548 { 7549 #pragma omp critical 7550 { 7551 bar(); 7552 } 7553 } 7554 #pragma omp master 7555 { 7556 #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?}} 7557 { 7558 bar(); 7559 } 7560 } 7561 #pragma omp master 7562 { 7563 #pragma omp parallel 7564 { 7565 #pragma omp master // OK 7566 { 7567 bar(); 7568 } 7569 #pragma omp for // OK 7570 for (int i = 0; i < 10; ++i) 7571 ; 7572 #pragma omp for simd // OK 7573 for (int i = 0; i < 10; ++i) 7574 ; 7575 #pragma omp sections // OK 7576 { 7577 bar(); 7578 } 7579 } 7580 } 7581 #pragma omp master 7582 { 7583 #pragma omp parallel for 7584 for (int i = 0; i < 10; ++i) 7585 ; 7586 } 7587 #pragma omp master 7588 { 7589 #pragma omp parallel for simd 7590 for (int i = 0; i < 10; ++i) 7591 ; 7592 } 7593 #pragma omp master 7594 { 7595 #pragma omp parallel sections 7596 { 7597 bar(); 7598 } 7599 } 7600 #pragma omp master 7601 { 7602 #pragma omp task 7603 { 7604 bar(); 7605 } 7606 } 7607 #pragma omp master 7608 { 7609 #pragma omp taskyield 7610 bar(); 7611 } 7612 #pragma omp master 7613 { 7614 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 7615 bar(); 7616 } 7617 #pragma omp master 7618 { 7619 #pragma omp taskwait 7620 bar(); 7621 } 7622 #pragma omp master 7623 { 7624 #pragma omp flush 7625 bar(); 7626 } 7627 #pragma omp master 7628 { 7629 #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?}} 7630 bar(); 7631 } 7632 #pragma omp master 7633 { 7634 #pragma omp atomic 7635 ++a; 7636 } 7637 #pragma omp master 7638 { 7639 #pragma omp target 7640 ++a; 7641 } 7642 #pragma omp master 7643 { 7644 #pragma omp target parallel 7645 ++a; 7646 } 7647 #pragma omp master 7648 { 7649 #pragma omp target parallel for 7650 for (int i = 0; i < 10; ++i) 7651 ; 7652 } 7653 #pragma omp master 7654 { 7655 #pragma omp target enter data map(to: a) 7656 ++a; 7657 } 7658 #pragma omp master 7659 { 7660 #pragma omp target exit data map(from: a) 7661 ++a; 7662 } 7663 #pragma omp master 7664 { 7665 #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?}} 7666 ++a; 7667 } 7668 #pragma omp master 7669 { 7670 #pragma omp taskloop 7671 for (int i = 0; i < 10; ++i) 7672 ++a; 7673 } 7674 #pragma omp master 7675 { 7676 #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?}} 7677 for (int i = 0; i < 10; ++i) 7678 ; 7679 } 7680 #pragma omp master 7681 { 7682 #pragma omp target update to(a) 7683 ++a; 7684 } 7685 #pragma omp master 7686 { 7687 #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?}} 7688 for (int i = 0; i < 10; ++i) 7689 ; 7690 } 7691 #pragma omp master 7692 { 7693 #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?}} 7694 for (int i = 0; i < 10; ++i) 7695 ; 7696 } 7697 #pragma omp master 7698 { 7699 #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?}} 7700 for (int i = 0; i < 10; ++i) 7701 ; 7702 } 7703 #pragma omp master 7704 { 7705 #pragma omp target simd // OK 7706 for (int i = 0; i < 10; ++i) 7707 ; 7708 } 7709 #pragma omp master 7710 { 7711 #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?}} 7712 for (int i = 0; i < 10; ++i) 7713 ; 7714 } 7715 #pragma omp master 7716 { 7717 #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?}} 7718 for (int i = 0; i < 10; ++i) 7719 ; 7720 } 7721 7722 // CRITICAL DIRECTIVE 7723 #pragma omp critical 7724 { 7725 #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?}} 7726 for (int i = 0; i < 10; ++i) 7727 ; 7728 } 7729 #pragma omp critical 7730 { 7731 #pragma omp simd 7732 for (int i = 0; i < 10; ++i) 7733 ; 7734 } 7735 #pragma omp critical 7736 { 7737 #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?}} 7738 for (int i = 0; i < 10; ++i) 7739 ; 7740 } 7741 #pragma omp critical 7742 { 7743 #pragma omp parallel 7744 for (int i = 0; i < 10; ++i) 7745 ; 7746 } 7747 #pragma omp critical 7748 { 7749 #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?}} 7750 { 7751 bar(); 7752 } 7753 } 7754 #pragma omp critical 7755 { 7756 #pragma omp master // OK, though second 'master' is redundant 7757 { 7758 bar(); 7759 } 7760 } 7761 #pragma omp critical 7762 { 7763 #pragma omp critical 7764 { 7765 bar(); 7766 } 7767 } 7768 #pragma omp critical 7769 { 7770 #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?}} 7771 { 7772 bar(); 7773 } 7774 } 7775 #pragma omp critical 7776 { 7777 #pragma omp parallel 7778 { 7779 #pragma omp master // OK 7780 { 7781 bar(); 7782 } 7783 #pragma omp for // OK 7784 for (int i = 0; i < 10; ++i) 7785 ; 7786 #pragma omp for simd // OK 7787 for (int i = 0; i < 10; ++i) 7788 ; 7789 #pragma omp sections // OK 7790 { 7791 bar(); 7792 } 7793 } 7794 } 7795 #pragma omp critical 7796 { 7797 #pragma omp parallel for 7798 for (int i = 0; i < 10; ++i) 7799 ; 7800 } 7801 #pragma omp critical 7802 { 7803 #pragma omp parallel for simd 7804 for (int i = 0; i < 10; ++i) 7805 ; 7806 } 7807 #pragma omp critical 7808 { 7809 #pragma omp parallel sections 7810 { 7811 bar(); 7812 } 7813 } 7814 #pragma omp critical 7815 { 7816 #pragma omp task 7817 { 7818 bar(); 7819 } 7820 } 7821 #pragma omp critical 7822 { 7823 #pragma omp taskyield 7824 bar(); 7825 } 7826 #pragma omp critical 7827 { 7828 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 7829 bar(); 7830 } 7831 #pragma omp critical 7832 { 7833 #pragma omp taskwait 7834 bar(); 7835 } 7836 #pragma omp critical(Belka) 7837 { 7838 #pragma omp critical(Strelka) 7839 bar(); 7840 } 7841 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 7842 { 7843 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 7844 { 7845 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 7846 { 7847 #pragma omp parallel 7848 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 7849 { 7850 bar(); 7851 } 7852 } 7853 } 7854 } 7855 #pragma omp critical 7856 { 7857 #pragma omp flush 7858 bar(); 7859 } 7860 #pragma omp critical 7861 { 7862 #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?}} 7863 bar(); 7864 } 7865 #pragma omp critical 7866 { 7867 #pragma omp atomic 7868 ++a; 7869 } 7870 #pragma omp critical 7871 { 7872 #pragma omp target 7873 ++a; 7874 } 7875 #pragma omp critical 7876 { 7877 #pragma omp target parallel 7878 ++a; 7879 } 7880 #pragma omp critical 7881 { 7882 #pragma omp target parallel for 7883 for (int i = 0; i < 10; ++i) 7884 ; 7885 } 7886 #pragma omp critical 7887 { 7888 #pragma omp target enter data map(to: a) 7889 ++a; 7890 } 7891 #pragma omp critical 7892 { 7893 #pragma omp target exit data map(from: a) 7894 ++a; 7895 } 7896 #pragma omp critical 7897 { 7898 #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?}} 7899 ++a; 7900 } 7901 #pragma omp critical 7902 { 7903 #pragma omp taskloop 7904 for (int i = 0; i < 10; ++i) 7905 ++a; 7906 } 7907 #pragma omp critical 7908 { 7909 #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?}} 7910 for (int i = 0; i < 10; ++i) 7911 ; 7912 } 7913 #pragma omp critical 7914 { 7915 #pragma omp target update to(a) 7916 a++; 7917 } 7918 #pragma omp critical 7919 { 7920 #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?}} 7921 for (int i = 0; i < 10; ++i) 7922 ; 7923 } 7924 #pragma omp critical 7925 { 7926 #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?}} 7927 for (int i = 0; i < 10; ++i) 7928 ; 7929 } 7930 #pragma omp critical 7931 { 7932 #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?}} 7933 for (int i = 0; i < 10; ++i) 7934 ; 7935 } 7936 #pragma omp critical 7937 { 7938 #pragma omp target simd // OK 7939 for (int i = 0; i < 10; ++i) 7940 ; 7941 } 7942 #pragma omp critical 7943 { 7944 #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?}} 7945 for (int i = 0; i < 10; ++i) 7946 ; 7947 } 7948 #pragma omp critical 7949 { 7950 #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?}} 7951 for (int i = 0; i < 10; ++i) 7952 ; 7953 } 7954 7955 // PARALLEL FOR DIRECTIVE 7956 #pragma omp parallel for 7957 for (int i = 0; i < 10; ++i) { 7958 #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?}} 7959 for (int i = 0; i < 10; ++i) 7960 ; 7961 } 7962 #pragma omp parallel for 7963 for (int i = 0; i < 10; ++i) { 7964 #pragma omp simd 7965 for (int i = 0; i < 10; ++i) 7966 ; 7967 } 7968 #pragma omp parallel for 7969 for (int i = 0; i < 10; ++i) { 7970 #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?}} 7971 for (int i = 0; i < 10; ++i) 7972 ; 7973 } 7974 7975 #pragma omp parallel for 7976 for (int i = 0; i < 10; ++i) { 7977 #pragma omp parallel 7978 for (int i = 0; i < 10; ++i) 7979 ; 7980 } 7981 #pragma omp parallel for 7982 for (int i = 0; i < 10; ++i) { 7983 #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?}} 7984 { 7985 bar(); 7986 } 7987 } 7988 #pragma omp parallel for 7989 for (int i = 0; i < 10; ++i) { 7990 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 7991 { 7992 bar(); 7993 } 7994 } 7995 #pragma omp parallel for 7996 for (int i = 0; i < 10; ++i) { 7997 #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?}} 7998 { 7999 bar(); 8000 } 8001 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 8002 { 8003 bar(); 8004 } 8005 #pragma omp critical 8006 { 8007 bar(); 8008 } 8009 } 8010 #pragma omp parallel for 8011 for (int i = 0; i < 10; ++i) { 8012 #pragma omp parallel 8013 { 8014 #pragma omp single // OK 8015 { 8016 bar(); 8017 } 8018 #pragma omp master // OK 8019 { 8020 bar(); 8021 } 8022 #pragma omp critical // OK 8023 { 8024 bar(); 8025 } 8026 #pragma omp for // OK 8027 for (int i = 0; i < 10; ++i) 8028 ; 8029 #pragma omp for simd // OK 8030 for (int i = 0; i < 10; ++i) 8031 ; 8032 #pragma omp sections // OK 8033 { 8034 bar(); 8035 } 8036 } 8037 } 8038 #pragma omp parallel for 8039 for (int i = 0; i < 10; ++i) { 8040 #pragma omp parallel for 8041 for (int i = 0; i < 10; ++i) 8042 ; 8043 } 8044 #pragma omp parallel for 8045 for (int i = 0; i < 10; ++i) { 8046 #pragma omp parallel for simd 8047 for (int i = 0; i < 10; ++i) 8048 ; 8049 } 8050 #pragma omp parallel for 8051 for (int i = 0; i < 10; ++i) { 8052 #pragma omp parallel sections 8053 { 8054 bar(); 8055 } 8056 } 8057 #pragma omp parallel for 8058 for (int i = 0; i < 10; ++i) { 8059 #pragma omp task 8060 { 8061 bar(); 8062 } 8063 } 8064 #pragma omp parallel for 8065 for (int i = 0; i < 10; ++i) { 8066 #pragma omp taskyield 8067 bar(); 8068 } 8069 #pragma omp parallel for 8070 for (int i = 0; i < 10; ++i) { 8071 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 8072 bar(); 8073 } 8074 #pragma omp parallel for 8075 for (int i = 0; i < 10; ++i) { 8076 #pragma omp taskwait 8077 bar(); 8078 } 8079 #pragma omp parallel for 8080 for (int i = 0; i < 10; ++i) { 8081 #pragma omp flush 8082 bar(); 8083 } 8084 #pragma omp parallel for 8085 for (int i = 0; i < 10; ++i) { 8086 #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?}} 8087 bar(); 8088 } 8089 #pragma omp parallel for ordered 8090 for (int i = 0; i < 10; ++i) { 8091 #pragma omp ordered // OK 8092 bar(); 8093 } 8094 #pragma omp parallel for 8095 for (int i = 0; i < 10; ++i) { 8096 #pragma omp atomic 8097 ++a; 8098 } 8099 #pragma omp parallel for 8100 for (int i = 0; i < 10; ++i) { 8101 #pragma omp target 8102 ++a; 8103 } 8104 #pragma omp parallel for 8105 for (int i = 0; i < 10; ++i) { 8106 #pragma omp target parallel 8107 ++a; 8108 } 8109 #pragma omp parallel for 8110 for (int i = 0; i < 10; ++i) { 8111 #pragma omp target parallel for 8112 for (int i = 0; i < 10; ++i) 8113 ; 8114 } 8115 #pragma omp parallel for 8116 for (int i = 0; i < 10; ++i) { 8117 #pragma omp target enter data map(to: a) 8118 ++a; 8119 } 8120 #pragma omp parallel for 8121 for (int i = 0; i < 10; ++i) { 8122 #pragma omp target exit data map(from: a) 8123 ++a; 8124 } 8125 #pragma omp parallel for 8126 for (int i = 0; i < 10; ++i) { 8127 #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?}} 8128 ++a; 8129 } 8130 #pragma omp parallel for 8131 for (int i = 0; i < 10; ++i) { 8132 #pragma omp taskloop 8133 for (int i = 0; i < 10; ++i) 8134 ++a; 8135 } 8136 #pragma omp parallel for 8137 for (int i = 0; i < 10; ++i) { 8138 #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?}} 8139 for (int j = 0; j < 10; ++j) 8140 ; 8141 } 8142 #pragma omp parallel for 8143 for (int i = 0; i < 10; ++i) { 8144 #pragma omp target update to(a) 8145 a++; 8146 } 8147 #pragma omp parallel for 8148 for (int i = 0; i < 10; ++i) { 8149 #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?}} 8150 for (int j = 0; j < 10; ++j) 8151 ; 8152 } 8153 #pragma omp parallel for 8154 for (int i = 0; i < 10; ++i) { 8155 #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?}} 8156 for (int j = 0; j < 10; ++j) 8157 ; 8158 } 8159 #pragma omp parallel for 8160 for (int i = 0; i < 10; ++i) { 8161 #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?}} 8162 for (int j = 0; j < 10; ++j) 8163 ; 8164 } 8165 #pragma omp parallel for 8166 for (int i = 0; i < 10; ++i) { 8167 #pragma omp target simd // OK 8168 for (int j = 0; j < 10; ++j) 8169 ; 8170 } 8171 #pragma omp parallel for 8172 for (int i = 0; i < 10; ++i) { 8173 #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?}} 8174 for (int j = 0; j < 10; ++j) 8175 ; 8176 } 8177 #pragma omp parallel for 8178 for (int i = 0; i < 10; ++i) { 8179 #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?}} 8180 for (int j = 0; j < 10; ++j) 8181 ; 8182 } 8183 8184 // PARALLEL FOR SIMD DIRECTIVE 8185 #pragma omp parallel for simd 8186 for (int i = 0; i < 10; ++i) { 8187 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8188 for (int i = 0; i < 10; ++i) 8189 ; 8190 } 8191 #pragma omp parallel for simd 8192 for (int i = 0; i < 10; ++i) { 8193 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 8194 for (int i = 0; i < 10; ++i) 8195 ; 8196 } 8197 #pragma omp parallel for simd 8198 for (int i = 0; i < 10; ++i) { 8199 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8200 for (int i = 0; i < 10; ++i) 8201 ; 8202 } 8203 #pragma omp parallel for simd 8204 for (int i = 0; i < 10; ++i) { 8205 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8206 for (int i = 0; i < 10; ++i) 8207 ; 8208 } 8209 #pragma omp parallel for simd 8210 for (int i = 0; i < 10; ++i) { 8211 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8212 { 8213 bar(); 8214 } 8215 } 8216 #pragma omp parallel for simd 8217 for (int i = 0; i < 10; ++i) { 8218 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8219 { 8220 bar(); 8221 } 8222 } 8223 #pragma omp parallel for simd 8224 for (int i = 0; i < 10; ++i) { 8225 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8226 { 8227 bar(); 8228 } 8229 } 8230 8231 #pragma omp parallel for simd 8232 for (int i = 0; i < 10; ++i) { 8233 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8234 { 8235 bar(); 8236 } 8237 } 8238 8239 #pragma omp parallel for simd 8240 for (int i = 0; i < 10; ++i) { 8241 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8242 { 8243 bar(); 8244 } 8245 } 8246 8247 #pragma omp parallel for simd 8248 for (int i = 0; i < 10; ++i) { 8249 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8250 { 8251 #pragma omp single 8252 { 8253 bar(); 8254 } 8255 #pragma omp for 8256 for (int i = 0; i < 10; ++i) 8257 ; 8258 #pragma omp for simd 8259 for (int i = 0; i < 10; ++i) 8260 ; 8261 #pragma omp sections 8262 { 8263 bar(); 8264 } 8265 } 8266 } 8267 #pragma omp parallel for simd 8268 for (int i = 0; i < 10; ++i) { 8269 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8270 for (int i = 0; i < 10; ++i) 8271 ; 8272 } 8273 #pragma omp parallel for simd 8274 for (int i = 0; i < 10; ++i) { 8275 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 8276 for (int i = 0; i < 10; ++i) 8277 ; 8278 } 8279 #pragma omp parallel for simd 8280 for (int i = 0; i < 10; ++i) { 8281 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8282 { 8283 bar(); 8284 } 8285 } 8286 #pragma omp parallel for simd 8287 for (int i = 0; i < 10; ++i) { 8288 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8289 { 8290 bar(); 8291 } 8292 } 8293 #pragma omp parallel for simd 8294 for (int i = 0; i < 10; ++i) { 8295 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8296 bar(); 8297 } 8298 #pragma omp parallel for simd 8299 for (int i = 0; i < 10; ++i) { 8300 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8301 bar(); 8302 } 8303 #pragma omp parallel for simd 8304 for (int i = 0; i < 10; ++i) { 8305 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8306 bar(); 8307 } 8308 #pragma omp parallel for simd 8309 for (int i = 0; i < 10; ++i) { 8310 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8311 bar(); 8312 } 8313 #pragma omp parallel for simd 8314 for (int i = 0; i < 10; ++i) { 8315 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8316 bar(); 8317 } 8318 #pragma omp parallel for simd 8319 for (int i = 0; i < 10; ++i) { 8320 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8321 bar(); 8322 } 8323 #pragma omp parallel for simd 8324 for (int i = 0; i < 10; ++i) { 8325 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8326 ++a; 8327 } 8328 #pragma omp parallel for simd 8329 for (int i = 0; i < 10; ++i) { 8330 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8331 ++a; 8332 } 8333 #pragma omp parallel for simd 8334 for (int i = 0; i < 10; ++i) { 8335 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8336 ++a; 8337 } 8338 #pragma omp parallel for simd 8339 for (int i = 0; i < 10; ++i) { 8340 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8341 for (int i = 0; i < 10; ++i) 8342 ; 8343 } 8344 #pragma omp parallel for simd 8345 for (int i = 0; i < 10; ++i) { 8346 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8347 ++a; 8348 } 8349 #pragma omp parallel for simd 8350 for (int i = 0; i < 10; ++i) { 8351 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8352 ++a; 8353 } 8354 #pragma omp parallel for simd 8355 for (int i = 0; i < 10; ++i) { 8356 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8357 ++a; 8358 } 8359 #pragma omp parallel for simd 8360 for (int i = 0; i < 10; ++i) { 8361 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8362 for (int i = 0; i < 10; ++i) 8363 ++a; 8364 } 8365 #pragma omp parallel for simd 8366 for (int i = 0; i < 10; ++i) { 8367 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8368 for (int j = 0; j < 10; ++j) 8369 ; 8370 } 8371 #pragma omp parallel for simd 8372 for (int i = 0; i < 10; ++i) { 8373 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8374 a++; 8375 } 8376 #pragma omp parallel for simd 8377 for (int i = 0; i < 10; ++i) { 8378 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8379 for (int j = 0; j < 10; ++j) 8380 ; 8381 } 8382 #pragma omp parallel for simd 8383 for (int i = 0; i < 10; ++i) { 8384 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8385 for (int j = 0; j < 10; ++j) 8386 ; 8387 } 8388 #pragma omp parallel for simd 8389 for (int i = 0; i < 10; ++i) { 8390 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8391 for (int j = 0; j < 10; ++j) 8392 ; 8393 } 8394 #pragma omp parallel for simd 8395 for (int i = 0; i < 10; ++i) { 8396 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8397 for (int j = 0; j < 10; ++j) 8398 ; 8399 } 8400 #pragma omp parallel for simd 8401 for (int i = 0; i < 10; ++i) { 8402 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8403 for (int j = 0; j < 10; ++j) 8404 ; 8405 } 8406 #pragma omp parallel for simd 8407 for (int i = 0; i < 10; ++i) { 8408 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8409 for (int j = 0; j < 10; ++j) 8410 ; 8411 } 8412 8413 // PARALLEL SECTIONS DIRECTIVE 8414 #pragma omp parallel sections 8415 { 8416 #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?}} 8417 for (int i = 0; i < 10; ++i) 8418 ; 8419 } 8420 #pragma omp parallel sections 8421 { 8422 #pragma omp simd 8423 for (int i = 0; i < 10; ++i) 8424 ; 8425 } 8426 #pragma omp parallel sections 8427 { 8428 #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?}} 8429 for (int i = 0; i < 10; ++i) 8430 ; 8431 } 8432 #pragma omp parallel sections 8433 { 8434 #pragma omp parallel 8435 for (int i = 0; i < 10; ++i) 8436 ; 8437 } 8438 #pragma omp parallel sections 8439 { 8440 #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?}} 8441 { 8442 bar(); 8443 } 8444 } 8445 #pragma omp parallel sections 8446 { 8447 #pragma omp section 8448 { 8449 bar(); 8450 } 8451 } 8452 #pragma omp parallel sections 8453 { 8454 #pragma omp section 8455 { 8456 #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?}} 8457 bar(); 8458 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 8459 bar(); 8460 #pragma omp critical 8461 bar(); 8462 } 8463 } 8464 #pragma omp parallel sections 8465 { 8466 #pragma omp parallel 8467 { 8468 #pragma omp single // OK 8469 { 8470 bar(); 8471 } 8472 #pragma omp master // OK 8473 { 8474 bar(); 8475 } 8476 #pragma omp critical // OK 8477 { 8478 bar(); 8479 } 8480 #pragma omp for // OK 8481 for (int i = 0; i < 10; ++i) 8482 ; 8483 #pragma omp for simd // OK 8484 for (int i = 0; i < 10; ++i) 8485 ; 8486 #pragma omp sections // OK 8487 { 8488 bar(); 8489 } 8490 } 8491 } 8492 #pragma omp parallel sections 8493 { 8494 #pragma omp parallel for 8495 for (int i = 0; i < 10; ++i) 8496 ; 8497 } 8498 #pragma omp parallel sections 8499 { 8500 #pragma omp parallel for simd 8501 for (int i = 0; i < 10; ++i) 8502 ; 8503 } 8504 #pragma omp parallel sections 8505 { 8506 #pragma omp parallel sections 8507 { 8508 bar(); 8509 } 8510 } 8511 #pragma omp parallel sections 8512 { 8513 #pragma omp task 8514 { 8515 bar(); 8516 } 8517 } 8518 #pragma omp parallel sections 8519 { 8520 #pragma omp taskyield 8521 } 8522 #pragma omp parallel sections 8523 { 8524 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 8525 } 8526 #pragma omp parallel sections 8527 { 8528 #pragma omp taskwait 8529 } 8530 #pragma omp parallel sections 8531 { 8532 #pragma omp flush 8533 } 8534 #pragma omp parallel sections 8535 { 8536 #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?}} 8537 bar(); 8538 } 8539 #pragma omp parallel sections 8540 { 8541 #pragma omp atomic 8542 ++a; 8543 } 8544 #pragma omp parallel sections 8545 { 8546 #pragma omp target 8547 ++a; 8548 } 8549 #pragma omp parallel sections 8550 { 8551 #pragma omp target parallel 8552 ++a; 8553 } 8554 #pragma omp parallel sections 8555 { 8556 #pragma omp target parallel for 8557 for (int i = 0; i < 10; ++i) 8558 ; 8559 } 8560 #pragma omp parallel sections 8561 { 8562 #pragma omp target enter data map(to: a) 8563 } 8564 #pragma omp parallel sections 8565 { 8566 #pragma omp target exit data map(from: a) 8567 } 8568 #pragma omp parallel sections 8569 { 8570 #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?}} 8571 ++a; 8572 } 8573 #pragma omp parallel sections 8574 { 8575 #pragma omp taskloop 8576 for (int i = 0; i < 10; ++i) 8577 ++a; 8578 } 8579 #pragma omp parallel sections 8580 { 8581 #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?}} 8582 for (int i = 0; i < 10; ++i) 8583 ; 8584 } 8585 #pragma omp parallel sections 8586 { 8587 #pragma omp target update to(a) 8588 } 8589 #pragma omp parallel sections 8590 { 8591 #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?}} 8592 for (int i = 0; i < 10; ++i) 8593 ; 8594 } 8595 #pragma omp parallel sections 8596 { 8597 #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?}} 8598 for (int i = 0; i < 10; ++i) 8599 ; 8600 } 8601 #pragma omp parallel sections 8602 { 8603 #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?}} 8604 for (int i = 0; i < 10; ++i) 8605 ; 8606 } 8607 #pragma omp parallel sections 8608 { 8609 #pragma omp target simd // OK 8610 for (int i = 0; i < 10; ++i) 8611 ; 8612 } 8613 #pragma omp parallel sections 8614 { 8615 #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?}} 8616 for (int i = 0; i < 10; ++i) 8617 ; 8618 } 8619 #pragma omp parallel sections 8620 { 8621 #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?}} 8622 for (int i = 0; i < 10; ++i) 8623 ; 8624 } 8625 8626 // TASK DIRECTIVE 8627 #pragma omp task 8628 #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?}} 8629 for (int i = 0; i < 10; ++i) 8630 ; 8631 #pragma omp task 8632 #pragma omp simd 8633 for (int i = 0; i < 10; ++i) 8634 ; 8635 #pragma omp task 8636 #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?}} 8637 for (int i = 0; i < 10; ++i) 8638 ; 8639 #pragma omp task 8640 #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?}} 8641 { 8642 bar(); 8643 } 8644 #pragma omp task 8645 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 8646 { 8647 bar(); 8648 } 8649 #pragma omp task 8650 #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?}} 8651 bar(); 8652 #pragma omp task 8653 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 8654 bar(); 8655 #pragma omp task 8656 #pragma omp critical 8657 bar(); 8658 #pragma omp task 8659 #pragma omp parallel for 8660 for (int i = 0; i < 10; ++i) 8661 ; 8662 #pragma omp task 8663 #pragma omp parallel for simd 8664 for (int i = 0; i < 10; ++i) 8665 ; 8666 #pragma omp task 8667 #pragma omp parallel sections 8668 { 8669 bar(); 8670 } 8671 #pragma omp task 8672 #pragma omp task 8673 { 8674 bar(); 8675 } 8676 #pragma omp task 8677 { 8678 #pragma omp taskyield 8679 bar(); 8680 } 8681 #pragma omp task 8682 { 8683 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 8684 bar(); 8685 } 8686 #pragma omp task 8687 { 8688 #pragma omp taskwait 8689 bar(); 8690 } 8691 #pragma omp task 8692 { 8693 #pragma omp flush 8694 bar(); 8695 } 8696 #pragma omp task 8697 { 8698 #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?}} 8699 bar(); 8700 } 8701 #pragma omp task 8702 { 8703 #pragma omp atomic 8704 ++a; 8705 } 8706 #pragma omp task 8707 { 8708 #pragma omp target 8709 ++a; 8710 } 8711 #pragma omp task 8712 { 8713 #pragma omp target parallel 8714 ++a; 8715 } 8716 #pragma omp task 8717 #pragma omp target parallel for 8718 for (int i = 0; i < 10; ++i) 8719 ; 8720 #pragma omp task 8721 { 8722 #pragma omp target enter data map(to: a) 8723 ++a; 8724 } 8725 #pragma omp task 8726 { 8727 #pragma omp target exit data map(from: a) 8728 ++a; 8729 } 8730 #pragma omp task 8731 { 8732 #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?}} 8733 ++a; 8734 } 8735 #pragma omp task 8736 { 8737 #pragma omp taskloop 8738 for (int i = 0; i < 10; ++i) 8739 ++a; 8740 } 8741 #pragma omp task 8742 { 8743 #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?}} 8744 for (int i = 0; i < 10; ++i) 8745 ; 8746 } 8747 #pragma omp task 8748 { 8749 #pragma omp target update to(a) 8750 a++; 8751 } 8752 #pragma omp task 8753 { 8754 #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?}} 8755 for (int i = 0; i < 10; ++i) 8756 ; 8757 } 8758 #pragma omp task 8759 { 8760 #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?}} 8761 for (int i = 0; i < 10; ++i) 8762 ; 8763 } 8764 #pragma omp task 8765 { 8766 #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?}} 8767 for (int i = 0; i < 10; ++i) 8768 ; 8769 } 8770 #pragma omp task 8771 { 8772 #pragma omp target simd // OK 8773 for (int i = 0; i < 10; ++i) 8774 ; 8775 } 8776 #pragma omp task 8777 { 8778 #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?}} 8779 for (int i = 0; i < 10; ++i) 8780 ; 8781 } 8782 #pragma omp task 8783 { 8784 #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?}} 8785 for (int i = 0; i < 10; ++i) 8786 ; 8787 } 8788 8789 // ATOMIC DIRECTIVE 8790 #pragma omp atomic 8791 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8792 // expected-note@+1 {{expected an expression statement}} 8793 { 8794 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8795 for (int i = 0; i < 10; ++i) 8796 ; 8797 } 8798 #pragma omp atomic 8799 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8800 // expected-note@+1 {{expected an expression statement}} 8801 { 8802 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8803 for (int i = 0; i < 10; ++i) 8804 ; 8805 } 8806 #pragma omp atomic 8807 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8808 // expected-note@+1 {{expected an expression statement}} 8809 { 8810 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8811 for (int i = 0; i < 10; ++i) 8812 ; 8813 } 8814 #pragma omp atomic 8815 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8816 // expected-note@+1 {{expected an expression statement}} 8817 { 8818 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8819 for (int i = 0; i < 10; ++i) 8820 ; 8821 } 8822 #pragma omp atomic 8823 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8824 // expected-note@+1 {{expected an expression statement}} 8825 { 8826 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8827 { 8828 bar(); 8829 } 8830 } 8831 #pragma omp atomic 8832 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8833 // expected-note@+1 {{expected an expression statement}} 8834 { 8835 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8836 { 8837 bar(); 8838 } 8839 } 8840 #pragma omp atomic 8841 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8842 // expected-note@+1 {{expected an expression statement}} 8843 { 8844 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8845 { 8846 bar(); 8847 } 8848 } 8849 #pragma omp atomic 8850 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8851 // expected-note@+1 {{expected an expression statement}} 8852 { 8853 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8854 { 8855 bar(); 8856 } 8857 } 8858 #pragma omp atomic 8859 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8860 // expected-note@+1 {{expected an expression statement}} 8861 { 8862 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8863 { 8864 bar(); 8865 } 8866 } 8867 #pragma omp atomic 8868 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8869 // expected-note@+1 {{expected an expression statement}} 8870 { 8871 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8872 for (int i = 0; i < 10; ++i) 8873 ; 8874 } 8875 #pragma omp atomic 8876 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8877 // expected-note@+1 {{expected an expression statement}} 8878 { 8879 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8880 for (int i = 0; i < 10; ++i) 8881 ; 8882 } 8883 #pragma omp atomic 8884 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8885 // expected-note@+1 {{expected an expression statement}} 8886 { 8887 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8888 { 8889 bar(); 8890 } 8891 } 8892 #pragma omp atomic 8893 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8894 // expected-note@+1 {{expected an expression statement}} 8895 { 8896 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8897 { 8898 bar(); 8899 } 8900 } 8901 #pragma omp atomic 8902 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8903 // expected-note@+1 {{expected an expression statement}} 8904 { 8905 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8906 bar(); 8907 } 8908 #pragma omp atomic 8909 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8910 // expected-note@+1 {{expected an expression statement}} 8911 { 8912 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8913 bar(); 8914 } 8915 #pragma omp atomic 8916 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8917 // expected-note@+1 {{expected an expression statement}} 8918 { 8919 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8920 bar(); 8921 } 8922 #pragma omp atomic 8923 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8924 // expected-note@+1 {{expected an expression statement}} 8925 { 8926 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8927 bar(); 8928 } 8929 #pragma omp atomic 8930 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8931 // expected-note@+1 {{expected an expression statement}} 8932 { 8933 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8934 bar(); 8935 } 8936 #pragma omp atomic 8937 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8938 // expected-note@+1 {{expected an expression statement}} 8939 { 8940 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8941 ++a; 8942 } 8943 #pragma omp atomic 8944 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8945 // expected-note@+1 {{expected an expression statement}} 8946 { 8947 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8948 ++a; 8949 } 8950 #pragma omp atomic 8951 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8952 // expected-note@+1 {{expected an expression statement}} 8953 { 8954 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8955 ++a; 8956 } 8957 #pragma omp atomic 8958 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8959 // expected-note@+1 {{expected an expression statement}} 8960 { 8961 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8962 for (int i = 0; i < 10; ++i) 8963 ; 8964 } 8965 #pragma omp atomic 8966 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8967 // expected-note@+1 {{expected an expression statement}} 8968 { 8969 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8970 ++a; 8971 } 8972 #pragma omp atomic 8973 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8974 // expected-note@+1 {{expected an expression statement}} 8975 { 8976 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8977 ++a; 8978 } 8979 #pragma omp atomic 8980 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8981 // expected-note@+1 {{expected an expression statement}} 8982 { 8983 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8984 ++a; 8985 } 8986 #pragma omp atomic 8987 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8988 // expected-note@+1 {{expected an expression statement}} 8989 { 8990 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8991 for (int i = 0; i < 10; ++i) 8992 ++a; 8993 } 8994 #pragma omp atomic 8995 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 8996 // expected-note@+1 {{expected an expression statement}} 8997 { 8998 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 8999 for (int i = 0; i < 10; ++i) 9000 ; 9001 } 9002 #pragma omp atomic 9003 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9004 // expected-note@+1 {{expected an expression statement}} 9005 { 9006 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9007 } 9008 #pragma omp atomic 9009 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9010 // expected-note@+1 {{expected an expression statement}} 9011 { 9012 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9013 for (int i = 0; i < 10; ++i) 9014 ; 9015 } 9016 #pragma omp atomic 9017 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9018 // expected-note@+1 {{expected an expression statement}} 9019 { 9020 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9021 for (int i = 0; i < 10; ++i) 9022 ; 9023 } 9024 #pragma omp atomic 9025 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9026 // expected-note@+1 {{expected an expression statement}} 9027 { 9028 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9029 for (int i = 0; i < 10; ++i) 9030 ; 9031 } 9032 #pragma omp atomic 9033 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9034 // expected-note@+1 {{expected an expression statement}} 9035 { 9036 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9037 for (int i = 0; i < 10; ++i) 9038 ; 9039 } 9040 #pragma omp atomic 9041 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9042 // expected-note@+1 {{expected an expression statement}} 9043 { 9044 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9045 for (int i = 0; i < 10; ++i) 9046 ; 9047 } 9048 #pragma omp atomic 9049 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9050 // expected-note@+1 {{expected an expression statement}} 9051 { 9052 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9053 for (int i = 0; i < 10; ++i) 9054 ; 9055 } 9056 9057 // TARGET DIRECTIVE 9058 #pragma omp target 9059 #pragma omp parallel 9060 bar(); 9061 #pragma omp target 9062 #pragma omp for 9063 for (int i = 0; i < 10; ++i) 9064 ; 9065 #pragma omp target 9066 #pragma omp simd 9067 for (int i = 0; i < 10; ++i) 9068 ; 9069 #pragma omp target 9070 #pragma omp for simd 9071 for (int i = 0; i < 10; ++i) 9072 ; 9073 #pragma omp target 9074 #pragma omp sections 9075 { 9076 bar(); 9077 } 9078 #pragma omp target 9079 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 9080 { 9081 bar(); 9082 } 9083 #pragma omp target 9084 #pragma omp single 9085 bar(); 9086 9087 #pragma omp target 9088 #pragma omp master 9089 { 9090 bar(); 9091 } 9092 #pragma omp target 9093 #pragma omp critical 9094 { 9095 bar(); 9096 } 9097 #pragma omp target 9098 #pragma omp parallel for 9099 for (int i = 0; i < 10; ++i) 9100 ; 9101 #pragma omp target 9102 #pragma omp parallel for simd 9103 for (int i = 0; i < 10; ++i) 9104 ; 9105 #pragma omp target 9106 #pragma omp parallel sections 9107 { 9108 bar(); 9109 } 9110 #pragma omp target 9111 #pragma omp task 9112 { 9113 bar(); 9114 } 9115 #pragma omp target 9116 { 9117 #pragma omp taskyield 9118 bar(); 9119 } 9120 #pragma omp target 9121 { 9122 #pragma omp barrier 9123 bar(); 9124 } 9125 #pragma omp target 9126 { 9127 #pragma omp taskwait 9128 bar(); 9129 } 9130 #pragma omp target 9131 { 9132 #pragma omp flush 9133 bar(); 9134 } 9135 #pragma omp target 9136 { 9137 #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?}} 9138 bar(); 9139 } 9140 #pragma omp target 9141 { 9142 #pragma omp atomic 9143 ++a; 9144 } 9145 #pragma omp target 9146 { 9147 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 9148 ++a; 9149 } 9150 #pragma omp target 9151 { 9152 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 9153 ++a; 9154 } 9155 #pragma omp target 9156 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 9157 for (int i = 0; i < 10; ++i) 9158 ; 9159 #pragma omp target 9160 { 9161 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 9162 } 9163 #pragma omp target 9164 { 9165 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 9166 } 9167 #pragma omp target 9168 { 9169 #pragma omp teams 9170 ++a; 9171 } 9172 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 9173 { 9174 ++a; // expected-note {{statement outside teams construct here}} 9175 #pragma omp teams // expected-note {{nested teams construct here}} 9176 ++a; 9177 } 9178 #pragma omp target 9179 { 9180 #pragma omp taskloop 9181 for (int i = 0; i < 10; ++i) 9182 ++a; 9183 } 9184 #pragma omp target 9185 { 9186 #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?}} 9187 for (int i = 0; i < 10; ++i) 9188 ; 9189 } 9190 #pragma omp atomic 9191 // expected-error@+2 {{the statement for 'atomic' must be an 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}} 9192 // expected-note@+1 {{expected an expression statement}} 9193 { 9194 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9195 a++; 9196 } 9197 #pragma omp target 9198 { 9199 #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?}} 9200 for (int i = 0; i < 10; ++i) 9201 ; 9202 } 9203 #pragma omp target 9204 { 9205 #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?}} 9206 for (int i = 0; i < 10; ++i) 9207 ; 9208 } 9209 #pragma omp target 9210 { 9211 #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?}} 9212 for (int i = 0; i < 10; ++i) 9213 ; 9214 } 9215 #pragma omp target 9216 { 9217 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 9218 for (int i = 0; i < 10; ++i) 9219 ; 9220 } 9221 #pragma omp target 9222 { 9223 #pragma omp teams distribute // OK 9224 for (int i = 0; i < 10; ++i) 9225 ; 9226 } 9227 #pragma omp target 9228 { 9229 #pragma omp teams distribute simd // OK 9230 for (int i = 0; i < 10; ++i) 9231 ; 9232 } 9233 9234 // TARGET PARALLEL DIRECTIVE 9235 #pragma omp target parallel 9236 #pragma omp parallel 9237 bar(); 9238 #pragma omp target parallel 9239 #pragma omp for 9240 for (int i = 0; i < 10; ++i) 9241 ; 9242 #pragma omp target parallel 9243 #pragma omp simd 9244 for (int i = 0; i < 10; ++i) 9245 ; 9246 #pragma omp target parallel 9247 #pragma omp for simd 9248 for (int i = 0; i < 10; ++i) 9249 ; 9250 #pragma omp target parallel 9251 #pragma omp sections 9252 { 9253 bar(); 9254 } 9255 #pragma omp target parallel 9256 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 9257 { 9258 bar(); 9259 } 9260 #pragma omp target parallel 9261 #pragma omp single 9262 bar(); 9263 9264 #pragma omp target parallel 9265 #pragma omp master 9266 { 9267 bar(); 9268 } 9269 #pragma omp target parallel 9270 #pragma omp critical 9271 { 9272 bar(); 9273 } 9274 #pragma omp target parallel 9275 #pragma omp parallel for 9276 for (int i = 0; i < 10; ++i) 9277 ; 9278 #pragma omp target parallel 9279 #pragma omp parallel for simd 9280 for (int i = 0; i < 10; ++i) 9281 ; 9282 #pragma omp target parallel 9283 #pragma omp parallel sections 9284 { 9285 bar(); 9286 } 9287 #pragma omp target parallel 9288 #pragma omp task 9289 { 9290 bar(); 9291 } 9292 #pragma omp target parallel 9293 { 9294 #pragma omp taskyield 9295 bar(); 9296 } 9297 #pragma omp target parallel 9298 { 9299 #pragma omp barrier 9300 bar(); 9301 } 9302 #pragma omp target parallel 9303 { 9304 #pragma omp taskwait 9305 bar(); 9306 } 9307 #pragma omp target parallel 9308 { 9309 #pragma omp flush 9310 bar(); 9311 } 9312 #pragma omp target parallel 9313 { 9314 #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?}} 9315 bar(); 9316 } 9317 #pragma omp target parallel 9318 { 9319 #pragma omp atomic 9320 ++a; 9321 } 9322 #pragma omp target parallel 9323 { 9324 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 9325 ++a; 9326 } 9327 #pragma omp target parallel 9328 { 9329 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 9330 ++a; 9331 } 9332 #pragma omp target parallel 9333 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 9334 for (int i = 0; i < 10; ++i) 9335 ; 9336 #pragma omp target parallel 9337 { 9338 #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?}} 9339 ++a; 9340 } 9341 #pragma omp target parallel 9342 { 9343 ++a; 9344 #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?}} 9345 ++a; 9346 } 9347 #pragma omp target parallel 9348 { 9349 #pragma omp taskloop 9350 for (int i = 0; i < 10; ++i) 9351 ++a; 9352 } 9353 #pragma omp target parallel 9354 { 9355 #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?}} 9356 for (int i = 0; i < 10; ++i) 9357 ; 9358 } 9359 #pragma omp target parallel 9360 { 9361 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 9362 } 9363 #pragma omp target parallel 9364 { 9365 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 9366 } 9367 #pragma omp target parallel 9368 { 9369 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 9370 } 9371 #pragma omp target parallel 9372 { 9373 #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?}} 9374 for (int i = 0; i < 10; ++i) 9375 ; 9376 } 9377 #pragma omp target parallel 9378 { 9379 #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?}} 9380 for (int i = 0; i < 10; ++i) 9381 ; 9382 } 9383 #pragma omp target parallel 9384 { 9385 #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?}} 9386 for (int i = 0; i < 10; ++i) 9387 ; 9388 } 9389 #pragma omp target parallel 9390 { 9391 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 9392 for (int i = 0; i < 10; ++i) 9393 ; 9394 } 9395 #pragma omp target parallel 9396 { 9397 #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?}} 9398 for (int i = 0; i < 10; ++i) 9399 ; 9400 } 9401 #pragma omp target parallel 9402 { 9403 #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?}} 9404 for (int i = 0; i < 10; ++i) 9405 ; 9406 } 9407 9408 // TARGET PARALLEL FOR DIRECTIVE 9409 #pragma omp target parallel for 9410 for (int i = 0; i < 10; ++i) { 9411 #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?}} 9412 for (int i = 0; i < 10; ++i) 9413 ; 9414 } 9415 #pragma omp target parallel for 9416 for (int i = 0; i < 10; ++i) { 9417 #pragma omp simd 9418 for (int i = 0; i < 10; ++i) 9419 ; 9420 } 9421 #pragma omp target parallel for 9422 for (int i = 0; i < 10; ++i) { 9423 #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?}} 9424 for (int i = 0; i < 10; ++i) 9425 ; 9426 } 9427 #pragma omp target parallel for 9428 for (int i = 0; i < 10; ++i) { 9429 #pragma omp parallel 9430 for (int i = 0; i < 10; ++i) 9431 ; 9432 } 9433 #pragma omp target parallel for 9434 for (int i = 0; i < 10; ++i) { 9435 #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?}} 9436 { 9437 bar(); 9438 } 9439 } 9440 #pragma omp target parallel for 9441 for (int i = 0; i < 10; ++i) { 9442 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 9443 { 9444 bar(); 9445 } 9446 } 9447 #pragma omp target parallel for 9448 for (int i = 0; i < 10; ++i) { 9449 #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?}} 9450 { 9451 bar(); 9452 } 9453 } 9454 9455 #pragma omp target parallel for 9456 for (int i = 0; i < 10; ++i) { 9457 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 9458 { 9459 bar(); 9460 } 9461 } 9462 9463 #pragma omp target parallel for 9464 for (int i = 0; i < 10; ++i) { 9465 #pragma omp critical 9466 { 9467 bar(); 9468 } 9469 } 9470 9471 #pragma omp target parallel for 9472 for (int i = 0; i < 10; ++i) { 9473 #pragma omp parallel 9474 { 9475 #pragma omp single // OK 9476 { 9477 bar(); 9478 } 9479 #pragma omp for // OK 9480 for (int i = 0; i < 10; ++i) 9481 ; 9482 #pragma omp for simd // OK 9483 for (int i = 0; i < 10; ++i) 9484 ; 9485 #pragma omp sections // OK 9486 { 9487 bar(); 9488 } 9489 } 9490 } 9491 #pragma omp target parallel for 9492 for (int i = 0; i < 10; ++i) { 9493 #pragma omp parallel for 9494 for (int i = 0; i < 10; ++i) 9495 ; 9496 } 9497 #pragma omp target parallel for 9498 for (int i = 0; i < 10; ++i) { 9499 #pragma omp parallel for simd 9500 for (int i = 0; i < 10; ++i) 9501 ; 9502 } 9503 #pragma omp target parallel for 9504 for (int i = 0; i < 10; ++i) { 9505 #pragma omp parallel sections 9506 { 9507 bar(); 9508 } 9509 } 9510 #pragma omp target parallel for 9511 for (int i = 0; i < 10; ++i) { 9512 #pragma omp task 9513 { 9514 bar(); 9515 } 9516 } 9517 #pragma omp target parallel for 9518 for (int i = 0; i < 10; ++i) { 9519 #pragma omp taskyield 9520 bar(); 9521 } 9522 #pragma omp target parallel for 9523 for (int i = 0; i < 10; ++i) { 9524 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 9525 bar(); 9526 } 9527 #pragma omp target parallel for 9528 for (int i = 0; i < 10; ++i) { 9529 #pragma omp taskwait 9530 bar(); 9531 } 9532 #pragma omp target parallel for 9533 for (int i = 0; i < 10; ++i) { 9534 #pragma omp flush 9535 bar(); 9536 } 9537 #pragma omp target parallel for 9538 for (int i = 0; i < 10; ++i) { 9539 #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?}} 9540 bar(); 9541 } 9542 #pragma omp target parallel for ordered 9543 for (int i = 0; i < 10; ++i) { 9544 #pragma omp ordered // OK 9545 bar(); 9546 } 9547 #pragma omp target parallel for 9548 for (int i = 0; i < 10; ++i) { 9549 #pragma omp atomic 9550 ++a; 9551 } 9552 #pragma omp target parallel for 9553 for (int i = 0; i < 10; ++i) { 9554 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 9555 ++a; 9556 } 9557 #pragma omp target parallel for 9558 for (int i = 0; i < 10; ++i) { 9559 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 9560 ++a; 9561 } 9562 #pragma omp target parallel for 9563 for (int i = 0; i < 10; ++i) { 9564 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 9565 for (int i = 0; i < 10; ++i) 9566 ; 9567 } 9568 #pragma omp target parallel for 9569 for (int i = 0; i < 10; ++i) { 9570 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 9571 ++a; 9572 } 9573 #pragma omp target parallel for 9574 for (int i = 0; i < 10; ++i) { 9575 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 9576 ++a; 9577 } 9578 #pragma omp target parallel for 9579 for (int i = 0; i < 10; ++i) { 9580 #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?}} 9581 ++a; 9582 } 9583 #pragma omp target parallel for 9584 for (int i = 0; i < 10; ++i) { 9585 #pragma omp taskloop 9586 for (int i = 0; i < 10; ++i) 9587 ++a; 9588 } 9589 #pragma omp target parallel for 9590 for (int i = 0; i < 10; ++i) { 9591 #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?}} 9592 for (int j = 0; j < 10; ++j) 9593 ; 9594 } 9595 #pragma omp target parallel for 9596 for (int i = 0; i < 10; ++i) { 9597 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 9598 a++; 9599 } 9600 #pragma omp target parallel for 9601 for (int i = 0; i < 10; ++i) { 9602 #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?}} 9603 for (int j = 0; j < 10; ++j) 9604 ; 9605 } 9606 #pragma omp target parallel for 9607 for (int i = 0; i < 10; ++i) { 9608 #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?}} 9609 for (int j = 0; j < 10; ++j) 9610 ; 9611 } 9612 #pragma omp target parallel for 9613 for (int i = 0; i < 10; ++i) { 9614 #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?}} 9615 for (int j = 0; j < 10; ++j) 9616 ; 9617 } 9618 #pragma omp target parallel for 9619 for (int i = 0; i < 10; ++i) { 9620 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 9621 for (int j = 0; j < 10; ++j) 9622 ; 9623 } 9624 #pragma omp target parallel for 9625 for (int i = 0; i < 10; ++i) { 9626 #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?}} 9627 for (int j = 0; j < 10; ++j) 9628 ; 9629 } 9630 #pragma omp target parallel for 9631 for (int i = 0; i < 10; ++i) { 9632 #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?}} 9633 for (int j = 0; j < 10; ++j) 9634 ; 9635 } 9636 9637 // TEAMS DIRECTIVE 9638 #pragma omp target 9639 #pragma omp teams 9640 #pragma omp parallel 9641 bar(); 9642 #pragma omp target 9643 #pragma omp teams 9644 #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?}} 9645 for (int i = 0; i < 10; ++i) 9646 ; 9647 #pragma omp target 9648 #pragma omp teams 9649 #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?}} 9650 for (int i = 0; i < 10; ++i) 9651 ; 9652 #pragma omp target 9653 #pragma omp teams 9654 #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?}} 9655 for (int i = 0; i < 10; ++i) 9656 ; 9657 #pragma omp target 9658 #pragma omp teams 9659 #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?}} 9660 { 9661 bar(); 9662 } 9663 #pragma omp target 9664 #pragma omp teams 9665 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 9666 { 9667 bar(); 9668 } 9669 #pragma omp target 9670 #pragma omp teams 9671 #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?}} 9672 bar(); 9673 9674 #pragma omp target 9675 #pragma omp teams 9676 #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?}} 9677 { 9678 bar(); 9679 } 9680 #pragma omp target 9681 #pragma omp teams 9682 #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?}} 9683 { 9684 bar(); 9685 } 9686 #pragma omp target 9687 #pragma omp teams 9688 #pragma omp parallel for 9689 for (int i = 0; i < 10; ++i) 9690 ; 9691 #pragma omp target 9692 #pragma omp teams 9693 #pragma omp parallel for simd 9694 for (int i = 0; i < 10; ++i) 9695 ; 9696 #pragma omp target 9697 #pragma omp teams 9698 #pragma omp parallel sections 9699 { 9700 bar(); 9701 } 9702 #pragma omp target 9703 #pragma omp teams 9704 #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?}} 9705 { 9706 bar(); 9707 } 9708 #pragma omp target 9709 #pragma omp teams 9710 { 9711 #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?}} 9712 bar(); 9713 } 9714 #pragma omp target 9715 #pragma omp teams 9716 { 9717 #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?}} 9718 bar(); 9719 } 9720 #pragma omp target 9721 #pragma omp teams 9722 { 9723 #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?}} 9724 bar(); 9725 } 9726 #pragma omp target 9727 #pragma omp teams 9728 { 9729 #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?}} 9730 bar(); 9731 } 9732 #pragma omp target 9733 #pragma omp teams 9734 { 9735 #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?}} 9736 bar(); 9737 } 9738 #pragma omp target 9739 #pragma omp teams 9740 { 9741 #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?}} 9742 ++a; 9743 } 9744 #pragma omp target 9745 #pragma omp teams 9746 { 9747 #pragma omp target // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target' directive into a parallel region?}} 9748 ++a; 9749 } 9750 #pragma omp target 9751 #pragma omp teams 9752 { 9753 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 9754 ++a; 9755 } 9756 #pragma omp target 9757 #pragma omp teams 9758 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 9759 for (int i = 0; i < 10; ++i) 9760 ; 9761 #pragma omp target 9762 #pragma omp teams 9763 { 9764 #pragma omp target enter data map(to: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target enter data' directive into a parallel region?}} 9765 } 9766 #pragma omp target 9767 #pragma omp teams 9768 { 9769 #pragma omp target exit data map(from: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target exit data' directive into a parallel region?}} 9770 } 9771 #pragma omp target 9772 #pragma omp teams 9773 { 9774 #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?}} 9775 ++a; 9776 } 9777 #pragma omp target 9778 #pragma omp teams 9779 { 9780 #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?}} 9781 for (int i = 0; i < 10; ++i) 9782 ++a; 9783 } 9784 #pragma omp target 9785 #pragma omp teams 9786 #pragma omp distribute 9787 for (int i = 0; i < 10; ++i) 9788 ; 9789 #pragma omp target 9790 #pragma omp teams 9791 #pragma omp distribute 9792 for (int i = 0; i < 10; ++i) 9793 ; 9794 #pragma omp distribute 9795 for (int j = 0; j < 10; ++j) 9796 ; 9797 #pragma omp target 9798 #pragma omp teams 9799 { 9800 #pragma omp target update to(a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target update' directive into a parallel region?}} 9801 ++a; 9802 } 9803 #pragma omp target 9804 #pragma omp teams 9805 #pragma omp distribute parallel for 9806 for (int i = 0; i < 10; ++i) 9807 ; 9808 #pragma omp target 9809 #pragma omp teams 9810 { 9811 #pragma omp distribute parallel for 9812 for (int i = 0; i < 10; ++i) 9813 ; 9814 #pragma omp distribute parallel for 9815 for (int j = 0; j < 10; ++j) 9816 ; 9817 } 9818 #pragma omp target 9819 #pragma omp teams 9820 { 9821 #pragma omp distribute parallel for simd 9822 for (int i = 0; i < 10; ++i) 9823 ; 9824 #pragma omp distribute parallel for simd 9825 for (int j = 0; j < 10; ++j) 9826 ; 9827 } 9828 #pragma omp target 9829 #pragma omp teams 9830 { 9831 #pragma omp distribute simd 9832 for (int i = 0; i < 10; ++i) 9833 ; 9834 #pragma omp distribute simd 9835 for (int j = 0; j < 10; ++j) 9836 ; 9837 } 9838 #pragma omp target 9839 #pragma omp teams 9840 { 9841 #pragma omp target simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target simd' directive into a parallel region?}} 9842 for (int i = 0; i < 10; ++i) 9843 ; 9844 } 9845 #pragma omp target 9846 #pragma omp teams 9847 { 9848 #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?}} 9849 for (int i = 0; i < 10; ++i) 9850 ; 9851 } 9852 #pragma omp target 9853 #pragma omp teams 9854 { 9855 #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?}} 9856 for (int i = 0; i < 10; ++i) 9857 ; 9858 } 9859 9860 // TASKLOOP DIRECTIVE 9861 #pragma omp taskloop 9862 for (int i = 0; i < 10; ++i) { 9863 #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?}} 9864 for (int i = 0; i < 10; ++i) 9865 ; 9866 } 9867 #pragma omp taskloop 9868 for (int i = 0; i < 10; ++i) { 9869 #pragma omp simd 9870 for (int i = 0; i < 10; ++i) 9871 ; 9872 } 9873 #pragma omp taskloop 9874 for (int i = 0; i < 10; ++i) { 9875 #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?}} 9876 for (int i = 0; i < 10; ++i) 9877 ; 9878 } 9879 #pragma omp taskloop 9880 for (int i = 0; i < 10; ++i) { 9881 #pragma omp parallel 9882 for (int i = 0; i < 10; ++i) 9883 ; 9884 } 9885 #pragma omp taskloop 9886 for (int i = 0; i < 10; ++i) { 9887 #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?}} 9888 { 9889 bar(); 9890 } 9891 } 9892 #pragma omp taskloop 9893 for (int i = 0; i < 10; ++i) { 9894 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 9895 { 9896 bar(); 9897 } 9898 } 9899 #pragma omp taskloop 9900 for (int i = 0; i < 10; ++i) { 9901 #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?}} 9902 { 9903 bar(); 9904 } 9905 } 9906 9907 #pragma omp taskloop 9908 for (int i = 0; i < 10; ++i) { 9909 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 9910 { 9911 bar(); 9912 } 9913 } 9914 #pragma omp taskloop 9915 for (int i = 0; i < 10; ++i) { 9916 #pragma omp critical 9917 { 9918 bar(); 9919 } 9920 } 9921 #pragma omp taskloop 9922 for (int i = 0; i < 10; ++i) { 9923 #pragma omp parallel 9924 { 9925 #pragma omp single // OK 9926 { 9927 bar(); 9928 } 9929 #pragma omp for // OK 9930 for (int i = 0; i < 10; ++i) 9931 ; 9932 #pragma omp sections // OK 9933 { 9934 bar(); 9935 } 9936 } 9937 } 9938 #pragma omp taskloop 9939 for (int i = 0; i < 10; ++i) { 9940 #pragma omp parallel for 9941 for (int i = 0; i < 10; ++i) 9942 ; 9943 } 9944 #pragma omp taskloop 9945 for (int i = 0; i < 10; ++i) { 9946 #pragma omp parallel for simd 9947 for (int i = 0; i < 10; ++i) 9948 ; 9949 } 9950 #pragma omp taskloop 9951 for (int i = 0; i < 10; ++i) { 9952 #pragma omp parallel sections 9953 { 9954 bar(); 9955 } 9956 } 9957 #pragma omp taskloop 9958 for (int i = 0; i < 10; ++i) { 9959 #pragma omp task 9960 { 9961 bar(); 9962 } 9963 } 9964 #pragma omp taskloop 9965 for (int i = 0; i < 10; ++i) { 9966 #pragma omp taskyield 9967 bar(); 9968 } 9969 #pragma omp taskloop 9970 for (int i = 0; i < 10; ++i) { 9971 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 9972 bar(); 9973 } 9974 #pragma omp taskloop 9975 for (int i = 0; i < 10; ++i) { 9976 #pragma omp taskwait 9977 bar(); 9978 } 9979 #pragma omp taskloop 9980 for (int i = 0; i < 10; ++i) { 9981 #pragma omp flush 9982 bar(); 9983 } 9984 #pragma omp taskloop 9985 for (int i = 0; i < 10; ++i) { 9986 #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?}} 9987 bar(); 9988 } 9989 #pragma omp taskloop 9990 for (int i = 0; i < 10; ++i) { 9991 #pragma omp atomic 9992 ++a; 9993 } 9994 #pragma omp taskloop 9995 for (int i = 0; i < 10; ++i) { 9996 #pragma omp target 9997 ++a; 9998 } 9999 #pragma omp taskloop 10000 for (int i = 0; i < 10; ++i) { 10001 #pragma omp target parallel 10002 ++a; 10003 } 10004 #pragma omp taskloop 10005 for (int i = 0; i < 10; ++i) { 10006 #pragma omp target parallel for 10007 for (int i = 0; i < 10; ++i) 10008 ; 10009 } 10010 #pragma omp taskloop 10011 for (int i = 0; i < 10; ++i) { 10012 #pragma omp target enter data map(to: a) 10013 ++a; 10014 } 10015 #pragma omp taskloop 10016 for (int i = 0; i < 10; ++i) { 10017 #pragma omp target exit data map(from: a) 10018 ++a; 10019 } 10020 #pragma omp taskloop 10021 for (int i = 0; i < 10; ++i) { 10022 #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?}} 10023 ++a; 10024 } 10025 #pragma omp taskloop 10026 for (int i = 0; i < 10; ++i) { 10027 #pragma omp taskloop 10028 for (int i = 0; i < 10; ++i) 10029 ++a; 10030 } 10031 #pragma omp taskloop 10032 for (int i = 0; i < 10; ++i) { 10033 #pragma omp target update to(a) 10034 ++a; 10035 } 10036 #pragma omp taskloop 10037 for (int i = 0; i < 10; ++i) { 10038 #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?}} 10039 for (int i = 0; i < 10; ++i) 10040 ; 10041 } 10042 #pragma omp taskloop 10043 for (int i = 0; i < 10; ++i) { 10044 #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?}} 10045 for (int i = 0; i < 10; ++i) 10046 ; 10047 } 10048 #pragma omp taskloop 10049 for (int i = 0; i < 10; ++i) { 10050 #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?}} 10051 for (int i = 0; i < 10; ++i) 10052 ; 10053 } 10054 #pragma omp taskloop 10055 for (int i = 0; i < 10; ++i) { 10056 #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?}} 10057 for (int i = 0; i < 10; ++i) 10058 ; 10059 } 10060 #pragma omp taskloop 10061 for (int i = 0; i < 10; ++i) { 10062 #pragma omp target simd // OK 10063 for (int i = 0; i < 10; ++i) 10064 ; 10065 } 10066 #pragma omp taskloop 10067 for (int i = 0; i < 10; ++i) { 10068 #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?}} 10069 for (int i = 0; i < 10; ++i) 10070 ; 10071 } 10072 #pragma omp taskloop 10073 for (int i = 0; i < 10; ++i) { 10074 #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?}} 10075 for (int i = 0; i < 10; ++i) 10076 ; 10077 } 10078 10079 // DISTRIBUTE DIRECTIVE 10080 #pragma omp target 10081 #pragma omp teams 10082 #pragma omp distribute 10083 for (int i = 0; i < 10; ++i) { 10084 #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?}} 10085 for (int i = 0; i < 10; ++i) 10086 ; 10087 } 10088 #pragma omp target 10089 #pragma omp teams 10090 #pragma omp distribute 10091 for (int i = 0; i < 10; ++i) { 10092 #pragma omp for 10093 for (int i = 0; i < 10; ++i) 10094 ; 10095 } 10096 #pragma omp target 10097 #pragma omp teams 10098 #pragma omp distribute 10099 for (int i = 0; i < 10; ++i) { 10100 #pragma omp simd 10101 for (int i = 0; i < 10; ++i) 10102 ; 10103 } 10104 #pragma omp target 10105 #pragma omp teams 10106 #pragma omp distribute 10107 for (int i = 0; i < 10; ++i) { 10108 #pragma omp for simd 10109 for (int i = 0; i < 10; ++i) 10110 ; 10111 } 10112 #pragma omp target 10113 #pragma omp teams 10114 #pragma omp distribute 10115 for (int i = 0; i < 10; ++i) { 10116 #pragma omp parallel 10117 for (int i = 0; i < 10; ++i) 10118 ; 10119 } 10120 #pragma omp target 10121 #pragma omp teams 10122 #pragma omp distribute 10123 for (int i = 0; i < 10; ++i) { 10124 #pragma omp sections 10125 { 10126 bar(); 10127 } 10128 } 10129 #pragma omp target 10130 #pragma omp teams 10131 #pragma omp distribute 10132 for (int i = 0; i < 10; ++i) { 10133 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 10134 { 10135 bar(); 10136 } 10137 } 10138 #pragma omp target 10139 #pragma omp teams 10140 #pragma omp distribute 10141 for (int i = 0; i < 10; ++i) { 10142 #pragma omp single 10143 { 10144 bar(); 10145 } 10146 } 10147 #pragma omp target 10148 #pragma omp teams 10149 #pragma omp distribute 10150 for (int i = 0; i < 10; ++i) { 10151 #pragma omp master 10152 { 10153 bar(); 10154 } 10155 } 10156 #pragma omp target 10157 #pragma omp teams 10158 #pragma omp distribute 10159 for (int i = 0; i < 10; ++i) { 10160 #pragma omp critical 10161 { 10162 bar(); 10163 } 10164 } 10165 #pragma omp target 10166 #pragma omp teams 10167 #pragma omp distribute 10168 for (int i = 0; i < 10; ++i) { 10169 #pragma omp parallel 10170 { 10171 #pragma omp single 10172 { 10173 bar(); 10174 } 10175 } 10176 } 10177 #pragma omp target 10178 #pragma omp teams 10179 #pragma omp distribute 10180 for (int i = 0; i < 10; ++i) { 10181 #pragma omp parallel for 10182 for (int i = 0; i < 10; ++i) 10183 ; 10184 } 10185 #pragma omp target 10186 #pragma omp teams 10187 #pragma omp distribute 10188 for (int i = 0; i < 10; ++i) { 10189 #pragma omp parallel for simd 10190 for (int i = 0; i < 10; ++i) 10191 ; 10192 } 10193 #pragma omp target 10194 #pragma omp teams 10195 #pragma omp distribute 10196 for (int i = 0; i < 10; ++i) { 10197 #pragma omp parallel sections 10198 { 10199 bar(); 10200 } 10201 } 10202 #pragma omp target 10203 #pragma omp teams 10204 #pragma omp distribute 10205 for (int i = 0; i < 10; ++i) { 10206 #pragma omp task 10207 { 10208 bar(); 10209 } 10210 } 10211 #pragma omp target 10212 #pragma omp teams 10213 #pragma omp distribute 10214 for (int i = 0; i < 10; ++i) { 10215 #pragma omp taskyield 10216 bar(); 10217 } 10218 #pragma omp target 10219 #pragma omp teams 10220 #pragma omp distribute 10221 for (int i = 0; i < 10; ++i) { 10222 #pragma omp barrier 10223 bar(); 10224 } 10225 #pragma omp target 10226 #pragma omp teams 10227 #pragma omp distribute 10228 for (int i = 0; i < 10; ++i) { 10229 #pragma omp taskwait 10230 bar(); 10231 } 10232 #pragma omp target 10233 #pragma omp teams 10234 #pragma omp distribute 10235 for (int i = 0; i < 10; ++i) { 10236 #pragma omp flush 10237 bar(); 10238 } 10239 #pragma omp target 10240 #pragma omp teams 10241 #pragma omp distribute 10242 for (int i = 0; i < 10; ++i) { 10243 #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?}} 10244 bar(); 10245 } 10246 #pragma omp target 10247 #pragma omp teams 10248 #pragma omp distribute 10249 for (int i = 0; i < 10; ++i) { 10250 #pragma omp atomic 10251 ++a; 10252 } 10253 #pragma omp target 10254 #pragma omp teams 10255 #pragma omp distribute 10256 for (int i = 0; i < 10; ++i) { 10257 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 10258 ++a; 10259 } 10260 #pragma omp target 10261 #pragma omp teams 10262 #pragma omp distribute 10263 for (int i = 0; i < 10; ++i) { 10264 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 10265 ++a; 10266 } 10267 #pragma omp target 10268 #pragma omp teams 10269 #pragma omp distribute 10270 for (int i = 0; i < 10; ++i) { 10271 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 10272 for (int i = 0; i < 10; ++i) 10273 ; 10274 } 10275 #pragma omp target 10276 #pragma omp teams 10277 #pragma omp distribute 10278 for (int i = 0; i < 10; ++i) { 10279 #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?}} 10280 ++a; 10281 } 10282 return foo<int>(); 10283 #pragma omp target 10284 #pragma omp teams 10285 #pragma omp distribute 10286 for (int i = 0; i < 10; ++i) { 10287 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 10288 ++a; 10289 } 10290 #pragma omp target 10291 #pragma omp teams 10292 #pragma omp distribute 10293 for (int i = 0; i < 10; ++i) { 10294 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 10295 ++a; 10296 } 10297 #pragma omp target 10298 #pragma omp teams 10299 #pragma omp distribute 10300 for (int i = 0; i < 10; ++i) { 10301 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 10302 ++a; 10303 } 10304 #pragma omp target 10305 #pragma omp teams 10306 #pragma omp distribute 10307 for (int i = 0; i < 10; ++i) { 10308 #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?}} 10309 for (int i = 0; i < 10; ++i) 10310 ++a; 10311 } 10312 #pragma omp target 10313 #pragma omp teams 10314 #pragma omp distribute 10315 for (int i = 0; i < 10; ++i) { 10316 #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?}} 10317 for (int i = 0; i < 10; ++i) 10318 ++a; 10319 } 10320 #pragma omp target 10321 #pragma omp teams 10322 #pragma omp distribute 10323 for (int i = 0; i < 10; ++i) { 10324 #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?}} 10325 for (int i = 0; i < 10; ++i) 10326 ++a; 10327 } 10328 #pragma omp target 10329 #pragma omp teams 10330 #pragma omp distribute 10331 for (int i = 0; i < 10; ++i) { 10332 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 10333 for (int i = 0; i < 10; ++i) 10334 ++a; 10335 } 10336 10337 // DISTRIBUTE PARALLEL FOR DIRECTIVE 10338 #pragma omp target 10339 #pragma omp teams 10340 #pragma omp distribute parallel for 10341 for (int i = 0; i < 10; ++i) { 10342 #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?}} 10343 for (int i = 0; i < 10; ++i) 10344 ; 10345 } 10346 10347 #pragma omp target 10348 #pragma omp teams 10349 #pragma omp distribute parallel for 10350 for (int i = 0; i < 10; ++i) { 10351 #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?}} 10352 for (int i = 0; i < 10; ++i) 10353 ; 10354 } 10355 #pragma omp target 10356 #pragma omp teams 10357 #pragma omp distribute parallel for 10358 for (int i = 0; i < 10; ++i) { 10359 #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?}} 10360 for (int i = 0; i < 10; ++i) 10361 ; 10362 } 10363 #pragma omp target 10364 #pragma omp teams 10365 #pragma omp distribute parallel for 10366 for (int i = 0; i < 10; ++i) { 10367 #pragma omp simd 10368 for (int i = 0; i < 10; ++i) 10369 ; 10370 } 10371 #pragma omp target 10372 #pragma omp teams 10373 #pragma omp distribute parallel for 10374 for (int i = 0; i < 10; ++i) { 10375 #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?}} 10376 for (int i = 0; i < 10; ++i) 10377 ; 10378 } 10379 #pragma omp target 10380 #pragma omp teams 10381 #pragma omp distribute parallel for 10382 for (int i = 0; i < 10; ++i) { 10383 #pragma omp parallel 10384 for (int i = 0; i < 10; ++i) 10385 ; 10386 } 10387 #pragma omp target 10388 #pragma omp teams 10389 #pragma omp distribute parallel for 10390 for (int i = 0; i < 10; ++i) { 10391 #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?}} 10392 { 10393 bar(); 10394 } 10395 } 10396 #pragma omp target 10397 #pragma omp teams 10398 #pragma omp distribute parallel for 10399 for (int i = 0; i < 10; ++i) { 10400 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 10401 { 10402 bar(); 10403 } 10404 } 10405 #pragma omp target 10406 #pragma omp teams 10407 #pragma omp distribute parallel for 10408 for (int i = 0; i < 10; ++i) { 10409 #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?}} 10410 { 10411 bar(); 10412 } 10413 } 10414 #pragma omp target 10415 #pragma omp teams 10416 #pragma omp distribute parallel for 10417 for (int i = 0; i < 10; ++i) { 10418 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 10419 { 10420 bar(); 10421 } 10422 } 10423 #pragma omp target 10424 #pragma omp teams 10425 #pragma omp distribute parallel for 10426 for (int i = 0; i < 10; ++i) { 10427 #pragma omp critical 10428 { 10429 bar(); 10430 } 10431 } 10432 #pragma omp target 10433 #pragma omp teams 10434 #pragma omp distribute parallel for 10435 for (int i = 0; i < 10; ++i) { 10436 #pragma omp parallel 10437 { 10438 #pragma omp single 10439 { 10440 bar(); 10441 } 10442 } 10443 } 10444 #pragma omp target 10445 #pragma omp teams 10446 #pragma omp distribute parallel for 10447 for (int i = 0; i < 10; ++i) { 10448 #pragma omp parallel for 10449 for (int i = 0; i < 10; ++i) 10450 ; 10451 } 10452 #pragma omp target 10453 #pragma omp teams 10454 #pragma omp distribute parallel for 10455 for (int i = 0; i < 10; ++i) { 10456 #pragma omp parallel for simd 10457 for (int i = 0; i < 10; ++i) 10458 ; 10459 } 10460 #pragma omp target 10461 #pragma omp teams 10462 #pragma omp distribute parallel for 10463 for (int i = 0; i < 10; ++i) { 10464 #pragma omp parallel sections 10465 { 10466 bar(); 10467 } 10468 } 10469 #pragma omp target 10470 #pragma omp teams 10471 #pragma omp distribute parallel for 10472 for (int i = 0; i < 10; ++i) { 10473 #pragma omp task 10474 { 10475 bar(); 10476 } 10477 } 10478 #pragma omp target 10479 #pragma omp teams 10480 #pragma omp distribute parallel for 10481 for (int i = 0; i < 10; ++i) { 10482 #pragma omp taskyield 10483 bar(); 10484 } 10485 #pragma omp target 10486 #pragma omp teams 10487 #pragma omp distribute parallel for 10488 for (int i = 0; i < 10; ++i) { 10489 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 10490 bar(); 10491 } 10492 #pragma omp target 10493 #pragma omp teams 10494 #pragma omp distribute parallel for 10495 for (int i = 0; i < 10; ++i) { 10496 #pragma omp taskwait 10497 bar(); 10498 } 10499 #pragma omp target 10500 #pragma omp teams 10501 #pragma omp distribute parallel for 10502 for (int i = 0; i < 10; ++i) { 10503 #pragma omp flush 10504 bar(); 10505 } 10506 #pragma omp target 10507 #pragma omp teams 10508 #pragma omp distribute parallel for 10509 for (int i = 0; i < 10; ++i) { 10510 #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?}} 10511 bar(); 10512 } 10513 #pragma omp target 10514 #pragma omp teams 10515 #pragma omp distribute parallel for 10516 for (int i = 0; i < 10; ++i) { 10517 #pragma omp atomic 10518 ++a; 10519 } 10520 #pragma omp target 10521 #pragma omp teams 10522 #pragma omp distribute parallel for 10523 for (int i = 0; i < 10; ++i) { 10524 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 10525 ++a; 10526 } 10527 #pragma omp target 10528 #pragma omp teams 10529 #pragma omp distribute parallel for 10530 for (int i = 0; i < 10; ++i) { 10531 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 10532 ++a; 10533 } 10534 #pragma omp target 10535 #pragma omp teams 10536 #pragma omp distribute parallel for 10537 for (int i = 0; i < 10; ++i) { 10538 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 10539 for (int i = 0; i < 10; ++i) 10540 ; 10541 } 10542 #pragma omp target 10543 #pragma omp teams 10544 #pragma omp distribute parallel for 10545 for (int i = 0; i < 10; ++i) { 10546 #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?}} 10547 ++a; 10548 } 10549 return foo<int>(); 10550 #pragma omp target 10551 #pragma omp teams 10552 #pragma omp distribute parallel for 10553 for (int i = 0; i < 10; ++i) { 10554 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 10555 ++a; 10556 } 10557 #pragma omp target 10558 #pragma omp teams 10559 #pragma omp distribute parallel for 10560 for (int i = 0; i < 10; ++i) { 10561 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 10562 ++a; 10563 } 10564 #pragma omp target 10565 #pragma omp teams 10566 #pragma omp distribute parallel for 10567 for (int i = 0; i < 10; ++i) { 10568 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 10569 ++a; 10570 } 10571 #pragma omp target 10572 #pragma omp teams 10573 #pragma omp distribute parallel for 10574 for (int i = 0; i < 10; ++i) { 10575 #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?}} 10576 for (int i = 0; i < 10; ++i) 10577 ++a; 10578 } 10579 #pragma omp target 10580 #pragma omp teams 10581 #pragma omp distribute parallel for 10582 for (int i = 0; i < 10; ++i) { 10583 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 10584 for (int i = 0; i < 10; ++i) 10585 ++a; 10586 } 10587 #pragma omp target 10588 #pragma omp teams 10589 #pragma omp distribute parallel for 10590 for (int i = 0; i < 10; ++i) { 10591 #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?}} 10592 for (int i = 0; i < 10; ++i) 10593 ++a; 10594 } 10595 #pragma omp target 10596 #pragma omp teams 10597 #pragma omp distribute parallel for 10598 for (int i = 0; i < 10; ++i) { 10599 #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?}} 10600 for (int i = 0; i < 10; ++i) 10601 ++a; 10602 } 10603 10604 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 10605 #pragma omp target 10606 #pragma omp teams 10607 #pragma omp distribute parallel for simd 10608 for (int i = 0; i < 10; ++i) { 10609 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10610 for (int i = 0; i < 10; ++i) 10611 ; 10612 } 10613 #pragma omp target 10614 #pragma omp teams 10615 #pragma omp distribute parallel for simd 10616 for (int i = 0; i < 10; ++i) { 10617 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10618 for (int i = 0; i < 10; ++i) 10619 ; 10620 } 10621 #pragma omp target 10622 #pragma omp teams 10623 #pragma omp distribute parallel for simd 10624 for (int i = 0; i < 10; ++i) { 10625 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10626 for (int i = 0; i < 10; ++i) 10627 ; 10628 } 10629 #pragma omp target 10630 #pragma omp teams 10631 #pragma omp distribute parallel for simd 10632 for (int i = 0; i < 10; ++i) { 10633 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10634 for (int i = 0; i < 10; ++i) 10635 ; 10636 } 10637 #pragma omp target 10638 #pragma omp teams 10639 #pragma omp distribute parallel for simd 10640 for (int i = 0; i < 10; ++i) { 10641 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10642 for (int i = 0; i < 10; ++i) 10643 ; 10644 } 10645 #pragma omp target 10646 #pragma omp teams 10647 #pragma omp distribute parallel for simd 10648 for (int i = 0; i < 10; ++i) { 10649 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10650 for (int i = 0; i < 10; ++i) 10651 ; 10652 } 10653 #pragma omp target 10654 #pragma omp teams 10655 #pragma omp distribute parallel for simd 10656 for (int i = 0; i < 10; ++i) { 10657 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10658 { 10659 bar(); 10660 } 10661 } 10662 #pragma omp target 10663 #pragma omp teams 10664 #pragma omp distribute parallel for simd 10665 for (int i = 0; i < 10; ++i) { 10666 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10667 { 10668 bar(); 10669 } 10670 } 10671 #pragma omp target 10672 #pragma omp teams 10673 #pragma omp distribute parallel for simd 10674 for (int i = 0; i < 10; ++i) { 10675 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10676 { 10677 bar(); 10678 } 10679 } 10680 #pragma omp target 10681 #pragma omp teams 10682 #pragma omp distribute parallel for simd 10683 for (int i = 0; i < 10; ++i) { 10684 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10685 { 10686 bar(); 10687 } 10688 } 10689 #pragma omp target 10690 #pragma omp teams 10691 #pragma omp distribute parallel for simd 10692 for (int i = 0; i < 10; ++i) { 10693 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10694 { 10695 bar(); 10696 } 10697 } 10698 #pragma omp target 10699 #pragma omp teams 10700 #pragma omp distribute parallel for simd 10701 for (int i = 0; i < 10; ++i) { 10702 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10703 { 10704 #pragma omp single 10705 { 10706 bar(); 10707 } 10708 } 10709 } 10710 #pragma omp target 10711 #pragma omp teams 10712 #pragma omp distribute parallel for simd 10713 for (int i = 0; i < 10; ++i) { 10714 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10715 for (int i = 0; i < 10; ++i) 10716 ; 10717 } 10718 #pragma omp target 10719 #pragma omp teams 10720 #pragma omp distribute parallel for simd 10721 for (int i = 0; i < 10; ++i) { 10722 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10723 for (int i = 0; i < 10; ++i) 10724 ; 10725 } 10726 #pragma omp target 10727 #pragma omp teams 10728 #pragma omp distribute parallel for simd 10729 for (int i = 0; i < 10; ++i) { 10730 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10731 { 10732 bar(); 10733 } 10734 } 10735 #pragma omp target 10736 #pragma omp teams 10737 #pragma omp distribute parallel for simd 10738 for (int i = 0; i < 10; ++i) { 10739 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10740 { 10741 bar(); 10742 } 10743 } 10744 #pragma omp target 10745 #pragma omp teams 10746 #pragma omp distribute parallel for simd 10747 for (int i = 0; i < 10; ++i) { 10748 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10749 bar(); 10750 } 10751 #pragma omp target 10752 #pragma omp teams 10753 #pragma omp distribute parallel for simd 10754 for (int i = 0; i < 10; ++i) { 10755 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10756 bar(); 10757 } 10758 #pragma omp target 10759 #pragma omp teams 10760 #pragma omp distribute parallel for simd 10761 for (int i = 0; i < 10; ++i) { 10762 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10763 bar(); 10764 } 10765 #pragma omp target 10766 #pragma omp teams 10767 #pragma omp distribute parallel for simd 10768 for (int i = 0; i < 10; ++i) { 10769 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10770 bar(); 10771 } 10772 #pragma omp target 10773 #pragma omp teams 10774 #pragma omp distribute parallel for simd 10775 for (int i = 0; i < 10; ++i) { 10776 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10777 bar(); 10778 } 10779 #pragma omp target 10780 #pragma omp teams 10781 #pragma omp distribute parallel for simd 10782 for (int i = 0; i < 10; ++i) { 10783 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10784 ++a; 10785 } 10786 #pragma omp target 10787 #pragma omp teams 10788 #pragma omp distribute parallel for simd 10789 for (int i = 0; i < 10; ++i) { 10790 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10791 ++a; 10792 } 10793 #pragma omp target 10794 #pragma omp teams 10795 #pragma omp distribute parallel for simd 10796 for (int i = 0; i < 10; ++i) { 10797 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10798 ++a; 10799 } 10800 #pragma omp target 10801 #pragma omp teams 10802 #pragma omp distribute parallel for simd 10803 for (int i = 0; i < 10; ++i) { 10804 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10805 ++a; 10806 } 10807 return foo<int>(); 10808 #pragma omp target 10809 #pragma omp teams 10810 #pragma omp distribute parallel for simd 10811 for (int i = 0; i < 10; ++i) { 10812 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10813 ++a; 10814 } 10815 #pragma omp target 10816 #pragma omp teams 10817 #pragma omp distribute parallel for simd 10818 for (int i = 0; i < 10; ++i) { 10819 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10820 ++a; 10821 } 10822 #pragma omp target 10823 #pragma omp teams 10824 #pragma omp distribute parallel for simd 10825 for (int i = 0; i < 10; ++i) { 10826 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10827 ++a; 10828 } 10829 #pragma omp target 10830 #pragma omp teams 10831 #pragma omp distribute parallel for simd 10832 for (int i = 0; i < 10; ++i) { 10833 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10834 for (int i = 0; i < 10; ++i) 10835 ; 10836 } 10837 #pragma omp target 10838 #pragma omp teams 10839 #pragma omp distribute parallel for simd 10840 for (int i = 0; i < 10; ++i) { 10841 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10842 for (int i = 0; i < 10; ++i) 10843 ; 10844 } 10845 #pragma omp target 10846 #pragma omp teams 10847 #pragma omp distribute parallel for simd 10848 for (int i = 0; i < 10; ++i) { 10849 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10850 for (int i = 0; i < 10; ++i) 10851 ; 10852 } 10853 #pragma omp target 10854 #pragma omp teams 10855 #pragma omp distribute parallel for simd 10856 for (int i = 0; i < 10; ++i) { 10857 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10858 for (int i = 0; i < 10; ++i) 10859 ; 10860 } 10861 10862 // DISTRIBUTE SIMD DIRECTIVE 10863 #pragma omp target 10864 #pragma omp teams 10865 #pragma omp distribute simd 10866 for (int i = 0; i < 10; ++i) { 10867 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10868 for (int i = 0; i < 10; ++i) 10869 ; 10870 } 10871 #pragma omp target 10872 #pragma omp teams 10873 #pragma omp distribute simd 10874 for (int i = 0; i < 10; ++i) { 10875 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10876 for (int i = 0; i < 10; ++i) 10877 ; 10878 } 10879 #pragma omp target 10880 #pragma omp teams 10881 #pragma omp distribute simd 10882 for (int i = 0; i < 10; ++i) { 10883 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10884 for (int i = 0; i < 10; ++i) 10885 ; 10886 } 10887 #pragma omp target 10888 #pragma omp teams 10889 #pragma omp distribute simd 10890 for (int i = 0; i < 10; ++i) { 10891 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 10892 for (int i = 0; i < 10; ++i) 10893 ; 10894 } 10895 #pragma omp target 10896 #pragma omp teams 10897 #pragma omp distribute simd 10898 for (int i = 0; i < 10; ++i) { 10899 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10900 for (int i = 0; i < 10; ++i) 10901 ; 10902 } 10903 #pragma omp target 10904 #pragma omp teams 10905 #pragma omp distribute simd 10906 for (int i = 0; i < 10; ++i) { 10907 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10908 for (int i = 0; i < 10; ++i) 10909 ; 10910 } 10911 #pragma omp target 10912 #pragma omp teams 10913 #pragma omp distribute simd 10914 for (int i = 0; i < 10; ++i) { 10915 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10916 { 10917 bar(); 10918 } 10919 } 10920 #pragma omp target 10921 #pragma omp teams 10922 #pragma omp distribute simd 10923 for (int i = 0; i < 10; ++i) { 10924 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10925 { 10926 bar(); 10927 } 10928 } 10929 #pragma omp target 10930 #pragma omp teams 10931 #pragma omp distribute simd 10932 for (int i = 0; i < 10; ++i) { 10933 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10934 { 10935 bar(); 10936 } 10937 } 10938 #pragma omp target 10939 #pragma omp teams 10940 #pragma omp distribute simd 10941 for (int i = 0; i < 10; ++i) { 10942 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10943 { 10944 bar(); 10945 } 10946 } 10947 #pragma omp target 10948 #pragma omp teams 10949 #pragma omp distribute simd 10950 for (int i = 0; i < 10; ++i) { 10951 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10952 { 10953 bar(); 10954 } 10955 } 10956 #pragma omp target 10957 #pragma omp teams 10958 #pragma omp distribute simd 10959 for (int i = 0; i < 10; ++i) { 10960 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10961 { 10962 #pragma omp single 10963 { 10964 bar(); 10965 } 10966 } 10967 } 10968 #pragma omp target 10969 #pragma omp teams 10970 #pragma omp distribute simd 10971 for (int i = 0; i < 10; ++i) { 10972 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10973 for (int i = 0; i < 10; ++i) 10974 ; 10975 } 10976 #pragma omp target 10977 #pragma omp teams 10978 #pragma omp distribute simd 10979 for (int i = 0; i < 10; ++i) { 10980 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10981 for (int i = 0; i < 10; ++i) 10982 ; 10983 } 10984 #pragma omp target 10985 #pragma omp teams 10986 #pragma omp distribute simd 10987 for (int i = 0; i < 10; ++i) { 10988 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10989 { 10990 bar(); 10991 } 10992 } 10993 #pragma omp target 10994 #pragma omp teams 10995 #pragma omp distribute simd 10996 for (int i = 0; i < 10; ++i) { 10997 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 10998 { 10999 bar(); 11000 } 11001 } 11002 #pragma omp target 11003 #pragma omp teams 11004 #pragma omp distribute simd 11005 for (int i = 0; i < 10; ++i) { 11006 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11007 bar(); 11008 } 11009 #pragma omp target 11010 #pragma omp teams 11011 #pragma omp distribute simd 11012 for (int i = 0; i < 10; ++i) { 11013 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11014 bar(); 11015 } 11016 #pragma omp target 11017 #pragma omp teams 11018 #pragma omp distribute simd 11019 for (int i = 0; i < 10; ++i) { 11020 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11021 bar(); 11022 } 11023 #pragma omp target 11024 #pragma omp teams 11025 #pragma omp distribute simd 11026 for (int i = 0; i < 10; ++i) { 11027 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11028 bar(); 11029 } 11030 #pragma omp target 11031 #pragma omp teams 11032 #pragma omp distribute simd 11033 for (int i = 0; i < 10; ++i) { 11034 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11035 bar(); 11036 } 11037 #pragma omp target 11038 #pragma omp teams 11039 #pragma omp distribute simd 11040 for (int i = 0; i < 10; ++i) { 11041 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11042 ++a; 11043 } 11044 #pragma omp target 11045 #pragma omp teams 11046 #pragma omp distribute simd 11047 for (int i = 0; i < 10; ++i) { 11048 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11049 ++a; 11050 } 11051 #pragma omp target 11052 #pragma omp teams 11053 #pragma omp distribute simd 11054 for (int i = 0; i < 10; ++i) { 11055 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11056 ++a; 11057 } 11058 #pragma omp target 11059 #pragma omp teams 11060 #pragma omp distribute simd 11061 for (int i = 0; i < 10; ++i) { 11062 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11063 ++a; 11064 } 11065 return foo<int>(); 11066 #pragma omp target 11067 #pragma omp teams 11068 #pragma omp distribute simd 11069 for (int i = 0; i < 10; ++i) { 11070 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11071 ++a; 11072 } 11073 #pragma omp target 11074 #pragma omp teams 11075 #pragma omp distribute simd 11076 for (int i = 0; i < 10; ++i) { 11077 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11078 ++a; 11079 } 11080 #pragma omp target 11081 #pragma omp teams 11082 #pragma omp distribute simd 11083 for (int i = 0; i < 10; ++i) { 11084 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11085 ++a; 11086 } 11087 #pragma omp target 11088 #pragma omp teams 11089 #pragma omp distribute simd 11090 for (int i = 0; i < 10; ++i) { 11091 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11092 for (int i = 0; i < 10; ++i) 11093 ; 11094 } 11095 #pragma omp target 11096 #pragma omp teams 11097 #pragma omp distribute simd 11098 for (int i = 0; i < 10; ++i) { 11099 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11100 for (int i = 0; i < 10; ++i) 11101 ; 11102 } 11103 #pragma omp target 11104 #pragma omp teams 11105 #pragma omp distribute simd 11106 for (int i = 0; i < 10; ++i) { 11107 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11108 for (int i = 0; i < 10; ++i) 11109 ; 11110 } 11111 #pragma omp target 11112 #pragma omp teams 11113 #pragma omp distribute simd 11114 for (int i = 0; i < 10; ++i) { 11115 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11116 for (int i = 0; i < 10; ++i) 11117 ; 11118 } 11119 11120 // TARGET SIMD DIRECTIVE 11121 #pragma omp target simd 11122 for (int i = 0; i < 10; ++i) { 11123 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11124 for (int i = 0; i < 10; ++i) 11125 ; 11126 } 11127 #pragma omp target simd 11128 for (int i = 0; i < 10; ++i) { 11129 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11130 for (int i = 0; i < 10; ++i) 11131 ; 11132 } 11133 #pragma omp target simd 11134 for (int i = 0; i < 10; ++i) { 11135 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11136 for (int i = 0; i < 10; ++i) 11137 ; 11138 } 11139 #pragma omp target simd 11140 for (int i = 0; i < 10; ++i) { 11141 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11142 for (int i = 0; i < 10; ++i) 11143 ; 11144 } 11145 #pragma omp target simd 11146 for (int i = 0; i < 10; ++i) { 11147 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11148 for (int i = 0; i < 10; ++i) 11149 ; 11150 } 11151 #pragma omp target simd 11152 for (int i = 0; i < 10; ++i) { 11153 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11154 for (int i = 0; i < 10; ++i) 11155 ; 11156 } 11157 #pragma omp target simd 11158 for (int i = 0; i < 10; ++i) { 11159 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11160 { 11161 bar(); 11162 } 11163 } 11164 #pragma omp target simd 11165 for (int i = 0; i < 10; ++i) { 11166 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11167 { 11168 bar(); 11169 } 11170 } 11171 #pragma omp target simd 11172 for (int i = 0; i < 10; ++i) { 11173 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11174 { 11175 bar(); 11176 } 11177 } 11178 #pragma omp target simd 11179 for (int i = 0; i < 10; ++i) { 11180 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11181 { 11182 bar(); 11183 } 11184 } 11185 #pragma omp target simd 11186 for (int i = 0; i < 10; ++i) { 11187 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11188 { 11189 bar(); 11190 } 11191 } 11192 #pragma omp target simd 11193 for (int i = 0; i < 10; ++i) { 11194 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11195 { 11196 #pragma omp single 11197 { 11198 bar(); 11199 } 11200 } 11201 } 11202 #pragma omp target simd 11203 for (int i = 0; i < 10; ++i) { 11204 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11205 for (int i = 0; i < 10; ++i) 11206 ; 11207 } 11208 #pragma omp target simd 11209 for (int i = 0; i < 10; ++i) { 11210 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11211 for (int i = 0; i < 10; ++i) 11212 ; 11213 } 11214 #pragma omp target simd 11215 for (int i = 0; i < 10; ++i) { 11216 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11217 { 11218 bar(); 11219 } 11220 } 11221 #pragma omp target simd 11222 for (int i = 0; i < 10; ++i) { 11223 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11224 { 11225 bar(); 11226 } 11227 } 11228 #pragma omp target simd 11229 for (int i = 0; i < 10; ++i) { 11230 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11231 bar(); 11232 } 11233 #pragma omp target simd 11234 for (int i = 0; i < 10; ++i) { 11235 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11236 bar(); 11237 } 11238 #pragma omp target simd 11239 for (int i = 0; i < 10; ++i) { 11240 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11241 bar(); 11242 } 11243 #pragma omp target simd 11244 for (int i = 0; i < 10; ++i) { 11245 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11246 bar(); 11247 } 11248 #pragma omp target simd 11249 for (int i = 0; i < 10; ++i) { 11250 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11251 bar(); 11252 } 11253 #pragma omp target simd 11254 for (int i = 0; i < 10; ++i) { 11255 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11256 ++a; 11257 } 11258 #pragma omp target simd 11259 for (int i = 0; i < 10; ++i) { 11260 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11261 ++a; 11262 } 11263 #pragma omp target simd 11264 for (int i = 0; i < 10; ++i) { 11265 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11266 ++a; 11267 } 11268 #pragma omp target simd 11269 for (int i = 0; i < 10; ++i) { 11270 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11271 ++a; 11272 } 11273 #pragma omp target simd 11274 for (int i = 0; i < 10; ++i) { 11275 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11276 ++a; 11277 } 11278 #pragma omp target simd 11279 for (int i = 0; i < 10; ++i) { 11280 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11281 ++a; 11282 } 11283 #pragma omp target simd 11284 for (int i = 0; i < 10; ++i) { 11285 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11286 ++a; 11287 } 11288 #pragma omp target simd 11289 for (int i = 0; i < 10; ++i) { 11290 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11291 for (int i = 0; i < 10; ++i) 11292 ; 11293 } 11294 #pragma omp target simd 11295 for (int i = 0; i < 10; ++i) { 11296 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11297 for (int i = 0; i < 10; ++i) 11298 ; 11299 } 11300 #pragma omp target simd 11301 for (int i = 0; i < 10; ++i) { 11302 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11303 for (int i = 0; i < 10; ++i) 11304 ; 11305 } 11306 #pragma omp target simd 11307 for (int i = 0; i < 10; ++i) { 11308 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11309 for (int i = 0; i < 10; ++i) 11310 ; 11311 } 11312 11313 // TEAMS DISTRIBUTE DIRECTIVE 11314 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 11315 for (int i = 0; i < 10; ++i) 11316 ; 11317 #pragma omp target 11318 #pragma omp teams distribute 11319 for (int i = 0; i < 10; ++i) { 11320 #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?}} 11321 for (int i = 0; i < 10; ++i) 11322 ; 11323 } 11324 #pragma omp target 11325 #pragma omp teams distribute 11326 for (int i = 0; i < 10; ++i) { 11327 #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?}} 11328 for (int i = 0; i < 10; ++i) 11329 ; 11330 } 11331 #pragma omp target 11332 #pragma omp teams distribute 11333 for (int i = 0; i < 10; ++i) { 11334 #pragma omp for // OK 11335 for (int i = 0; i < 10; ++i) 11336 ; 11337 } 11338 #pragma omp target 11339 #pragma omp teams distribute 11340 for (int i = 0; i < 10; ++i) { 11341 #pragma omp simd // OK 11342 for (int i = 0; i < 10; ++i) 11343 ; 11344 } 11345 #pragma omp target 11346 #pragma omp teams distribute 11347 for (int i = 0; i < 10; ++i) { 11348 #pragma omp for simd // OK 11349 for (int i = 0; i < 10; ++i) 11350 ; 11351 } 11352 #pragma omp target 11353 #pragma omp teams distribute 11354 for (int i = 0; i < 10; ++i) { 11355 #pragma omp parallel // OK 11356 for (int i = 0; i < 10; ++i) 11357 ; 11358 } 11359 #pragma omp target 11360 #pragma omp teams distribute 11361 for (int i = 0; i < 10; ++i) { 11362 #pragma omp sections // OK 11363 { 11364 bar(); 11365 } 11366 } 11367 #pragma omp target 11368 #pragma omp teams distribute 11369 for (int i = 0; i < 10; ++i) { 11370 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 11371 { 11372 bar(); 11373 } 11374 } 11375 #pragma omp target 11376 #pragma omp teams distribute 11377 for (int i = 0; i < 10; ++i) { 11378 #pragma omp single // OK 11379 { 11380 bar(); 11381 } 11382 } 11383 #pragma omp target 11384 #pragma omp teams distribute 11385 for (int i = 0; i < 10; ++i) { 11386 #pragma omp master // OK 11387 { 11388 bar(); 11389 } 11390 } 11391 #pragma omp target 11392 #pragma omp teams distribute 11393 for (int i = 0; i < 10; ++i) { 11394 #pragma omp critical // OK 11395 { 11396 bar(); 11397 } 11398 } 11399 #pragma omp target 11400 #pragma omp teams distribute 11401 for (int i = 0; i < 10; ++i) { 11402 #pragma omp parallel // OK 11403 { 11404 #pragma omp single 11405 { 11406 bar(); 11407 } 11408 } 11409 } 11410 #pragma omp target 11411 #pragma omp teams distribute 11412 for (int i = 0; i < 10; ++i) { 11413 #pragma omp parallel for // OK 11414 for (int i = 0; i < 10; ++i) 11415 ; 11416 } 11417 #pragma omp target 11418 #pragma omp teams distribute 11419 for (int i = 0; i < 10; ++i) { 11420 #pragma omp parallel for simd // OK 11421 for (int i = 0; i < 10; ++i) 11422 ; 11423 } 11424 #pragma omp target 11425 #pragma omp teams distribute 11426 for (int i = 0; i < 10; ++i) { 11427 #pragma omp parallel sections // OK 11428 { 11429 bar(); 11430 } 11431 } 11432 #pragma omp target 11433 #pragma omp teams distribute 11434 for (int i = 0; i < 10; ++i) { 11435 #pragma omp task // OK 11436 { 11437 bar(); 11438 } 11439 } 11440 #pragma omp target 11441 #pragma omp teams distribute 11442 for (int i = 0; i < 10; ++i) { 11443 #pragma omp taskyield // OK 11444 bar(); 11445 } 11446 #pragma omp target 11447 #pragma omp teams distribute 11448 for (int i = 0; i < 10; ++i) { 11449 #pragma omp barrier // OK 11450 bar(); 11451 } 11452 #pragma omp target 11453 #pragma omp teams distribute 11454 for (int i = 0; i < 10; ++i) { 11455 #pragma omp taskwait // OK 11456 bar(); 11457 } 11458 #pragma omp target 11459 #pragma omp teams distribute 11460 for (int i = 0; i < 10; ++i) { 11461 #pragma omp flush // OK 11462 bar(); 11463 } 11464 #pragma omp target 11465 #pragma omp teams distribute 11466 for (int i = 0; i < 10; ++i) { 11467 #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?}} 11468 bar(); 11469 } 11470 #pragma omp target 11471 #pragma omp teams distribute 11472 for (int i = 0; i < 10; ++i) { 11473 #pragma omp atomic // OK 11474 ++a; 11475 } 11476 #pragma omp target 11477 #pragma omp teams distribute 11478 for (int i = 0; i < 10; ++i) { 11479 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 11480 ++a; 11481 } 11482 #pragma omp target 11483 #pragma omp teams distribute 11484 for (int i = 0; i < 10; ++i) { 11485 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 11486 ++a; 11487 } 11488 #pragma omp target 11489 #pragma omp teams distribute 11490 for (int i = 0; i < 10; ++i) { 11491 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11492 for (int i = 0; i < 10; ++i) 11493 ; 11494 } 11495 #pragma omp target 11496 #pragma omp teams distribute 11497 for (int i = 0; i < 10; ++i) { 11498 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 11499 ++a; 11500 } 11501 #pragma omp target 11502 #pragma omp teams distribute 11503 for (int i = 0; i < 10; ++i) { 11504 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 11505 ++a; 11506 } 11507 #pragma omp target 11508 #pragma omp teams distribute 11509 for (int i = 0; i < 10; ++i) { 11510 #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?}} 11511 ++a; 11512 } 11513 #pragma omp target 11514 #pragma omp teams distribute 11515 for (int i = 0; i < 10; ++i) { 11516 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 11517 ++a; 11518 } 11519 #pragma omp target 11520 #pragma omp teams distribute 11521 for (int i = 0; i < 10; ++i) { 11522 #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?}} 11523 for (int i = 0; i < 10; ++i) 11524 ++a; 11525 } 11526 #pragma omp target 11527 #pragma omp teams distribute 11528 for (int i = 0; i < 10; ++i) { 11529 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 11530 for (int i = 0; i < 10; ++i) 11531 ++a; 11532 } 11533 #pragma omp target 11534 #pragma omp teams distribute 11535 for (int i = 0; i < 10; ++i) { 11536 #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?}} 11537 for (int i = 0; i < 10; ++i) 11538 ++a; 11539 } 11540 #pragma omp target 11541 #pragma omp teams distribute 11542 for (int i = 0; i < 10; ++i) { 11543 #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?}} 11544 for (int i = 0; i < 10; ++i) 11545 ++a; 11546 } 11547 11548 // TEAMS DISTRIBUTE SIMD DIRECTIVE 11549 #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?}} 11550 for (int i = 0; i < 10; ++i) 11551 ; 11552 #pragma omp target 11553 #pragma omp teams distribute simd 11554 for (int i = 0; i < 10; ++i) { 11555 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11556 for (int i = 0; i < 10; ++i) 11557 ; 11558 } 11559 #pragma omp target 11560 #pragma omp teams distribute simd 11561 for (int i = 0; i < 10; ++i) { 11562 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11563 for (int i = 0; i < 10; ++i) 11564 ; 11565 } 11566 #pragma omp target 11567 #pragma omp teams distribute simd 11568 for (int i = 0; i < 10; ++i) { 11569 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11570 for (int i = 0; i < 10; ++i) 11571 ; 11572 } 11573 #pragma omp target 11574 #pragma omp teams distribute simd 11575 for (int i = 0; i < 10; ++i) { 11576 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11577 for (int i = 0; i < 10; ++i) 11578 ; 11579 } 11580 #pragma omp target 11581 #pragma omp teams distribute simd 11582 for (int i = 0; i < 10; ++i) { 11583 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11584 for (int i = 0; i < 10; ++i) 11585 ; 11586 } 11587 #pragma omp target 11588 #pragma omp teams distribute 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 for (int i = 0; i < 10; ++i) 11592 ; 11593 } 11594 #pragma omp target 11595 #pragma omp teams distribute simd 11596 for (int i = 0; i < 10; ++i) { 11597 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11598 { 11599 bar(); 11600 } 11601 } 11602 #pragma omp target 11603 #pragma omp teams distribute simd 11604 for (int i = 0; i < 10; ++i) { 11605 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11606 { 11607 bar(); 11608 } 11609 } 11610 #pragma omp target 11611 #pragma omp teams distribute simd 11612 for (int i = 0; i < 10; ++i) { 11613 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11614 { 11615 bar(); 11616 } 11617 } 11618 #pragma omp target 11619 #pragma omp teams distribute simd 11620 for (int i = 0; i < 10; ++i) { 11621 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11622 { 11623 bar(); 11624 } 11625 } 11626 #pragma omp target 11627 #pragma omp teams distribute simd 11628 for (int i = 0; i < 10; ++i) { 11629 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11630 { 11631 bar(); 11632 } 11633 } 11634 #pragma omp target 11635 #pragma omp teams distribute simd 11636 for (int i = 0; i < 10; ++i) { 11637 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11638 { 11639 #pragma omp single 11640 { 11641 bar(); 11642 } 11643 } 11644 } 11645 #pragma omp target 11646 #pragma omp teams distribute simd 11647 for (int i = 0; i < 10; ++i) { 11648 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11649 for (int i = 0; i < 10; ++i) 11650 ; 11651 } 11652 #pragma omp target 11653 #pragma omp teams distribute simd 11654 for (int i = 0; i < 10; ++i) { 11655 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11656 for (int i = 0; i < 10; ++i) 11657 ; 11658 } 11659 #pragma omp target 11660 #pragma omp teams distribute simd 11661 for (int i = 0; i < 10; ++i) { 11662 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11663 { 11664 bar(); 11665 } 11666 } 11667 #pragma omp target 11668 #pragma omp teams distribute simd 11669 for (int i = 0; i < 10; ++i) { 11670 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11671 { 11672 bar(); 11673 } 11674 } 11675 #pragma omp target 11676 #pragma omp teams distribute simd 11677 for (int i = 0; i < 10; ++i) { 11678 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11679 bar(); 11680 } 11681 #pragma omp target 11682 #pragma omp teams distribute simd 11683 for (int i = 0; i < 10; ++i) { 11684 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11685 bar(); 11686 } 11687 #pragma omp target 11688 #pragma omp teams distribute simd 11689 for (int i = 0; i < 10; ++i) { 11690 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11691 bar(); 11692 } 11693 #pragma omp target 11694 #pragma omp teams distribute simd 11695 for (int i = 0; i < 10; ++i) { 11696 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11697 bar(); 11698 } 11699 #pragma omp target 11700 #pragma omp teams distribute simd 11701 for (int i = 0; i < 10; ++i) { 11702 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11703 bar(); 11704 } 11705 #pragma omp target 11706 #pragma omp teams distribute simd 11707 for (int i = 0; i < 10; ++i) { 11708 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11709 ++a; 11710 } 11711 #pragma omp target 11712 #pragma omp teams distribute simd 11713 for (int i = 0; i < 10; ++i) { 11714 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11715 ++a; 11716 } 11717 #pragma omp target 11718 #pragma omp teams distribute simd 11719 for (int i = 0; i < 10; ++i) { 11720 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11721 ++a; 11722 } 11723 #pragma omp target 11724 #pragma omp teams distribute simd 11725 for (int i = 0; i < 10; ++i) { 11726 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11727 for (int i = 0; i < 10; ++i) 11728 ; 11729 } 11730 #pragma omp target 11731 #pragma omp teams distribute simd 11732 for (int i = 0; i < 10; ++i) { 11733 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11734 ++a; 11735 } 11736 #pragma omp target 11737 #pragma omp teams distribute simd 11738 for (int i = 0; i < 10; ++i) { 11739 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11740 ++a; 11741 } 11742 #pragma omp target 11743 #pragma omp teams distribute simd 11744 for (int i = 0; i < 10; ++i) { 11745 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11746 ++a; 11747 } 11748 #pragma omp target 11749 #pragma omp teams distribute simd 11750 for (int i = 0; i < 10; ++i) { 11751 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11752 ++a; 11753 } 11754 #pragma omp target 11755 #pragma omp teams distribute simd 11756 for (int i = 0; i < 10; ++i) { 11757 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11758 for (int i = 0; i < 10; ++i) 11759 ++a; 11760 } 11761 #pragma omp target 11762 #pragma omp teams distribute simd 11763 for (int i = 0; i < 10; ++i) { 11764 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11765 for (int i = 0; i < 10; ++i) 11766 ++a; 11767 } 11768 #pragma omp target 11769 #pragma omp teams distribute simd 11770 for (int i = 0; i < 10; ++i) { 11771 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11772 for (int i = 0; i < 10; ++i) 11773 ++a; 11774 } 11775 #pragma omp target 11776 #pragma omp teams distribute simd 11777 for (int i = 0; i < 10; ++i) { 11778 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11779 for (int i = 0; i < 10; ++i) 11780 ++a; 11781 } 11782 return foo<int>(); 11783 } 11784