1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s 2 3 void bar(); 4 5 template <class T> 6 void foo() { 7 T a = T(); 8 // PARALLEL DIRECTIVE 9 #pragma omp parallel 10 #pragma omp for 11 for (int i = 0; i < 10; ++i) 12 ; 13 #pragma omp parallel 14 #pragma omp simd 15 for (int i = 0; i < 10; ++i) 16 ; 17 #pragma omp parallel 18 #pragma omp for simd 19 for (int i = 0; i < 10; ++i) 20 ; 21 #pragma omp parallel 22 #pragma omp sections 23 { 24 bar(); 25 } 26 #pragma omp parallel 27 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 28 { 29 bar(); 30 } 31 #pragma omp parallel 32 #pragma omp single 33 bar(); 34 35 #pragma omp parallel 36 #pragma omp master 37 { 38 bar(); 39 } 40 #pragma omp parallel 41 #pragma omp critical 42 { 43 bar(); 44 } 45 #pragma omp parallel 46 #pragma omp parallel for 47 for (int i = 0; i < 10; ++i) 48 ; 49 #pragma omp parallel 50 #pragma omp parallel for simd 51 for (int i = 0; i < 10; ++i) 52 ; 53 #pragma omp parallel 54 #pragma omp parallel sections 55 { 56 bar(); 57 } 58 #pragma omp parallel 59 #pragma omp task 60 { 61 bar(); 62 } 63 #pragma omp parallel 64 { 65 #pragma omp taskyield 66 bar(); 67 } 68 #pragma omp parallel 69 { 70 #pragma omp barrier 71 bar(); 72 } 73 #pragma omp parallel 74 { 75 #pragma omp taskwait 76 bar(); 77 } 78 #pragma omp parallel 79 { 80 #pragma omp flush 81 bar(); 82 } 83 #pragma omp parallel 84 { 85 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 86 bar(); 87 } 88 #pragma omp parallel 89 { 90 #pragma omp atomic 91 ++a; 92 } 93 #pragma omp parallel 94 { 95 #pragma omp target 96 ++a; 97 } 98 #pragma omp parallel 99 { 100 #pragma omp target parallel 101 ++a; 102 } 103 #pragma omp parallel 104 { 105 #pragma omp target parallel for 106 for (int i = 0; i < 10; ++i) 107 ; 108 } 109 #pragma omp parallel 110 { 111 #pragma omp target enter data map(to: a) 112 ++a; 113 } 114 #pragma omp parallel 115 { 116 #pragma omp target exit data map(from: a) 117 ++a; 118 } 119 #pragma omp parallel 120 { 121 #pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 122 ++a; 123 } 124 #pragma omp parallel 125 { 126 #pragma omp taskloop 127 for (int i = 0; i < 10; ++i) 128 ++a; 129 } 130 #pragma omp parallel 131 { 132 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 133 for (int i = 0; i < 10; ++i) 134 ; 135 } 136 #pragma omp parallel 137 { 138 #pragma omp target update to(a) 139 } 140 #pragma omp parallel 141 { 142 #pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}} 143 for (int i = 0; i < 10; ++i) 144 ; 145 } 146 #pragma omp parallel 147 { 148 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 149 for (int i = 0; i < 10; ++i) 150 ; 151 } 152 #pragma omp parallel 153 { 154 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 155 for (int i = 0; i < 10; ++i) 156 ; 157 } 158 #pragma omp parallel 159 { 160 #pragma omp target simd // OK 161 for (int i = 0; i < 10; ++i) 162 ; 163 } 164 #pragma omp parallel 165 { 166 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 167 for (int i = 0; i < 10; ++i) 168 ; 169 } 170 #pragma omp parallel 171 { 172 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 173 for (int i = 0; i < 10; ++i) 174 ; 175 } 176 #pragma omp parallel 177 { 178 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 179 for (int i = 0; i < 10; ++i) 180 ; 181 } 182 #pragma omp parallel 183 { 184 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 185 for (int i = 0; i < 10; ++i) 186 ; 187 } 188 #pragma omp parallel 189 { 190 #pragma omp target teams // OK 191 ++a; 192 } 193 194 // SIMD DIRECTIVE 195 #pragma omp simd 196 for (int i = 0; i < 10; ++i) { 197 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 198 for (int i = 0; i < 10; ++i) 199 ; 200 } 201 #pragma omp simd 202 for (int i = 0; i < 10; ++i) { 203 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 204 for (int i = 0; i < 10; ++i) 205 ; 206 } 207 #pragma omp simd 208 for (int i = 0; i < 10; ++i) { 209 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 210 for (int i = 0; i < 10; ++i) 211 ; 212 } 213 #pragma omp simd 214 for (int i = 0; i < 10; ++i) { 215 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 216 for (int i = 0; i < 10; ++i) 217 ; 218 } 219 #pragma omp simd 220 for (int i = 0; i < 10; ++i) { 221 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 222 { 223 bar(); 224 } 225 } 226 #pragma omp simd 227 for (int i = 0; i < 10; ++i) { 228 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 229 { 230 bar(); 231 } 232 } 233 #pragma omp simd 234 for (int i = 0; i < 10; ++i) { 235 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 236 { 237 bar(); 238 } 239 } 240 #pragma omp simd 241 for (int i = 0; i < 10; ++i) { 242 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 243 { 244 bar(); 245 } 246 } 247 #pragma omp simd 248 for (int i = 0; i < 10; ++i) { 249 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 250 { 251 bar(); 252 } 253 } 254 #pragma omp simd 255 for (int i = 0; i < 10; ++i) { 256 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 257 for (int i = 0; i < 10; ++i) 258 ; 259 } 260 #pragma omp simd 261 for (int i = 0; i < 10; ++i) { 262 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 263 for (int i = 0; i < 10; ++i) 264 ; 265 } 266 #pragma omp simd 267 for (int i = 0; i < 10; ++i) { 268 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 269 { 270 bar(); 271 } 272 } 273 #pragma omp simd 274 for (int i = 0; i < 10; ++i) { 275 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 276 { 277 bar(); 278 } 279 } 280 #pragma omp simd 281 for (int i = 0; i < 10; ++i) { 282 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 283 bar(); 284 } 285 #pragma omp simd 286 for (int i = 0; i < 10; ++i) { 287 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 288 bar(); 289 } 290 #pragma omp simd 291 for (int i = 0; i < 10; ++i) { 292 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 293 bar(); 294 } 295 #pragma omp simd 296 for (int i = 0; i < 10; ++i) { 297 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 298 bar(); 299 } 300 #pragma omp simd 301 for (int i = 0; i < 10; ++i) { 302 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 303 bar(); 304 } 305 #pragma omp simd 306 for (int i = 0; i < 10; ++i) { 307 #pragma omp ordered simd // OK 308 bar(); 309 } 310 #pragma omp simd 311 for (int i = 0; i < 10; ++i) { 312 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 313 bar(); 314 } 315 #pragma omp simd 316 for (int i = 0; i < 10; ++i) { 317 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 318 ++a; 319 } 320 #pragma omp simd 321 for (int i = 0; i < 10; ++i) { 322 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 323 ++a; 324 } 325 #pragma omp simd 326 for (int i = 0; i < 10; ++i) { 327 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 328 ++a; 329 } 330 #pragma omp simd 331 for (int i = 0; i < 10; ++i) { 332 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 333 for (int i = 0; i < 10; ++i) 334 ; 335 } 336 #pragma omp simd 337 for (int i = 0; i < 10; ++i) { 338 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 339 ++a; 340 } 341 #pragma omp simd 342 for (int i = 0; i < 10; ++i) { 343 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 344 ++a; 345 } 346 #pragma omp simd 347 for (int i = 0; i < 10; ++i) { 348 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 349 ++a; 350 } 351 #pragma omp simd 352 for (int i = 0; i < 10; ++i) { 353 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 354 for (int i = 0; i < 10; ++i) 355 ++a; 356 } 357 #pragma omp simd 358 for (int i = 0; i < 10; ++i) { 359 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 360 for (int j = 0; j < 10; ++j) 361 ; 362 } 363 #pragma omp simd 364 for (int i = 0; i < 10; ++i) { 365 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 366 } 367 #pragma omp simd 368 for (int i = 0; i < 10; ++i) { 369 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 370 for (int j = 0; j < 10; ++j) 371 ; 372 } 373 #pragma omp simd 374 for (int i = 0; i < 10; ++i) { 375 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 376 for (int j = 0; j < 10; ++j) 377 ; 378 } 379 #pragma omp simd 380 for (int i = 0; i < 10; ++i) { 381 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 382 for (int j = 0; j < 10; ++j) 383 ; 384 } 385 #pragma omp simd 386 for (int i = 0; i < 10; ++i) { 387 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 388 for (int j = 0; j < 10; ++j) 389 ; 390 } 391 #pragma omp simd 392 for (int i = 0; i < 10; ++i) { 393 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 394 for (int j = 0; j < 10; ++j) 395 ; 396 } 397 #pragma omp simd 398 for (int i = 0; i < 10; ++i) { 399 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 400 for (int j = 0; j < 10; ++j) 401 ; 402 } 403 #pragma omp simd 404 for (int i = 0; i < 10; ++i) { 405 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 406 for (int j = 0; j < 10; ++j) 407 ; 408 } 409 #pragma omp simd 410 for (int i = 0; i < 10; ++i) { 411 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 412 for (int j = 0; j < 10; ++j) 413 ; 414 } 415 #pragma omp simd 416 for (int i = 0; i < 10; ++i) { 417 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 418 ++a; 419 } 420 421 // FOR DIRECTIVE 422 #pragma omp for 423 for (int i = 0; i < 10; ++i) { 424 #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?}} 425 for (int i = 0; i < 10; ++i) 426 ; 427 } 428 #pragma omp for 429 for (int i = 0; i < 10; ++i) { 430 #pragma omp simd 431 for (int i = 0; i < 10; ++i) 432 ; 433 } 434 #pragma omp for 435 for (int i = 0; i < 10; ++i) { 436 #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?}} 437 for (int i = 0; i < 10; ++i) 438 ; 439 } 440 #pragma omp for 441 for (int i = 0; i < 10; ++i) { 442 #pragma omp parallel 443 for (int i = 0; i < 10; ++i) 444 ; 445 } 446 #pragma omp for 447 for (int i = 0; i < 10; ++i) { 448 #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?}} 449 { 450 bar(); 451 } 452 } 453 #pragma omp for 454 for (int i = 0; i < 10; ++i) { 455 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 456 { 457 bar(); 458 } 459 } 460 #pragma omp for 461 for (int i = 0; i < 10; ++i) { 462 #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?}} 463 { 464 bar(); 465 } 466 } 467 468 #pragma omp for 469 for (int i = 0; i < 10; ++i) { 470 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 471 { 472 bar(); 473 } 474 } 475 #pragma omp for 476 for (int i = 0; i < 10; ++i) { 477 #pragma omp critical 478 { 479 bar(); 480 } 481 } 482 #pragma omp for 483 for (int i = 0; i < 10; ++i) { 484 #pragma omp parallel 485 { 486 #pragma omp single // OK 487 { 488 bar(); 489 } 490 #pragma omp for // OK 491 for (int i = 0; i < 10; ++i) 492 ; 493 #pragma omp sections // OK 494 { 495 bar(); 496 } 497 } 498 } 499 #pragma omp for 500 for (int i = 0; i < 10; ++i) { 501 #pragma omp parallel for 502 for (int i = 0; i < 10; ++i) 503 ; 504 } 505 #pragma omp for 506 for (int i = 0; i < 10; ++i) { 507 #pragma omp parallel for simd 508 for (int i = 0; i < 10; ++i) 509 ; 510 } 511 #pragma omp for 512 for (int i = 0; i < 10; ++i) { 513 #pragma omp parallel sections 514 { 515 bar(); 516 } 517 } 518 #pragma omp for 519 for (int i = 0; i < 10; ++i) { 520 #pragma omp task 521 { 522 bar(); 523 } 524 } 525 #pragma omp for 526 for (int i = 0; i < 10; ++i) { 527 #pragma omp taskyield 528 bar(); 529 } 530 #pragma omp for 531 for (int i = 0; i < 10; ++i) { 532 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 533 bar(); 534 } 535 #pragma omp for 536 for (int i = 0; i < 10; ++i) { 537 #pragma omp taskwait 538 bar(); 539 } 540 #pragma omp for 541 for (int i = 0; i < 10; ++i) { 542 #pragma omp flush 543 bar(); 544 } 545 #pragma omp for 546 for (int i = 0; i < 10; ++i) { 547 #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?}} 548 bar(); 549 } 550 #pragma omp for ordered 551 for (int i = 0; i < 10; ++i) { 552 #pragma omp ordered // OK 553 bar(); 554 } 555 #pragma omp for 556 for (int i = 0; i < 10; ++i) { 557 #pragma omp atomic 558 ++a; 559 } 560 #pragma omp for 561 for (int i = 0; i < 10; ++i) { 562 #pragma omp target 563 ++a; 564 } 565 #pragma omp for 566 for (int i = 0; i < 10; ++i) { 567 #pragma omp target parallel 568 ++a; 569 } 570 #pragma omp for 571 for (int i = 0; i < 10; ++i) { 572 #pragma omp target parallel for 573 for (int i = 0; i < 10; ++i) 574 ; 575 } 576 #pragma omp for 577 for (int i = 0; i < 10; ++i) { 578 #pragma omp target enter data map(to: a) 579 ++a; 580 } 581 #pragma omp for 582 for (int i = 0; i < 10; ++i) { 583 #pragma omp target exit data map(from: a) 584 ++a; 585 } 586 #pragma omp for 587 for (int i = 0; i < 10; ++i) { 588 #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?}} 589 ++a; 590 } 591 #pragma omp for 592 for (int i = 0; i < 10; ++i) { 593 #pragma omp taskloop 594 for (int i = 0; i < 10; ++i) 595 ++a; 596 } 597 #pragma omp for 598 for (int i = 0; i < 10; ++i) { 599 #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?}} 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 target update to(a) 606 } 607 #pragma omp for 608 for (int i = 0; i < 10; ++i) { 609 #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?}} 610 for (int j = 0; j < 10; ++j) 611 ; 612 } 613 #pragma omp for 614 for (int i = 0; i < 10; ++i) { 615 #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?}} 616 for (int j = 0; j < 10; ++j) 617 ; 618 } 619 #pragma omp for 620 for (int i = 0; i < 10; ++i) { 621 #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?}} 622 for (int j = 0; j < 10; ++j) 623 ; 624 } 625 #pragma omp for 626 for (int i = 0; i < 10; ++i) { 627 #pragma omp target simd // OK 628 for (int j = 0; j < 10; ++j) 629 ; 630 } 631 #pragma omp for 632 for (int i = 0; i < 10; ++i) { 633 #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?}} 634 for (int j = 0; j < 10; ++j) 635 ; 636 } 637 #pragma omp for 638 for (int i = 0; i < 10; ++i) { 639 #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?}} 640 for (int j = 0; j < 10; ++j) 641 ; 642 } 643 #pragma omp for 644 for (int i = 0; i < 10; ++i) { 645 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 646 for (int j = 0; j < 10; ++j) 647 ; 648 } 649 #pragma omp for 650 for (int i = 0; i < 10; ++i) { 651 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 652 for (int j = 0; j < 10; ++j) 653 ; 654 } 655 #pragma omp for 656 for (int i = 0; i < 10; ++i) { 657 #pragma omp target teams // OK 658 ++a; 659 } 660 661 // FOR SIMD DIRECTIVE 662 #pragma omp for simd 663 for (int i = 0; i < 10; ++i) { 664 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 665 for (int i = 0; i < 10; ++i) 666 ; 667 } 668 #pragma omp for simd 669 for (int i = 0; i < 10; ++i) { 670 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 671 for (int i = 0; i < 10; ++i) 672 ; 673 } 674 #pragma omp for simd 675 for (int i = 0; i < 10; ++i) { 676 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 677 for (int i = 0; i < 10; ++i) 678 ; 679 } 680 #pragma omp for simd 681 for (int i = 0; i < 10; ++i) { 682 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 683 for (int i = 0; i < 10; ++i) 684 ; 685 } 686 #pragma omp for simd 687 for (int i = 0; i < 10; ++i) { 688 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 689 { 690 bar(); 691 } 692 } 693 #pragma omp for simd 694 for (int i = 0; i < 10; ++i) { 695 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 696 { 697 bar(); 698 } 699 } 700 #pragma omp for simd 701 for (int i = 0; i < 10; ++i) { 702 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 703 { 704 bar(); 705 } 706 } 707 #pragma omp for simd 708 for (int i = 0; i < 10; ++i) { 709 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 710 { 711 bar(); 712 } 713 } 714 #pragma omp for simd 715 for (int i = 0; i < 10; ++i) { 716 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 717 { 718 bar(); 719 } 720 } 721 #pragma omp for simd 722 for (int i = 0; i < 10; ++i) { 723 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 724 for (int i = 0; i < 10; ++i) 725 ; 726 } 727 #pragma omp for simd 728 for (int i = 0; i < 10; ++i) { 729 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 730 for (int i = 0; i < 10; ++i) 731 ; 732 } 733 #pragma omp for simd 734 for (int i = 0; i < 10; ++i) { 735 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 736 { 737 bar(); 738 } 739 } 740 #pragma omp for simd 741 for (int i = 0; i < 10; ++i) { 742 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 743 { 744 bar(); 745 } 746 } 747 #pragma omp for simd 748 for (int i = 0; i < 10; ++i) { 749 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 750 bar(); 751 } 752 #pragma omp for simd 753 for (int i = 0; i < 10; ++i) { 754 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 755 bar(); 756 } 757 #pragma omp for simd 758 for (int i = 0; i < 10; ++i) { 759 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 760 bar(); 761 } 762 #pragma omp for simd 763 for (int i = 0; i < 10; ++i) { 764 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 765 bar(); 766 } 767 #pragma omp for simd 768 for (int i = 0; i < 10; ++i) { 769 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 770 bar(); 771 } 772 #pragma omp for simd 773 for (int i = 0; i < 10; ++i) { 774 #pragma omp ordered simd // OK 775 bar(); 776 } 777 #pragma omp for simd 778 for (int i = 0; i < 10; ++i) { 779 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 780 bar(); 781 } 782 #pragma omp for simd 783 for (int i = 0; i < 10; ++i) { 784 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 785 ++a; 786 } 787 #pragma omp for simd 788 for (int i = 0; i < 10; ++i) { 789 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 790 ++a; 791 } 792 #pragma omp for simd 793 for (int i = 0; i < 10; ++i) { 794 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 795 ++a; 796 } 797 #pragma omp for simd 798 for (int i = 0; i < 10; ++i) { 799 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 800 for (int i = 0; i < 10; ++i) 801 ; 802 } 803 #pragma omp for simd 804 for (int i = 0; i < 10; ++i) { 805 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 806 ++a; 807 } 808 #pragma omp for simd 809 for (int i = 0; i < 10; ++i) { 810 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 811 ++a; 812 } 813 #pragma omp for simd 814 for (int i = 0; i < 10; ++i) { 815 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 816 ++a; 817 } 818 #pragma omp for simd 819 for (int i = 0; i < 10; ++i) { 820 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 821 for (int i = 0; i < 10; ++i) 822 ++a; 823 } 824 #pragma omp for simd 825 for (int i = 0; i < 10; ++i) { 826 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 827 for (int j = 0; j < 10; ++j) 828 ; 829 } 830 #pragma omp for simd 831 for (int i = 0; i < 10; ++i) { 832 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 833 bar(); 834 } 835 #pragma omp for simd 836 for (int i = 0; i < 10; ++i) { 837 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 838 for (int j = 0; j < 10; ++j) 839 ; 840 } 841 #pragma omp for simd 842 for (int i = 0; i < 10; ++i) { 843 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 844 for (int j = 0; j < 10; ++j) 845 ; 846 } 847 #pragma omp for simd 848 for (int i = 0; i < 10; ++i) { 849 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 850 for (int j = 0; j < 10; ++j) 851 ; 852 } 853 #pragma omp for simd 854 for (int i = 0; i < 10; ++i) { 855 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 856 for (int j = 0; j < 10; ++j) 857 ; 858 } 859 #pragma omp for simd 860 for (int i = 0; i < 10; ++i) { 861 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 862 for (int j = 0; j < 10; ++j) 863 ; 864 } 865 #pragma omp for simd 866 for (int i = 0; i < 10; ++i) { 867 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 868 for (int j = 0; j < 10; ++j) 869 ; 870 } 871 #pragma omp for simd 872 for (int i = 0; i < 10; ++i) { 873 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 874 for (int j = 0; j < 10; ++j) 875 ; 876 } 877 #pragma omp for simd 878 for (int i = 0; i < 10; ++i) { 879 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 880 for (int j = 0; j < 10; ++j) 881 ; 882 } 883 #pragma omp for simd 884 for (int i = 0; i < 10; ++i) { 885 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 886 a++; 887 } 888 889 // SECTIONS DIRECTIVE 890 #pragma omp sections 891 { 892 #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?}} 893 for (int i = 0; i < 10; ++i) 894 ; 895 } 896 #pragma omp sections 897 { 898 #pragma omp simd 899 for (int i = 0; i < 10; ++i) 900 ; 901 } 902 #pragma omp sections 903 { 904 #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?}} 905 for (int i = 0; i < 10; ++i) 906 ; 907 } 908 #pragma omp sections 909 { 910 #pragma omp parallel 911 for (int i = 0; i < 10; ++i) 912 ; 913 } 914 #pragma omp sections 915 { 916 #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?}} 917 { 918 bar(); 919 } 920 } 921 #pragma omp sections 922 { 923 #pragma omp section 924 { 925 bar(); 926 } 927 } 928 #pragma omp sections 929 { 930 #pragma omp parallel 931 { 932 #pragma omp single // OK 933 { 934 bar(); 935 } 936 #pragma omp for // OK 937 for (int i = 0; i < 10; ++i) 938 ; 939 #pragma omp sections // OK 940 { 941 bar(); 942 } 943 } 944 } 945 #pragma omp sections 946 { 947 #pragma omp parallel 948 { 949 #pragma omp master // OK 950 { 951 bar(); 952 } 953 #pragma omp for // OK 954 for (int i = 0; i < 10; ++i) 955 ; 956 #pragma omp master // OK 957 { 958 bar(); 959 } 960 } 961 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 962 bar(); 963 } 964 #pragma omp sections 965 { 966 #pragma omp parallel 967 { 968 #pragma omp critical(A) // OK 969 { 970 bar(); 971 } 972 #pragma omp for // OK 973 for (int i = 0; i < 10; ++i) 974 ; 975 #pragma omp critical // OK 976 { 977 bar(); 978 } 979 } 980 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 981 bar(); 982 } 983 #pragma omp sections 984 { 985 #pragma omp parallel for 986 for (int i = 0; i < 10; ++i) 987 ; 988 } 989 #pragma omp sections 990 { 991 #pragma omp parallel for simd 992 for (int i = 0; i < 10; ++i) 993 ; 994 } 995 #pragma omp sections 996 { 997 #pragma omp parallel sections 998 { 999 bar(); 1000 } 1001 } 1002 #pragma omp sections 1003 { 1004 #pragma omp task 1005 { 1006 bar(); 1007 } 1008 } 1009 #pragma omp sections 1010 { 1011 #pragma omp taskyield 1012 } 1013 #pragma omp sections 1014 { 1015 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 1016 } 1017 #pragma omp sections 1018 { 1019 #pragma omp taskwait 1020 } 1021 #pragma omp sections 1022 { 1023 #pragma omp flush 1024 } 1025 #pragma omp sections 1026 { 1027 #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?}} 1028 bar(); 1029 } 1030 #pragma omp sections 1031 { 1032 #pragma omp atomic 1033 ++a; 1034 } 1035 #pragma omp sections 1036 { 1037 #pragma omp target 1038 ++a; 1039 } 1040 #pragma omp sections 1041 { 1042 #pragma omp target parallel 1043 ++a; 1044 } 1045 #pragma omp sections 1046 { 1047 #pragma omp target parallel for 1048 for (int i = 0; i < 10; ++i) 1049 ; 1050 } 1051 #pragma omp sections 1052 { 1053 #pragma omp target enter data map(to: a) 1054 } 1055 #pragma omp sections 1056 { 1057 #pragma omp target exit data map(from: a) 1058 } 1059 #pragma omp sections 1060 { 1061 #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?}} 1062 ++a; 1063 } 1064 #pragma omp sections 1065 { 1066 #pragma omp taskloop 1067 for (int i = 0; i < 10; ++i) 1068 ++a; 1069 } 1070 #pragma omp sections 1071 { 1072 #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?}} 1073 for (int i = 0; i < 10; ++i) 1074 ; 1075 } 1076 #pragma omp sections 1077 { 1078 #pragma omp target update to(a) 1079 } 1080 #pragma omp sections 1081 { 1082 #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?}} 1083 for (int i = 0; i < 10; ++i) 1084 ; 1085 } 1086 #pragma omp sections 1087 { 1088 #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?}} 1089 for (int i = 0; i < 10; ++i) 1090 ; 1091 } 1092 #pragma omp sections 1093 { 1094 #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?}} 1095 for (int i = 0; i < 10; ++i) 1096 ; 1097 } 1098 #pragma omp sections 1099 { 1100 #pragma omp target simd // OK 1101 for (int i = 0; i < 10; ++i) 1102 ; 1103 } 1104 #pragma omp sections 1105 { 1106 #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?}} 1107 for (int i = 0; i < 10; ++i) 1108 ; 1109 } 1110 #pragma omp sections 1111 { 1112 #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?}} 1113 for (int i = 0; i < 10; ++i) 1114 ; 1115 } 1116 #pragma omp sections 1117 { 1118 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1119 for (int i = 0; i < 10; ++i) 1120 ; 1121 } 1122 #pragma omp sections 1123 { 1124 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1125 for (int i = 0; i < 10; ++i) 1126 ; 1127 } 1128 #pragma omp sections 1129 { 1130 #pragma omp target teams // OK 1131 ++a; 1132 } 1133 1134 // SECTION DIRECTIVE 1135 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1136 { 1137 bar(); 1138 } 1139 #pragma omp sections 1140 { 1141 #pragma omp section 1142 { 1143 #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?}} 1144 for (int i = 0; i < 10; ++i) 1145 ; 1146 } 1147 } 1148 #pragma omp sections 1149 { 1150 #pragma omp section 1151 { 1152 #pragma omp simd 1153 for (int i = 0; i < 10; ++i) 1154 ; 1155 } 1156 } 1157 #pragma omp sections 1158 { 1159 #pragma omp section 1160 { 1161 #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?}} 1162 for (int i = 0; i < 10; ++i) 1163 ; 1164 } 1165 } 1166 #pragma omp sections 1167 { 1168 #pragma omp section 1169 { 1170 #pragma omp parallel 1171 for (int i = 0; i < 10; ++i) 1172 ; 1173 } 1174 } 1175 #pragma omp sections 1176 { 1177 #pragma omp section 1178 { 1179 #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?}} 1180 { 1181 bar(); 1182 } 1183 } 1184 } 1185 #pragma omp sections 1186 { 1187 #pragma omp section 1188 { 1189 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1190 { 1191 bar(); 1192 } 1193 } 1194 } 1195 #pragma omp sections 1196 { 1197 #pragma omp section 1198 { 1199 #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?}} 1200 bar(); 1201 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1202 bar(); 1203 #pragma omp critical 1204 bar(); 1205 } 1206 } 1207 #pragma omp sections 1208 { 1209 #pragma omp section 1210 { 1211 #pragma omp parallel 1212 { 1213 #pragma omp single // OK 1214 { 1215 bar(); 1216 } 1217 #pragma omp for // OK 1218 for (int i = 0; i < 10; ++i) 1219 ; 1220 #pragma omp for simd // OK 1221 for (int i = 0; i < 10; ++i) 1222 ; 1223 #pragma omp sections // OK 1224 { 1225 bar(); 1226 } 1227 } 1228 } 1229 } 1230 #pragma omp sections 1231 { 1232 #pragma omp section 1233 { 1234 #pragma omp parallel for 1235 for (int i = 0; i < 10; ++i) 1236 ; 1237 } 1238 } 1239 #pragma omp sections 1240 { 1241 #pragma omp section 1242 { 1243 #pragma omp parallel for simd 1244 for (int i = 0; i < 10; ++i) 1245 ; 1246 } 1247 } 1248 #pragma omp sections 1249 { 1250 #pragma omp section 1251 { 1252 #pragma omp parallel sections 1253 { 1254 bar(); 1255 } 1256 } 1257 } 1258 #pragma omp sections 1259 { 1260 #pragma omp section 1261 { 1262 #pragma omp task 1263 { 1264 bar(); 1265 } 1266 } 1267 } 1268 #pragma omp sections 1269 { 1270 #pragma omp section 1271 { 1272 #pragma omp taskyield 1273 bar(); 1274 } 1275 } 1276 #pragma omp sections 1277 { 1278 #pragma omp section 1279 { 1280 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1281 bar(); 1282 } 1283 } 1284 #pragma omp sections 1285 { 1286 #pragma omp section 1287 { 1288 #pragma omp taskwait 1289 bar(); 1290 } 1291 } 1292 #pragma omp sections 1293 { 1294 #pragma omp section 1295 { 1296 #pragma omp flush 1297 bar(); 1298 } 1299 } 1300 #pragma omp sections 1301 { 1302 #pragma omp section 1303 { 1304 #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?}} 1305 bar(); 1306 } 1307 } 1308 #pragma omp sections 1309 { 1310 #pragma omp section 1311 #pragma omp atomic 1312 ++a; 1313 } 1314 #pragma omp sections 1315 { 1316 #pragma omp section 1317 #pragma omp target 1318 ++a; 1319 } 1320 #pragma omp sections 1321 { 1322 #pragma omp section 1323 #pragma omp target parallel 1324 ++a; 1325 } 1326 #pragma omp sections 1327 { 1328 #pragma omp section 1329 { 1330 #pragma omp target parallel for 1331 for (int i = 0; i < 10; ++i) 1332 ; 1333 } 1334 } 1335 #pragma omp sections 1336 { 1337 #pragma omp section 1338 { 1339 #pragma omp target enter data map(to: a) 1340 ++a; 1341 } 1342 } 1343 #pragma omp sections 1344 { 1345 #pragma omp section 1346 { 1347 #pragma omp target exit data map(from: a) 1348 ++a; 1349 } 1350 } 1351 #pragma omp sections 1352 { 1353 #pragma omp section 1354 #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?}} 1355 ++a; 1356 } 1357 #pragma omp sections 1358 { 1359 #pragma omp section 1360 #pragma omp taskloop 1361 for (int i = 0; i < 10; ++i) 1362 ++a; 1363 } 1364 #pragma omp sections 1365 { 1366 #pragma omp section 1367 #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?}} 1368 for (int i = 0; i < 10; ++i) 1369 ; 1370 } 1371 #pragma omp sections 1372 { 1373 #pragma omp section 1374 { 1375 bar(); 1376 #pragma omp target update to(a) 1377 } 1378 } 1379 #pragma omp sections 1380 { 1381 #pragma omp section 1382 #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?}} 1383 for (int i = 0; i < 10; ++i) 1384 ; 1385 } 1386 #pragma omp sections 1387 { 1388 #pragma omp section 1389 #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?}} 1390 for (int i = 0; i < 10; ++i) 1391 ; 1392 } 1393 #pragma omp sections 1394 { 1395 #pragma omp section 1396 #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?}} 1397 for (int i = 0; i < 10; ++i) 1398 ; 1399 } 1400 #pragma omp sections 1401 { 1402 #pragma omp section 1403 #pragma omp target simd // OK 1404 for (int i = 0; i < 10; ++i) 1405 ; 1406 } 1407 #pragma omp sections 1408 { 1409 #pragma omp section 1410 #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?}} 1411 for (int i = 0; i < 10; ++i) 1412 ; 1413 } 1414 #pragma omp sections 1415 { 1416 #pragma omp section 1417 #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?}} 1418 for (int i = 0; i < 10; ++i) 1419 ; 1420 } 1421 #pragma omp sections 1422 { 1423 #pragma omp section 1424 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1425 for (int i = 0; i < 10; ++i) 1426 ; 1427 } 1428 #pragma omp sections 1429 { 1430 #pragma omp section 1431 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1432 for (int i = 0; i < 10; ++i) 1433 ; 1434 } 1435 #pragma omp sections 1436 { 1437 #pragma omp section 1438 #pragma omp target teams // OK 1439 ++a; 1440 } 1441 1442 // SINGLE DIRECTIVE 1443 #pragma omp single 1444 { 1445 #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?}} 1446 for (int i = 0; i < 10; ++i) 1447 ; 1448 } 1449 #pragma omp single 1450 { 1451 #pragma omp simd 1452 for (int i = 0; i < 10; ++i) 1453 ; 1454 } 1455 #pragma omp single 1456 { 1457 #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?}} 1458 for (int i = 0; i < 10; ++i) 1459 ; 1460 } 1461 #pragma omp single 1462 { 1463 #pragma omp parallel 1464 for (int i = 0; i < 10; ++i) 1465 ; 1466 } 1467 #pragma omp single 1468 { 1469 #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?}} 1470 { 1471 bar(); 1472 } 1473 } 1474 #pragma omp single 1475 { 1476 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1477 { 1478 bar(); 1479 } 1480 } 1481 #pragma omp single 1482 { 1483 #pragma omp critical 1484 { 1485 bar(); 1486 } 1487 } 1488 #pragma omp single 1489 { 1490 #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?}} 1491 { 1492 bar(); 1493 } 1494 } 1495 #pragma omp single 1496 { 1497 #pragma omp parallel 1498 { 1499 #pragma omp single // OK 1500 { 1501 bar(); 1502 } 1503 #pragma omp for // OK 1504 for (int i = 0; i < 10; ++i) 1505 ; 1506 #pragma omp for simd // OK 1507 for (int i = 0; i < 10; ++i) 1508 ; 1509 #pragma omp sections // OK 1510 { 1511 bar(); 1512 } 1513 } 1514 } 1515 #pragma omp single 1516 { 1517 #pragma omp parallel for 1518 for (int i = 0; i < 10; ++i) 1519 ; 1520 } 1521 #pragma omp single 1522 { 1523 #pragma omp parallel for simd 1524 for (int i = 0; i < 10; ++i) 1525 ; 1526 } 1527 #pragma omp single 1528 { 1529 #pragma omp parallel sections 1530 { 1531 bar(); 1532 } 1533 } 1534 #pragma omp single 1535 { 1536 #pragma omp task 1537 { 1538 bar(); 1539 } 1540 } 1541 #pragma omp single 1542 { 1543 #pragma omp taskyield 1544 bar(); 1545 } 1546 #pragma omp single 1547 { 1548 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1549 bar(); 1550 } 1551 #pragma omp single 1552 { 1553 #pragma omp taskwait 1554 bar(); 1555 } 1556 #pragma omp single 1557 { 1558 #pragma omp flush 1559 bar(); 1560 } 1561 #pragma omp single 1562 { 1563 #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?}} 1564 bar(); 1565 } 1566 #pragma omp single 1567 { 1568 #pragma omp atomic 1569 ++a; 1570 } 1571 #pragma omp single 1572 { 1573 #pragma omp target 1574 ++a; 1575 } 1576 #pragma omp single 1577 { 1578 #pragma omp target parallel 1579 ++a; 1580 } 1581 #pragma omp single 1582 { 1583 #pragma omp target parallel for 1584 for (int i = 0; i < 10; ++i) 1585 ; 1586 } 1587 #pragma omp single 1588 { 1589 #pragma omp target enter data map(to: a) 1590 ++a; 1591 } 1592 #pragma omp single 1593 { 1594 #pragma omp target exit data map(from: a) 1595 ++a; 1596 } 1597 #pragma omp single 1598 { 1599 #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?}} 1600 ++a; 1601 } 1602 #pragma omp single 1603 { 1604 #pragma omp taskloop 1605 for (int i = 0; i < 10; ++i) 1606 ++a; 1607 } 1608 #pragma omp single 1609 { 1610 #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?}} 1611 for (int i = 0; i < 10; ++i) 1612 ; 1613 } 1614 #pragma omp single 1615 { 1616 #pragma omp target update to(a) 1617 bar(); 1618 } 1619 #pragma omp single 1620 { 1621 #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?}} 1622 for (int i = 0; i < 10; ++i) 1623 ; 1624 } 1625 #pragma omp single 1626 { 1627 #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?}} 1628 for (int i = 0; i < 10; ++i) 1629 ; 1630 } 1631 #pragma omp single 1632 { 1633 #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?}} 1634 for (int i = 0; i < 10; ++i) 1635 ; 1636 } 1637 #pragma omp single 1638 { 1639 #pragma omp target simd // OK 1640 for (int i = 0; i < 10; ++i) 1641 ; 1642 } 1643 #pragma omp single 1644 { 1645 #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?}} 1646 for (int i = 0; i < 10; ++i) 1647 ; 1648 } 1649 #pragma omp single 1650 { 1651 #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?}} 1652 for (int i = 0; i < 10; ++i) 1653 ; 1654 } 1655 #pragma omp single 1656 { 1657 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1658 for (int i = 0; i < 10; ++i) 1659 ; 1660 } 1661 #pragma omp single 1662 { 1663 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1664 for (int i = 0; i < 10; ++i) 1665 ; 1666 } 1667 #pragma omp single 1668 { 1669 #pragma omp target teams // OK 1670 ++a; 1671 } 1672 1673 // MASTER DIRECTIVE 1674 #pragma omp master 1675 { 1676 #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?}} 1677 for (int i = 0; i < 10; ++i) 1678 ; 1679 } 1680 #pragma omp master 1681 { 1682 #pragma omp simd 1683 for (int i = 0; i < 10; ++i) 1684 ; 1685 } 1686 #pragma omp master 1687 { 1688 #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?}} 1689 for (int i = 0; i < 10; ++i) 1690 ; 1691 } 1692 #pragma omp master 1693 { 1694 #pragma omp parallel 1695 for (int i = 0; i < 10; ++i) 1696 ; 1697 } 1698 #pragma omp master 1699 { 1700 #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?}} 1701 { 1702 bar(); 1703 } 1704 } 1705 #pragma omp master 1706 { 1707 #pragma omp master // OK, though second 'master' is redundant 1708 { 1709 bar(); 1710 } 1711 } 1712 #pragma omp master 1713 { 1714 #pragma omp critical 1715 { 1716 bar(); 1717 } 1718 } 1719 #pragma omp master 1720 { 1721 #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?}} 1722 { 1723 bar(); 1724 } 1725 } 1726 #pragma omp master 1727 { 1728 #pragma omp parallel 1729 { 1730 #pragma omp master // OK 1731 { 1732 bar(); 1733 } 1734 #pragma omp for // OK 1735 for (int i = 0; i < 10; ++i) 1736 ; 1737 #pragma omp for simd // OK 1738 for (int i = 0; i < 10; ++i) 1739 ; 1740 #pragma omp sections // OK 1741 { 1742 bar(); 1743 } 1744 } 1745 } 1746 #pragma omp master 1747 { 1748 #pragma omp parallel for 1749 for (int i = 0; i < 10; ++i) 1750 ; 1751 } 1752 #pragma omp master 1753 { 1754 #pragma omp parallel for simd 1755 for (int i = 0; i < 10; ++i) 1756 ; 1757 } 1758 #pragma omp master 1759 { 1760 #pragma omp parallel sections 1761 { 1762 bar(); 1763 } 1764 } 1765 #pragma omp master 1766 { 1767 #pragma omp task 1768 { 1769 bar(); 1770 } 1771 } 1772 #pragma omp master 1773 { 1774 #pragma omp taskyield 1775 bar(); 1776 } 1777 #pragma omp master 1778 { 1779 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 1780 bar(); 1781 } 1782 #pragma omp master 1783 { 1784 #pragma omp taskwait 1785 bar(); 1786 } 1787 #pragma omp master 1788 { 1789 #pragma omp flush 1790 bar(); 1791 } 1792 #pragma omp master 1793 { 1794 #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?}} 1795 bar(); 1796 } 1797 #pragma omp master 1798 { 1799 #pragma omp atomic 1800 ++a; 1801 } 1802 #pragma omp master 1803 { 1804 #pragma omp target 1805 ++a; 1806 } 1807 #pragma omp master 1808 { 1809 #pragma omp target parallel 1810 ++a; 1811 } 1812 #pragma omp master 1813 { 1814 #pragma omp target parallel for 1815 for (int i = 0; i < 10; ++i) 1816 ; 1817 } 1818 #pragma omp master 1819 { 1820 #pragma omp target enter data map(to: a) 1821 ++a; 1822 } 1823 #pragma omp master 1824 { 1825 #pragma omp target exit data map(from: a) 1826 ++a; 1827 } 1828 #pragma omp master 1829 { 1830 #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?}} 1831 ++a; 1832 } 1833 #pragma omp master 1834 { 1835 #pragma omp taskloop 1836 for (int i = 0; i < 10; ++i) 1837 ++a; 1838 } 1839 #pragma omp master 1840 { 1841 #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?}} 1842 for (int i = 0; i < 10; ++i) 1843 ; 1844 } 1845 #pragma omp master 1846 { 1847 #pragma omp target update to(a) 1848 bar(); 1849 } 1850 #pragma omp master 1851 { 1852 #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?}} 1853 for (int i = 0; i < 10; ++i) 1854 ; 1855 } 1856 #pragma omp master 1857 { 1858 #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?}} 1859 for (int i = 0; i < 10; ++i) 1860 ; 1861 } 1862 #pragma omp master 1863 { 1864 #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?}} 1865 for (int i = 0; i < 10; ++i) 1866 ; 1867 } 1868 #pragma omp master 1869 { 1870 #pragma omp target simd // OK 1871 for (int i = 0; i < 10; ++i) 1872 ; 1873 } 1874 #pragma omp master 1875 { 1876 #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?}} 1877 for (int i = 0; i < 10; ++i) 1878 ; 1879 } 1880 #pragma omp master 1881 { 1882 #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?}} 1883 for (int i = 0; i < 10; ++i) 1884 ; 1885 } 1886 #pragma omp master 1887 { 1888 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 1889 for (int i = 0; i < 10; ++i) 1890 ; 1891 } 1892 #pragma omp master 1893 { 1894 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 1895 for (int i = 0; i < 10; ++i) 1896 ; 1897 } 1898 #pragma omp master 1899 { 1900 #pragma omp target teams // OK 1901 a++; 1902 } 1903 1904 // CRITICAL DIRECTIVE 1905 #pragma omp critical 1906 { 1907 #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?}} 1908 for (int i = 0; i < 10; ++i) 1909 ; 1910 } 1911 #pragma omp critical 1912 { 1913 #pragma omp simd 1914 for (int i = 0; i < 10; ++i) 1915 ; 1916 } 1917 #pragma omp critical 1918 { 1919 #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?}} 1920 for (int i = 0; i < 10; ++i) 1921 ; 1922 } 1923 #pragma omp critical 1924 { 1925 #pragma omp parallel 1926 for (int i = 0; i < 10; ++i) 1927 ; 1928 } 1929 #pragma omp critical 1930 { 1931 #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?}} 1932 { 1933 bar(); 1934 } 1935 } 1936 #pragma omp critical 1937 { 1938 #pragma omp master // OK, though second 'master' is redundant 1939 { 1940 bar(); 1941 } 1942 } 1943 #pragma omp critical 1944 { 1945 #pragma omp critical 1946 { 1947 bar(); 1948 } 1949 } 1950 #pragma omp critical 1951 { 1952 #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?}} 1953 { 1954 bar(); 1955 } 1956 } 1957 #pragma omp critical 1958 { 1959 #pragma omp parallel 1960 { 1961 #pragma omp master // OK 1962 { 1963 bar(); 1964 } 1965 #pragma omp for // OK 1966 for (int i = 0; i < 10; ++i) 1967 ; 1968 #pragma omp for simd // OK 1969 for (int i = 0; i < 10; ++i) 1970 ; 1971 #pragma omp sections // OK 1972 { 1973 bar(); 1974 } 1975 } 1976 } 1977 #pragma omp critical 1978 { 1979 #pragma omp parallel for 1980 for (int i = 0; i < 10; ++i) 1981 ; 1982 } 1983 #pragma omp critical 1984 { 1985 #pragma omp parallel for simd 1986 for (int i = 0; i < 10; ++i) 1987 ; 1988 } 1989 #pragma omp critical 1990 { 1991 #pragma omp parallel sections 1992 { 1993 bar(); 1994 } 1995 } 1996 #pragma omp critical 1997 { 1998 #pragma omp task 1999 { 2000 bar(); 2001 } 2002 } 2003 #pragma omp critical 2004 { 2005 #pragma omp taskyield 2006 bar(); 2007 } 2008 #pragma omp critical 2009 { 2010 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 2011 bar(); 2012 } 2013 #pragma omp critical 2014 { 2015 #pragma omp taskwait 2016 bar(); 2017 } 2018 #pragma omp critical(Tuzik) 2019 { 2020 #pragma omp critical(grelka) 2021 bar(); 2022 } 2023 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 2024 { 2025 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 2026 { 2027 #pragma omp critical(Tuzik) 2028 { 2029 #pragma omp parallel 2030 #pragma omp critical(grelka) 2031 { 2032 bar(); 2033 } 2034 } 2035 } 2036 } 2037 #pragma omp critical 2038 { 2039 #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?}} 2040 bar(); 2041 } 2042 #pragma omp critical 2043 { 2044 #pragma omp atomic 2045 ++a; 2046 } 2047 #pragma omp critical 2048 { 2049 #pragma omp target 2050 ++a; 2051 } 2052 #pragma omp critical 2053 { 2054 #pragma omp target parallel 2055 ++a; 2056 } 2057 #pragma omp critical 2058 { 2059 #pragma omp target parallel for 2060 for (int i = 0; i < 10; ++i) 2061 ; 2062 } 2063 #pragma omp critical 2064 { 2065 #pragma omp target enter data map(to: a) 2066 ++a; 2067 } 2068 #pragma omp critical 2069 { 2070 #pragma omp target exit data map(from: a) 2071 ++a; 2072 } 2073 #pragma omp critical 2074 { 2075 #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?}} 2076 ++a; 2077 } 2078 #pragma omp critical 2079 { 2080 #pragma omp taskloop 2081 for (int i = 0; i < 10; ++i) 2082 ++a; 2083 } 2084 #pragma omp critical 2085 { 2086 #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?}} 2087 for (int i = 0; i < 10; ++i) 2088 ; 2089 } 2090 #pragma omp critical 2091 { 2092 #pragma omp target update to(a) 2093 bar(); 2094 } 2095 #pragma omp critical 2096 { 2097 #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?}} 2098 for (int i = 0; i < 10; ++i) 2099 ; 2100 } 2101 #pragma omp critical 2102 { 2103 #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?}} 2104 for (int i = 0; i < 10; ++i) 2105 ; 2106 } 2107 #pragma omp critical 2108 { 2109 #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?}} 2110 for (int i = 0; i < 10; ++i) 2111 ; 2112 } 2113 #pragma omp critical 2114 { 2115 #pragma omp target simd // OK 2116 for (int i = 0; i < 10; ++i) 2117 ; 2118 } 2119 #pragma omp critical 2120 { 2121 #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?}} 2122 for (int i = 0; i < 10; ++i) 2123 ; 2124 } 2125 #pragma omp critical 2126 { 2127 #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?}} 2128 for (int i = 0; i < 10; ++i) 2129 ; 2130 } 2131 #pragma omp critical 2132 { 2133 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2134 for (int i = 0; i < 10; ++i) 2135 ; 2136 } 2137 #pragma omp critical 2138 { 2139 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2140 for (int i = 0; i < 10; ++i) 2141 ; 2142 } 2143 #pragma omp critical 2144 { 2145 #pragma omp target teams // OK 2146 a++; 2147 } 2148 2149 // PARALLEL FOR DIRECTIVE 2150 #pragma omp parallel for 2151 for (int i = 0; i < 10; ++i) { 2152 #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?}} 2153 for (int i = 0; i < 10; ++i) 2154 ; 2155 } 2156 #pragma omp parallel for 2157 for (int i = 0; i < 10; ++i) { 2158 #pragma omp simd 2159 for (int i = 0; i < 10; ++i) 2160 ; 2161 } 2162 #pragma omp parallel for 2163 for (int i = 0; i < 10; ++i) { 2164 #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?}} 2165 for (int i = 0; i < 10; ++i) 2166 ; 2167 } 2168 #pragma omp parallel for 2169 for (int i = 0; i < 10; ++i) { 2170 #pragma omp parallel 2171 for (int i = 0; i < 10; ++i) 2172 ; 2173 } 2174 #pragma omp parallel for 2175 for (int i = 0; i < 10; ++i) { 2176 #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?}} 2177 { 2178 bar(); 2179 } 2180 } 2181 #pragma omp parallel for 2182 for (int i = 0; i < 10; ++i) { 2183 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2184 { 2185 bar(); 2186 } 2187 } 2188 #pragma omp parallel for 2189 for (int i = 0; i < 10; ++i) { 2190 #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?}} 2191 { 2192 bar(); 2193 } 2194 } 2195 2196 #pragma omp parallel for 2197 for (int i = 0; i < 10; ++i) { 2198 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2199 { 2200 bar(); 2201 } 2202 } 2203 2204 #pragma omp parallel for 2205 for (int i = 0; i < 10; ++i) { 2206 #pragma omp critical 2207 { 2208 bar(); 2209 } 2210 } 2211 2212 #pragma omp parallel for 2213 for (int i = 0; i < 10; ++i) { 2214 #pragma omp parallel 2215 { 2216 #pragma omp single // OK 2217 { 2218 bar(); 2219 } 2220 #pragma omp for // OK 2221 for (int i = 0; i < 10; ++i) 2222 ; 2223 #pragma omp for simd // OK 2224 for (int i = 0; i < 10; ++i) 2225 ; 2226 #pragma omp sections // OK 2227 { 2228 bar(); 2229 } 2230 } 2231 } 2232 #pragma omp parallel for 2233 for (int i = 0; i < 10; ++i) { 2234 #pragma omp parallel for 2235 for (int i = 0; i < 10; ++i) 2236 ; 2237 } 2238 #pragma omp parallel for 2239 for (int i = 0; i < 10; ++i) { 2240 #pragma omp parallel for simd 2241 for (int i = 0; i < 10; ++i) 2242 ; 2243 } 2244 #pragma omp parallel for 2245 for (int i = 0; i < 10; ++i) { 2246 #pragma omp parallel sections 2247 { 2248 bar(); 2249 } 2250 } 2251 #pragma omp parallel for 2252 for (int i = 0; i < 10; ++i) { 2253 #pragma omp task 2254 { 2255 bar(); 2256 } 2257 } 2258 #pragma omp parallel for 2259 for (int i = 0; i < 10; ++i) { 2260 #pragma omp taskyield 2261 bar(); 2262 } 2263 #pragma omp parallel for 2264 for (int i = 0; i < 10; ++i) { 2265 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2266 bar(); 2267 } 2268 #pragma omp parallel for 2269 for (int i = 0; i < 10; ++i) { 2270 #pragma omp taskwait 2271 bar(); 2272 } 2273 #pragma omp parallel for 2274 for (int i = 0; i < 10; ++i) { 2275 #pragma omp flush 2276 bar(); 2277 } 2278 #pragma omp parallel for 2279 for (int i = 0; i < 10; ++i) { 2280 #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?}} 2281 bar(); 2282 } 2283 #pragma omp parallel for ordered 2284 for (int i = 0; i < 10; ++i) { 2285 #pragma omp ordered // OK 2286 bar(); 2287 } 2288 #pragma omp parallel for 2289 for (int i = 0; i < 10; ++i) { 2290 #pragma omp atomic 2291 ++a; 2292 } 2293 #pragma omp parallel for 2294 for (int i = 0; i < 10; ++i) { 2295 #pragma omp target 2296 ++a; 2297 } 2298 #pragma omp parallel for 2299 for (int i = 0; i < 10; ++i) { 2300 #pragma omp target parallel 2301 ++a; 2302 } 2303 #pragma omp parallel for 2304 for (int i = 0; i < 10; ++i) { 2305 #pragma omp target parallel for 2306 for (int i = 0; i < 10; ++i) 2307 ; 2308 } 2309 #pragma omp parallel for 2310 for (int i = 0; i < 10; ++i) { 2311 #pragma omp target enter data map(to: a) 2312 ++a; 2313 } 2314 #pragma omp parallel for 2315 for (int i = 0; i < 10; ++i) { 2316 #pragma omp target exit data map(from: a) 2317 ++a; 2318 } 2319 #pragma omp parallel for 2320 for (int i = 0; i < 10; ++i) { 2321 #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?}} 2322 ++a; 2323 } 2324 #pragma omp parallel for 2325 for (int i = 0; i < 10; ++i) { 2326 #pragma omp taskloop 2327 for (int i = 0; i < 10; ++i) 2328 ++a; 2329 } 2330 #pragma omp parallel for 2331 for (int i = 0; i < 10; ++i) { 2332 #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?}} 2333 for (int j = 0; j < 10; ++j) 2334 ; 2335 } 2336 #pragma omp parallel for 2337 for (int i = 0; i < 10; ++i) { 2338 #pragma omp target update to(a) 2339 } 2340 #pragma omp parallel for 2341 for (int i = 0; i < 10; ++i) { 2342 #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?}} 2343 for (int j = 0; j < 10; ++j) 2344 ; 2345 } 2346 #pragma omp parallel for 2347 for (int i = 0; i < 10; ++i) { 2348 #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?}} 2349 for (int j = 0; j < 10; ++j) 2350 ; 2351 } 2352 #pragma omp parallel for 2353 for (int i = 0; i < 10; ++i) { 2354 #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?}} 2355 for (int j = 0; j < 10; ++j) 2356 ; 2357 } 2358 #pragma omp parallel for 2359 for (int i = 0; i < 10; ++i) { 2360 #pragma omp target simd // OK 2361 for (int j = 0; j < 10; ++j) 2362 ; 2363 } 2364 #pragma omp parallel for 2365 for (int i = 0; i < 10; ++i) { 2366 #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?}} 2367 for (int j = 0; j < 10; ++j) 2368 ; 2369 } 2370 #pragma omp parallel for 2371 for (int i = 0; i < 10; ++i) { 2372 #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?}} 2373 for (int j = 0; j < 10; ++j) 2374 ; 2375 } 2376 #pragma omp parallel for 2377 for (int i = 0; i < 10; ++i) { 2378 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2379 for (int j = 0; j < 10; ++j) 2380 ; 2381 } 2382 #pragma omp parallel for 2383 for (int i = 0; i < 10; ++i) { 2384 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2385 for (int j = 0; j < 10; ++j) 2386 ; 2387 } 2388 #pragma omp parallel for 2389 for (int i = 0; i < 10; ++i) { 2390 #pragma omp target teams // OK 2391 a++; 2392 } 2393 2394 // PARALLEL FOR SIMD DIRECTIVE 2395 #pragma omp parallel for simd 2396 for (int i = 0; i < 10; ++i) { 2397 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2398 for (int i = 0; i < 10; ++i) 2399 ; 2400 } 2401 #pragma omp parallel for simd 2402 for (int i = 0; i < 10; ++i) { 2403 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2404 for (int i = 0; i < 10; ++i) 2405 ; 2406 } 2407 #pragma omp parallel for simd 2408 for (int i = 0; i < 10; ++i) { 2409 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2410 for (int i = 0; i < 10; ++i) 2411 ; 2412 } 2413 #pragma omp parallel for simd 2414 for (int i = 0; i < 10; ++i) { 2415 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2416 for (int i = 0; i < 10; ++i) 2417 ; 2418 } 2419 #pragma omp parallel for simd 2420 for (int i = 0; i < 10; ++i) { 2421 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2422 { 2423 bar(); 2424 } 2425 } 2426 #pragma omp parallel for simd 2427 for (int i = 0; i < 10; ++i) { 2428 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2429 { 2430 bar(); 2431 } 2432 } 2433 #pragma omp parallel for simd 2434 for (int i = 0; i < 10; ++i) { 2435 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2436 { 2437 bar(); 2438 } 2439 } 2440 2441 #pragma omp parallel for simd 2442 for (int i = 0; i < 10; ++i) { 2443 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2444 { 2445 bar(); 2446 } 2447 } 2448 2449 #pragma omp parallel for simd 2450 for (int i = 0; i < 10; ++i) { 2451 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2452 { 2453 bar(); 2454 } 2455 } 2456 2457 #pragma omp parallel for simd 2458 for (int i = 0; i < 10; ++i) { 2459 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2460 { 2461 #pragma omp single 2462 { 2463 bar(); 2464 } 2465 #pragma omp for 2466 for (int i = 0; i < 10; ++i) 2467 ; 2468 #pragma omp for simd 2469 for (int i = 0; i < 10; ++i) 2470 ; 2471 #pragma omp sections 2472 { 2473 bar(); 2474 } 2475 } 2476 } 2477 #pragma omp parallel for simd 2478 for (int i = 0; i < 10; ++i) { 2479 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2480 for (int i = 0; i < 10; ++i) 2481 ; 2482 } 2483 #pragma omp parallel for simd 2484 for (int i = 0; i < 10; ++i) { 2485 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2486 for (int i = 0; i < 10; ++i) 2487 ; 2488 } 2489 #pragma omp parallel for simd 2490 for (int i = 0; i < 10; ++i) { 2491 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2492 { 2493 bar(); 2494 } 2495 } 2496 #pragma omp parallel for simd 2497 for (int i = 0; i < 10; ++i) { 2498 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2499 { 2500 bar(); 2501 } 2502 } 2503 #pragma omp parallel for simd 2504 for (int i = 0; i < 10; ++i) { 2505 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2506 bar(); 2507 } 2508 #pragma omp parallel for simd 2509 for (int i = 0; i < 10; ++i) { 2510 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2511 bar(); 2512 } 2513 #pragma omp parallel for simd 2514 for (int i = 0; i < 10; ++i) { 2515 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2516 bar(); 2517 } 2518 #pragma omp parallel for simd 2519 for (int i = 0; i < 10; ++i) { 2520 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2521 bar(); 2522 } 2523 #pragma omp parallel for simd 2524 for (int i = 0; i < 10; ++i) { 2525 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2526 bar(); 2527 } 2528 #pragma omp parallel for simd 2529 for (int i = 0; i < 10; ++i) { 2530 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2531 bar(); 2532 } 2533 #pragma omp parallel for simd 2534 for (int i = 0; i < 10; ++i) { 2535 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2536 ++a; 2537 } 2538 #pragma omp parallel for simd 2539 for (int i = 0; i < 10; ++i) { 2540 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2541 ++a; 2542 } 2543 #pragma omp parallel for simd 2544 for (int i = 0; i < 10; ++i) { 2545 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2546 ++a; 2547 } 2548 #pragma omp parallel for simd 2549 for (int i = 0; i < 10; ++i) { 2550 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2551 for (int i = 0; i < 10; ++i) 2552 ; 2553 } 2554 #pragma omp parallel for simd 2555 for (int i = 0; i < 10; ++i) { 2556 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2557 ++a; 2558 } 2559 #pragma omp parallel for simd 2560 for (int i = 0; i < 10; ++i) { 2561 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2562 ++a; 2563 } 2564 #pragma omp parallel for simd 2565 for (int i = 0; i < 10; ++i) { 2566 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2567 ++a; 2568 } 2569 #pragma omp parallel for simd 2570 for (int i = 0; i < 10; ++i) { 2571 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2572 for (int i = 0; i < 10; ++i) 2573 ++a; 2574 } 2575 #pragma omp parallel for simd 2576 for (int i = 0; i < 10; ++i) { 2577 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2578 for (int j = 0; j < 10; ++j) 2579 ; 2580 } 2581 #pragma omp parallel for simd 2582 for (int i = 0; i < 10; ++i) { 2583 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2584 bar(); 2585 } 2586 #pragma omp parallel for simd 2587 for (int i = 0; i < 10; ++i) { 2588 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2589 for (int j = 0; j < 10; ++j) 2590 ; 2591 } 2592 #pragma omp parallel for simd 2593 for (int i = 0; i < 10; ++i) { 2594 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2595 for (int j = 0; j < 10; ++j) 2596 ; 2597 } 2598 #pragma omp parallel for simd 2599 for (int i = 0; i < 10; ++i) { 2600 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2601 for (int j = 0; j < 10; ++j) 2602 ; 2603 } 2604 #pragma omp parallel for simd 2605 for (int i = 0; i < 10; ++i) { 2606 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2607 for (int j = 0; j < 10; ++j) 2608 ; 2609 } 2610 #pragma omp parallel for simd 2611 for (int i = 0; i < 10; ++i) { 2612 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2613 for (int j = 0; j < 10; ++j) 2614 ; 2615 } 2616 #pragma omp parallel for simd 2617 for (int i = 0; i < 10; ++i) { 2618 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2619 for (int j = 0; j < 10; ++j) 2620 ; 2621 } 2622 #pragma omp parallel for simd 2623 for (int i = 0; i < 10; ++i) { 2624 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2625 for (int j = 0; j < 10; ++j) 2626 ; 2627 } 2628 #pragma omp parallel for simd 2629 for (int i = 0; i < 10; ++i) { 2630 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2631 for (int j = 0; j < 10; ++j) 2632 ; 2633 } 2634 #pragma omp parallel for simd 2635 for (int i = 0; i < 10; ++i) { 2636 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2637 a++; 2638 } 2639 2640 // PARALLEL SECTIONS DIRECTIVE 2641 #pragma omp parallel sections 2642 { 2643 #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?}} 2644 for (int i = 0; i < 10; ++i) 2645 ; 2646 } 2647 #pragma omp parallel sections 2648 { 2649 #pragma omp simd 2650 for (int i = 0; i < 10; ++i) 2651 ; 2652 } 2653 #pragma omp parallel sections 2654 { 2655 #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?}} 2656 for (int i = 0; i < 10; ++i) 2657 ; 2658 } 2659 #pragma omp parallel sections 2660 { 2661 #pragma omp parallel 2662 for (int i = 0; i < 10; ++i) 2663 ; 2664 } 2665 #pragma omp parallel sections 2666 { 2667 #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?}} 2668 { 2669 bar(); 2670 } 2671 } 2672 #pragma omp parallel sections 2673 { 2674 #pragma omp section 2675 { 2676 bar(); 2677 } 2678 } 2679 #pragma omp parallel sections 2680 { 2681 #pragma omp section 2682 { 2683 #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?}} 2684 bar(); 2685 } 2686 } 2687 #pragma omp parallel sections 2688 { 2689 #pragma omp section 2690 { 2691 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 2692 bar(); 2693 } 2694 } 2695 #pragma omp parallel sections 2696 { 2697 #pragma omp section 2698 { 2699 #pragma omp critical 2700 bar(); 2701 } 2702 } 2703 #pragma omp parallel sections 2704 { 2705 #pragma omp parallel 2706 { 2707 #pragma omp single // OK 2708 { 2709 bar(); 2710 } 2711 #pragma omp for // OK 2712 for (int i = 0; i < 10; ++i) 2713 ; 2714 #pragma omp for simd // OK 2715 for (int i = 0; i < 10; ++i) 2716 ; 2717 #pragma omp sections // OK 2718 { 2719 bar(); 2720 } 2721 } 2722 } 2723 #pragma omp parallel sections 2724 { 2725 #pragma omp parallel for 2726 for (int i = 0; i < 10; ++i) 2727 ; 2728 } 2729 #pragma omp parallel sections 2730 { 2731 #pragma omp parallel for simd 2732 for (int i = 0; i < 10; ++i) 2733 ; 2734 } 2735 #pragma omp parallel sections 2736 { 2737 #pragma omp parallel sections 2738 { 2739 bar(); 2740 } 2741 } 2742 #pragma omp parallel sections 2743 { 2744 #pragma omp task 2745 { 2746 bar(); 2747 } 2748 } 2749 #pragma omp parallel sections 2750 { 2751 #pragma omp taskyield 2752 } 2753 #pragma omp parallel sections 2754 { 2755 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 2756 } 2757 #pragma omp parallel sections 2758 { 2759 #pragma omp taskwait 2760 } 2761 #pragma omp parallel sections 2762 { 2763 #pragma omp flush 2764 } 2765 #pragma omp parallel sections 2766 { 2767 #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?}} 2768 bar(); 2769 } 2770 #pragma omp parallel sections 2771 { 2772 #pragma omp atomic 2773 ++a; 2774 } 2775 #pragma omp parallel sections 2776 { 2777 #pragma omp target 2778 ++a; 2779 } 2780 #pragma omp parallel sections 2781 { 2782 #pragma omp target parallel 2783 ++a; 2784 } 2785 #pragma omp parallel sections 2786 { 2787 #pragma omp target parallel for 2788 for (int i = 0; i < 10; ++i) 2789 ; 2790 } 2791 #pragma omp parallel sections 2792 { 2793 #pragma omp target enter data map(to: a) 2794 } 2795 #pragma omp parallel sections 2796 { 2797 #pragma omp target exit data map(from: a) 2798 } 2799 #pragma omp parallel sections 2800 { 2801 #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?}} 2802 ++a; 2803 } 2804 #pragma omp parallel sections 2805 { 2806 #pragma omp taskloop 2807 for (int i = 0; i < 10; ++i) 2808 ++a; 2809 } 2810 #pragma omp parallel sections 2811 { 2812 #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?}} 2813 for (int i = 0; i < 10; ++i) 2814 ; 2815 } 2816 #pragma omp parallel sections 2817 { 2818 #pragma omp target update to(a) 2819 } 2820 #pragma omp parallel sections 2821 { 2822 #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?}} 2823 for (int i = 0; i < 10; ++i) 2824 ; 2825 } 2826 #pragma omp parallel sections 2827 { 2828 #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?}} 2829 for (int i = 0; i < 10; ++i) 2830 ; 2831 } 2832 #pragma omp parallel sections 2833 { 2834 #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?}} 2835 for (int i = 0; i < 10; ++i) 2836 ; 2837 } 2838 #pragma omp parallel sections 2839 { 2840 #pragma omp target simd // OK 2841 for (int i = 0; i < 10; ++i) 2842 ; 2843 } 2844 #pragma omp parallel sections 2845 { 2846 #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?}} 2847 for (int i = 0; i < 10; ++i) 2848 ; 2849 } 2850 #pragma omp parallel sections 2851 { 2852 #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?}} 2853 for (int i = 0; i < 10; ++i) 2854 ; 2855 } 2856 #pragma omp parallel sections 2857 { 2858 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 2859 for (int i = 0; i < 10; ++i) 2860 ; 2861 } 2862 #pragma omp parallel sections 2863 { 2864 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 2865 for (int i = 0; i < 10; ++i) 2866 ; 2867 } 2868 #pragma omp parallel sections 2869 { 2870 #pragma omp target teams // OK 2871 a++; 2872 } 2873 2874 // TASK DIRECTIVE 2875 #pragma omp task 2876 #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?}} 2877 for (int i = 0; i < 10; ++i) 2878 ; 2879 #pragma omp task 2880 #pragma omp simd 2881 for (int i = 0; i < 10; ++i) 2882 ; 2883 #pragma omp task 2884 #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?}} 2885 for (int i = 0; i < 10; ++i) 2886 ; 2887 #pragma omp task 2888 #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?}} 2889 { 2890 bar(); 2891 } 2892 #pragma omp task 2893 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 2894 { 2895 bar(); 2896 } 2897 #pragma omp task 2898 #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?}} 2899 bar(); 2900 #pragma omp task 2901 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 2902 bar(); 2903 #pragma omp task 2904 #pragma omp critical 2905 bar(); 2906 2907 #pragma omp task 2908 #pragma omp parallel for 2909 for (int i = 0; i < 10; ++i) 2910 ; 2911 #pragma omp task 2912 #pragma omp parallel for simd 2913 for (int i = 0; i < 10; ++i) 2914 ; 2915 #pragma omp task 2916 #pragma omp parallel sections 2917 { 2918 bar(); 2919 } 2920 #pragma omp task 2921 #pragma omp task 2922 { 2923 bar(); 2924 } 2925 #pragma omp task 2926 { 2927 #pragma omp taskyield 2928 bar(); 2929 } 2930 #pragma omp task 2931 { 2932 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 2933 bar(); 2934 } 2935 #pragma omp task 2936 { 2937 #pragma omp taskwait 2938 bar(); 2939 } 2940 #pragma omp task 2941 { 2942 #pragma omp flush 2943 bar(); 2944 } 2945 #pragma omp task 2946 { 2947 #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?}} 2948 bar(); 2949 } 2950 #pragma omp task 2951 { 2952 #pragma omp atomic 2953 ++a; 2954 } 2955 #pragma omp task 2956 { 2957 #pragma omp target 2958 ++a; 2959 } 2960 #pragma omp task 2961 { 2962 #pragma omp target parallel 2963 ++a; 2964 } 2965 #pragma omp task 2966 #pragma omp target parallel for 2967 for (int i = 0; i < 10; ++i) 2968 ; 2969 #pragma omp task 2970 { 2971 #pragma omp target enter data map(to: a) 2972 ++a; 2973 } 2974 #pragma omp task 2975 { 2976 #pragma omp target exit data map(from: a) 2977 ++a; 2978 } 2979 #pragma omp task 2980 { 2981 #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?}} 2982 ++a; 2983 } 2984 #pragma omp task 2985 { 2986 #pragma omp taskloop 2987 for (int i = 0; i < 10; ++i) 2988 ++a; 2989 } 2990 #pragma omp task 2991 { 2992 #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?}} 2993 for (int i = 0; i < 10; ++i) 2994 ; 2995 } 2996 #pragma omp task 2997 { 2998 #pragma omp target update to(a) 2999 bar(); 3000 } 3001 #pragma omp task 3002 { 3003 #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?}} 3004 for (int i = 0; i < 10; ++i) 3005 ; 3006 } 3007 #pragma omp task 3008 { 3009 #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?}} 3010 for (int i = 0; i < 10; ++i) 3011 ; 3012 } 3013 #pragma omp task 3014 { 3015 #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?}} 3016 for (int i = 0; i < 10; ++i) 3017 ; 3018 } 3019 #pragma omp task 3020 { 3021 #pragma omp target simd // OK 3022 for (int i = 0; i < 10; ++i) 3023 ; 3024 } 3025 #pragma omp task 3026 { 3027 #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?}} 3028 for (int i = 0; i < 10; ++i) 3029 ; 3030 } 3031 #pragma omp task 3032 { 3033 #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?}} 3034 for (int i = 0; i < 10; ++i) 3035 ; 3036 } 3037 #pragma omp task 3038 { 3039 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3040 for (int i = 0; i < 10; ++i) 3041 ; 3042 } 3043 #pragma omp task 3044 { 3045 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3046 for (int i = 0; i < 10; ++i) 3047 ; 3048 } 3049 #pragma omp task 3050 { 3051 #pragma omp target teams // OK 3052 a++; 3053 } 3054 3055 // ORDERED DIRECTIVE 3056 #pragma omp ordered 3057 { 3058 #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?}} 3059 for (int i = 0; i < 10; ++i) 3060 ; 3061 } 3062 #pragma omp ordered 3063 { 3064 #pragma omp simd 3065 for (int i = 0; i < 10; ++i) 3066 ; 3067 } 3068 #pragma omp ordered 3069 { 3070 #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?}} 3071 for (int i = 0; i < 10; ++i) 3072 ; 3073 } 3074 #pragma omp ordered 3075 { 3076 #pragma omp parallel 3077 for (int i = 0; i < 10; ++i) 3078 ; 3079 } 3080 #pragma omp ordered 3081 { 3082 #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?}} 3083 { 3084 bar(); 3085 } 3086 } 3087 #pragma omp ordered 3088 { 3089 #pragma omp master // OK, though second 'ordered' is redundant 3090 { 3091 bar(); 3092 } 3093 } 3094 #pragma omp ordered 3095 { 3096 #pragma omp critical 3097 { 3098 bar(); 3099 } 3100 } 3101 #pragma omp ordered 3102 { 3103 #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?}} 3104 { 3105 bar(); 3106 } 3107 } 3108 #pragma omp ordered 3109 { 3110 #pragma omp parallel for ordered 3111 for (int j = 0; j < 10; ++j) { 3112 #pragma omp ordered // OK 3113 { 3114 bar(); 3115 } 3116 } 3117 } 3118 #pragma omp ordered 3119 { 3120 #pragma omp parallel for simd ordered 3121 for (int j = 0; j < 10; ++j) { 3122 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3123 { 3124 bar(); 3125 } 3126 } 3127 } 3128 #pragma omp ordered 3129 { 3130 #pragma omp parallel for simd ordered 3131 for (int j = 0; j < 10; ++j) { 3132 #pragma omp ordered simd 3133 { 3134 bar(); 3135 } 3136 } 3137 } 3138 #pragma omp ordered 3139 { 3140 #pragma omp parallel for 3141 for (int i = 0; i < 10; ++i) 3142 ; 3143 } 3144 #pragma omp ordered 3145 { 3146 #pragma omp parallel for simd 3147 for (int i = 0; i < 10; ++i) 3148 ; 3149 } 3150 #pragma omp ordered 3151 { 3152 #pragma omp parallel sections 3153 { 3154 bar(); 3155 } 3156 } 3157 #pragma omp ordered 3158 { 3159 #pragma omp task 3160 { 3161 bar(); 3162 } 3163 } 3164 #pragma omp ordered 3165 { 3166 #pragma omp taskyield 3167 bar(); 3168 } 3169 #pragma omp ordered 3170 { 3171 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3172 bar(); 3173 } 3174 #pragma omp ordered 3175 { 3176 #pragma omp taskwait 3177 bar(); 3178 } 3179 #pragma omp ordered 3180 { 3181 #pragma omp flush 3182 bar(); 3183 } 3184 #pragma omp ordered 3185 { 3186 #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?}} 3187 bar(); 3188 } 3189 #pragma omp ordered 3190 { 3191 #pragma omp atomic 3192 ++a; 3193 } 3194 #pragma omp ordered 3195 { 3196 #pragma omp target 3197 ++a; 3198 } 3199 #pragma omp ordered 3200 { 3201 #pragma omp target parallel 3202 ++a; 3203 } 3204 #pragma omp ordered 3205 { 3206 #pragma omp target parallel for ordered 3207 for (int j = 0; j < 10; ++j) { 3208 #pragma omp ordered // OK 3209 { 3210 bar(); 3211 } 3212 } 3213 } 3214 #pragma omp ordered 3215 { 3216 #pragma omp target parallel for 3217 for (int i = 0; i < 10; ++i) 3218 ; 3219 } 3220 #pragma omp ordered 3221 { 3222 #pragma omp target enter data map(to: a) 3223 ++a; 3224 } 3225 #pragma omp ordered 3226 { 3227 #pragma omp target exit data map(from: a) 3228 ++a; 3229 } 3230 #pragma omp ordered 3231 { 3232 #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?}} 3233 ++a; 3234 } 3235 #pragma omp ordered 3236 { 3237 #pragma omp taskloop 3238 for (int i = 0; i < 10; ++i) 3239 ++a; 3240 } 3241 #pragma omp ordered 3242 { 3243 #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?}} 3244 for (int i = 0; i < 10; ++i) 3245 ; 3246 } 3247 #pragma omp ordered 3248 { 3249 bar(); 3250 #pragma omp target update to(a) 3251 bar(); 3252 } 3253 #pragma omp ordered 3254 { 3255 #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?}} 3256 for (int i = 0; i < 10; ++i) 3257 ; 3258 } 3259 #pragma omp ordered 3260 { 3261 #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?}} 3262 for (int i = 0; i < 10; ++i) 3263 ; 3264 } 3265 #pragma omp ordered 3266 { 3267 #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?}} 3268 for (int i = 0; i < 10; ++i) 3269 ; 3270 } 3271 #pragma omp ordered 3272 { 3273 #pragma omp target simd // OK 3274 for (int i = 0; i < 10; ++i) 3275 ; 3276 } 3277 #pragma omp ordered 3278 { 3279 #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?}} 3280 for (int i = 0; i < 10; ++i) 3281 ; 3282 } 3283 #pragma omp ordered 3284 { 3285 #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?}} 3286 for (int i = 0; i < 10; ++i) 3287 ; 3288 } 3289 #pragma omp ordered 3290 { 3291 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3292 for (int i = 0; i < 10; ++i) 3293 ; 3294 } 3295 #pragma omp ordered 3296 { 3297 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'ordered' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3298 for (int i = 0; i < 10; ++i) 3299 ; 3300 } 3301 #pragma omp ordered 3302 { 3303 #pragma omp target teams // OK 3304 a++; 3305 } 3306 3307 // ATOMIC DIRECTIVE 3308 #pragma omp atomic 3309 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3310 // expected-note@+1 {{expected an expression statement}} 3311 { 3312 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3313 for (int i = 0; i < 10; ++i) 3314 ; 3315 } 3316 #pragma omp atomic 3317 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3318 // expected-note@+1 {{expected an expression statement}} 3319 { 3320 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3321 for (int i = 0; i < 10; ++i) 3322 ; 3323 } 3324 #pragma omp atomic 3325 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3326 // expected-note@+1 {{expected an expression statement}} 3327 { 3328 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3329 for (int i = 0; i < 10; ++i) 3330 ; 3331 } 3332 #pragma omp atomic 3333 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3334 // expected-note@+1 {{expected an expression statement}} 3335 { 3336 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3337 for (int i = 0; i < 10; ++i) 3338 ; 3339 } 3340 #pragma omp atomic 3341 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3342 // expected-note@+1 {{expected an expression statement}} 3343 { 3344 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3345 { 3346 bar(); 3347 } 3348 } 3349 #pragma omp atomic 3350 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3351 // expected-note@+1 {{expected an expression statement}} 3352 { 3353 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3354 { 3355 bar(); 3356 } 3357 } 3358 #pragma omp atomic 3359 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3360 // expected-note@+1 {{expected an expression statement}} 3361 { 3362 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3363 { 3364 bar(); 3365 } 3366 } 3367 #pragma omp atomic 3368 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3369 // expected-note@+1 {{expected an expression statement}} 3370 { 3371 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3372 { 3373 bar(); 3374 } 3375 } 3376 #pragma omp atomic 3377 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3378 // expected-note@+1 {{expected an expression statement}} 3379 { 3380 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3381 { 3382 bar(); 3383 } 3384 } 3385 #pragma omp atomic 3386 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3387 // expected-note@+1 {{expected an expression statement}} 3388 { 3389 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3390 for (int i = 0; i < 10; ++i) 3391 ; 3392 } 3393 #pragma omp atomic 3394 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3395 // expected-note@+1 {{expected an expression statement}} 3396 { 3397 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3398 for (int i = 0; i < 10; ++i) 3399 ; 3400 } 3401 #pragma omp atomic 3402 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3403 // expected-note@+1 {{expected an expression statement}} 3404 { 3405 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3406 { 3407 bar(); 3408 } 3409 } 3410 #pragma omp atomic 3411 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3412 // expected-note@+1 {{expected an expression statement}} 3413 { 3414 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3415 { 3416 bar(); 3417 } 3418 } 3419 #pragma omp atomic 3420 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3421 // expected-note@+1 {{expected an expression statement}} 3422 { 3423 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3424 bar(); 3425 } 3426 #pragma omp atomic 3427 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3428 // expected-note@+1 {{expected an expression statement}} 3429 { 3430 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3431 bar(); 3432 } 3433 #pragma omp atomic 3434 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3435 // expected-note@+1 {{expected an expression statement}} 3436 { 3437 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3438 bar(); 3439 } 3440 #pragma omp atomic 3441 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3442 // expected-note@+1 {{expected an expression statement}} 3443 { 3444 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3445 bar(); 3446 } 3447 #pragma omp atomic 3448 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3449 // expected-note@+1 {{expected an expression statement}} 3450 { 3451 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3452 bar(); 3453 } 3454 #pragma omp atomic 3455 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3456 // expected-note@+1 {{expected an expression statement}} 3457 { 3458 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3459 ++a; 3460 } 3461 #pragma omp atomic 3462 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3463 // expected-note@+1 {{expected an expression statement}} 3464 { 3465 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3466 ++a; 3467 } 3468 #pragma omp atomic 3469 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3470 // expected-note@+1 {{expected an expression statement}} 3471 { 3472 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3473 ++a; 3474 } 3475 #pragma omp atomic 3476 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3477 // expected-note@+1 {{expected an expression statement}} 3478 { 3479 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3480 for (int i = 0; i < 10; ++i) 3481 ; 3482 } 3483 #pragma omp atomic 3484 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3485 // expected-note@+1 {{expected an expression statement}} 3486 { 3487 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3488 ++a; 3489 } 3490 #pragma omp atomic 3491 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3492 // expected-note@+1 {{expected an expression statement}} 3493 { 3494 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3495 ++a; 3496 } 3497 #pragma omp atomic 3498 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3499 // expected-note@+1 {{expected an expression statement}} 3500 { 3501 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3502 ++a; 3503 } 3504 #pragma omp atomic 3505 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3506 // expected-note@+1 {{expected an expression statement}} 3507 { 3508 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3509 for (int i = 0; i < 10; ++i) 3510 ++a; 3511 } 3512 #pragma omp atomic 3513 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3514 // expected-note@+1 {{expected an expression statement}} 3515 { 3516 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3517 for (int i = 0; i < 10; ++i) 3518 ; 3519 } 3520 #pragma omp atomic 3521 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3522 // expected-note@+1 {{expected an expression statement}} 3523 { 3524 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3525 bar(); 3526 } 3527 #pragma omp atomic 3528 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3529 // expected-note@+1 {{expected an expression statement}} 3530 { 3531 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3532 for (int i = 0; i < 10; ++i) 3533 ; 3534 } 3535 #pragma omp atomic 3536 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3537 // expected-note@+1 {{expected an expression statement}} 3538 { 3539 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3540 for (int i = 0; i < 10; ++i) 3541 ; 3542 } 3543 #pragma omp atomic 3544 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3545 // expected-note@+1 {{expected an expression statement}} 3546 { 3547 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3548 for (int i = 0; i < 10; ++i) 3549 ; 3550 } 3551 #pragma omp atomic 3552 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3553 // expected-note@+1 {{expected an expression statement}} 3554 { 3555 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3556 for (int i = 0; i < 10; ++i) 3557 ; 3558 } 3559 #pragma omp atomic 3560 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3561 // expected-note@+1 {{expected an expression statement}} 3562 { 3563 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3564 for (int i = 0; i < 10; ++i) 3565 ; 3566 } 3567 #pragma omp atomic 3568 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3569 // expected-note@+1 {{expected an expression statement}} 3570 { 3571 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3572 for (int i = 0; i < 10; ++i) 3573 ; 3574 } 3575 #pragma omp atomic 3576 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3577 // expected-note@+1 {{expected an expression statement}} 3578 { 3579 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3580 for (int i = 0; i < 10; ++i) 3581 ; 3582 } 3583 #pragma omp atomic 3584 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3585 // expected-note@+1 {{expected an expression statement}} 3586 { 3587 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3588 for (int i = 0; i < 10; ++i) 3589 ; 3590 } 3591 #pragma omp atomic 3592 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3593 // expected-note@+1 {{expected an expression statement}} 3594 { 3595 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3596 a++; 3597 } 3598 3599 // TARGET DIRECTIVE 3600 #pragma omp target 3601 #pragma omp parallel 3602 bar(); 3603 #pragma omp target 3604 #pragma omp for 3605 for (int i = 0; i < 10; ++i) 3606 ; 3607 #pragma omp target 3608 #pragma omp simd 3609 for (int i = 0; i < 10; ++i) 3610 ; 3611 #pragma omp target 3612 #pragma omp for simd 3613 for (int i = 0; i < 10; ++i) 3614 ; 3615 #pragma omp target 3616 #pragma omp sections 3617 { 3618 bar(); 3619 } 3620 #pragma omp target 3621 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 3622 { 3623 bar(); 3624 } 3625 #pragma omp target 3626 #pragma omp single 3627 bar(); 3628 3629 #pragma omp target 3630 #pragma omp master 3631 { 3632 bar(); 3633 } 3634 #pragma omp target 3635 #pragma omp critical 3636 { 3637 bar(); 3638 } 3639 #pragma omp target 3640 #pragma omp parallel for 3641 for (int i = 0; i < 10; ++i) 3642 ; 3643 #pragma omp target 3644 #pragma omp parallel for simd 3645 for (int i = 0; i < 10; ++i) 3646 ; 3647 #pragma omp target 3648 #pragma omp parallel sections 3649 { 3650 bar(); 3651 } 3652 #pragma omp target 3653 #pragma omp task 3654 { 3655 bar(); 3656 } 3657 #pragma omp target 3658 { 3659 #pragma omp taskyield 3660 bar(); 3661 } 3662 #pragma omp target 3663 { 3664 #pragma omp barrier 3665 bar(); 3666 } 3667 #pragma omp target 3668 { 3669 #pragma omp taskwait 3670 bar(); 3671 } 3672 #pragma omp target 3673 { 3674 #pragma omp flush 3675 bar(); 3676 } 3677 #pragma omp target 3678 { 3679 #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?}} 3680 bar(); 3681 } 3682 #pragma omp target 3683 { 3684 #pragma omp atomic 3685 ++a; 3686 } 3687 #pragma omp target 3688 { 3689 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 3690 ++a; 3691 } 3692 #pragma omp target 3693 { 3694 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 3695 ++a; 3696 } 3697 #pragma omp target 3698 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 3699 for (int i = 0; i < 10; ++i) 3700 ; 3701 #pragma omp target 3702 { 3703 #pragma omp teams 3704 ++a; 3705 } 3706 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 3707 { 3708 ++a; // expected-note {{statement outside teams construct here}} 3709 #pragma omp teams // expected-note {{nested teams construct here}} 3710 ++a; 3711 } 3712 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 3713 { 3714 while (0) // expected-note {{statement outside teams construct here}} 3715 #pragma omp teams // expected-note {{nested teams construct here}} 3716 ++a; 3717 } 3718 #pragma omp target 3719 { 3720 #pragma omp taskloop 3721 for (int i = 0; i < 10; ++i) 3722 ++a; 3723 } 3724 #pragma omp target 3725 { 3726 #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?}} 3727 for (int i = 0; i < 10; ++i) 3728 ; 3729 } 3730 #pragma omp target 3731 { 3732 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 3733 } 3734 #pragma omp target 3735 { 3736 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 3737 } 3738 #pragma omp target 3739 { 3740 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 3741 } 3742 #pragma omp target 3743 { 3744 #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?}} 3745 for (int i = 0; i < 10; ++i) 3746 ; 3747 } 3748 #pragma omp target 3749 { 3750 #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?}} 3751 for (int i = 0; i < 10; ++i) 3752 ; 3753 } 3754 #pragma omp target 3755 { 3756 #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?}} 3757 for (int i = 0; i < 10; ++i) 3758 ; 3759 } 3760 #pragma omp target 3761 { 3762 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 3763 for (int i = 0; i < 10; ++i) 3764 ; 3765 } 3766 #pragma omp target 3767 { 3768 #pragma omp teams distribute // OK 3769 for (int i = 0; i < 10; ++i) 3770 ; 3771 } 3772 #pragma omp target 3773 { 3774 #pragma omp teams distribute simd // OK 3775 for (int i = 0; i < 10; ++i) 3776 ; 3777 } 3778 #pragma omp target 3779 { 3780 #pragma omp teams distribute parallel for simd // OK 3781 for (int i = 0; i < 10; ++i) 3782 ; 3783 } 3784 #pragma omp target 3785 { 3786 #pragma omp teams distribute parallel for // OK 3787 for (int i = 0; i < 10; ++i) 3788 ; 3789 } 3790 #pragma omp target 3791 { 3792 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 3793 for (int i = 0; i < 10; ++i) 3794 ; 3795 } 3796 3797 // TARGET PARALLEL DIRECTIVE 3798 #pragma omp target parallel 3799 #pragma omp parallel 3800 bar(); 3801 #pragma omp target parallel 3802 #pragma omp for 3803 for (int i = 0; i < 10; ++i) 3804 ; 3805 #pragma omp target parallel 3806 #pragma omp simd 3807 for (int i = 0; i < 10; ++i) 3808 ; 3809 #pragma omp target parallel 3810 #pragma omp for simd 3811 for (int i = 0; i < 10; ++i) 3812 ; 3813 #pragma omp target parallel 3814 #pragma omp sections 3815 { 3816 bar(); 3817 } 3818 #pragma omp target parallel 3819 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 3820 { 3821 bar(); 3822 } 3823 #pragma omp target parallel 3824 #pragma omp single 3825 bar(); 3826 3827 #pragma omp target parallel 3828 #pragma omp master 3829 { 3830 bar(); 3831 } 3832 #pragma omp target parallel 3833 #pragma omp critical 3834 { 3835 bar(); 3836 } 3837 #pragma omp target parallel 3838 #pragma omp parallel for 3839 for (int i = 0; i < 10; ++i) 3840 ; 3841 #pragma omp target parallel 3842 #pragma omp parallel for simd 3843 for (int i = 0; i < 10; ++i) 3844 ; 3845 #pragma omp target parallel 3846 #pragma omp parallel sections 3847 { 3848 bar(); 3849 } 3850 #pragma omp target parallel 3851 #pragma omp task 3852 { 3853 bar(); 3854 } 3855 #pragma omp target parallel 3856 { 3857 #pragma omp taskyield 3858 bar(); 3859 } 3860 #pragma omp target parallel 3861 { 3862 #pragma omp barrier 3863 bar(); 3864 } 3865 #pragma omp target parallel 3866 { 3867 #pragma omp taskwait 3868 bar(); 3869 } 3870 #pragma omp target parallel 3871 { 3872 #pragma omp flush 3873 bar(); 3874 } 3875 #pragma omp target parallel 3876 { 3877 #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?}} 3878 bar(); 3879 } 3880 #pragma omp target parallel 3881 { 3882 #pragma omp atomic 3883 ++a; 3884 } 3885 #pragma omp target parallel 3886 { 3887 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 3888 ++a; 3889 } 3890 #pragma omp target parallel 3891 { 3892 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 3893 ++a; 3894 } 3895 #pragma omp target parallel 3896 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 3897 for (int i = 0; i < 10; ++i) 3898 ; 3899 #pragma omp target parallel 3900 { 3901 #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?}} 3902 ++a; 3903 } 3904 #pragma omp target parallel 3905 { 3906 ++a; 3907 #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?}} 3908 ++a; 3909 } 3910 #pragma omp target parallel 3911 { 3912 #pragma omp taskloop 3913 for (int i = 0; i < 10; ++i) 3914 ++a; 3915 } 3916 #pragma omp target parallel 3917 { 3918 #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?}} 3919 for (int i = 0; i < 10; ++i) 3920 ; 3921 } 3922 #pragma omp target parallel 3923 { 3924 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3925 } 3926 #pragma omp target parallel 3927 { 3928 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3929 } 3930 #pragma omp target parallel 3931 { 3932 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3933 } 3934 #pragma omp target parallel 3935 { 3936 #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?}} 3937 for (int i = 0; i < 10; ++i) 3938 ; 3939 } 3940 #pragma omp target parallel 3941 { 3942 #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?}} 3943 for (int i = 0; i < 10; ++i) 3944 ; 3945 } 3946 #pragma omp target parallel 3947 { 3948 #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?}} 3949 for (int i = 0; i < 10; ++i) 3950 ; 3951 } 3952 #pragma omp target parallel 3953 { 3954 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 3955 for (int i = 0; i < 10; ++i) 3956 ; 3957 } 3958 #pragma omp target parallel 3959 { 3960 #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?}} 3961 for (int i = 0; i < 10; ++i) 3962 ; 3963 } 3964 #pragma omp target parallel 3965 { 3966 #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?}} 3967 for (int i = 0; i < 10; ++i) 3968 ; 3969 } 3970 #pragma omp target parallel 3971 { 3972 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 3973 for (int i = 0; i < 10; ++i) 3974 ; 3975 } 3976 #pragma omp target parallel 3977 { 3978 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 3979 for (int i = 0; i < 10; ++i) 3980 ; 3981 } 3982 #pragma omp target parallel 3983 { 3984 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 3985 a++; 3986 } 3987 3988 // TARGET PARALLEL FOR DIRECTIVE 3989 #pragma omp target parallel for 3990 for (int i = 0; i < 10; ++i) { 3991 #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?}} 3992 for (int i = 0; i < 10; ++i) 3993 ; 3994 } 3995 #pragma omp target parallel for 3996 for (int i = 0; i < 10; ++i) { 3997 #pragma omp simd 3998 for (int i = 0; i < 10; ++i) 3999 ; 4000 } 4001 #pragma omp target parallel for 4002 for (int i = 0; i < 10; ++i) { 4003 #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?}} 4004 for (int i = 0; i < 10; ++i) 4005 ; 4006 } 4007 #pragma omp target parallel for 4008 for (int i = 0; i < 10; ++i) { 4009 #pragma omp parallel 4010 for (int i = 0; i < 10; ++i) 4011 ; 4012 } 4013 #pragma omp target parallel for 4014 for (int i = 0; i < 10; ++i) { 4015 #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?}} 4016 { 4017 bar(); 4018 } 4019 } 4020 #pragma omp target parallel for 4021 for (int i = 0; i < 10; ++i) { 4022 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 4023 { 4024 bar(); 4025 } 4026 } 4027 #pragma omp target parallel for 4028 for (int i = 0; i < 10; ++i) { 4029 #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?}} 4030 { 4031 bar(); 4032 } 4033 } 4034 4035 #pragma omp target parallel for 4036 for (int i = 0; i < 10; ++i) { 4037 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4038 { 4039 bar(); 4040 } 4041 } 4042 4043 #pragma omp target parallel for 4044 for (int i = 0; i < 10; ++i) { 4045 #pragma omp critical 4046 { 4047 bar(); 4048 } 4049 } 4050 4051 #pragma omp target parallel for 4052 for (int i = 0; i < 10; ++i) { 4053 #pragma omp parallel 4054 { 4055 #pragma omp single // OK 4056 { 4057 bar(); 4058 } 4059 #pragma omp for // OK 4060 for (int i = 0; i < 10; ++i) 4061 ; 4062 #pragma omp for simd // OK 4063 for (int i = 0; i < 10; ++i) 4064 ; 4065 #pragma omp sections // OK 4066 { 4067 bar(); 4068 } 4069 } 4070 } 4071 #pragma omp target parallel for 4072 for (int i = 0; i < 10; ++i) { 4073 #pragma omp parallel for 4074 for (int i = 0; i < 10; ++i) 4075 ; 4076 } 4077 #pragma omp target parallel for 4078 for (int i = 0; i < 10; ++i) { 4079 #pragma omp parallel for simd 4080 for (int i = 0; i < 10; ++i) 4081 ; 4082 } 4083 #pragma omp target parallel for 4084 for (int i = 0; i < 10; ++i) { 4085 #pragma omp parallel sections 4086 { 4087 bar(); 4088 } 4089 } 4090 #pragma omp target parallel for 4091 for (int i = 0; i < 10; ++i) { 4092 #pragma omp task 4093 { 4094 bar(); 4095 } 4096 } 4097 #pragma omp target parallel for 4098 for (int i = 0; i < 10; ++i) { 4099 #pragma omp taskyield 4100 bar(); 4101 } 4102 #pragma omp target parallel for 4103 for (int i = 0; i < 10; ++i) { 4104 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4105 bar(); 4106 } 4107 #pragma omp target parallel for 4108 for (int i = 0; i < 10; ++i) { 4109 #pragma omp taskwait 4110 bar(); 4111 } 4112 #pragma omp target parallel for 4113 for (int i = 0; i < 10; ++i) { 4114 #pragma omp flush 4115 bar(); 4116 } 4117 #pragma omp target parallel for 4118 for (int i = 0; i < 10; ++i) { 4119 #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?}} 4120 bar(); 4121 } 4122 #pragma omp target parallel for ordered 4123 for (int i = 0; i < 10; ++i) { 4124 #pragma omp ordered // OK 4125 bar(); 4126 } 4127 #pragma omp target parallel for 4128 for (int i = 0; i < 10; ++i) { 4129 #pragma omp atomic 4130 ++a; 4131 } 4132 #pragma omp target parallel for 4133 for (int i = 0; i < 10; ++i) { 4134 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 4135 ++a; 4136 } 4137 #pragma omp target parallel for 4138 for (int i = 0; i < 10; ++i) { 4139 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 4140 ++a; 4141 } 4142 #pragma omp target parallel for 4143 for (int i = 0; i < 10; ++i) { 4144 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4145 for (int i = 0; i < 10; ++i) 4146 ; 4147 } 4148 #pragma omp target parallel for 4149 for (int i = 0; i < 10; ++i) { 4150 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4151 ++a; 4152 } 4153 #pragma omp target parallel for 4154 for (int i = 0; i < 10; ++i) { 4155 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4156 ++a; 4157 } 4158 #pragma omp target parallel for 4159 for (int i = 0; i < 10; ++i) { 4160 #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?}} 4161 ++a; 4162 } 4163 #pragma omp target parallel for 4164 for (int i = 0; i < 10; ++i) { 4165 #pragma omp taskloop 4166 for (int i = 0; i < 10; ++i) 4167 ++a; 4168 } 4169 #pragma omp target parallel for 4170 for (int i = 0; i < 10; ++i) { 4171 #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?}} 4172 for (int j = 0; j < 10; ++j) 4173 ; 4174 } 4175 #pragma omp target parallel for 4176 for (int i = 0; i < 10; ++i) { 4177 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4178 } 4179 #pragma omp target parallel for 4180 for (int i = 0; i < 10; ++i) { 4181 #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?}} 4182 for (int j = 0; j < 10; ++j) 4183 ; 4184 } 4185 #pragma omp target parallel for 4186 for (int i = 0; i < 10; ++i) { 4187 #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?}} 4188 for (int j = 0; j < 10; ++j) 4189 ; 4190 } 4191 #pragma omp target parallel for 4192 for (int i = 0; i < 10; ++i) { 4193 #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?}} 4194 for (int j = 0; j < 10; ++j) 4195 ; 4196 } 4197 #pragma omp target parallel for 4198 for (int i = 0; i < 10; ++i) { 4199 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4200 for (int j = 0; j < 10; ++j) 4201 ; 4202 } 4203 #pragma omp target parallel for 4204 for (int i = 0; i < 10; ++i) { 4205 #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?}} 4206 for (int j = 0; j < 10; ++j) 4207 ; 4208 } 4209 #pragma omp target parallel for 4210 for (int i = 0; i < 10; ++i) { 4211 #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?}} 4212 for (int j = 0; j < 10; ++j) 4213 ; 4214 } 4215 #pragma omp target parallel for 4216 for (int i = 0; i < 10; ++i) { 4217 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4218 for (int j = 0; j < 10; ++j) 4219 ; 4220 } 4221 #pragma omp target parallel for 4222 for (int i = 0; i < 10; ++i) { 4223 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4224 for (int j = 0; j < 10; ++j) 4225 ; 4226 } 4227 #pragma omp target parallel for 4228 for (int i = 0; i < 10; ++i) { 4229 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 4230 a++; 4231 } 4232 4233 // TEAMS DIRECTIVE 4234 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 4235 bar(); 4236 #pragma omp target 4237 #pragma omp teams 4238 #pragma omp parallel 4239 bar(); 4240 #pragma omp target 4241 #pragma omp teams 4242 #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?}} 4243 for (int i = 0; i < 10; ++i) 4244 ; 4245 #pragma omp target 4246 #pragma omp teams 4247 #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?}} 4248 for (int i = 0; i < 10; ++i) 4249 ; 4250 #pragma omp target 4251 #pragma omp teams 4252 #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?}} 4253 for (int i = 0; i < 10; ++i) 4254 ; 4255 #pragma omp target 4256 #pragma omp teams 4257 #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?}} 4258 { 4259 bar(); 4260 } 4261 #pragma omp target 4262 #pragma omp teams 4263 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 4264 { 4265 bar(); 4266 } 4267 #pragma omp target 4268 #pragma omp teams 4269 #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?}} 4270 bar(); 4271 4272 #pragma omp target 4273 #pragma omp teams 4274 #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?}} 4275 { 4276 bar(); 4277 } 4278 #pragma omp target 4279 #pragma omp teams 4280 #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?}} 4281 { 4282 bar(); 4283 } 4284 #pragma omp target 4285 #pragma omp teams 4286 #pragma omp parallel for 4287 for (int i = 0; i < 10; ++i) 4288 ; 4289 #pragma omp target 4290 #pragma omp teams 4291 #pragma omp parallel for simd 4292 for (int i = 0; i < 10; ++i) 4293 ; 4294 #pragma omp target 4295 #pragma omp teams 4296 #pragma omp parallel sections 4297 { 4298 bar(); 4299 } 4300 #pragma omp target 4301 #pragma omp teams 4302 #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?}} 4303 { 4304 bar(); 4305 } 4306 #pragma omp target 4307 #pragma omp teams 4308 { 4309 #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?}} 4310 bar(); 4311 } 4312 #pragma omp target 4313 #pragma omp teams 4314 { 4315 #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?}} 4316 bar(); 4317 } 4318 #pragma omp target 4319 #pragma omp teams 4320 { 4321 #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?}} 4322 bar(); 4323 } 4324 #pragma omp target 4325 #pragma omp teams 4326 { 4327 #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?}} 4328 bar(); 4329 } 4330 #pragma omp target 4331 #pragma omp teams 4332 { 4333 #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?}} 4334 bar(); 4335 } 4336 #pragma omp target 4337 #pragma omp teams 4338 { 4339 #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?}} 4340 ++a; 4341 } 4342 #pragma omp target 4343 #pragma omp teams 4344 { 4345 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4346 ++a; 4347 } 4348 #pragma omp target 4349 #pragma omp teams 4350 { 4351 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4352 ++a; 4353 } 4354 #pragma omp target 4355 #pragma omp teams 4356 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4357 for (int i = 0; i < 10; ++i) 4358 ; 4359 #pragma omp target 4360 #pragma omp teams 4361 { 4362 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4363 ++a; 4364 } 4365 #pragma omp target 4366 #pragma omp teams 4367 { 4368 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4369 ++a; 4370 } 4371 #pragma omp target 4372 #pragma omp teams 4373 { 4374 #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?}} 4375 ++a; 4376 } 4377 #pragma omp target 4378 #pragma omp teams 4379 { 4380 #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?}} 4381 for (int i = 0; i < 10; ++i) 4382 ++a; 4383 } 4384 #pragma omp target 4385 #pragma omp teams 4386 #pragma omp distribute 4387 for (int i = 0; i < 10; ++i) 4388 ; 4389 #pragma omp target 4390 #pragma omp teams 4391 #pragma omp distribute 4392 for (int i = 0; i < 10; ++i) 4393 ; 4394 #pragma omp distribute 4395 for (int j = 0; j < 10; ++j) 4396 ; 4397 #pragma omp target 4398 #pragma omp teams 4399 { 4400 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4401 } 4402 #pragma omp target 4403 #pragma omp teams 4404 { 4405 #pragma omp distribute parallel for 4406 for (int i = 0; i < 10; ++i) 4407 ; 4408 #pragma omp distribute parallel for 4409 for (int j = 0; j < 10; ++j) 4410 ; 4411 } 4412 #pragma omp target 4413 #pragma omp teams 4414 { 4415 #pragma omp distribute parallel for simd 4416 for (int i = 0; i < 10; ++i) 4417 ; 4418 #pragma omp distribute parallel for simd 4419 for (int j = 0; j < 10; ++j) 4420 ; 4421 } 4422 #pragma omp target 4423 #pragma omp teams 4424 { 4425 #pragma omp distribute simd 4426 for (int i = 0; i < 10; ++i) 4427 ; 4428 #pragma omp distribute simd 4429 for (int j = 0; j < 10; ++j) 4430 ; 4431 } 4432 #pragma omp target 4433 #pragma omp teams 4434 { 4435 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4436 for (int i = 0; i < 10; ++i) 4437 ; 4438 } 4439 #pragma omp target 4440 #pragma omp teams 4441 { 4442 #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?}} 4443 for (int i = 0; i < 10; ++i) 4444 ; 4445 } 4446 #pragma omp target 4447 #pragma omp teams 4448 { 4449 #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?}} 4450 for (int i = 0; i < 10; ++i) 4451 ; 4452 } 4453 #pragma omp target 4454 #pragma omp teams 4455 { 4456 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4457 for (int i = 0; i < 10; ++i) 4458 ; 4459 } 4460 #pragma omp target 4461 #pragma omp teams 4462 { 4463 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4464 for (int i = 0; i < 10; ++i) 4465 ; 4466 } 4467 #pragma omp target 4468 #pragma omp teams 4469 { 4470 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4471 a++; 4472 } 4473 4474 // TASKLOOP DIRECTIVE 4475 #pragma omp taskloop 4476 for (int i = 0; i < 10; ++i) { 4477 #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?}} 4478 for (int i = 0; i < 10; ++i) 4479 ; 4480 } 4481 #pragma omp taskloop 4482 for (int i = 0; i < 10; ++i) { 4483 #pragma omp simd 4484 for (int i = 0; i < 10; ++i) 4485 ; 4486 } 4487 #pragma omp taskloop 4488 for (int i = 0; i < 10; ++i) { 4489 #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?}} 4490 for (int i = 0; i < 10; ++i) 4491 ; 4492 } 4493 #pragma omp taskloop 4494 for (int i = 0; i < 10; ++i) { 4495 #pragma omp parallel 4496 for (int i = 0; i < 10; ++i) 4497 ; 4498 } 4499 #pragma omp taskloop 4500 for (int i = 0; i < 10; ++i) { 4501 #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?}} 4502 { 4503 bar(); 4504 } 4505 } 4506 #pragma omp taskloop 4507 for (int i = 0; i < 10; ++i) { 4508 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 4509 { 4510 bar(); 4511 } 4512 } 4513 #pragma omp taskloop 4514 for (int i = 0; i < 10; ++i) { 4515 #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?}} 4516 { 4517 bar(); 4518 } 4519 } 4520 4521 #pragma omp taskloop 4522 for (int i = 0; i < 10; ++i) { 4523 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4524 { 4525 bar(); 4526 } 4527 } 4528 #pragma omp taskloop 4529 for (int i = 0; i < 10; ++i) { 4530 #pragma omp critical 4531 { 4532 bar(); 4533 } 4534 } 4535 #pragma omp taskloop 4536 for (int i = 0; i < 10; ++i) { 4537 #pragma omp parallel 4538 { 4539 #pragma omp single // OK 4540 { 4541 bar(); 4542 } 4543 #pragma omp for // OK 4544 for (int i = 0; i < 10; ++i) 4545 ; 4546 #pragma omp sections // OK 4547 { 4548 bar(); 4549 } 4550 } 4551 } 4552 #pragma omp taskloop 4553 for (int i = 0; i < 10; ++i) { 4554 #pragma omp parallel for 4555 for (int i = 0; i < 10; ++i) 4556 ; 4557 } 4558 #pragma omp taskloop 4559 for (int i = 0; i < 10; ++i) { 4560 #pragma omp parallel for simd 4561 for (int i = 0; i < 10; ++i) 4562 ; 4563 } 4564 #pragma omp taskloop 4565 for (int i = 0; i < 10; ++i) { 4566 #pragma omp parallel sections 4567 { 4568 bar(); 4569 } 4570 } 4571 #pragma omp taskloop 4572 for (int i = 0; i < 10; ++i) { 4573 #pragma omp task 4574 { 4575 bar(); 4576 } 4577 } 4578 #pragma omp taskloop 4579 for (int i = 0; i < 10; ++i) { 4580 #pragma omp taskyield 4581 bar(); 4582 } 4583 #pragma omp taskloop 4584 for (int i = 0; i < 10; ++i) { 4585 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4586 bar(); 4587 } 4588 #pragma omp taskloop 4589 for (int i = 0; i < 10; ++i) { 4590 #pragma omp taskwait 4591 bar(); 4592 } 4593 #pragma omp taskloop 4594 for (int i = 0; i < 10; ++i) { 4595 #pragma omp flush 4596 bar(); 4597 } 4598 #pragma omp taskloop 4599 for (int i = 0; i < 10; ++i) { 4600 #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?}} 4601 bar(); 4602 } 4603 #pragma omp taskloop 4604 for (int i = 0; i < 10; ++i) { 4605 #pragma omp atomic 4606 ++a; 4607 } 4608 #pragma omp taskloop 4609 for (int i = 0; i < 10; ++i) { 4610 #pragma omp target 4611 ++a; 4612 } 4613 #pragma omp taskloop 4614 for (int i = 0; i < 10; ++i) { 4615 #pragma omp target parallel 4616 ++a; 4617 } 4618 #pragma omp taskloop 4619 for (int i = 0; i < 10; ++i) { 4620 #pragma omp target parallel for 4621 for (int i = 0; i < 10; ++i) 4622 ; 4623 } 4624 #pragma omp taskloop 4625 for (int i = 0; i < 10; ++i) { 4626 #pragma omp target enter data map(to: a) 4627 ++a; 4628 } 4629 #pragma omp taskloop 4630 for (int i = 0; i < 10; ++i) { 4631 #pragma omp target exit data map(from: a) 4632 ++a; 4633 } 4634 #pragma omp taskloop 4635 for (int i = 0; i < 10; ++i) { 4636 #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?}} 4637 ++a; 4638 } 4639 #pragma omp taskloop 4640 for (int i = 0; i < 10; ++i) { 4641 #pragma omp taskloop 4642 for (int i = 0; i < 10; ++i) 4643 ++a; 4644 } 4645 #pragma omp taskloop 4646 for (int i = 0; i < 10; ++i) { 4647 #pragma omp target update to(a) 4648 bar(); 4649 } 4650 #pragma omp taskloop 4651 for (int i = 0; i < 10; ++i) { 4652 #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?}} 4653 for (int j = 0; j < 10; ++j) 4654 ++a; 4655 } 4656 #pragma omp taskloop 4657 for (int i = 0; i < 10; ++i) { 4658 #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?}} 4659 for (int j = 0; j < 10; ++j) 4660 ++a; 4661 } 4662 #pragma omp taskloop 4663 for (int i = 0; i < 10; ++i) { 4664 #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?}} 4665 for (int j = 0; j < 10; ++j) 4666 ++a; 4667 } 4668 #pragma omp taskloop 4669 for (int i = 0; i < 10; ++i) { 4670 #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?}} 4671 for (int j = 0; j < 10; ++j) 4672 ++a; 4673 } 4674 #pragma omp taskloop 4675 for (int i = 0; i < 10; ++i) { 4676 #pragma omp target simd // OK 4677 for (int j = 0; j < 10; ++j) 4678 ++a; 4679 } 4680 #pragma omp taskloop 4681 for (int i = 0; i < 10; ++i) { 4682 #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?}} 4683 for (int j = 0; j < 10; ++j) 4684 ++a; 4685 } 4686 #pragma omp taskloop 4687 for (int i = 0; i < 10; ++i) { 4688 #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?}} 4689 for (int j = 0; j < 10; ++j) 4690 ++a; 4691 } 4692 #pragma omp taskloop 4693 for (int i = 0; i < 10; ++i) { 4694 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4695 for (int j = 0; j < 10; ++j) 4696 ++a; 4697 } 4698 #pragma omp taskloop 4699 for (int i = 0; i < 10; ++i) { 4700 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4701 for (int j = 0; j < 10; ++j) 4702 ++a; 4703 } 4704 #pragma omp taskloop 4705 for (int i = 0; i < 10; ++i) { 4706 #pragma omp target teams // OK 4707 ++a; 4708 } 4709 4710 // DISTRIBUTE DIRECTIVE 4711 #pragma omp target 4712 #pragma omp teams 4713 #pragma omp distribute 4714 for (int i = 0; i < 10; ++i) { 4715 #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?}} 4716 for (int i = 0; i < 10; ++i) 4717 ; 4718 } 4719 #pragma omp target 4720 #pragma omp teams 4721 #pragma omp distribute 4722 for (int i = 0; i < 10; ++i) { 4723 #pragma omp for 4724 for (int i = 0; i < 10; ++i) 4725 ; 4726 } 4727 #pragma omp target 4728 #pragma omp teams 4729 #pragma omp distribute 4730 for (int i = 0; i < 10; ++i) { 4731 #pragma omp simd 4732 for (int i = 0; i < 10; ++i) 4733 ; 4734 } 4735 #pragma omp target 4736 #pragma omp teams 4737 #pragma omp distribute 4738 for (int i = 0; i < 10; ++i) { 4739 #pragma omp for simd 4740 for (int i = 0; i < 10; ++i) 4741 ; 4742 } 4743 #pragma omp target 4744 #pragma omp teams 4745 #pragma omp distribute 4746 for (int i = 0; i < 10; ++i) { 4747 #pragma omp parallel 4748 for (int i = 0; i < 10; ++i) 4749 ; 4750 } 4751 #pragma omp target 4752 #pragma omp teams 4753 #pragma omp distribute 4754 for (int i = 0; i < 10; ++i) { 4755 #pragma omp sections 4756 { 4757 bar(); 4758 } 4759 } 4760 #pragma omp target 4761 #pragma omp teams 4762 #pragma omp distribute 4763 for (int i = 0; i < 10; ++i) { 4764 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 4765 { 4766 bar(); 4767 } 4768 } 4769 #pragma omp target 4770 #pragma omp teams 4771 #pragma omp distribute 4772 for (int i = 0; i < 10; ++i) { 4773 #pragma omp single 4774 { 4775 bar(); 4776 } 4777 } 4778 #pragma omp target 4779 #pragma omp teams 4780 #pragma omp distribute 4781 for (int i = 0; i < 10; ++i) { 4782 #pragma omp master 4783 { 4784 bar(); 4785 } 4786 } 4787 #pragma omp target 4788 #pragma omp teams 4789 #pragma omp distribute 4790 for (int i = 0; i < 10; ++i) { 4791 #pragma omp critical 4792 { 4793 bar(); 4794 } 4795 } 4796 #pragma omp target 4797 #pragma omp teams 4798 #pragma omp distribute 4799 for (int i = 0; i < 10; ++i) { 4800 #pragma omp parallel 4801 { 4802 #pragma omp single 4803 { 4804 bar(); 4805 } 4806 } 4807 } 4808 #pragma omp target 4809 #pragma omp teams 4810 #pragma omp distribute 4811 for (int i = 0; i < 10; ++i) { 4812 #pragma omp parallel for 4813 for (int i = 0; i < 10; ++i) 4814 ; 4815 } 4816 #pragma omp target 4817 #pragma omp teams 4818 #pragma omp distribute 4819 for (int i = 0; i < 10; ++i) { 4820 #pragma omp parallel for simd 4821 for (int i = 0; i < 10; ++i) 4822 ; 4823 } 4824 #pragma omp target 4825 #pragma omp teams 4826 #pragma omp distribute 4827 for (int i = 0; i < 10; ++i) { 4828 #pragma omp parallel sections 4829 { 4830 bar(); 4831 } 4832 } 4833 #pragma omp target 4834 #pragma omp teams 4835 #pragma omp distribute 4836 for (int i = 0; i < 10; ++i) { 4837 #pragma omp task 4838 { 4839 bar(); 4840 } 4841 } 4842 #pragma omp target 4843 #pragma omp teams 4844 #pragma omp distribute 4845 for (int i = 0; i < 10; ++i) { 4846 #pragma omp taskyield 4847 bar(); 4848 } 4849 #pragma omp target 4850 #pragma omp teams 4851 #pragma omp distribute 4852 for (int i = 0; i < 10; ++i) { 4853 #pragma omp barrier 4854 bar(); 4855 } 4856 #pragma omp target 4857 #pragma omp teams 4858 #pragma omp distribute 4859 for (int i = 0; i < 10; ++i) { 4860 #pragma omp taskwait 4861 bar(); 4862 } 4863 #pragma omp target 4864 #pragma omp teams 4865 #pragma omp distribute 4866 for (int i = 0; i < 10; ++i) { 4867 #pragma omp flush 4868 bar(); 4869 } 4870 #pragma omp target 4871 #pragma omp teams 4872 #pragma omp distribute 4873 for (int i = 0; i < 10; ++i) { 4874 #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?}} 4875 bar(); 4876 } 4877 #pragma omp target 4878 #pragma omp teams 4879 #pragma omp distribute 4880 for (int i = 0; i < 10; ++i) { 4881 #pragma omp atomic 4882 ++a; 4883 } 4884 #pragma omp target 4885 #pragma omp teams 4886 #pragma omp distribute 4887 for (int i = 0; i < 10; ++i) { 4888 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4889 ++a; 4890 } 4891 #pragma omp target 4892 #pragma omp teams 4893 #pragma omp distribute 4894 for (int i = 0; i < 10; ++i) { 4895 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4896 ++a; 4897 } 4898 #pragma omp target 4899 #pragma omp teams 4900 #pragma omp distribute 4901 for (int i = 0; i < 10; ++i) { 4902 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4903 for (int i = 0; i < 10; ++i) 4904 ; 4905 } 4906 #pragma omp target 4907 #pragma omp teams 4908 #pragma omp distribute 4909 for (int i = 0; i < 10; ++i) { 4910 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4911 ++a; 4912 } 4913 #pragma omp target 4914 #pragma omp teams 4915 #pragma omp distribute 4916 for (int i = 0; i < 10; ++i) { 4917 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4918 ++a; 4919 } 4920 #pragma omp target 4921 #pragma omp teams 4922 #pragma omp distribute 4923 for (int i = 0; i < 10; ++i) { 4924 #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?}} 4925 ++a; 4926 } 4927 #pragma omp target 4928 #pragma omp teams 4929 #pragma omp distribute 4930 for (int i = 0; i < 10; ++i) { 4931 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4932 ++a; 4933 } 4934 #pragma omp target 4935 #pragma omp teams 4936 #pragma omp distribute 4937 for (int i = 0; i < 10; ++i) { 4938 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4939 for (int j = 0; j < 10; ++j) 4940 ; 4941 } 4942 #pragma omp target 4943 #pragma omp teams 4944 #pragma omp distribute 4945 for (int i = 0; i < 10; ++i) { 4946 #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?}} 4947 for (int j = 0; j < 10; ++j) 4948 ; 4949 } 4950 #pragma omp target 4951 #pragma omp teams 4952 #pragma omp distribute 4953 for (int i = 0; i < 10; ++i) { 4954 #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?}} 4955 for (int j = 0; j < 10; ++j) 4956 ; 4957 } 4958 #pragma omp target 4959 #pragma omp teams 4960 #pragma omp distribute 4961 for (int i = 0; i < 10; ++i) { 4962 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 4963 for (int j = 0; j < 10; ++j) 4964 ; 4965 } 4966 #pragma omp target 4967 #pragma omp teams 4968 #pragma omp distribute 4969 for (int i = 0; i < 10; ++i) { 4970 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 4971 for (int j = 0; j < 10; ++j) 4972 ; 4973 } 4974 #pragma omp target 4975 #pragma omp teams 4976 #pragma omp distribute 4977 for (int i = 0; i < 10; ++i) { 4978 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 4979 a++; 4980 } 4981 4982 // DISTRIBUTE PARALLEL FOR DIRECTIVE 4983 #pragma omp target 4984 #pragma omp teams 4985 #pragma omp distribute parallel for 4986 for (int i = 0; i < 10; ++i) { 4987 #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?}} 4988 for (int i = 0; i < 10; ++i) 4989 ; 4990 } 4991 #pragma omp target 4992 #pragma omp teams 4993 #pragma omp distribute parallel for 4994 for (int i = 0; i < 10; ++i) { 4995 #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?}} 4996 for (int i = 0; i < 10; ++i) 4997 ; 4998 } 4999 #pragma omp target 5000 #pragma omp teams 5001 #pragma omp distribute parallel for 5002 for (int i = 0; i < 10; ++i) { 5003 #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?}} 5004 for (int i = 0; i < 10; ++i) 5005 ; 5006 } 5007 #pragma omp target 5008 #pragma omp teams 5009 #pragma omp distribute parallel for 5010 for (int i = 0; i < 10; ++i) { 5011 #pragma omp simd 5012 for (int i = 0; i < 10; ++i) 5013 ; 5014 } 5015 #pragma omp target 5016 #pragma omp teams 5017 #pragma omp distribute parallel for 5018 for (int i = 0; i < 10; ++i) { 5019 #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?}} 5020 for (int i = 0; i < 10; ++i) 5021 ; 5022 } 5023 #pragma omp target 5024 #pragma omp teams 5025 #pragma omp distribute parallel for 5026 for (int i = 0; i < 10; ++i) { 5027 #pragma omp parallel 5028 for (int i = 0; i < 10; ++i) 5029 ; 5030 } 5031 #pragma omp target 5032 #pragma omp teams 5033 #pragma omp distribute parallel for 5034 for (int i = 0; i < 10; ++i) { 5035 #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?}} 5036 { 5037 bar(); 5038 } 5039 } 5040 #pragma omp target 5041 #pragma omp teams 5042 #pragma omp distribute parallel for 5043 for (int i = 0; i < 10; ++i) { 5044 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 5045 { 5046 bar(); 5047 } 5048 } 5049 #pragma omp target 5050 #pragma omp teams 5051 #pragma omp distribute parallel for 5052 for (int i = 0; i < 10; ++i) { 5053 #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?}} 5054 { 5055 bar(); 5056 } 5057 } 5058 #pragma omp target 5059 #pragma omp teams 5060 #pragma omp distribute parallel for 5061 for (int i = 0; i < 10; ++i) { 5062 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5063 { 5064 bar(); 5065 } 5066 } 5067 #pragma omp target 5068 #pragma omp teams 5069 #pragma omp distribute parallel for 5070 for (int i = 0; i < 10; ++i) { 5071 #pragma omp critical 5072 { 5073 bar(); 5074 } 5075 } 5076 #pragma omp target 5077 #pragma omp teams 5078 #pragma omp distribute parallel for 5079 for (int i = 0; i < 10; ++i) { 5080 #pragma omp parallel 5081 { 5082 #pragma omp single 5083 { 5084 bar(); 5085 } 5086 } 5087 } 5088 #pragma omp target 5089 #pragma omp teams 5090 #pragma omp distribute parallel for 5091 for (int i = 0; i < 10; ++i) { 5092 #pragma omp parallel for 5093 for (int i = 0; i < 10; ++i) 5094 ; 5095 } 5096 #pragma omp target 5097 #pragma omp teams 5098 #pragma omp distribute parallel for 5099 for (int i = 0; i < 10; ++i) { 5100 #pragma omp parallel for simd 5101 for (int i = 0; i < 10; ++i) 5102 ; 5103 } 5104 #pragma omp target 5105 #pragma omp teams 5106 #pragma omp distribute parallel for 5107 for (int i = 0; i < 10; ++i) { 5108 #pragma omp parallel sections 5109 { 5110 bar(); 5111 } 5112 } 5113 #pragma omp target 5114 #pragma omp teams 5115 #pragma omp distribute parallel for 5116 for (int i = 0; i < 10; ++i) { 5117 #pragma omp task 5118 { 5119 bar(); 5120 } 5121 } 5122 #pragma omp target 5123 #pragma omp teams 5124 #pragma omp distribute parallel for 5125 for (int i = 0; i < 10; ++i) { 5126 #pragma omp taskyield 5127 bar(); 5128 } 5129 #pragma omp target 5130 #pragma omp teams 5131 #pragma omp distribute parallel for 5132 for (int i = 0; i < 10; ++i) { 5133 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5134 bar(); 5135 } 5136 #pragma omp target 5137 #pragma omp teams 5138 #pragma omp distribute parallel for 5139 for (int i = 0; i < 10; ++i) { 5140 #pragma omp taskwait 5141 bar(); 5142 } 5143 #pragma omp target 5144 #pragma omp teams 5145 #pragma omp distribute parallel for 5146 for (int i = 0; i < 10; ++i) { 5147 #pragma omp flush 5148 bar(); 5149 } 5150 #pragma omp target 5151 #pragma omp teams 5152 #pragma omp distribute parallel for 5153 for (int i = 0; i < 10; ++i) { 5154 #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?}} 5155 bar(); 5156 } 5157 #pragma omp target 5158 #pragma omp teams 5159 #pragma omp distribute parallel for 5160 for (int i = 0; i < 10; ++i) { 5161 #pragma omp atomic 5162 ++a; 5163 } 5164 #pragma omp target 5165 #pragma omp teams 5166 #pragma omp distribute parallel for 5167 for (int i = 0; i < 10; ++i) { 5168 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5169 ++a; 5170 } 5171 #pragma omp target 5172 #pragma omp teams 5173 #pragma omp distribute parallel for 5174 for (int i = 0; i < 10; ++i) { 5175 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5176 ++a; 5177 } 5178 #pragma omp target 5179 #pragma omp teams 5180 #pragma omp distribute parallel for 5181 for (int i = 0; i < 10; ++i) { 5182 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5183 for (int i = 0; i < 10; ++i) 5184 ; 5185 } 5186 #pragma omp target 5187 #pragma omp teams 5188 #pragma omp distribute parallel for 5189 for (int i = 0; i < 10; ++i) { 5190 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5191 ++a; 5192 } 5193 #pragma omp target 5194 #pragma omp teams 5195 #pragma omp distribute parallel for 5196 for (int i = 0; i < 10; ++i) { 5197 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5198 ++a; 5199 } 5200 #pragma omp target 5201 #pragma omp teams 5202 #pragma omp distribute parallel for 5203 for (int i = 0; i < 10; ++i) { 5204 #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?}} 5205 ++a; 5206 } 5207 #pragma omp target 5208 #pragma omp teams 5209 #pragma omp distribute parallel for 5210 for (int i = 0; i < 10; ++i) { 5211 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5212 ++a; 5213 } 5214 #pragma omp target 5215 #pragma omp teams 5216 #pragma omp distribute parallel for 5217 for (int i = 0; i < 10; ++i) { 5218 #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?}} 5219 for (int i = 0; i < 10; ++i) 5220 ; 5221 } 5222 #pragma omp target 5223 #pragma omp teams 5224 #pragma omp distribute parallel for 5225 for (int i = 0; i < 10; ++i) { 5226 #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?}} 5227 for (int i = 0; i < 10; ++i) 5228 ; 5229 } 5230 #pragma omp target 5231 #pragma omp teams 5232 #pragma omp distribute parallel for 5233 for (int i = 0; i < 10; ++i) { 5234 #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?}} 5235 for (int i = 0; i < 10; ++i) 5236 ; 5237 } 5238 #pragma omp target 5239 #pragma omp teams 5240 #pragma omp distribute parallel for 5241 for (int i = 0; i < 10; ++i) { 5242 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5243 for (int i = 0; i < 10; ++i) 5244 ; 5245 } 5246 #pragma omp target 5247 #pragma omp teams 5248 #pragma omp distribute parallel for 5249 for (int i = 0; i < 10; ++i) { 5250 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 5251 for (int i = 0; i < 10; ++i) 5252 ; 5253 } 5254 #pragma omp target 5255 #pragma omp teams 5256 #pragma omp distribute parallel for 5257 for (int i = 0; i < 10; ++i) { 5258 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 5259 a++; 5260 } 5261 5262 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 5263 #pragma omp target 5264 #pragma omp teams 5265 #pragma omp distribute parallel for simd 5266 for (int i = 0; i < 10; ++i) { 5267 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5268 for (int i = 0; i < 10; ++i) 5269 ; 5270 } 5271 #pragma omp target 5272 #pragma omp teams 5273 #pragma omp distribute parallel for simd 5274 for (int i = 0; i < 10; ++i) { 5275 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5276 for (int i = 0; i < 10; ++i) 5277 ; 5278 } 5279 #pragma omp target 5280 #pragma omp teams 5281 #pragma omp distribute parallel for simd 5282 for (int i = 0; i < 10; ++i) { 5283 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5284 for (int i = 0; i < 10; ++i) 5285 ; 5286 } 5287 #pragma omp target 5288 #pragma omp teams 5289 #pragma omp distribute parallel for simd 5290 for (int i = 0; i < 10; ++i) { 5291 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5292 for (int i = 0; i < 10; ++i) 5293 ; 5294 } 5295 #pragma omp target 5296 #pragma omp teams 5297 #pragma omp distribute parallel for simd 5298 for (int i = 0; i < 10; ++i) { 5299 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5300 for (int i = 0; i < 10; ++i) 5301 ; 5302 } 5303 #pragma omp target 5304 #pragma omp teams 5305 #pragma omp distribute parallel for simd 5306 for (int i = 0; i < 10; ++i) { 5307 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5308 for (int i = 0; i < 10; ++i) 5309 ; 5310 } 5311 #pragma omp target 5312 #pragma omp teams 5313 #pragma omp distribute parallel for simd 5314 for (int i = 0; i < 10; ++i) { 5315 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5316 { 5317 bar(); 5318 } 5319 } 5320 #pragma omp target 5321 #pragma omp teams 5322 #pragma omp distribute parallel for simd 5323 for (int i = 0; i < 10; ++i) { 5324 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5325 { 5326 bar(); 5327 } 5328 } 5329 #pragma omp target 5330 #pragma omp teams 5331 #pragma omp distribute parallel for simd 5332 for (int i = 0; i < 10; ++i) { 5333 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5334 { 5335 bar(); 5336 } 5337 } 5338 #pragma omp target 5339 #pragma omp teams 5340 #pragma omp distribute parallel for simd 5341 for (int i = 0; i < 10; ++i) { 5342 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5343 { 5344 bar(); 5345 } 5346 } 5347 #pragma omp target 5348 #pragma omp teams 5349 #pragma omp distribute parallel for simd 5350 for (int i = 0; i < 10; ++i) { 5351 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5352 { 5353 bar(); 5354 } 5355 } 5356 #pragma omp target 5357 #pragma omp teams 5358 #pragma omp distribute parallel for simd 5359 for (int i = 0; i < 10; ++i) { 5360 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5361 { 5362 #pragma omp single 5363 { 5364 bar(); 5365 } 5366 } 5367 } 5368 #pragma omp target 5369 #pragma omp teams 5370 #pragma omp distribute parallel for simd 5371 for (int i = 0; i < 10; ++i) { 5372 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5373 for (int i = 0; i < 10; ++i) 5374 ; 5375 } 5376 #pragma omp target 5377 #pragma omp teams 5378 #pragma omp distribute parallel for simd 5379 for (int i = 0; i < 10; ++i) { 5380 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5381 for (int i = 0; i < 10; ++i) 5382 ; 5383 } 5384 #pragma omp target 5385 #pragma omp teams 5386 #pragma omp distribute parallel for simd 5387 for (int i = 0; i < 10; ++i) { 5388 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5389 { 5390 bar(); 5391 } 5392 } 5393 #pragma omp target 5394 #pragma omp teams 5395 #pragma omp distribute parallel for simd 5396 for (int i = 0; i < 10; ++i) { 5397 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5398 { 5399 bar(); 5400 } 5401 } 5402 #pragma omp target 5403 #pragma omp teams 5404 #pragma omp distribute parallel for simd 5405 for (int i = 0; i < 10; ++i) { 5406 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5407 bar(); 5408 } 5409 #pragma omp target 5410 #pragma omp teams 5411 #pragma omp distribute parallel for simd 5412 for (int i = 0; i < 10; ++i) { 5413 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5414 bar(); 5415 } 5416 #pragma omp target 5417 #pragma omp teams 5418 #pragma omp distribute parallel for simd 5419 for (int i = 0; i < 10; ++i) { 5420 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5421 bar(); 5422 } 5423 #pragma omp target 5424 #pragma omp teams 5425 #pragma omp distribute parallel for simd 5426 for (int i = 0; i < 10; ++i) { 5427 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5428 bar(); 5429 } 5430 #pragma omp target 5431 #pragma omp teams 5432 #pragma omp distribute parallel for simd 5433 for (int i = 0; i < 10; ++i) { 5434 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5435 bar(); 5436 } 5437 #pragma omp target 5438 #pragma omp teams 5439 #pragma omp distribute parallel for simd 5440 for (int i = 0; i < 10; ++i) { 5441 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5442 ++a; 5443 } 5444 #pragma omp target 5445 #pragma omp teams 5446 #pragma omp distribute parallel for simd 5447 for (int i = 0; i < 10; ++i) { 5448 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5449 ++a; 5450 } 5451 #pragma omp target 5452 #pragma omp teams 5453 #pragma omp distribute parallel for simd 5454 for (int i = 0; i < 10; ++i) { 5455 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5456 ++a; 5457 } 5458 #pragma omp target 5459 #pragma omp teams 5460 #pragma omp distribute parallel for simd 5461 for (int i = 0; i < 10; ++i) { 5462 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5463 for (int i = 0; i < 10; ++i) 5464 ; 5465 } 5466 #pragma omp target 5467 #pragma omp teams 5468 #pragma omp distribute parallel for simd 5469 for (int i = 0; i < 10; ++i) { 5470 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5471 ++a; 5472 } 5473 #pragma omp target 5474 #pragma omp teams 5475 #pragma omp distribute parallel for simd 5476 for (int i = 0; i < 10; ++i) { 5477 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5478 ++a; 5479 } 5480 #pragma omp target 5481 #pragma omp teams 5482 #pragma omp distribute parallel for simd 5483 for (int i = 0; i < 10; ++i) { 5484 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5485 ++a; 5486 } 5487 #pragma omp target 5488 #pragma omp teams 5489 #pragma omp distribute parallel for simd 5490 for (int i = 0; i < 10; ++i) { 5491 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5492 ++a; 5493 } 5494 #pragma omp target 5495 #pragma omp teams 5496 #pragma omp distribute parallel for simd 5497 for (int i = 0; i < 10; ++i) { 5498 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5499 for (int i = 0; i < 10; ++i) 5500 ++a; 5501 } 5502 #pragma omp target 5503 #pragma omp teams 5504 #pragma omp distribute parallel for simd 5505 for (int i = 0; i < 10; ++i) { 5506 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5507 for (int i = 0; i < 10; ++i) 5508 ++a; 5509 } 5510 #pragma omp target 5511 #pragma omp teams 5512 #pragma omp distribute parallel for simd 5513 for (int i = 0; i < 10; ++i) { 5514 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5515 for (int i = 0; i < 10; ++i) 5516 ++a; 5517 } 5518 #pragma omp target 5519 #pragma omp teams 5520 #pragma omp distribute parallel for simd 5521 for (int i = 0; i < 10; ++i) { 5522 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5523 for (int i = 0; i < 10; ++i) 5524 ++a; 5525 } 5526 #pragma omp target 5527 #pragma omp teams 5528 #pragma omp distribute parallel for simd 5529 for (int i = 0; i < 10; ++i) { 5530 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5531 for (int i = 0; i < 10; ++i) 5532 ++a; 5533 } 5534 #pragma omp target 5535 #pragma omp teams 5536 #pragma omp distribute parallel for simd 5537 for (int i = 0; i < 10; ++i) { 5538 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5539 for (int i = 0; i < 10; ++i) 5540 ++a; 5541 } 5542 #pragma omp target 5543 #pragma omp teams 5544 #pragma omp distribute parallel for simd 5545 for (int i = 0; i < 10; ++i) { 5546 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5547 ++a; 5548 } 5549 5550 // TARGET SIMD DIRECTIVE 5551 #pragma omp target simd 5552 for (int i = 0; i < 10; ++i) { 5553 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5554 for (int i = 0; i < 10; ++i) 5555 ; 5556 } 5557 #pragma omp target simd 5558 for (int i = 0; i < 10; ++i) { 5559 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5560 for (int i = 0; i < 10; ++i) 5561 ; 5562 } 5563 #pragma omp target simd 5564 for (int i = 0; i < 10; ++i) { 5565 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5566 for (int i = 0; i < 10; ++i) 5567 ; 5568 } 5569 #pragma omp target simd 5570 for (int i = 0; i < 10; ++i) { 5571 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5572 for (int i = 0; i < 10; ++i) 5573 ; 5574 } 5575 #pragma omp target simd 5576 for (int i = 0; i < 10; ++i) { 5577 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5578 for (int i = 0; i < 10; ++i) 5579 ; 5580 } 5581 #pragma omp target simd 5582 for (int i = 0; i < 10; ++i) { 5583 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5584 for (int i = 0; i < 10; ++i) 5585 ; 5586 } 5587 #pragma omp target simd 5588 for (int i = 0; i < 10; ++i) { 5589 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5590 { 5591 bar(); 5592 } 5593 } 5594 #pragma omp target simd 5595 for (int i = 0; i < 10; ++i) { 5596 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5597 { 5598 bar(); 5599 } 5600 } 5601 #pragma omp target simd 5602 for (int i = 0; i < 10; ++i) { 5603 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5604 { 5605 bar(); 5606 } 5607 } 5608 #pragma omp target simd 5609 for (int i = 0; i < 10; ++i) { 5610 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5611 { 5612 bar(); 5613 } 5614 } 5615 #pragma omp target simd 5616 for (int i = 0; i < 10; ++i) { 5617 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5618 { 5619 bar(); 5620 } 5621 } 5622 #pragma omp target simd 5623 for (int i = 0; i < 10; ++i) { 5624 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5625 { 5626 #pragma omp single 5627 { 5628 bar(); 5629 } 5630 } 5631 } 5632 #pragma omp target simd 5633 for (int i = 0; i < 10; ++i) { 5634 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5635 for (int i = 0; i < 10; ++i) 5636 ; 5637 } 5638 #pragma omp target simd 5639 for (int i = 0; i < 10; ++i) { 5640 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5641 for (int i = 0; i < 10; ++i) 5642 ; 5643 } 5644 #pragma omp target simd 5645 for (int i = 0; i < 10; ++i) { 5646 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5647 { 5648 bar(); 5649 } 5650 } 5651 #pragma omp target simd 5652 for (int i = 0; i < 10; ++i) { 5653 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5654 { 5655 bar(); 5656 } 5657 } 5658 #pragma omp target simd 5659 for (int i = 0; i < 10; ++i) { 5660 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5661 bar(); 5662 } 5663 #pragma omp target simd 5664 for (int i = 0; i < 10; ++i) { 5665 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5666 bar(); 5667 } 5668 #pragma omp target simd 5669 for (int i = 0; i < 10; ++i) { 5670 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5671 bar(); 5672 } 5673 #pragma omp target simd 5674 for (int i = 0; i < 10; ++i) { 5675 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5676 bar(); 5677 } 5678 #pragma omp target simd 5679 for (int i = 0; i < 10; ++i) { 5680 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5681 bar(); 5682 } 5683 #pragma omp target simd 5684 for (int i = 0; i < 10; ++i) { 5685 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5686 ++a; 5687 } 5688 #pragma omp target simd 5689 for (int i = 0; i < 10; ++i) { 5690 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5691 ++a; 5692 } 5693 #pragma omp target simd 5694 for (int i = 0; i < 10; ++i) { 5695 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5696 ++a; 5697 } 5698 #pragma omp target simd 5699 for (int i = 0; i < 10; ++i) { 5700 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5701 for (int i = 0; i < 10; ++i) 5702 ; 5703 } 5704 #pragma omp target simd 5705 for (int i = 0; i < 10; ++i) { 5706 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5707 ++a; 5708 } 5709 #pragma omp target simd 5710 for (int i = 0; i < 10; ++i) { 5711 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5712 ++a; 5713 } 5714 #pragma omp target simd 5715 for (int i = 0; i < 10; ++i) { 5716 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5717 ++a; 5718 } 5719 #pragma omp target simd 5720 for (int i = 0; i < 10; ++i) { 5721 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5722 ++a; 5723 } 5724 #pragma omp target simd 5725 for (int i = 0; i < 10; ++i) { 5726 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5727 for (int i = 0; i < 10; ++i) 5728 ++a; 5729 } 5730 #pragma omp target simd 5731 for (int i = 0; i < 10; ++i) { 5732 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5733 for (int i = 0; i < 10; ++i) 5734 ++a; 5735 } 5736 #pragma omp target simd 5737 for (int i = 0; i < 10; ++i) { 5738 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5739 for (int i = 0; i < 10; ++i) 5740 ++a; 5741 } 5742 #pragma omp target simd 5743 for (int i = 0; i < 10; ++i) { 5744 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5745 for (int i = 0; i < 10; ++i) 5746 ++a; 5747 } 5748 #pragma omp target simd 5749 for (int i = 0; i < 10; ++i) { 5750 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5751 for (int i = 0; i < 10; ++i) 5752 ++a; 5753 } 5754 5755 // TEAMS DISTRIBUTE DIRECTIVE 5756 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5757 for (int i = 0; i < 10; ++i) 5758 ; 5759 #pragma omp target 5760 #pragma omp teams distribute 5761 for (int i = 0; i < 10; ++i) { 5762 #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?}} 5763 for (int i = 0; i < 10; ++i) 5764 ; 5765 } 5766 #pragma omp target 5767 #pragma omp teams distribute 5768 for (int i = 0; i < 10; ++i) { 5769 #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?}} 5770 for (int i = 0; i < 10; ++i) 5771 ; 5772 } 5773 #pragma omp target 5774 #pragma omp teams distribute 5775 for (int i = 0; i < 10; ++i) { 5776 #pragma omp for // OK 5777 for (int i = 0; i < 10; ++i) 5778 ; 5779 } 5780 #pragma omp target 5781 #pragma omp teams distribute 5782 for (int i = 0; i < 10; ++i) { 5783 #pragma omp simd // OK 5784 for (int i = 0; i < 10; ++i) 5785 ; 5786 } 5787 #pragma omp target 5788 #pragma omp teams distribute 5789 for (int i = 0; i < 10; ++i) { 5790 #pragma omp for simd // OK 5791 for (int i = 0; i < 10; ++i) 5792 ; 5793 } 5794 #pragma omp target 5795 #pragma omp teams distribute 5796 for (int i = 0; i < 10; ++i) { 5797 #pragma omp parallel // OK 5798 for (int i = 0; i < 10; ++i) 5799 ; 5800 } 5801 #pragma omp target 5802 #pragma omp teams distribute 5803 for (int i = 0; i < 10; ++i) { 5804 #pragma omp sections // OK 5805 { 5806 bar(); 5807 } 5808 } 5809 #pragma omp target 5810 #pragma omp teams distribute 5811 for (int i = 0; i < 10; ++i) { 5812 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 5813 { 5814 bar(); 5815 } 5816 } 5817 #pragma omp target 5818 #pragma omp teams distribute 5819 for (int i = 0; i < 10; ++i) { 5820 #pragma omp single // OK 5821 { 5822 bar(); 5823 } 5824 } 5825 #pragma omp target 5826 #pragma omp teams distribute 5827 for (int i = 0; i < 10; ++i) { 5828 #pragma omp master // OK 5829 { 5830 bar(); 5831 } 5832 } 5833 #pragma omp target 5834 #pragma omp teams distribute 5835 for (int i = 0; i < 10; ++i) { 5836 #pragma omp critical // OK 5837 { 5838 bar(); 5839 } 5840 } 5841 #pragma omp target 5842 #pragma omp teams distribute 5843 for (int i = 0; i < 10; ++i) { 5844 #pragma omp parallel // OK 5845 { 5846 #pragma omp single 5847 { 5848 bar(); 5849 } 5850 } 5851 } 5852 #pragma omp target 5853 #pragma omp teams distribute 5854 for (int i = 0; i < 10; ++i) { 5855 #pragma omp parallel for // OK 5856 for (int i = 0; i < 10; ++i) 5857 ; 5858 } 5859 #pragma omp target 5860 #pragma omp teams distribute 5861 for (int i = 0; i < 10; ++i) { 5862 #pragma omp parallel for simd // OK 5863 for (int i = 0; i < 10; ++i) 5864 ; 5865 } 5866 #pragma omp target 5867 #pragma omp teams distribute 5868 for (int i = 0; i < 10; ++i) { 5869 #pragma omp parallel sections // OK 5870 { 5871 bar(); 5872 } 5873 } 5874 #pragma omp target 5875 #pragma omp teams distribute 5876 for (int i = 0; i < 10; ++i) { 5877 #pragma omp task // OK 5878 { 5879 bar(); 5880 } 5881 } 5882 #pragma omp target 5883 #pragma omp teams distribute 5884 for (int i = 0; i < 10; ++i) { 5885 #pragma omp taskyield // OK 5886 bar(); 5887 } 5888 #pragma omp target 5889 #pragma omp teams distribute 5890 for (int i = 0; i < 10; ++i) { 5891 #pragma omp barrier // OK 5892 bar(); 5893 } 5894 #pragma omp target 5895 #pragma omp teams distribute 5896 for (int i = 0; i < 10; ++i) { 5897 #pragma omp taskwait // OK 5898 bar(); 5899 } 5900 #pragma omp target 5901 #pragma omp teams distribute 5902 for (int i = 0; i < 10; ++i) { 5903 #pragma omp flush // OK 5904 bar(); 5905 } 5906 #pragma omp target 5907 #pragma omp teams distribute 5908 for (int i = 0; i < 10; ++i) { 5909 #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?}} 5910 bar(); 5911 } 5912 #pragma omp target 5913 #pragma omp teams distribute 5914 for (int i = 0; i < 10; ++i) { 5915 #pragma omp atomic // OK 5916 ++a; 5917 } 5918 #pragma omp target 5919 #pragma omp teams distribute 5920 for (int i = 0; i < 10; ++i) { 5921 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5922 ++a; 5923 } 5924 #pragma omp target 5925 #pragma omp teams distribute 5926 for (int i = 0; i < 10; ++i) { 5927 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5928 ++a; 5929 } 5930 #pragma omp target 5931 #pragma omp teams distribute 5932 for (int i = 0; i < 10; ++i) { 5933 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5934 for (int i = 0; i < 10; ++i) 5935 ; 5936 } 5937 #pragma omp target 5938 #pragma omp teams distribute 5939 for (int i = 0; i < 10; ++i) { 5940 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5941 ++a; 5942 } 5943 #pragma omp target 5944 #pragma omp teams distribute 5945 for (int i = 0; i < 10; ++i) { 5946 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5947 ++a; 5948 } 5949 #pragma omp target 5950 #pragma omp teams distribute 5951 for (int i = 0; i < 10; ++i) { 5952 #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?}} 5953 ++a; 5954 } 5955 #pragma omp target 5956 #pragma omp teams distribute 5957 for (int i = 0; i < 10; ++i) { 5958 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5959 ++a; 5960 } 5961 #pragma omp target 5962 #pragma omp teams distribute 5963 for (int i = 0; i < 10; ++i) { 5964 #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?}} 5965 for (int i = 0; i < 10; ++i) 5966 ++a; 5967 } 5968 #pragma omp target 5969 #pragma omp teams distribute 5970 for (int i = 0; i < 10; ++i) { 5971 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5972 for (int i = 0; i < 10; ++i) 5973 ++a; 5974 } 5975 #pragma omp target 5976 #pragma omp teams distribute 5977 for (int i = 0; i < 10; ++i) { 5978 #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?}} 5979 for (int i = 0; i < 10; ++i) 5980 ++a; 5981 } 5982 #pragma omp target 5983 #pragma omp teams distribute 5984 for (int i = 0; i < 10; ++i) { 5985 #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?}} 5986 for (int i = 0; i < 10; ++i) 5987 ++a; 5988 } 5989 #pragma omp target 5990 #pragma omp teams distribute 5991 for (int i = 0; i < 10; ++i) { 5992 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 5993 for (int i = 0; i < 10; ++i) 5994 ++a; 5995 } 5996 5997 // TEAMS DISTRIBUTE DIRECTIVE 5998 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5999 for (int i = 0; i < 10; ++i) 6000 ; 6001 #pragma omp target 6002 #pragma omp teams distribute 6003 for (int i = 0; i < 10; ++i) { 6004 #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?}} 6005 for (int i = 0; i < 10; ++i) 6006 ; 6007 } 6008 #pragma omp target 6009 #pragma omp teams distribute 6010 for (int i = 0; i < 10; ++i) { 6011 #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?}} 6012 for (int i = 0; i < 10; ++i) 6013 ; 6014 } 6015 #pragma omp target 6016 #pragma omp teams distribute 6017 for (int i = 0; i < 10; ++i) { 6018 #pragma omp for // OK 6019 for (int i = 0; i < 10; ++i) 6020 ; 6021 } 6022 #pragma omp target 6023 #pragma omp teams distribute 6024 for (int i = 0; i < 10; ++i) { 6025 #pragma omp simd // OK 6026 for (int i = 0; i < 10; ++i) 6027 ; 6028 } 6029 #pragma omp target 6030 #pragma omp teams distribute 6031 for (int i = 0; i < 10; ++i) { 6032 #pragma omp for simd // OK 6033 for (int i = 0; i < 10; ++i) 6034 ; 6035 } 6036 #pragma omp target 6037 #pragma omp teams distribute 6038 for (int i = 0; i < 10; ++i) { 6039 #pragma omp parallel // OK 6040 for (int i = 0; i < 10; ++i) 6041 ; 6042 } 6043 #pragma omp target 6044 #pragma omp teams distribute 6045 for (int i = 0; i < 10; ++i) { 6046 #pragma omp sections // OK 6047 { 6048 bar(); 6049 } 6050 } 6051 #pragma omp target 6052 #pragma omp teams distribute 6053 for (int i = 0; i < 10; ++i) { 6054 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 6055 { 6056 bar(); 6057 } 6058 } 6059 #pragma omp target 6060 #pragma omp teams distribute 6061 for (int i = 0; i < 10; ++i) { 6062 #pragma omp single // OK 6063 { 6064 bar(); 6065 } 6066 } 6067 #pragma omp target 6068 #pragma omp teams distribute 6069 for (int i = 0; i < 10; ++i) { 6070 #pragma omp master // OK 6071 { 6072 bar(); 6073 } 6074 } 6075 #pragma omp target 6076 #pragma omp teams distribute 6077 for (int i = 0; i < 10; ++i) { 6078 #pragma omp critical // OK 6079 { 6080 bar(); 6081 } 6082 } 6083 #pragma omp target 6084 #pragma omp teams distribute 6085 for (int i = 0; i < 10; ++i) { 6086 #pragma omp parallel // OK 6087 { 6088 #pragma omp single 6089 { 6090 bar(); 6091 } 6092 } 6093 } 6094 #pragma omp target 6095 #pragma omp teams distribute 6096 for (int i = 0; i < 10; ++i) { 6097 #pragma omp parallel for // OK 6098 for (int i = 0; i < 10; ++i) 6099 ; 6100 } 6101 #pragma omp target 6102 #pragma omp teams distribute 6103 for (int i = 0; i < 10; ++i) { 6104 #pragma omp parallel for simd // OK 6105 for (int i = 0; i < 10; ++i) 6106 ; 6107 } 6108 #pragma omp target 6109 #pragma omp teams distribute 6110 for (int i = 0; i < 10; ++i) { 6111 #pragma omp parallel sections // OK 6112 { 6113 bar(); 6114 } 6115 } 6116 #pragma omp target 6117 #pragma omp teams distribute 6118 for (int i = 0; i < 10; ++i) { 6119 #pragma omp task // OK 6120 { 6121 bar(); 6122 } 6123 } 6124 #pragma omp target 6125 #pragma omp teams distribute 6126 for (int i = 0; i < 10; ++i) { 6127 #pragma omp taskyield // OK 6128 bar(); 6129 } 6130 #pragma omp target 6131 #pragma omp teams distribute 6132 for (int i = 0; i < 10; ++i) { 6133 #pragma omp barrier // OK 6134 bar(); 6135 } 6136 #pragma omp target 6137 #pragma omp teams distribute 6138 for (int i = 0; i < 10; ++i) { 6139 #pragma omp taskwait // OK 6140 bar(); 6141 } 6142 #pragma omp target 6143 #pragma omp teams distribute 6144 for (int i = 0; i < 10; ++i) { 6145 #pragma omp flush // OK 6146 bar(); 6147 } 6148 #pragma omp target 6149 #pragma omp teams distribute 6150 for (int i = 0; i < 10; ++i) { 6151 #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?}} 6152 bar(); 6153 } 6154 #pragma omp target 6155 #pragma omp teams distribute 6156 for (int i = 0; i < 10; ++i) { 6157 #pragma omp atomic // OK 6158 ++a; 6159 } 6160 #pragma omp target 6161 #pragma omp teams distribute 6162 for (int i = 0; i < 10; ++i) { 6163 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6164 ++a; 6165 } 6166 #pragma omp target 6167 #pragma omp teams distribute 6168 for (int i = 0; i < 10; ++i) { 6169 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6170 ++a; 6171 } 6172 #pragma omp target 6173 #pragma omp teams distribute 6174 for (int i = 0; i < 10; ++i) { 6175 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6176 for (int i = 0; i < 10; ++i) 6177 ; 6178 } 6179 #pragma omp target 6180 #pragma omp teams distribute 6181 for (int i = 0; i < 10; ++i) { 6182 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6183 ++a; 6184 } 6185 #pragma omp target 6186 #pragma omp teams distribute 6187 for (int i = 0; i < 10; ++i) { 6188 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6189 ++a; 6190 } 6191 #pragma omp target 6192 #pragma omp teams distribute 6193 for (int i = 0; i < 10; ++i) { 6194 #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?}} 6195 ++a; 6196 } 6197 #pragma omp target 6198 #pragma omp teams distribute 6199 for (int i = 0; i < 10; ++i) { 6200 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6201 ++a; 6202 } 6203 #pragma omp target 6204 #pragma omp teams distribute 6205 for (int i = 0; i < 10; ++i) { 6206 #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?}} 6207 for (int i = 0; i < 10; ++i) 6208 ++a; 6209 } 6210 #pragma omp target 6211 #pragma omp teams distribute 6212 for (int i = 0; i < 10; ++i) { 6213 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6214 for (int i = 0; i < 10; ++i) 6215 ++a; 6216 } 6217 #pragma omp target 6218 #pragma omp teams distribute 6219 for (int i = 0; i < 10; ++i) { 6220 #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?}} 6221 for (int i = 0; i < 10; ++i) 6222 ++a; 6223 } 6224 #pragma omp target 6225 #pragma omp teams distribute 6226 for (int i = 0; i < 10; ++i) { 6227 #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?}} 6228 for (int i = 0; i < 10; ++i) 6229 ++a; 6230 } 6231 #pragma omp target 6232 #pragma omp teams distribute 6233 for (int i = 0; i < 10; ++i) { 6234 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 6235 for (int i = 0; i < 10; ++i) 6236 ++a; 6237 } 6238 #pragma omp target 6239 #pragma omp teams distribute 6240 for (int i = 0; i < 10; ++i) { 6241 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 6242 for (int i = 0; i < 10; ++i) 6243 ++a; 6244 } 6245 #pragma omp target 6246 #pragma omp teams distribute 6247 for (int i = 0; i < 10; ++i) { 6248 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 6249 ++a; 6250 } 6251 6252 // TEAMS DISTRIBUTE SIMD DIRECTIVE 6253 #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?}} 6254 for (int i = 0; i < 10; ++i) 6255 ; 6256 #pragma omp target 6257 #pragma omp teams distribute simd 6258 for (int i = 0; i < 10; ++i) { 6259 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6260 for (int i = 0; i < 10; ++i) 6261 ; 6262 } 6263 #pragma omp target 6264 #pragma omp teams distribute simd 6265 for (int i = 0; i < 10; ++i) { 6266 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6267 for (int i = 0; i < 10; ++i) 6268 ; 6269 } 6270 #pragma omp target 6271 #pragma omp teams distribute simd 6272 for (int i = 0; i < 10; ++i) { 6273 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6274 for (int i = 0; i < 10; ++i) 6275 ; 6276 } 6277 #pragma omp target 6278 #pragma omp teams distribute simd 6279 for (int i = 0; i < 10; ++i) { 6280 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6281 for (int i = 0; i < 10; ++i) 6282 ; 6283 } 6284 #pragma omp target 6285 #pragma omp teams distribute simd 6286 for (int i = 0; i < 10; ++i) { 6287 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6288 for (int i = 0; i < 10; ++i) 6289 ; 6290 } 6291 #pragma omp target 6292 #pragma omp teams distribute simd 6293 for (int i = 0; i < 10; ++i) { 6294 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6295 for (int i = 0; i < 10; ++i) 6296 ; 6297 } 6298 #pragma omp target 6299 #pragma omp teams distribute simd 6300 for (int i = 0; i < 10; ++i) { 6301 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6302 { 6303 bar(); 6304 } 6305 } 6306 #pragma omp target 6307 #pragma omp teams distribute simd 6308 for (int i = 0; i < 10; ++i) { 6309 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6310 { 6311 bar(); 6312 } 6313 } 6314 #pragma omp target 6315 #pragma omp teams distribute simd 6316 for (int i = 0; i < 10; ++i) { 6317 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6318 { 6319 bar(); 6320 } 6321 } 6322 #pragma omp target 6323 #pragma omp teams distribute simd 6324 for (int i = 0; i < 10; ++i) { 6325 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6326 { 6327 bar(); 6328 } 6329 } 6330 #pragma omp target 6331 #pragma omp teams distribute simd 6332 for (int i = 0; i < 10; ++i) { 6333 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6334 { 6335 bar(); 6336 } 6337 } 6338 #pragma omp target 6339 #pragma omp teams distribute simd 6340 for (int i = 0; i < 10; ++i) { 6341 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6342 { 6343 #pragma omp single 6344 { 6345 bar(); 6346 } 6347 } 6348 } 6349 #pragma omp target 6350 #pragma omp teams distribute simd 6351 for (int i = 0; i < 10; ++i) { 6352 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6353 for (int i = 0; i < 10; ++i) 6354 ; 6355 } 6356 #pragma omp target 6357 #pragma omp teams distribute simd 6358 for (int i = 0; i < 10; ++i) { 6359 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6360 for (int i = 0; i < 10; ++i) 6361 ; 6362 } 6363 #pragma omp target 6364 #pragma omp teams distribute simd 6365 for (int i = 0; i < 10; ++i) { 6366 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6367 { 6368 bar(); 6369 } 6370 } 6371 #pragma omp target 6372 #pragma omp teams distribute simd 6373 for (int i = 0; i < 10; ++i) { 6374 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6375 { 6376 bar(); 6377 } 6378 } 6379 #pragma omp target 6380 #pragma omp teams distribute simd 6381 for (int i = 0; i < 10; ++i) { 6382 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6383 bar(); 6384 } 6385 #pragma omp target 6386 #pragma omp teams distribute simd 6387 for (int i = 0; i < 10; ++i) { 6388 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6389 bar(); 6390 } 6391 #pragma omp target 6392 #pragma omp teams distribute simd 6393 for (int i = 0; i < 10; ++i) { 6394 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6395 bar(); 6396 } 6397 #pragma omp target 6398 #pragma omp teams distribute simd 6399 for (int i = 0; i < 10; ++i) { 6400 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6401 bar(); 6402 } 6403 #pragma omp target 6404 #pragma omp teams distribute simd 6405 for (int i = 0; i < 10; ++i) { 6406 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6407 bar(); 6408 } 6409 #pragma omp target 6410 #pragma omp teams distribute simd 6411 for (int i = 0; i < 10; ++i) { 6412 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6413 ++a; 6414 } 6415 #pragma omp target 6416 #pragma omp teams distribute simd 6417 for (int i = 0; i < 10; ++i) { 6418 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6419 ++a; 6420 } 6421 #pragma omp target 6422 #pragma omp teams distribute simd 6423 for (int i = 0; i < 10; ++i) { 6424 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6425 ++a; 6426 } 6427 #pragma omp target 6428 #pragma omp teams distribute simd 6429 for (int i = 0; i < 10; ++i) { 6430 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6431 for (int i = 0; i < 10; ++i) 6432 ; 6433 } 6434 #pragma omp target 6435 #pragma omp teams distribute simd 6436 for (int i = 0; i < 10; ++i) { 6437 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6438 ++a; 6439 } 6440 #pragma omp target 6441 #pragma omp teams distribute simd 6442 for (int i = 0; i < 10; ++i) { 6443 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6444 ++a; 6445 } 6446 #pragma omp target 6447 #pragma omp teams distribute simd 6448 for (int i = 0; i < 10; ++i) { 6449 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6450 ++a; 6451 } 6452 #pragma omp target 6453 #pragma omp teams distribute simd 6454 for (int i = 0; i < 10; ++i) { 6455 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6456 ++a; 6457 } 6458 #pragma omp target 6459 #pragma omp teams distribute simd 6460 for (int i = 0; i < 10; ++i) { 6461 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6462 for (int i = 0; i < 10; ++i) 6463 ++a; 6464 } 6465 #pragma omp target 6466 #pragma omp teams distribute simd 6467 for (int i = 0; i < 10; ++i) { 6468 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6469 for (int i = 0; i < 10; ++i) 6470 ++a; 6471 } 6472 #pragma omp target 6473 #pragma omp teams distribute simd 6474 for (int i = 0; i < 10; ++i) { 6475 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6476 for (int i = 0; i < 10; ++i) 6477 ++a; 6478 } 6479 #pragma omp target 6480 #pragma omp teams distribute simd 6481 for (int i = 0; i < 10; ++i) { 6482 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6483 for (int i = 0; i < 10; ++i) 6484 ++a; 6485 } 6486 #pragma omp target 6487 #pragma omp teams distribute simd 6488 for (int i = 0; i < 10; ++i) { 6489 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6490 for (int i = 0; i < 10; ++i) 6491 ++a; 6492 } 6493 #pragma omp target 6494 #pragma omp teams distribute simd 6495 for (int i = 0; i < 10; ++i) { 6496 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6497 for (int i = 0; i < 10; ++i) 6498 ++a; 6499 } 6500 #pragma omp target 6501 #pragma omp teams distribute simd 6502 for (int i = 0; i < 10; ++i) { 6503 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6504 ++a; 6505 } 6506 6507 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6508 #pragma omp teams distribute parallel for simd // expected-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6509 for (int i = 0; i < 10; ++i) 6510 ; 6511 #pragma omp target 6512 #pragma omp teams distribute parallel for simd 6513 for (int i = 0; i < 10; ++i) { 6514 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6515 for (int i = 0; i < 10; ++i) 6516 ; 6517 } 6518 #pragma omp target 6519 #pragma omp teams distribute parallel for simd 6520 for (int i = 0; i < 10; ++i) { 6521 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6522 for (int i = 0; i < 10; ++i) 6523 ; 6524 } 6525 #pragma omp target 6526 #pragma omp teams distribute parallel for simd 6527 for (int i = 0; i < 10; ++i) { 6528 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6529 for (int i = 0; i < 10; ++i) 6530 ; 6531 } 6532 #pragma omp target 6533 #pragma omp teams distribute parallel for simd 6534 for (int i = 0; i < 10; ++i) { 6535 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6536 for (int i = 0; i < 10; ++i) 6537 ; 6538 } 6539 #pragma omp target 6540 #pragma omp teams distribute parallel for simd 6541 for (int i = 0; i < 10; ++i) { 6542 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6543 for (int i = 0; i < 10; ++i) 6544 ; 6545 } 6546 #pragma omp target 6547 #pragma omp teams distribute parallel for simd 6548 for (int i = 0; i < 10; ++i) { 6549 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6550 for (int i = 0; i < 10; ++i) 6551 ; 6552 } 6553 #pragma omp target 6554 #pragma omp teams distribute parallel for simd 6555 for (int i = 0; i < 10; ++i) { 6556 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6557 { 6558 bar(); 6559 } 6560 } 6561 #pragma omp target 6562 #pragma omp teams distribute parallel for simd 6563 for (int i = 0; i < 10; ++i) { 6564 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6565 { 6566 bar(); 6567 } 6568 } 6569 #pragma omp target 6570 #pragma omp teams distribute parallel for simd 6571 for (int i = 0; i < 10; ++i) { 6572 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6573 { 6574 bar(); 6575 } 6576 } 6577 #pragma omp target 6578 #pragma omp teams distribute parallel for simd 6579 for (int i = 0; i < 10; ++i) { 6580 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6581 { 6582 bar(); 6583 } 6584 } 6585 #pragma omp target 6586 #pragma omp teams distribute parallel for simd 6587 for (int i = 0; i < 10; ++i) { 6588 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6589 { 6590 bar(); 6591 } 6592 } 6593 #pragma omp target 6594 #pragma omp teams distribute parallel for simd 6595 for (int i = 0; i < 10; ++i) { 6596 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6597 { 6598 #pragma omp single 6599 { 6600 bar(); 6601 } 6602 } 6603 } 6604 #pragma omp target 6605 #pragma omp teams distribute parallel for simd 6606 for (int i = 0; i < 10; ++i) { 6607 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6608 for (int i = 0; i < 10; ++i) 6609 ; 6610 } 6611 #pragma omp target 6612 #pragma omp teams distribute parallel for simd 6613 for (int i = 0; i < 10; ++i) { 6614 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6615 for (int i = 0; i < 10; ++i) 6616 ; 6617 } 6618 #pragma omp target 6619 #pragma omp teams distribute parallel for simd 6620 for (int i = 0; i < 10; ++i) { 6621 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6622 { 6623 bar(); 6624 } 6625 } 6626 #pragma omp target 6627 #pragma omp teams distribute parallel for simd 6628 for (int i = 0; i < 10; ++i) { 6629 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6630 { 6631 bar(); 6632 } 6633 } 6634 #pragma omp target 6635 #pragma omp teams distribute parallel for simd 6636 for (int i = 0; i < 10; ++i) { 6637 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6638 bar(); 6639 } 6640 #pragma omp target 6641 #pragma omp teams distribute parallel for simd 6642 for (int i = 0; i < 10; ++i) { 6643 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6644 bar(); 6645 } 6646 #pragma omp target 6647 #pragma omp teams distribute parallel for simd 6648 for (int i = 0; i < 10; ++i) { 6649 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6650 bar(); 6651 } 6652 #pragma omp target 6653 #pragma omp teams distribute parallel for simd 6654 for (int i = 0; i < 10; ++i) { 6655 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6656 bar(); 6657 } 6658 #pragma omp target 6659 #pragma omp teams distribute parallel for simd 6660 for (int i = 0; i < 10; ++i) { 6661 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6662 bar(); 6663 } 6664 #pragma omp target 6665 #pragma omp teams distribute parallel for simd 6666 for (int i = 0; i < 10; ++i) { 6667 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6668 ++a; 6669 } 6670 #pragma omp target 6671 #pragma omp teams distribute parallel for simd 6672 for (int i = 0; i < 10; ++i) { 6673 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6674 ++a; 6675 } 6676 #pragma omp target 6677 #pragma omp teams distribute parallel for simd 6678 for (int i = 0; i < 10; ++i) { 6679 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6680 ++a; 6681 } 6682 #pragma omp target 6683 #pragma omp teams distribute parallel for simd 6684 for (int i = 0; i < 10; ++i) { 6685 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6686 for (int i = 0; i < 10; ++i) 6687 ; 6688 } 6689 #pragma omp target 6690 #pragma omp teams distribute parallel for simd 6691 for (int i = 0; i < 10; ++i) { 6692 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6693 ++a; 6694 } 6695 #pragma omp target 6696 #pragma omp teams distribute parallel for simd 6697 for (int i = 0; i < 10; ++i) { 6698 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6699 ++a; 6700 } 6701 #pragma omp target 6702 #pragma omp teams distribute parallel for simd 6703 for (int i = 0; i < 10; ++i) { 6704 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6705 ++a; 6706 } 6707 #pragma omp target 6708 #pragma omp teams distribute parallel for simd 6709 for (int i = 0; i < 10; ++i) { 6710 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6711 ++a; 6712 } 6713 #pragma omp target 6714 #pragma omp teams distribute parallel for simd 6715 for (int i = 0; i < 10; ++i) { 6716 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6717 for (int i = 0; i < 10; ++i) 6718 ++a; 6719 } 6720 #pragma omp target 6721 #pragma omp teams distribute parallel for simd 6722 for (int i = 0; i < 10; ++i) { 6723 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6724 for (int i = 0; i < 10; ++i) 6725 ++a; 6726 } 6727 #pragma omp target 6728 #pragma omp teams distribute parallel for simd 6729 for (int i = 0; i < 10; ++i) { 6730 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6731 for (int i = 0; i < 10; ++i) 6732 ++a; 6733 } 6734 #pragma omp target 6735 #pragma omp teams distribute parallel for simd 6736 for (int i = 0; i < 10; ++i) { 6737 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6738 for (int i = 0; i < 10; ++i) 6739 ++a; 6740 } 6741 #pragma omp target 6742 #pragma omp teams distribute parallel for simd 6743 for (int i = 0; i < 10; ++i) { 6744 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6745 for (int i = 0; i < 10; ++i) 6746 ++a; 6747 } 6748 #pragma omp target 6749 #pragma omp teams distribute parallel for simd 6750 for (int i = 0; i < 10; ++i) { 6751 #pragma omp teams distribute parallel for // 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 target 6756 #pragma omp teams distribute parallel for simd 6757 for (int i = 0; i < 10; ++i) { 6758 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6759 ++a; 6760 } 6761 6762 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 6763 #pragma omp teams distribute parallel for // expected-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 6764 for (int i = 0; i < 10; ++i) 6765 ; 6766 #pragma omp target 6767 #pragma omp teams distribute parallel for 6768 for (int i = 0; i < 10; ++i) { 6769 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 6770 for (int i = 0; i < 10; ++i) 6771 ; 6772 } 6773 #pragma omp target 6774 #pragma omp teams distribute parallel for 6775 for (int i = 0; i < 10; ++i) { 6776 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 6777 for (int i = 0; i < 10; ++i) 6778 ; 6779 } 6780 #pragma omp target 6781 #pragma omp teams distribute parallel for 6782 for (int i = 0; i < 10; ++i) { 6783 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 6784 for (int i = 0; i < 10; ++i) 6785 ; 6786 } 6787 #pragma omp target 6788 #pragma omp teams distribute parallel for 6789 for (int i = 0; i < 10; ++i) { 6790 #pragma omp simd // OK 6791 for (int i = 0; i < 10; ++i) 6792 ; 6793 } 6794 #pragma omp target 6795 #pragma omp teams distribute parallel for 6796 for (int i = 0; i < 10; ++i) { 6797 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 6798 for (int i = 0; i < 10; ++i) 6799 ; 6800 } 6801 #pragma omp target 6802 #pragma omp teams distribute parallel for 6803 for (int i = 0; i < 10; ++i) { 6804 #pragma omp parallel // OK 6805 for (int i = 0; i < 10; ++i) 6806 ; 6807 } 6808 #pragma omp target 6809 #pragma omp teams distribute parallel for 6810 for (int i = 0; i < 10; ++i) { 6811 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 6812 { 6813 bar(); 6814 } 6815 } 6816 #pragma omp target 6817 #pragma omp teams distribute parallel for 6818 for (int i = 0; i < 10; ++i) { 6819 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 6820 { 6821 bar(); 6822 } 6823 } 6824 #pragma omp target 6825 #pragma omp teams distribute parallel for 6826 for (int i = 0; i < 10; ++i) { 6827 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 6828 { 6829 bar(); 6830 } 6831 } 6832 #pragma omp target 6833 #pragma omp teams distribute parallel for 6834 for (int i = 0; i < 10; ++i) { 6835 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 6836 { 6837 bar(); 6838 } 6839 } 6840 #pragma omp target 6841 #pragma omp teams distribute parallel for 6842 for (int i = 0; i < 10; ++i) { 6843 #pragma omp critical // OK 6844 { 6845 bar(); 6846 } 6847 } 6848 #pragma omp target 6849 #pragma omp teams distribute parallel for 6850 for (int i = 0; i < 10; ++i) { 6851 #pragma omp parallel // OK 6852 { 6853 #pragma omp single 6854 { 6855 bar(); 6856 } 6857 } 6858 } 6859 #pragma omp target 6860 #pragma omp teams distribute parallel for 6861 for (int i = 0; i < 10; ++i) { 6862 #pragma omp parallel for // OK 6863 for (int i = 0; i < 10; ++i) 6864 ; 6865 } 6866 #pragma omp target 6867 #pragma omp teams distribute parallel for 6868 for (int i = 0; i < 10; ++i) { 6869 #pragma omp parallel for simd // OK 6870 for (int i = 0; i < 10; ++i) 6871 ; 6872 } 6873 #pragma omp target 6874 #pragma omp teams distribute parallel for 6875 for (int i = 0; i < 10; ++i) { 6876 #pragma omp parallel sections // OK 6877 { 6878 bar(); 6879 } 6880 } 6881 #pragma omp target 6882 #pragma omp teams distribute parallel for 6883 for (int i = 0; i < 10; ++i) { 6884 #pragma omp task // OK 6885 { 6886 bar(); 6887 } 6888 } 6889 #pragma omp target 6890 #pragma omp teams distribute parallel for 6891 for (int i = 0; i < 10; ++i) { 6892 #pragma omp taskyield // OK 6893 bar(); 6894 } 6895 #pragma omp target 6896 #pragma omp teams distribute parallel for 6897 for (int i = 0; i < 10; ++i) { 6898 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 6899 bar(); 6900 } 6901 #pragma omp target 6902 #pragma omp teams distribute parallel for 6903 for (int i = 0; i < 10; ++i) { 6904 #pragma omp taskwait // OK 6905 bar(); 6906 } 6907 #pragma omp target 6908 #pragma omp teams distribute parallel for 6909 for (int i = 0; i < 10; ++i) { 6910 #pragma omp flush // OK 6911 bar(); 6912 } 6913 #pragma omp target 6914 #pragma omp teams distribute parallel for 6915 for (int i = 0; i < 10; ++i) { 6916 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 6917 bar(); 6918 } 6919 #pragma omp target 6920 #pragma omp teams distribute parallel for 6921 for (int i = 0; i < 10; ++i) { 6922 #pragma omp atomic // OK 6923 ++a; 6924 } 6925 #pragma omp target 6926 #pragma omp teams distribute parallel for 6927 for (int i = 0; i < 10; ++i) { 6928 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6929 ++a; 6930 } 6931 #pragma omp target 6932 #pragma omp teams distribute parallel for 6933 for (int i = 0; i < 10; ++i) { 6934 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6935 ++a; 6936 } 6937 #pragma omp target 6938 #pragma omp teams distribute parallel for 6939 for (int i = 0; i < 10; ++i) { 6940 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6941 for (int i = 0; i < 10; ++i) 6942 ; 6943 } 6944 #pragma omp target 6945 #pragma omp teams distribute parallel for 6946 for (int i = 0; i < 10; ++i) { 6947 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6948 ++a; 6949 } 6950 #pragma omp target 6951 #pragma omp teams distribute parallel for 6952 for (int i = 0; i < 10; ++i) { 6953 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6954 ++a; 6955 } 6956 #pragma omp target 6957 #pragma omp teams distribute parallel for 6958 for (int i = 0; i < 10; ++i) { 6959 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 6960 ++a; 6961 } 6962 #pragma omp target 6963 #pragma omp teams distribute parallel for 6964 for (int i = 0; i < 10; ++i) { 6965 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6966 ++a; 6967 } 6968 #pragma omp target 6969 #pragma omp teams distribute parallel for 6970 for (int i = 0; i < 10; ++i) { 6971 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 6972 for (int i = 0; i < 10; ++i) 6973 ++a; 6974 } 6975 #pragma omp target 6976 #pragma omp teams distribute parallel for 6977 for (int i = 0; i < 10; ++i) { 6978 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6979 for (int i = 0; i < 10; ++i) 6980 ++a; 6981 } 6982 #pragma omp target 6983 #pragma omp teams distribute parallel for 6984 for (int i = 0; i < 10; ++i) { 6985 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 6986 for (int i = 0; i < 10; ++i) 6987 ++a; 6988 } 6989 #pragma omp target 6990 #pragma omp teams distribute parallel for 6991 for (int i = 0; i < 10; ++i) { 6992 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 6993 for (int i = 0; i < 10; ++i) 6994 ++a; 6995 } 6996 #pragma omp target 6997 #pragma omp teams distribute parallel for 6998 for (int i = 0; i < 10; ++i) { 6999 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 7000 for (int i = 0; i < 10; ++i) 7001 ++a; 7002 } 7003 #pragma omp target 7004 #pragma omp teams distribute parallel for 7005 for (int i = 0; i < 10; ++i) { 7006 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 7007 for (int i = 0; i < 10; ++i) 7008 ++a; 7009 } 7010 #pragma omp target 7011 #pragma omp teams distribute parallel for 7012 for (int i = 0; i < 10; ++i) { 7013 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 7014 ++a; 7015 } 7016 7017 // TARGET TEAMS DIRECTIVE 7018 #pragma omp target teams 7019 #pragma omp parallel 7020 bar(); 7021 #pragma omp target teams 7022 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 7023 for (int i = 0; i < 10; ++i) 7024 ; 7025 #pragma omp target teams 7026 #pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 7027 for (int i = 0; i < 10; ++i) 7028 ; 7029 #pragma omp target teams 7030 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 7031 for (int i = 0; i < 10; ++i) 7032 ; 7033 #pragma omp target teams 7034 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 7035 { 7036 bar(); 7037 } 7038 #pragma omp target teams 7039 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 7040 { 7041 bar(); 7042 } 7043 #pragma omp target teams 7044 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 7045 bar(); 7046 7047 #pragma omp target teams 7048 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 7049 { 7050 bar(); 7051 } 7052 #pragma omp target teams 7053 #pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 7054 { 7055 bar(); 7056 } 7057 #pragma omp target teams 7058 #pragma omp parallel for 7059 for (int i = 0; i < 10; ++i) 7060 ; 7061 #pragma omp target teams 7062 #pragma omp parallel for simd 7063 for (int i = 0; i < 10; ++i) 7064 ; 7065 #pragma omp target teams 7066 #pragma omp parallel sections 7067 { 7068 bar(); 7069 } 7070 #pragma omp target teams 7071 #pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 7072 { 7073 bar(); 7074 } 7075 #pragma omp target teams 7076 { 7077 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 7078 bar(); 7079 } 7080 #pragma omp target teams 7081 { 7082 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 7083 bar(); 7084 } 7085 #pragma omp target teams 7086 { 7087 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 7088 bar(); 7089 } 7090 #pragma omp target teams 7091 { 7092 #pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 7093 bar(); 7094 } 7095 #pragma omp target teams 7096 { 7097 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 7098 bar(); 7099 } 7100 #pragma omp target teams 7101 { 7102 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 7103 ++a; 7104 } 7105 #pragma omp target teams 7106 { 7107 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 7108 ++a; 7109 } 7110 #pragma omp target teams 7111 { 7112 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 7113 ++a; 7114 } 7115 #pragma omp target teams 7116 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 7117 for (int i = 0; i < 10; ++i) 7118 ; 7119 #pragma omp target teams 7120 { 7121 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 7122 } 7123 #pragma omp target teams 7124 { 7125 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 7126 } 7127 #pragma omp target teams 7128 { 7129 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 7130 ++a; 7131 } 7132 #pragma omp target teams 7133 { 7134 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 7135 for (int i = 0; i < 10; ++i) 7136 ++a; 7137 } 7138 #pragma omp target teams 7139 #pragma omp distribute 7140 for (int i = 0; i < 10; ++i) 7141 ; 7142 #pragma omp target teams 7143 { 7144 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 7145 ++a; 7146 } 7147 #pragma omp target teams 7148 #pragma omp distribute parallel for 7149 for (int i = 0; i < 10; ++i) 7150 ; 7151 #pragma omp target teams 7152 { 7153 #pragma omp distribute parallel for 7154 for (int i = 0; i < 10; ++i) 7155 ; 7156 #pragma omp distribute parallel for 7157 for (int j = 0; j < 10; ++j) 7158 ; 7159 } 7160 #pragma omp target teams 7161 { 7162 #pragma omp distribute parallel for simd 7163 for (int i = 0; i < 10; ++i) 7164 ; 7165 #pragma omp distribute parallel for simd 7166 for (int j = 0; j < 10; ++j) 7167 ; 7168 } 7169 #pragma omp target teams 7170 { 7171 #pragma omp distribute simd 7172 for (int i = 0; i < 10; ++i) 7173 ; 7174 #pragma omp distribute simd 7175 for (int j = 0; j < 10; ++j) 7176 ; 7177 } 7178 #pragma omp target teams 7179 { 7180 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 7181 for (int i = 0; i < 10; ++i) 7182 ; 7183 } 7184 #pragma omp target teams 7185 { 7186 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 7187 for (int i = 0; i < 10; ++i) 7188 ; 7189 } 7190 #pragma omp target teams 7191 { 7192 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 7193 for (int i = 0; i < 10; ++i) 7194 ; 7195 } 7196 #pragma omp target teams 7197 { 7198 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 7199 for (int i = 0; i < 10; ++i) 7200 ; 7201 } 7202 #pragma omp target teams 7203 { 7204 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 7205 for (int i = 0; i < 10; ++i) 7206 ; 7207 } 7208 #pragma omp target teams 7209 { 7210 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 7211 a++; 7212 } 7213 7214 } 7215 7216 void foo() { 7217 int a = 0; 7218 // PARALLEL DIRECTIVE 7219 #pragma omp parallel 7220 #pragma omp for 7221 for (int i = 0; i < 10; ++i) 7222 ; 7223 #pragma omp parallel 7224 #pragma omp simd 7225 for (int i = 0; i < 10; ++i) 7226 ; 7227 #pragma omp parallel 7228 #pragma omp for simd 7229 for (int i = 0; i < 10; ++i) 7230 ; 7231 #pragma omp parallel 7232 #pragma omp sections 7233 { 7234 bar(); 7235 } 7236 #pragma omp parallel 7237 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 7238 { 7239 bar(); 7240 } 7241 #pragma omp parallel 7242 #pragma omp sections 7243 { 7244 bar(); 7245 } 7246 #pragma omp parallel 7247 #pragma omp single 7248 bar(); 7249 #pragma omp parallel 7250 #pragma omp master 7251 bar(); 7252 #pragma omp parallel 7253 #pragma omp critical 7254 bar(); 7255 #pragma omp parallel 7256 #pragma omp parallel for 7257 for (int i = 0; i < 10; ++i) 7258 ; 7259 #pragma omp parallel 7260 #pragma omp parallel for simd 7261 for (int i = 0; i < 10; ++i) 7262 ; 7263 #pragma omp parallel 7264 #pragma omp parallel sections 7265 { 7266 bar(); 7267 } 7268 #pragma omp parallel 7269 #pragma omp task 7270 { 7271 bar(); 7272 } 7273 #pragma omp parallel 7274 { 7275 #pragma omp taskyield 7276 bar(); 7277 } 7278 #pragma omp parallel 7279 { 7280 #pragma omp barrier 7281 bar(); 7282 } 7283 #pragma omp parallel 7284 { 7285 #pragma omp taskwait 7286 bar(); 7287 } 7288 #pragma omp parallel 7289 { 7290 #pragma omp flush 7291 bar(); 7292 } 7293 #pragma omp parallel 7294 { 7295 #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?}} 7296 bar(); 7297 } 7298 #pragma omp parallel 7299 { 7300 #pragma omp atomic 7301 ++a; 7302 } 7303 #pragma omp parallel 7304 { 7305 #pragma omp target 7306 ++a; 7307 } 7308 #pragma omp parallel 7309 { 7310 #pragma omp target parallel 7311 ++a; 7312 } 7313 #pragma omp parallel 7314 #pragma omp target parallel for 7315 for (int i = 0; i < 10; ++i) 7316 ; 7317 #pragma omp parallel 7318 { 7319 #pragma omp target enter data map(to: a) 7320 ++a; 7321 } 7322 #pragma omp parallel 7323 { 7324 #pragma omp target exit data map(from: a) 7325 ++a; 7326 } 7327 #pragma omp parallel 7328 { 7329 #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?}} 7330 ++a; 7331 } 7332 #pragma omp parallel 7333 { 7334 #pragma omp taskloop 7335 for (int i = 0; i < 10; ++i) 7336 ++a; 7337 } 7338 #pragma omp parallel 7339 { 7340 #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?}} 7341 for (int i = 0; i < 10; ++i) 7342 ; 7343 } 7344 #pragma omp parallel 7345 { 7346 #pragma omp target update to(a) 7347 a++; 7348 } 7349 #pragma omp parallel 7350 { 7351 #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?}} 7352 for (int i = 0; i < 10; ++i) 7353 ; 7354 } 7355 #pragma omp parallel 7356 { 7357 #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?}} 7358 for (int i = 0; i < 10; ++i) 7359 ; 7360 } 7361 #pragma omp parallel 7362 { 7363 #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?}} 7364 for (int i = 0; i < 10; ++i) 7365 ; 7366 } 7367 #pragma omp parallel 7368 { 7369 #pragma omp target simd // OK 7370 for (int i = 0; i < 10; ++i) 7371 ; 7372 } 7373 #pragma omp parallel 7374 { 7375 #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?}} 7376 for (int i = 0; i < 10; ++i) 7377 ; 7378 } 7379 #pragma omp parallel 7380 { 7381 #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?}} 7382 for (int i = 0; i < 10; ++i) 7383 ; 7384 } 7385 #pragma omp parallel 7386 { 7387 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 7388 for (int i = 0; i < 10; ++i) 7389 ; 7390 } 7391 #pragma omp parallel 7392 { 7393 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 7394 for (int i = 0; i < 10; ++i) 7395 ; 7396 } 7397 #pragma omp parallel 7398 { 7399 #pragma omp target teams // OK 7400 a++; 7401 } 7402 7403 // SIMD DIRECTIVE 7404 #pragma omp simd 7405 for (int i = 0; i < 10; ++i) { 7406 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7407 for (int i = 0; i < 10; ++i) 7408 ; 7409 } 7410 #pragma omp simd 7411 for (int i = 0; i < 10; ++i) { 7412 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7413 for (int i = 0; i < 10; ++i) 7414 ; 7415 } 7416 #pragma omp simd 7417 for (int i = 0; i < 10; ++i) { 7418 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7419 for (int i = 0; i < 10; ++i) 7420 ; 7421 } 7422 #pragma omp simd 7423 for (int i = 0; i < 10; ++i) { 7424 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7425 for (int i = 0; i < 10; ++i) 7426 ; 7427 } 7428 #pragma omp simd 7429 for (int i = 0; i < 10; ++i) { 7430 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7431 { 7432 bar(); 7433 } 7434 } 7435 #pragma omp simd 7436 for (int i = 0; i < 10; ++i) { 7437 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7438 { 7439 bar(); 7440 } 7441 } 7442 #pragma omp simd 7443 for (int i = 0; i < 10; ++i) { 7444 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7445 bar(); 7446 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7447 bar(); 7448 } 7449 #pragma omp simd 7450 for (int i = 0; i < 10; ++i) { 7451 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7452 bar(); 7453 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7454 bar(); 7455 } 7456 #pragma omp simd 7457 for (int i = 0; i < 10; ++i) { 7458 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7459 for (int i = 0; i < 10; ++i) 7460 ; 7461 } 7462 #pragma omp simd 7463 for (int i = 0; i < 10; ++i) { 7464 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7465 for (int i = 0; i < 10; ++i) 7466 ; 7467 } 7468 #pragma omp simd 7469 for (int i = 0; i < 10; ++i) { 7470 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7471 { 7472 bar(); 7473 } 7474 } 7475 #pragma omp simd 7476 for (int i = 0; i < 10; ++i) { 7477 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7478 { 7479 bar(); 7480 } 7481 } 7482 #pragma omp simd 7483 for (int i = 0; i < 10; ++i) { 7484 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7485 bar(); 7486 } 7487 #pragma omp simd 7488 for (int i = 0; i < 10; ++i) { 7489 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7490 bar(); 7491 } 7492 #pragma omp simd 7493 for (int i = 0; i < 10; ++i) { 7494 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7495 bar(); 7496 } 7497 #pragma omp simd 7498 for (int i = 0; i < 10; ++i) { 7499 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7500 bar(); 7501 } 7502 #pragma omp simd 7503 for (int i = 0; i < 10; ++i) { 7504 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7505 bar(); 7506 } 7507 #pragma omp simd 7508 for (int i = 0; i < 10; ++i) { 7509 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7510 ++a; 7511 } 7512 #pragma omp simd 7513 for (int i = 0; i < 10; ++i) { 7514 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7515 ++a; 7516 } 7517 #pragma omp simd 7518 for (int i = 0; i < 10; ++i) { 7519 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7520 ++a; 7521 } 7522 #pragma omp simd 7523 for (int i = 0; i < 10; ++i) { 7524 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7525 for (int i = 0; i < 10; ++i) 7526 ; 7527 } 7528 #pragma omp simd 7529 for (int i = 0; i < 10; ++i) { 7530 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7531 ++a; 7532 } 7533 #pragma omp simd 7534 for (int i = 0; i < 10; ++i) { 7535 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7536 ++a; 7537 } 7538 #pragma omp simd 7539 for (int i = 0; i < 10; ++i) { 7540 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7541 ++a; 7542 } 7543 #pragma omp simd 7544 for (int i = 0; i < 10; ++i) { 7545 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7546 for (int i = 0; i < 10; ++i) 7547 ++a; 7548 } 7549 #pragma omp simd 7550 for (int i = 0; i < 10; ++i) { 7551 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7552 for (int j = 0; j < 10; ++j) 7553 ; 7554 } 7555 #pragma omp simd 7556 for (int i = 0; i < 10; ++i) { 7557 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7558 a++; 7559 } 7560 #pragma omp simd 7561 for (int i = 0; i < 10; ++i) { 7562 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7563 for (int j = 0; j < 10; ++j) 7564 ; 7565 } 7566 #pragma omp simd 7567 for (int i = 0; i < 10; ++i) { 7568 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7569 for (int j = 0; j < 10; ++j) 7570 ; 7571 } 7572 #pragma omp simd 7573 for (int i = 0; i < 10; ++i) { 7574 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7575 for (int j = 0; j < 10; ++j) 7576 ; 7577 } 7578 #pragma omp simd 7579 for (int i = 0; i < 10; ++i) { 7580 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7581 for (int j = 0; j < 10; ++j) 7582 ; 7583 } 7584 #pragma omp simd 7585 for (int i = 0; i < 10; ++i) { 7586 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7587 for (int j = 0; j < 10; ++j) 7588 ; 7589 } 7590 #pragma omp simd 7591 for (int i = 0; i < 10; ++i) { 7592 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7593 for (int j = 0; j < 10; ++j) 7594 ; 7595 } 7596 #pragma omp simd 7597 for (int i = 0; i < 10; ++i) { 7598 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7599 for (int j = 0; j < 10; ++j) 7600 ; 7601 } 7602 #pragma omp simd 7603 for (int i = 0; i < 10; ++i) { 7604 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7605 for (int j = 0; j < 10; ++j) 7606 ; 7607 } 7608 #pragma omp simd 7609 for (int i = 0; i < 10; ++i) { 7610 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7611 a++; 7612 } 7613 7614 // FOR DIRECTIVE 7615 #pragma omp for 7616 for (int i = 0; i < 10; ++i) { 7617 #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?}} 7618 for (int i = 0; i < 10; ++i) 7619 ; 7620 } 7621 #pragma omp for 7622 for (int i = 0; i < 10; ++i) { 7623 #pragma omp simd 7624 for (int i = 0; i < 10; ++i) 7625 ; 7626 } 7627 #pragma omp for 7628 for (int i = 0; i < 10; ++i) { 7629 #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?}} 7630 for (int i = 0; i < 10; ++i) 7631 ; 7632 } 7633 #pragma omp for 7634 for (int i = 0; i < 10; ++i) { 7635 #pragma omp parallel 7636 for (int i = 0; i < 10; ++i) 7637 ; 7638 } 7639 #pragma omp for 7640 for (int i = 0; i < 10; ++i) { 7641 #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?}} 7642 { 7643 bar(); 7644 } 7645 } 7646 #pragma omp for 7647 for (int i = 0; i < 10; ++i) { 7648 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 7649 { 7650 bar(); 7651 } 7652 } 7653 #pragma omp for 7654 for (int i = 0; i < 10; ++i) { 7655 #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?}} 7656 bar(); 7657 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 7658 bar(); 7659 #pragma omp critical 7660 bar(); 7661 } 7662 #pragma omp for 7663 for (int i = 0; i < 10; ++i) { 7664 #pragma omp parallel 7665 { 7666 #pragma omp single // OK 7667 { 7668 bar(); 7669 } 7670 #pragma omp for // OK 7671 for (int i = 0; i < 10; ++i) 7672 ; 7673 #pragma omp for simd // OK 7674 for (int i = 0; i < 10; ++i) 7675 ; 7676 #pragma omp sections // OK 7677 { 7678 bar(); 7679 } 7680 } 7681 } 7682 #pragma omp for 7683 for (int i = 0; i < 10; ++i) { 7684 #pragma omp parallel for 7685 for (int i = 0; i < 10; ++i) 7686 ; 7687 } 7688 #pragma omp for 7689 for (int i = 0; i < 10; ++i) { 7690 #pragma omp parallel for simd 7691 for (int i = 0; i < 10; ++i) 7692 ; 7693 } 7694 #pragma omp for 7695 for (int i = 0; i < 10; ++i) { 7696 #pragma omp parallel sections 7697 { 7698 bar(); 7699 } 7700 } 7701 #pragma omp for 7702 for (int i = 0; i < 10; ++i) { 7703 #pragma omp task 7704 { 7705 bar(); 7706 } 7707 } 7708 #pragma omp for 7709 for (int i = 0; i < 10; ++i) { 7710 #pragma omp taskyield 7711 bar(); 7712 } 7713 #pragma omp for 7714 for (int i = 0; i < 10; ++i) { 7715 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 7716 bar(); 7717 } 7718 #pragma omp for 7719 for (int i = 0; i < 10; ++i) { 7720 #pragma omp taskwait 7721 bar(); 7722 } 7723 #pragma omp for 7724 for (int i = 0; i < 10; ++i) { 7725 #pragma omp flush 7726 bar(); 7727 } 7728 #pragma omp for 7729 for (int i = 0; i < 10; ++i) { 7730 #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?}} 7731 bar(); 7732 } 7733 #pragma omp for ordered 7734 for (int i = 0; i < 10; ++i) { 7735 #pragma omp ordered // OK 7736 bar(); 7737 } 7738 #pragma omp for 7739 for (int i = 0; i < 10; ++i) { 7740 #pragma omp atomic 7741 ++a; 7742 } 7743 #pragma omp for 7744 for (int i = 0; i < 10; ++i) { 7745 #pragma omp target 7746 ++a; 7747 } 7748 #pragma omp for 7749 for (int i = 0; i < 10; ++i) { 7750 #pragma omp target parallel 7751 ++a; 7752 } 7753 #pragma omp for 7754 for (int i = 0; i < 10; ++i) { 7755 #pragma omp target parallel for 7756 for (int i = 0; i < 10; ++i) 7757 ; 7758 } 7759 #pragma omp for 7760 for (int i = 0; i < 10; ++i) { 7761 #pragma omp target enter data map(to: a) 7762 ++a; 7763 } 7764 #pragma omp for 7765 for (int i = 0; i < 10; ++i) { 7766 #pragma omp target exit data map(from: a) 7767 ++a; 7768 } 7769 #pragma omp for 7770 for (int i = 0; i < 10; ++i) { 7771 #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?}} 7772 ++a; 7773 } 7774 #pragma omp for 7775 for (int i = 0; i < 10; ++i) { 7776 #pragma omp taskloop 7777 for (int i = 0; i < 10; ++i) 7778 ++a; 7779 } 7780 #pragma omp for 7781 for (int i = 0; i < 10; ++i) { 7782 #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?}} 7783 for (int j = 0; j < 10; ++j) 7784 ; 7785 } 7786 #pragma omp for 7787 for (int i = 0; i < 10; ++i) { 7788 #pragma omp target update to(a) 7789 ++a; 7790 } 7791 #pragma omp for 7792 for (int i = 0; i < 10; ++i) { 7793 #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?}} 7794 for (int j = 0; j < 10; ++j) 7795 ; 7796 } 7797 #pragma omp for 7798 for (int i = 0; i < 10; ++i) { 7799 #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?}} 7800 for (int j = 0; j < 10; ++j) 7801 ; 7802 } 7803 #pragma omp for 7804 for (int i = 0; i < 10; ++i) { 7805 #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?}} 7806 for (int j = 0; j < 10; ++j) 7807 ; 7808 } 7809 #pragma omp for 7810 for (int i = 0; i < 10; ++i) { 7811 #pragma omp target simd // OK 7812 for (int j = 0; j < 10; ++j) 7813 ; 7814 } 7815 #pragma omp for 7816 for (int i = 0; i < 10; ++i) { 7817 #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?}} 7818 for (int j = 0; j < 10; ++j) 7819 ; 7820 } 7821 #pragma omp for 7822 for (int i = 0; i < 10; ++i) { 7823 #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?}} 7824 for (int j = 0; j < 10; ++j) 7825 ; 7826 } 7827 #pragma omp for 7828 for (int i = 0; i < 10; ++i) { 7829 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 7830 for (int j = 0; j < 10; ++j) 7831 ; 7832 } 7833 #pragma omp for 7834 for (int i = 0; i < 10; ++i) { 7835 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 7836 for (int j = 0; j < 10; ++j) 7837 ; 7838 } 7839 #pragma omp for 7840 for (int i = 0; i < 10; ++i) { 7841 #pragma omp target teams // OK 7842 a++; 7843 } 7844 7845 // FOR SIMD DIRECTIVE 7846 #pragma omp for simd 7847 for (int i = 0; i < 10; ++i) { 7848 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7849 for (int i = 0; i < 10; ++i) 7850 ; 7851 } 7852 #pragma omp for simd 7853 for (int i = 0; i < 10; ++i) { 7854 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7855 for (int i = 0; i < 10; ++i) 7856 ; 7857 } 7858 #pragma omp for simd 7859 for (int i = 0; i < 10; ++i) { 7860 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7861 for (int i = 0; i < 10; ++i) 7862 ; 7863 } 7864 #pragma omp for simd 7865 for (int i = 0; i < 10; ++i) { 7866 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7867 for (int i = 0; i < 10; ++i) 7868 ; 7869 } 7870 #pragma omp for simd 7871 for (int i = 0; i < 10; ++i) { 7872 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7873 { 7874 bar(); 7875 } 7876 } 7877 #pragma omp for simd 7878 for (int i = 0; i < 10; ++i) { 7879 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7880 { 7881 bar(); 7882 } 7883 } 7884 #pragma omp for simd 7885 for (int i = 0; i < 10; ++i) { 7886 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7887 bar(); 7888 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7889 bar(); 7890 } 7891 #pragma omp for simd 7892 for (int i = 0; i < 10; ++i) { 7893 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7894 bar(); 7895 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7896 bar(); 7897 } 7898 #pragma omp for simd 7899 for (int i = 0; i < 10; ++i) { 7900 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7901 for (int i = 0; i < 10; ++i) 7902 ; 7903 } 7904 #pragma omp for simd 7905 for (int i = 0; i < 10; ++i) { 7906 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7907 for (int i = 0; i < 10; ++i) 7908 ; 7909 } 7910 #pragma omp for simd 7911 for (int i = 0; i < 10; ++i) { 7912 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7913 { 7914 bar(); 7915 } 7916 } 7917 #pragma omp for simd 7918 for (int i = 0; i < 10; ++i) { 7919 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7920 { 7921 bar(); 7922 } 7923 } 7924 #pragma omp for simd 7925 for (int i = 0; i < 10; ++i) { 7926 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7927 bar(); 7928 } 7929 #pragma omp for simd 7930 for (int i = 0; i < 10; ++i) { 7931 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7932 bar(); 7933 } 7934 #pragma omp for simd 7935 for (int i = 0; i < 10; ++i) { 7936 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7937 bar(); 7938 } 7939 #pragma omp for simd 7940 for (int i = 0; i < 10; ++i) { 7941 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7942 bar(); 7943 } 7944 #pragma omp for simd 7945 for (int i = 0; i < 10; ++i) { 7946 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7947 bar(); 7948 } 7949 #pragma omp for simd 7950 for (int i = 0; i < 10; ++i) { 7951 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7952 ++a; 7953 } 7954 #pragma omp for simd 7955 for (int i = 0; i < 10; ++i) { 7956 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7957 ++a; 7958 } 7959 #pragma omp for simd 7960 for (int i = 0; i < 10; ++i) { 7961 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7962 ++a; 7963 } 7964 #pragma omp for simd 7965 for (int i = 0; i < 10; ++i) { 7966 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7967 for (int i = 0; i < 10; ++i) 7968 ; 7969 } 7970 #pragma omp for simd 7971 for (int i = 0; i < 10; ++i) { 7972 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7973 ++a; 7974 } 7975 #pragma omp for simd 7976 for (int i = 0; i < 10; ++i) { 7977 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7978 ++a; 7979 } 7980 #pragma omp for simd 7981 for (int i = 0; i < 10; ++i) { 7982 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7983 ++a; 7984 } 7985 #pragma omp for simd 7986 for (int i = 0; i < 10; ++i) { 7987 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7988 for (int i = 0; i < 10; ++i) 7989 ++a; 7990 } 7991 #pragma omp for simd 7992 for (int i = 0; i < 10; ++i) { 7993 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7994 for (int j = 0; j < 10; ++j) 7995 ; 7996 } 7997 #pragma omp for simd 7998 for (int i = 0; i < 10; ++i) { 7999 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8000 ++a; 8001 } 8002 #pragma omp for simd 8003 for (int i = 0; i < 10; ++i) { 8004 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8005 for (int j = 0; j < 10; ++j) 8006 ; 8007 } 8008 #pragma omp for simd 8009 for (int i = 0; i < 10; ++i) { 8010 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8011 for (int j = 0; j < 10; ++j) 8012 ; 8013 } 8014 #pragma omp for simd 8015 for (int i = 0; i < 10; ++i) { 8016 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8017 for (int j = 0; j < 10; ++j) 8018 ; 8019 } 8020 #pragma omp for simd 8021 for (int i = 0; i < 10; ++i) { 8022 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8023 for (int j = 0; j < 10; ++j) 8024 ; 8025 } 8026 #pragma omp for simd 8027 for (int i = 0; i < 10; ++i) { 8028 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8029 for (int j = 0; j < 10; ++j) 8030 ; 8031 } 8032 #pragma omp for simd 8033 for (int i = 0; i < 10; ++i) { 8034 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8035 for (int j = 0; j < 10; ++j) 8036 ; 8037 } 8038 #pragma omp for simd 8039 for (int i = 0; i < 10; ++i) { 8040 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8041 for (int j = 0; j < 10; ++j) 8042 ; 8043 } 8044 #pragma omp for simd 8045 for (int i = 0; i < 10; ++i) { 8046 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8047 for (int j = 0; j < 10; ++j) 8048 ; 8049 } 8050 #pragma omp for simd 8051 for (int i = 0; i < 10; ++i) { 8052 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 8053 a++; 8054 } 8055 8056 // SECTIONS DIRECTIVE 8057 #pragma omp sections 8058 { 8059 #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?}} 8060 for (int i = 0; i < 10; ++i) 8061 ; 8062 } 8063 #pragma omp sections 8064 { 8065 #pragma omp simd 8066 for (int i = 0; i < 10; ++i) 8067 ; 8068 } 8069 #pragma omp sections 8070 { 8071 #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?}} 8072 for (int i = 0; i < 10; ++i) 8073 ; 8074 } 8075 #pragma omp sections 8076 { 8077 #pragma omp parallel 8078 for (int i = 0; i < 10; ++i) 8079 ; 8080 } 8081 #pragma omp sections 8082 { 8083 #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?}} 8084 { 8085 bar(); 8086 } 8087 } 8088 #pragma omp sections 8089 { 8090 #pragma omp section 8091 { 8092 bar(); 8093 } 8094 } 8095 #pragma omp sections 8096 { 8097 #pragma omp critical 8098 bar(); 8099 #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?}} 8100 bar(); 8101 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 8102 bar(); 8103 } 8104 #pragma omp sections 8105 { 8106 #pragma omp parallel 8107 { 8108 #pragma omp single // OK 8109 { 8110 bar(); 8111 } 8112 #pragma omp for // OK 8113 for (int i = 0; i < 10; ++i) 8114 ; 8115 #pragma omp for simd // OK 8116 for (int i = 0; i < 10; ++i) 8117 ; 8118 #pragma omp sections // OK 8119 { 8120 bar(); 8121 } 8122 } 8123 } 8124 #pragma omp sections 8125 { 8126 #pragma omp parallel for 8127 for (int i = 0; i < 10; ++i) 8128 ; 8129 } 8130 #pragma omp sections 8131 { 8132 #pragma omp parallel for simd 8133 for (int i = 0; i < 10; ++i) 8134 ; 8135 } 8136 #pragma omp sections 8137 { 8138 #pragma omp parallel sections 8139 { 8140 bar(); 8141 } 8142 } 8143 #pragma omp sections 8144 { 8145 #pragma omp task 8146 { 8147 bar(); 8148 } 8149 } 8150 #pragma omp sections 8151 { 8152 #pragma omp taskyield 8153 } 8154 #pragma omp sections 8155 { 8156 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 8157 bar(); 8158 } 8159 #pragma omp sections 8160 { 8161 #pragma omp taskwait 8162 } 8163 #pragma omp sections 8164 { 8165 #pragma omp flush 8166 } 8167 #pragma omp sections 8168 { 8169 #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?}} 8170 bar(); 8171 } 8172 #pragma omp sections 8173 { 8174 #pragma omp atomic 8175 ++a; 8176 } 8177 #pragma omp sections 8178 { 8179 #pragma omp target 8180 ++a; 8181 } 8182 #pragma omp sections 8183 { 8184 #pragma omp target parallel 8185 ++a; 8186 } 8187 #pragma omp sections 8188 { 8189 #pragma omp target parallel for 8190 for (int i = 0; i < 10; ++i) 8191 ; 8192 } 8193 #pragma omp sections 8194 { 8195 #pragma omp target enter data map(to: a) 8196 } 8197 #pragma omp sections 8198 { 8199 #pragma omp target exit data map(from: a) 8200 } 8201 #pragma omp sections 8202 { 8203 #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?}} 8204 ++a; 8205 } 8206 #pragma omp sections 8207 { 8208 #pragma omp taskloop 8209 for (int i = 0; i < 10; ++i) 8210 ++a; 8211 } 8212 #pragma omp sections 8213 { 8214 #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?}} 8215 for (int i = 0; i < 10; ++i) 8216 ; 8217 } 8218 #pragma omp sections 8219 { 8220 #pragma omp target update to(a) 8221 } 8222 #pragma omp sections 8223 { 8224 #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?}} 8225 for (int i = 0; i < 10; ++i) 8226 ; 8227 } 8228 #pragma omp sections 8229 { 8230 #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?}} 8231 for (int i = 0; i < 10; ++i) 8232 ; 8233 } 8234 #pragma omp sections 8235 { 8236 #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?}} 8237 for (int i = 0; i < 10; ++i) 8238 ; 8239 } 8240 #pragma omp sections 8241 { 8242 #pragma omp target simd // OK 8243 for (int i = 0; i < 10; ++i) 8244 ; 8245 } 8246 #pragma omp sections 8247 { 8248 #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?}} 8249 for (int i = 0; i < 10; ++i) 8250 ; 8251 } 8252 #pragma omp sections 8253 { 8254 #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?}} 8255 for (int i = 0; i < 10; ++i) 8256 ; 8257 } 8258 #pragma omp sections 8259 { 8260 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 8261 for (int i = 0; i < 10; ++i) 8262 ; 8263 } 8264 #pragma omp sections 8265 { 8266 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 8267 for (int i = 0; i < 10; ++i) 8268 ; 8269 } 8270 #pragma omp sections 8271 { 8272 #pragma omp target teams // OK 8273 a++; 8274 } 8275 8276 // SECTION DIRECTIVE 8277 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 8278 { 8279 bar(); 8280 } 8281 #pragma omp sections 8282 { 8283 #pragma omp section 8284 { 8285 #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?}} 8286 for (int i = 0; i < 10; ++i) 8287 ; 8288 } 8289 } 8290 #pragma omp sections 8291 { 8292 #pragma omp section 8293 { 8294 #pragma omp simd 8295 for (int i = 0; i < 10; ++i) 8296 ; 8297 } 8298 } 8299 #pragma omp sections 8300 { 8301 #pragma omp section 8302 { 8303 #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?}} 8304 for (int i = 0; i < 10; ++i) 8305 ; 8306 } 8307 } 8308 #pragma omp sections 8309 { 8310 #pragma omp section 8311 { 8312 #pragma omp parallel 8313 for (int i = 0; i < 10; ++i) 8314 ; 8315 } 8316 } 8317 #pragma omp sections 8318 { 8319 #pragma omp section 8320 { 8321 #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?}} 8322 { 8323 bar(); 8324 } 8325 } 8326 } 8327 #pragma omp sections 8328 { 8329 #pragma omp section 8330 { 8331 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 8332 { 8333 bar(); 8334 } 8335 } 8336 } 8337 #pragma omp sections 8338 { 8339 #pragma omp section 8340 { 8341 #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?}} 8342 bar(); 8343 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 8344 bar(); 8345 #pragma omp critical 8346 bar(); 8347 } 8348 } 8349 #pragma omp sections 8350 { 8351 #pragma omp section 8352 { 8353 #pragma omp parallel 8354 { 8355 #pragma omp single // OK 8356 { 8357 bar(); 8358 } 8359 #pragma omp for // OK 8360 for (int i = 0; i < 10; ++i) 8361 ; 8362 #pragma omp for simd // OK 8363 for (int i = 0; i < 10; ++i) 8364 ; 8365 #pragma omp sections // OK 8366 { 8367 bar(); 8368 } 8369 } 8370 } 8371 } 8372 #pragma omp sections 8373 { 8374 #pragma omp section 8375 { 8376 #pragma omp parallel for 8377 for (int i = 0; i < 10; ++i) 8378 ; 8379 } 8380 } 8381 #pragma omp sections 8382 { 8383 #pragma omp section 8384 { 8385 #pragma omp parallel for simd 8386 for (int i = 0; i < 10; ++i) 8387 ; 8388 } 8389 } 8390 #pragma omp sections 8391 { 8392 #pragma omp section 8393 { 8394 #pragma omp parallel sections 8395 { 8396 bar(); 8397 } 8398 } 8399 } 8400 #pragma omp sections 8401 { 8402 #pragma omp section 8403 { 8404 #pragma omp task 8405 { 8406 bar(); 8407 } 8408 } 8409 } 8410 #pragma omp sections 8411 { 8412 #pragma omp section 8413 { 8414 #pragma omp taskyield 8415 bar(); 8416 } 8417 } 8418 #pragma omp sections 8419 { 8420 #pragma omp section 8421 { 8422 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 8423 bar(); 8424 } 8425 } 8426 #pragma omp sections 8427 { 8428 #pragma omp section 8429 { 8430 #pragma omp taskwait 8431 bar(); 8432 } 8433 } 8434 #pragma omp sections 8435 { 8436 #pragma omp section 8437 { 8438 #pragma omp flush 8439 bar(); 8440 } 8441 } 8442 #pragma omp sections 8443 { 8444 #pragma omp section 8445 { 8446 #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?}} 8447 bar(); 8448 } 8449 } 8450 #pragma omp sections 8451 { 8452 #pragma omp section 8453 { 8454 #pragma omp atomic 8455 ++a; 8456 } 8457 } 8458 #pragma omp sections 8459 { 8460 #pragma omp section 8461 { 8462 #pragma omp target 8463 ++a; 8464 } 8465 } 8466 #pragma omp sections 8467 { 8468 #pragma omp section 8469 { 8470 #pragma omp target parallel 8471 ++a; 8472 } 8473 } 8474 #pragma omp sections 8475 { 8476 #pragma omp section 8477 { 8478 #pragma omp target parallel for 8479 for (int i = 0; i < 10; ++i) 8480 ; 8481 } 8482 } 8483 #pragma omp sections 8484 { 8485 #pragma omp section 8486 { 8487 #pragma omp target enter data map(to: a) 8488 ++a; 8489 } 8490 } 8491 #pragma omp sections 8492 { 8493 #pragma omp section 8494 { 8495 #pragma omp target exit data map(from: a) 8496 ++a; 8497 } 8498 } 8499 #pragma omp sections 8500 { 8501 #pragma omp section 8502 { 8503 #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?}} 8504 ++a; 8505 } 8506 } 8507 #pragma omp sections 8508 { 8509 #pragma omp section 8510 { 8511 #pragma omp taskloop 8512 for (int i = 0; i < 10; ++i) 8513 ++a; 8514 } 8515 } 8516 #pragma omp sections 8517 { 8518 #pragma omp section 8519 #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?}} 8520 for (int i = 0; i < 10; ++i) 8521 ; 8522 } 8523 #pragma omp sections 8524 { 8525 #pragma omp section 8526 { 8527 #pragma omp target update to(a) 8528 a++; 8529 } 8530 } 8531 #pragma omp sections 8532 { 8533 #pragma omp section 8534 #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?}} 8535 for (int i = 0; i < 10; ++i) 8536 ; 8537 } 8538 #pragma omp sections 8539 { 8540 #pragma omp section 8541 #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?}} 8542 for (int i = 0; i < 10; ++i) 8543 ; 8544 } 8545 #pragma omp sections 8546 { 8547 #pragma omp section 8548 #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?}} 8549 for (int i = 0; i < 10; ++i) 8550 ; 8551 } 8552 #pragma omp sections 8553 { 8554 #pragma omp section 8555 #pragma omp target simd // OK 8556 for (int i = 0; i < 10; ++i) 8557 ; 8558 } 8559 #pragma omp sections 8560 { 8561 #pragma omp section 8562 #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?}} 8563 for (int i = 0; i < 10; ++i) 8564 ; 8565 } 8566 #pragma omp sections 8567 { 8568 #pragma omp section 8569 #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?}} 8570 for (int i = 0; i < 10; ++i) 8571 ; 8572 } 8573 #pragma omp sections 8574 { 8575 #pragma omp section 8576 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 8577 for (int i = 0; i < 10; ++i) 8578 ; 8579 } 8580 #pragma omp sections 8581 { 8582 #pragma omp section 8583 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'section' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 8584 for (int i = 0; i < 10; ++i) 8585 ; 8586 } 8587 #pragma omp sections 8588 { 8589 #pragma omp section 8590 #pragma omp target teams // OK 8591 a++; 8592 } 8593 8594 // SINGLE DIRECTIVE 8595 #pragma omp single 8596 { 8597 #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?}} 8598 for (int i = 0; i < 10; ++i) 8599 ; 8600 } 8601 #pragma omp single 8602 { 8603 #pragma omp simd 8604 for (int i = 0; i < 10; ++i) 8605 ; 8606 } 8607 #pragma omp single 8608 { 8609 #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?}} 8610 for (int i = 0; i < 10; ++i) 8611 ; 8612 } 8613 #pragma omp single 8614 { 8615 #pragma omp parallel 8616 for (int i = 0; i < 10; ++i) 8617 ; 8618 } 8619 #pragma omp single 8620 { 8621 #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?}} 8622 { 8623 bar(); 8624 } 8625 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 8626 bar(); 8627 #pragma omp critical 8628 bar(); 8629 } 8630 #pragma omp single 8631 { 8632 #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?}} 8633 { 8634 bar(); 8635 } 8636 } 8637 #pragma omp single 8638 { 8639 #pragma omp parallel 8640 { 8641 #pragma omp single // OK 8642 { 8643 bar(); 8644 } 8645 #pragma omp for // OK 8646 for (int i = 0; i < 10; ++i) 8647 ; 8648 #pragma omp for simd // OK 8649 for (int i = 0; i < 10; ++i) 8650 ; 8651 #pragma omp sections // OK 8652 { 8653 bar(); 8654 } 8655 } 8656 } 8657 #pragma omp single 8658 { 8659 #pragma omp parallel for 8660 for (int i = 0; i < 10; ++i) 8661 ; 8662 } 8663 #pragma omp single 8664 { 8665 #pragma omp parallel for simd 8666 for (int i = 0; i < 10; ++i) 8667 ; 8668 } 8669 #pragma omp single 8670 { 8671 #pragma omp parallel sections 8672 { 8673 bar(); 8674 } 8675 } 8676 #pragma omp single 8677 { 8678 #pragma omp task 8679 { 8680 bar(); 8681 } 8682 } 8683 #pragma omp single 8684 { 8685 #pragma omp taskyield 8686 bar(); 8687 } 8688 #pragma omp single 8689 { 8690 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 8691 bar(); 8692 } 8693 #pragma omp single 8694 { 8695 #pragma omp taskwait 8696 bar(); 8697 } 8698 #pragma omp single 8699 { 8700 #pragma omp flush 8701 bar(); 8702 } 8703 #pragma omp single 8704 { 8705 #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?}} 8706 bar(); 8707 } 8708 #pragma omp single 8709 { 8710 #pragma omp atomic 8711 ++a; 8712 } 8713 #pragma omp single 8714 { 8715 #pragma omp target 8716 ++a; 8717 } 8718 #pragma omp single 8719 { 8720 #pragma omp target parallel 8721 ++a; 8722 } 8723 #pragma omp single 8724 { 8725 #pragma omp target parallel for 8726 for (int i = 0; i < 10; ++i) 8727 ; 8728 } 8729 #pragma omp single 8730 { 8731 #pragma omp target enter data map(to: a) 8732 ++a; 8733 } 8734 #pragma omp single 8735 { 8736 #pragma omp target exit data map(from: a) 8737 ++a; 8738 } 8739 #pragma omp single 8740 { 8741 #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?}} 8742 ++a; 8743 } 8744 #pragma omp single 8745 { 8746 #pragma omp taskloop 8747 for (int i = 0; i < 10; ++i) 8748 ++a; 8749 } 8750 #pragma omp single 8751 { 8752 #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?}} 8753 for (int i = 0; i < 10; ++i) 8754 ; 8755 } 8756 #pragma omp single 8757 { 8758 #pragma omp target update to(a) 8759 a++; 8760 } 8761 #pragma omp single 8762 { 8763 #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?}} 8764 for (int i = 0; i < 10; ++i) 8765 ; 8766 } 8767 #pragma omp single 8768 { 8769 #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?}} 8770 for (int i = 0; i < 10; ++i) 8771 ; 8772 } 8773 #pragma omp single 8774 { 8775 #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?}} 8776 for (int i = 0; i < 10; ++i) 8777 ; 8778 } 8779 #pragma omp single 8780 { 8781 #pragma omp target simd // OK 8782 for (int i = 0; i < 10; ++i) 8783 ; 8784 } 8785 #pragma omp single 8786 { 8787 #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?}} 8788 for (int i = 0; i < 10; ++i) 8789 ; 8790 } 8791 #pragma omp single 8792 { 8793 #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?}} 8794 for (int i = 0; i < 10; ++i) 8795 ; 8796 } 8797 #pragma omp single 8798 { 8799 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 8800 for (int i = 0; i < 10; ++i) 8801 ; 8802 } 8803 #pragma omp single 8804 { 8805 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'single' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 8806 for (int i = 0; i < 10; ++i) 8807 ; 8808 } 8809 #pragma omp single 8810 { 8811 #pragma omp target teams // oK 8812 a++; 8813 } 8814 8815 // MASTER DIRECTIVE 8816 #pragma omp master 8817 { 8818 #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?}} 8819 for (int i = 0; i < 10; ++i) 8820 ; 8821 } 8822 #pragma omp master 8823 { 8824 #pragma omp simd 8825 for (int i = 0; i < 10; ++i) 8826 ; 8827 } 8828 #pragma omp master 8829 { 8830 #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?}} 8831 for (int i = 0; i < 10; ++i) 8832 ; 8833 } 8834 #pragma omp master 8835 { 8836 #pragma omp parallel 8837 for (int i = 0; i < 10; ++i) 8838 ; 8839 } 8840 #pragma omp master 8841 { 8842 #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?}} 8843 { 8844 bar(); 8845 } 8846 } 8847 #pragma omp master 8848 { 8849 #pragma omp master // OK, though second 'master' is redundant 8850 { 8851 bar(); 8852 } 8853 } 8854 #pragma omp master 8855 { 8856 #pragma omp critical 8857 { 8858 bar(); 8859 } 8860 } 8861 #pragma omp master 8862 { 8863 #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?}} 8864 { 8865 bar(); 8866 } 8867 } 8868 #pragma omp master 8869 { 8870 #pragma omp parallel 8871 { 8872 #pragma omp master // OK 8873 { 8874 bar(); 8875 } 8876 #pragma omp for // OK 8877 for (int i = 0; i < 10; ++i) 8878 ; 8879 #pragma omp for simd // OK 8880 for (int i = 0; i < 10; ++i) 8881 ; 8882 #pragma omp sections // OK 8883 { 8884 bar(); 8885 } 8886 } 8887 } 8888 #pragma omp master 8889 { 8890 #pragma omp parallel for 8891 for (int i = 0; i < 10; ++i) 8892 ; 8893 } 8894 #pragma omp master 8895 { 8896 #pragma omp parallel for simd 8897 for (int i = 0; i < 10; ++i) 8898 ; 8899 } 8900 #pragma omp master 8901 { 8902 #pragma omp parallel sections 8903 { 8904 bar(); 8905 } 8906 } 8907 #pragma omp master 8908 { 8909 #pragma omp task 8910 { 8911 bar(); 8912 } 8913 } 8914 #pragma omp master 8915 { 8916 #pragma omp taskyield 8917 bar(); 8918 } 8919 #pragma omp master 8920 { 8921 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 8922 bar(); 8923 } 8924 #pragma omp master 8925 { 8926 #pragma omp taskwait 8927 bar(); 8928 } 8929 #pragma omp master 8930 { 8931 #pragma omp flush 8932 bar(); 8933 } 8934 #pragma omp master 8935 { 8936 #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?}} 8937 bar(); 8938 } 8939 #pragma omp master 8940 { 8941 #pragma omp atomic 8942 ++a; 8943 } 8944 #pragma omp master 8945 { 8946 #pragma omp target 8947 ++a; 8948 } 8949 #pragma omp master 8950 { 8951 #pragma omp target parallel 8952 ++a; 8953 } 8954 #pragma omp master 8955 { 8956 #pragma omp target parallel for 8957 for (int i = 0; i < 10; ++i) 8958 ; 8959 } 8960 #pragma omp master 8961 { 8962 #pragma omp target enter data map(to: a) 8963 ++a; 8964 } 8965 #pragma omp master 8966 { 8967 #pragma omp target exit data map(from: a) 8968 ++a; 8969 } 8970 #pragma omp master 8971 { 8972 #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?}} 8973 ++a; 8974 } 8975 #pragma omp master 8976 { 8977 #pragma omp taskloop 8978 for (int i = 0; i < 10; ++i) 8979 ++a; 8980 } 8981 #pragma omp master 8982 { 8983 #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?}} 8984 for (int i = 0; i < 10; ++i) 8985 ; 8986 } 8987 #pragma omp master 8988 { 8989 #pragma omp target update to(a) 8990 ++a; 8991 } 8992 #pragma omp master 8993 { 8994 #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?}} 8995 for (int i = 0; i < 10; ++i) 8996 ; 8997 } 8998 #pragma omp master 8999 { 9000 #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?}} 9001 for (int i = 0; i < 10; ++i) 9002 ; 9003 } 9004 #pragma omp master 9005 { 9006 #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?}} 9007 for (int i = 0; i < 10; ++i) 9008 ; 9009 } 9010 #pragma omp master 9011 { 9012 #pragma omp target simd // OK 9013 for (int i = 0; i < 10; ++i) 9014 ; 9015 } 9016 #pragma omp master 9017 { 9018 #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?}} 9019 for (int i = 0; i < 10; ++i) 9020 ; 9021 } 9022 #pragma omp master 9023 { 9024 #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?}} 9025 for (int i = 0; i < 10; ++i) 9026 ; 9027 } 9028 #pragma omp master 9029 { 9030 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 9031 for (int i = 0; i < 10; ++i) 9032 ; 9033 } 9034 #pragma omp master 9035 { 9036 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 9037 for (int i = 0; i < 10; ++i) 9038 ; 9039 } 9040 #pragma omp master 9041 { 9042 #pragma omp target teams // OK 9043 a++; 9044 } 9045 9046 // CRITICAL DIRECTIVE 9047 #pragma omp critical 9048 { 9049 #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?}} 9050 for (int i = 0; i < 10; ++i) 9051 ; 9052 } 9053 #pragma omp critical 9054 { 9055 #pragma omp simd 9056 for (int i = 0; i < 10; ++i) 9057 ; 9058 } 9059 #pragma omp critical 9060 { 9061 #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?}} 9062 for (int i = 0; i < 10; ++i) 9063 ; 9064 } 9065 #pragma omp critical 9066 { 9067 #pragma omp parallel 9068 for (int i = 0; i < 10; ++i) 9069 ; 9070 } 9071 #pragma omp critical 9072 { 9073 #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?}} 9074 { 9075 bar(); 9076 } 9077 } 9078 #pragma omp critical 9079 { 9080 #pragma omp master // OK, though second 'master' is redundant 9081 { 9082 bar(); 9083 } 9084 } 9085 #pragma omp critical 9086 { 9087 #pragma omp critical 9088 { 9089 bar(); 9090 } 9091 } 9092 #pragma omp critical 9093 { 9094 #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?}} 9095 { 9096 bar(); 9097 } 9098 } 9099 #pragma omp critical 9100 { 9101 #pragma omp parallel 9102 { 9103 #pragma omp master // OK 9104 { 9105 bar(); 9106 } 9107 #pragma omp for // OK 9108 for (int i = 0; i < 10; ++i) 9109 ; 9110 #pragma omp for simd // OK 9111 for (int i = 0; i < 10; ++i) 9112 ; 9113 #pragma omp sections // OK 9114 { 9115 bar(); 9116 } 9117 } 9118 } 9119 #pragma omp critical 9120 { 9121 #pragma omp parallel for 9122 for (int i = 0; i < 10; ++i) 9123 ; 9124 } 9125 #pragma omp critical 9126 { 9127 #pragma omp parallel for simd 9128 for (int i = 0; i < 10; ++i) 9129 ; 9130 } 9131 #pragma omp critical 9132 { 9133 #pragma omp parallel sections 9134 { 9135 bar(); 9136 } 9137 } 9138 #pragma omp critical 9139 { 9140 #pragma omp task 9141 { 9142 bar(); 9143 } 9144 } 9145 #pragma omp critical 9146 { 9147 #pragma omp taskyield 9148 bar(); 9149 } 9150 #pragma omp critical 9151 { 9152 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 9153 bar(); 9154 } 9155 #pragma omp critical 9156 { 9157 #pragma omp taskwait 9158 bar(); 9159 } 9160 #pragma omp critical(Belka) 9161 { 9162 #pragma omp critical(Strelka) 9163 bar(); 9164 } 9165 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 9166 { 9167 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 9168 { 9169 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 9170 { 9171 #pragma omp parallel 9172 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 9173 { 9174 bar(); 9175 } 9176 } 9177 } 9178 } 9179 #pragma omp critical 9180 { 9181 #pragma omp flush 9182 bar(); 9183 } 9184 #pragma omp critical 9185 { 9186 #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?}} 9187 bar(); 9188 } 9189 #pragma omp critical 9190 { 9191 #pragma omp atomic 9192 ++a; 9193 } 9194 #pragma omp critical 9195 { 9196 #pragma omp target 9197 ++a; 9198 } 9199 #pragma omp critical 9200 { 9201 #pragma omp target parallel 9202 ++a; 9203 } 9204 #pragma omp critical 9205 { 9206 #pragma omp target parallel for 9207 for (int i = 0; i < 10; ++i) 9208 ; 9209 } 9210 #pragma omp critical 9211 { 9212 #pragma omp target enter data map(to: a) 9213 ++a; 9214 } 9215 #pragma omp critical 9216 { 9217 #pragma omp target exit data map(from: a) 9218 ++a; 9219 } 9220 #pragma omp critical 9221 { 9222 #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?}} 9223 ++a; 9224 } 9225 #pragma omp critical 9226 { 9227 #pragma omp taskloop 9228 for (int i = 0; i < 10; ++i) 9229 ++a; 9230 } 9231 #pragma omp critical 9232 { 9233 #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?}} 9234 for (int i = 0; i < 10; ++i) 9235 ; 9236 } 9237 #pragma omp critical 9238 { 9239 #pragma omp target update to(a) 9240 a++; 9241 } 9242 #pragma omp critical 9243 { 9244 #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?}} 9245 for (int i = 0; i < 10; ++i) 9246 ; 9247 } 9248 #pragma omp critical 9249 { 9250 #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?}} 9251 for (int i = 0; i < 10; ++i) 9252 ; 9253 } 9254 #pragma omp critical 9255 { 9256 #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?}} 9257 for (int i = 0; i < 10; ++i) 9258 ; 9259 } 9260 #pragma omp critical 9261 { 9262 #pragma omp target simd // OK 9263 for (int i = 0; i < 10; ++i) 9264 ; 9265 } 9266 #pragma omp critical 9267 { 9268 #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?}} 9269 for (int i = 0; i < 10; ++i) 9270 ; 9271 } 9272 #pragma omp critical 9273 { 9274 #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?}} 9275 for (int i = 0; i < 10; ++i) 9276 ; 9277 } 9278 #pragma omp critical 9279 { 9280 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 9281 for (int i = 0; i < 10; ++i) 9282 ; 9283 } 9284 #pragma omp critical 9285 { 9286 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'critical' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 9287 for (int i = 0; i < 10; ++i) 9288 ; 9289 } 9290 #pragma omp critical 9291 { 9292 #pragma omp target teams // OK 9293 a++; 9294 } 9295 9296 // PARALLEL FOR DIRECTIVE 9297 #pragma omp parallel for 9298 for (int i = 0; i < 10; ++i) { 9299 #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?}} 9300 for (int i = 0; i < 10; ++i) 9301 ; 9302 } 9303 #pragma omp parallel for 9304 for (int i = 0; i < 10; ++i) { 9305 #pragma omp simd 9306 for (int i = 0; i < 10; ++i) 9307 ; 9308 } 9309 #pragma omp parallel for 9310 for (int i = 0; i < 10; ++i) { 9311 #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?}} 9312 for (int i = 0; i < 10; ++i) 9313 ; 9314 } 9315 9316 #pragma omp parallel for 9317 for (int i = 0; i < 10; ++i) { 9318 #pragma omp parallel 9319 for (int i = 0; i < 10; ++i) 9320 ; 9321 } 9322 #pragma omp parallel for 9323 for (int i = 0; i < 10; ++i) { 9324 #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?}} 9325 { 9326 bar(); 9327 } 9328 } 9329 #pragma omp parallel for 9330 for (int i = 0; i < 10; ++i) { 9331 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 9332 { 9333 bar(); 9334 } 9335 } 9336 #pragma omp parallel for 9337 for (int i = 0; i < 10; ++i) { 9338 #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?}} 9339 { 9340 bar(); 9341 } 9342 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 9343 { 9344 bar(); 9345 } 9346 #pragma omp critical 9347 { 9348 bar(); 9349 } 9350 } 9351 #pragma omp parallel for 9352 for (int i = 0; i < 10; ++i) { 9353 #pragma omp parallel 9354 { 9355 #pragma omp single // OK 9356 { 9357 bar(); 9358 } 9359 #pragma omp master // OK 9360 { 9361 bar(); 9362 } 9363 #pragma omp critical // OK 9364 { 9365 bar(); 9366 } 9367 #pragma omp for // OK 9368 for (int i = 0; i < 10; ++i) 9369 ; 9370 #pragma omp for simd // OK 9371 for (int i = 0; i < 10; ++i) 9372 ; 9373 #pragma omp sections // OK 9374 { 9375 bar(); 9376 } 9377 } 9378 } 9379 #pragma omp parallel for 9380 for (int i = 0; i < 10; ++i) { 9381 #pragma omp parallel for 9382 for (int i = 0; i < 10; ++i) 9383 ; 9384 } 9385 #pragma omp parallel for 9386 for (int i = 0; i < 10; ++i) { 9387 #pragma omp parallel for simd 9388 for (int i = 0; i < 10; ++i) 9389 ; 9390 } 9391 #pragma omp parallel for 9392 for (int i = 0; i < 10; ++i) { 9393 #pragma omp parallel sections 9394 { 9395 bar(); 9396 } 9397 } 9398 #pragma omp parallel for 9399 for (int i = 0; i < 10; ++i) { 9400 #pragma omp task 9401 { 9402 bar(); 9403 } 9404 } 9405 #pragma omp parallel for 9406 for (int i = 0; i < 10; ++i) { 9407 #pragma omp taskyield 9408 bar(); 9409 } 9410 #pragma omp parallel for 9411 for (int i = 0; i < 10; ++i) { 9412 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 9413 bar(); 9414 } 9415 #pragma omp parallel for 9416 for (int i = 0; i < 10; ++i) { 9417 #pragma omp taskwait 9418 bar(); 9419 } 9420 #pragma omp parallel for 9421 for (int i = 0; i < 10; ++i) { 9422 #pragma omp flush 9423 bar(); 9424 } 9425 #pragma omp parallel for 9426 for (int i = 0; i < 10; ++i) { 9427 #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?}} 9428 bar(); 9429 } 9430 #pragma omp parallel for ordered 9431 for (int i = 0; i < 10; ++i) { 9432 #pragma omp ordered // OK 9433 bar(); 9434 } 9435 #pragma omp parallel for 9436 for (int i = 0; i < 10; ++i) { 9437 #pragma omp atomic 9438 ++a; 9439 } 9440 #pragma omp parallel for 9441 for (int i = 0; i < 10; ++i) { 9442 #pragma omp target 9443 ++a; 9444 } 9445 #pragma omp parallel for 9446 for (int i = 0; i < 10; ++i) { 9447 #pragma omp target parallel 9448 ++a; 9449 } 9450 #pragma omp parallel for 9451 for (int i = 0; i < 10; ++i) { 9452 #pragma omp target parallel for 9453 for (int i = 0; i < 10; ++i) 9454 ; 9455 } 9456 #pragma omp parallel for 9457 for (int i = 0; i < 10; ++i) { 9458 #pragma omp target enter data map(to: a) 9459 ++a; 9460 } 9461 #pragma omp parallel for 9462 for (int i = 0; i < 10; ++i) { 9463 #pragma omp target exit data map(from: a) 9464 ++a; 9465 } 9466 #pragma omp parallel for 9467 for (int i = 0; i < 10; ++i) { 9468 #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?}} 9469 ++a; 9470 } 9471 #pragma omp parallel for 9472 for (int i = 0; i < 10; ++i) { 9473 #pragma omp taskloop 9474 for (int i = 0; i < 10; ++i) 9475 ++a; 9476 } 9477 #pragma omp parallel for 9478 for (int i = 0; i < 10; ++i) { 9479 #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?}} 9480 for (int j = 0; j < 10; ++j) 9481 ; 9482 } 9483 #pragma omp parallel for 9484 for (int i = 0; i < 10; ++i) { 9485 #pragma omp target update to(a) 9486 a++; 9487 } 9488 #pragma omp parallel for 9489 for (int i = 0; i < 10; ++i) { 9490 #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?}} 9491 for (int j = 0; j < 10; ++j) 9492 ; 9493 } 9494 #pragma omp parallel for 9495 for (int i = 0; i < 10; ++i) { 9496 #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?}} 9497 for (int j = 0; j < 10; ++j) 9498 ; 9499 } 9500 #pragma omp parallel for 9501 for (int i = 0; i < 10; ++i) { 9502 #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?}} 9503 for (int j = 0; j < 10; ++j) 9504 ; 9505 } 9506 #pragma omp parallel for 9507 for (int i = 0; i < 10; ++i) { 9508 #pragma omp target simd // OK 9509 for (int j = 0; j < 10; ++j) 9510 ; 9511 } 9512 #pragma omp parallel for 9513 for (int i = 0; i < 10; ++i) { 9514 #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?}} 9515 for (int j = 0; j < 10; ++j) 9516 ; 9517 } 9518 #pragma omp parallel for 9519 for (int i = 0; i < 10; ++i) { 9520 #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?}} 9521 for (int j = 0; j < 10; ++j) 9522 ; 9523 } 9524 #pragma omp parallel for 9525 for (int i = 0; i < 10; ++i) { 9526 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 9527 for (int j = 0; j < 10; ++j) 9528 ; 9529 } 9530 #pragma omp parallel for 9531 for (int i = 0; i < 10; ++i) { 9532 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 9533 for (int j = 0; j < 10; ++j) 9534 ; 9535 } 9536 #pragma omp parallel for 9537 for (int i = 0; i < 10; ++i) { 9538 #pragma omp target teams // OK 9539 a++; 9540 } 9541 9542 // PARALLEL FOR SIMD DIRECTIVE 9543 #pragma omp parallel for simd 9544 for (int i = 0; i < 10; ++i) { 9545 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9546 for (int i = 0; i < 10; ++i) 9547 ; 9548 } 9549 #pragma omp parallel for simd 9550 for (int i = 0; i < 10; ++i) { 9551 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9552 for (int i = 0; i < 10; ++i) 9553 ; 9554 } 9555 #pragma omp parallel for simd 9556 for (int i = 0; i < 10; ++i) { 9557 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9558 for (int i = 0; i < 10; ++i) 9559 ; 9560 } 9561 #pragma omp parallel for simd 9562 for (int i = 0; i < 10; ++i) { 9563 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9564 for (int i = 0; i < 10; ++i) 9565 ; 9566 } 9567 #pragma omp parallel for simd 9568 for (int i = 0; i < 10; ++i) { 9569 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9570 { 9571 bar(); 9572 } 9573 } 9574 #pragma omp parallel for simd 9575 for (int i = 0; i < 10; ++i) { 9576 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9577 { 9578 bar(); 9579 } 9580 } 9581 #pragma omp parallel for simd 9582 for (int i = 0; i < 10; ++i) { 9583 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9584 { 9585 bar(); 9586 } 9587 } 9588 9589 #pragma omp parallel for simd 9590 for (int i = 0; i < 10; ++i) { 9591 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9592 { 9593 bar(); 9594 } 9595 } 9596 9597 #pragma omp parallel for simd 9598 for (int i = 0; i < 10; ++i) { 9599 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9600 { 9601 bar(); 9602 } 9603 } 9604 9605 #pragma omp parallel for simd 9606 for (int i = 0; i < 10; ++i) { 9607 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9608 { 9609 #pragma omp single 9610 { 9611 bar(); 9612 } 9613 #pragma omp for 9614 for (int i = 0; i < 10; ++i) 9615 ; 9616 #pragma omp for simd 9617 for (int i = 0; i < 10; ++i) 9618 ; 9619 #pragma omp sections 9620 { 9621 bar(); 9622 } 9623 } 9624 } 9625 #pragma omp parallel for simd 9626 for (int i = 0; i < 10; ++i) { 9627 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9628 for (int i = 0; i < 10; ++i) 9629 ; 9630 } 9631 #pragma omp parallel for simd 9632 for (int i = 0; i < 10; ++i) { 9633 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 9634 for (int i = 0; i < 10; ++i) 9635 ; 9636 } 9637 #pragma omp parallel for simd 9638 for (int i = 0; i < 10; ++i) { 9639 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9640 { 9641 bar(); 9642 } 9643 } 9644 #pragma omp parallel for simd 9645 for (int i = 0; i < 10; ++i) { 9646 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9647 { 9648 bar(); 9649 } 9650 } 9651 #pragma omp parallel for simd 9652 for (int i = 0; i < 10; ++i) { 9653 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9654 bar(); 9655 } 9656 #pragma omp parallel for simd 9657 for (int i = 0; i < 10; ++i) { 9658 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9659 bar(); 9660 } 9661 #pragma omp parallel for simd 9662 for (int i = 0; i < 10; ++i) { 9663 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9664 bar(); 9665 } 9666 #pragma omp parallel for simd 9667 for (int i = 0; i < 10; ++i) { 9668 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9669 bar(); 9670 } 9671 #pragma omp parallel for simd 9672 for (int i = 0; i < 10; ++i) { 9673 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9674 bar(); 9675 } 9676 #pragma omp parallel for simd 9677 for (int i = 0; i < 10; ++i) { 9678 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9679 bar(); 9680 } 9681 #pragma omp parallel for simd 9682 for (int i = 0; i < 10; ++i) { 9683 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9684 ++a; 9685 } 9686 #pragma omp parallel for simd 9687 for (int i = 0; i < 10; ++i) { 9688 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9689 ++a; 9690 } 9691 #pragma omp parallel for simd 9692 for (int i = 0; i < 10; ++i) { 9693 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9694 ++a; 9695 } 9696 #pragma omp parallel for simd 9697 for (int i = 0; i < 10; ++i) { 9698 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9699 for (int i = 0; i < 10; ++i) 9700 ; 9701 } 9702 #pragma omp parallel for simd 9703 for (int i = 0; i < 10; ++i) { 9704 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9705 ++a; 9706 } 9707 #pragma omp parallel for simd 9708 for (int i = 0; i < 10; ++i) { 9709 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9710 ++a; 9711 } 9712 #pragma omp parallel for simd 9713 for (int i = 0; i < 10; ++i) { 9714 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9715 ++a; 9716 } 9717 #pragma omp parallel for simd 9718 for (int i = 0; i < 10; ++i) { 9719 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9720 for (int i = 0; i < 10; ++i) 9721 ++a; 9722 } 9723 #pragma omp parallel for simd 9724 for (int i = 0; i < 10; ++i) { 9725 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9726 for (int j = 0; j < 10; ++j) 9727 ; 9728 } 9729 #pragma omp parallel for simd 9730 for (int i = 0; i < 10; ++i) { 9731 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9732 a++; 9733 } 9734 #pragma omp parallel for simd 9735 for (int i = 0; i < 10; ++i) { 9736 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9737 for (int j = 0; j < 10; ++j) 9738 ; 9739 } 9740 #pragma omp parallel for simd 9741 for (int i = 0; i < 10; ++i) { 9742 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9743 for (int j = 0; j < 10; ++j) 9744 ; 9745 } 9746 #pragma omp parallel for simd 9747 for (int i = 0; i < 10; ++i) { 9748 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9749 for (int j = 0; j < 10; ++j) 9750 ; 9751 } 9752 #pragma omp parallel for simd 9753 for (int i = 0; i < 10; ++i) { 9754 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9755 for (int j = 0; j < 10; ++j) 9756 ; 9757 } 9758 #pragma omp parallel for simd 9759 for (int i = 0; i < 10; ++i) { 9760 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9761 for (int j = 0; j < 10; ++j) 9762 ; 9763 } 9764 #pragma omp parallel for simd 9765 for (int i = 0; i < 10; ++i) { 9766 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9767 for (int j = 0; j < 10; ++j) 9768 ; 9769 } 9770 #pragma omp parallel for simd 9771 for (int i = 0; i < 10; ++i) { 9772 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9773 for (int j = 0; j < 10; ++j) 9774 ; 9775 } 9776 #pragma omp parallel for simd 9777 for (int i = 0; i < 10; ++i) { 9778 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9779 for (int j = 0; j < 10; ++j) 9780 ; 9781 } 9782 #pragma omp parallel for simd 9783 for (int i = 0; i < 10; ++i) { 9784 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9785 a++; 9786 } 9787 9788 // PARALLEL SECTIONS DIRECTIVE 9789 #pragma omp parallel sections 9790 { 9791 #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?}} 9792 for (int i = 0; i < 10; ++i) 9793 ; 9794 } 9795 #pragma omp parallel sections 9796 { 9797 #pragma omp simd 9798 for (int i = 0; i < 10; ++i) 9799 ; 9800 } 9801 #pragma omp parallel sections 9802 { 9803 #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?}} 9804 for (int i = 0; i < 10; ++i) 9805 ; 9806 } 9807 #pragma omp parallel sections 9808 { 9809 #pragma omp parallel 9810 for (int i = 0; i < 10; ++i) 9811 ; 9812 } 9813 #pragma omp parallel sections 9814 { 9815 #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?}} 9816 { 9817 bar(); 9818 } 9819 } 9820 #pragma omp parallel sections 9821 { 9822 #pragma omp section 9823 { 9824 bar(); 9825 } 9826 } 9827 #pragma omp parallel sections 9828 { 9829 #pragma omp section 9830 { 9831 #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?}} 9832 bar(); 9833 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 9834 bar(); 9835 #pragma omp critical 9836 bar(); 9837 } 9838 } 9839 #pragma omp parallel sections 9840 { 9841 #pragma omp parallel 9842 { 9843 #pragma omp single // OK 9844 { 9845 bar(); 9846 } 9847 #pragma omp master // OK 9848 { 9849 bar(); 9850 } 9851 #pragma omp critical // OK 9852 { 9853 bar(); 9854 } 9855 #pragma omp for // OK 9856 for (int i = 0; i < 10; ++i) 9857 ; 9858 #pragma omp for simd // OK 9859 for (int i = 0; i < 10; ++i) 9860 ; 9861 #pragma omp sections // OK 9862 { 9863 bar(); 9864 } 9865 } 9866 } 9867 #pragma omp parallel sections 9868 { 9869 #pragma omp parallel for 9870 for (int i = 0; i < 10; ++i) 9871 ; 9872 } 9873 #pragma omp parallel sections 9874 { 9875 #pragma omp parallel for simd 9876 for (int i = 0; i < 10; ++i) 9877 ; 9878 } 9879 #pragma omp parallel sections 9880 { 9881 #pragma omp parallel sections 9882 { 9883 bar(); 9884 } 9885 } 9886 #pragma omp parallel sections 9887 { 9888 #pragma omp task 9889 { 9890 bar(); 9891 } 9892 } 9893 #pragma omp parallel sections 9894 { 9895 #pragma omp taskyield 9896 } 9897 #pragma omp parallel sections 9898 { 9899 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 9900 } 9901 #pragma omp parallel sections 9902 { 9903 #pragma omp taskwait 9904 } 9905 #pragma omp parallel sections 9906 { 9907 #pragma omp flush 9908 } 9909 #pragma omp parallel sections 9910 { 9911 #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?}} 9912 bar(); 9913 } 9914 #pragma omp parallel sections 9915 { 9916 #pragma omp atomic 9917 ++a; 9918 } 9919 #pragma omp parallel sections 9920 { 9921 #pragma omp target 9922 ++a; 9923 } 9924 #pragma omp parallel sections 9925 { 9926 #pragma omp target parallel 9927 ++a; 9928 } 9929 #pragma omp parallel sections 9930 { 9931 #pragma omp target parallel for 9932 for (int i = 0; i < 10; ++i) 9933 ; 9934 } 9935 #pragma omp parallel sections 9936 { 9937 #pragma omp target enter data map(to: a) 9938 } 9939 #pragma omp parallel sections 9940 { 9941 #pragma omp target exit data map(from: a) 9942 } 9943 #pragma omp parallel sections 9944 { 9945 #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?}} 9946 ++a; 9947 } 9948 #pragma omp parallel sections 9949 { 9950 #pragma omp taskloop 9951 for (int i = 0; i < 10; ++i) 9952 ++a; 9953 } 9954 #pragma omp parallel sections 9955 { 9956 #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?}} 9957 for (int i = 0; i < 10; ++i) 9958 ; 9959 } 9960 #pragma omp parallel sections 9961 { 9962 #pragma omp target update to(a) 9963 } 9964 #pragma omp parallel sections 9965 { 9966 #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?}} 9967 for (int i = 0; i < 10; ++i) 9968 ; 9969 } 9970 #pragma omp parallel sections 9971 { 9972 #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?}} 9973 for (int i = 0; i < 10; ++i) 9974 ; 9975 } 9976 #pragma omp parallel sections 9977 { 9978 #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?}} 9979 for (int i = 0; i < 10; ++i) 9980 ; 9981 } 9982 #pragma omp parallel sections 9983 { 9984 #pragma omp target simd // OK 9985 for (int i = 0; i < 10; ++i) 9986 ; 9987 } 9988 #pragma omp parallel sections 9989 { 9990 #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?}} 9991 for (int i = 0; i < 10; ++i) 9992 ; 9993 } 9994 #pragma omp parallel sections 9995 { 9996 #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?}} 9997 for (int i = 0; i < 10; ++i) 9998 ; 9999 } 10000 #pragma omp parallel sections 10001 { 10002 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 10003 for (int i = 0; i < 10; ++i) 10004 ; 10005 } 10006 #pragma omp parallel sections 10007 { 10008 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel sections' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 10009 for (int i = 0; i < 10; ++i) 10010 ; 10011 } 10012 #pragma omp parallel sections 10013 { 10014 #pragma omp target teams // OK 10015 a++; 10016 } 10017 10018 // TASK DIRECTIVE 10019 #pragma omp task 10020 #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?}} 10021 for (int i = 0; i < 10; ++i) 10022 ; 10023 #pragma omp task 10024 #pragma omp simd 10025 for (int i = 0; i < 10; ++i) 10026 ; 10027 #pragma omp task 10028 #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?}} 10029 for (int i = 0; i < 10; ++i) 10030 ; 10031 #pragma omp task 10032 #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?}} 10033 { 10034 bar(); 10035 } 10036 #pragma omp task 10037 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 10038 { 10039 bar(); 10040 } 10041 #pragma omp task 10042 #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?}} 10043 bar(); 10044 #pragma omp task 10045 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 10046 bar(); 10047 #pragma omp task 10048 #pragma omp critical 10049 bar(); 10050 #pragma omp task 10051 #pragma omp parallel for 10052 for (int i = 0; i < 10; ++i) 10053 ; 10054 #pragma omp task 10055 #pragma omp parallel for simd 10056 for (int i = 0; i < 10; ++i) 10057 ; 10058 #pragma omp task 10059 #pragma omp parallel sections 10060 { 10061 bar(); 10062 } 10063 #pragma omp task 10064 #pragma omp task 10065 { 10066 bar(); 10067 } 10068 #pragma omp task 10069 { 10070 #pragma omp taskyield 10071 bar(); 10072 } 10073 #pragma omp task 10074 { 10075 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 10076 bar(); 10077 } 10078 #pragma omp task 10079 { 10080 #pragma omp taskwait 10081 bar(); 10082 } 10083 #pragma omp task 10084 { 10085 #pragma omp flush 10086 bar(); 10087 } 10088 #pragma omp task 10089 { 10090 #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?}} 10091 bar(); 10092 } 10093 #pragma omp task 10094 { 10095 #pragma omp atomic 10096 ++a; 10097 } 10098 #pragma omp task 10099 { 10100 #pragma omp target 10101 ++a; 10102 } 10103 #pragma omp task 10104 { 10105 #pragma omp target parallel 10106 ++a; 10107 } 10108 #pragma omp task 10109 #pragma omp target parallel for 10110 for (int i = 0; i < 10; ++i) 10111 ; 10112 #pragma omp task 10113 { 10114 #pragma omp target enter data map(to: a) 10115 ++a; 10116 } 10117 #pragma omp task 10118 { 10119 #pragma omp target exit data map(from: a) 10120 ++a; 10121 } 10122 #pragma omp task 10123 { 10124 #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?}} 10125 ++a; 10126 } 10127 #pragma omp task 10128 { 10129 #pragma omp taskloop 10130 for (int i = 0; i < 10; ++i) 10131 ++a; 10132 } 10133 #pragma omp task 10134 { 10135 #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?}} 10136 for (int i = 0; i < 10; ++i) 10137 ; 10138 } 10139 #pragma omp task 10140 { 10141 #pragma omp target update to(a) 10142 a++; 10143 } 10144 #pragma omp task 10145 { 10146 #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?}} 10147 for (int i = 0; i < 10; ++i) 10148 ; 10149 } 10150 #pragma omp task 10151 { 10152 #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?}} 10153 for (int i = 0; i < 10; ++i) 10154 ; 10155 } 10156 #pragma omp task 10157 { 10158 #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?}} 10159 for (int i = 0; i < 10; ++i) 10160 ; 10161 } 10162 #pragma omp task 10163 { 10164 #pragma omp target simd // OK 10165 for (int i = 0; i < 10; ++i) 10166 ; 10167 } 10168 #pragma omp task 10169 { 10170 #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?}} 10171 for (int i = 0; i < 10; ++i) 10172 ; 10173 } 10174 #pragma omp task 10175 { 10176 #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?}} 10177 for (int i = 0; i < 10; ++i) 10178 ; 10179 } 10180 #pragma omp task 10181 { 10182 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 10183 for (int i = 0; i < 10; ++i) 10184 ; 10185 } 10186 #pragma omp task 10187 { 10188 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'task' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 10189 for (int i = 0; i < 10; ++i) 10190 ; 10191 } 10192 #pragma omp task 10193 { 10194 #pragma omp target teams // OK 10195 a++; 10196 } 10197 10198 // ATOMIC DIRECTIVE 10199 #pragma omp atomic 10200 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10201 // expected-note@+1 {{expected an expression statement}} 10202 { 10203 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10204 for (int i = 0; i < 10; ++i) 10205 ; 10206 } 10207 #pragma omp atomic 10208 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10209 // expected-note@+1 {{expected an expression statement}} 10210 { 10211 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10212 for (int i = 0; i < 10; ++i) 10213 ; 10214 } 10215 #pragma omp atomic 10216 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10217 // expected-note@+1 {{expected an expression statement}} 10218 { 10219 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10220 for (int i = 0; i < 10; ++i) 10221 ; 10222 } 10223 #pragma omp atomic 10224 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10225 // expected-note@+1 {{expected an expression statement}} 10226 { 10227 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10228 for (int i = 0; i < 10; ++i) 10229 ; 10230 } 10231 #pragma omp atomic 10232 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10233 // expected-note@+1 {{expected an expression statement}} 10234 { 10235 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10236 { 10237 bar(); 10238 } 10239 } 10240 #pragma omp atomic 10241 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10242 // expected-note@+1 {{expected an expression statement}} 10243 { 10244 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10245 { 10246 bar(); 10247 } 10248 } 10249 #pragma omp atomic 10250 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10251 // expected-note@+1 {{expected an expression statement}} 10252 { 10253 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10254 { 10255 bar(); 10256 } 10257 } 10258 #pragma omp atomic 10259 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10260 // expected-note@+1 {{expected an expression statement}} 10261 { 10262 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10263 { 10264 bar(); 10265 } 10266 } 10267 #pragma omp atomic 10268 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10269 // expected-note@+1 {{expected an expression statement}} 10270 { 10271 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10272 { 10273 bar(); 10274 } 10275 } 10276 #pragma omp atomic 10277 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10278 // expected-note@+1 {{expected an expression statement}} 10279 { 10280 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10281 for (int i = 0; i < 10; ++i) 10282 ; 10283 } 10284 #pragma omp atomic 10285 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10286 // expected-note@+1 {{expected an expression statement}} 10287 { 10288 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10289 for (int i = 0; i < 10; ++i) 10290 ; 10291 } 10292 #pragma omp atomic 10293 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10294 // expected-note@+1 {{expected an expression statement}} 10295 { 10296 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10297 { 10298 bar(); 10299 } 10300 } 10301 #pragma omp atomic 10302 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10303 // expected-note@+1 {{expected an expression statement}} 10304 { 10305 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10306 { 10307 bar(); 10308 } 10309 } 10310 #pragma omp atomic 10311 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10312 // expected-note@+1 {{expected an expression statement}} 10313 { 10314 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10315 bar(); 10316 } 10317 #pragma omp atomic 10318 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10319 // expected-note@+1 {{expected an expression statement}} 10320 { 10321 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10322 bar(); 10323 } 10324 #pragma omp atomic 10325 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10326 // expected-note@+1 {{expected an expression statement}} 10327 { 10328 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10329 bar(); 10330 } 10331 #pragma omp atomic 10332 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10333 // expected-note@+1 {{expected an expression statement}} 10334 { 10335 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10336 bar(); 10337 } 10338 #pragma omp atomic 10339 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10340 // expected-note@+1 {{expected an expression statement}} 10341 { 10342 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10343 bar(); 10344 } 10345 #pragma omp atomic 10346 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10347 // expected-note@+1 {{expected an expression statement}} 10348 { 10349 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10350 ++a; 10351 } 10352 #pragma omp atomic 10353 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10354 // expected-note@+1 {{expected an expression statement}} 10355 { 10356 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10357 ++a; 10358 } 10359 #pragma omp atomic 10360 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10361 // expected-note@+1 {{expected an expression statement}} 10362 { 10363 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10364 ++a; 10365 } 10366 #pragma omp atomic 10367 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10368 // expected-note@+1 {{expected an expression statement}} 10369 { 10370 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10371 for (int i = 0; i < 10; ++i) 10372 ; 10373 } 10374 #pragma omp atomic 10375 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10376 // expected-note@+1 {{expected an expression statement}} 10377 { 10378 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10379 ++a; 10380 } 10381 #pragma omp atomic 10382 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10383 // expected-note@+1 {{expected an expression statement}} 10384 { 10385 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10386 ++a; 10387 } 10388 #pragma omp atomic 10389 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10390 // expected-note@+1 {{expected an expression statement}} 10391 { 10392 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10393 ++a; 10394 } 10395 #pragma omp atomic 10396 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10397 // expected-note@+1 {{expected an expression statement}} 10398 { 10399 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10400 for (int i = 0; i < 10; ++i) 10401 ++a; 10402 } 10403 #pragma omp atomic 10404 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10405 // expected-note@+1 {{expected an expression statement}} 10406 { 10407 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10408 for (int i = 0; i < 10; ++i) 10409 ; 10410 } 10411 #pragma omp atomic 10412 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10413 // expected-note@+1 {{expected an expression statement}} 10414 { 10415 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10416 } 10417 #pragma omp atomic 10418 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10419 // expected-note@+1 {{expected an expression statement}} 10420 { 10421 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10422 for (int i = 0; i < 10; ++i) 10423 ; 10424 } 10425 #pragma omp atomic 10426 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10427 // expected-note@+1 {{expected an expression statement}} 10428 { 10429 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10430 for (int i = 0; i < 10; ++i) 10431 ; 10432 } 10433 #pragma omp atomic 10434 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10435 // expected-note@+1 {{expected an expression statement}} 10436 { 10437 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10438 for (int i = 0; i < 10; ++i) 10439 ; 10440 } 10441 #pragma omp atomic 10442 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10443 // expected-note@+1 {{expected an expression statement}} 10444 { 10445 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10446 for (int i = 0; i < 10; ++i) 10447 ; 10448 } 10449 #pragma omp atomic 10450 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10451 // expected-note@+1 {{expected an expression statement}} 10452 { 10453 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10454 for (int i = 0; i < 10; ++i) 10455 ; 10456 } 10457 #pragma omp atomic 10458 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10459 // expected-note@+1 {{expected an expression statement}} 10460 { 10461 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10462 for (int i = 0; i < 10; ++i) 10463 ; 10464 } 10465 #pragma omp atomic 10466 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10467 // expected-note@+1 {{expected an expression statement}} 10468 { 10469 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10470 for (int i = 0; i < 10; ++i) 10471 ; 10472 } 10473 #pragma omp atomic 10474 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10475 // expected-note@+1 {{expected an expression statement}} 10476 { 10477 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10478 for (int i = 0; i < 10; ++i) 10479 ; 10480 } 10481 #pragma omp atomic 10482 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10483 // expected-note@+1 {{expected an expression statement}} 10484 { 10485 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10486 a++; 10487 } 10488 10489 // TARGET DIRECTIVE 10490 #pragma omp target 10491 #pragma omp parallel 10492 bar(); 10493 #pragma omp target 10494 #pragma omp for 10495 for (int i = 0; i < 10; ++i) 10496 ; 10497 #pragma omp target 10498 #pragma omp simd 10499 for (int i = 0; i < 10; ++i) 10500 ; 10501 #pragma omp target 10502 #pragma omp for simd 10503 for (int i = 0; i < 10; ++i) 10504 ; 10505 #pragma omp target 10506 #pragma omp sections 10507 { 10508 bar(); 10509 } 10510 #pragma omp target 10511 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 10512 { 10513 bar(); 10514 } 10515 #pragma omp target 10516 #pragma omp single 10517 bar(); 10518 10519 #pragma omp target 10520 #pragma omp master 10521 { 10522 bar(); 10523 } 10524 #pragma omp target 10525 #pragma omp critical 10526 { 10527 bar(); 10528 } 10529 #pragma omp target 10530 #pragma omp parallel for 10531 for (int i = 0; i < 10; ++i) 10532 ; 10533 #pragma omp target 10534 #pragma omp parallel for simd 10535 for (int i = 0; i < 10; ++i) 10536 ; 10537 #pragma omp target 10538 #pragma omp parallel sections 10539 { 10540 bar(); 10541 } 10542 #pragma omp target 10543 #pragma omp task 10544 { 10545 bar(); 10546 } 10547 #pragma omp target 10548 { 10549 #pragma omp taskyield 10550 bar(); 10551 } 10552 #pragma omp target 10553 { 10554 #pragma omp barrier 10555 bar(); 10556 } 10557 #pragma omp target 10558 { 10559 #pragma omp taskwait 10560 bar(); 10561 } 10562 #pragma omp target 10563 { 10564 #pragma omp flush 10565 bar(); 10566 } 10567 #pragma omp target 10568 { 10569 #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?}} 10570 bar(); 10571 } 10572 #pragma omp target 10573 { 10574 #pragma omp atomic 10575 ++a; 10576 } 10577 #pragma omp target 10578 { 10579 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 10580 ++a; 10581 } 10582 #pragma omp target 10583 { 10584 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 10585 ++a; 10586 } 10587 #pragma omp target 10588 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 10589 for (int i = 0; i < 10; ++i) 10590 ; 10591 #pragma omp target 10592 { 10593 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 10594 } 10595 #pragma omp target 10596 { 10597 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 10598 } 10599 #pragma omp target 10600 { 10601 #pragma omp teams 10602 ++a; 10603 } 10604 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 10605 { 10606 ++a; // expected-note {{statement outside teams construct here}} 10607 #pragma omp teams // expected-note {{nested teams construct here}} 10608 ++a; 10609 } 10610 #pragma omp target 10611 { 10612 #pragma omp taskloop 10613 for (int i = 0; i < 10; ++i) 10614 ++a; 10615 } 10616 #pragma omp target 10617 { 10618 #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?}} 10619 for (int i = 0; i < 10; ++i) 10620 ; 10621 } 10622 #pragma omp atomic 10623 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10624 // expected-note@+1 {{expected an expression statement}} 10625 { 10626 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10627 a++; 10628 } 10629 #pragma omp target 10630 { 10631 #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?}} 10632 for (int i = 0; i < 10; ++i) 10633 ; 10634 } 10635 #pragma omp target 10636 { 10637 #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?}} 10638 for (int i = 0; i < 10; ++i) 10639 ; 10640 } 10641 #pragma omp target 10642 { 10643 #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?}} 10644 for (int i = 0; i < 10; ++i) 10645 ; 10646 } 10647 #pragma omp target 10648 { 10649 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 10650 for (int i = 0; i < 10; ++i) 10651 ; 10652 } 10653 #pragma omp target 10654 { 10655 #pragma omp teams distribute // OK 10656 for (int i = 0; i < 10; ++i) 10657 ; 10658 } 10659 #pragma omp target 10660 { 10661 #pragma omp teams distribute simd // OK 10662 for (int i = 0; i < 10; ++i) 10663 ; 10664 } 10665 #pragma omp target 10666 { 10667 #pragma omp teams distribute parallel for simd // OK 10668 for (int i = 0; i < 10; ++i) 10669 ; 10670 } 10671 #pragma omp target 10672 { 10673 #pragma omp teams distribute parallel for // OK 10674 for (int i = 0; i < 10; ++i) 10675 ; 10676 } 10677 #pragma omp target 10678 { 10679 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 10680 a++; 10681 } 10682 10683 // TARGET PARALLEL DIRECTIVE 10684 #pragma omp target parallel 10685 #pragma omp parallel 10686 bar(); 10687 #pragma omp target parallel 10688 #pragma omp for 10689 for (int i = 0; i < 10; ++i) 10690 ; 10691 #pragma omp target parallel 10692 #pragma omp simd 10693 for (int i = 0; i < 10; ++i) 10694 ; 10695 #pragma omp target parallel 10696 #pragma omp for simd 10697 for (int i = 0; i < 10; ++i) 10698 ; 10699 #pragma omp target parallel 10700 #pragma omp sections 10701 { 10702 bar(); 10703 } 10704 #pragma omp target parallel 10705 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 10706 { 10707 bar(); 10708 } 10709 #pragma omp target parallel 10710 #pragma omp single 10711 bar(); 10712 10713 #pragma omp target parallel 10714 #pragma omp master 10715 { 10716 bar(); 10717 } 10718 #pragma omp target parallel 10719 #pragma omp critical 10720 { 10721 bar(); 10722 } 10723 #pragma omp target parallel 10724 #pragma omp parallel for 10725 for (int i = 0; i < 10; ++i) 10726 ; 10727 #pragma omp target parallel 10728 #pragma omp parallel for simd 10729 for (int i = 0; i < 10; ++i) 10730 ; 10731 #pragma omp target parallel 10732 #pragma omp parallel sections 10733 { 10734 bar(); 10735 } 10736 #pragma omp target parallel 10737 #pragma omp task 10738 { 10739 bar(); 10740 } 10741 #pragma omp target parallel 10742 { 10743 #pragma omp taskyield 10744 bar(); 10745 } 10746 #pragma omp target parallel 10747 { 10748 #pragma omp barrier 10749 bar(); 10750 } 10751 #pragma omp target parallel 10752 { 10753 #pragma omp taskwait 10754 bar(); 10755 } 10756 #pragma omp target parallel 10757 { 10758 #pragma omp flush 10759 bar(); 10760 } 10761 #pragma omp target parallel 10762 { 10763 #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?}} 10764 bar(); 10765 } 10766 #pragma omp target parallel 10767 { 10768 #pragma omp atomic 10769 ++a; 10770 } 10771 #pragma omp target parallel 10772 { 10773 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 10774 ++a; 10775 } 10776 #pragma omp target parallel 10777 { 10778 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 10779 ++a; 10780 } 10781 #pragma omp target parallel 10782 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 10783 for (int i = 0; i < 10; ++i) 10784 ; 10785 #pragma omp target parallel 10786 { 10787 #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?}} 10788 ++a; 10789 } 10790 #pragma omp target parallel 10791 { 10792 ++a; 10793 #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?}} 10794 ++a; 10795 } 10796 #pragma omp target parallel 10797 { 10798 #pragma omp taskloop 10799 for (int i = 0; i < 10; ++i) 10800 ++a; 10801 } 10802 #pragma omp target parallel 10803 { 10804 #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?}} 10805 for (int i = 0; i < 10; ++i) 10806 ; 10807 } 10808 #pragma omp target parallel 10809 { 10810 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 10811 } 10812 #pragma omp target parallel 10813 { 10814 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 10815 } 10816 #pragma omp target parallel 10817 { 10818 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 10819 } 10820 #pragma omp target parallel 10821 { 10822 #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?}} 10823 for (int i = 0; i < 10; ++i) 10824 ; 10825 } 10826 #pragma omp target parallel 10827 { 10828 #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?}} 10829 for (int i = 0; i < 10; ++i) 10830 ; 10831 } 10832 #pragma omp target parallel 10833 { 10834 #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?}} 10835 for (int i = 0; i < 10; ++i) 10836 ; 10837 } 10838 #pragma omp target parallel 10839 { 10840 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 10841 for (int i = 0; i < 10; ++i) 10842 ; 10843 } 10844 #pragma omp target parallel 10845 { 10846 #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?}} 10847 for (int i = 0; i < 10; ++i) 10848 ; 10849 } 10850 #pragma omp target parallel 10851 { 10852 #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?}} 10853 for (int i = 0; i < 10; ++i) 10854 ; 10855 } 10856 #pragma omp target parallel 10857 { 10858 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 10859 for (int i = 0; i < 10; ++i) 10860 ; 10861 } 10862 #pragma omp target parallel 10863 { 10864 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 10865 for (int i = 0; i < 10; ++i) 10866 ; 10867 } 10868 #pragma omp target parallel 10869 { 10870 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}} 10871 a++; 10872 } 10873 10874 // TARGET PARALLEL FOR DIRECTIVE 10875 #pragma omp target parallel for 10876 for (int i = 0; i < 10; ++i) { 10877 #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?}} 10878 for (int i = 0; i < 10; ++i) 10879 ; 10880 } 10881 #pragma omp target parallel for 10882 for (int i = 0; i < 10; ++i) { 10883 #pragma omp simd 10884 for (int i = 0; i < 10; ++i) 10885 ; 10886 } 10887 #pragma omp target parallel for 10888 for (int i = 0; i < 10; ++i) { 10889 #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?}} 10890 for (int i = 0; i < 10; ++i) 10891 ; 10892 } 10893 #pragma omp target parallel for 10894 for (int i = 0; i < 10; ++i) { 10895 #pragma omp parallel 10896 for (int i = 0; i < 10; ++i) 10897 ; 10898 } 10899 #pragma omp target parallel for 10900 for (int i = 0; i < 10; ++i) { 10901 #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?}} 10902 { 10903 bar(); 10904 } 10905 } 10906 #pragma omp target parallel for 10907 for (int i = 0; i < 10; ++i) { 10908 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 10909 { 10910 bar(); 10911 } 10912 } 10913 #pragma omp target parallel for 10914 for (int i = 0; i < 10; ++i) { 10915 #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?}} 10916 { 10917 bar(); 10918 } 10919 } 10920 10921 #pragma omp target parallel for 10922 for (int i = 0; i < 10; ++i) { 10923 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 10924 { 10925 bar(); 10926 } 10927 } 10928 10929 #pragma omp target parallel for 10930 for (int i = 0; i < 10; ++i) { 10931 #pragma omp critical 10932 { 10933 bar(); 10934 } 10935 } 10936 10937 #pragma omp target parallel for 10938 for (int i = 0; i < 10; ++i) { 10939 #pragma omp parallel 10940 { 10941 #pragma omp single // OK 10942 { 10943 bar(); 10944 } 10945 #pragma omp for // OK 10946 for (int i = 0; i < 10; ++i) 10947 ; 10948 #pragma omp for simd // OK 10949 for (int i = 0; i < 10; ++i) 10950 ; 10951 #pragma omp sections // OK 10952 { 10953 bar(); 10954 } 10955 } 10956 } 10957 #pragma omp target parallel for 10958 for (int i = 0; i < 10; ++i) { 10959 #pragma omp parallel for 10960 for (int i = 0; i < 10; ++i) 10961 ; 10962 } 10963 #pragma omp target parallel for 10964 for (int i = 0; i < 10; ++i) { 10965 #pragma omp parallel for simd 10966 for (int i = 0; i < 10; ++i) 10967 ; 10968 } 10969 #pragma omp target parallel for 10970 for (int i = 0; i < 10; ++i) { 10971 #pragma omp parallel sections 10972 { 10973 bar(); 10974 } 10975 } 10976 #pragma omp target parallel for 10977 for (int i = 0; i < 10; ++i) { 10978 #pragma omp task 10979 { 10980 bar(); 10981 } 10982 } 10983 #pragma omp target parallel for 10984 for (int i = 0; i < 10; ++i) { 10985 #pragma omp taskyield 10986 bar(); 10987 } 10988 #pragma omp target parallel for 10989 for (int i = 0; i < 10; ++i) { 10990 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 10991 bar(); 10992 } 10993 #pragma omp target parallel for 10994 for (int i = 0; i < 10; ++i) { 10995 #pragma omp taskwait 10996 bar(); 10997 } 10998 #pragma omp target parallel for 10999 for (int i = 0; i < 10; ++i) { 11000 #pragma omp flush 11001 bar(); 11002 } 11003 #pragma omp target parallel for 11004 for (int i = 0; i < 10; ++i) { 11005 #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?}} 11006 bar(); 11007 } 11008 #pragma omp target parallel for ordered 11009 for (int i = 0; i < 10; ++i) { 11010 #pragma omp ordered // OK 11011 bar(); 11012 } 11013 #pragma omp target parallel for 11014 for (int i = 0; i < 10; ++i) { 11015 #pragma omp atomic 11016 ++a; 11017 } 11018 #pragma omp target parallel for 11019 for (int i = 0; i < 10; ++i) { 11020 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 11021 ++a; 11022 } 11023 #pragma omp target parallel for 11024 for (int i = 0; i < 10; ++i) { 11025 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 11026 ++a; 11027 } 11028 #pragma omp target parallel for 11029 for (int i = 0; i < 10; ++i) { 11030 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 11031 for (int i = 0; i < 10; ++i) 11032 ; 11033 } 11034 #pragma omp target parallel for 11035 for (int i = 0; i < 10; ++i) { 11036 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 11037 ++a; 11038 } 11039 #pragma omp target parallel for 11040 for (int i = 0; i < 10; ++i) { 11041 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 11042 ++a; 11043 } 11044 #pragma omp target parallel for 11045 for (int i = 0; i < 10; ++i) { 11046 #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?}} 11047 ++a; 11048 } 11049 #pragma omp target parallel for 11050 for (int i = 0; i < 10; ++i) { 11051 #pragma omp taskloop 11052 for (int i = 0; i < 10; ++i) 11053 ++a; 11054 } 11055 #pragma omp target parallel for 11056 for (int i = 0; i < 10; ++i) { 11057 #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?}} 11058 for (int j = 0; j < 10; ++j) 11059 ; 11060 } 11061 #pragma omp target parallel for 11062 for (int i = 0; i < 10; ++i) { 11063 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 11064 a++; 11065 } 11066 #pragma omp target parallel for 11067 for (int i = 0; i < 10; ++i) { 11068 #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?}} 11069 for (int j = 0; j < 10; ++j) 11070 ; 11071 } 11072 #pragma omp target parallel for 11073 for (int i = 0; i < 10; ++i) { 11074 #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?}} 11075 for (int j = 0; j < 10; ++j) 11076 ; 11077 } 11078 #pragma omp target parallel for 11079 for (int i = 0; i < 10; ++i) { 11080 #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?}} 11081 for (int j = 0; j < 10; ++j) 11082 ; 11083 } 11084 #pragma omp target parallel for 11085 for (int i = 0; i < 10; ++i) { 11086 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 11087 for (int j = 0; j < 10; ++j) 11088 ; 11089 } 11090 #pragma omp target parallel for 11091 for (int i = 0; i < 10; ++i) { 11092 #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?}} 11093 for (int j = 0; j < 10; ++j) 11094 ; 11095 } 11096 #pragma omp target parallel for 11097 for (int i = 0; i < 10; ++i) { 11098 #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?}} 11099 for (int j = 0; j < 10; ++j) 11100 ; 11101 } 11102 #pragma omp target parallel for 11103 for (int i = 0; i < 10; ++i) { 11104 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11105 for (int j = 0; j < 10; ++j) 11106 ; 11107 } 11108 #pragma omp target parallel for 11109 for (int i = 0; i < 10; ++i) { 11110 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11111 for (int j = 0; j < 10; ++j) 11112 ; 11113 } 11114 #pragma omp target parallel for 11115 for (int i = 0; i < 10; ++i) { 11116 #pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}} 11117 a++; 11118 } 11119 11120 // TEAMS DIRECTIVE 11121 #pragma omp target 11122 #pragma omp teams 11123 #pragma omp parallel 11124 bar(); 11125 #pragma omp target 11126 #pragma omp teams 11127 #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?}} 11128 for (int i = 0; i < 10; ++i) 11129 ; 11130 #pragma omp target 11131 #pragma omp teams 11132 #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?}} 11133 for (int i = 0; i < 10; ++i) 11134 ; 11135 #pragma omp target 11136 #pragma omp teams 11137 #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?}} 11138 for (int i = 0; i < 10; ++i) 11139 ; 11140 #pragma omp target 11141 #pragma omp teams 11142 #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?}} 11143 { 11144 bar(); 11145 } 11146 #pragma omp target 11147 #pragma omp teams 11148 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 11149 { 11150 bar(); 11151 } 11152 #pragma omp target 11153 #pragma omp teams 11154 #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?}} 11155 bar(); 11156 11157 #pragma omp target 11158 #pragma omp teams 11159 #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?}} 11160 { 11161 bar(); 11162 } 11163 #pragma omp target 11164 #pragma omp teams 11165 #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?}} 11166 { 11167 bar(); 11168 } 11169 #pragma omp target 11170 #pragma omp teams 11171 #pragma omp parallel for 11172 for (int i = 0; i < 10; ++i) 11173 ; 11174 #pragma omp target 11175 #pragma omp teams 11176 #pragma omp parallel for simd 11177 for (int i = 0; i < 10; ++i) 11178 ; 11179 #pragma omp target 11180 #pragma omp teams 11181 #pragma omp parallel sections 11182 { 11183 bar(); 11184 } 11185 #pragma omp target 11186 #pragma omp teams 11187 #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?}} 11188 { 11189 bar(); 11190 } 11191 #pragma omp target 11192 #pragma omp teams 11193 { 11194 #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?}} 11195 bar(); 11196 } 11197 #pragma omp target 11198 #pragma omp teams 11199 { 11200 #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?}} 11201 bar(); 11202 } 11203 #pragma omp target 11204 #pragma omp teams 11205 { 11206 #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?}} 11207 bar(); 11208 } 11209 #pragma omp target 11210 #pragma omp teams 11211 { 11212 #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?}} 11213 bar(); 11214 } 11215 #pragma omp target 11216 #pragma omp teams 11217 { 11218 #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?}} 11219 bar(); 11220 } 11221 #pragma omp target 11222 #pragma omp teams 11223 { 11224 #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?}} 11225 ++a; 11226 } 11227 #pragma omp target 11228 #pragma omp teams 11229 { 11230 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 11231 ++a; 11232 } 11233 #pragma omp target 11234 #pragma omp teams 11235 { 11236 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 11237 ++a; 11238 } 11239 #pragma omp target 11240 #pragma omp teams 11241 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11242 for (int i = 0; i < 10; ++i) 11243 ; 11244 #pragma omp target 11245 #pragma omp teams 11246 { 11247 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 11248 } 11249 #pragma omp target 11250 #pragma omp teams 11251 { 11252 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 11253 } 11254 #pragma omp target 11255 #pragma omp teams 11256 { 11257 #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?}} 11258 ++a; 11259 } 11260 #pragma omp target 11261 #pragma omp teams 11262 { 11263 #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?}} 11264 for (int i = 0; i < 10; ++i) 11265 ++a; 11266 } 11267 #pragma omp target 11268 #pragma omp teams 11269 #pragma omp distribute 11270 for (int i = 0; i < 10; ++i) 11271 ; 11272 #pragma omp target 11273 #pragma omp teams 11274 #pragma omp distribute 11275 for (int i = 0; i < 10; ++i) 11276 ; 11277 #pragma omp distribute 11278 for (int j = 0; j < 10; ++j) 11279 ; 11280 #pragma omp target 11281 #pragma omp teams 11282 { 11283 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 11284 ++a; 11285 } 11286 #pragma omp target 11287 #pragma omp teams 11288 #pragma omp distribute parallel for 11289 for (int i = 0; i < 10; ++i) 11290 ; 11291 #pragma omp target 11292 #pragma omp teams 11293 { 11294 #pragma omp distribute parallel for 11295 for (int i = 0; i < 10; ++i) 11296 ; 11297 #pragma omp distribute parallel for 11298 for (int j = 0; j < 10; ++j) 11299 ; 11300 } 11301 #pragma omp target 11302 #pragma omp teams 11303 { 11304 #pragma omp distribute parallel for simd 11305 for (int i = 0; i < 10; ++i) 11306 ; 11307 #pragma omp distribute parallel for simd 11308 for (int j = 0; j < 10; ++j) 11309 ; 11310 } 11311 #pragma omp target 11312 #pragma omp teams 11313 { 11314 #pragma omp distribute simd 11315 for (int i = 0; i < 10; ++i) 11316 ; 11317 #pragma omp distribute simd 11318 for (int j = 0; j < 10; ++j) 11319 ; 11320 } 11321 #pragma omp target 11322 #pragma omp teams 11323 { 11324 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 11325 for (int i = 0; i < 10; ++i) 11326 ; 11327 } 11328 #pragma omp target 11329 #pragma omp teams 11330 { 11331 #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?}} 11332 for (int i = 0; i < 10; ++i) 11333 ; 11334 } 11335 #pragma omp target 11336 #pragma omp teams 11337 { 11338 #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?}} 11339 for (int i = 0; i < 10; ++i) 11340 ; 11341 } 11342 #pragma omp target 11343 #pragma omp teams 11344 { 11345 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11346 for (int i = 0; i < 10; ++i) 11347 ; 11348 } 11349 #pragma omp target 11350 #pragma omp teams 11351 { 11352 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11353 for (int i = 0; i < 10; ++i) 11354 ; 11355 } 11356 #pragma omp target 11357 #pragma omp teams 11358 { 11359 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 11360 a++; 11361 } 11362 11363 // TASKLOOP DIRECTIVE 11364 #pragma omp taskloop 11365 for (int i = 0; i < 10; ++i) { 11366 #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?}} 11367 for (int i = 0; i < 10; ++i) 11368 ; 11369 } 11370 #pragma omp taskloop 11371 for (int i = 0; i < 10; ++i) { 11372 #pragma omp simd 11373 for (int i = 0; i < 10; ++i) 11374 ; 11375 } 11376 #pragma omp taskloop 11377 for (int i = 0; i < 10; ++i) { 11378 #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?}} 11379 for (int i = 0; i < 10; ++i) 11380 ; 11381 } 11382 #pragma omp taskloop 11383 for (int i = 0; i < 10; ++i) { 11384 #pragma omp parallel 11385 for (int i = 0; i < 10; ++i) 11386 ; 11387 } 11388 #pragma omp taskloop 11389 for (int i = 0; i < 10; ++i) { 11390 #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?}} 11391 { 11392 bar(); 11393 } 11394 } 11395 #pragma omp taskloop 11396 for (int i = 0; i < 10; ++i) { 11397 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 11398 { 11399 bar(); 11400 } 11401 } 11402 #pragma omp taskloop 11403 for (int i = 0; i < 10; ++i) { 11404 #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?}} 11405 { 11406 bar(); 11407 } 11408 } 11409 11410 #pragma omp taskloop 11411 for (int i = 0; i < 10; ++i) { 11412 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 11413 { 11414 bar(); 11415 } 11416 } 11417 #pragma omp taskloop 11418 for (int i = 0; i < 10; ++i) { 11419 #pragma omp critical 11420 { 11421 bar(); 11422 } 11423 } 11424 #pragma omp taskloop 11425 for (int i = 0; i < 10; ++i) { 11426 #pragma omp parallel 11427 { 11428 #pragma omp single // OK 11429 { 11430 bar(); 11431 } 11432 #pragma omp for // OK 11433 for (int i = 0; i < 10; ++i) 11434 ; 11435 #pragma omp sections // OK 11436 { 11437 bar(); 11438 } 11439 } 11440 } 11441 #pragma omp taskloop 11442 for (int i = 0; i < 10; ++i) { 11443 #pragma omp parallel for 11444 for (int i = 0; i < 10; ++i) 11445 ; 11446 } 11447 #pragma omp taskloop 11448 for (int i = 0; i < 10; ++i) { 11449 #pragma omp parallel for simd 11450 for (int i = 0; i < 10; ++i) 11451 ; 11452 } 11453 #pragma omp taskloop 11454 for (int i = 0; i < 10; ++i) { 11455 #pragma omp parallel sections 11456 { 11457 bar(); 11458 } 11459 } 11460 #pragma omp taskloop 11461 for (int i = 0; i < 10; ++i) { 11462 #pragma omp task 11463 { 11464 bar(); 11465 } 11466 } 11467 #pragma omp taskloop 11468 for (int i = 0; i < 10; ++i) { 11469 #pragma omp taskyield 11470 bar(); 11471 } 11472 #pragma omp taskloop 11473 for (int i = 0; i < 10; ++i) { 11474 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 11475 bar(); 11476 } 11477 #pragma omp taskloop 11478 for (int i = 0; i < 10; ++i) { 11479 #pragma omp taskwait 11480 bar(); 11481 } 11482 #pragma omp taskloop 11483 for (int i = 0; i < 10; ++i) { 11484 #pragma omp flush 11485 bar(); 11486 } 11487 #pragma omp taskloop 11488 for (int i = 0; i < 10; ++i) { 11489 #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?}} 11490 bar(); 11491 } 11492 #pragma omp taskloop 11493 for (int i = 0; i < 10; ++i) { 11494 #pragma omp atomic 11495 ++a; 11496 } 11497 #pragma omp taskloop 11498 for (int i = 0; i < 10; ++i) { 11499 #pragma omp target 11500 ++a; 11501 } 11502 #pragma omp taskloop 11503 for (int i = 0; i < 10; ++i) { 11504 #pragma omp target parallel 11505 ++a; 11506 } 11507 #pragma omp taskloop 11508 for (int i = 0; i < 10; ++i) { 11509 #pragma omp target parallel for 11510 for (int i = 0; i < 10; ++i) 11511 ; 11512 } 11513 #pragma omp taskloop 11514 for (int i = 0; i < 10; ++i) { 11515 #pragma omp target enter data map(to: a) 11516 ++a; 11517 } 11518 #pragma omp taskloop 11519 for (int i = 0; i < 10; ++i) { 11520 #pragma omp target exit data map(from: a) 11521 ++a; 11522 } 11523 #pragma omp taskloop 11524 for (int i = 0; i < 10; ++i) { 11525 #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?}} 11526 ++a; 11527 } 11528 #pragma omp taskloop 11529 for (int i = 0; i < 10; ++i) { 11530 #pragma omp taskloop 11531 for (int i = 0; i < 10; ++i) 11532 ++a; 11533 } 11534 #pragma omp taskloop 11535 for (int i = 0; i < 10; ++i) { 11536 #pragma omp target update to(a) 11537 ++a; 11538 } 11539 #pragma omp taskloop 11540 for (int i = 0; i < 10; ++i) { 11541 #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?}} 11542 for (int i = 0; i < 10; ++i) 11543 ; 11544 } 11545 #pragma omp taskloop 11546 for (int i = 0; i < 10; ++i) { 11547 #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?}} 11548 for (int i = 0; i < 10; ++i) 11549 ; 11550 } 11551 #pragma omp taskloop 11552 for (int i = 0; i < 10; ++i) { 11553 #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?}} 11554 for (int i = 0; i < 10; ++i) 11555 ; 11556 } 11557 #pragma omp taskloop 11558 for (int i = 0; i < 10; ++i) { 11559 #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?}} 11560 for (int i = 0; i < 10; ++i) 11561 ; 11562 } 11563 #pragma omp taskloop 11564 for (int i = 0; i < 10; ++i) { 11565 #pragma omp target simd // OK 11566 for (int i = 0; i < 10; ++i) 11567 ; 11568 } 11569 #pragma omp taskloop 11570 for (int i = 0; i < 10; ++i) { 11571 #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?}} 11572 for (int i = 0; i < 10; ++i) 11573 ; 11574 } 11575 #pragma omp taskloop 11576 for (int i = 0; i < 10; ++i) { 11577 #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?}} 11578 for (int i = 0; i < 10; ++i) 11579 ; 11580 } 11581 #pragma omp taskloop 11582 for (int i = 0; i < 10; ++i) { 11583 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 11584 for (int i = 0; i < 10; ++i) 11585 ; 11586 } 11587 #pragma omp taskloop 11588 for (int i = 0; i < 10; ++i) { 11589 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'taskloop' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 11590 for (int i = 0; i < 10; ++i) 11591 ; 11592 } 11593 #pragma omp taskloop 11594 for (int i = 0; i < 10; ++i) { 11595 #pragma omp target teams // OK 11596 a++; 11597 } 11598 11599 // DISTRIBUTE DIRECTIVE 11600 #pragma omp target 11601 #pragma omp teams 11602 #pragma omp distribute 11603 for (int i = 0; i < 10; ++i) { 11604 #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?}} 11605 for (int i = 0; i < 10; ++i) 11606 ; 11607 } 11608 #pragma omp target 11609 #pragma omp teams 11610 #pragma omp distribute 11611 for (int i = 0; i < 10; ++i) { 11612 #pragma omp for 11613 for (int i = 0; i < 10; ++i) 11614 ; 11615 } 11616 #pragma omp target 11617 #pragma omp teams 11618 #pragma omp distribute 11619 for (int i = 0; i < 10; ++i) { 11620 #pragma omp simd 11621 for (int i = 0; i < 10; ++i) 11622 ; 11623 } 11624 #pragma omp target 11625 #pragma omp teams 11626 #pragma omp distribute 11627 for (int i = 0; i < 10; ++i) { 11628 #pragma omp for simd 11629 for (int i = 0; i < 10; ++i) 11630 ; 11631 } 11632 #pragma omp target 11633 #pragma omp teams 11634 #pragma omp distribute 11635 for (int i = 0; i < 10; ++i) { 11636 #pragma omp parallel 11637 for (int i = 0; i < 10; ++i) 11638 ; 11639 } 11640 #pragma omp target 11641 #pragma omp teams 11642 #pragma omp distribute 11643 for (int i = 0; i < 10; ++i) { 11644 #pragma omp sections 11645 { 11646 bar(); 11647 } 11648 } 11649 #pragma omp target 11650 #pragma omp teams 11651 #pragma omp distribute 11652 for (int i = 0; i < 10; ++i) { 11653 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 11654 { 11655 bar(); 11656 } 11657 } 11658 #pragma omp target 11659 #pragma omp teams 11660 #pragma omp distribute 11661 for (int i = 0; i < 10; ++i) { 11662 #pragma omp single 11663 { 11664 bar(); 11665 } 11666 } 11667 #pragma omp target 11668 #pragma omp teams 11669 #pragma omp distribute 11670 for (int i = 0; i < 10; ++i) { 11671 #pragma omp master 11672 { 11673 bar(); 11674 } 11675 } 11676 #pragma omp target 11677 #pragma omp teams 11678 #pragma omp distribute 11679 for (int i = 0; i < 10; ++i) { 11680 #pragma omp critical 11681 { 11682 bar(); 11683 } 11684 } 11685 #pragma omp target 11686 #pragma omp teams 11687 #pragma omp distribute 11688 for (int i = 0; i < 10; ++i) { 11689 #pragma omp parallel 11690 { 11691 #pragma omp single 11692 { 11693 bar(); 11694 } 11695 } 11696 } 11697 #pragma omp target 11698 #pragma omp teams 11699 #pragma omp distribute 11700 for (int i = 0; i < 10; ++i) { 11701 #pragma omp parallel for 11702 for (int i = 0; i < 10; ++i) 11703 ; 11704 } 11705 #pragma omp target 11706 #pragma omp teams 11707 #pragma omp distribute 11708 for (int i = 0; i < 10; ++i) { 11709 #pragma omp parallel for simd 11710 for (int i = 0; i < 10; ++i) 11711 ; 11712 } 11713 #pragma omp target 11714 #pragma omp teams 11715 #pragma omp distribute 11716 for (int i = 0; i < 10; ++i) { 11717 #pragma omp parallel sections 11718 { 11719 bar(); 11720 } 11721 } 11722 #pragma omp target 11723 #pragma omp teams 11724 #pragma omp distribute 11725 for (int i = 0; i < 10; ++i) { 11726 #pragma omp task 11727 { 11728 bar(); 11729 } 11730 } 11731 #pragma omp target 11732 #pragma omp teams 11733 #pragma omp distribute 11734 for (int i = 0; i < 10; ++i) { 11735 #pragma omp taskyield 11736 bar(); 11737 } 11738 #pragma omp target 11739 #pragma omp teams 11740 #pragma omp distribute 11741 for (int i = 0; i < 10; ++i) { 11742 #pragma omp barrier 11743 bar(); 11744 } 11745 #pragma omp target 11746 #pragma omp teams 11747 #pragma omp distribute 11748 for (int i = 0; i < 10; ++i) { 11749 #pragma omp taskwait 11750 bar(); 11751 } 11752 #pragma omp target 11753 #pragma omp teams 11754 #pragma omp distribute 11755 for (int i = 0; i < 10; ++i) { 11756 #pragma omp flush 11757 bar(); 11758 } 11759 #pragma omp target 11760 #pragma omp teams 11761 #pragma omp distribute 11762 for (int i = 0; i < 10; ++i) { 11763 #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?}} 11764 bar(); 11765 } 11766 #pragma omp target 11767 #pragma omp teams 11768 #pragma omp distribute 11769 for (int i = 0; i < 10; ++i) { 11770 #pragma omp atomic 11771 ++a; 11772 } 11773 #pragma omp target 11774 #pragma omp teams 11775 #pragma omp distribute 11776 for (int i = 0; i < 10; ++i) { 11777 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 11778 ++a; 11779 } 11780 #pragma omp target 11781 #pragma omp teams 11782 #pragma omp distribute 11783 for (int i = 0; i < 10; ++i) { 11784 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 11785 ++a; 11786 } 11787 #pragma omp target 11788 #pragma omp teams 11789 #pragma omp distribute 11790 for (int i = 0; i < 10; ++i) { 11791 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11792 for (int i = 0; i < 10; ++i) 11793 ; 11794 } 11795 #pragma omp target 11796 #pragma omp teams 11797 #pragma omp distribute 11798 for (int i = 0; i < 10; ++i) { 11799 #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?}} 11800 ++a; 11801 } 11802 #pragma omp target 11803 #pragma omp teams 11804 #pragma omp distribute 11805 for (int i = 0; i < 10; ++i) { 11806 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 11807 ++a; 11808 } 11809 #pragma omp target 11810 #pragma omp teams 11811 #pragma omp distribute 11812 for (int i = 0; i < 10; ++i) { 11813 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 11814 ++a; 11815 } 11816 #pragma omp target 11817 #pragma omp teams 11818 #pragma omp distribute 11819 for (int i = 0; i < 10; ++i) { 11820 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 11821 ++a; 11822 } 11823 #pragma omp target 11824 #pragma omp teams 11825 #pragma omp distribute 11826 for (int i = 0; i < 10; ++i) { 11827 #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?}} 11828 for (int i = 0; i < 10; ++i) 11829 ++a; 11830 } 11831 #pragma omp target 11832 #pragma omp teams 11833 #pragma omp distribute 11834 for (int i = 0; i < 10; ++i) { 11835 #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?}} 11836 for (int i = 0; i < 10; ++i) 11837 ++a; 11838 } 11839 #pragma omp target 11840 #pragma omp teams 11841 #pragma omp distribute 11842 for (int i = 0; i < 10; ++i) { 11843 #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?}} 11844 for (int i = 0; i < 10; ++i) 11845 ++a; 11846 } 11847 #pragma omp target 11848 #pragma omp teams 11849 #pragma omp distribute 11850 for (int i = 0; i < 10; ++i) { 11851 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 11852 for (int i = 0; i < 10; ++i) 11853 ++a; 11854 } 11855 #pragma omp target 11856 #pragma omp teams 11857 #pragma omp distribute 11858 for (int i = 0; i < 10; ++i) { 11859 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 11860 for (int i = 0; i < 10; ++i) 11861 ++a; 11862 } 11863 #pragma omp target 11864 #pragma omp teams 11865 #pragma omp distribute 11866 for (int i = 0; i < 10; ++i) { 11867 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11868 for (int i = 0; i < 10; ++i) 11869 ++a; 11870 } 11871 #pragma omp target 11872 #pragma omp teams 11873 #pragma omp distribute 11874 for (int i = 0; i < 10; ++i) { 11875 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 11876 for (int i = 0; i < 10; ++i) 11877 ++a; 11878 } 11879 11880 // DISTRIBUTE PARALLEL FOR DIRECTIVE 11881 #pragma omp target 11882 #pragma omp teams 11883 #pragma omp distribute parallel for 11884 for (int i = 0; i < 10; ++i) { 11885 #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?}} 11886 for (int i = 0; i < 10; ++i) 11887 ; 11888 } 11889 11890 #pragma omp target 11891 #pragma omp teams 11892 #pragma omp distribute parallel for 11893 for (int i = 0; i < 10; ++i) { 11894 #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?}} 11895 for (int i = 0; i < 10; ++i) 11896 ; 11897 } 11898 #pragma omp target 11899 #pragma omp teams 11900 #pragma omp distribute parallel for 11901 for (int i = 0; i < 10; ++i) { 11902 #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?}} 11903 for (int i = 0; i < 10; ++i) 11904 ; 11905 } 11906 #pragma omp target 11907 #pragma omp teams 11908 #pragma omp distribute parallel for 11909 for (int i = 0; i < 10; ++i) { 11910 #pragma omp simd 11911 for (int i = 0; i < 10; ++i) 11912 ; 11913 } 11914 #pragma omp target 11915 #pragma omp teams 11916 #pragma omp distribute parallel for 11917 for (int i = 0; i < 10; ++i) { 11918 #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?}} 11919 for (int i = 0; i < 10; ++i) 11920 ; 11921 } 11922 #pragma omp target 11923 #pragma omp teams 11924 #pragma omp distribute parallel for 11925 for (int i = 0; i < 10; ++i) { 11926 #pragma omp parallel 11927 for (int i = 0; i < 10; ++i) 11928 ; 11929 } 11930 #pragma omp target 11931 #pragma omp teams 11932 #pragma omp distribute parallel for 11933 for (int i = 0; i < 10; ++i) { 11934 #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?}} 11935 { 11936 bar(); 11937 } 11938 } 11939 #pragma omp target 11940 #pragma omp teams 11941 #pragma omp distribute parallel for 11942 for (int i = 0; i < 10; ++i) { 11943 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 11944 { 11945 bar(); 11946 } 11947 } 11948 #pragma omp target 11949 #pragma omp teams 11950 #pragma omp distribute parallel for 11951 for (int i = 0; i < 10; ++i) { 11952 #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?}} 11953 { 11954 bar(); 11955 } 11956 } 11957 #pragma omp target 11958 #pragma omp teams 11959 #pragma omp distribute parallel for 11960 for (int i = 0; i < 10; ++i) { 11961 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 11962 { 11963 bar(); 11964 } 11965 } 11966 #pragma omp target 11967 #pragma omp teams 11968 #pragma omp distribute parallel for 11969 for (int i = 0; i < 10; ++i) { 11970 #pragma omp critical 11971 { 11972 bar(); 11973 } 11974 } 11975 #pragma omp target 11976 #pragma omp teams 11977 #pragma omp distribute parallel for 11978 for (int i = 0; i < 10; ++i) { 11979 #pragma omp parallel 11980 { 11981 #pragma omp single 11982 { 11983 bar(); 11984 } 11985 } 11986 } 11987 #pragma omp target 11988 #pragma omp teams 11989 #pragma omp distribute parallel for 11990 for (int i = 0; i < 10; ++i) { 11991 #pragma omp parallel for 11992 for (int i = 0; i < 10; ++i) 11993 ; 11994 } 11995 #pragma omp target 11996 #pragma omp teams 11997 #pragma omp distribute parallel for 11998 for (int i = 0; i < 10; ++i) { 11999 #pragma omp parallel for simd 12000 for (int i = 0; i < 10; ++i) 12001 ; 12002 } 12003 #pragma omp target 12004 #pragma omp teams 12005 #pragma omp distribute parallel for 12006 for (int i = 0; i < 10; ++i) { 12007 #pragma omp parallel sections 12008 { 12009 bar(); 12010 } 12011 } 12012 #pragma omp target 12013 #pragma omp teams 12014 #pragma omp distribute parallel for 12015 for (int i = 0; i < 10; ++i) { 12016 #pragma omp task 12017 { 12018 bar(); 12019 } 12020 } 12021 #pragma omp target 12022 #pragma omp teams 12023 #pragma omp distribute parallel for 12024 for (int i = 0; i < 10; ++i) { 12025 #pragma omp taskyield 12026 bar(); 12027 } 12028 #pragma omp target 12029 #pragma omp teams 12030 #pragma omp distribute parallel for 12031 for (int i = 0; i < 10; ++i) { 12032 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 12033 bar(); 12034 } 12035 #pragma omp target 12036 #pragma omp teams 12037 #pragma omp distribute parallel for 12038 for (int i = 0; i < 10; ++i) { 12039 #pragma omp taskwait 12040 bar(); 12041 } 12042 #pragma omp target 12043 #pragma omp teams 12044 #pragma omp distribute parallel for 12045 for (int i = 0; i < 10; ++i) { 12046 #pragma omp flush 12047 bar(); 12048 } 12049 #pragma omp target 12050 #pragma omp teams 12051 #pragma omp distribute parallel for 12052 for (int i = 0; i < 10; ++i) { 12053 #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?}} 12054 bar(); 12055 } 12056 #pragma omp target 12057 #pragma omp teams 12058 #pragma omp distribute parallel for 12059 for (int i = 0; i < 10; ++i) { 12060 #pragma omp atomic 12061 ++a; 12062 } 12063 #pragma omp target 12064 #pragma omp teams 12065 #pragma omp distribute parallel for 12066 for (int i = 0; i < 10; ++i) { 12067 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 12068 ++a; 12069 } 12070 #pragma omp target 12071 #pragma omp teams 12072 #pragma omp distribute parallel for 12073 for (int i = 0; i < 10; ++i) { 12074 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 12075 ++a; 12076 } 12077 #pragma omp target 12078 #pragma omp teams 12079 #pragma omp distribute parallel for 12080 for (int i = 0; i < 10; ++i) { 12081 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 12082 for (int i = 0; i < 10; ++i) 12083 ; 12084 } 12085 #pragma omp target 12086 #pragma omp teams 12087 #pragma omp distribute parallel for 12088 for (int i = 0; i < 10; ++i) { 12089 #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?}} 12090 ++a; 12091 } 12092 #pragma omp target 12093 #pragma omp teams 12094 #pragma omp distribute parallel for 12095 for (int i = 0; i < 10; ++i) { 12096 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 12097 ++a; 12098 } 12099 #pragma omp target 12100 #pragma omp teams 12101 #pragma omp distribute parallel for 12102 for (int i = 0; i < 10; ++i) { 12103 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 12104 ++a; 12105 } 12106 #pragma omp target 12107 #pragma omp teams 12108 #pragma omp distribute parallel for 12109 for (int i = 0; i < 10; ++i) { 12110 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 12111 ++a; 12112 } 12113 #pragma omp target 12114 #pragma omp teams 12115 #pragma omp distribute parallel for 12116 for (int i = 0; i < 10; ++i) { 12117 #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?}} 12118 for (int i = 0; i < 10; ++i) 12119 ++a; 12120 } 12121 #pragma omp target 12122 #pragma omp teams 12123 #pragma omp distribute parallel for 12124 for (int i = 0; i < 10; ++i) { 12125 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 12126 for (int i = 0; i < 10; ++i) 12127 ++a; 12128 } 12129 #pragma omp target 12130 #pragma omp teams 12131 #pragma omp distribute parallel for 12132 for (int i = 0; i < 10; ++i) { 12133 #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?}} 12134 for (int i = 0; i < 10; ++i) 12135 ++a; 12136 } 12137 #pragma omp target 12138 #pragma omp teams 12139 #pragma omp distribute parallel for 12140 for (int i = 0; i < 10; ++i) { 12141 #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?}} 12142 for (int i = 0; i < 10; ++i) 12143 ++a; 12144 } 12145 #pragma omp target 12146 #pragma omp teams 12147 #pragma omp distribute parallel for 12148 for (int i = 0; i < 10; ++i) { 12149 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 12150 for (int i = 0; i < 10; ++i) 12151 ++a; 12152 } 12153 #pragma omp target 12154 #pragma omp teams 12155 #pragma omp distribute parallel for 12156 for (int i = 0; i < 10; ++i) { 12157 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 12158 for (int i = 0; i < 10; ++i) 12159 ++a; 12160 } 12161 #pragma omp target 12162 #pragma omp teams 12163 #pragma omp distribute parallel for 12164 for (int i = 0; i < 10; ++i) { 12165 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 12166 ++a; 12167 } 12168 12169 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 12170 #pragma omp target 12171 #pragma omp teams 12172 #pragma omp distribute parallel for simd 12173 for (int i = 0; i < 10; ++i) { 12174 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12175 for (int i = 0; i < 10; ++i) 12176 ; 12177 } 12178 #pragma omp target 12179 #pragma omp teams 12180 #pragma omp distribute parallel for simd 12181 for (int i = 0; i < 10; ++i) { 12182 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12183 for (int i = 0; i < 10; ++i) 12184 ; 12185 } 12186 #pragma omp target 12187 #pragma omp teams 12188 #pragma omp distribute parallel for simd 12189 for (int i = 0; i < 10; ++i) { 12190 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12191 for (int i = 0; i < 10; ++i) 12192 ; 12193 } 12194 #pragma omp target 12195 #pragma omp teams 12196 #pragma omp distribute parallel for simd 12197 for (int i = 0; i < 10; ++i) { 12198 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12199 for (int i = 0; i < 10; ++i) 12200 ; 12201 } 12202 #pragma omp target 12203 #pragma omp teams 12204 #pragma omp distribute parallel for simd 12205 for (int i = 0; i < 10; ++i) { 12206 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12207 for (int i = 0; i < 10; ++i) 12208 ; 12209 } 12210 #pragma omp target 12211 #pragma omp teams 12212 #pragma omp distribute parallel for simd 12213 for (int i = 0; i < 10; ++i) { 12214 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12215 for (int i = 0; i < 10; ++i) 12216 ; 12217 } 12218 #pragma omp target 12219 #pragma omp teams 12220 #pragma omp distribute parallel for simd 12221 for (int i = 0; i < 10; ++i) { 12222 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12223 { 12224 bar(); 12225 } 12226 } 12227 #pragma omp target 12228 #pragma omp teams 12229 #pragma omp distribute parallel for simd 12230 for (int i = 0; i < 10; ++i) { 12231 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12232 { 12233 bar(); 12234 } 12235 } 12236 #pragma omp target 12237 #pragma omp teams 12238 #pragma omp distribute parallel for simd 12239 for (int i = 0; i < 10; ++i) { 12240 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12241 { 12242 bar(); 12243 } 12244 } 12245 #pragma omp target 12246 #pragma omp teams 12247 #pragma omp distribute parallel for simd 12248 for (int i = 0; i < 10; ++i) { 12249 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12250 { 12251 bar(); 12252 } 12253 } 12254 #pragma omp target 12255 #pragma omp teams 12256 #pragma omp distribute parallel for simd 12257 for (int i = 0; i < 10; ++i) { 12258 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12259 { 12260 bar(); 12261 } 12262 } 12263 #pragma omp target 12264 #pragma omp teams 12265 #pragma omp distribute parallel for simd 12266 for (int i = 0; i < 10; ++i) { 12267 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12268 { 12269 #pragma omp single 12270 { 12271 bar(); 12272 } 12273 } 12274 } 12275 #pragma omp target 12276 #pragma omp teams 12277 #pragma omp distribute parallel for simd 12278 for (int i = 0; i < 10; ++i) { 12279 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12280 for (int i = 0; i < 10; ++i) 12281 ; 12282 } 12283 #pragma omp target 12284 #pragma omp teams 12285 #pragma omp distribute parallel for simd 12286 for (int i = 0; i < 10; ++i) { 12287 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12288 for (int i = 0; i < 10; ++i) 12289 ; 12290 } 12291 #pragma omp target 12292 #pragma omp teams 12293 #pragma omp distribute parallel for simd 12294 for (int i = 0; i < 10; ++i) { 12295 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12296 { 12297 bar(); 12298 } 12299 } 12300 #pragma omp target 12301 #pragma omp teams 12302 #pragma omp distribute parallel for simd 12303 for (int i = 0; i < 10; ++i) { 12304 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12305 { 12306 bar(); 12307 } 12308 } 12309 #pragma omp target 12310 #pragma omp teams 12311 #pragma omp distribute parallel for simd 12312 for (int i = 0; i < 10; ++i) { 12313 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12314 bar(); 12315 } 12316 #pragma omp target 12317 #pragma omp teams 12318 #pragma omp distribute parallel for simd 12319 for (int i = 0; i < 10; ++i) { 12320 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12321 bar(); 12322 } 12323 #pragma omp target 12324 #pragma omp teams 12325 #pragma omp distribute parallel for simd 12326 for (int i = 0; i < 10; ++i) { 12327 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12328 bar(); 12329 } 12330 #pragma omp target 12331 #pragma omp teams 12332 #pragma omp distribute parallel for simd 12333 for (int i = 0; i < 10; ++i) { 12334 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12335 bar(); 12336 } 12337 #pragma omp target 12338 #pragma omp teams 12339 #pragma omp distribute parallel for simd 12340 for (int i = 0; i < 10; ++i) { 12341 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12342 bar(); 12343 } 12344 #pragma omp target 12345 #pragma omp teams 12346 #pragma omp distribute parallel for simd 12347 for (int i = 0; i < 10; ++i) { 12348 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12349 ++a; 12350 } 12351 #pragma omp target 12352 #pragma omp teams 12353 #pragma omp distribute parallel for simd 12354 for (int i = 0; i < 10; ++i) { 12355 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12356 ++a; 12357 } 12358 #pragma omp target 12359 #pragma omp teams 12360 #pragma omp distribute parallel for simd 12361 for (int i = 0; i < 10; ++i) { 12362 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12363 ++a; 12364 } 12365 #pragma omp target 12366 #pragma omp teams 12367 #pragma omp distribute parallel for simd 12368 for (int i = 0; i < 10; ++i) { 12369 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12370 ++a; 12371 } 12372 #pragma omp target 12373 #pragma omp teams 12374 #pragma omp distribute parallel for simd 12375 for (int i = 0; i < 10; ++i) { 12376 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12377 ++a; 12378 } 12379 #pragma omp target 12380 #pragma omp teams 12381 #pragma omp distribute parallel for simd 12382 for (int i = 0; i < 10; ++i) { 12383 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12384 ++a; 12385 } 12386 #pragma omp target 12387 #pragma omp teams 12388 #pragma omp distribute parallel for simd 12389 for (int i = 0; i < 10; ++i) { 12390 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12391 ++a; 12392 } 12393 #pragma omp target 12394 #pragma omp teams 12395 #pragma omp distribute parallel for simd 12396 for (int i = 0; i < 10; ++i) { 12397 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12398 for (int i = 0; i < 10; ++i) 12399 ; 12400 } 12401 #pragma omp target 12402 #pragma omp teams 12403 #pragma omp distribute parallel for simd 12404 for (int i = 0; i < 10; ++i) { 12405 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12406 for (int i = 0; i < 10; ++i) 12407 ; 12408 } 12409 #pragma omp target 12410 #pragma omp teams 12411 #pragma omp distribute parallel for simd 12412 for (int i = 0; i < 10; ++i) { 12413 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12414 for (int i = 0; i < 10; ++i) 12415 ; 12416 } 12417 #pragma omp target 12418 #pragma omp teams 12419 #pragma omp distribute parallel for simd 12420 for (int i = 0; i < 10; ++i) { 12421 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12422 for (int i = 0; i < 10; ++i) 12423 ; 12424 } 12425 #pragma omp target 12426 #pragma omp teams 12427 #pragma omp distribute parallel for simd 12428 for (int i = 0; i < 10; ++i) { 12429 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12430 for (int i = 0; i < 10; ++i) 12431 ; 12432 } 12433 #pragma omp target 12434 #pragma omp teams 12435 #pragma omp distribute parallel for simd 12436 for (int i = 0; i < 10; ++i) { 12437 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12438 for (int i = 0; i < 10; ++i) 12439 ; 12440 } 12441 #pragma omp target 12442 #pragma omp teams 12443 #pragma omp distribute parallel for simd 12444 for (int i = 0; i < 10; ++i) { 12445 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12446 a++; 12447 } 12448 12449 // DISTRIBUTE SIMD DIRECTIVE 12450 #pragma omp target 12451 #pragma omp teams 12452 #pragma omp distribute simd 12453 for (int i = 0; i < 10; ++i) { 12454 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12455 for (int i = 0; i < 10; ++i) 12456 ; 12457 } 12458 #pragma omp target 12459 #pragma omp teams 12460 #pragma omp distribute simd 12461 for (int i = 0; i < 10; ++i) { 12462 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12463 for (int i = 0; i < 10; ++i) 12464 ; 12465 } 12466 #pragma omp target 12467 #pragma omp teams 12468 #pragma omp distribute simd 12469 for (int i = 0; i < 10; ++i) { 12470 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12471 for (int i = 0; i < 10; ++i) 12472 ; 12473 } 12474 #pragma omp target 12475 #pragma omp teams 12476 #pragma omp distribute simd 12477 for (int i = 0; i < 10; ++i) { 12478 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12479 for (int i = 0; i < 10; ++i) 12480 ; 12481 } 12482 #pragma omp target 12483 #pragma omp teams 12484 #pragma omp distribute simd 12485 for (int i = 0; i < 10; ++i) { 12486 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12487 for (int i = 0; i < 10; ++i) 12488 ; 12489 } 12490 #pragma omp target 12491 #pragma omp teams 12492 #pragma omp distribute simd 12493 for (int i = 0; i < 10; ++i) { 12494 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12495 for (int i = 0; i < 10; ++i) 12496 ; 12497 } 12498 #pragma omp target 12499 #pragma omp teams 12500 #pragma omp distribute simd 12501 for (int i = 0; i < 10; ++i) { 12502 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12503 { 12504 bar(); 12505 } 12506 } 12507 #pragma omp target 12508 #pragma omp teams 12509 #pragma omp distribute simd 12510 for (int i = 0; i < 10; ++i) { 12511 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12512 { 12513 bar(); 12514 } 12515 } 12516 #pragma omp target 12517 #pragma omp teams 12518 #pragma omp distribute simd 12519 for (int i = 0; i < 10; ++i) { 12520 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12521 { 12522 bar(); 12523 } 12524 } 12525 #pragma omp target 12526 #pragma omp teams 12527 #pragma omp distribute simd 12528 for (int i = 0; i < 10; ++i) { 12529 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12530 { 12531 bar(); 12532 } 12533 } 12534 #pragma omp target 12535 #pragma omp teams 12536 #pragma omp distribute simd 12537 for (int i = 0; i < 10; ++i) { 12538 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12539 { 12540 bar(); 12541 } 12542 } 12543 #pragma omp target 12544 #pragma omp teams 12545 #pragma omp distribute simd 12546 for (int i = 0; i < 10; ++i) { 12547 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12548 { 12549 #pragma omp single 12550 { 12551 bar(); 12552 } 12553 } 12554 } 12555 #pragma omp target 12556 #pragma omp teams 12557 #pragma omp distribute simd 12558 for (int i = 0; i < 10; ++i) { 12559 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12560 for (int i = 0; i < 10; ++i) 12561 ; 12562 } 12563 #pragma omp target 12564 #pragma omp teams 12565 #pragma omp distribute simd 12566 for (int i = 0; i < 10; ++i) { 12567 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12568 for (int i = 0; i < 10; ++i) 12569 ; 12570 } 12571 #pragma omp target 12572 #pragma omp teams 12573 #pragma omp distribute simd 12574 for (int i = 0; i < 10; ++i) { 12575 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12576 { 12577 bar(); 12578 } 12579 } 12580 #pragma omp target 12581 #pragma omp teams 12582 #pragma omp distribute simd 12583 for (int i = 0; i < 10; ++i) { 12584 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12585 { 12586 bar(); 12587 } 12588 } 12589 #pragma omp target 12590 #pragma omp teams 12591 #pragma omp distribute simd 12592 for (int i = 0; i < 10; ++i) { 12593 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12594 bar(); 12595 } 12596 #pragma omp target 12597 #pragma omp teams 12598 #pragma omp distribute simd 12599 for (int i = 0; i < 10; ++i) { 12600 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12601 bar(); 12602 } 12603 #pragma omp target 12604 #pragma omp teams 12605 #pragma omp distribute simd 12606 for (int i = 0; i < 10; ++i) { 12607 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12608 bar(); 12609 } 12610 #pragma omp target 12611 #pragma omp teams 12612 #pragma omp distribute simd 12613 for (int i = 0; i < 10; ++i) { 12614 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12615 bar(); 12616 } 12617 #pragma omp target 12618 #pragma omp teams 12619 #pragma omp distribute simd 12620 for (int i = 0; i < 10; ++i) { 12621 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12622 bar(); 12623 } 12624 #pragma omp target 12625 #pragma omp teams 12626 #pragma omp distribute simd 12627 for (int i = 0; i < 10; ++i) { 12628 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12629 ++a; 12630 } 12631 #pragma omp target 12632 #pragma omp teams 12633 #pragma omp distribute simd 12634 for (int i = 0; i < 10; ++i) { 12635 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12636 ++a; 12637 } 12638 #pragma omp target 12639 #pragma omp teams 12640 #pragma omp distribute simd 12641 for (int i = 0; i < 10; ++i) { 12642 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12643 ++a; 12644 } 12645 #pragma omp target 12646 #pragma omp teams 12647 #pragma omp distribute simd 12648 for (int i = 0; i < 10; ++i) { 12649 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12650 ++a; 12651 } 12652 #pragma omp target 12653 #pragma omp teams 12654 #pragma omp distribute simd 12655 for (int i = 0; i < 10; ++i) { 12656 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12657 ++a; 12658 } 12659 #pragma omp target 12660 #pragma omp teams 12661 #pragma omp distribute simd 12662 for (int i = 0; i < 10; ++i) { 12663 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12664 ++a; 12665 } 12666 #pragma omp target 12667 #pragma omp teams 12668 #pragma omp distribute simd 12669 for (int i = 0; i < 10; ++i) { 12670 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12671 ++a; 12672 } 12673 #pragma omp target 12674 #pragma omp teams 12675 #pragma omp distribute simd 12676 for (int i = 0; i < 10; ++i) { 12677 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12678 for (int i = 0; i < 10; ++i) 12679 ; 12680 } 12681 #pragma omp target 12682 #pragma omp teams 12683 #pragma omp distribute simd 12684 for (int i = 0; i < 10; ++i) { 12685 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12686 for (int i = 0; i < 10; ++i) 12687 ; 12688 } 12689 #pragma omp target 12690 #pragma omp teams 12691 #pragma omp distribute simd 12692 for (int i = 0; i < 10; ++i) { 12693 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12694 for (int i = 0; i < 10; ++i) 12695 ; 12696 } 12697 #pragma omp target 12698 #pragma omp teams 12699 #pragma omp distribute simd 12700 for (int i = 0; i < 10; ++i) { 12701 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12702 for (int i = 0; i < 10; ++i) 12703 ; 12704 } 12705 #pragma omp target 12706 #pragma omp teams 12707 #pragma omp distribute simd 12708 for (int i = 0; i < 10; ++i) { 12709 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12710 for (int i = 0; i < 10; ++i) 12711 ; 12712 } 12713 #pragma omp target 12714 #pragma omp teams 12715 #pragma omp distribute simd 12716 for (int i = 0; i < 10; ++i) { 12717 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12718 for (int i = 0; i < 10; ++i) 12719 ; 12720 } 12721 #pragma omp target 12722 #pragma omp teams 12723 #pragma omp distribute simd 12724 for (int i = 0; i < 10; ++i) { 12725 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12726 a++; 12727 } 12728 12729 // TARGET SIMD DIRECTIVE 12730 #pragma omp target simd 12731 for (int i = 0; i < 10; ++i) { 12732 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12733 for (int i = 0; i < 10; ++i) 12734 ; 12735 } 12736 #pragma omp target simd 12737 for (int i = 0; i < 10; ++i) { 12738 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12739 for (int i = 0; i < 10; ++i) 12740 ; 12741 } 12742 #pragma omp target simd 12743 for (int i = 0; i < 10; ++i) { 12744 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12745 for (int i = 0; i < 10; ++i) 12746 ; 12747 } 12748 #pragma omp target simd 12749 for (int i = 0; i < 10; ++i) { 12750 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12751 for (int i = 0; i < 10; ++i) 12752 ; 12753 } 12754 #pragma omp target simd 12755 for (int i = 0; i < 10; ++i) { 12756 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12757 for (int i = 0; i < 10; ++i) 12758 ; 12759 } 12760 #pragma omp target simd 12761 for (int i = 0; i < 10; ++i) { 12762 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12763 for (int i = 0; i < 10; ++i) 12764 ; 12765 } 12766 #pragma omp target simd 12767 for (int i = 0; i < 10; ++i) { 12768 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12769 { 12770 bar(); 12771 } 12772 } 12773 #pragma omp target simd 12774 for (int i = 0; i < 10; ++i) { 12775 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12776 { 12777 bar(); 12778 } 12779 } 12780 #pragma omp target simd 12781 for (int i = 0; i < 10; ++i) { 12782 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12783 { 12784 bar(); 12785 } 12786 } 12787 #pragma omp target simd 12788 for (int i = 0; i < 10; ++i) { 12789 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12790 { 12791 bar(); 12792 } 12793 } 12794 #pragma omp target simd 12795 for (int i = 0; i < 10; ++i) { 12796 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12797 { 12798 bar(); 12799 } 12800 } 12801 #pragma omp target simd 12802 for (int i = 0; i < 10; ++i) { 12803 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12804 { 12805 #pragma omp single 12806 { 12807 bar(); 12808 } 12809 } 12810 } 12811 #pragma omp target simd 12812 for (int i = 0; i < 10; ++i) { 12813 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12814 for (int i = 0; i < 10; ++i) 12815 ; 12816 } 12817 #pragma omp target simd 12818 for (int i = 0; i < 10; ++i) { 12819 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12820 for (int i = 0; i < 10; ++i) 12821 ; 12822 } 12823 #pragma omp target simd 12824 for (int i = 0; i < 10; ++i) { 12825 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12826 { 12827 bar(); 12828 } 12829 } 12830 #pragma omp target simd 12831 for (int i = 0; i < 10; ++i) { 12832 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12833 { 12834 bar(); 12835 } 12836 } 12837 #pragma omp target simd 12838 for (int i = 0; i < 10; ++i) { 12839 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12840 bar(); 12841 } 12842 #pragma omp target simd 12843 for (int i = 0; i < 10; ++i) { 12844 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12845 bar(); 12846 } 12847 #pragma omp target simd 12848 for (int i = 0; i < 10; ++i) { 12849 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12850 bar(); 12851 } 12852 #pragma omp target simd 12853 for (int i = 0; i < 10; ++i) { 12854 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12855 bar(); 12856 } 12857 #pragma omp target simd 12858 for (int i = 0; i < 10; ++i) { 12859 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12860 bar(); 12861 } 12862 #pragma omp target simd 12863 for (int i = 0; i < 10; ++i) { 12864 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12865 ++a; 12866 } 12867 #pragma omp target simd 12868 for (int i = 0; i < 10; ++i) { 12869 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12870 ++a; 12871 } 12872 #pragma omp target simd 12873 for (int i = 0; i < 10; ++i) { 12874 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12875 ++a; 12876 } 12877 #pragma omp target simd 12878 for (int i = 0; i < 10; ++i) { 12879 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12880 ++a; 12881 } 12882 #pragma omp target simd 12883 for (int i = 0; i < 10; ++i) { 12884 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12885 ++a; 12886 } 12887 #pragma omp target simd 12888 for (int i = 0; i < 10; ++i) { 12889 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12890 ++a; 12891 } 12892 #pragma omp target simd 12893 for (int i = 0; i < 10; ++i) { 12894 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12895 ++a; 12896 } 12897 #pragma omp target simd 12898 for (int i = 0; i < 10; ++i) { 12899 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12900 for (int i = 0; i < 10; ++i) 12901 ; 12902 } 12903 #pragma omp target simd 12904 for (int i = 0; i < 10; ++i) { 12905 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12906 for (int i = 0; i < 10; ++i) 12907 ; 12908 } 12909 #pragma omp target simd 12910 for (int i = 0; i < 10; ++i) { 12911 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12912 for (int i = 0; i < 10; ++i) 12913 ; 12914 } 12915 #pragma omp target simd 12916 for (int i = 0; i < 10; ++i) { 12917 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12918 for (int i = 0; i < 10; ++i) 12919 ; 12920 } 12921 #pragma omp target simd 12922 for (int i = 0; i < 10; ++i) { 12923 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12924 for (int i = 0; i < 10; ++i) 12925 ; 12926 } 12927 #pragma omp target simd 12928 for (int i = 0; i < 10; ++i) { 12929 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12930 for (int i = 0; i < 10; ++i) 12931 ; 12932 } 12933 #pragma omp target simd 12934 for (int i = 0; i < 10; ++i) { 12935 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12936 a++; 12937 } 12938 12939 // TEAMS DISTRIBUTE DIRECTIVE 12940 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 12941 for (int i = 0; i < 10; ++i) 12942 ; 12943 #pragma omp target 12944 #pragma omp teams distribute 12945 for (int i = 0; i < 10; ++i) { 12946 #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?}} 12947 for (int i = 0; i < 10; ++i) 12948 ; 12949 } 12950 #pragma omp target 12951 #pragma omp teams distribute 12952 for (int i = 0; i < 10; ++i) { 12953 #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?}} 12954 for (int i = 0; i < 10; ++i) 12955 ; 12956 } 12957 #pragma omp target 12958 #pragma omp teams distribute 12959 for (int i = 0; i < 10; ++i) { 12960 #pragma omp for // OK 12961 for (int i = 0; i < 10; ++i) 12962 ; 12963 } 12964 #pragma omp target 12965 #pragma omp teams distribute 12966 for (int i = 0; i < 10; ++i) { 12967 #pragma omp simd // OK 12968 for (int i = 0; i < 10; ++i) 12969 ; 12970 } 12971 #pragma omp target 12972 #pragma omp teams distribute 12973 for (int i = 0; i < 10; ++i) { 12974 #pragma omp for simd // OK 12975 for (int i = 0; i < 10; ++i) 12976 ; 12977 } 12978 #pragma omp target 12979 #pragma omp teams distribute 12980 for (int i = 0; i < 10; ++i) { 12981 #pragma omp parallel // OK 12982 for (int i = 0; i < 10; ++i) 12983 ; 12984 } 12985 #pragma omp target 12986 #pragma omp teams distribute 12987 for (int i = 0; i < 10; ++i) { 12988 #pragma omp sections // OK 12989 { 12990 bar(); 12991 } 12992 } 12993 #pragma omp target 12994 #pragma omp teams distribute 12995 for (int i = 0; i < 10; ++i) { 12996 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 12997 { 12998 bar(); 12999 } 13000 } 13001 #pragma omp target 13002 #pragma omp teams distribute 13003 for (int i = 0; i < 10; ++i) { 13004 #pragma omp single // OK 13005 { 13006 bar(); 13007 } 13008 } 13009 #pragma omp target 13010 #pragma omp teams distribute 13011 for (int i = 0; i < 10; ++i) { 13012 #pragma omp master // OK 13013 { 13014 bar(); 13015 } 13016 } 13017 #pragma omp target 13018 #pragma omp teams distribute 13019 for (int i = 0; i < 10; ++i) { 13020 #pragma omp critical // OK 13021 { 13022 bar(); 13023 } 13024 } 13025 #pragma omp target 13026 #pragma omp teams distribute 13027 for (int i = 0; i < 10; ++i) { 13028 #pragma omp parallel // OK 13029 { 13030 #pragma omp single 13031 { 13032 bar(); 13033 } 13034 } 13035 } 13036 #pragma omp target 13037 #pragma omp teams distribute 13038 for (int i = 0; i < 10; ++i) { 13039 #pragma omp parallel for // OK 13040 for (int i = 0; i < 10; ++i) 13041 ; 13042 } 13043 #pragma omp target 13044 #pragma omp teams distribute 13045 for (int i = 0; i < 10; ++i) { 13046 #pragma omp parallel for simd // OK 13047 for (int i = 0; i < 10; ++i) 13048 ; 13049 } 13050 #pragma omp target 13051 #pragma omp teams distribute 13052 for (int i = 0; i < 10; ++i) { 13053 #pragma omp parallel sections // OK 13054 { 13055 bar(); 13056 } 13057 } 13058 #pragma omp target 13059 #pragma omp teams distribute 13060 for (int i = 0; i < 10; ++i) { 13061 #pragma omp task // OK 13062 { 13063 bar(); 13064 } 13065 } 13066 #pragma omp target 13067 #pragma omp teams distribute 13068 for (int i = 0; i < 10; ++i) { 13069 #pragma omp taskyield // OK 13070 bar(); 13071 } 13072 #pragma omp target 13073 #pragma omp teams distribute 13074 for (int i = 0; i < 10; ++i) { 13075 #pragma omp barrier // OK 13076 bar(); 13077 } 13078 #pragma omp target 13079 #pragma omp teams distribute 13080 for (int i = 0; i < 10; ++i) { 13081 #pragma omp taskwait // OK 13082 bar(); 13083 } 13084 #pragma omp target 13085 #pragma omp teams distribute 13086 for (int i = 0; i < 10; ++i) { 13087 #pragma omp flush // OK 13088 bar(); 13089 } 13090 #pragma omp target 13091 #pragma omp teams distribute 13092 for (int i = 0; i < 10; ++i) { 13093 #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?}} 13094 bar(); 13095 } 13096 #pragma omp target 13097 #pragma omp teams distribute 13098 for (int i = 0; i < 10; ++i) { 13099 #pragma omp atomic // OK 13100 ++a; 13101 } 13102 #pragma omp target 13103 #pragma omp teams distribute 13104 for (int i = 0; i < 10; ++i) { 13105 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13106 ++a; 13107 } 13108 #pragma omp target 13109 #pragma omp teams distribute 13110 for (int i = 0; i < 10; ++i) { 13111 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13112 ++a; 13113 } 13114 #pragma omp target 13115 #pragma omp teams distribute 13116 for (int i = 0; i < 10; ++i) { 13117 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13118 for (int i = 0; i < 10; ++i) 13119 ; 13120 } 13121 #pragma omp target 13122 #pragma omp teams distribute 13123 for (int i = 0; i < 10; ++i) { 13124 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13125 ++a; 13126 } 13127 #pragma omp target 13128 #pragma omp teams distribute 13129 for (int i = 0; i < 10; ++i) { 13130 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13131 ++a; 13132 } 13133 #pragma omp target 13134 #pragma omp teams distribute 13135 for (int i = 0; i < 10; ++i) { 13136 #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?}} 13137 ++a; 13138 } 13139 #pragma omp target 13140 #pragma omp teams distribute 13141 for (int i = 0; i < 10; ++i) { 13142 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13143 ++a; 13144 } 13145 #pragma omp target 13146 #pragma omp teams distribute 13147 for (int i = 0; i < 10; ++i) { 13148 #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?}} 13149 for (int i = 0; i < 10; ++i) 13150 ++a; 13151 } 13152 #pragma omp target 13153 #pragma omp teams distribute 13154 for (int i = 0; i < 10; ++i) { 13155 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13156 for (int i = 0; i < 10; ++i) 13157 ++a; 13158 } 13159 #pragma omp target 13160 #pragma omp teams distribute 13161 for (int i = 0; i < 10; ++i) { 13162 #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?}} 13163 for (int i = 0; i < 10; ++i) 13164 ++a; 13165 } 13166 #pragma omp target 13167 #pragma omp teams distribute 13168 for (int i = 0; i < 10; ++i) { 13169 #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?}} 13170 for (int i = 0; i < 10; ++i) 13171 ++a; 13172 } 13173 #pragma omp target 13174 #pragma omp teams distribute 13175 for (int i = 0; i < 10; ++i) { 13176 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 13177 for (int i = 0; i < 10; ++i) 13178 ++a; 13179 } 13180 #pragma omp target 13181 #pragma omp teams distribute 13182 for (int i = 0; i < 10; ++i) { 13183 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 13184 for (int i = 0; i < 10; ++i) 13185 ++a; 13186 } 13187 #pragma omp target 13188 #pragma omp teams distribute 13189 for (int i = 0; i < 10; ++i) { 13190 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13191 ++a; 13192 } 13193 13194 // TEAMS DISTRIBUTE SIMD DIRECTIVE 13195 #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?}} 13196 for (int i = 0; i < 10; ++i) 13197 ; 13198 #pragma omp target 13199 #pragma omp teams distribute simd 13200 for (int i = 0; i < 10; ++i) { 13201 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13202 for (int i = 0; i < 10; ++i) 13203 ; 13204 } 13205 #pragma omp target 13206 #pragma omp teams distribute simd 13207 for (int i = 0; i < 10; ++i) { 13208 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13209 for (int i = 0; i < 10; ++i) 13210 ; 13211 } 13212 #pragma omp target 13213 #pragma omp teams distribute simd 13214 for (int i = 0; i < 10; ++i) { 13215 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13216 for (int i = 0; i < 10; ++i) 13217 ; 13218 } 13219 #pragma omp target 13220 #pragma omp teams distribute simd 13221 for (int i = 0; i < 10; ++i) { 13222 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 13223 for (int i = 0; i < 10; ++i) 13224 ; 13225 } 13226 #pragma omp target 13227 #pragma omp teams distribute simd 13228 for (int i = 0; i < 10; ++i) { 13229 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13230 for (int i = 0; i < 10; ++i) 13231 ; 13232 } 13233 #pragma omp target 13234 #pragma omp teams distribute simd 13235 for (int i = 0; i < 10; ++i) { 13236 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13237 for (int i = 0; i < 10; ++i) 13238 ; 13239 } 13240 #pragma omp target 13241 #pragma omp teams distribute simd 13242 for (int i = 0; i < 10; ++i) { 13243 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13244 { 13245 bar(); 13246 } 13247 } 13248 #pragma omp target 13249 #pragma omp teams distribute simd 13250 for (int i = 0; i < 10; ++i) { 13251 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13252 { 13253 bar(); 13254 } 13255 } 13256 #pragma omp target 13257 #pragma omp teams distribute simd 13258 for (int i = 0; i < 10; ++i) { 13259 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13260 { 13261 bar(); 13262 } 13263 } 13264 #pragma omp target 13265 #pragma omp teams distribute simd 13266 for (int i = 0; i < 10; ++i) { 13267 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13268 { 13269 bar(); 13270 } 13271 } 13272 #pragma omp target 13273 #pragma omp teams distribute simd 13274 for (int i = 0; i < 10; ++i) { 13275 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13276 { 13277 bar(); 13278 } 13279 } 13280 #pragma omp target 13281 #pragma omp teams distribute simd 13282 for (int i = 0; i < 10; ++i) { 13283 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13284 { 13285 #pragma omp single 13286 { 13287 bar(); 13288 } 13289 } 13290 } 13291 #pragma omp target 13292 #pragma omp teams distribute simd 13293 for (int i = 0; i < 10; ++i) { 13294 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13295 for (int i = 0; i < 10; ++i) 13296 ; 13297 } 13298 #pragma omp target 13299 #pragma omp teams distribute simd 13300 for (int i = 0; i < 10; ++i) { 13301 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13302 for (int i = 0; i < 10; ++i) 13303 ; 13304 } 13305 #pragma omp target 13306 #pragma omp teams distribute simd 13307 for (int i = 0; i < 10; ++i) { 13308 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13309 { 13310 bar(); 13311 } 13312 } 13313 #pragma omp target 13314 #pragma omp teams distribute simd 13315 for (int i = 0; i < 10; ++i) { 13316 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13317 { 13318 bar(); 13319 } 13320 } 13321 #pragma omp target 13322 #pragma omp teams distribute simd 13323 for (int i = 0; i < 10; ++i) { 13324 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13325 bar(); 13326 } 13327 #pragma omp target 13328 #pragma omp teams distribute simd 13329 for (int i = 0; i < 10; ++i) { 13330 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13331 bar(); 13332 } 13333 #pragma omp target 13334 #pragma omp teams distribute simd 13335 for (int i = 0; i < 10; ++i) { 13336 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13337 bar(); 13338 } 13339 #pragma omp target 13340 #pragma omp teams distribute simd 13341 for (int i = 0; i < 10; ++i) { 13342 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13343 bar(); 13344 } 13345 #pragma omp target 13346 #pragma omp teams distribute simd 13347 for (int i = 0; i < 10; ++i) { 13348 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13349 bar(); 13350 } 13351 #pragma omp target 13352 #pragma omp teams distribute simd 13353 for (int i = 0; i < 10; ++i) { 13354 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13355 ++a; 13356 } 13357 #pragma omp target 13358 #pragma omp teams distribute simd 13359 for (int i = 0; i < 10; ++i) { 13360 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13361 ++a; 13362 } 13363 #pragma omp target 13364 #pragma omp teams distribute simd 13365 for (int i = 0; i < 10; ++i) { 13366 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13367 ++a; 13368 } 13369 #pragma omp target 13370 #pragma omp teams distribute simd 13371 for (int i = 0; i < 10; ++i) { 13372 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13373 for (int i = 0; i < 10; ++i) 13374 ; 13375 } 13376 #pragma omp target 13377 #pragma omp teams distribute simd 13378 for (int i = 0; i < 10; ++i) { 13379 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13380 ++a; 13381 } 13382 #pragma omp target 13383 #pragma omp teams distribute simd 13384 for (int i = 0; i < 10; ++i) { 13385 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13386 ++a; 13387 } 13388 #pragma omp target 13389 #pragma omp teams distribute simd 13390 for (int i = 0; i < 10; ++i) { 13391 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13392 ++a; 13393 } 13394 #pragma omp target 13395 #pragma omp teams distribute simd 13396 for (int i = 0; i < 10; ++i) { 13397 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13398 ++a; 13399 } 13400 #pragma omp target 13401 #pragma omp teams distribute simd 13402 for (int i = 0; i < 10; ++i) { 13403 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13404 for (int i = 0; i < 10; ++i) 13405 ++a; 13406 } 13407 #pragma omp target 13408 #pragma omp teams distribute simd 13409 for (int i = 0; i < 10; ++i) { 13410 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13411 for (int i = 0; i < 10; ++i) 13412 ++a; 13413 } 13414 #pragma omp target 13415 #pragma omp teams distribute simd 13416 for (int i = 0; i < 10; ++i) { 13417 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13418 for (int i = 0; i < 10; ++i) 13419 ++a; 13420 } 13421 #pragma omp target 13422 #pragma omp teams distribute simd 13423 for (int i = 0; i < 10; ++i) { 13424 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13425 for (int i = 0; i < 10; ++i) 13426 ++a; 13427 } 13428 #pragma omp target 13429 #pragma omp teams distribute simd 13430 for (int i = 0; i < 10; ++i) { 13431 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13432 for (int i = 0; i < 10; ++i) 13433 ++a; 13434 } 13435 #pragma omp target 13436 #pragma omp teams distribute simd 13437 for (int i = 0; i < 10; ++i) { 13438 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13439 for (int i = 0; i < 10; ++i) 13440 ++a; 13441 } 13442 #pragma omp target 13443 #pragma omp teams distribute simd 13444 for (int i = 0; i < 10; ++i) { 13445 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13446 ++a; 13447 } 13448 13449 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 13450 #pragma omp teams distribute parallel for simd // expected-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 13451 for (int i = 0; i < 10; ++i) 13452 ; 13453 #pragma omp target 13454 #pragma omp teams distribute parallel for simd 13455 for (int i = 0; i < 10; ++i) { 13456 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13457 for (int i = 0; i < 10; ++i) 13458 ; 13459 } 13460 #pragma omp target 13461 #pragma omp teams distribute parallel for simd 13462 for (int i = 0; i < 10; ++i) { 13463 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13464 for (int i = 0; i < 10; ++i) 13465 ; 13466 } 13467 #pragma omp target 13468 #pragma omp teams distribute parallel for simd 13469 for (int i = 0; i < 10; ++i) { 13470 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13471 for (int i = 0; i < 10; ++i) 13472 ; 13473 } 13474 #pragma omp target 13475 #pragma omp teams distribute parallel for simd 13476 for (int i = 0; i < 10; ++i) { 13477 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 13478 for (int i = 0; i < 10; ++i) 13479 ; 13480 } 13481 #pragma omp target 13482 #pragma omp teams distribute parallel for simd 13483 for (int i = 0; i < 10; ++i) { 13484 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13485 for (int i = 0; i < 10; ++i) 13486 ; 13487 } 13488 #pragma omp target 13489 #pragma omp teams distribute parallel for simd 13490 for (int i = 0; i < 10; ++i) { 13491 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13492 for (int i = 0; i < 10; ++i) 13493 ; 13494 } 13495 #pragma omp target 13496 #pragma omp teams distribute parallel for simd 13497 for (int i = 0; i < 10; ++i) { 13498 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13499 { 13500 bar(); 13501 } 13502 } 13503 #pragma omp target 13504 #pragma omp teams distribute parallel for simd 13505 for (int i = 0; i < 10; ++i) { 13506 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13507 { 13508 bar(); 13509 } 13510 } 13511 #pragma omp target 13512 #pragma omp teams distribute parallel for simd 13513 for (int i = 0; i < 10; ++i) { 13514 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13515 { 13516 bar(); 13517 } 13518 } 13519 #pragma omp target 13520 #pragma omp teams distribute parallel for simd 13521 for (int i = 0; i < 10; ++i) { 13522 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13523 { 13524 bar(); 13525 } 13526 } 13527 #pragma omp target 13528 #pragma omp teams distribute parallel for simd 13529 for (int i = 0; i < 10; ++i) { 13530 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13531 { 13532 bar(); 13533 } 13534 } 13535 #pragma omp target 13536 #pragma omp teams distribute parallel for simd 13537 for (int i = 0; i < 10; ++i) { 13538 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13539 { 13540 #pragma omp single 13541 { 13542 bar(); 13543 } 13544 } 13545 } 13546 #pragma omp target 13547 #pragma omp teams distribute parallel for simd 13548 for (int i = 0; i < 10; ++i) { 13549 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13550 for (int i = 0; i < 10; ++i) 13551 ; 13552 } 13553 #pragma omp target 13554 #pragma omp teams distribute parallel for simd 13555 for (int i = 0; i < 10; ++i) { 13556 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13557 for (int i = 0; i < 10; ++i) 13558 ; 13559 } 13560 #pragma omp target 13561 #pragma omp teams distribute parallel for simd 13562 for (int i = 0; i < 10; ++i) { 13563 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13564 { 13565 bar(); 13566 } 13567 } 13568 #pragma omp target 13569 #pragma omp teams distribute parallel for simd 13570 for (int i = 0; i < 10; ++i) { 13571 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13572 { 13573 bar(); 13574 } 13575 } 13576 #pragma omp target 13577 #pragma omp teams distribute parallel for simd 13578 for (int i = 0; i < 10; ++i) { 13579 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13580 bar(); 13581 } 13582 #pragma omp target 13583 #pragma omp teams distribute parallel for simd 13584 for (int i = 0; i < 10; ++i) { 13585 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13586 bar(); 13587 } 13588 #pragma omp target 13589 #pragma omp teams distribute parallel for simd 13590 for (int i = 0; i < 10; ++i) { 13591 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13592 bar(); 13593 } 13594 #pragma omp target 13595 #pragma omp teams distribute parallel for simd 13596 for (int i = 0; i < 10; ++i) { 13597 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13598 bar(); 13599 } 13600 #pragma omp target 13601 #pragma omp teams distribute parallel for simd 13602 for (int i = 0; i < 10; ++i) { 13603 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13604 bar(); 13605 } 13606 #pragma omp target 13607 #pragma omp teams distribute parallel for simd 13608 for (int i = 0; i < 10; ++i) { 13609 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13610 ++a; 13611 } 13612 #pragma omp target 13613 #pragma omp teams distribute parallel for simd 13614 for (int i = 0; i < 10; ++i) { 13615 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13616 ++a; 13617 } 13618 #pragma omp target 13619 #pragma omp teams distribute parallel for simd 13620 for (int i = 0; i < 10; ++i) { 13621 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13622 ++a; 13623 } 13624 #pragma omp target 13625 #pragma omp teams distribute parallel for simd 13626 for (int i = 0; i < 10; ++i) { 13627 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13628 for (int i = 0; i < 10; ++i) 13629 ; 13630 } 13631 #pragma omp target 13632 #pragma omp teams distribute parallel for simd 13633 for (int i = 0; i < 10; ++i) { 13634 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13635 ++a; 13636 } 13637 #pragma omp target 13638 #pragma omp teams distribute parallel for simd 13639 for (int i = 0; i < 10; ++i) { 13640 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13641 ++a; 13642 } 13643 #pragma omp target 13644 #pragma omp teams distribute parallel for simd 13645 for (int i = 0; i < 10; ++i) { 13646 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13647 ++a; 13648 } 13649 #pragma omp target 13650 #pragma omp teams distribute parallel for simd 13651 for (int i = 0; i < 10; ++i) { 13652 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13653 ++a; 13654 } 13655 #pragma omp target 13656 #pragma omp teams distribute parallel for simd 13657 for (int i = 0; i < 10; ++i) { 13658 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13659 for (int i = 0; i < 10; ++i) 13660 ++a; 13661 } 13662 #pragma omp target 13663 #pragma omp teams distribute parallel for simd 13664 for (int i = 0; i < 10; ++i) { 13665 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13666 for (int i = 0; i < 10; ++i) 13667 ++a; 13668 } 13669 #pragma omp target 13670 #pragma omp teams distribute parallel for simd 13671 for (int i = 0; i < 10; ++i) { 13672 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13673 for (int i = 0; i < 10; ++i) 13674 ++a; 13675 } 13676 #pragma omp target 13677 #pragma omp teams distribute parallel for simd 13678 for (int i = 0; i < 10; ++i) { 13679 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13680 for (int i = 0; i < 10; ++i) 13681 ++a; 13682 } 13683 #pragma omp target 13684 #pragma omp teams distribute parallel for simd 13685 for (int i = 0; i < 10; ++i) { 13686 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13687 for (int i = 0; i < 10; ++i) 13688 ++a; 13689 } 13690 #pragma omp target 13691 #pragma omp teams distribute parallel for simd 13692 for (int i = 0; i < 10; ++i) { 13693 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13694 for (int i = 0; i < 10; ++i) 13695 ++a; 13696 } 13697 #pragma omp target 13698 #pragma omp teams distribute parallel for simd 13699 for (int i = 0; i < 10; ++i) { 13700 #pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13701 ++a; 13702 } 13703 13704 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 13705 #pragma omp teams distribute parallel for // expected-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 13706 for (int i = 0; i < 10; ++i) 13707 ; 13708 #pragma omp target 13709 #pragma omp teams distribute parallel for 13710 for (int i = 0; i < 10; ++i) { 13711 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}} 13712 for (int i = 0; i < 10; ++i) 13713 ; 13714 } 13715 #pragma omp target 13716 #pragma omp teams distribute parallel for 13717 for (int i = 0; i < 10; ++i) { 13718 #pragma omp distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}} 13719 for (int i = 0; i < 10; ++i) 13720 ; 13721 } 13722 #pragma omp target 13723 #pragma omp teams distribute parallel for 13724 for (int i = 0; i < 10; ++i) { 13725 #pragma omp for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 13726 for (int i = 0; i < 10; ++i) 13727 ; 13728 } 13729 #pragma omp target 13730 #pragma omp teams distribute parallel for 13731 for (int i = 0; i < 10; ++i) { 13732 #pragma omp simd // OK 13733 for (int i = 0; i < 10; ++i) 13734 ; 13735 } 13736 #pragma omp target 13737 #pragma omp teams distribute parallel for 13738 for (int i = 0; i < 10; ++i) { 13739 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 13740 for (int i = 0; i < 10; ++i) 13741 ; 13742 } 13743 #pragma omp target 13744 #pragma omp teams distribute parallel for 13745 for (int i = 0; i < 10; ++i) { 13746 #pragma omp parallel // OK 13747 for (int i = 0; i < 10; ++i) 13748 ; 13749 } 13750 #pragma omp target 13751 #pragma omp teams distribute parallel for 13752 for (int i = 0; i < 10; ++i) { 13753 #pragma omp sections // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 13754 { 13755 bar(); 13756 } 13757 } 13758 #pragma omp target 13759 #pragma omp teams distribute parallel for 13760 for (int i = 0; i < 10; ++i) { 13761 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 13762 { 13763 bar(); 13764 } 13765 } 13766 #pragma omp target 13767 #pragma omp teams distribute parallel for 13768 for (int i = 0; i < 10; ++i) { 13769 #pragma omp single // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 13770 { 13771 bar(); 13772 } 13773 } 13774 #pragma omp target 13775 #pragma omp teams distribute parallel for 13776 for (int i = 0; i < 10; ++i) { 13777 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 13778 { 13779 bar(); 13780 } 13781 } 13782 #pragma omp target 13783 #pragma omp teams distribute parallel for 13784 for (int i = 0; i < 10; ++i) { 13785 #pragma omp critical // OK 13786 { 13787 bar(); 13788 } 13789 } 13790 #pragma omp target 13791 #pragma omp teams distribute parallel for 13792 for (int i = 0; i < 10; ++i) { 13793 #pragma omp parallel // OK 13794 { 13795 #pragma omp single 13796 { 13797 bar(); 13798 } 13799 } 13800 } 13801 #pragma omp target 13802 #pragma omp teams distribute parallel for 13803 for (int i = 0; i < 10; ++i) { 13804 #pragma omp parallel for // OK 13805 for (int i = 0; i < 10; ++i) 13806 ; 13807 } 13808 #pragma omp target 13809 #pragma omp teams distribute parallel for 13810 for (int i = 0; i < 10; ++i) { 13811 #pragma omp parallel for simd // OK 13812 for (int i = 0; i < 10; ++i) 13813 ; 13814 } 13815 #pragma omp target 13816 #pragma omp teams distribute parallel for 13817 for (int i = 0; i < 10; ++i) { 13818 #pragma omp parallel sections // OK 13819 { 13820 bar(); 13821 } 13822 } 13823 #pragma omp target 13824 #pragma omp teams distribute parallel for 13825 for (int i = 0; i < 10; ++i) { 13826 #pragma omp task // OK 13827 { 13828 bar(); 13829 } 13830 } 13831 #pragma omp target 13832 #pragma omp teams distribute parallel for 13833 for (int i = 0; i < 10; ++i) { 13834 #pragma omp taskyield // OK 13835 bar(); 13836 } 13837 #pragma omp target 13838 #pragma omp teams distribute parallel for 13839 for (int i = 0; i < 10; ++i) { 13840 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 13841 bar(); 13842 } 13843 #pragma omp target 13844 #pragma omp teams distribute parallel for 13845 for (int i = 0; i < 10; ++i) { 13846 #pragma omp taskwait // OK 13847 bar(); 13848 } 13849 #pragma omp target 13850 #pragma omp teams distribute parallel for 13851 for (int i = 0; i < 10; ++i) { 13852 #pragma omp flush // OK 13853 bar(); 13854 } 13855 #pragma omp target 13856 #pragma omp teams distribute parallel for 13857 for (int i = 0; i < 10; ++i) { 13858 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 13859 bar(); 13860 } 13861 #pragma omp target 13862 #pragma omp teams distribute parallel for 13863 for (int i = 0; i < 10; ++i) { 13864 #pragma omp atomic // OK 13865 ++a; 13866 } 13867 #pragma omp target 13868 #pragma omp teams distribute parallel for 13869 for (int i = 0; i < 10; ++i) { 13870 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13871 ++a; 13872 } 13873 #pragma omp target 13874 #pragma omp teams distribute parallel for 13875 for (int i = 0; i < 10; ++i) { 13876 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13877 ++a; 13878 } 13879 #pragma omp target 13880 #pragma omp teams distribute parallel for 13881 for (int i = 0; i < 10; ++i) { 13882 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13883 for (int i = 0; i < 10; ++i) 13884 ; 13885 } 13886 #pragma omp target 13887 #pragma omp teams distribute parallel for 13888 for (int i = 0; i < 10; ++i) { 13889 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13890 ++a; 13891 } 13892 #pragma omp target 13893 #pragma omp teams distribute parallel for 13894 for (int i = 0; i < 10; ++i) { 13895 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13896 ++a; 13897 } 13898 #pragma omp target 13899 #pragma omp teams distribute parallel for 13900 for (int i = 0; i < 10; ++i) { 13901 #pragma omp teams // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 13902 ++a; 13903 } 13904 #pragma omp target 13905 #pragma omp teams distribute parallel for 13906 for (int i = 0; i < 10; ++i) { 13907 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13908 ++a; 13909 } 13910 #pragma omp target 13911 #pragma omp teams distribute parallel for 13912 for (int i = 0; i < 10; ++i) { 13913 #pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}} 13914 for (int i = 0; i < 10; ++i) 13915 ++a; 13916 } 13917 #pragma omp target 13918 #pragma omp teams distribute parallel for 13919 for (int i = 0; i < 10; ++i) { 13920 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13921 for (int i = 0; i < 10; ++i) 13922 ++a; 13923 } 13924 #pragma omp target 13925 #pragma omp teams distribute parallel for 13926 for (int i = 0; i < 10; ++i) { 13927 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 13928 for (int i = 0; i < 10; ++i) 13929 ++a; 13930 } 13931 #pragma omp target 13932 #pragma omp teams distribute parallel for 13933 for (int i = 0; i < 10; ++i) { 13934 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 13935 for (int i = 0; i < 10; ++i) 13936 ++a; 13937 } 13938 #pragma omp target 13939 #pragma omp teams distribute parallel for 13940 for (int i = 0; i < 10; ++i) { 13941 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 13942 for (int i = 0; i < 10; ++i) 13943 ++a; 13944 } 13945 #pragma omp target 13946 #pragma omp teams distribute parallel for 13947 for (int i = 0; i < 10; ++i) { 13948 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 13949 for (int i = 0; i < 10; ++i) 13950 ++a; 13951 } 13952 #pragma omp target 13953 #pragma omp teams distribute parallel for 13954 for (int i = 0; i < 10; ++i) { 13955 #pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}} 13956 ++a; 13957 } 13958 13959 // TARGET TEAMS DIRECTIVE 13960 #pragma omp target teams 13961 #pragma omp parallel 13962 bar(); 13963 #pragma omp target teams 13964 #pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}} 13965 for (int i = 0; i < 10; ++i) 13966 ; 13967 #pragma omp target teams 13968 #pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}} 13969 for (int i = 0; i < 10; ++i) 13970 ; 13971 #pragma omp target teams 13972 #pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}} 13973 for (int i = 0; i < 10; ++i) 13974 ; 13975 #pragma omp target teams 13976 #pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}} 13977 { 13978 bar(); 13979 } 13980 #pragma omp target teams 13981 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}} 13982 { 13983 bar(); 13984 } 13985 #pragma omp target teams 13986 #pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}} 13987 bar(); 13988 13989 #pragma omp target teams 13990 #pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}} 13991 { 13992 bar(); 13993 } 13994 #pragma omp target teams 13995 #pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}} 13996 { 13997 bar(); 13998 } 13999 #pragma omp target teams 14000 #pragma omp parallel for 14001 for (int i = 0; i < 10; ++i) 14002 ; 14003 #pragma omp target teams 14004 #pragma omp parallel for simd 14005 for (int i = 0; i < 10; ++i) 14006 ; 14007 #pragma omp target teams 14008 #pragma omp parallel sections 14009 { 14010 bar(); 14011 } 14012 #pragma omp target teams 14013 #pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}} 14014 { 14015 bar(); 14016 } 14017 #pragma omp target teams 14018 { 14019 #pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}} 14020 bar(); 14021 } 14022 #pragma omp target teams 14023 { 14024 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}} 14025 bar(); 14026 } 14027 #pragma omp target teams 14028 { 14029 #pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}} 14030 bar(); 14031 } 14032 #pragma omp target teams 14033 { 14034 #pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}} 14035 bar(); 14036 } 14037 #pragma omp target teams 14038 { 14039 #pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}} 14040 bar(); 14041 } 14042 #pragma omp target teams 14043 { 14044 #pragma omp atomic // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}} 14045 ++a; 14046 } 14047 #pragma omp target teams 14048 { 14049 #pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}} 14050 ++a; 14051 } 14052 #pragma omp target teams 14053 { 14054 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}} 14055 ++a; 14056 } 14057 #pragma omp target teams 14058 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}} 14059 for (int i = 0; i < 10; ++i) 14060 ; 14061 #pragma omp target teams 14062 { 14063 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}} 14064 } 14065 #pragma omp target teams 14066 { 14067 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}} 14068 } 14069 #pragma omp target teams 14070 { 14071 #pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}} 14072 ++a; 14073 } 14074 #pragma omp target teams 14075 { 14076 #pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}} 14077 for (int i = 0; i < 10; ++i) 14078 ++a; 14079 } 14080 #pragma omp target teams 14081 #pragma omp distribute 14082 for (int i = 0; i < 10; ++i) 14083 ; 14084 #pragma omp target teams 14085 { 14086 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}} 14087 ++a; 14088 } 14089 #pragma omp target teams 14090 #pragma omp distribute parallel for 14091 for (int i = 0; i < 10; ++i) 14092 ; 14093 #pragma omp target teams 14094 { 14095 #pragma omp distribute parallel for 14096 for (int i = 0; i < 10; ++i) 14097 ; 14098 #pragma omp distribute parallel for 14099 for (int j = 0; j < 10; ++j) 14100 ; 14101 } 14102 #pragma omp target teams 14103 { 14104 #pragma omp distribute parallel for simd 14105 for (int i = 0; i < 10; ++i) 14106 ; 14107 #pragma omp distribute parallel for simd 14108 for (int j = 0; j < 10; ++j) 14109 ; 14110 } 14111 #pragma omp target teams 14112 { 14113 #pragma omp distribute simd 14114 for (int i = 0; i < 10; ++i) 14115 ; 14116 #pragma omp distribute simd 14117 for (int j = 0; j < 10; ++j) 14118 ; 14119 } 14120 #pragma omp target teams 14121 { 14122 #pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}} 14123 for (int i = 0; i < 10; ++i) 14124 ; 14125 } 14126 #pragma omp target teams 14127 { 14128 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}} 14129 for (int i = 0; i < 10; ++i) 14130 ; 14131 } 14132 #pragma omp target teams 14133 { 14134 #pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}} 14135 for (int i = 0; i < 10; ++i) 14136 ; 14137 } 14138 #pragma omp target teams 14139 { 14140 #pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}} 14141 for (int i = 0; i < 10; ++i) 14142 ; 14143 } 14144 #pragma omp target teams 14145 { 14146 #pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}} 14147 for (int i = 0; i < 10; ++i) 14148 ; 14149 } 14150 #pragma omp target teams 14151 { 14152 #pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}} 14153 a++; 14154 } 14155 14156 return foo<int>(); 14157 } 14158 14159