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 189 // SIMD DIRECTIVE 190 #pragma omp simd 191 for (int i = 0; i < 10; ++i) { 192 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 193 for (int i = 0; i < 10; ++i) 194 ; 195 } 196 #pragma omp simd 197 for (int i = 0; i < 10; ++i) { 198 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 199 for (int i = 0; i < 10; ++i) 200 ; 201 } 202 #pragma omp simd 203 for (int i = 0; i < 10; ++i) { 204 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 205 for (int i = 0; i < 10; ++i) 206 ; 207 } 208 #pragma omp simd 209 for (int i = 0; i < 10; ++i) { 210 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 211 for (int i = 0; i < 10; ++i) 212 ; 213 } 214 #pragma omp simd 215 for (int i = 0; i < 10; ++i) { 216 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 217 { 218 bar(); 219 } 220 } 221 #pragma omp simd 222 for (int i = 0; i < 10; ++i) { 223 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 224 { 225 bar(); 226 } 227 } 228 #pragma omp simd 229 for (int i = 0; i < 10; ++i) { 230 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 231 { 232 bar(); 233 } 234 } 235 #pragma omp simd 236 for (int i = 0; i < 10; ++i) { 237 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 238 { 239 bar(); 240 } 241 } 242 #pragma omp simd 243 for (int i = 0; i < 10; ++i) { 244 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 245 { 246 bar(); 247 } 248 } 249 #pragma omp simd 250 for (int i = 0; i < 10; ++i) { 251 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 252 for (int i = 0; i < 10; ++i) 253 ; 254 } 255 #pragma omp simd 256 for (int i = 0; i < 10; ++i) { 257 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 258 for (int i = 0; i < 10; ++i) 259 ; 260 } 261 #pragma omp simd 262 for (int i = 0; i < 10; ++i) { 263 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 264 { 265 bar(); 266 } 267 } 268 #pragma omp simd 269 for (int i = 0; i < 10; ++i) { 270 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 271 { 272 bar(); 273 } 274 } 275 #pragma omp simd 276 for (int i = 0; i < 10; ++i) { 277 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 278 bar(); 279 } 280 #pragma omp simd 281 for (int i = 0; i < 10; ++i) { 282 #pragma omp barrier // 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 taskwait // 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 flush // 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 ordered // 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 simd // OK 303 bar(); 304 } 305 #pragma omp simd 306 for (int i = 0; i < 10; ++i) { 307 #pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}} 308 bar(); 309 } 310 #pragma omp simd 311 for (int i = 0; i < 10; ++i) { 312 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 313 ++a; 314 } 315 #pragma omp simd 316 for (int i = 0; i < 10; ++i) { 317 #pragma omp target // 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 parallel // 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 for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 328 for (int i = 0; i < 10; ++i) 329 ; 330 } 331 #pragma omp simd 332 for (int i = 0; i < 10; ++i) { 333 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 334 ++a; 335 } 336 #pragma omp simd 337 for (int i = 0; i < 10; ++i) { 338 #pragma omp target exit data map(from: 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 teams // 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 taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 349 for (int i = 0; i < 10; ++i) 350 ++a; 351 } 352 #pragma omp simd 353 for (int i = 0; i < 10; ++i) { 354 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 355 for (int j = 0; j < 10; ++j) 356 ; 357 } 358 #pragma omp simd 359 for (int i = 0; i < 10; ++i) { 360 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 361 } 362 #pragma omp simd 363 for (int i = 0; i < 10; ++i) { 364 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}} 365 for (int j = 0; j < 10; ++j) 366 ; 367 } 368 #pragma omp simd 369 for (int i = 0; i < 10; ++i) { 370 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 371 for (int j = 0; j < 10; ++j) 372 ; 373 } 374 #pragma omp simd 375 for (int i = 0; i < 10; ++i) { 376 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 377 for (int j = 0; j < 10; ++j) 378 ; 379 } 380 #pragma omp simd 381 for (int i = 0; i < 10; ++i) { 382 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 383 for (int j = 0; j < 10; ++j) 384 ; 385 } 386 #pragma omp simd 387 for (int i = 0; i < 10; ++i) { 388 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 389 for (int j = 0; j < 10; ++j) 390 ; 391 } 392 #pragma omp simd 393 for (int i = 0; i < 10; ++i) { 394 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 395 for (int j = 0; j < 10; ++j) 396 ; 397 } 398 #pragma omp simd 399 for (int i = 0; i < 10; ++i) { 400 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 401 for (int j = 0; j < 10; ++j) 402 ; 403 } 404 #pragma omp simd 405 for (int i = 0; i < 10; ++i) { 406 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 407 for (int j = 0; j < 10; ++j) 408 ; 409 } 410 411 // FOR DIRECTIVE 412 #pragma omp for 413 for (int i = 0; i < 10; ++i) { 414 #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?}} 415 for (int i = 0; i < 10; ++i) 416 ; 417 } 418 #pragma omp for 419 for (int i = 0; i < 10; ++i) { 420 #pragma omp simd 421 for (int i = 0; i < 10; ++i) 422 ; 423 } 424 #pragma omp for 425 for (int i = 0; i < 10; ++i) { 426 #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?}} 427 for (int i = 0; i < 10; ++i) 428 ; 429 } 430 #pragma omp for 431 for (int i = 0; i < 10; ++i) { 432 #pragma omp parallel 433 for (int i = 0; i < 10; ++i) 434 ; 435 } 436 #pragma omp for 437 for (int i = 0; i < 10; ++i) { 438 #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?}} 439 { 440 bar(); 441 } 442 } 443 #pragma omp for 444 for (int i = 0; i < 10; ++i) { 445 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 446 { 447 bar(); 448 } 449 } 450 #pragma omp for 451 for (int i = 0; i < 10; ++i) { 452 #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?}} 453 { 454 bar(); 455 } 456 } 457 458 #pragma omp for 459 for (int i = 0; i < 10; ++i) { 460 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 461 { 462 bar(); 463 } 464 } 465 #pragma omp for 466 for (int i = 0; i < 10; ++i) { 467 #pragma omp critical 468 { 469 bar(); 470 } 471 } 472 #pragma omp for 473 for (int i = 0; i < 10; ++i) { 474 #pragma omp parallel 475 { 476 #pragma omp single // OK 477 { 478 bar(); 479 } 480 #pragma omp for // OK 481 for (int i = 0; i < 10; ++i) 482 ; 483 #pragma omp sections // OK 484 { 485 bar(); 486 } 487 } 488 } 489 #pragma omp for 490 for (int i = 0; i < 10; ++i) { 491 #pragma omp parallel for 492 for (int i = 0; i < 10; ++i) 493 ; 494 } 495 #pragma omp for 496 for (int i = 0; i < 10; ++i) { 497 #pragma omp parallel for simd 498 for (int i = 0; i < 10; ++i) 499 ; 500 } 501 #pragma omp for 502 for (int i = 0; i < 10; ++i) { 503 #pragma omp parallel sections 504 { 505 bar(); 506 } 507 } 508 #pragma omp for 509 for (int i = 0; i < 10; ++i) { 510 #pragma omp task 511 { 512 bar(); 513 } 514 } 515 #pragma omp for 516 for (int i = 0; i < 10; ++i) { 517 #pragma omp taskyield 518 bar(); 519 } 520 #pragma omp for 521 for (int i = 0; i < 10; ++i) { 522 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 523 bar(); 524 } 525 #pragma omp for 526 for (int i = 0; i < 10; ++i) { 527 #pragma omp taskwait 528 bar(); 529 } 530 #pragma omp for 531 for (int i = 0; i < 10; ++i) { 532 #pragma omp flush 533 bar(); 534 } 535 #pragma omp for 536 for (int i = 0; i < 10; ++i) { 537 #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?}} 538 bar(); 539 } 540 #pragma omp for ordered 541 for (int i = 0; i < 10; ++i) { 542 #pragma omp ordered // OK 543 bar(); 544 } 545 #pragma omp for 546 for (int i = 0; i < 10; ++i) { 547 #pragma omp atomic 548 ++a; 549 } 550 #pragma omp for 551 for (int i = 0; i < 10; ++i) { 552 #pragma omp target 553 ++a; 554 } 555 #pragma omp for 556 for (int i = 0; i < 10; ++i) { 557 #pragma omp target parallel 558 ++a; 559 } 560 #pragma omp for 561 for (int i = 0; i < 10; ++i) { 562 #pragma omp target parallel for 563 for (int i = 0; i < 10; ++i) 564 ; 565 } 566 #pragma omp for 567 for (int i = 0; i < 10; ++i) { 568 #pragma omp target enter data map(to: a) 569 ++a; 570 } 571 #pragma omp for 572 for (int i = 0; i < 10; ++i) { 573 #pragma omp target exit data map(from: a) 574 ++a; 575 } 576 #pragma omp for 577 for (int i = 0; i < 10; ++i) { 578 #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?}} 579 ++a; 580 } 581 #pragma omp for 582 for (int i = 0; i < 10; ++i) { 583 #pragma omp taskloop 584 for (int i = 0; i < 10; ++i) 585 ++a; 586 } 587 #pragma omp for 588 for (int i = 0; i < 10; ++i) { 589 #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?}} 590 for (int j = 0; j < 10; ++j) 591 ; 592 } 593 #pragma omp for 594 for (int i = 0; i < 10; ++i) { 595 #pragma omp target update to(a) 596 } 597 #pragma omp for 598 for (int i = 0; i < 10; ++i) { 599 #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?}} 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 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?}} 606 for (int j = 0; j < 10; ++j) 607 ; 608 } 609 #pragma omp for 610 for (int i = 0; i < 10; ++i) { 611 #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?}} 612 for (int j = 0; j < 10; ++j) 613 ; 614 } 615 #pragma omp for 616 for (int i = 0; i < 10; ++i) { 617 #pragma omp target simd // OK 618 for (int j = 0; j < 10; ++j) 619 ; 620 } 621 #pragma omp for 622 for (int i = 0; i < 10; ++i) { 623 #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?}} 624 for (int j = 0; j < 10; ++j) 625 ; 626 } 627 #pragma omp for 628 for (int i = 0; i < 10; ++i) { 629 #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?}} 630 for (int j = 0; j < 10; ++j) 631 ; 632 } 633 #pragma omp for 634 for (int i = 0; i < 10; ++i) { 635 #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?}} 636 for (int j = 0; j < 10; ++j) 637 ; 638 } 639 #pragma omp for 640 for (int i = 0; i < 10; ++i) { 641 #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?}} 642 for (int j = 0; j < 10; ++j) 643 ; 644 } 645 646 // FOR SIMD DIRECTIVE 647 #pragma omp for simd 648 for (int i = 0; i < 10; ++i) { 649 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 650 for (int i = 0; i < 10; ++i) 651 ; 652 } 653 #pragma omp for simd 654 for (int i = 0; i < 10; ++i) { 655 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 656 for (int i = 0; i < 10; ++i) 657 ; 658 } 659 #pragma omp for simd 660 for (int i = 0; i < 10; ++i) { 661 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 662 for (int i = 0; i < 10; ++i) 663 ; 664 } 665 #pragma omp for simd 666 for (int i = 0; i < 10; ++i) { 667 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 668 for (int i = 0; i < 10; ++i) 669 ; 670 } 671 #pragma omp for simd 672 for (int i = 0; i < 10; ++i) { 673 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 674 { 675 bar(); 676 } 677 } 678 #pragma omp for simd 679 for (int i = 0; i < 10; ++i) { 680 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 681 { 682 bar(); 683 } 684 } 685 #pragma omp for simd 686 for (int i = 0; i < 10; ++i) { 687 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 688 { 689 bar(); 690 } 691 } 692 #pragma omp for simd 693 for (int i = 0; i < 10; ++i) { 694 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 695 { 696 bar(); 697 } 698 } 699 #pragma omp for simd 700 for (int i = 0; i < 10; ++i) { 701 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 702 { 703 bar(); 704 } 705 } 706 #pragma omp for simd 707 for (int i = 0; i < 10; ++i) { 708 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 709 for (int i = 0; i < 10; ++i) 710 ; 711 } 712 #pragma omp for simd 713 for (int i = 0; i < 10; ++i) { 714 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 715 for (int i = 0; i < 10; ++i) 716 ; 717 } 718 #pragma omp for simd 719 for (int i = 0; i < 10; ++i) { 720 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 721 { 722 bar(); 723 } 724 } 725 #pragma omp for simd 726 for (int i = 0; i < 10; ++i) { 727 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 728 { 729 bar(); 730 } 731 } 732 #pragma omp for simd 733 for (int i = 0; i < 10; ++i) { 734 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 735 bar(); 736 } 737 #pragma omp for simd 738 for (int i = 0; i < 10; ++i) { 739 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 740 bar(); 741 } 742 #pragma omp for simd 743 for (int i = 0; i < 10; ++i) { 744 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 745 bar(); 746 } 747 #pragma omp for simd 748 for (int i = 0; i < 10; ++i) { 749 #pragma omp flush // 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 ordered // 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 ordered simd // OK 760 bar(); 761 } 762 #pragma omp for simd 763 for (int i = 0; i < 10; ++i) { 764 #pragma omp ordered threads // 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 atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 770 ++a; 771 } 772 #pragma omp for simd 773 for (int i = 0; i < 10; ++i) { 774 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 775 ++a; 776 } 777 #pragma omp for simd 778 for (int i = 0; i < 10; ++i) { 779 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 780 ++a; 781 } 782 #pragma omp for simd 783 for (int i = 0; i < 10; ++i) { 784 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 785 for (int i = 0; i < 10; ++i) 786 ; 787 } 788 #pragma omp for simd 789 for (int i = 0; i < 10; ++i) { 790 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 791 ++a; 792 } 793 #pragma omp for simd 794 for (int i = 0; i < 10; ++i) { 795 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 796 ++a; 797 } 798 #pragma omp for simd 799 for (int i = 0; i < 10; ++i) { 800 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 801 ++a; 802 } 803 #pragma omp for simd 804 for (int i = 0; i < 10; ++i) { 805 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 806 for (int i = 0; i < 10; ++i) 807 ++a; 808 } 809 #pragma omp for simd 810 for (int i = 0; i < 10; ++i) { 811 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 812 for (int j = 0; j < 10; ++j) 813 ; 814 } 815 #pragma omp for simd 816 for (int i = 0; i < 10; ++i) { 817 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 818 bar(); 819 } 820 #pragma omp for simd 821 for (int i = 0; i < 10; ++i) { 822 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 823 for (int j = 0; j < 10; ++j) 824 ; 825 } 826 #pragma omp for simd 827 for (int i = 0; i < 10; ++i) { 828 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 829 for (int j = 0; j < 10; ++j) 830 ; 831 } 832 #pragma omp for simd 833 for (int i = 0; i < 10; ++i) { 834 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 835 for (int j = 0; j < 10; ++j) 836 ; 837 } 838 #pragma omp for simd 839 for (int i = 0; i < 10; ++i) { 840 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 841 for (int j = 0; j < 10; ++j) 842 ; 843 } 844 #pragma omp for simd 845 for (int i = 0; i < 10; ++i) { 846 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 847 for (int j = 0; j < 10; ++j) 848 ; 849 } 850 #pragma omp for simd 851 for (int i = 0; i < 10; ++i) { 852 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 853 for (int j = 0; j < 10; ++j) 854 ; 855 } 856 #pragma omp for simd 857 for (int i = 0; i < 10; ++i) { 858 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 859 for (int j = 0; j < 10; ++j) 860 ; 861 } 862 #pragma omp for simd 863 for (int i = 0; i < 10; ++i) { 864 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 865 for (int j = 0; j < 10; ++j) 866 ; 867 } 868 869 // SECTIONS DIRECTIVE 870 #pragma omp sections 871 { 872 #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?}} 873 for (int i = 0; i < 10; ++i) 874 ; 875 } 876 #pragma omp sections 877 { 878 #pragma omp simd 879 for (int i = 0; i < 10; ++i) 880 ; 881 } 882 #pragma omp sections 883 { 884 #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?}} 885 for (int i = 0; i < 10; ++i) 886 ; 887 } 888 #pragma omp sections 889 { 890 #pragma omp parallel 891 for (int i = 0; i < 10; ++i) 892 ; 893 } 894 #pragma omp sections 895 { 896 #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?}} 897 { 898 bar(); 899 } 900 } 901 #pragma omp sections 902 { 903 #pragma omp section 904 { 905 bar(); 906 } 907 } 908 #pragma omp sections 909 { 910 #pragma omp parallel 911 { 912 #pragma omp single // OK 913 { 914 bar(); 915 } 916 #pragma omp for // OK 917 for (int i = 0; i < 10; ++i) 918 ; 919 #pragma omp sections // OK 920 { 921 bar(); 922 } 923 } 924 } 925 #pragma omp sections 926 { 927 #pragma omp parallel 928 { 929 #pragma omp master // OK 930 { 931 bar(); 932 } 933 #pragma omp for // OK 934 for (int i = 0; i < 10; ++i) 935 ; 936 #pragma omp master // OK 937 { 938 bar(); 939 } 940 } 941 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 942 bar(); 943 } 944 #pragma omp sections 945 { 946 #pragma omp parallel 947 { 948 #pragma omp critical(A) // OK 949 { 950 bar(); 951 } 952 #pragma omp for // OK 953 for (int i = 0; i < 10; ++i) 954 ; 955 #pragma omp critical // OK 956 { 957 bar(); 958 } 959 } 960 #pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}} 961 bar(); 962 } 963 #pragma omp sections 964 { 965 #pragma omp parallel for 966 for (int i = 0; i < 10; ++i) 967 ; 968 } 969 #pragma omp sections 970 { 971 #pragma omp parallel for simd 972 for (int i = 0; i < 10; ++i) 973 ; 974 } 975 #pragma omp sections 976 { 977 #pragma omp parallel sections 978 { 979 bar(); 980 } 981 } 982 #pragma omp sections 983 { 984 #pragma omp task 985 { 986 bar(); 987 } 988 } 989 #pragma omp sections 990 { 991 #pragma omp taskyield 992 } 993 #pragma omp sections 994 { 995 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 996 } 997 #pragma omp sections 998 { 999 #pragma omp taskwait 1000 } 1001 #pragma omp sections 1002 { 1003 #pragma omp flush 1004 } 1005 #pragma omp sections 1006 { 1007 #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?}} 1008 bar(); 1009 } 1010 #pragma omp sections 1011 { 1012 #pragma omp atomic 1013 ++a; 1014 } 1015 #pragma omp sections 1016 { 1017 #pragma omp target 1018 ++a; 1019 } 1020 #pragma omp sections 1021 { 1022 #pragma omp target parallel 1023 ++a; 1024 } 1025 #pragma omp sections 1026 { 1027 #pragma omp target parallel for 1028 for (int i = 0; i < 10; ++i) 1029 ; 1030 } 1031 #pragma omp sections 1032 { 1033 #pragma omp target enter data map(to: a) 1034 } 1035 #pragma omp sections 1036 { 1037 #pragma omp target exit data map(from: a) 1038 } 1039 #pragma omp sections 1040 { 1041 #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?}} 1042 ++a; 1043 } 1044 #pragma omp sections 1045 { 1046 #pragma omp taskloop 1047 for (int i = 0; i < 10; ++i) 1048 ++a; 1049 } 1050 #pragma omp sections 1051 { 1052 #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?}} 1053 for (int i = 0; i < 10; ++i) 1054 ; 1055 } 1056 #pragma omp sections 1057 { 1058 #pragma omp target update to(a) 1059 } 1060 #pragma omp sections 1061 { 1062 #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?}} 1063 for (int i = 0; i < 10; ++i) 1064 ; 1065 } 1066 #pragma omp sections 1067 { 1068 #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?}} 1069 for (int i = 0; i < 10; ++i) 1070 ; 1071 } 1072 #pragma omp sections 1073 { 1074 #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?}} 1075 for (int i = 0; i < 10; ++i) 1076 ; 1077 } 1078 #pragma omp sections 1079 { 1080 #pragma omp target simd // OK 1081 for (int i = 0; i < 10; ++i) 1082 ; 1083 } 1084 #pragma omp sections 1085 { 1086 #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?}} 1087 for (int i = 0; i < 10; ++i) 1088 ; 1089 } 1090 #pragma omp sections 1091 { 1092 #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?}} 1093 for (int i = 0; i < 10; ++i) 1094 ; 1095 } 1096 #pragma omp sections 1097 { 1098 #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?}} 1099 for (int i = 0; i < 10; ++i) 1100 ; 1101 } 1102 #pragma omp sections 1103 { 1104 #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?}} 1105 for (int i = 0; i < 10; ++i) 1106 ; 1107 } 1108 1109 // SECTION DIRECTIVE 1110 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 1111 { 1112 bar(); 1113 } 1114 #pragma omp sections 1115 { 1116 #pragma omp section 1117 { 1118 #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?}} 1119 for (int i = 0; i < 10; ++i) 1120 ; 1121 } 1122 } 1123 #pragma omp sections 1124 { 1125 #pragma omp section 1126 { 1127 #pragma omp simd 1128 for (int i = 0; i < 10; ++i) 1129 ; 1130 } 1131 } 1132 #pragma omp sections 1133 { 1134 #pragma omp section 1135 { 1136 #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?}} 1137 for (int i = 0; i < 10; ++i) 1138 ; 1139 } 1140 } 1141 #pragma omp sections 1142 { 1143 #pragma omp section 1144 { 1145 #pragma omp parallel 1146 for (int i = 0; i < 10; ++i) 1147 ; 1148 } 1149 } 1150 #pragma omp sections 1151 { 1152 #pragma omp section 1153 { 1154 #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?}} 1155 { 1156 bar(); 1157 } 1158 } 1159 } 1160 #pragma omp sections 1161 { 1162 #pragma omp section 1163 { 1164 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 1165 { 1166 bar(); 1167 } 1168 } 1169 } 1170 #pragma omp sections 1171 { 1172 #pragma omp section 1173 { 1174 #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?}} 1175 bar(); 1176 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 1177 bar(); 1178 #pragma omp critical 1179 bar(); 1180 } 1181 } 1182 #pragma omp sections 1183 { 1184 #pragma omp section 1185 { 1186 #pragma omp parallel 1187 { 1188 #pragma omp single // OK 1189 { 1190 bar(); 1191 } 1192 #pragma omp for // OK 1193 for (int i = 0; i < 10; ++i) 1194 ; 1195 #pragma omp for simd // OK 1196 for (int i = 0; i < 10; ++i) 1197 ; 1198 #pragma omp sections // OK 1199 { 1200 bar(); 1201 } 1202 } 1203 } 1204 } 1205 #pragma omp sections 1206 { 1207 #pragma omp section 1208 { 1209 #pragma omp parallel for 1210 for (int i = 0; i < 10; ++i) 1211 ; 1212 } 1213 } 1214 #pragma omp sections 1215 { 1216 #pragma omp section 1217 { 1218 #pragma omp parallel for simd 1219 for (int i = 0; i < 10; ++i) 1220 ; 1221 } 1222 } 1223 #pragma omp sections 1224 { 1225 #pragma omp section 1226 { 1227 #pragma omp parallel sections 1228 { 1229 bar(); 1230 } 1231 } 1232 } 1233 #pragma omp sections 1234 { 1235 #pragma omp section 1236 { 1237 #pragma omp task 1238 { 1239 bar(); 1240 } 1241 } 1242 } 1243 #pragma omp sections 1244 { 1245 #pragma omp section 1246 { 1247 #pragma omp taskyield 1248 bar(); 1249 } 1250 } 1251 #pragma omp sections 1252 { 1253 #pragma omp section 1254 { 1255 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 1256 bar(); 1257 } 1258 } 1259 #pragma omp sections 1260 { 1261 #pragma omp section 1262 { 1263 #pragma omp taskwait 1264 bar(); 1265 } 1266 } 1267 #pragma omp sections 1268 { 1269 #pragma omp section 1270 { 1271 #pragma omp flush 1272 bar(); 1273 } 1274 } 1275 #pragma omp sections 1276 { 1277 #pragma omp section 1278 { 1279 #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?}} 1280 bar(); 1281 } 1282 } 1283 #pragma omp sections 1284 { 1285 #pragma omp section 1286 #pragma omp atomic 1287 ++a; 1288 } 1289 #pragma omp sections 1290 { 1291 #pragma omp section 1292 #pragma omp target 1293 ++a; 1294 } 1295 #pragma omp sections 1296 { 1297 #pragma omp section 1298 #pragma omp target parallel 1299 ++a; 1300 } 1301 #pragma omp sections 1302 { 1303 #pragma omp section 1304 { 1305 #pragma omp target parallel for 1306 for (int i = 0; i < 10; ++i) 1307 ; 1308 } 1309 } 1310 #pragma omp sections 1311 { 1312 #pragma omp section 1313 { 1314 #pragma omp target enter data map(to: a) 1315 ++a; 1316 } 1317 } 1318 #pragma omp sections 1319 { 1320 #pragma omp section 1321 { 1322 #pragma omp target exit data map(from: a) 1323 ++a; 1324 } 1325 } 1326 #pragma omp sections 1327 { 1328 #pragma omp section 1329 #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?}} 1330 ++a; 1331 } 1332 #pragma omp sections 1333 { 1334 #pragma omp section 1335 #pragma omp taskloop 1336 for (int i = 0; i < 10; ++i) 1337 ++a; 1338 } 1339 #pragma omp sections 1340 { 1341 #pragma omp section 1342 #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?}} 1343 for (int i = 0; i < 10; ++i) 1344 ; 1345 } 1346 #pragma omp sections 1347 { 1348 #pragma omp section 1349 { 1350 bar(); 1351 #pragma omp target update to(a) 1352 } 1353 } 1354 #pragma omp sections 1355 { 1356 #pragma omp section 1357 #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?}} 1358 for (int i = 0; i < 10; ++i) 1359 ; 1360 } 1361 #pragma omp sections 1362 { 1363 #pragma omp section 1364 #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?}} 1365 for (int i = 0; i < 10; ++i) 1366 ; 1367 } 1368 #pragma omp sections 1369 { 1370 #pragma omp section 1371 #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?}} 1372 for (int i = 0; i < 10; ++i) 1373 ; 1374 } 1375 #pragma omp sections 1376 { 1377 #pragma omp section 1378 #pragma omp target simd // OK 1379 for (int i = 0; i < 10; ++i) 1380 ; 1381 } 1382 #pragma omp sections 1383 { 1384 #pragma omp section 1385 #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?}} 1386 for (int i = 0; i < 10; ++i) 1387 ; 1388 } 1389 #pragma omp sections 1390 { 1391 #pragma omp section 1392 #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?}} 1393 for (int i = 0; i < 10; ++i) 1394 ; 1395 } 1396 #pragma omp sections 1397 { 1398 #pragma omp section 1399 #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?}} 1400 for (int i = 0; i < 10; ++i) 1401 ; 1402 } 1403 #pragma omp sections 1404 { 1405 #pragma omp section 1406 #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?}} 1407 for (int i = 0; i < 10; ++i) 1408 ; 1409 } 1410 1411 // SINGLE DIRECTIVE 1412 #pragma omp single 1413 { 1414 #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?}} 1415 for (int i = 0; i < 10; ++i) 1416 ; 1417 } 1418 #pragma omp single 1419 { 1420 #pragma omp simd 1421 for (int i = 0; i < 10; ++i) 1422 ; 1423 } 1424 #pragma omp single 1425 { 1426 #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?}} 1427 for (int i = 0; i < 10; ++i) 1428 ; 1429 } 1430 #pragma omp single 1431 { 1432 #pragma omp parallel 1433 for (int i = 0; i < 10; ++i) 1434 ; 1435 } 1436 #pragma omp single 1437 { 1438 #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?}} 1439 { 1440 bar(); 1441 } 1442 } 1443 #pragma omp single 1444 { 1445 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 1446 { 1447 bar(); 1448 } 1449 } 1450 #pragma omp single 1451 { 1452 #pragma omp critical 1453 { 1454 bar(); 1455 } 1456 } 1457 #pragma omp single 1458 { 1459 #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?}} 1460 { 1461 bar(); 1462 } 1463 } 1464 #pragma omp single 1465 { 1466 #pragma omp parallel 1467 { 1468 #pragma omp single // OK 1469 { 1470 bar(); 1471 } 1472 #pragma omp for // OK 1473 for (int i = 0; i < 10; ++i) 1474 ; 1475 #pragma omp for simd // OK 1476 for (int i = 0; i < 10; ++i) 1477 ; 1478 #pragma omp sections // OK 1479 { 1480 bar(); 1481 } 1482 } 1483 } 1484 #pragma omp single 1485 { 1486 #pragma omp parallel for 1487 for (int i = 0; i < 10; ++i) 1488 ; 1489 } 1490 #pragma omp single 1491 { 1492 #pragma omp parallel for simd 1493 for (int i = 0; i < 10; ++i) 1494 ; 1495 } 1496 #pragma omp single 1497 { 1498 #pragma omp parallel sections 1499 { 1500 bar(); 1501 } 1502 } 1503 #pragma omp single 1504 { 1505 #pragma omp task 1506 { 1507 bar(); 1508 } 1509 } 1510 #pragma omp single 1511 { 1512 #pragma omp taskyield 1513 bar(); 1514 } 1515 #pragma omp single 1516 { 1517 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 1518 bar(); 1519 } 1520 #pragma omp single 1521 { 1522 #pragma omp taskwait 1523 bar(); 1524 } 1525 #pragma omp single 1526 { 1527 #pragma omp flush 1528 bar(); 1529 } 1530 #pragma omp single 1531 { 1532 #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?}} 1533 bar(); 1534 } 1535 #pragma omp single 1536 { 1537 #pragma omp atomic 1538 ++a; 1539 } 1540 #pragma omp single 1541 { 1542 #pragma omp target 1543 ++a; 1544 } 1545 #pragma omp single 1546 { 1547 #pragma omp target parallel 1548 ++a; 1549 } 1550 #pragma omp single 1551 { 1552 #pragma omp target parallel for 1553 for (int i = 0; i < 10; ++i) 1554 ; 1555 } 1556 #pragma omp single 1557 { 1558 #pragma omp target enter data map(to: a) 1559 ++a; 1560 } 1561 #pragma omp single 1562 { 1563 #pragma omp target exit data map(from: a) 1564 ++a; 1565 } 1566 #pragma omp single 1567 { 1568 #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?}} 1569 ++a; 1570 } 1571 #pragma omp single 1572 { 1573 #pragma omp taskloop 1574 for (int i = 0; i < 10; ++i) 1575 ++a; 1576 } 1577 #pragma omp single 1578 { 1579 #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?}} 1580 for (int i = 0; i < 10; ++i) 1581 ; 1582 } 1583 #pragma omp single 1584 { 1585 #pragma omp target update to(a) 1586 bar(); 1587 } 1588 #pragma omp single 1589 { 1590 #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?}} 1591 for (int i = 0; i < 10; ++i) 1592 ; 1593 } 1594 #pragma omp single 1595 { 1596 #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?}} 1597 for (int i = 0; i < 10; ++i) 1598 ; 1599 } 1600 #pragma omp single 1601 { 1602 #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?}} 1603 for (int i = 0; i < 10; ++i) 1604 ; 1605 } 1606 #pragma omp single 1607 { 1608 #pragma omp target simd // OK 1609 for (int i = 0; i < 10; ++i) 1610 ; 1611 } 1612 #pragma omp single 1613 { 1614 #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?}} 1615 for (int i = 0; i < 10; ++i) 1616 ; 1617 } 1618 #pragma omp single 1619 { 1620 #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?}} 1621 for (int i = 0; i < 10; ++i) 1622 ; 1623 } 1624 #pragma omp single 1625 { 1626 #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?}} 1627 for (int i = 0; i < 10; ++i) 1628 ; 1629 } 1630 #pragma omp single 1631 { 1632 #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?}} 1633 for (int i = 0; i < 10; ++i) 1634 ; 1635 } 1636 1637 // MASTER DIRECTIVE 1638 #pragma omp master 1639 { 1640 #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?}} 1641 for (int i = 0; i < 10; ++i) 1642 ; 1643 } 1644 #pragma omp master 1645 { 1646 #pragma omp simd 1647 for (int i = 0; i < 10; ++i) 1648 ; 1649 } 1650 #pragma omp master 1651 { 1652 #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?}} 1653 for (int i = 0; i < 10; ++i) 1654 ; 1655 } 1656 #pragma omp master 1657 { 1658 #pragma omp parallel 1659 for (int i = 0; i < 10; ++i) 1660 ; 1661 } 1662 #pragma omp master 1663 { 1664 #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?}} 1665 { 1666 bar(); 1667 } 1668 } 1669 #pragma omp master 1670 { 1671 #pragma omp master // OK, though second 'master' is redundant 1672 { 1673 bar(); 1674 } 1675 } 1676 #pragma omp master 1677 { 1678 #pragma omp critical 1679 { 1680 bar(); 1681 } 1682 } 1683 #pragma omp master 1684 { 1685 #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?}} 1686 { 1687 bar(); 1688 } 1689 } 1690 #pragma omp master 1691 { 1692 #pragma omp parallel 1693 { 1694 #pragma omp master // OK 1695 { 1696 bar(); 1697 } 1698 #pragma omp for // OK 1699 for (int i = 0; i < 10; ++i) 1700 ; 1701 #pragma omp for simd // OK 1702 for (int i = 0; i < 10; ++i) 1703 ; 1704 #pragma omp sections // OK 1705 { 1706 bar(); 1707 } 1708 } 1709 } 1710 #pragma omp master 1711 { 1712 #pragma omp parallel for 1713 for (int i = 0; i < 10; ++i) 1714 ; 1715 } 1716 #pragma omp master 1717 { 1718 #pragma omp parallel for simd 1719 for (int i = 0; i < 10; ++i) 1720 ; 1721 } 1722 #pragma omp master 1723 { 1724 #pragma omp parallel sections 1725 { 1726 bar(); 1727 } 1728 } 1729 #pragma omp master 1730 { 1731 #pragma omp task 1732 { 1733 bar(); 1734 } 1735 } 1736 #pragma omp master 1737 { 1738 #pragma omp taskyield 1739 bar(); 1740 } 1741 #pragma omp master 1742 { 1743 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 1744 bar(); 1745 } 1746 #pragma omp master 1747 { 1748 #pragma omp taskwait 1749 bar(); 1750 } 1751 #pragma omp master 1752 { 1753 #pragma omp flush 1754 bar(); 1755 } 1756 #pragma omp master 1757 { 1758 #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?}} 1759 bar(); 1760 } 1761 #pragma omp master 1762 { 1763 #pragma omp atomic 1764 ++a; 1765 } 1766 #pragma omp master 1767 { 1768 #pragma omp target 1769 ++a; 1770 } 1771 #pragma omp master 1772 { 1773 #pragma omp target parallel 1774 ++a; 1775 } 1776 #pragma omp master 1777 { 1778 #pragma omp target parallel for 1779 for (int i = 0; i < 10; ++i) 1780 ; 1781 } 1782 #pragma omp master 1783 { 1784 #pragma omp target enter data map(to: a) 1785 ++a; 1786 } 1787 #pragma omp master 1788 { 1789 #pragma omp target exit data map(from: a) 1790 ++a; 1791 } 1792 #pragma omp master 1793 { 1794 #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?}} 1795 ++a; 1796 } 1797 #pragma omp master 1798 { 1799 #pragma omp taskloop 1800 for (int i = 0; i < 10; ++i) 1801 ++a; 1802 } 1803 #pragma omp master 1804 { 1805 #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?}} 1806 for (int i = 0; i < 10; ++i) 1807 ; 1808 } 1809 #pragma omp master 1810 { 1811 #pragma omp target update to(a) 1812 bar(); 1813 } 1814 #pragma omp master 1815 { 1816 #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?}} 1817 for (int i = 0; i < 10; ++i) 1818 ; 1819 } 1820 #pragma omp master 1821 { 1822 #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?}} 1823 for (int i = 0; i < 10; ++i) 1824 ; 1825 } 1826 #pragma omp master 1827 { 1828 #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?}} 1829 for (int i = 0; i < 10; ++i) 1830 ; 1831 } 1832 #pragma omp master 1833 { 1834 #pragma omp target simd // OK 1835 for (int i = 0; i < 10; ++i) 1836 ; 1837 } 1838 #pragma omp master 1839 { 1840 #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?}} 1841 for (int i = 0; i < 10; ++i) 1842 ; 1843 } 1844 #pragma omp master 1845 { 1846 #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?}} 1847 for (int i = 0; i < 10; ++i) 1848 ; 1849 } 1850 #pragma omp master 1851 { 1852 #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?}} 1853 for (int i = 0; i < 10; ++i) 1854 ; 1855 } 1856 #pragma omp master 1857 { 1858 #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?}} 1859 for (int i = 0; i < 10; ++i) 1860 ; 1861 } 1862 1863 // CRITICAL DIRECTIVE 1864 #pragma omp critical 1865 { 1866 #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?}} 1867 for (int i = 0; i < 10; ++i) 1868 ; 1869 } 1870 #pragma omp critical 1871 { 1872 #pragma omp simd 1873 for (int i = 0; i < 10; ++i) 1874 ; 1875 } 1876 #pragma omp critical 1877 { 1878 #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?}} 1879 for (int i = 0; i < 10; ++i) 1880 ; 1881 } 1882 #pragma omp critical 1883 { 1884 #pragma omp parallel 1885 for (int i = 0; i < 10; ++i) 1886 ; 1887 } 1888 #pragma omp critical 1889 { 1890 #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?}} 1891 { 1892 bar(); 1893 } 1894 } 1895 #pragma omp critical 1896 { 1897 #pragma omp master // OK, though second 'master' is redundant 1898 { 1899 bar(); 1900 } 1901 } 1902 #pragma omp critical 1903 { 1904 #pragma omp critical 1905 { 1906 bar(); 1907 } 1908 } 1909 #pragma omp critical 1910 { 1911 #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?}} 1912 { 1913 bar(); 1914 } 1915 } 1916 #pragma omp critical 1917 { 1918 #pragma omp parallel 1919 { 1920 #pragma omp master // OK 1921 { 1922 bar(); 1923 } 1924 #pragma omp for // OK 1925 for (int i = 0; i < 10; ++i) 1926 ; 1927 #pragma omp for simd // OK 1928 for (int i = 0; i < 10; ++i) 1929 ; 1930 #pragma omp sections // OK 1931 { 1932 bar(); 1933 } 1934 } 1935 } 1936 #pragma omp critical 1937 { 1938 #pragma omp parallel for 1939 for (int i = 0; i < 10; ++i) 1940 ; 1941 } 1942 #pragma omp critical 1943 { 1944 #pragma omp parallel for simd 1945 for (int i = 0; i < 10; ++i) 1946 ; 1947 } 1948 #pragma omp critical 1949 { 1950 #pragma omp parallel sections 1951 { 1952 bar(); 1953 } 1954 } 1955 #pragma omp critical 1956 { 1957 #pragma omp task 1958 { 1959 bar(); 1960 } 1961 } 1962 #pragma omp critical 1963 { 1964 #pragma omp taskyield 1965 bar(); 1966 } 1967 #pragma omp critical 1968 { 1969 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 1970 bar(); 1971 } 1972 #pragma omp critical 1973 { 1974 #pragma omp taskwait 1975 bar(); 1976 } 1977 #pragma omp critical(Tuzik) 1978 { 1979 #pragma omp critical(grelka) 1980 bar(); 1981 } 1982 #pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}} 1983 { 1984 #pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}} 1985 { 1986 #pragma omp critical(Tuzik) 1987 { 1988 #pragma omp parallel 1989 #pragma omp critical(grelka) 1990 { 1991 bar(); 1992 } 1993 } 1994 } 1995 } 1996 #pragma omp critical 1997 { 1998 #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?}} 1999 bar(); 2000 } 2001 #pragma omp critical 2002 { 2003 #pragma omp atomic 2004 ++a; 2005 } 2006 #pragma omp critical 2007 { 2008 #pragma omp target 2009 ++a; 2010 } 2011 #pragma omp critical 2012 { 2013 #pragma omp target parallel 2014 ++a; 2015 } 2016 #pragma omp critical 2017 { 2018 #pragma omp target parallel for 2019 for (int i = 0; i < 10; ++i) 2020 ; 2021 } 2022 #pragma omp critical 2023 { 2024 #pragma omp target enter data map(to: a) 2025 ++a; 2026 } 2027 #pragma omp critical 2028 { 2029 #pragma omp target exit data map(from: a) 2030 ++a; 2031 } 2032 #pragma omp critical 2033 { 2034 #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?}} 2035 ++a; 2036 } 2037 #pragma omp critical 2038 { 2039 #pragma omp taskloop 2040 for (int i = 0; i < 10; ++i) 2041 ++a; 2042 } 2043 #pragma omp critical 2044 { 2045 #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?}} 2046 for (int i = 0; i < 10; ++i) 2047 ; 2048 } 2049 #pragma omp critical 2050 { 2051 #pragma omp target update to(a) 2052 bar(); 2053 } 2054 #pragma omp critical 2055 { 2056 #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?}} 2057 for (int i = 0; i < 10; ++i) 2058 ; 2059 } 2060 #pragma omp critical 2061 { 2062 #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?}} 2063 for (int i = 0; i < 10; ++i) 2064 ; 2065 } 2066 #pragma omp critical 2067 { 2068 #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?}} 2069 for (int i = 0; i < 10; ++i) 2070 ; 2071 } 2072 #pragma omp critical 2073 { 2074 #pragma omp target simd // OK 2075 for (int i = 0; i < 10; ++i) 2076 ; 2077 } 2078 #pragma omp critical 2079 { 2080 #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?}} 2081 for (int i = 0; i < 10; ++i) 2082 ; 2083 } 2084 #pragma omp critical 2085 { 2086 #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?}} 2087 for (int i = 0; i < 10; ++i) 2088 ; 2089 } 2090 #pragma omp critical 2091 { 2092 #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?}} 2093 for (int i = 0; i < 10; ++i) 2094 ; 2095 } 2096 #pragma omp critical 2097 { 2098 #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?}} 2099 for (int i = 0; i < 10; ++i) 2100 ; 2101 } 2102 2103 // PARALLEL FOR DIRECTIVE 2104 #pragma omp parallel for 2105 for (int i = 0; i < 10; ++i) { 2106 #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?}} 2107 for (int i = 0; i < 10; ++i) 2108 ; 2109 } 2110 #pragma omp parallel for 2111 for (int i = 0; i < 10; ++i) { 2112 #pragma omp simd 2113 for (int i = 0; i < 10; ++i) 2114 ; 2115 } 2116 #pragma omp parallel for 2117 for (int i = 0; i < 10; ++i) { 2118 #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?}} 2119 for (int i = 0; i < 10; ++i) 2120 ; 2121 } 2122 #pragma omp parallel for 2123 for (int i = 0; i < 10; ++i) { 2124 #pragma omp parallel 2125 for (int i = 0; i < 10; ++i) 2126 ; 2127 } 2128 #pragma omp parallel for 2129 for (int i = 0; i < 10; ++i) { 2130 #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?}} 2131 { 2132 bar(); 2133 } 2134 } 2135 #pragma omp parallel for 2136 for (int i = 0; i < 10; ++i) { 2137 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 2138 { 2139 bar(); 2140 } 2141 } 2142 #pragma omp parallel for 2143 for (int i = 0; i < 10; ++i) { 2144 #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?}} 2145 { 2146 bar(); 2147 } 2148 } 2149 2150 #pragma omp parallel for 2151 for (int i = 0; i < 10; ++i) { 2152 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2153 { 2154 bar(); 2155 } 2156 } 2157 2158 #pragma omp parallel for 2159 for (int i = 0; i < 10; ++i) { 2160 #pragma omp critical 2161 { 2162 bar(); 2163 } 2164 } 2165 2166 #pragma omp parallel for 2167 for (int i = 0; i < 10; ++i) { 2168 #pragma omp parallel 2169 { 2170 #pragma omp single // OK 2171 { 2172 bar(); 2173 } 2174 #pragma omp for // OK 2175 for (int i = 0; i < 10; ++i) 2176 ; 2177 #pragma omp for simd // OK 2178 for (int i = 0; i < 10; ++i) 2179 ; 2180 #pragma omp sections // OK 2181 { 2182 bar(); 2183 } 2184 } 2185 } 2186 #pragma omp parallel for 2187 for (int i = 0; i < 10; ++i) { 2188 #pragma omp parallel for 2189 for (int i = 0; i < 10; ++i) 2190 ; 2191 } 2192 #pragma omp parallel for 2193 for (int i = 0; i < 10; ++i) { 2194 #pragma omp parallel for simd 2195 for (int i = 0; i < 10; ++i) 2196 ; 2197 } 2198 #pragma omp parallel for 2199 for (int i = 0; i < 10; ++i) { 2200 #pragma omp parallel sections 2201 { 2202 bar(); 2203 } 2204 } 2205 #pragma omp parallel for 2206 for (int i = 0; i < 10; ++i) { 2207 #pragma omp task 2208 { 2209 bar(); 2210 } 2211 } 2212 #pragma omp parallel for 2213 for (int i = 0; i < 10; ++i) { 2214 #pragma omp taskyield 2215 bar(); 2216 } 2217 #pragma omp parallel for 2218 for (int i = 0; i < 10; ++i) { 2219 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 2220 bar(); 2221 } 2222 #pragma omp parallel for 2223 for (int i = 0; i < 10; ++i) { 2224 #pragma omp taskwait 2225 bar(); 2226 } 2227 #pragma omp parallel for 2228 for (int i = 0; i < 10; ++i) { 2229 #pragma omp flush 2230 bar(); 2231 } 2232 #pragma omp parallel for 2233 for (int i = 0; i < 10; ++i) { 2234 #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?}} 2235 bar(); 2236 } 2237 #pragma omp parallel for ordered 2238 for (int i = 0; i < 10; ++i) { 2239 #pragma omp ordered // OK 2240 bar(); 2241 } 2242 #pragma omp parallel for 2243 for (int i = 0; i < 10; ++i) { 2244 #pragma omp atomic 2245 ++a; 2246 } 2247 #pragma omp parallel for 2248 for (int i = 0; i < 10; ++i) { 2249 #pragma omp target 2250 ++a; 2251 } 2252 #pragma omp parallel for 2253 for (int i = 0; i < 10; ++i) { 2254 #pragma omp target parallel 2255 ++a; 2256 } 2257 #pragma omp parallel for 2258 for (int i = 0; i < 10; ++i) { 2259 #pragma omp target parallel for 2260 for (int i = 0; i < 10; ++i) 2261 ; 2262 } 2263 #pragma omp parallel for 2264 for (int i = 0; i < 10; ++i) { 2265 #pragma omp target enter data map(to: a) 2266 ++a; 2267 } 2268 #pragma omp parallel for 2269 for (int i = 0; i < 10; ++i) { 2270 #pragma omp target exit data map(from: a) 2271 ++a; 2272 } 2273 #pragma omp parallel for 2274 for (int i = 0; i < 10; ++i) { 2275 #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?}} 2276 ++a; 2277 } 2278 #pragma omp parallel for 2279 for (int i = 0; i < 10; ++i) { 2280 #pragma omp taskloop 2281 for (int i = 0; i < 10; ++i) 2282 ++a; 2283 } 2284 #pragma omp parallel for 2285 for (int i = 0; i < 10; ++i) { 2286 #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?}} 2287 for (int j = 0; j < 10; ++j) 2288 ; 2289 } 2290 #pragma omp parallel for 2291 for (int i = 0; i < 10; ++i) { 2292 #pragma omp target update to(a) 2293 } 2294 #pragma omp parallel for 2295 for (int i = 0; i < 10; ++i) { 2296 #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?}} 2297 for (int j = 0; j < 10; ++j) 2298 ; 2299 } 2300 #pragma omp parallel for 2301 for (int i = 0; i < 10; ++i) { 2302 #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?}} 2303 for (int j = 0; j < 10; ++j) 2304 ; 2305 } 2306 #pragma omp parallel for 2307 for (int i = 0; i < 10; ++i) { 2308 #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?}} 2309 for (int j = 0; j < 10; ++j) 2310 ; 2311 } 2312 #pragma omp parallel for 2313 for (int i = 0; i < 10; ++i) { 2314 #pragma omp target simd // OK 2315 for (int j = 0; j < 10; ++j) 2316 ; 2317 } 2318 #pragma omp parallel for 2319 for (int i = 0; i < 10; ++i) { 2320 #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?}} 2321 for (int j = 0; j < 10; ++j) 2322 ; 2323 } 2324 #pragma omp parallel for 2325 for (int i = 0; i < 10; ++i) { 2326 #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?}} 2327 for (int j = 0; j < 10; ++j) 2328 ; 2329 } 2330 #pragma omp parallel for 2331 for (int i = 0; i < 10; ++i) { 2332 #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?}} 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 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?}} 2339 for (int j = 0; j < 10; ++j) 2340 ; 2341 } 2342 2343 // PARALLEL FOR SIMD DIRECTIVE 2344 #pragma omp parallel for simd 2345 for (int i = 0; i < 10; ++i) { 2346 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2347 for (int i = 0; i < 10; ++i) 2348 ; 2349 } 2350 #pragma omp parallel for simd 2351 for (int i = 0; i < 10; ++i) { 2352 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 2353 for (int i = 0; i < 10; ++i) 2354 ; 2355 } 2356 #pragma omp parallel for simd 2357 for (int i = 0; i < 10; ++i) { 2358 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2359 for (int i = 0; i < 10; ++i) 2360 ; 2361 } 2362 #pragma omp parallel for simd 2363 for (int i = 0; i < 10; ++i) { 2364 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2365 for (int i = 0; i < 10; ++i) 2366 ; 2367 } 2368 #pragma omp parallel for simd 2369 for (int i = 0; i < 10; ++i) { 2370 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2371 { 2372 bar(); 2373 } 2374 } 2375 #pragma omp parallel for simd 2376 for (int i = 0; i < 10; ++i) { 2377 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2378 { 2379 bar(); 2380 } 2381 } 2382 #pragma omp parallel for simd 2383 for (int i = 0; i < 10; ++i) { 2384 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2385 { 2386 bar(); 2387 } 2388 } 2389 2390 #pragma omp parallel for simd 2391 for (int i = 0; i < 10; ++i) { 2392 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2393 { 2394 bar(); 2395 } 2396 } 2397 2398 #pragma omp parallel for simd 2399 for (int i = 0; i < 10; ++i) { 2400 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2401 { 2402 bar(); 2403 } 2404 } 2405 2406 #pragma omp parallel for simd 2407 for (int i = 0; i < 10; ++i) { 2408 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2409 { 2410 #pragma omp single 2411 { 2412 bar(); 2413 } 2414 #pragma omp for 2415 for (int i = 0; i < 10; ++i) 2416 ; 2417 #pragma omp for simd 2418 for (int i = 0; i < 10; ++i) 2419 ; 2420 #pragma omp sections 2421 { 2422 bar(); 2423 } 2424 } 2425 } 2426 #pragma omp parallel for simd 2427 for (int i = 0; i < 10; ++i) { 2428 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2429 for (int i = 0; i < 10; ++i) 2430 ; 2431 } 2432 #pragma omp parallel for simd 2433 for (int i = 0; i < 10; ++i) { 2434 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 2435 for (int i = 0; i < 10; ++i) 2436 ; 2437 } 2438 #pragma omp parallel for simd 2439 for (int i = 0; i < 10; ++i) { 2440 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2441 { 2442 bar(); 2443 } 2444 } 2445 #pragma omp parallel for simd 2446 for (int i = 0; i < 10; ++i) { 2447 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2448 { 2449 bar(); 2450 } 2451 } 2452 #pragma omp parallel for simd 2453 for (int i = 0; i < 10; ++i) { 2454 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2455 bar(); 2456 } 2457 #pragma omp parallel for simd 2458 for (int i = 0; i < 10; ++i) { 2459 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2460 bar(); 2461 } 2462 #pragma omp parallel for simd 2463 for (int i = 0; i < 10; ++i) { 2464 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2465 bar(); 2466 } 2467 #pragma omp parallel for simd 2468 for (int i = 0; i < 10; ++i) { 2469 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2470 bar(); 2471 } 2472 #pragma omp parallel for simd 2473 for (int i = 0; i < 10; ++i) { 2474 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2475 bar(); 2476 } 2477 #pragma omp parallel for simd 2478 for (int i = 0; i < 10; ++i) { 2479 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2480 bar(); 2481 } 2482 #pragma omp parallel for simd 2483 for (int i = 0; i < 10; ++i) { 2484 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2485 ++a; 2486 } 2487 #pragma omp parallel for simd 2488 for (int i = 0; i < 10; ++i) { 2489 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2490 ++a; 2491 } 2492 #pragma omp parallel for simd 2493 for (int i = 0; i < 10; ++i) { 2494 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2495 ++a; 2496 } 2497 #pragma omp parallel for simd 2498 for (int i = 0; i < 10; ++i) { 2499 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2500 for (int i = 0; i < 10; ++i) 2501 ; 2502 } 2503 #pragma omp parallel for simd 2504 for (int i = 0; i < 10; ++i) { 2505 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2506 ++a; 2507 } 2508 #pragma omp parallel for simd 2509 for (int i = 0; i < 10; ++i) { 2510 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2511 ++a; 2512 } 2513 #pragma omp parallel for simd 2514 for (int i = 0; i < 10; ++i) { 2515 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2516 ++a; 2517 } 2518 #pragma omp parallel for simd 2519 for (int i = 0; i < 10; ++i) { 2520 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2521 for (int i = 0; i < 10; ++i) 2522 ++a; 2523 } 2524 #pragma omp parallel for simd 2525 for (int i = 0; i < 10; ++i) { 2526 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2527 for (int j = 0; j < 10; ++j) 2528 ; 2529 } 2530 #pragma omp parallel for simd 2531 for (int i = 0; i < 10; ++i) { 2532 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2533 bar(); 2534 } 2535 #pragma omp parallel for simd 2536 for (int i = 0; i < 10; ++i) { 2537 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2538 for (int j = 0; j < 10; ++j) 2539 ; 2540 } 2541 #pragma omp parallel for simd 2542 for (int i = 0; i < 10; ++i) { 2543 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2544 for (int j = 0; j < 10; ++j) 2545 ; 2546 } 2547 #pragma omp parallel for simd 2548 for (int i = 0; i < 10; ++i) { 2549 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2550 for (int j = 0; j < 10; ++j) 2551 ; 2552 } 2553 #pragma omp parallel for simd 2554 for (int i = 0; i < 10; ++i) { 2555 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2556 for (int j = 0; j < 10; ++j) 2557 ; 2558 } 2559 #pragma omp parallel for simd 2560 for (int i = 0; i < 10; ++i) { 2561 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2562 for (int j = 0; j < 10; ++j) 2563 ; 2564 } 2565 #pragma omp parallel for simd 2566 for (int i = 0; i < 10; ++i) { 2567 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2568 for (int j = 0; j < 10; ++j) 2569 ; 2570 } 2571 #pragma omp parallel for simd 2572 for (int i = 0; i < 10; ++i) { 2573 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2574 for (int j = 0; j < 10; ++j) 2575 ; 2576 } 2577 #pragma omp parallel for simd 2578 for (int i = 0; i < 10; ++i) { 2579 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 2580 for (int j = 0; j < 10; ++j) 2581 ; 2582 } 2583 2584 // PARALLEL SECTIONS DIRECTIVE 2585 #pragma omp parallel sections 2586 { 2587 #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?}} 2588 for (int i = 0; i < 10; ++i) 2589 ; 2590 } 2591 #pragma omp parallel sections 2592 { 2593 #pragma omp simd 2594 for (int i = 0; i < 10; ++i) 2595 ; 2596 } 2597 #pragma omp parallel sections 2598 { 2599 #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?}} 2600 for (int i = 0; i < 10; ++i) 2601 ; 2602 } 2603 #pragma omp parallel sections 2604 { 2605 #pragma omp parallel 2606 for (int i = 0; i < 10; ++i) 2607 ; 2608 } 2609 #pragma omp parallel sections 2610 { 2611 #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?}} 2612 { 2613 bar(); 2614 } 2615 } 2616 #pragma omp parallel sections 2617 { 2618 #pragma omp section 2619 { 2620 bar(); 2621 } 2622 } 2623 #pragma omp parallel sections 2624 { 2625 #pragma omp section 2626 { 2627 #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?}} 2628 bar(); 2629 } 2630 } 2631 #pragma omp parallel sections 2632 { 2633 #pragma omp section 2634 { 2635 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 2636 bar(); 2637 } 2638 } 2639 #pragma omp parallel sections 2640 { 2641 #pragma omp section 2642 { 2643 #pragma omp critical 2644 bar(); 2645 } 2646 } 2647 #pragma omp parallel sections 2648 { 2649 #pragma omp parallel 2650 { 2651 #pragma omp single // OK 2652 { 2653 bar(); 2654 } 2655 #pragma omp for // OK 2656 for (int i = 0; i < 10; ++i) 2657 ; 2658 #pragma omp for simd // OK 2659 for (int i = 0; i < 10; ++i) 2660 ; 2661 #pragma omp sections // OK 2662 { 2663 bar(); 2664 } 2665 } 2666 } 2667 #pragma omp parallel sections 2668 { 2669 #pragma omp parallel for 2670 for (int i = 0; i < 10; ++i) 2671 ; 2672 } 2673 #pragma omp parallel sections 2674 { 2675 #pragma omp parallel for simd 2676 for (int i = 0; i < 10; ++i) 2677 ; 2678 } 2679 #pragma omp parallel sections 2680 { 2681 #pragma omp parallel sections 2682 { 2683 bar(); 2684 } 2685 } 2686 #pragma omp parallel sections 2687 { 2688 #pragma omp task 2689 { 2690 bar(); 2691 } 2692 } 2693 #pragma omp parallel sections 2694 { 2695 #pragma omp taskyield 2696 } 2697 #pragma omp parallel sections 2698 { 2699 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 2700 } 2701 #pragma omp parallel sections 2702 { 2703 #pragma omp taskwait 2704 } 2705 #pragma omp parallel sections 2706 { 2707 #pragma omp flush 2708 } 2709 #pragma omp parallel sections 2710 { 2711 #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?}} 2712 bar(); 2713 } 2714 #pragma omp parallel sections 2715 { 2716 #pragma omp atomic 2717 ++a; 2718 } 2719 #pragma omp parallel sections 2720 { 2721 #pragma omp target 2722 ++a; 2723 } 2724 #pragma omp parallel sections 2725 { 2726 #pragma omp target parallel 2727 ++a; 2728 } 2729 #pragma omp parallel sections 2730 { 2731 #pragma omp target parallel for 2732 for (int i = 0; i < 10; ++i) 2733 ; 2734 } 2735 #pragma omp parallel sections 2736 { 2737 #pragma omp target enter data map(to: a) 2738 } 2739 #pragma omp parallel sections 2740 { 2741 #pragma omp target exit data map(from: a) 2742 } 2743 #pragma omp parallel sections 2744 { 2745 #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?}} 2746 ++a; 2747 } 2748 #pragma omp parallel sections 2749 { 2750 #pragma omp taskloop 2751 for (int i = 0; i < 10; ++i) 2752 ++a; 2753 } 2754 #pragma omp parallel sections 2755 { 2756 #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?}} 2757 for (int i = 0; i < 10; ++i) 2758 ; 2759 } 2760 #pragma omp parallel sections 2761 { 2762 #pragma omp target update to(a) 2763 } 2764 #pragma omp parallel sections 2765 { 2766 #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?}} 2767 for (int i = 0; i < 10; ++i) 2768 ; 2769 } 2770 #pragma omp parallel sections 2771 { 2772 #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?}} 2773 for (int i = 0; i < 10; ++i) 2774 ; 2775 } 2776 #pragma omp parallel sections 2777 { 2778 #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?}} 2779 for (int i = 0; i < 10; ++i) 2780 ; 2781 } 2782 #pragma omp parallel sections 2783 { 2784 #pragma omp target simd // OK 2785 for (int i = 0; i < 10; ++i) 2786 ; 2787 } 2788 #pragma omp parallel sections 2789 { 2790 #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?}} 2791 for (int i = 0; i < 10; ++i) 2792 ; 2793 } 2794 #pragma omp parallel sections 2795 { 2796 #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?}} 2797 for (int i = 0; i < 10; ++i) 2798 ; 2799 } 2800 #pragma omp parallel sections 2801 { 2802 #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?}} 2803 for (int i = 0; i < 10; ++i) 2804 ; 2805 } 2806 #pragma omp parallel sections 2807 { 2808 #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?}} 2809 for (int i = 0; i < 10; ++i) 2810 ; 2811 } 2812 2813 // TASK DIRECTIVE 2814 #pragma omp task 2815 #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?}} 2816 for (int i = 0; i < 10; ++i) 2817 ; 2818 #pragma omp task 2819 #pragma omp simd 2820 for (int i = 0; i < 10; ++i) 2821 ; 2822 #pragma omp task 2823 #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?}} 2824 for (int i = 0; i < 10; ++i) 2825 ; 2826 #pragma omp task 2827 #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?}} 2828 { 2829 bar(); 2830 } 2831 #pragma omp task 2832 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 2833 { 2834 bar(); 2835 } 2836 #pragma omp task 2837 #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?}} 2838 bar(); 2839 #pragma omp task 2840 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 2841 bar(); 2842 #pragma omp task 2843 #pragma omp critical 2844 bar(); 2845 2846 #pragma omp task 2847 #pragma omp parallel for 2848 for (int i = 0; i < 10; ++i) 2849 ; 2850 #pragma omp task 2851 #pragma omp parallel for simd 2852 for (int i = 0; i < 10; ++i) 2853 ; 2854 #pragma omp task 2855 #pragma omp parallel sections 2856 { 2857 bar(); 2858 } 2859 #pragma omp task 2860 #pragma omp task 2861 { 2862 bar(); 2863 } 2864 #pragma omp task 2865 { 2866 #pragma omp taskyield 2867 bar(); 2868 } 2869 #pragma omp task 2870 { 2871 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 2872 bar(); 2873 } 2874 #pragma omp task 2875 { 2876 #pragma omp taskwait 2877 bar(); 2878 } 2879 #pragma omp task 2880 { 2881 #pragma omp flush 2882 bar(); 2883 } 2884 #pragma omp task 2885 { 2886 #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?}} 2887 bar(); 2888 } 2889 #pragma omp task 2890 { 2891 #pragma omp atomic 2892 ++a; 2893 } 2894 #pragma omp task 2895 { 2896 #pragma omp target 2897 ++a; 2898 } 2899 #pragma omp task 2900 { 2901 #pragma omp target parallel 2902 ++a; 2903 } 2904 #pragma omp task 2905 #pragma omp target parallel for 2906 for (int i = 0; i < 10; ++i) 2907 ; 2908 #pragma omp task 2909 { 2910 #pragma omp target enter data map(to: a) 2911 ++a; 2912 } 2913 #pragma omp task 2914 { 2915 #pragma omp target exit data map(from: a) 2916 ++a; 2917 } 2918 #pragma omp task 2919 { 2920 #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?}} 2921 ++a; 2922 } 2923 #pragma omp task 2924 { 2925 #pragma omp taskloop 2926 for (int i = 0; i < 10; ++i) 2927 ++a; 2928 } 2929 #pragma omp task 2930 { 2931 #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?}} 2932 for (int i = 0; i < 10; ++i) 2933 ; 2934 } 2935 #pragma omp task 2936 { 2937 #pragma omp target update to(a) 2938 bar(); 2939 } 2940 #pragma omp task 2941 { 2942 #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?}} 2943 for (int i = 0; i < 10; ++i) 2944 ; 2945 } 2946 #pragma omp task 2947 { 2948 #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?}} 2949 for (int i = 0; i < 10; ++i) 2950 ; 2951 } 2952 #pragma omp task 2953 { 2954 #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?}} 2955 for (int i = 0; i < 10; ++i) 2956 ; 2957 } 2958 #pragma omp task 2959 { 2960 #pragma omp target simd // OK 2961 for (int i = 0; i < 10; ++i) 2962 ; 2963 } 2964 #pragma omp task 2965 { 2966 #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?}} 2967 for (int i = 0; i < 10; ++i) 2968 ; 2969 } 2970 #pragma omp task 2971 { 2972 #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?}} 2973 for (int i = 0; i < 10; ++i) 2974 ; 2975 } 2976 #pragma omp task 2977 { 2978 #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?}} 2979 for (int i = 0; i < 10; ++i) 2980 ; 2981 } 2982 #pragma omp task 2983 { 2984 #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?}} 2985 for (int i = 0; i < 10; ++i) 2986 ; 2987 } 2988 2989 // ORDERED DIRECTIVE 2990 #pragma omp ordered 2991 { 2992 #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?}} 2993 for (int i = 0; i < 10; ++i) 2994 ; 2995 } 2996 #pragma omp ordered 2997 { 2998 #pragma omp simd 2999 for (int i = 0; i < 10; ++i) 3000 ; 3001 } 3002 #pragma omp ordered 3003 { 3004 #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?}} 3005 for (int i = 0; i < 10; ++i) 3006 ; 3007 } 3008 #pragma omp ordered 3009 { 3010 #pragma omp parallel 3011 for (int i = 0; i < 10; ++i) 3012 ; 3013 } 3014 #pragma omp ordered 3015 { 3016 #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?}} 3017 { 3018 bar(); 3019 } 3020 } 3021 #pragma omp ordered 3022 { 3023 #pragma omp master // OK, though second 'ordered' is redundant 3024 { 3025 bar(); 3026 } 3027 } 3028 #pragma omp ordered 3029 { 3030 #pragma omp critical 3031 { 3032 bar(); 3033 } 3034 } 3035 #pragma omp ordered 3036 { 3037 #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?}} 3038 { 3039 bar(); 3040 } 3041 } 3042 #pragma omp ordered 3043 { 3044 #pragma omp parallel for ordered 3045 for (int j = 0; j < 10; ++j) { 3046 #pragma omp ordered // OK 3047 { 3048 bar(); 3049 } 3050 } 3051 } 3052 #pragma omp ordered 3053 { 3054 #pragma omp parallel for simd ordered 3055 for (int j = 0; j < 10; ++j) { 3056 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 3057 { 3058 bar(); 3059 } 3060 } 3061 } 3062 #pragma omp ordered 3063 { 3064 #pragma omp parallel for simd ordered 3065 for (int j = 0; j < 10; ++j) { 3066 #pragma omp ordered simd 3067 { 3068 bar(); 3069 } 3070 } 3071 } 3072 #pragma omp ordered 3073 { 3074 #pragma omp parallel for 3075 for (int i = 0; i < 10; ++i) 3076 ; 3077 } 3078 #pragma omp ordered 3079 { 3080 #pragma omp parallel for simd 3081 for (int i = 0; i < 10; ++i) 3082 ; 3083 } 3084 #pragma omp ordered 3085 { 3086 #pragma omp parallel sections 3087 { 3088 bar(); 3089 } 3090 } 3091 #pragma omp ordered 3092 { 3093 #pragma omp task 3094 { 3095 bar(); 3096 } 3097 } 3098 #pragma omp ordered 3099 { 3100 #pragma omp taskyield 3101 bar(); 3102 } 3103 #pragma omp ordered 3104 { 3105 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}} 3106 bar(); 3107 } 3108 #pragma omp ordered 3109 { 3110 #pragma omp taskwait 3111 bar(); 3112 } 3113 #pragma omp ordered 3114 { 3115 #pragma omp flush 3116 bar(); 3117 } 3118 #pragma omp ordered 3119 { 3120 #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?}} 3121 bar(); 3122 } 3123 #pragma omp ordered 3124 { 3125 #pragma omp atomic 3126 ++a; 3127 } 3128 #pragma omp ordered 3129 { 3130 #pragma omp target 3131 ++a; 3132 } 3133 #pragma omp ordered 3134 { 3135 #pragma omp target parallel 3136 ++a; 3137 } 3138 #pragma omp ordered 3139 { 3140 #pragma omp target parallel for ordered 3141 for (int j = 0; j < 10; ++j) { 3142 #pragma omp ordered // OK 3143 { 3144 bar(); 3145 } 3146 } 3147 } 3148 #pragma omp ordered 3149 { 3150 #pragma omp target parallel for 3151 for (int i = 0; i < 10; ++i) 3152 ; 3153 } 3154 #pragma omp ordered 3155 { 3156 #pragma omp target enter data map(to: a) 3157 ++a; 3158 } 3159 #pragma omp ordered 3160 { 3161 #pragma omp target exit data map(from: a) 3162 ++a; 3163 } 3164 #pragma omp ordered 3165 { 3166 #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?}} 3167 ++a; 3168 } 3169 #pragma omp ordered 3170 { 3171 #pragma omp taskloop 3172 for (int i = 0; i < 10; ++i) 3173 ++a; 3174 } 3175 #pragma omp ordered 3176 { 3177 #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?}} 3178 for (int i = 0; i < 10; ++i) 3179 ; 3180 } 3181 #pragma omp ordered 3182 { 3183 bar(); 3184 #pragma omp target update to(a) 3185 bar(); 3186 } 3187 #pragma omp ordered 3188 { 3189 #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?}} 3190 for (int i = 0; i < 10; ++i) 3191 ; 3192 } 3193 #pragma omp ordered 3194 { 3195 #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?}} 3196 for (int i = 0; i < 10; ++i) 3197 ; 3198 } 3199 #pragma omp ordered 3200 { 3201 #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?}} 3202 for (int i = 0; i < 10; ++i) 3203 ; 3204 } 3205 #pragma omp ordered 3206 { 3207 #pragma omp target simd // OK 3208 for (int i = 0; i < 10; ++i) 3209 ; 3210 } 3211 #pragma omp ordered 3212 { 3213 #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?}} 3214 for (int i = 0; i < 10; ++i) 3215 ; 3216 } 3217 #pragma omp ordered 3218 { 3219 #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?}} 3220 for (int i = 0; i < 10; ++i) 3221 ; 3222 } 3223 #pragma omp ordered 3224 { 3225 #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?}} 3226 for (int i = 0; i < 10; ++i) 3227 ; 3228 } 3229 #pragma omp ordered 3230 { 3231 #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?}} 3232 for (int i = 0; i < 10; ++i) 3233 ; 3234 } 3235 3236 // ATOMIC DIRECTIVE 3237 #pragma omp atomic 3238 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3239 // expected-note@+1 {{expected an expression statement}} 3240 { 3241 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3242 for (int i = 0; i < 10; ++i) 3243 ; 3244 } 3245 #pragma omp atomic 3246 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3247 // expected-note@+1 {{expected an expression statement}} 3248 { 3249 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3250 for (int i = 0; i < 10; ++i) 3251 ; 3252 } 3253 #pragma omp atomic 3254 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3255 // expected-note@+1 {{expected an expression statement}} 3256 { 3257 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3258 for (int i = 0; i < 10; ++i) 3259 ; 3260 } 3261 #pragma omp atomic 3262 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3263 // expected-note@+1 {{expected an expression statement}} 3264 { 3265 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3266 for (int i = 0; i < 10; ++i) 3267 ; 3268 } 3269 #pragma omp atomic 3270 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3271 // expected-note@+1 {{expected an expression statement}} 3272 { 3273 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3274 { 3275 bar(); 3276 } 3277 } 3278 #pragma omp atomic 3279 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3280 // expected-note@+1 {{expected an expression statement}} 3281 { 3282 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3283 { 3284 bar(); 3285 } 3286 } 3287 #pragma omp atomic 3288 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3289 // expected-note@+1 {{expected an expression statement}} 3290 { 3291 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3292 { 3293 bar(); 3294 } 3295 } 3296 #pragma omp atomic 3297 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3298 // expected-note@+1 {{expected an expression statement}} 3299 { 3300 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3301 { 3302 bar(); 3303 } 3304 } 3305 #pragma omp atomic 3306 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3307 // expected-note@+1 {{expected an expression statement}} 3308 { 3309 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3310 { 3311 bar(); 3312 } 3313 } 3314 #pragma omp atomic 3315 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3316 // expected-note@+1 {{expected an expression statement}} 3317 { 3318 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3319 for (int i = 0; i < 10; ++i) 3320 ; 3321 } 3322 #pragma omp atomic 3323 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3324 // expected-note@+1 {{expected an expression statement}} 3325 { 3326 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3327 for (int i = 0; i < 10; ++i) 3328 ; 3329 } 3330 #pragma omp atomic 3331 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3332 // expected-note@+1 {{expected an expression statement}} 3333 { 3334 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3335 { 3336 bar(); 3337 } 3338 } 3339 #pragma omp atomic 3340 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3341 // expected-note@+1 {{expected an expression statement}} 3342 { 3343 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3344 { 3345 bar(); 3346 } 3347 } 3348 #pragma omp atomic 3349 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3350 // expected-note@+1 {{expected an expression statement}} 3351 { 3352 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3353 bar(); 3354 } 3355 #pragma omp atomic 3356 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3357 // expected-note@+1 {{expected an expression statement}} 3358 { 3359 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3360 bar(); 3361 } 3362 #pragma omp atomic 3363 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3364 // expected-note@+1 {{expected an expression statement}} 3365 { 3366 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3367 bar(); 3368 } 3369 #pragma omp atomic 3370 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3371 // expected-note@+1 {{expected an expression statement}} 3372 { 3373 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3374 bar(); 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 ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3381 bar(); 3382 } 3383 #pragma omp atomic 3384 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3385 // expected-note@+1 {{expected an expression statement}} 3386 { 3387 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3388 ++a; 3389 } 3390 #pragma omp atomic 3391 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3392 // expected-note@+1 {{expected an expression statement}} 3393 { 3394 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3395 ++a; 3396 } 3397 #pragma omp atomic 3398 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3399 // expected-note@+1 {{expected an expression statement}} 3400 { 3401 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3402 ++a; 3403 } 3404 #pragma omp atomic 3405 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3406 // expected-note@+1 {{expected an expression statement}} 3407 { 3408 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3409 for (int i = 0; i < 10; ++i) 3410 ; 3411 } 3412 #pragma omp atomic 3413 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3414 // expected-note@+1 {{expected an expression statement}} 3415 { 3416 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3417 ++a; 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 target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3424 ++a; 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 teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3431 ++a; 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 taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3438 for (int i = 0; i < 10; ++i) 3439 ++a; 3440 } 3441 #pragma omp atomic 3442 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3443 // expected-note@+1 {{expected an expression statement}} 3444 { 3445 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3446 for (int i = 0; i < 10; ++i) 3447 ; 3448 } 3449 #pragma omp atomic 3450 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3451 // expected-note@+1 {{expected an expression statement}} 3452 { 3453 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3454 bar(); 3455 } 3456 #pragma omp atomic 3457 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3458 // expected-note@+1 {{expected an expression statement}} 3459 { 3460 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3461 for (int i = 0; i < 10; ++i) 3462 ; 3463 } 3464 #pragma omp atomic 3465 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3466 // expected-note@+1 {{expected an expression statement}} 3467 { 3468 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3469 for (int i = 0; i < 10; ++i) 3470 ; 3471 } 3472 #pragma omp atomic 3473 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3474 // expected-note@+1 {{expected an expression statement}} 3475 { 3476 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3477 for (int i = 0; i < 10; ++i) 3478 ; 3479 } 3480 #pragma omp atomic 3481 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3482 // expected-note@+1 {{expected an expression statement}} 3483 { 3484 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3485 for (int i = 0; i < 10; ++i) 3486 ; 3487 } 3488 #pragma omp atomic 3489 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3490 // expected-note@+1 {{expected an expression statement}} 3491 { 3492 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3493 for (int i = 0; i < 10; ++i) 3494 ; 3495 } 3496 #pragma omp atomic 3497 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 3498 // expected-note@+1 {{expected an expression statement}} 3499 { 3500 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3501 for (int i = 0; i < 10; ++i) 3502 ; 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 teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3509 for (int i = 0; i < 10; ++i) 3510 ; 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 teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 3517 for (int i = 0; i < 10; ++i) 3518 ; 3519 } 3520 3521 // TARGET DIRECTIVE 3522 #pragma omp target 3523 #pragma omp parallel 3524 bar(); 3525 #pragma omp target 3526 #pragma omp for 3527 for (int i = 0; i < 10; ++i) 3528 ; 3529 #pragma omp target 3530 #pragma omp simd 3531 for (int i = 0; i < 10; ++i) 3532 ; 3533 #pragma omp target 3534 #pragma omp for simd 3535 for (int i = 0; i < 10; ++i) 3536 ; 3537 #pragma omp target 3538 #pragma omp sections 3539 { 3540 bar(); 3541 } 3542 #pragma omp target 3543 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 3544 { 3545 bar(); 3546 } 3547 #pragma omp target 3548 #pragma omp single 3549 bar(); 3550 3551 #pragma omp target 3552 #pragma omp master 3553 { 3554 bar(); 3555 } 3556 #pragma omp target 3557 #pragma omp critical 3558 { 3559 bar(); 3560 } 3561 #pragma omp target 3562 #pragma omp parallel for 3563 for (int i = 0; i < 10; ++i) 3564 ; 3565 #pragma omp target 3566 #pragma omp parallel for simd 3567 for (int i = 0; i < 10; ++i) 3568 ; 3569 #pragma omp target 3570 #pragma omp parallel sections 3571 { 3572 bar(); 3573 } 3574 #pragma omp target 3575 #pragma omp task 3576 { 3577 bar(); 3578 } 3579 #pragma omp target 3580 { 3581 #pragma omp taskyield 3582 bar(); 3583 } 3584 #pragma omp target 3585 { 3586 #pragma omp barrier 3587 bar(); 3588 } 3589 #pragma omp target 3590 { 3591 #pragma omp taskwait 3592 bar(); 3593 } 3594 #pragma omp target 3595 { 3596 #pragma omp flush 3597 bar(); 3598 } 3599 #pragma omp target 3600 { 3601 #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?}} 3602 bar(); 3603 } 3604 #pragma omp target 3605 { 3606 #pragma omp atomic 3607 ++a; 3608 } 3609 #pragma omp target 3610 { 3611 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 3612 ++a; 3613 } 3614 #pragma omp target 3615 { 3616 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 3617 ++a; 3618 } 3619 #pragma omp target 3620 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 3621 for (int i = 0; i < 10; ++i) 3622 ; 3623 #pragma omp target 3624 { 3625 #pragma omp teams 3626 ++a; 3627 } 3628 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 3629 { 3630 ++a; // expected-note {{statement outside teams construct here}} 3631 #pragma omp teams // expected-note {{nested teams construct here}} 3632 ++a; 3633 } 3634 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 3635 { 3636 while (0) // expected-note {{statement outside teams construct here}} 3637 #pragma omp teams // expected-note {{nested teams construct here}} 3638 ++a; 3639 } 3640 #pragma omp target 3641 { 3642 #pragma omp taskloop 3643 for (int i = 0; i < 10; ++i) 3644 ++a; 3645 } 3646 #pragma omp target 3647 { 3648 #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?}} 3649 for (int i = 0; i < 10; ++i) 3650 ; 3651 } 3652 #pragma omp target 3653 { 3654 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 3655 } 3656 #pragma omp target 3657 { 3658 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 3659 } 3660 #pragma omp target 3661 { 3662 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 3663 } 3664 #pragma omp target 3665 { 3666 #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?}} 3667 for (int i = 0; i < 10; ++i) 3668 ; 3669 } 3670 #pragma omp target 3671 { 3672 #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?}} 3673 for (int i = 0; i < 10; ++i) 3674 ; 3675 } 3676 #pragma omp target 3677 { 3678 #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?}} 3679 for (int i = 0; i < 10; ++i) 3680 ; 3681 } 3682 #pragma omp target 3683 { 3684 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 3685 for (int i = 0; i < 10; ++i) 3686 ; 3687 } 3688 #pragma omp target 3689 { 3690 #pragma omp teams distribute // OK 3691 for (int i = 0; i < 10; ++i) 3692 ; 3693 } 3694 #pragma omp target 3695 { 3696 #pragma omp teams distribute simd // OK 3697 for (int i = 0; i < 10; ++i) 3698 ; 3699 } 3700 #pragma omp target 3701 { 3702 #pragma omp teams distribute parallel for simd // OK 3703 for (int i = 0; i < 10; ++i) 3704 ; 3705 } 3706 #pragma omp target 3707 { 3708 #pragma omp teams distribute parallel for // OK 3709 for (int i = 0; i < 10; ++i) 3710 ; 3711 } 3712 3713 // TARGET PARALLEL DIRECTIVE 3714 #pragma omp target parallel 3715 #pragma omp parallel 3716 bar(); 3717 #pragma omp target parallel 3718 #pragma omp for 3719 for (int i = 0; i < 10; ++i) 3720 ; 3721 #pragma omp target parallel 3722 #pragma omp simd 3723 for (int i = 0; i < 10; ++i) 3724 ; 3725 #pragma omp target parallel 3726 #pragma omp for simd 3727 for (int i = 0; i < 10; ++i) 3728 ; 3729 #pragma omp target parallel 3730 #pragma omp sections 3731 { 3732 bar(); 3733 } 3734 #pragma omp target parallel 3735 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 3736 { 3737 bar(); 3738 } 3739 #pragma omp target parallel 3740 #pragma omp single 3741 bar(); 3742 3743 #pragma omp target parallel 3744 #pragma omp master 3745 { 3746 bar(); 3747 } 3748 #pragma omp target parallel 3749 #pragma omp critical 3750 { 3751 bar(); 3752 } 3753 #pragma omp target parallel 3754 #pragma omp parallel for 3755 for (int i = 0; i < 10; ++i) 3756 ; 3757 #pragma omp target parallel 3758 #pragma omp parallel for simd 3759 for (int i = 0; i < 10; ++i) 3760 ; 3761 #pragma omp target parallel 3762 #pragma omp parallel sections 3763 { 3764 bar(); 3765 } 3766 #pragma omp target parallel 3767 #pragma omp task 3768 { 3769 bar(); 3770 } 3771 #pragma omp target parallel 3772 { 3773 #pragma omp taskyield 3774 bar(); 3775 } 3776 #pragma omp target parallel 3777 { 3778 #pragma omp barrier 3779 bar(); 3780 } 3781 #pragma omp target parallel 3782 { 3783 #pragma omp taskwait 3784 bar(); 3785 } 3786 #pragma omp target parallel 3787 { 3788 #pragma omp flush 3789 bar(); 3790 } 3791 #pragma omp target parallel 3792 { 3793 #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?}} 3794 bar(); 3795 } 3796 #pragma omp target parallel 3797 { 3798 #pragma omp atomic 3799 ++a; 3800 } 3801 #pragma omp target parallel 3802 { 3803 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 3804 ++a; 3805 } 3806 #pragma omp target parallel 3807 { 3808 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 3809 ++a; 3810 } 3811 #pragma omp target parallel 3812 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 3813 for (int i = 0; i < 10; ++i) 3814 ; 3815 #pragma omp target parallel 3816 { 3817 #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?}} 3818 ++a; 3819 } 3820 #pragma omp target parallel 3821 { 3822 ++a; 3823 #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?}} 3824 ++a; 3825 } 3826 #pragma omp target parallel 3827 { 3828 #pragma omp taskloop 3829 for (int i = 0; i < 10; ++i) 3830 ++a; 3831 } 3832 #pragma omp target parallel 3833 { 3834 #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?}} 3835 for (int i = 0; i < 10; ++i) 3836 ; 3837 } 3838 #pragma omp target parallel 3839 { 3840 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3841 } 3842 #pragma omp target parallel 3843 { 3844 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3845 } 3846 #pragma omp target parallel 3847 { 3848 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 3849 } 3850 #pragma omp target parallel 3851 { 3852 #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?}} 3853 for (int i = 0; i < 10; ++i) 3854 ; 3855 } 3856 #pragma omp target parallel 3857 { 3858 #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?}} 3859 for (int i = 0; i < 10; ++i) 3860 ; 3861 } 3862 #pragma omp target parallel 3863 { 3864 #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?}} 3865 for (int i = 0; i < 10; ++i) 3866 ; 3867 } 3868 #pragma omp target parallel 3869 { 3870 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}} 3871 for (int i = 0; i < 10; ++i) 3872 ; 3873 } 3874 #pragma omp target parallel 3875 { 3876 #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?}} 3877 for (int i = 0; i < 10; ++i) 3878 ; 3879 } 3880 #pragma omp target parallel 3881 { 3882 #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?}} 3883 for (int i = 0; i < 10; ++i) 3884 ; 3885 } 3886 #pragma omp target parallel 3887 { 3888 #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?}} 3889 for (int i = 0; i < 10; ++i) 3890 ; 3891 } 3892 #pragma omp target parallel 3893 { 3894 #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?}} 3895 for (int i = 0; i < 10; ++i) 3896 ; 3897 } 3898 3899 // TARGET PARALLEL FOR DIRECTIVE 3900 #pragma omp target parallel for 3901 for (int i = 0; i < 10; ++i) { 3902 #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?}} 3903 for (int i = 0; i < 10; ++i) 3904 ; 3905 } 3906 #pragma omp target parallel for 3907 for (int i = 0; i < 10; ++i) { 3908 #pragma omp simd 3909 for (int i = 0; i < 10; ++i) 3910 ; 3911 } 3912 #pragma omp target parallel for 3913 for (int i = 0; i < 10; ++i) { 3914 #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?}} 3915 for (int i = 0; i < 10; ++i) 3916 ; 3917 } 3918 #pragma omp target parallel for 3919 for (int i = 0; i < 10; ++i) { 3920 #pragma omp parallel 3921 for (int i = 0; i < 10; ++i) 3922 ; 3923 } 3924 #pragma omp target parallel for 3925 for (int i = 0; i < 10; ++i) { 3926 #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?}} 3927 { 3928 bar(); 3929 } 3930 } 3931 #pragma omp target parallel for 3932 for (int i = 0; i < 10; ++i) { 3933 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 3934 { 3935 bar(); 3936 } 3937 } 3938 #pragma omp target parallel for 3939 for (int i = 0; i < 10; ++i) { 3940 #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?}} 3941 { 3942 bar(); 3943 } 3944 } 3945 3946 #pragma omp target parallel for 3947 for (int i = 0; i < 10; ++i) { 3948 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 3949 { 3950 bar(); 3951 } 3952 } 3953 3954 #pragma omp target parallel for 3955 for (int i = 0; i < 10; ++i) { 3956 #pragma omp critical 3957 { 3958 bar(); 3959 } 3960 } 3961 3962 #pragma omp target parallel for 3963 for (int i = 0; i < 10; ++i) { 3964 #pragma omp parallel 3965 { 3966 #pragma omp single // OK 3967 { 3968 bar(); 3969 } 3970 #pragma omp for // OK 3971 for (int i = 0; i < 10; ++i) 3972 ; 3973 #pragma omp for simd // OK 3974 for (int i = 0; i < 10; ++i) 3975 ; 3976 #pragma omp sections // OK 3977 { 3978 bar(); 3979 } 3980 } 3981 } 3982 #pragma omp target parallel for 3983 for (int i = 0; i < 10; ++i) { 3984 #pragma omp parallel for 3985 for (int i = 0; i < 10; ++i) 3986 ; 3987 } 3988 #pragma omp target parallel for 3989 for (int i = 0; i < 10; ++i) { 3990 #pragma omp parallel for simd 3991 for (int i = 0; i < 10; ++i) 3992 ; 3993 } 3994 #pragma omp target parallel for 3995 for (int i = 0; i < 10; ++i) { 3996 #pragma omp parallel sections 3997 { 3998 bar(); 3999 } 4000 } 4001 #pragma omp target parallel for 4002 for (int i = 0; i < 10; ++i) { 4003 #pragma omp task 4004 { 4005 bar(); 4006 } 4007 } 4008 #pragma omp target parallel for 4009 for (int i = 0; i < 10; ++i) { 4010 #pragma omp taskyield 4011 bar(); 4012 } 4013 #pragma omp target parallel for 4014 for (int i = 0; i < 10; ++i) { 4015 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 4016 bar(); 4017 } 4018 #pragma omp target parallel for 4019 for (int i = 0; i < 10; ++i) { 4020 #pragma omp taskwait 4021 bar(); 4022 } 4023 #pragma omp target parallel for 4024 for (int i = 0; i < 10; ++i) { 4025 #pragma omp flush 4026 bar(); 4027 } 4028 #pragma omp target parallel for 4029 for (int i = 0; i < 10; ++i) { 4030 #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?}} 4031 bar(); 4032 } 4033 #pragma omp target parallel for ordered 4034 for (int i = 0; i < 10; ++i) { 4035 #pragma omp ordered // OK 4036 bar(); 4037 } 4038 #pragma omp target parallel for 4039 for (int i = 0; i < 10; ++i) { 4040 #pragma omp atomic 4041 ++a; 4042 } 4043 #pragma omp target parallel for 4044 for (int i = 0; i < 10; ++i) { 4045 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 4046 ++a; 4047 } 4048 #pragma omp target parallel for 4049 for (int i = 0; i < 10; ++i) { 4050 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 4051 ++a; 4052 } 4053 #pragma omp target parallel for 4054 for (int i = 0; i < 10; ++i) { 4055 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 4056 for (int i = 0; i < 10; ++i) 4057 ; 4058 } 4059 #pragma omp target parallel for 4060 for (int i = 0; i < 10; ++i) { 4061 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4062 ++a; 4063 } 4064 #pragma omp target parallel for 4065 for (int i = 0; i < 10; ++i) { 4066 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4067 ++a; 4068 } 4069 #pragma omp target parallel for 4070 for (int i = 0; i < 10; ++i) { 4071 #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?}} 4072 ++a; 4073 } 4074 #pragma omp target parallel for 4075 for (int i = 0; i < 10; ++i) { 4076 #pragma omp taskloop 4077 for (int i = 0; i < 10; ++i) 4078 ++a; 4079 } 4080 #pragma omp target parallel for 4081 for (int i = 0; i < 10; ++i) { 4082 #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?}} 4083 for (int j = 0; j < 10; ++j) 4084 ; 4085 } 4086 #pragma omp target parallel for 4087 for (int i = 0; i < 10; ++i) { 4088 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 4089 } 4090 #pragma omp target parallel for 4091 for (int i = 0; i < 10; ++i) { 4092 #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?}} 4093 for (int j = 0; j < 10; ++j) 4094 ; 4095 } 4096 #pragma omp target parallel for 4097 for (int i = 0; i < 10; ++i) { 4098 #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?}} 4099 for (int j = 0; j < 10; ++j) 4100 ; 4101 } 4102 #pragma omp target parallel for 4103 for (int i = 0; i < 10; ++i) { 4104 #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?}} 4105 for (int j = 0; j < 10; ++j) 4106 ; 4107 } 4108 #pragma omp target parallel for 4109 for (int i = 0; i < 10; ++i) { 4110 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 4111 for (int j = 0; j < 10; ++j) 4112 ; 4113 } 4114 #pragma omp target parallel for 4115 for (int i = 0; i < 10; ++i) { 4116 #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?}} 4117 for (int j = 0; j < 10; ++j) 4118 ; 4119 } 4120 #pragma omp target parallel for 4121 for (int i = 0; i < 10; ++i) { 4122 #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?}} 4123 for (int j = 0; j < 10; ++j) 4124 ; 4125 } 4126 #pragma omp target parallel for 4127 for (int i = 0; i < 10; ++i) { 4128 #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?}} 4129 for (int j = 0; j < 10; ++j) 4130 ; 4131 } 4132 #pragma omp target parallel for 4133 for (int i = 0; i < 10; ++i) { 4134 #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?}} 4135 for (int j = 0; j < 10; ++j) 4136 ; 4137 } 4138 4139 // TEAMS DIRECTIVE 4140 #pragma omp teams // expected-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 4141 bar(); 4142 #pragma omp target 4143 #pragma omp teams 4144 #pragma omp parallel 4145 bar(); 4146 #pragma omp target 4147 #pragma omp teams 4148 #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?}} 4149 for (int i = 0; i < 10; ++i) 4150 ; 4151 #pragma omp target 4152 #pragma omp teams 4153 #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?}} 4154 for (int i = 0; i < 10; ++i) 4155 ; 4156 #pragma omp target 4157 #pragma omp teams 4158 #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?}} 4159 for (int i = 0; i < 10; ++i) 4160 ; 4161 #pragma omp target 4162 #pragma omp teams 4163 #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?}} 4164 { 4165 bar(); 4166 } 4167 #pragma omp target 4168 #pragma omp teams 4169 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 4170 { 4171 bar(); 4172 } 4173 #pragma omp target 4174 #pragma omp teams 4175 #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?}} 4176 bar(); 4177 4178 #pragma omp target 4179 #pragma omp teams 4180 #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?}} 4181 { 4182 bar(); 4183 } 4184 #pragma omp target 4185 #pragma omp teams 4186 #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?}} 4187 { 4188 bar(); 4189 } 4190 #pragma omp target 4191 #pragma omp teams 4192 #pragma omp parallel for 4193 for (int i = 0; i < 10; ++i) 4194 ; 4195 #pragma omp target 4196 #pragma omp teams 4197 #pragma omp parallel for simd 4198 for (int i = 0; i < 10; ++i) 4199 ; 4200 #pragma omp target 4201 #pragma omp teams 4202 #pragma omp parallel sections 4203 { 4204 bar(); 4205 } 4206 #pragma omp target 4207 #pragma omp teams 4208 #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?}} 4209 { 4210 bar(); 4211 } 4212 #pragma omp target 4213 #pragma omp teams 4214 { 4215 #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?}} 4216 bar(); 4217 } 4218 #pragma omp target 4219 #pragma omp teams 4220 { 4221 #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?}} 4222 bar(); 4223 } 4224 #pragma omp target 4225 #pragma omp teams 4226 { 4227 #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?}} 4228 bar(); 4229 } 4230 #pragma omp target 4231 #pragma omp teams 4232 { 4233 #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?}} 4234 bar(); 4235 } 4236 #pragma omp target 4237 #pragma omp teams 4238 { 4239 #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?}} 4240 bar(); 4241 } 4242 #pragma omp target 4243 #pragma omp teams 4244 { 4245 #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?}} 4246 ++a; 4247 } 4248 #pragma omp target 4249 #pragma omp teams 4250 { 4251 #pragma omp target // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target' directive into a parallel region?}} 4252 ++a; 4253 } 4254 #pragma omp target 4255 #pragma omp teams 4256 { 4257 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4258 ++a; 4259 } 4260 #pragma omp target 4261 #pragma omp teams 4262 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4263 for (int i = 0; i < 10; ++i) 4264 ; 4265 #pragma omp target 4266 #pragma omp teams 4267 { 4268 #pragma omp target enter data map(to: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target enter data' directive into a parallel region?}} 4269 ++a; 4270 } 4271 #pragma omp target 4272 #pragma omp teams 4273 { 4274 #pragma omp target exit data map(from: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target exit data' directive into a parallel region?}} 4275 ++a; 4276 } 4277 #pragma omp target 4278 #pragma omp teams 4279 { 4280 #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?}} 4281 ++a; 4282 } 4283 #pragma omp target 4284 #pragma omp teams 4285 { 4286 #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?}} 4287 for (int i = 0; i < 10; ++i) 4288 ++a; 4289 } 4290 #pragma omp target 4291 #pragma omp teams 4292 #pragma omp distribute 4293 for (int i = 0; i < 10; ++i) 4294 ; 4295 #pragma omp target 4296 #pragma omp teams 4297 #pragma omp distribute 4298 for (int i = 0; i < 10; ++i) 4299 ; 4300 #pragma omp distribute 4301 for (int j = 0; j < 10; ++j) 4302 ; 4303 #pragma omp target 4304 #pragma omp teams 4305 { 4306 #pragma omp target update to(a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target update' directive into a parallel region?}} 4307 } 4308 #pragma omp target 4309 #pragma omp teams 4310 { 4311 #pragma omp distribute parallel for 4312 for (int i = 0; i < 10; ++i) 4313 ; 4314 #pragma omp distribute parallel for 4315 for (int j = 0; j < 10; ++j) 4316 ; 4317 } 4318 #pragma omp target 4319 #pragma omp teams 4320 { 4321 #pragma omp distribute parallel for simd 4322 for (int i = 0; i < 10; ++i) 4323 ; 4324 #pragma omp distribute parallel for simd 4325 for (int j = 0; j < 10; ++j) 4326 ; 4327 } 4328 #pragma omp target 4329 #pragma omp teams 4330 { 4331 #pragma omp distribute simd 4332 for (int i = 0; i < 10; ++i) 4333 ; 4334 #pragma omp distribute simd 4335 for (int j = 0; j < 10; ++j) 4336 ; 4337 } 4338 #pragma omp target 4339 #pragma omp teams 4340 { 4341 #pragma omp target simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target simd' directive into a parallel region?}} 4342 for (int i = 0; i < 10; ++i) 4343 ; 4344 } 4345 #pragma omp target 4346 #pragma omp teams 4347 { 4348 #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?}} 4349 for (int i = 0; i < 10; ++i) 4350 ; 4351 } 4352 #pragma omp target 4353 #pragma omp teams 4354 { 4355 #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?}} 4356 for (int i = 0; i < 10; ++i) 4357 ; 4358 } 4359 #pragma omp target 4360 #pragma omp teams 4361 { 4362 #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?}} 4363 for (int i = 0; i < 10; ++i) 4364 ; 4365 } 4366 #pragma omp target 4367 #pragma omp teams 4368 { 4369 #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?}} 4370 for (int i = 0; i < 10; ++i) 4371 ; 4372 } 4373 4374 // TASKLOOP DIRECTIVE 4375 #pragma omp taskloop 4376 for (int i = 0; i < 10; ++i) { 4377 #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?}} 4378 for (int i = 0; i < 10; ++i) 4379 ; 4380 } 4381 #pragma omp taskloop 4382 for (int i = 0; i < 10; ++i) { 4383 #pragma omp simd 4384 for (int i = 0; i < 10; ++i) 4385 ; 4386 } 4387 #pragma omp taskloop 4388 for (int i = 0; i < 10; ++i) { 4389 #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?}} 4390 for (int i = 0; i < 10; ++i) 4391 ; 4392 } 4393 #pragma omp taskloop 4394 for (int i = 0; i < 10; ++i) { 4395 #pragma omp parallel 4396 for (int i = 0; i < 10; ++i) 4397 ; 4398 } 4399 #pragma omp taskloop 4400 for (int i = 0; i < 10; ++i) { 4401 #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?}} 4402 { 4403 bar(); 4404 } 4405 } 4406 #pragma omp taskloop 4407 for (int i = 0; i < 10; ++i) { 4408 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 4409 { 4410 bar(); 4411 } 4412 } 4413 #pragma omp taskloop 4414 for (int i = 0; i < 10; ++i) { 4415 #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?}} 4416 { 4417 bar(); 4418 } 4419 } 4420 4421 #pragma omp taskloop 4422 for (int i = 0; i < 10; ++i) { 4423 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4424 { 4425 bar(); 4426 } 4427 } 4428 #pragma omp taskloop 4429 for (int i = 0; i < 10; ++i) { 4430 #pragma omp critical 4431 { 4432 bar(); 4433 } 4434 } 4435 #pragma omp taskloop 4436 for (int i = 0; i < 10; ++i) { 4437 #pragma omp parallel 4438 { 4439 #pragma omp single // OK 4440 { 4441 bar(); 4442 } 4443 #pragma omp for // OK 4444 for (int i = 0; i < 10; ++i) 4445 ; 4446 #pragma omp sections // OK 4447 { 4448 bar(); 4449 } 4450 } 4451 } 4452 #pragma omp taskloop 4453 for (int i = 0; i < 10; ++i) { 4454 #pragma omp parallel for 4455 for (int i = 0; i < 10; ++i) 4456 ; 4457 } 4458 #pragma omp taskloop 4459 for (int i = 0; i < 10; ++i) { 4460 #pragma omp parallel for simd 4461 for (int i = 0; i < 10; ++i) 4462 ; 4463 } 4464 #pragma omp taskloop 4465 for (int i = 0; i < 10; ++i) { 4466 #pragma omp parallel sections 4467 { 4468 bar(); 4469 } 4470 } 4471 #pragma omp taskloop 4472 for (int i = 0; i < 10; ++i) { 4473 #pragma omp task 4474 { 4475 bar(); 4476 } 4477 } 4478 #pragma omp taskloop 4479 for (int i = 0; i < 10; ++i) { 4480 #pragma omp taskyield 4481 bar(); 4482 } 4483 #pragma omp taskloop 4484 for (int i = 0; i < 10; ++i) { 4485 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 4486 bar(); 4487 } 4488 #pragma omp taskloop 4489 for (int i = 0; i < 10; ++i) { 4490 #pragma omp taskwait 4491 bar(); 4492 } 4493 #pragma omp taskloop 4494 for (int i = 0; i < 10; ++i) { 4495 #pragma omp flush 4496 bar(); 4497 } 4498 #pragma omp taskloop 4499 for (int i = 0; i < 10; ++i) { 4500 #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?}} 4501 bar(); 4502 } 4503 #pragma omp taskloop 4504 for (int i = 0; i < 10; ++i) { 4505 #pragma omp atomic 4506 ++a; 4507 } 4508 #pragma omp taskloop 4509 for (int i = 0; i < 10; ++i) { 4510 #pragma omp target 4511 ++a; 4512 } 4513 #pragma omp taskloop 4514 for (int i = 0; i < 10; ++i) { 4515 #pragma omp target parallel 4516 ++a; 4517 } 4518 #pragma omp taskloop 4519 for (int i = 0; i < 10; ++i) { 4520 #pragma omp target parallel for 4521 for (int i = 0; i < 10; ++i) 4522 ; 4523 } 4524 #pragma omp taskloop 4525 for (int i = 0; i < 10; ++i) { 4526 #pragma omp target enter data map(to: a) 4527 ++a; 4528 } 4529 #pragma omp taskloop 4530 for (int i = 0; i < 10; ++i) { 4531 #pragma omp target exit data map(from: a) 4532 ++a; 4533 } 4534 #pragma omp taskloop 4535 for (int i = 0; i < 10; ++i) { 4536 #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?}} 4537 ++a; 4538 } 4539 #pragma omp taskloop 4540 for (int i = 0; i < 10; ++i) { 4541 #pragma omp taskloop 4542 for (int i = 0; i < 10; ++i) 4543 ++a; 4544 } 4545 #pragma omp taskloop 4546 for (int i = 0; i < 10; ++i) { 4547 #pragma omp target update to(a) 4548 bar(); 4549 } 4550 #pragma omp taskloop 4551 for (int i = 0; i < 10; ++i) { 4552 #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?}} 4553 for (int j = 0; j < 10; ++j) 4554 ++a; 4555 } 4556 #pragma omp taskloop 4557 for (int i = 0; i < 10; ++i) { 4558 #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?}} 4559 for (int j = 0; j < 10; ++j) 4560 ++a; 4561 } 4562 #pragma omp taskloop 4563 for (int i = 0; i < 10; ++i) { 4564 #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?}} 4565 for (int j = 0; j < 10; ++j) 4566 ++a; 4567 } 4568 #pragma omp taskloop 4569 for (int i = 0; i < 10; ++i) { 4570 #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?}} 4571 for (int j = 0; j < 10; ++j) 4572 ++a; 4573 } 4574 #pragma omp taskloop 4575 for (int i = 0; i < 10; ++i) { 4576 #pragma omp target simd // OK 4577 for (int j = 0; j < 10; ++j) 4578 ++a; 4579 } 4580 #pragma omp taskloop 4581 for (int i = 0; i < 10; ++i) { 4582 #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?}} 4583 for (int j = 0; j < 10; ++j) 4584 ++a; 4585 } 4586 #pragma omp taskloop 4587 for (int i = 0; i < 10; ++i) { 4588 #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?}} 4589 for (int j = 0; j < 10; ++j) 4590 ++a; 4591 } 4592 #pragma omp taskloop 4593 for (int i = 0; i < 10; ++i) { 4594 #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?}} 4595 for (int j = 0; j < 10; ++j) 4596 ++a; 4597 } 4598 #pragma omp taskloop 4599 for (int i = 0; i < 10; ++i) { 4600 #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?}} 4601 for (int j = 0; j < 10; ++j) 4602 ++a; 4603 } 4604 4605 // DISTRIBUTE DIRECTIVE 4606 #pragma omp target 4607 #pragma omp teams 4608 #pragma omp distribute 4609 for (int i = 0; i < 10; ++i) { 4610 #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?}} 4611 for (int i = 0; i < 10; ++i) 4612 ; 4613 } 4614 #pragma omp target 4615 #pragma omp teams 4616 #pragma omp distribute 4617 for (int i = 0; i < 10; ++i) { 4618 #pragma omp for 4619 for (int i = 0; i < 10; ++i) 4620 ; 4621 } 4622 #pragma omp target 4623 #pragma omp teams 4624 #pragma omp distribute 4625 for (int i = 0; i < 10; ++i) { 4626 #pragma omp simd 4627 for (int i = 0; i < 10; ++i) 4628 ; 4629 } 4630 #pragma omp target 4631 #pragma omp teams 4632 #pragma omp distribute 4633 for (int i = 0; i < 10; ++i) { 4634 #pragma omp for simd 4635 for (int i = 0; i < 10; ++i) 4636 ; 4637 } 4638 #pragma omp target 4639 #pragma omp teams 4640 #pragma omp distribute 4641 for (int i = 0; i < 10; ++i) { 4642 #pragma omp parallel 4643 for (int i = 0; i < 10; ++i) 4644 ; 4645 } 4646 #pragma omp target 4647 #pragma omp teams 4648 #pragma omp distribute 4649 for (int i = 0; i < 10; ++i) { 4650 #pragma omp sections 4651 { 4652 bar(); 4653 } 4654 } 4655 #pragma omp target 4656 #pragma omp teams 4657 #pragma omp distribute 4658 for (int i = 0; i < 10; ++i) { 4659 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 4660 { 4661 bar(); 4662 } 4663 } 4664 #pragma omp target 4665 #pragma omp teams 4666 #pragma omp distribute 4667 for (int i = 0; i < 10; ++i) { 4668 #pragma omp single 4669 { 4670 bar(); 4671 } 4672 } 4673 #pragma omp target 4674 #pragma omp teams 4675 #pragma omp distribute 4676 for (int i = 0; i < 10; ++i) { 4677 #pragma omp master 4678 { 4679 bar(); 4680 } 4681 } 4682 #pragma omp target 4683 #pragma omp teams 4684 #pragma omp distribute 4685 for (int i = 0; i < 10; ++i) { 4686 #pragma omp critical 4687 { 4688 bar(); 4689 } 4690 } 4691 #pragma omp target 4692 #pragma omp teams 4693 #pragma omp distribute 4694 for (int i = 0; i < 10; ++i) { 4695 #pragma omp parallel 4696 { 4697 #pragma omp single 4698 { 4699 bar(); 4700 } 4701 } 4702 } 4703 #pragma omp target 4704 #pragma omp teams 4705 #pragma omp distribute 4706 for (int i = 0; i < 10; ++i) { 4707 #pragma omp parallel for 4708 for (int i = 0; i < 10; ++i) 4709 ; 4710 } 4711 #pragma omp target 4712 #pragma omp teams 4713 #pragma omp distribute 4714 for (int i = 0; i < 10; ++i) { 4715 #pragma omp parallel for simd 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 parallel sections 4724 { 4725 bar(); 4726 } 4727 } 4728 #pragma omp target 4729 #pragma omp teams 4730 #pragma omp distribute 4731 for (int i = 0; i < 10; ++i) { 4732 #pragma omp task 4733 { 4734 bar(); 4735 } 4736 } 4737 #pragma omp target 4738 #pragma omp teams 4739 #pragma omp distribute 4740 for (int i = 0; i < 10; ++i) { 4741 #pragma omp taskyield 4742 bar(); 4743 } 4744 #pragma omp target 4745 #pragma omp teams 4746 #pragma omp distribute 4747 for (int i = 0; i < 10; ++i) { 4748 #pragma omp barrier 4749 bar(); 4750 } 4751 #pragma omp target 4752 #pragma omp teams 4753 #pragma omp distribute 4754 for (int i = 0; i < 10; ++i) { 4755 #pragma omp taskwait 4756 bar(); 4757 } 4758 #pragma omp target 4759 #pragma omp teams 4760 #pragma omp distribute 4761 for (int i = 0; i < 10; ++i) { 4762 #pragma omp flush 4763 bar(); 4764 } 4765 #pragma omp target 4766 #pragma omp teams 4767 #pragma omp distribute 4768 for (int i = 0; i < 10; ++i) { 4769 #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?}} 4770 bar(); 4771 } 4772 #pragma omp target 4773 #pragma omp teams 4774 #pragma omp distribute 4775 for (int i = 0; i < 10; ++i) { 4776 #pragma omp atomic 4777 ++a; 4778 } 4779 #pragma omp target 4780 #pragma omp teams 4781 #pragma omp distribute 4782 for (int i = 0; i < 10; ++i) { 4783 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 4784 ++a; 4785 } 4786 #pragma omp target 4787 #pragma omp teams 4788 #pragma omp distribute 4789 for (int i = 0; i < 10; ++i) { 4790 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 4791 ++a; 4792 } 4793 #pragma omp target 4794 #pragma omp teams 4795 #pragma omp distribute 4796 for (int i = 0; i < 10; ++i) { 4797 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 4798 for (int i = 0; i < 10; ++i) 4799 ; 4800 } 4801 #pragma omp target 4802 #pragma omp teams 4803 #pragma omp distribute 4804 for (int i = 0; i < 10; ++i) { 4805 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 4806 ++a; 4807 } 4808 #pragma omp target 4809 #pragma omp teams 4810 #pragma omp distribute 4811 for (int i = 0; i < 10; ++i) { 4812 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 4813 ++a; 4814 } 4815 #pragma omp target 4816 #pragma omp teams 4817 #pragma omp distribute 4818 for (int i = 0; i < 10; ++i) { 4819 #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?}} 4820 ++a; 4821 } 4822 #pragma omp target 4823 #pragma omp teams 4824 #pragma omp distribute 4825 for (int i = 0; i < 10; ++i) { 4826 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 4827 ++a; 4828 } 4829 #pragma omp target 4830 #pragma omp teams 4831 #pragma omp distribute 4832 for (int i = 0; i < 10; ++i) { 4833 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 4834 for (int j = 0; j < 10; ++j) 4835 ; 4836 } 4837 #pragma omp target 4838 #pragma omp teams 4839 #pragma omp distribute 4840 for (int i = 0; i < 10; ++i) { 4841 #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?}} 4842 for (int j = 0; j < 10; ++j) 4843 ; 4844 } 4845 #pragma omp target 4846 #pragma omp teams 4847 #pragma omp distribute 4848 for (int i = 0; i < 10; ++i) { 4849 #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?}} 4850 for (int j = 0; j < 10; ++j) 4851 ; 4852 } 4853 #pragma omp target 4854 #pragma omp teams 4855 #pragma omp distribute 4856 for (int i = 0; i < 10; ++i) { 4857 #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?}} 4858 for (int j = 0; j < 10; ++j) 4859 ; 4860 } 4861 #pragma omp target 4862 #pragma omp teams 4863 #pragma omp distribute 4864 for (int i = 0; i < 10; ++i) { 4865 #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?}} 4866 for (int j = 0; j < 10; ++j) 4867 ; 4868 } 4869 4870 // DISTRIBUTE PARALLEL FOR DIRECTIVE 4871 #pragma omp target 4872 #pragma omp teams 4873 #pragma omp distribute parallel for 4874 for (int i = 0; i < 10; ++i) { 4875 #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?}} 4876 for (int i = 0; i < 10; ++i) 4877 ; 4878 } 4879 #pragma omp target 4880 #pragma omp teams 4881 #pragma omp distribute parallel for 4882 for (int i = 0; i < 10; ++i) { 4883 #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?}} 4884 for (int i = 0; i < 10; ++i) 4885 ; 4886 } 4887 #pragma omp target 4888 #pragma omp teams 4889 #pragma omp distribute parallel for 4890 for (int i = 0; i < 10; ++i) { 4891 #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?}} 4892 for (int i = 0; i < 10; ++i) 4893 ; 4894 } 4895 #pragma omp target 4896 #pragma omp teams 4897 #pragma omp distribute parallel for 4898 for (int i = 0; i < 10; ++i) { 4899 #pragma omp simd 4900 for (int i = 0; i < 10; ++i) 4901 ; 4902 } 4903 #pragma omp target 4904 #pragma omp teams 4905 #pragma omp distribute parallel for 4906 for (int i = 0; i < 10; ++i) { 4907 #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?}} 4908 for (int i = 0; i < 10; ++i) 4909 ; 4910 } 4911 #pragma omp target 4912 #pragma omp teams 4913 #pragma omp distribute parallel for 4914 for (int i = 0; i < 10; ++i) { 4915 #pragma omp parallel 4916 for (int i = 0; i < 10; ++i) 4917 ; 4918 } 4919 #pragma omp target 4920 #pragma omp teams 4921 #pragma omp distribute parallel for 4922 for (int i = 0; i < 10; ++i) { 4923 #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?}} 4924 { 4925 bar(); 4926 } 4927 } 4928 #pragma omp target 4929 #pragma omp teams 4930 #pragma omp distribute parallel for 4931 for (int i = 0; i < 10; ++i) { 4932 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 4933 { 4934 bar(); 4935 } 4936 } 4937 #pragma omp target 4938 #pragma omp teams 4939 #pragma omp distribute parallel for 4940 for (int i = 0; i < 10; ++i) { 4941 #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?}} 4942 { 4943 bar(); 4944 } 4945 } 4946 #pragma omp target 4947 #pragma omp teams 4948 #pragma omp distribute parallel for 4949 for (int i = 0; i < 10; ++i) { 4950 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 4951 { 4952 bar(); 4953 } 4954 } 4955 #pragma omp target 4956 #pragma omp teams 4957 #pragma omp distribute parallel for 4958 for (int i = 0; i < 10; ++i) { 4959 #pragma omp critical 4960 { 4961 bar(); 4962 } 4963 } 4964 #pragma omp target 4965 #pragma omp teams 4966 #pragma omp distribute parallel for 4967 for (int i = 0; i < 10; ++i) { 4968 #pragma omp parallel 4969 { 4970 #pragma omp single 4971 { 4972 bar(); 4973 } 4974 } 4975 } 4976 #pragma omp target 4977 #pragma omp teams 4978 #pragma omp distribute parallel for 4979 for (int i = 0; i < 10; ++i) { 4980 #pragma omp parallel for 4981 for (int i = 0; i < 10; ++i) 4982 ; 4983 } 4984 #pragma omp target 4985 #pragma omp teams 4986 #pragma omp distribute parallel for 4987 for (int i = 0; i < 10; ++i) { 4988 #pragma omp parallel for simd 4989 for (int i = 0; i < 10; ++i) 4990 ; 4991 } 4992 #pragma omp target 4993 #pragma omp teams 4994 #pragma omp distribute parallel for 4995 for (int i = 0; i < 10; ++i) { 4996 #pragma omp parallel sections 4997 { 4998 bar(); 4999 } 5000 } 5001 #pragma omp target 5002 #pragma omp teams 5003 #pragma omp distribute parallel for 5004 for (int i = 0; i < 10; ++i) { 5005 #pragma omp task 5006 { 5007 bar(); 5008 } 5009 } 5010 #pragma omp target 5011 #pragma omp teams 5012 #pragma omp distribute parallel for 5013 for (int i = 0; i < 10; ++i) { 5014 #pragma omp taskyield 5015 bar(); 5016 } 5017 #pragma omp target 5018 #pragma omp teams 5019 #pragma omp distribute parallel for 5020 for (int i = 0; i < 10; ++i) { 5021 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 5022 bar(); 5023 } 5024 #pragma omp target 5025 #pragma omp teams 5026 #pragma omp distribute parallel for 5027 for (int i = 0; i < 10; ++i) { 5028 #pragma omp taskwait 5029 bar(); 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 flush 5036 bar(); 5037 } 5038 #pragma omp target 5039 #pragma omp teams 5040 #pragma omp distribute parallel for 5041 for (int i = 0; i < 10; ++i) { 5042 #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?}} 5043 bar(); 5044 } 5045 #pragma omp target 5046 #pragma omp teams 5047 #pragma omp distribute parallel for 5048 for (int i = 0; i < 10; ++i) { 5049 #pragma omp atomic 5050 ++a; 5051 } 5052 #pragma omp target 5053 #pragma omp teams 5054 #pragma omp distribute parallel for 5055 for (int i = 0; i < 10; ++i) { 5056 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5057 ++a; 5058 } 5059 #pragma omp target 5060 #pragma omp teams 5061 #pragma omp distribute parallel for 5062 for (int i = 0; i < 10; ++i) { 5063 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5064 ++a; 5065 } 5066 #pragma omp target 5067 #pragma omp teams 5068 #pragma omp distribute parallel for 5069 for (int i = 0; i < 10; ++i) { 5070 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5071 for (int i = 0; i < 10; ++i) 5072 ; 5073 } 5074 #pragma omp target 5075 #pragma omp teams 5076 #pragma omp distribute parallel for 5077 for (int i = 0; i < 10; ++i) { 5078 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5079 ++a; 5080 } 5081 #pragma omp target 5082 #pragma omp teams 5083 #pragma omp distribute parallel for 5084 for (int i = 0; i < 10; ++i) { 5085 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5086 ++a; 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 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?}} 5093 ++a; 5094 } 5095 #pragma omp target 5096 #pragma omp teams 5097 #pragma omp distribute parallel for 5098 for (int i = 0; i < 10; ++i) { 5099 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5100 ++a; 5101 } 5102 #pragma omp target 5103 #pragma omp teams 5104 #pragma omp distribute parallel for 5105 for (int i = 0; i < 10; ++i) { 5106 #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?}} 5107 for (int i = 0; i < 10; ++i) 5108 ; 5109 } 5110 #pragma omp target 5111 #pragma omp teams 5112 #pragma omp distribute parallel for 5113 for (int i = 0; i < 10; ++i) { 5114 #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?}} 5115 for (int i = 0; i < 10; ++i) 5116 ; 5117 } 5118 #pragma omp target 5119 #pragma omp teams 5120 #pragma omp distribute parallel for 5121 for (int i = 0; i < 10; ++i) { 5122 #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?}} 5123 for (int i = 0; i < 10; ++i) 5124 ; 5125 } 5126 #pragma omp target 5127 #pragma omp teams 5128 #pragma omp distribute parallel for 5129 for (int i = 0; i < 10; ++i) { 5130 #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?}} 5131 for (int i = 0; i < 10; ++i) 5132 ; 5133 } 5134 #pragma omp target 5135 #pragma omp teams 5136 #pragma omp distribute parallel for 5137 for (int i = 0; i < 10; ++i) { 5138 #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?}} 5139 for (int i = 0; i < 10; ++i) 5140 ; 5141 } 5142 5143 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 5144 #pragma omp target 5145 #pragma omp teams 5146 #pragma omp distribute parallel for simd 5147 for (int i = 0; i < 10; ++i) { 5148 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5149 for (int i = 0; i < 10; ++i) 5150 ; 5151 } 5152 #pragma omp target 5153 #pragma omp teams 5154 #pragma omp distribute parallel for simd 5155 for (int i = 0; i < 10; ++i) { 5156 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5157 for (int i = 0; i < 10; ++i) 5158 ; 5159 } 5160 #pragma omp target 5161 #pragma omp teams 5162 #pragma omp distribute parallel for simd 5163 for (int i = 0; i < 10; ++i) { 5164 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5165 for (int i = 0; i < 10; ++i) 5166 ; 5167 } 5168 #pragma omp target 5169 #pragma omp teams 5170 #pragma omp distribute parallel for simd 5171 for (int i = 0; i < 10; ++i) { 5172 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5173 for (int i = 0; i < 10; ++i) 5174 ; 5175 } 5176 #pragma omp target 5177 #pragma omp teams 5178 #pragma omp distribute parallel for simd 5179 for (int i = 0; i < 10; ++i) { 5180 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5181 for (int i = 0; i < 10; ++i) 5182 ; 5183 } 5184 #pragma omp target 5185 #pragma omp teams 5186 #pragma omp distribute parallel for simd 5187 for (int i = 0; i < 10; ++i) { 5188 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5189 for (int i = 0; i < 10; ++i) 5190 ; 5191 } 5192 #pragma omp target 5193 #pragma omp teams 5194 #pragma omp distribute parallel for simd 5195 for (int i = 0; i < 10; ++i) { 5196 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5197 { 5198 bar(); 5199 } 5200 } 5201 #pragma omp target 5202 #pragma omp teams 5203 #pragma omp distribute parallel for simd 5204 for (int i = 0; i < 10; ++i) { 5205 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5206 { 5207 bar(); 5208 } 5209 } 5210 #pragma omp target 5211 #pragma omp teams 5212 #pragma omp distribute parallel for simd 5213 for (int i = 0; i < 10; ++i) { 5214 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5215 { 5216 bar(); 5217 } 5218 } 5219 #pragma omp target 5220 #pragma omp teams 5221 #pragma omp distribute parallel for simd 5222 for (int i = 0; i < 10; ++i) { 5223 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5224 { 5225 bar(); 5226 } 5227 } 5228 #pragma omp target 5229 #pragma omp teams 5230 #pragma omp distribute parallel for simd 5231 for (int i = 0; i < 10; ++i) { 5232 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5233 { 5234 bar(); 5235 } 5236 } 5237 #pragma omp target 5238 #pragma omp teams 5239 #pragma omp distribute parallel for simd 5240 for (int i = 0; i < 10; ++i) { 5241 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5242 { 5243 #pragma omp single 5244 { 5245 bar(); 5246 } 5247 } 5248 } 5249 #pragma omp target 5250 #pragma omp teams 5251 #pragma omp distribute parallel for simd 5252 for (int i = 0; i < 10; ++i) { 5253 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5254 for (int i = 0; i < 10; ++i) 5255 ; 5256 } 5257 #pragma omp target 5258 #pragma omp teams 5259 #pragma omp distribute parallel for simd 5260 for (int i = 0; i < 10; ++i) { 5261 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5262 for (int i = 0; i < 10; ++i) 5263 ; 5264 } 5265 #pragma omp target 5266 #pragma omp teams 5267 #pragma omp distribute parallel for simd 5268 for (int i = 0; i < 10; ++i) { 5269 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5270 { 5271 bar(); 5272 } 5273 } 5274 #pragma omp target 5275 #pragma omp teams 5276 #pragma omp distribute parallel for simd 5277 for (int i = 0; i < 10; ++i) { 5278 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5279 { 5280 bar(); 5281 } 5282 } 5283 #pragma omp target 5284 #pragma omp teams 5285 #pragma omp distribute parallel for simd 5286 for (int i = 0; i < 10; ++i) { 5287 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5288 bar(); 5289 } 5290 #pragma omp target 5291 #pragma omp teams 5292 #pragma omp distribute parallel for simd 5293 for (int i = 0; i < 10; ++i) { 5294 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5295 bar(); 5296 } 5297 #pragma omp target 5298 #pragma omp teams 5299 #pragma omp distribute parallel for simd 5300 for (int i = 0; i < 10; ++i) { 5301 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5302 bar(); 5303 } 5304 #pragma omp target 5305 #pragma omp teams 5306 #pragma omp distribute parallel for simd 5307 for (int i = 0; i < 10; ++i) { 5308 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5309 bar(); 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 ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5316 bar(); 5317 } 5318 #pragma omp target 5319 #pragma omp teams 5320 #pragma omp distribute parallel for simd 5321 for (int i = 0; i < 10; ++i) { 5322 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5323 ++a; 5324 } 5325 #pragma omp target 5326 #pragma omp teams 5327 #pragma omp distribute parallel for simd 5328 for (int i = 0; i < 10; ++i) { 5329 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5330 ++a; 5331 } 5332 #pragma omp target 5333 #pragma omp teams 5334 #pragma omp distribute parallel for simd 5335 for (int i = 0; i < 10; ++i) { 5336 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5337 ++a; 5338 } 5339 #pragma omp target 5340 #pragma omp teams 5341 #pragma omp distribute parallel for simd 5342 for (int i = 0; i < 10; ++i) { 5343 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5344 for (int i = 0; i < 10; ++i) 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 target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5352 ++a; 5353 } 5354 #pragma omp target 5355 #pragma omp teams 5356 #pragma omp distribute parallel for simd 5357 for (int i = 0; i < 10; ++i) { 5358 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5359 ++a; 5360 } 5361 #pragma omp target 5362 #pragma omp teams 5363 #pragma omp distribute parallel for simd 5364 for (int i = 0; i < 10; ++i) { 5365 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5366 ++a; 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 target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5373 ++a; 5374 } 5375 #pragma omp target 5376 #pragma omp teams 5377 #pragma omp distribute parallel for simd 5378 for (int i = 0; i < 10; ++i) { 5379 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5380 for (int i = 0; i < 10; ++i) 5381 ++a; 5382 } 5383 #pragma omp target 5384 #pragma omp teams 5385 #pragma omp distribute parallel for simd 5386 for (int i = 0; i < 10; ++i) { 5387 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5388 for (int i = 0; i < 10; ++i) 5389 ++a; 5390 } 5391 #pragma omp target 5392 #pragma omp teams 5393 #pragma omp distribute parallel for simd 5394 for (int i = 0; i < 10; ++i) { 5395 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5396 for (int i = 0; i < 10; ++i) 5397 ++a; 5398 } 5399 #pragma omp target 5400 #pragma omp teams 5401 #pragma omp distribute parallel for simd 5402 for (int i = 0; i < 10; ++i) { 5403 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5404 for (int i = 0; i < 10; ++i) 5405 ++a; 5406 } 5407 #pragma omp target 5408 #pragma omp teams 5409 #pragma omp distribute parallel for simd 5410 for (int i = 0; i < 10; ++i) { 5411 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5412 for (int i = 0; i < 10; ++i) 5413 ++a; 5414 } 5415 #pragma omp target 5416 #pragma omp teams 5417 #pragma omp distribute parallel for simd 5418 for (int i = 0; i < 10; ++i) { 5419 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5420 for (int i = 0; i < 10; ++i) 5421 ++a; 5422 } 5423 5424 // TARGET SIMD DIRECTIVE 5425 #pragma omp target simd 5426 for (int i = 0; i < 10; ++i) { 5427 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5428 for (int i = 0; i < 10; ++i) 5429 ; 5430 } 5431 #pragma omp target simd 5432 for (int i = 0; i < 10; ++i) { 5433 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5434 for (int i = 0; i < 10; ++i) 5435 ; 5436 } 5437 #pragma omp target simd 5438 for (int i = 0; i < 10; ++i) { 5439 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5440 for (int i = 0; i < 10; ++i) 5441 ; 5442 } 5443 #pragma omp target simd 5444 for (int i = 0; i < 10; ++i) { 5445 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 5446 for (int i = 0; i < 10; ++i) 5447 ; 5448 } 5449 #pragma omp target simd 5450 for (int i = 0; i < 10; ++i) { 5451 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5452 for (int i = 0; i < 10; ++i) 5453 ; 5454 } 5455 #pragma omp target simd 5456 for (int i = 0; i < 10; ++i) { 5457 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5458 for (int i = 0; i < 10; ++i) 5459 ; 5460 } 5461 #pragma omp target simd 5462 for (int i = 0; i < 10; ++i) { 5463 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5464 { 5465 bar(); 5466 } 5467 } 5468 #pragma omp target simd 5469 for (int i = 0; i < 10; ++i) { 5470 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5471 { 5472 bar(); 5473 } 5474 } 5475 #pragma omp target simd 5476 for (int i = 0; i < 10; ++i) { 5477 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5478 { 5479 bar(); 5480 } 5481 } 5482 #pragma omp target simd 5483 for (int i = 0; i < 10; ++i) { 5484 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5485 { 5486 bar(); 5487 } 5488 } 5489 #pragma omp target simd 5490 for (int i = 0; i < 10; ++i) { 5491 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5492 { 5493 bar(); 5494 } 5495 } 5496 #pragma omp target simd 5497 for (int i = 0; i < 10; ++i) { 5498 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5499 { 5500 #pragma omp single 5501 { 5502 bar(); 5503 } 5504 } 5505 } 5506 #pragma omp target simd 5507 for (int i = 0; i < 10; ++i) { 5508 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5509 for (int i = 0; i < 10; ++i) 5510 ; 5511 } 5512 #pragma omp target simd 5513 for (int i = 0; i < 10; ++i) { 5514 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5515 for (int i = 0; i < 10; ++i) 5516 ; 5517 } 5518 #pragma omp target simd 5519 for (int i = 0; i < 10; ++i) { 5520 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5521 { 5522 bar(); 5523 } 5524 } 5525 #pragma omp target simd 5526 for (int i = 0; i < 10; ++i) { 5527 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5528 { 5529 bar(); 5530 } 5531 } 5532 #pragma omp target simd 5533 for (int i = 0; i < 10; ++i) { 5534 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5535 bar(); 5536 } 5537 #pragma omp target simd 5538 for (int i = 0; i < 10; ++i) { 5539 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5540 bar(); 5541 } 5542 #pragma omp target simd 5543 for (int i = 0; i < 10; ++i) { 5544 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5545 bar(); 5546 } 5547 #pragma omp target simd 5548 for (int i = 0; i < 10; ++i) { 5549 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5550 bar(); 5551 } 5552 #pragma omp target simd 5553 for (int i = 0; i < 10; ++i) { 5554 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5555 bar(); 5556 } 5557 #pragma omp target simd 5558 for (int i = 0; i < 10; ++i) { 5559 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5560 ++a; 5561 } 5562 #pragma omp target simd 5563 for (int i = 0; i < 10; ++i) { 5564 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5565 ++a; 5566 } 5567 #pragma omp target simd 5568 for (int i = 0; i < 10; ++i) { 5569 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5570 ++a; 5571 } 5572 #pragma omp target simd 5573 for (int i = 0; i < 10; ++i) { 5574 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5575 for (int i = 0; i < 10; ++i) 5576 ; 5577 } 5578 #pragma omp target simd 5579 for (int i = 0; i < 10; ++i) { 5580 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5581 ++a; 5582 } 5583 #pragma omp target simd 5584 for (int i = 0; i < 10; ++i) { 5585 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5586 ++a; 5587 } 5588 #pragma omp target simd 5589 for (int i = 0; i < 10; ++i) { 5590 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5591 ++a; 5592 } 5593 #pragma omp target simd 5594 for (int i = 0; i < 10; ++i) { 5595 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5596 ++a; 5597 } 5598 #pragma omp target simd 5599 for (int i = 0; i < 10; ++i) { 5600 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5601 for (int i = 0; i < 10; ++i) 5602 ++a; 5603 } 5604 #pragma omp target simd 5605 for (int i = 0; i < 10; ++i) { 5606 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5607 for (int i = 0; i < 10; ++i) 5608 ++a; 5609 } 5610 #pragma omp target simd 5611 for (int i = 0; i < 10; ++i) { 5612 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5613 for (int i = 0; i < 10; ++i) 5614 ++a; 5615 } 5616 #pragma omp target simd 5617 for (int i = 0; i < 10; ++i) { 5618 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5619 for (int i = 0; i < 10; ++i) 5620 ++a; 5621 } 5622 #pragma omp target simd 5623 for (int i = 0; i < 10; ++i) { 5624 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 5625 for (int i = 0; i < 10; ++i) 5626 ++a; 5627 } 5628 5629 // TEAMS DISTRIBUTE DIRECTIVE 5630 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5631 for (int i = 0; i < 10; ++i) 5632 ; 5633 #pragma omp target 5634 #pragma omp teams distribute 5635 for (int i = 0; i < 10; ++i) { 5636 #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?}} 5637 for (int i = 0; i < 10; ++i) 5638 ; 5639 } 5640 #pragma omp target 5641 #pragma omp teams distribute 5642 for (int i = 0; i < 10; ++i) { 5643 #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?}} 5644 for (int i = 0; i < 10; ++i) 5645 ; 5646 } 5647 #pragma omp target 5648 #pragma omp teams distribute 5649 for (int i = 0; i < 10; ++i) { 5650 #pragma omp for // OK 5651 for (int i = 0; i < 10; ++i) 5652 ; 5653 } 5654 #pragma omp target 5655 #pragma omp teams distribute 5656 for (int i = 0; i < 10; ++i) { 5657 #pragma omp simd // OK 5658 for (int i = 0; i < 10; ++i) 5659 ; 5660 } 5661 #pragma omp target 5662 #pragma omp teams distribute 5663 for (int i = 0; i < 10; ++i) { 5664 #pragma omp for simd // OK 5665 for (int i = 0; i < 10; ++i) 5666 ; 5667 } 5668 #pragma omp target 5669 #pragma omp teams distribute 5670 for (int i = 0; i < 10; ++i) { 5671 #pragma omp parallel // OK 5672 for (int i = 0; i < 10; ++i) 5673 ; 5674 } 5675 #pragma omp target 5676 #pragma omp teams distribute 5677 for (int i = 0; i < 10; ++i) { 5678 #pragma omp sections // OK 5679 { 5680 bar(); 5681 } 5682 } 5683 #pragma omp target 5684 #pragma omp teams distribute 5685 for (int i = 0; i < 10; ++i) { 5686 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 5687 { 5688 bar(); 5689 } 5690 } 5691 #pragma omp target 5692 #pragma omp teams distribute 5693 for (int i = 0; i < 10; ++i) { 5694 #pragma omp single // OK 5695 { 5696 bar(); 5697 } 5698 } 5699 #pragma omp target 5700 #pragma omp teams distribute 5701 for (int i = 0; i < 10; ++i) { 5702 #pragma omp master // OK 5703 { 5704 bar(); 5705 } 5706 } 5707 #pragma omp target 5708 #pragma omp teams distribute 5709 for (int i = 0; i < 10; ++i) { 5710 #pragma omp critical // OK 5711 { 5712 bar(); 5713 } 5714 } 5715 #pragma omp target 5716 #pragma omp teams distribute 5717 for (int i = 0; i < 10; ++i) { 5718 #pragma omp parallel // OK 5719 { 5720 #pragma omp single 5721 { 5722 bar(); 5723 } 5724 } 5725 } 5726 #pragma omp target 5727 #pragma omp teams distribute 5728 for (int i = 0; i < 10; ++i) { 5729 #pragma omp parallel for // OK 5730 for (int i = 0; i < 10; ++i) 5731 ; 5732 } 5733 #pragma omp target 5734 #pragma omp teams distribute 5735 for (int i = 0; i < 10; ++i) { 5736 #pragma omp parallel for simd // OK 5737 for (int i = 0; i < 10; ++i) 5738 ; 5739 } 5740 #pragma omp target 5741 #pragma omp teams distribute 5742 for (int i = 0; i < 10; ++i) { 5743 #pragma omp parallel sections // OK 5744 { 5745 bar(); 5746 } 5747 } 5748 #pragma omp target 5749 #pragma omp teams distribute 5750 for (int i = 0; i < 10; ++i) { 5751 #pragma omp task // OK 5752 { 5753 bar(); 5754 } 5755 } 5756 #pragma omp target 5757 #pragma omp teams distribute 5758 for (int i = 0; i < 10; ++i) { 5759 #pragma omp taskyield // OK 5760 bar(); 5761 } 5762 #pragma omp target 5763 #pragma omp teams distribute 5764 for (int i = 0; i < 10; ++i) { 5765 #pragma omp barrier // OK 5766 bar(); 5767 } 5768 #pragma omp target 5769 #pragma omp teams distribute 5770 for (int i = 0; i < 10; ++i) { 5771 #pragma omp taskwait // OK 5772 bar(); 5773 } 5774 #pragma omp target 5775 #pragma omp teams distribute 5776 for (int i = 0; i < 10; ++i) { 5777 #pragma omp flush // OK 5778 bar(); 5779 } 5780 #pragma omp target 5781 #pragma omp teams distribute 5782 for (int i = 0; i < 10; ++i) { 5783 #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?}} 5784 bar(); 5785 } 5786 #pragma omp target 5787 #pragma omp teams distribute 5788 for (int i = 0; i < 10; ++i) { 5789 #pragma omp atomic // OK 5790 ++a; 5791 } 5792 #pragma omp target 5793 #pragma omp teams distribute 5794 for (int i = 0; i < 10; ++i) { 5795 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 5796 ++a; 5797 } 5798 #pragma omp target 5799 #pragma omp teams distribute 5800 for (int i = 0; i < 10; ++i) { 5801 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 5802 ++a; 5803 } 5804 #pragma omp target 5805 #pragma omp teams distribute 5806 for (int i = 0; i < 10; ++i) { 5807 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 5808 for (int i = 0; i < 10; ++i) 5809 ; 5810 } 5811 #pragma omp target 5812 #pragma omp teams distribute 5813 for (int i = 0; i < 10; ++i) { 5814 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 5815 ++a; 5816 } 5817 #pragma omp target 5818 #pragma omp teams distribute 5819 for (int i = 0; i < 10; ++i) { 5820 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 5821 ++a; 5822 } 5823 #pragma omp target 5824 #pragma omp teams distribute 5825 for (int i = 0; i < 10; ++i) { 5826 #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?}} 5827 ++a; 5828 } 5829 #pragma omp target 5830 #pragma omp teams distribute 5831 for (int i = 0; i < 10; ++i) { 5832 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 5833 ++a; 5834 } 5835 #pragma omp target 5836 #pragma omp teams distribute 5837 for (int i = 0; i < 10; ++i) { 5838 #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?}} 5839 for (int i = 0; i < 10; ++i) 5840 ++a; 5841 } 5842 #pragma omp target 5843 #pragma omp teams distribute 5844 for (int i = 0; i < 10; ++i) { 5845 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 5846 for (int i = 0; i < 10; ++i) 5847 ++a; 5848 } 5849 #pragma omp target 5850 #pragma omp teams distribute 5851 for (int i = 0; i < 10; ++i) { 5852 #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?}} 5853 for (int i = 0; i < 10; ++i) 5854 ++a; 5855 } 5856 #pragma omp target 5857 #pragma omp teams distribute 5858 for (int i = 0; i < 10; ++i) { 5859 #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?}} 5860 for (int i = 0; i < 10; ++i) 5861 ++a; 5862 } 5863 #pragma omp target 5864 #pragma omp teams distribute 5865 for (int i = 0; i < 10; ++i) { 5866 #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?}} 5867 for (int i = 0; i < 10; ++i) 5868 ++a; 5869 } 5870 5871 // TEAMS DISTRIBUTE DIRECTIVE 5872 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 5873 for (int i = 0; i < 10; ++i) 5874 ; 5875 #pragma omp target 5876 #pragma omp teams distribute 5877 for (int i = 0; i < 10; ++i) { 5878 #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?}} 5879 for (int i = 0; i < 10; ++i) 5880 ; 5881 } 5882 #pragma omp target 5883 #pragma omp teams distribute 5884 for (int i = 0; i < 10; ++i) { 5885 #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?}} 5886 for (int i = 0; i < 10; ++i) 5887 ; 5888 } 5889 #pragma omp target 5890 #pragma omp teams distribute 5891 for (int i = 0; i < 10; ++i) { 5892 #pragma omp for // OK 5893 for (int i = 0; i < 10; ++i) 5894 ; 5895 } 5896 #pragma omp target 5897 #pragma omp teams distribute 5898 for (int i = 0; i < 10; ++i) { 5899 #pragma omp simd // OK 5900 for (int i = 0; i < 10; ++i) 5901 ; 5902 } 5903 #pragma omp target 5904 #pragma omp teams distribute 5905 for (int i = 0; i < 10; ++i) { 5906 #pragma omp for simd // OK 5907 for (int i = 0; i < 10; ++i) 5908 ; 5909 } 5910 #pragma omp target 5911 #pragma omp teams distribute 5912 for (int i = 0; i < 10; ++i) { 5913 #pragma omp parallel // OK 5914 for (int i = 0; i < 10; ++i) 5915 ; 5916 } 5917 #pragma omp target 5918 #pragma omp teams distribute 5919 for (int i = 0; i < 10; ++i) { 5920 #pragma omp sections // OK 5921 { 5922 bar(); 5923 } 5924 } 5925 #pragma omp target 5926 #pragma omp teams distribute 5927 for (int i = 0; i < 10; ++i) { 5928 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 5929 { 5930 bar(); 5931 } 5932 } 5933 #pragma omp target 5934 #pragma omp teams distribute 5935 for (int i = 0; i < 10; ++i) { 5936 #pragma omp single // OK 5937 { 5938 bar(); 5939 } 5940 } 5941 #pragma omp target 5942 #pragma omp teams distribute 5943 for (int i = 0; i < 10; ++i) { 5944 #pragma omp master // OK 5945 { 5946 bar(); 5947 } 5948 } 5949 #pragma omp target 5950 #pragma omp teams distribute 5951 for (int i = 0; i < 10; ++i) { 5952 #pragma omp critical // OK 5953 { 5954 bar(); 5955 } 5956 } 5957 #pragma omp target 5958 #pragma omp teams distribute 5959 for (int i = 0; i < 10; ++i) { 5960 #pragma omp parallel // OK 5961 { 5962 #pragma omp single 5963 { 5964 bar(); 5965 } 5966 } 5967 } 5968 #pragma omp target 5969 #pragma omp teams distribute 5970 for (int i = 0; i < 10; ++i) { 5971 #pragma omp parallel for // OK 5972 for (int i = 0; i < 10; ++i) 5973 ; 5974 } 5975 #pragma omp target 5976 #pragma omp teams distribute 5977 for (int i = 0; i < 10; ++i) { 5978 #pragma omp parallel for simd // OK 5979 for (int i = 0; i < 10; ++i) 5980 ; 5981 } 5982 #pragma omp target 5983 #pragma omp teams distribute 5984 for (int i = 0; i < 10; ++i) { 5985 #pragma omp parallel sections // OK 5986 { 5987 bar(); 5988 } 5989 } 5990 #pragma omp target 5991 #pragma omp teams distribute 5992 for (int i = 0; i < 10; ++i) { 5993 #pragma omp task // OK 5994 { 5995 bar(); 5996 } 5997 } 5998 #pragma omp target 5999 #pragma omp teams distribute 6000 for (int i = 0; i < 10; ++i) { 6001 #pragma omp taskyield // OK 6002 bar(); 6003 } 6004 #pragma omp target 6005 #pragma omp teams distribute 6006 for (int i = 0; i < 10; ++i) { 6007 #pragma omp barrier // OK 6008 bar(); 6009 } 6010 #pragma omp target 6011 #pragma omp teams distribute 6012 for (int i = 0; i < 10; ++i) { 6013 #pragma omp taskwait // OK 6014 bar(); 6015 } 6016 #pragma omp target 6017 #pragma omp teams distribute 6018 for (int i = 0; i < 10; ++i) { 6019 #pragma omp flush // OK 6020 bar(); 6021 } 6022 #pragma omp target 6023 #pragma omp teams distribute 6024 for (int i = 0; i < 10; ++i) { 6025 #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?}} 6026 bar(); 6027 } 6028 #pragma omp target 6029 #pragma omp teams distribute 6030 for (int i = 0; i < 10; ++i) { 6031 #pragma omp atomic // OK 6032 ++a; 6033 } 6034 #pragma omp target 6035 #pragma omp teams distribute 6036 for (int i = 0; i < 10; ++i) { 6037 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6038 ++a; 6039 } 6040 #pragma omp target 6041 #pragma omp teams distribute 6042 for (int i = 0; i < 10; ++i) { 6043 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6044 ++a; 6045 } 6046 #pragma omp target 6047 #pragma omp teams distribute 6048 for (int i = 0; i < 10; ++i) { 6049 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6050 for (int i = 0; i < 10; ++i) 6051 ; 6052 } 6053 #pragma omp target 6054 #pragma omp teams distribute 6055 for (int i = 0; i < 10; ++i) { 6056 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6057 ++a; 6058 } 6059 #pragma omp target 6060 #pragma omp teams distribute 6061 for (int i = 0; i < 10; ++i) { 6062 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6063 ++a; 6064 } 6065 #pragma omp target 6066 #pragma omp teams distribute 6067 for (int i = 0; i < 10; ++i) { 6068 #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?}} 6069 ++a; 6070 } 6071 #pragma omp target 6072 #pragma omp teams distribute 6073 for (int i = 0; i < 10; ++i) { 6074 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6075 ++a; 6076 } 6077 #pragma omp target 6078 #pragma omp teams distribute 6079 for (int i = 0; i < 10; ++i) { 6080 #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?}} 6081 for (int i = 0; i < 10; ++i) 6082 ++a; 6083 } 6084 #pragma omp target 6085 #pragma omp teams distribute 6086 for (int i = 0; i < 10; ++i) { 6087 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6088 for (int i = 0; i < 10; ++i) 6089 ++a; 6090 } 6091 #pragma omp target 6092 #pragma omp teams distribute 6093 for (int i = 0; i < 10; ++i) { 6094 #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?}} 6095 for (int i = 0; i < 10; ++i) 6096 ++a; 6097 } 6098 #pragma omp target 6099 #pragma omp teams distribute 6100 for (int i = 0; i < 10; ++i) { 6101 #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?}} 6102 for (int i = 0; i < 10; ++i) 6103 ++a; 6104 } 6105 #pragma omp target 6106 #pragma omp teams distribute 6107 for (int i = 0; i < 10; ++i) { 6108 #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?}} 6109 for (int i = 0; i < 10; ++i) 6110 ++a; 6111 } 6112 #pragma omp target 6113 #pragma omp teams distribute 6114 for (int i = 0; i < 10; ++i) { 6115 #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?}} 6116 for (int i = 0; i < 10; ++i) 6117 ++a; 6118 } 6119 6120 // TEAMS DISTRIBUTE SIMD DIRECTIVE 6121 #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?}} 6122 for (int i = 0; i < 10; ++i) 6123 ; 6124 #pragma omp target 6125 #pragma omp teams distribute simd 6126 for (int i = 0; i < 10; ++i) { 6127 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6128 for (int i = 0; i < 10; ++i) 6129 ; 6130 } 6131 #pragma omp target 6132 #pragma omp teams distribute simd 6133 for (int i = 0; i < 10; ++i) { 6134 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6135 for (int i = 0; i < 10; ++i) 6136 ; 6137 } 6138 #pragma omp target 6139 #pragma omp teams distribute simd 6140 for (int i = 0; i < 10; ++i) { 6141 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6142 for (int i = 0; i < 10; ++i) 6143 ; 6144 } 6145 #pragma omp target 6146 #pragma omp teams distribute simd 6147 for (int i = 0; i < 10; ++i) { 6148 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6149 for (int i = 0; i < 10; ++i) 6150 ; 6151 } 6152 #pragma omp target 6153 #pragma omp teams distribute simd 6154 for (int i = 0; i < 10; ++i) { 6155 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6156 for (int i = 0; i < 10; ++i) 6157 ; 6158 } 6159 #pragma omp target 6160 #pragma omp teams distribute simd 6161 for (int i = 0; i < 10; ++i) { 6162 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6163 for (int i = 0; i < 10; ++i) 6164 ; 6165 } 6166 #pragma omp target 6167 #pragma omp teams distribute simd 6168 for (int i = 0; i < 10; ++i) { 6169 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6170 { 6171 bar(); 6172 } 6173 } 6174 #pragma omp target 6175 #pragma omp teams distribute simd 6176 for (int i = 0; i < 10; ++i) { 6177 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6178 { 6179 bar(); 6180 } 6181 } 6182 #pragma omp target 6183 #pragma omp teams distribute simd 6184 for (int i = 0; i < 10; ++i) { 6185 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6186 { 6187 bar(); 6188 } 6189 } 6190 #pragma omp target 6191 #pragma omp teams distribute simd 6192 for (int i = 0; i < 10; ++i) { 6193 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6194 { 6195 bar(); 6196 } 6197 } 6198 #pragma omp target 6199 #pragma omp teams distribute simd 6200 for (int i = 0; i < 10; ++i) { 6201 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6202 { 6203 bar(); 6204 } 6205 } 6206 #pragma omp target 6207 #pragma omp teams distribute simd 6208 for (int i = 0; i < 10; ++i) { 6209 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6210 { 6211 #pragma omp single 6212 { 6213 bar(); 6214 } 6215 } 6216 } 6217 #pragma omp target 6218 #pragma omp teams distribute simd 6219 for (int i = 0; i < 10; ++i) { 6220 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6221 for (int i = 0; i < 10; ++i) 6222 ; 6223 } 6224 #pragma omp target 6225 #pragma omp teams distribute simd 6226 for (int i = 0; i < 10; ++i) { 6227 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6228 for (int i = 0; i < 10; ++i) 6229 ; 6230 } 6231 #pragma omp target 6232 #pragma omp teams distribute simd 6233 for (int i = 0; i < 10; ++i) { 6234 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6235 { 6236 bar(); 6237 } 6238 } 6239 #pragma omp target 6240 #pragma omp teams distribute simd 6241 for (int i = 0; i < 10; ++i) { 6242 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6243 { 6244 bar(); 6245 } 6246 } 6247 #pragma omp target 6248 #pragma omp teams distribute simd 6249 for (int i = 0; i < 10; ++i) { 6250 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6251 bar(); 6252 } 6253 #pragma omp target 6254 #pragma omp teams distribute simd 6255 for (int i = 0; i < 10; ++i) { 6256 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6257 bar(); 6258 } 6259 #pragma omp target 6260 #pragma omp teams distribute simd 6261 for (int i = 0; i < 10; ++i) { 6262 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6263 bar(); 6264 } 6265 #pragma omp target 6266 #pragma omp teams distribute simd 6267 for (int i = 0; i < 10; ++i) { 6268 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6269 bar(); 6270 } 6271 #pragma omp target 6272 #pragma omp teams distribute simd 6273 for (int i = 0; i < 10; ++i) { 6274 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6275 bar(); 6276 } 6277 #pragma omp target 6278 #pragma omp teams distribute simd 6279 for (int i = 0; i < 10; ++i) { 6280 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6281 ++a; 6282 } 6283 #pragma omp target 6284 #pragma omp teams distribute simd 6285 for (int i = 0; i < 10; ++i) { 6286 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6287 ++a; 6288 } 6289 #pragma omp target 6290 #pragma omp teams distribute simd 6291 for (int i = 0; i < 10; ++i) { 6292 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6293 ++a; 6294 } 6295 #pragma omp target 6296 #pragma omp teams distribute simd 6297 for (int i = 0; i < 10; ++i) { 6298 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6299 for (int i = 0; i < 10; ++i) 6300 ; 6301 } 6302 #pragma omp target 6303 #pragma omp teams distribute simd 6304 for (int i = 0; i < 10; ++i) { 6305 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6306 ++a; 6307 } 6308 #pragma omp target 6309 #pragma omp teams distribute simd 6310 for (int i = 0; i < 10; ++i) { 6311 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6312 ++a; 6313 } 6314 #pragma omp target 6315 #pragma omp teams distribute simd 6316 for (int i = 0; i < 10; ++i) { 6317 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6318 ++a; 6319 } 6320 #pragma omp target 6321 #pragma omp teams distribute simd 6322 for (int i = 0; i < 10; ++i) { 6323 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6324 ++a; 6325 } 6326 #pragma omp target 6327 #pragma omp teams distribute simd 6328 for (int i = 0; i < 10; ++i) { 6329 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6330 for (int i = 0; i < 10; ++i) 6331 ++a; 6332 } 6333 #pragma omp target 6334 #pragma omp teams distribute simd 6335 for (int i = 0; i < 10; ++i) { 6336 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6337 for (int i = 0; i < 10; ++i) 6338 ++a; 6339 } 6340 #pragma omp target 6341 #pragma omp teams distribute simd 6342 for (int i = 0; i < 10; ++i) { 6343 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6344 for (int i = 0; i < 10; ++i) 6345 ++a; 6346 } 6347 #pragma omp target 6348 #pragma omp teams distribute simd 6349 for (int i = 0; i < 10; ++i) { 6350 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6351 for (int i = 0; i < 10; ++i) 6352 ++a; 6353 } 6354 #pragma omp target 6355 #pragma omp teams distribute simd 6356 for (int i = 0; i < 10; ++i) { 6357 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6358 for (int i = 0; i < 10; ++i) 6359 ++a; 6360 } 6361 #pragma omp target 6362 #pragma omp teams distribute simd 6363 for (int i = 0; i < 10; ++i) { 6364 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6365 for (int i = 0; i < 10; ++i) 6366 ++a; 6367 } 6368 6369 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 6370 #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?}} 6371 for (int i = 0; i < 10; ++i) 6372 ; 6373 #pragma omp target 6374 #pragma omp teams distribute parallel for simd 6375 for (int i = 0; i < 10; ++i) { 6376 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6377 for (int i = 0; i < 10; ++i) 6378 ; 6379 } 6380 #pragma omp target 6381 #pragma omp teams distribute parallel for simd 6382 for (int i = 0; i < 10; ++i) { 6383 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6384 for (int i = 0; i < 10; ++i) 6385 ; 6386 } 6387 #pragma omp target 6388 #pragma omp teams distribute parallel for simd 6389 for (int i = 0; i < 10; ++i) { 6390 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6391 for (int i = 0; i < 10; ++i) 6392 ; 6393 } 6394 #pragma omp target 6395 #pragma omp teams distribute parallel for simd 6396 for (int i = 0; i < 10; ++i) { 6397 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 6398 for (int i = 0; i < 10; ++i) 6399 ; 6400 } 6401 #pragma omp target 6402 #pragma omp teams distribute parallel for simd 6403 for (int i = 0; i < 10; ++i) { 6404 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6405 for (int i = 0; i < 10; ++i) 6406 ; 6407 } 6408 #pragma omp target 6409 #pragma omp teams distribute parallel for simd 6410 for (int i = 0; i < 10; ++i) { 6411 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6412 for (int i = 0; i < 10; ++i) 6413 ; 6414 } 6415 #pragma omp target 6416 #pragma omp teams distribute parallel for simd 6417 for (int i = 0; i < 10; ++i) { 6418 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6419 { 6420 bar(); 6421 } 6422 } 6423 #pragma omp target 6424 #pragma omp teams distribute parallel for simd 6425 for (int i = 0; i < 10; ++i) { 6426 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6427 { 6428 bar(); 6429 } 6430 } 6431 #pragma omp target 6432 #pragma omp teams distribute parallel for simd 6433 for (int i = 0; i < 10; ++i) { 6434 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6435 { 6436 bar(); 6437 } 6438 } 6439 #pragma omp target 6440 #pragma omp teams distribute parallel for simd 6441 for (int i = 0; i < 10; ++i) { 6442 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6443 { 6444 bar(); 6445 } 6446 } 6447 #pragma omp target 6448 #pragma omp teams distribute parallel for simd 6449 for (int i = 0; i < 10; ++i) { 6450 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6451 { 6452 bar(); 6453 } 6454 } 6455 #pragma omp target 6456 #pragma omp teams distribute parallel for simd 6457 for (int i = 0; i < 10; ++i) { 6458 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6459 { 6460 #pragma omp single 6461 { 6462 bar(); 6463 } 6464 } 6465 } 6466 #pragma omp target 6467 #pragma omp teams distribute parallel for simd 6468 for (int i = 0; i < 10; ++i) { 6469 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6470 for (int i = 0; i < 10; ++i) 6471 ; 6472 } 6473 #pragma omp target 6474 #pragma omp teams distribute parallel for simd 6475 for (int i = 0; i < 10; ++i) { 6476 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6477 for (int i = 0; i < 10; ++i) 6478 ; 6479 } 6480 #pragma omp target 6481 #pragma omp teams distribute parallel for simd 6482 for (int i = 0; i < 10; ++i) { 6483 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6484 { 6485 bar(); 6486 } 6487 } 6488 #pragma omp target 6489 #pragma omp teams distribute parallel for simd 6490 for (int i = 0; i < 10; ++i) { 6491 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6492 { 6493 bar(); 6494 } 6495 } 6496 #pragma omp target 6497 #pragma omp teams distribute parallel for simd 6498 for (int i = 0; i < 10; ++i) { 6499 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6500 bar(); 6501 } 6502 #pragma omp target 6503 #pragma omp teams distribute parallel for simd 6504 for (int i = 0; i < 10; ++i) { 6505 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6506 bar(); 6507 } 6508 #pragma omp target 6509 #pragma omp teams distribute parallel for simd 6510 for (int i = 0; i < 10; ++i) { 6511 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6512 bar(); 6513 } 6514 #pragma omp target 6515 #pragma omp teams distribute parallel for simd 6516 for (int i = 0; i < 10; ++i) { 6517 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6518 bar(); 6519 } 6520 #pragma omp target 6521 #pragma omp teams distribute parallel for simd 6522 for (int i = 0; i < 10; ++i) { 6523 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6524 bar(); 6525 } 6526 #pragma omp target 6527 #pragma omp teams distribute parallel for simd 6528 for (int i = 0; i < 10; ++i) { 6529 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6530 ++a; 6531 } 6532 #pragma omp target 6533 #pragma omp teams distribute parallel for simd 6534 for (int i = 0; i < 10; ++i) { 6535 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6536 ++a; 6537 } 6538 #pragma omp target 6539 #pragma omp teams distribute parallel for simd 6540 for (int i = 0; i < 10; ++i) { 6541 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6542 ++a; 6543 } 6544 #pragma omp target 6545 #pragma omp teams distribute parallel for simd 6546 for (int i = 0; i < 10; ++i) { 6547 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6548 for (int i = 0; i < 10; ++i) 6549 ; 6550 } 6551 #pragma omp target 6552 #pragma omp teams distribute parallel for simd 6553 for (int i = 0; i < 10; ++i) { 6554 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6555 ++a; 6556 } 6557 #pragma omp target 6558 #pragma omp teams distribute parallel for simd 6559 for (int i = 0; i < 10; ++i) { 6560 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6561 ++a; 6562 } 6563 #pragma omp target 6564 #pragma omp teams distribute parallel for simd 6565 for (int i = 0; i < 10; ++i) { 6566 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6567 ++a; 6568 } 6569 #pragma omp target 6570 #pragma omp teams distribute parallel for simd 6571 for (int i = 0; i < 10; ++i) { 6572 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6573 ++a; 6574 } 6575 #pragma omp target 6576 #pragma omp teams distribute parallel for simd 6577 for (int i = 0; i < 10; ++i) { 6578 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6579 for (int i = 0; i < 10; ++i) 6580 ++a; 6581 } 6582 #pragma omp target 6583 #pragma omp teams distribute parallel for simd 6584 for (int i = 0; i < 10; ++i) { 6585 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6586 for (int i = 0; i < 10; ++i) 6587 ++a; 6588 } 6589 #pragma omp target 6590 #pragma omp teams distribute parallel for simd 6591 for (int i = 0; i < 10; ++i) { 6592 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6593 for (int i = 0; i < 10; ++i) 6594 ++a; 6595 } 6596 #pragma omp target 6597 #pragma omp teams distribute parallel for simd 6598 for (int i = 0; i < 10; ++i) { 6599 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6600 for (int i = 0; i < 10; ++i) 6601 ++a; 6602 } 6603 #pragma omp target 6604 #pragma omp teams distribute parallel for simd 6605 for (int i = 0; i < 10; ++i) { 6606 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6607 for (int i = 0; i < 10; ++i) 6608 ++a; 6609 } 6610 #pragma omp target 6611 #pragma omp teams distribute parallel for simd 6612 for (int i = 0; i < 10; ++i) { 6613 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 6614 for (int i = 0; i < 10; ++i) 6615 ++a; 6616 } 6617 6618 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 6619 #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?}} 6620 for (int i = 0; i < 10; ++i) 6621 ; 6622 #pragma omp target 6623 #pragma omp teams distribute parallel for 6624 for (int i = 0; i < 10; ++i) { 6625 #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?}} 6626 for (int i = 0; i < 10; ++i) 6627 ; 6628 } 6629 #pragma omp target 6630 #pragma omp teams distribute parallel for 6631 for (int i = 0; i < 10; ++i) { 6632 #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?}} 6633 for (int i = 0; i < 10; ++i) 6634 ; 6635 } 6636 #pragma omp target 6637 #pragma omp teams distribute parallel for 6638 for (int i = 0; i < 10; ++i) { 6639 #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?}} 6640 for (int i = 0; i < 10; ++i) 6641 ; 6642 } 6643 #pragma omp target 6644 #pragma omp teams distribute parallel for 6645 for (int i = 0; i < 10; ++i) { 6646 #pragma omp simd // OK 6647 for (int i = 0; i < 10; ++i) 6648 ; 6649 } 6650 #pragma omp target 6651 #pragma omp teams distribute parallel for 6652 for (int i = 0; i < 10; ++i) { 6653 #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?}} 6654 for (int i = 0; i < 10; ++i) 6655 ; 6656 } 6657 #pragma omp target 6658 #pragma omp teams distribute parallel for 6659 for (int i = 0; i < 10; ++i) { 6660 #pragma omp parallel // OK 6661 for (int i = 0; i < 10; ++i) 6662 ; 6663 } 6664 #pragma omp target 6665 #pragma omp teams distribute parallel for 6666 for (int i = 0; i < 10; ++i) { 6667 #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?}} 6668 { 6669 bar(); 6670 } 6671 } 6672 #pragma omp target 6673 #pragma omp teams distribute parallel for 6674 for (int i = 0; i < 10; ++i) { 6675 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 6676 { 6677 bar(); 6678 } 6679 } 6680 #pragma omp target 6681 #pragma omp teams distribute parallel for 6682 for (int i = 0; i < 10; ++i) { 6683 #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?}} 6684 { 6685 bar(); 6686 } 6687 } 6688 #pragma omp target 6689 #pragma omp teams distribute parallel for 6690 for (int i = 0; i < 10; ++i) { 6691 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 6692 { 6693 bar(); 6694 } 6695 } 6696 #pragma omp target 6697 #pragma omp teams distribute parallel for 6698 for (int i = 0; i < 10; ++i) { 6699 #pragma omp critical // OK 6700 { 6701 bar(); 6702 } 6703 } 6704 #pragma omp target 6705 #pragma omp teams distribute parallel for 6706 for (int i = 0; i < 10; ++i) { 6707 #pragma omp parallel // OK 6708 { 6709 #pragma omp single 6710 { 6711 bar(); 6712 } 6713 } 6714 } 6715 #pragma omp target 6716 #pragma omp teams distribute parallel for 6717 for (int i = 0; i < 10; ++i) { 6718 #pragma omp parallel for // OK 6719 for (int i = 0; i < 10; ++i) 6720 ; 6721 } 6722 #pragma omp target 6723 #pragma omp teams distribute parallel for 6724 for (int i = 0; i < 10; ++i) { 6725 #pragma omp parallel for simd // OK 6726 for (int i = 0; i < 10; ++i) 6727 ; 6728 } 6729 #pragma omp target 6730 #pragma omp teams distribute parallel for 6731 for (int i = 0; i < 10; ++i) { 6732 #pragma omp parallel sections // OK 6733 { 6734 bar(); 6735 } 6736 } 6737 #pragma omp target 6738 #pragma omp teams distribute parallel for 6739 for (int i = 0; i < 10; ++i) { 6740 #pragma omp task // OK 6741 { 6742 bar(); 6743 } 6744 } 6745 #pragma omp target 6746 #pragma omp teams distribute parallel for 6747 for (int i = 0; i < 10; ++i) { 6748 #pragma omp taskyield // OK 6749 bar(); 6750 } 6751 #pragma omp target 6752 #pragma omp teams distribute parallel for 6753 for (int i = 0; i < 10; ++i) { 6754 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 6755 bar(); 6756 } 6757 #pragma omp target 6758 #pragma omp teams distribute parallel for 6759 for (int i = 0; i < 10; ++i) { 6760 #pragma omp taskwait // OK 6761 bar(); 6762 } 6763 #pragma omp target 6764 #pragma omp teams distribute parallel for 6765 for (int i = 0; i < 10; ++i) { 6766 #pragma omp flush // OK 6767 bar(); 6768 } 6769 #pragma omp target 6770 #pragma omp teams distribute parallel for 6771 for (int i = 0; i < 10; ++i) { 6772 #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?}} 6773 bar(); 6774 } 6775 #pragma omp target 6776 #pragma omp teams distribute parallel for 6777 for (int i = 0; i < 10; ++i) { 6778 #pragma omp atomic // OK 6779 ++a; 6780 } 6781 #pragma omp target 6782 #pragma omp teams distribute parallel for 6783 for (int i = 0; i < 10; ++i) { 6784 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 6785 ++a; 6786 } 6787 #pragma omp target 6788 #pragma omp teams distribute parallel for 6789 for (int i = 0; i < 10; ++i) { 6790 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 6791 ++a; 6792 } 6793 #pragma omp target 6794 #pragma omp teams distribute parallel for 6795 for (int i = 0; i < 10; ++i) { 6796 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 6797 for (int i = 0; i < 10; ++i) 6798 ; 6799 } 6800 #pragma omp target 6801 #pragma omp teams distribute parallel for 6802 for (int i = 0; i < 10; ++i) { 6803 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 6804 ++a; 6805 } 6806 #pragma omp target 6807 #pragma omp teams distribute parallel for 6808 for (int i = 0; i < 10; ++i) { 6809 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 6810 ++a; 6811 } 6812 #pragma omp target 6813 #pragma omp teams distribute parallel for 6814 for (int i = 0; i < 10; ++i) { 6815 #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?}} 6816 ++a; 6817 } 6818 #pragma omp target 6819 #pragma omp teams distribute parallel for 6820 for (int i = 0; i < 10; ++i) { 6821 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 6822 ++a; 6823 } 6824 #pragma omp target 6825 #pragma omp teams distribute parallel for 6826 for (int i = 0; i < 10; ++i) { 6827 #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?}} 6828 for (int i = 0; i < 10; ++i) 6829 ++a; 6830 } 6831 #pragma omp target 6832 #pragma omp teams distribute parallel for 6833 for (int i = 0; i < 10; ++i) { 6834 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 6835 for (int i = 0; i < 10; ++i) 6836 ++a; 6837 } 6838 #pragma omp target 6839 #pragma omp teams distribute parallel for 6840 for (int i = 0; i < 10; ++i) { 6841 #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?}} 6842 for (int i = 0; i < 10; ++i) 6843 ++a; 6844 } 6845 #pragma omp target 6846 #pragma omp teams distribute parallel for 6847 for (int i = 0; i < 10; ++i) { 6848 #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?}} 6849 for (int i = 0; i < 10; ++i) 6850 ++a; 6851 } 6852 #pragma omp target 6853 #pragma omp teams distribute parallel for 6854 for (int i = 0; i < 10; ++i) { 6855 #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?}} 6856 for (int i = 0; i < 10; ++i) 6857 ++a; 6858 } 6859 #pragma omp target 6860 #pragma omp teams distribute parallel for 6861 for (int i = 0; i < 10; ++i) { 6862 #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?}} 6863 for (int i = 0; i < 10; ++i) 6864 ++a; 6865 } 6866 } 6867 6868 void foo() { 6869 int a = 0; 6870 // PARALLEL DIRECTIVE 6871 #pragma omp parallel 6872 #pragma omp for 6873 for (int i = 0; i < 10; ++i) 6874 ; 6875 #pragma omp parallel 6876 #pragma omp simd 6877 for (int i = 0; i < 10; ++i) 6878 ; 6879 #pragma omp parallel 6880 #pragma omp for simd 6881 for (int i = 0; i < 10; ++i) 6882 ; 6883 #pragma omp parallel 6884 #pragma omp sections 6885 { 6886 bar(); 6887 } 6888 #pragma omp parallel 6889 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}} 6890 { 6891 bar(); 6892 } 6893 #pragma omp parallel 6894 #pragma omp sections 6895 { 6896 bar(); 6897 } 6898 #pragma omp parallel 6899 #pragma omp single 6900 bar(); 6901 #pragma omp parallel 6902 #pragma omp master 6903 bar(); 6904 #pragma omp parallel 6905 #pragma omp critical 6906 bar(); 6907 #pragma omp parallel 6908 #pragma omp parallel for 6909 for (int i = 0; i < 10; ++i) 6910 ; 6911 #pragma omp parallel 6912 #pragma omp parallel for simd 6913 for (int i = 0; i < 10; ++i) 6914 ; 6915 #pragma omp parallel 6916 #pragma omp parallel sections 6917 { 6918 bar(); 6919 } 6920 #pragma omp parallel 6921 #pragma omp task 6922 { 6923 bar(); 6924 } 6925 #pragma omp parallel 6926 { 6927 #pragma omp taskyield 6928 bar(); 6929 } 6930 #pragma omp parallel 6931 { 6932 #pragma omp barrier 6933 bar(); 6934 } 6935 #pragma omp parallel 6936 { 6937 #pragma omp taskwait 6938 bar(); 6939 } 6940 #pragma omp parallel 6941 { 6942 #pragma omp flush 6943 bar(); 6944 } 6945 #pragma omp parallel 6946 { 6947 #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?}} 6948 bar(); 6949 } 6950 #pragma omp parallel 6951 { 6952 #pragma omp atomic 6953 ++a; 6954 } 6955 #pragma omp parallel 6956 { 6957 #pragma omp target 6958 ++a; 6959 } 6960 #pragma omp parallel 6961 { 6962 #pragma omp target parallel 6963 ++a; 6964 } 6965 #pragma omp parallel 6966 #pragma omp target parallel for 6967 for (int i = 0; i < 10; ++i) 6968 ; 6969 #pragma omp parallel 6970 { 6971 #pragma omp target enter data map(to: a) 6972 ++a; 6973 } 6974 #pragma omp parallel 6975 { 6976 #pragma omp target exit data map(from: a) 6977 ++a; 6978 } 6979 #pragma omp parallel 6980 { 6981 #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?}} 6982 ++a; 6983 } 6984 #pragma omp parallel 6985 { 6986 #pragma omp taskloop 6987 for (int i = 0; i < 10; ++i) 6988 ++a; 6989 } 6990 #pragma omp parallel 6991 { 6992 #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?}} 6993 for (int i = 0; i < 10; ++i) 6994 ; 6995 } 6996 #pragma omp parallel 6997 { 6998 #pragma omp target update to(a) 6999 a++; 7000 } 7001 #pragma omp parallel 7002 { 7003 #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?}} 7004 for (int i = 0; i < 10; ++i) 7005 ; 7006 } 7007 #pragma omp parallel 7008 { 7009 #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?}} 7010 for (int i = 0; i < 10; ++i) 7011 ; 7012 } 7013 #pragma omp parallel 7014 { 7015 #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?}} 7016 for (int i = 0; i < 10; ++i) 7017 ; 7018 } 7019 #pragma omp parallel 7020 { 7021 #pragma omp target simd // OK 7022 for (int i = 0; i < 10; ++i) 7023 ; 7024 } 7025 #pragma omp parallel 7026 { 7027 #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?}} 7028 for (int i = 0; i < 10; ++i) 7029 ; 7030 } 7031 #pragma omp parallel 7032 { 7033 #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?}} 7034 for (int i = 0; i < 10; ++i) 7035 ; 7036 } 7037 #pragma omp parallel 7038 { 7039 #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?}} 7040 for (int i = 0; i < 10; ++i) 7041 ; 7042 } 7043 #pragma omp parallel 7044 { 7045 #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?}} 7046 for (int i = 0; i < 10; ++i) 7047 ; 7048 } 7049 7050 // SIMD DIRECTIVE 7051 #pragma omp simd 7052 for (int i = 0; i < 10; ++i) { 7053 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7054 for (int i = 0; i < 10; ++i) 7055 ; 7056 } 7057 #pragma omp simd 7058 for (int i = 0; i < 10; ++i) { 7059 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7060 for (int i = 0; i < 10; ++i) 7061 ; 7062 } 7063 #pragma omp simd 7064 for (int i = 0; i < 10; ++i) { 7065 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7066 for (int i = 0; i < 10; ++i) 7067 ; 7068 } 7069 #pragma omp simd 7070 for (int i = 0; i < 10; ++i) { 7071 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7072 for (int i = 0; i < 10; ++i) 7073 ; 7074 } 7075 #pragma omp simd 7076 for (int i = 0; i < 10; ++i) { 7077 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7078 { 7079 bar(); 7080 } 7081 } 7082 #pragma omp simd 7083 for (int i = 0; i < 10; ++i) { 7084 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7085 { 7086 bar(); 7087 } 7088 } 7089 #pragma omp simd 7090 for (int i = 0; i < 10; ++i) { 7091 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7092 bar(); 7093 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7094 bar(); 7095 } 7096 #pragma omp simd 7097 for (int i = 0; i < 10; ++i) { 7098 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7099 bar(); 7100 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7101 bar(); 7102 } 7103 #pragma omp simd 7104 for (int i = 0; i < 10; ++i) { 7105 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7106 for (int i = 0; i < 10; ++i) 7107 ; 7108 } 7109 #pragma omp simd 7110 for (int i = 0; i < 10; ++i) { 7111 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7112 for (int i = 0; i < 10; ++i) 7113 ; 7114 } 7115 #pragma omp simd 7116 for (int i = 0; i < 10; ++i) { 7117 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7118 { 7119 bar(); 7120 } 7121 } 7122 #pragma omp simd 7123 for (int i = 0; i < 10; ++i) { 7124 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7125 { 7126 bar(); 7127 } 7128 } 7129 #pragma omp simd 7130 for (int i = 0; i < 10; ++i) { 7131 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7132 bar(); 7133 } 7134 #pragma omp simd 7135 for (int i = 0; i < 10; ++i) { 7136 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7137 bar(); 7138 } 7139 #pragma omp simd 7140 for (int i = 0; i < 10; ++i) { 7141 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7142 bar(); 7143 } 7144 #pragma omp simd 7145 for (int i = 0; i < 10; ++i) { 7146 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7147 bar(); 7148 } 7149 #pragma omp simd 7150 for (int i = 0; i < 10; ++i) { 7151 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7152 bar(); 7153 } 7154 #pragma omp simd 7155 for (int i = 0; i < 10; ++i) { 7156 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7157 ++a; 7158 } 7159 #pragma omp simd 7160 for (int i = 0; i < 10; ++i) { 7161 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7162 ++a; 7163 } 7164 #pragma omp simd 7165 for (int i = 0; i < 10; ++i) { 7166 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7167 ++a; 7168 } 7169 #pragma omp simd 7170 for (int i = 0; i < 10; ++i) { 7171 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7172 for (int i = 0; i < 10; ++i) 7173 ; 7174 } 7175 #pragma omp simd 7176 for (int i = 0; i < 10; ++i) { 7177 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7178 ++a; 7179 } 7180 #pragma omp simd 7181 for (int i = 0; i < 10; ++i) { 7182 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7183 ++a; 7184 } 7185 #pragma omp simd 7186 for (int i = 0; i < 10; ++i) { 7187 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7188 ++a; 7189 } 7190 #pragma omp simd 7191 for (int i = 0; i < 10; ++i) { 7192 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7193 for (int i = 0; i < 10; ++i) 7194 ++a; 7195 } 7196 #pragma omp simd 7197 for (int i = 0; i < 10; ++i) { 7198 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7199 for (int j = 0; j < 10; ++j) 7200 ; 7201 } 7202 #pragma omp simd 7203 for (int i = 0; i < 10; ++i) { 7204 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7205 a++; 7206 } 7207 #pragma omp simd 7208 for (int i = 0; i < 10; ++i) { 7209 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7210 for (int j = 0; j < 10; ++j) 7211 ; 7212 } 7213 #pragma omp simd 7214 for (int i = 0; i < 10; ++i) { 7215 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7216 for (int j = 0; j < 10; ++j) 7217 ; 7218 } 7219 #pragma omp simd 7220 for (int i = 0; i < 10; ++i) { 7221 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7222 for (int j = 0; j < 10; ++j) 7223 ; 7224 } 7225 #pragma omp simd 7226 for (int i = 0; i < 10; ++i) { 7227 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7228 for (int j = 0; j < 10; ++j) 7229 ; 7230 } 7231 #pragma omp simd 7232 for (int i = 0; i < 10; ++i) { 7233 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7234 for (int j = 0; j < 10; ++j) 7235 ; 7236 } 7237 #pragma omp simd 7238 for (int i = 0; i < 10; ++i) { 7239 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7240 for (int j = 0; j < 10; ++j) 7241 ; 7242 } 7243 #pragma omp simd 7244 for (int i = 0; i < 10; ++i) { 7245 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7246 for (int j = 0; j < 10; ++j) 7247 ; 7248 } 7249 #pragma omp simd 7250 for (int i = 0; i < 10; ++i) { 7251 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7252 for (int j = 0; j < 10; ++j) 7253 ; 7254 } 7255 7256 // FOR DIRECTIVE 7257 #pragma omp for 7258 for (int i = 0; i < 10; ++i) { 7259 #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?}} 7260 for (int i = 0; i < 10; ++i) 7261 ; 7262 } 7263 #pragma omp for 7264 for (int i = 0; i < 10; ++i) { 7265 #pragma omp simd 7266 for (int i = 0; i < 10; ++i) 7267 ; 7268 } 7269 #pragma omp for 7270 for (int i = 0; i < 10; ++i) { 7271 #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?}} 7272 for (int i = 0; i < 10; ++i) 7273 ; 7274 } 7275 #pragma omp for 7276 for (int i = 0; i < 10; ++i) { 7277 #pragma omp parallel 7278 for (int i = 0; i < 10; ++i) 7279 ; 7280 } 7281 #pragma omp for 7282 for (int i = 0; i < 10; ++i) { 7283 #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?}} 7284 { 7285 bar(); 7286 } 7287 } 7288 #pragma omp for 7289 for (int i = 0; i < 10; ++i) { 7290 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}} 7291 { 7292 bar(); 7293 } 7294 } 7295 #pragma omp for 7296 for (int i = 0; i < 10; ++i) { 7297 #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?}} 7298 bar(); 7299 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}} 7300 bar(); 7301 #pragma omp critical 7302 bar(); 7303 } 7304 #pragma omp for 7305 for (int i = 0; i < 10; ++i) { 7306 #pragma omp parallel 7307 { 7308 #pragma omp single // OK 7309 { 7310 bar(); 7311 } 7312 #pragma omp for // OK 7313 for (int i = 0; i < 10; ++i) 7314 ; 7315 #pragma omp for simd // OK 7316 for (int i = 0; i < 10; ++i) 7317 ; 7318 #pragma omp sections // OK 7319 { 7320 bar(); 7321 } 7322 } 7323 } 7324 #pragma omp for 7325 for (int i = 0; i < 10; ++i) { 7326 #pragma omp parallel for 7327 for (int i = 0; i < 10; ++i) 7328 ; 7329 } 7330 #pragma omp for 7331 for (int i = 0; i < 10; ++i) { 7332 #pragma omp parallel for simd 7333 for (int i = 0; i < 10; ++i) 7334 ; 7335 } 7336 #pragma omp for 7337 for (int i = 0; i < 10; ++i) { 7338 #pragma omp parallel sections 7339 { 7340 bar(); 7341 } 7342 } 7343 #pragma omp for 7344 for (int i = 0; i < 10; ++i) { 7345 #pragma omp task 7346 { 7347 bar(); 7348 } 7349 } 7350 #pragma omp for 7351 for (int i = 0; i < 10; ++i) { 7352 #pragma omp taskyield 7353 bar(); 7354 } 7355 #pragma omp for 7356 for (int i = 0; i < 10; ++i) { 7357 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}} 7358 bar(); 7359 } 7360 #pragma omp for 7361 for (int i = 0; i < 10; ++i) { 7362 #pragma omp taskwait 7363 bar(); 7364 } 7365 #pragma omp for 7366 for (int i = 0; i < 10; ++i) { 7367 #pragma omp flush 7368 bar(); 7369 } 7370 #pragma omp for 7371 for (int i = 0; i < 10; ++i) { 7372 #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?}} 7373 bar(); 7374 } 7375 #pragma omp for ordered 7376 for (int i = 0; i < 10; ++i) { 7377 #pragma omp ordered // OK 7378 bar(); 7379 } 7380 #pragma omp for 7381 for (int i = 0; i < 10; ++i) { 7382 #pragma omp atomic 7383 ++a; 7384 } 7385 #pragma omp for 7386 for (int i = 0; i < 10; ++i) { 7387 #pragma omp target 7388 ++a; 7389 } 7390 #pragma omp for 7391 for (int i = 0; i < 10; ++i) { 7392 #pragma omp target parallel 7393 ++a; 7394 } 7395 #pragma omp for 7396 for (int i = 0; i < 10; ++i) { 7397 #pragma omp target parallel for 7398 for (int i = 0; i < 10; ++i) 7399 ; 7400 } 7401 #pragma omp for 7402 for (int i = 0; i < 10; ++i) { 7403 #pragma omp target enter data map(to: a) 7404 ++a; 7405 } 7406 #pragma omp for 7407 for (int i = 0; i < 10; ++i) { 7408 #pragma omp target exit data map(from: a) 7409 ++a; 7410 } 7411 #pragma omp for 7412 for (int i = 0; i < 10; ++i) { 7413 #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?}} 7414 ++a; 7415 } 7416 #pragma omp for 7417 for (int i = 0; i < 10; ++i) { 7418 #pragma omp taskloop 7419 for (int i = 0; i < 10; ++i) 7420 ++a; 7421 } 7422 #pragma omp for 7423 for (int i = 0; i < 10; ++i) { 7424 #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?}} 7425 for (int j = 0; j < 10; ++j) 7426 ; 7427 } 7428 #pragma omp for 7429 for (int i = 0; i < 10; ++i) { 7430 #pragma omp target update to(a) 7431 ++a; 7432 } 7433 #pragma omp for 7434 for (int i = 0; i < 10; ++i) { 7435 #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?}} 7436 for (int j = 0; j < 10; ++j) 7437 ; 7438 } 7439 #pragma omp for 7440 for (int i = 0; i < 10; ++i) { 7441 #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?}} 7442 for (int j = 0; j < 10; ++j) 7443 ; 7444 } 7445 #pragma omp for 7446 for (int i = 0; i < 10; ++i) { 7447 #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?}} 7448 for (int j = 0; j < 10; ++j) 7449 ; 7450 } 7451 #pragma omp for 7452 for (int i = 0; i < 10; ++i) { 7453 #pragma omp target simd // OK 7454 for (int j = 0; j < 10; ++j) 7455 ; 7456 } 7457 #pragma omp for 7458 for (int i = 0; i < 10; ++i) { 7459 #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?}} 7460 for (int j = 0; j < 10; ++j) 7461 ; 7462 } 7463 #pragma omp for 7464 for (int i = 0; i < 10; ++i) { 7465 #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?}} 7466 for (int j = 0; j < 10; ++j) 7467 ; 7468 } 7469 #pragma omp for 7470 for (int i = 0; i < 10; ++i) { 7471 #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?}} 7472 for (int j = 0; j < 10; ++j) 7473 ; 7474 } 7475 #pragma omp for 7476 for (int i = 0; i < 10; ++i) { 7477 #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?}} 7478 for (int j = 0; j < 10; ++j) 7479 ; 7480 } 7481 7482 // FOR SIMD DIRECTIVE 7483 #pragma omp for simd 7484 for (int i = 0; i < 10; ++i) { 7485 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7486 for (int i = 0; i < 10; ++i) 7487 ; 7488 } 7489 #pragma omp for simd 7490 for (int i = 0; i < 10; ++i) { 7491 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 7492 for (int i = 0; i < 10; ++i) 7493 ; 7494 } 7495 #pragma omp for simd 7496 for (int i = 0; i < 10; ++i) { 7497 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7498 for (int i = 0; i < 10; ++i) 7499 ; 7500 } 7501 #pragma omp for simd 7502 for (int i = 0; i < 10; ++i) { 7503 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7504 for (int i = 0; i < 10; ++i) 7505 ; 7506 } 7507 #pragma omp for simd 7508 for (int i = 0; i < 10; ++i) { 7509 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7510 { 7511 bar(); 7512 } 7513 } 7514 #pragma omp for simd 7515 for (int i = 0; i < 10; ++i) { 7516 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7517 { 7518 bar(); 7519 } 7520 } 7521 #pragma omp for simd 7522 for (int i = 0; i < 10; ++i) { 7523 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7524 bar(); 7525 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7526 bar(); 7527 } 7528 #pragma omp for simd 7529 for (int i = 0; i < 10; ++i) { 7530 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7531 bar(); 7532 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7533 bar(); 7534 } 7535 #pragma omp for simd 7536 for (int i = 0; i < 10; ++i) { 7537 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7538 for (int i = 0; i < 10; ++i) 7539 ; 7540 } 7541 #pragma omp for simd 7542 for (int i = 0; i < 10; ++i) { 7543 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7544 for (int i = 0; i < 10; ++i) 7545 ; 7546 } 7547 #pragma omp for simd 7548 for (int i = 0; i < 10; ++i) { 7549 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7550 { 7551 bar(); 7552 } 7553 } 7554 #pragma omp for simd 7555 for (int i = 0; i < 10; ++i) { 7556 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7557 { 7558 bar(); 7559 } 7560 } 7561 #pragma omp for simd 7562 for (int i = 0; i < 10; ++i) { 7563 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7564 bar(); 7565 } 7566 #pragma omp for simd 7567 for (int i = 0; i < 10; ++i) { 7568 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7569 bar(); 7570 } 7571 #pragma omp for simd 7572 for (int i = 0; i < 10; ++i) { 7573 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7574 bar(); 7575 } 7576 #pragma omp for simd 7577 for (int i = 0; i < 10; ++i) { 7578 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7579 bar(); 7580 } 7581 #pragma omp for simd 7582 for (int i = 0; i < 10; ++i) { 7583 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7584 bar(); 7585 } 7586 #pragma omp for simd 7587 for (int i = 0; i < 10; ++i) { 7588 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7589 ++a; 7590 } 7591 #pragma omp for simd 7592 for (int i = 0; i < 10; ++i) { 7593 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7594 ++a; 7595 } 7596 #pragma omp for simd 7597 for (int i = 0; i < 10; ++i) { 7598 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7599 ++a; 7600 } 7601 #pragma omp for simd 7602 for (int i = 0; i < 10; ++i) { 7603 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7604 for (int i = 0; i < 10; ++i) 7605 ; 7606 } 7607 #pragma omp for simd 7608 for (int i = 0; i < 10; ++i) { 7609 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7610 ++a; 7611 } 7612 #pragma omp for simd 7613 for (int i = 0; i < 10; ++i) { 7614 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7615 ++a; 7616 } 7617 #pragma omp for simd 7618 for (int i = 0; i < 10; ++i) { 7619 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7620 ++a; 7621 } 7622 #pragma omp for simd 7623 for (int i = 0; i < 10; ++i) { 7624 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7625 for (int i = 0; i < 10; ++i) 7626 ++a; 7627 } 7628 #pragma omp for simd 7629 for (int i = 0; i < 10; ++i) { 7630 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7631 for (int j = 0; j < 10; ++j) 7632 ; 7633 } 7634 #pragma omp for simd 7635 for (int i = 0; i < 10; ++i) { 7636 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7637 ++a; 7638 } 7639 #pragma omp for simd 7640 for (int i = 0; i < 10; ++i) { 7641 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7642 for (int j = 0; j < 10; ++j) 7643 ; 7644 } 7645 #pragma omp for simd 7646 for (int i = 0; i < 10; ++i) { 7647 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7648 for (int j = 0; j < 10; ++j) 7649 ; 7650 } 7651 #pragma omp for simd 7652 for (int i = 0; i < 10; ++i) { 7653 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7654 for (int j = 0; j < 10; ++j) 7655 ; 7656 } 7657 #pragma omp for simd 7658 for (int i = 0; i < 10; ++i) { 7659 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7660 for (int j = 0; j < 10; ++j) 7661 ; 7662 } 7663 #pragma omp for simd 7664 for (int i = 0; i < 10; ++i) { 7665 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7666 for (int j = 0; j < 10; ++j) 7667 ; 7668 } 7669 #pragma omp for simd 7670 for (int i = 0; i < 10; ++i) { 7671 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7672 for (int j = 0; j < 10; ++j) 7673 ; 7674 } 7675 #pragma omp for simd 7676 for (int i = 0; i < 10; ++i) { 7677 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7678 for (int j = 0; j < 10; ++j) 7679 ; 7680 } 7681 #pragma omp for simd 7682 for (int i = 0; i < 10; ++i) { 7683 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 7684 for (int j = 0; j < 10; ++j) 7685 ; 7686 } 7687 7688 // SECTIONS DIRECTIVE 7689 #pragma omp sections 7690 { 7691 #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?}} 7692 for (int i = 0; i < 10; ++i) 7693 ; 7694 } 7695 #pragma omp sections 7696 { 7697 #pragma omp simd 7698 for (int i = 0; i < 10; ++i) 7699 ; 7700 } 7701 #pragma omp sections 7702 { 7703 #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?}} 7704 for (int i = 0; i < 10; ++i) 7705 ; 7706 } 7707 #pragma omp sections 7708 { 7709 #pragma omp parallel 7710 for (int i = 0; i < 10; ++i) 7711 ; 7712 } 7713 #pragma omp sections 7714 { 7715 #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?}} 7716 { 7717 bar(); 7718 } 7719 } 7720 #pragma omp sections 7721 { 7722 #pragma omp section 7723 { 7724 bar(); 7725 } 7726 } 7727 #pragma omp sections 7728 { 7729 #pragma omp critical 7730 bar(); 7731 #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?}} 7732 bar(); 7733 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}} 7734 bar(); 7735 } 7736 #pragma omp sections 7737 { 7738 #pragma omp parallel 7739 { 7740 #pragma omp single // OK 7741 { 7742 bar(); 7743 } 7744 #pragma omp for // OK 7745 for (int i = 0; i < 10; ++i) 7746 ; 7747 #pragma omp for simd // OK 7748 for (int i = 0; i < 10; ++i) 7749 ; 7750 #pragma omp sections // OK 7751 { 7752 bar(); 7753 } 7754 } 7755 } 7756 #pragma omp sections 7757 { 7758 #pragma omp parallel for 7759 for (int i = 0; i < 10; ++i) 7760 ; 7761 } 7762 #pragma omp sections 7763 { 7764 #pragma omp parallel for simd 7765 for (int i = 0; i < 10; ++i) 7766 ; 7767 } 7768 #pragma omp sections 7769 { 7770 #pragma omp parallel sections 7771 { 7772 bar(); 7773 } 7774 } 7775 #pragma omp sections 7776 { 7777 #pragma omp task 7778 { 7779 bar(); 7780 } 7781 } 7782 #pragma omp sections 7783 { 7784 #pragma omp taskyield 7785 } 7786 #pragma omp sections 7787 { 7788 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}} 7789 bar(); 7790 } 7791 #pragma omp sections 7792 { 7793 #pragma omp taskwait 7794 } 7795 #pragma omp sections 7796 { 7797 #pragma omp flush 7798 } 7799 #pragma omp sections 7800 { 7801 #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?}} 7802 bar(); 7803 } 7804 #pragma omp sections 7805 { 7806 #pragma omp atomic 7807 ++a; 7808 } 7809 #pragma omp sections 7810 { 7811 #pragma omp target 7812 ++a; 7813 } 7814 #pragma omp sections 7815 { 7816 #pragma omp target parallel 7817 ++a; 7818 } 7819 #pragma omp sections 7820 { 7821 #pragma omp target parallel for 7822 for (int i = 0; i < 10; ++i) 7823 ; 7824 } 7825 #pragma omp sections 7826 { 7827 #pragma omp target enter data map(to: a) 7828 } 7829 #pragma omp sections 7830 { 7831 #pragma omp target exit data map(from: a) 7832 } 7833 #pragma omp sections 7834 { 7835 #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?}} 7836 ++a; 7837 } 7838 #pragma omp sections 7839 { 7840 #pragma omp taskloop 7841 for (int i = 0; i < 10; ++i) 7842 ++a; 7843 } 7844 #pragma omp sections 7845 { 7846 #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?}} 7847 for (int i = 0; i < 10; ++i) 7848 ; 7849 } 7850 #pragma omp sections 7851 { 7852 #pragma omp target update to(a) 7853 } 7854 #pragma omp sections 7855 { 7856 #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?}} 7857 for (int i = 0; i < 10; ++i) 7858 ; 7859 } 7860 #pragma omp sections 7861 { 7862 #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?}} 7863 for (int i = 0; i < 10; ++i) 7864 ; 7865 } 7866 #pragma omp sections 7867 { 7868 #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?}} 7869 for (int i = 0; i < 10; ++i) 7870 ; 7871 } 7872 #pragma omp sections 7873 { 7874 #pragma omp target simd // OK 7875 for (int i = 0; i < 10; ++i) 7876 ; 7877 } 7878 #pragma omp sections 7879 { 7880 #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?}} 7881 for (int i = 0; i < 10; ++i) 7882 ; 7883 } 7884 #pragma omp sections 7885 { 7886 #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?}} 7887 for (int i = 0; i < 10; ++i) 7888 ; 7889 } 7890 #pragma omp sections 7891 { 7892 #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?}} 7893 for (int i = 0; i < 10; ++i) 7894 ; 7895 } 7896 #pragma omp sections 7897 { 7898 #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?}} 7899 for (int i = 0; i < 10; ++i) 7900 ; 7901 } 7902 7903 // SECTION DIRECTIVE 7904 #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} 7905 { 7906 bar(); 7907 } 7908 #pragma omp sections 7909 { 7910 #pragma omp section 7911 { 7912 #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?}} 7913 for (int i = 0; i < 10; ++i) 7914 ; 7915 } 7916 } 7917 #pragma omp sections 7918 { 7919 #pragma omp section 7920 { 7921 #pragma omp simd 7922 for (int i = 0; i < 10; ++i) 7923 ; 7924 } 7925 } 7926 #pragma omp sections 7927 { 7928 #pragma omp section 7929 { 7930 #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?}} 7931 for (int i = 0; i < 10; ++i) 7932 ; 7933 } 7934 } 7935 #pragma omp sections 7936 { 7937 #pragma omp section 7938 { 7939 #pragma omp parallel 7940 for (int i = 0; i < 10; ++i) 7941 ; 7942 } 7943 } 7944 #pragma omp sections 7945 { 7946 #pragma omp section 7947 { 7948 #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?}} 7949 { 7950 bar(); 7951 } 7952 } 7953 } 7954 #pragma omp sections 7955 { 7956 #pragma omp section 7957 { 7958 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}} 7959 { 7960 bar(); 7961 } 7962 } 7963 } 7964 #pragma omp sections 7965 { 7966 #pragma omp section 7967 { 7968 #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?}} 7969 bar(); 7970 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 7971 bar(); 7972 #pragma omp critical 7973 bar(); 7974 } 7975 } 7976 #pragma omp sections 7977 { 7978 #pragma omp section 7979 { 7980 #pragma omp parallel 7981 { 7982 #pragma omp single // OK 7983 { 7984 bar(); 7985 } 7986 #pragma omp for // OK 7987 for (int i = 0; i < 10; ++i) 7988 ; 7989 #pragma omp for simd // OK 7990 for (int i = 0; i < 10; ++i) 7991 ; 7992 #pragma omp sections // OK 7993 { 7994 bar(); 7995 } 7996 } 7997 } 7998 } 7999 #pragma omp sections 8000 { 8001 #pragma omp section 8002 { 8003 #pragma omp parallel for 8004 for (int i = 0; i < 10; ++i) 8005 ; 8006 } 8007 } 8008 #pragma omp sections 8009 { 8010 #pragma omp section 8011 { 8012 #pragma omp parallel for simd 8013 for (int i = 0; i < 10; ++i) 8014 ; 8015 } 8016 } 8017 #pragma omp sections 8018 { 8019 #pragma omp section 8020 { 8021 #pragma omp parallel sections 8022 { 8023 bar(); 8024 } 8025 } 8026 } 8027 #pragma omp sections 8028 { 8029 #pragma omp section 8030 { 8031 #pragma omp task 8032 { 8033 bar(); 8034 } 8035 } 8036 } 8037 #pragma omp sections 8038 { 8039 #pragma omp section 8040 { 8041 #pragma omp taskyield 8042 bar(); 8043 } 8044 } 8045 #pragma omp sections 8046 { 8047 #pragma omp section 8048 { 8049 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}} 8050 bar(); 8051 } 8052 } 8053 #pragma omp sections 8054 { 8055 #pragma omp section 8056 { 8057 #pragma omp taskwait 8058 bar(); 8059 } 8060 } 8061 #pragma omp sections 8062 { 8063 #pragma omp section 8064 { 8065 #pragma omp flush 8066 bar(); 8067 } 8068 } 8069 #pragma omp sections 8070 { 8071 #pragma omp section 8072 { 8073 #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?}} 8074 bar(); 8075 } 8076 } 8077 #pragma omp sections 8078 { 8079 #pragma omp section 8080 { 8081 #pragma omp atomic 8082 ++a; 8083 } 8084 } 8085 #pragma omp sections 8086 { 8087 #pragma omp section 8088 { 8089 #pragma omp target 8090 ++a; 8091 } 8092 } 8093 #pragma omp sections 8094 { 8095 #pragma omp section 8096 { 8097 #pragma omp target parallel 8098 ++a; 8099 } 8100 } 8101 #pragma omp sections 8102 { 8103 #pragma omp section 8104 { 8105 #pragma omp target parallel for 8106 for (int i = 0; i < 10; ++i) 8107 ; 8108 } 8109 } 8110 #pragma omp sections 8111 { 8112 #pragma omp section 8113 { 8114 #pragma omp target enter data map(to: a) 8115 ++a; 8116 } 8117 } 8118 #pragma omp sections 8119 { 8120 #pragma omp section 8121 { 8122 #pragma omp target exit data map(from: a) 8123 ++a; 8124 } 8125 } 8126 #pragma omp sections 8127 { 8128 #pragma omp section 8129 { 8130 #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?}} 8131 ++a; 8132 } 8133 } 8134 #pragma omp sections 8135 { 8136 #pragma omp section 8137 { 8138 #pragma omp taskloop 8139 for (int i = 0; i < 10; ++i) 8140 ++a; 8141 } 8142 } 8143 #pragma omp sections 8144 { 8145 #pragma omp section 8146 #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?}} 8147 for (int i = 0; i < 10; ++i) 8148 ; 8149 } 8150 #pragma omp sections 8151 { 8152 #pragma omp section 8153 { 8154 #pragma omp target update to(a) 8155 a++; 8156 } 8157 } 8158 #pragma omp sections 8159 { 8160 #pragma omp section 8161 #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?}} 8162 for (int i = 0; i < 10; ++i) 8163 ; 8164 } 8165 #pragma omp sections 8166 { 8167 #pragma omp section 8168 #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?}} 8169 for (int i = 0; i < 10; ++i) 8170 ; 8171 } 8172 #pragma omp sections 8173 { 8174 #pragma omp section 8175 #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?}} 8176 for (int i = 0; i < 10; ++i) 8177 ; 8178 } 8179 #pragma omp sections 8180 { 8181 #pragma omp section 8182 #pragma omp target simd // OK 8183 for (int i = 0; i < 10; ++i) 8184 ; 8185 } 8186 #pragma omp sections 8187 { 8188 #pragma omp section 8189 #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?}} 8190 for (int i = 0; i < 10; ++i) 8191 ; 8192 } 8193 #pragma omp sections 8194 { 8195 #pragma omp section 8196 #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?}} 8197 for (int i = 0; i < 10; ++i) 8198 ; 8199 } 8200 #pragma omp sections 8201 { 8202 #pragma omp section 8203 #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?}} 8204 for (int i = 0; i < 10; ++i) 8205 ; 8206 } 8207 #pragma omp sections 8208 { 8209 #pragma omp section 8210 #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?}} 8211 for (int i = 0; i < 10; ++i) 8212 ; 8213 } 8214 8215 // SINGLE DIRECTIVE 8216 #pragma omp single 8217 { 8218 #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?}} 8219 for (int i = 0; i < 10; ++i) 8220 ; 8221 } 8222 #pragma omp single 8223 { 8224 #pragma omp simd 8225 for (int i = 0; i < 10; ++i) 8226 ; 8227 } 8228 #pragma omp single 8229 { 8230 #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?}} 8231 for (int i = 0; i < 10; ++i) 8232 ; 8233 } 8234 #pragma omp single 8235 { 8236 #pragma omp parallel 8237 for (int i = 0; i < 10; ++i) 8238 ; 8239 } 8240 #pragma omp single 8241 { 8242 #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?}} 8243 { 8244 bar(); 8245 } 8246 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}} 8247 bar(); 8248 #pragma omp critical 8249 bar(); 8250 } 8251 #pragma omp single 8252 { 8253 #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?}} 8254 { 8255 bar(); 8256 } 8257 } 8258 #pragma omp single 8259 { 8260 #pragma omp parallel 8261 { 8262 #pragma omp single // OK 8263 { 8264 bar(); 8265 } 8266 #pragma omp for // OK 8267 for (int i = 0; i < 10; ++i) 8268 ; 8269 #pragma omp for simd // OK 8270 for (int i = 0; i < 10; ++i) 8271 ; 8272 #pragma omp sections // OK 8273 { 8274 bar(); 8275 } 8276 } 8277 } 8278 #pragma omp single 8279 { 8280 #pragma omp parallel for 8281 for (int i = 0; i < 10; ++i) 8282 ; 8283 } 8284 #pragma omp single 8285 { 8286 #pragma omp parallel for simd 8287 for (int i = 0; i < 10; ++i) 8288 ; 8289 } 8290 #pragma omp single 8291 { 8292 #pragma omp parallel sections 8293 { 8294 bar(); 8295 } 8296 } 8297 #pragma omp single 8298 { 8299 #pragma omp task 8300 { 8301 bar(); 8302 } 8303 } 8304 #pragma omp single 8305 { 8306 #pragma omp taskyield 8307 bar(); 8308 } 8309 #pragma omp single 8310 { 8311 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}} 8312 bar(); 8313 } 8314 #pragma omp single 8315 { 8316 #pragma omp taskwait 8317 bar(); 8318 } 8319 #pragma omp single 8320 { 8321 #pragma omp flush 8322 bar(); 8323 } 8324 #pragma omp single 8325 { 8326 #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?}} 8327 bar(); 8328 } 8329 #pragma omp single 8330 { 8331 #pragma omp atomic 8332 ++a; 8333 } 8334 #pragma omp single 8335 { 8336 #pragma omp target 8337 ++a; 8338 } 8339 #pragma omp single 8340 { 8341 #pragma omp target parallel 8342 ++a; 8343 } 8344 #pragma omp single 8345 { 8346 #pragma omp target parallel for 8347 for (int i = 0; i < 10; ++i) 8348 ; 8349 } 8350 #pragma omp single 8351 { 8352 #pragma omp target enter data map(to: a) 8353 ++a; 8354 } 8355 #pragma omp single 8356 { 8357 #pragma omp target exit data map(from: a) 8358 ++a; 8359 } 8360 #pragma omp single 8361 { 8362 #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?}} 8363 ++a; 8364 } 8365 #pragma omp single 8366 { 8367 #pragma omp taskloop 8368 for (int i = 0; i < 10; ++i) 8369 ++a; 8370 } 8371 #pragma omp single 8372 { 8373 #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?}} 8374 for (int i = 0; i < 10; ++i) 8375 ; 8376 } 8377 #pragma omp single 8378 { 8379 #pragma omp target update to(a) 8380 a++; 8381 } 8382 #pragma omp single 8383 { 8384 #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?}} 8385 for (int i = 0; i < 10; ++i) 8386 ; 8387 } 8388 #pragma omp single 8389 { 8390 #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?}} 8391 for (int i = 0; i < 10; ++i) 8392 ; 8393 } 8394 #pragma omp single 8395 { 8396 #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?}} 8397 for (int i = 0; i < 10; ++i) 8398 ; 8399 } 8400 #pragma omp single 8401 { 8402 #pragma omp target simd // OK 8403 for (int i = 0; i < 10; ++i) 8404 ; 8405 } 8406 #pragma omp single 8407 { 8408 #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?}} 8409 for (int i = 0; i < 10; ++i) 8410 ; 8411 } 8412 #pragma omp single 8413 { 8414 #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?}} 8415 for (int i = 0; i < 10; ++i) 8416 ; 8417 } 8418 #pragma omp single 8419 { 8420 #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?}} 8421 for (int i = 0; i < 10; ++i) 8422 ; 8423 } 8424 #pragma omp single 8425 { 8426 #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?}} 8427 for (int i = 0; i < 10; ++i) 8428 ; 8429 } 8430 8431 // MASTER DIRECTIVE 8432 #pragma omp master 8433 { 8434 #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?}} 8435 for (int i = 0; i < 10; ++i) 8436 ; 8437 } 8438 #pragma omp master 8439 { 8440 #pragma omp simd 8441 for (int i = 0; i < 10; ++i) 8442 ; 8443 } 8444 #pragma omp master 8445 { 8446 #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?}} 8447 for (int i = 0; i < 10; ++i) 8448 ; 8449 } 8450 #pragma omp master 8451 { 8452 #pragma omp parallel 8453 for (int i = 0; i < 10; ++i) 8454 ; 8455 } 8456 #pragma omp master 8457 { 8458 #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?}} 8459 { 8460 bar(); 8461 } 8462 } 8463 #pragma omp master 8464 { 8465 #pragma omp master // OK, though second 'master' is redundant 8466 { 8467 bar(); 8468 } 8469 } 8470 #pragma omp master 8471 { 8472 #pragma omp critical 8473 { 8474 bar(); 8475 } 8476 } 8477 #pragma omp master 8478 { 8479 #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?}} 8480 { 8481 bar(); 8482 } 8483 } 8484 #pragma omp master 8485 { 8486 #pragma omp parallel 8487 { 8488 #pragma omp master // OK 8489 { 8490 bar(); 8491 } 8492 #pragma omp for // OK 8493 for (int i = 0; i < 10; ++i) 8494 ; 8495 #pragma omp for simd // OK 8496 for (int i = 0; i < 10; ++i) 8497 ; 8498 #pragma omp sections // OK 8499 { 8500 bar(); 8501 } 8502 } 8503 } 8504 #pragma omp master 8505 { 8506 #pragma omp parallel for 8507 for (int i = 0; i < 10; ++i) 8508 ; 8509 } 8510 #pragma omp master 8511 { 8512 #pragma omp parallel for simd 8513 for (int i = 0; i < 10; ++i) 8514 ; 8515 } 8516 #pragma omp master 8517 { 8518 #pragma omp parallel sections 8519 { 8520 bar(); 8521 } 8522 } 8523 #pragma omp master 8524 { 8525 #pragma omp task 8526 { 8527 bar(); 8528 } 8529 } 8530 #pragma omp master 8531 { 8532 #pragma omp taskyield 8533 bar(); 8534 } 8535 #pragma omp master 8536 { 8537 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}} 8538 bar(); 8539 } 8540 #pragma omp master 8541 { 8542 #pragma omp taskwait 8543 bar(); 8544 } 8545 #pragma omp master 8546 { 8547 #pragma omp flush 8548 bar(); 8549 } 8550 #pragma omp master 8551 { 8552 #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?}} 8553 bar(); 8554 } 8555 #pragma omp master 8556 { 8557 #pragma omp atomic 8558 ++a; 8559 } 8560 #pragma omp master 8561 { 8562 #pragma omp target 8563 ++a; 8564 } 8565 #pragma omp master 8566 { 8567 #pragma omp target parallel 8568 ++a; 8569 } 8570 #pragma omp master 8571 { 8572 #pragma omp target parallel for 8573 for (int i = 0; i < 10; ++i) 8574 ; 8575 } 8576 #pragma omp master 8577 { 8578 #pragma omp target enter data map(to: a) 8579 ++a; 8580 } 8581 #pragma omp master 8582 { 8583 #pragma omp target exit data map(from: a) 8584 ++a; 8585 } 8586 #pragma omp master 8587 { 8588 #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?}} 8589 ++a; 8590 } 8591 #pragma omp master 8592 { 8593 #pragma omp taskloop 8594 for (int i = 0; i < 10; ++i) 8595 ++a; 8596 } 8597 #pragma omp master 8598 { 8599 #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?}} 8600 for (int i = 0; i < 10; ++i) 8601 ; 8602 } 8603 #pragma omp master 8604 { 8605 #pragma omp target update to(a) 8606 ++a; 8607 } 8608 #pragma omp master 8609 { 8610 #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?}} 8611 for (int i = 0; i < 10; ++i) 8612 ; 8613 } 8614 #pragma omp master 8615 { 8616 #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?}} 8617 for (int i = 0; i < 10; ++i) 8618 ; 8619 } 8620 #pragma omp master 8621 { 8622 #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?}} 8623 for (int i = 0; i < 10; ++i) 8624 ; 8625 } 8626 #pragma omp master 8627 { 8628 #pragma omp target simd // OK 8629 for (int i = 0; i < 10; ++i) 8630 ; 8631 } 8632 #pragma omp master 8633 { 8634 #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?}} 8635 for (int i = 0; i < 10; ++i) 8636 ; 8637 } 8638 #pragma omp master 8639 { 8640 #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?}} 8641 for (int i = 0; i < 10; ++i) 8642 ; 8643 } 8644 #pragma omp master 8645 { 8646 #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?}} 8647 for (int i = 0; i < 10; ++i) 8648 ; 8649 } 8650 #pragma omp master 8651 { 8652 #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?}} 8653 for (int i = 0; i < 10; ++i) 8654 ; 8655 } 8656 8657 // CRITICAL DIRECTIVE 8658 #pragma omp critical 8659 { 8660 #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?}} 8661 for (int i = 0; i < 10; ++i) 8662 ; 8663 } 8664 #pragma omp critical 8665 { 8666 #pragma omp simd 8667 for (int i = 0; i < 10; ++i) 8668 ; 8669 } 8670 #pragma omp critical 8671 { 8672 #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?}} 8673 for (int i = 0; i < 10; ++i) 8674 ; 8675 } 8676 #pragma omp critical 8677 { 8678 #pragma omp parallel 8679 for (int i = 0; i < 10; ++i) 8680 ; 8681 } 8682 #pragma omp critical 8683 { 8684 #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?}} 8685 { 8686 bar(); 8687 } 8688 } 8689 #pragma omp critical 8690 { 8691 #pragma omp master // OK, though second 'master' is redundant 8692 { 8693 bar(); 8694 } 8695 } 8696 #pragma omp critical 8697 { 8698 #pragma omp critical 8699 { 8700 bar(); 8701 } 8702 } 8703 #pragma omp critical 8704 { 8705 #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?}} 8706 { 8707 bar(); 8708 } 8709 } 8710 #pragma omp critical 8711 { 8712 #pragma omp parallel 8713 { 8714 #pragma omp master // OK 8715 { 8716 bar(); 8717 } 8718 #pragma omp for // OK 8719 for (int i = 0; i < 10; ++i) 8720 ; 8721 #pragma omp for simd // OK 8722 for (int i = 0; i < 10; ++i) 8723 ; 8724 #pragma omp sections // OK 8725 { 8726 bar(); 8727 } 8728 } 8729 } 8730 #pragma omp critical 8731 { 8732 #pragma omp parallel for 8733 for (int i = 0; i < 10; ++i) 8734 ; 8735 } 8736 #pragma omp critical 8737 { 8738 #pragma omp parallel for simd 8739 for (int i = 0; i < 10; ++i) 8740 ; 8741 } 8742 #pragma omp critical 8743 { 8744 #pragma omp parallel sections 8745 { 8746 bar(); 8747 } 8748 } 8749 #pragma omp critical 8750 { 8751 #pragma omp task 8752 { 8753 bar(); 8754 } 8755 } 8756 #pragma omp critical 8757 { 8758 #pragma omp taskyield 8759 bar(); 8760 } 8761 #pragma omp critical 8762 { 8763 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}} 8764 bar(); 8765 } 8766 #pragma omp critical 8767 { 8768 #pragma omp taskwait 8769 bar(); 8770 } 8771 #pragma omp critical(Belka) 8772 { 8773 #pragma omp critical(Strelka) 8774 bar(); 8775 } 8776 #pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}} 8777 { 8778 #pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}} 8779 { 8780 #pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}} 8781 { 8782 #pragma omp parallel 8783 #pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}} 8784 { 8785 bar(); 8786 } 8787 } 8788 } 8789 } 8790 #pragma omp critical 8791 { 8792 #pragma omp flush 8793 bar(); 8794 } 8795 #pragma omp critical 8796 { 8797 #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?}} 8798 bar(); 8799 } 8800 #pragma omp critical 8801 { 8802 #pragma omp atomic 8803 ++a; 8804 } 8805 #pragma omp critical 8806 { 8807 #pragma omp target 8808 ++a; 8809 } 8810 #pragma omp critical 8811 { 8812 #pragma omp target parallel 8813 ++a; 8814 } 8815 #pragma omp critical 8816 { 8817 #pragma omp target parallel for 8818 for (int i = 0; i < 10; ++i) 8819 ; 8820 } 8821 #pragma omp critical 8822 { 8823 #pragma omp target enter data map(to: a) 8824 ++a; 8825 } 8826 #pragma omp critical 8827 { 8828 #pragma omp target exit data map(from: a) 8829 ++a; 8830 } 8831 #pragma omp critical 8832 { 8833 #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?}} 8834 ++a; 8835 } 8836 #pragma omp critical 8837 { 8838 #pragma omp taskloop 8839 for (int i = 0; i < 10; ++i) 8840 ++a; 8841 } 8842 #pragma omp critical 8843 { 8844 #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?}} 8845 for (int i = 0; i < 10; ++i) 8846 ; 8847 } 8848 #pragma omp critical 8849 { 8850 #pragma omp target update to(a) 8851 a++; 8852 } 8853 #pragma omp critical 8854 { 8855 #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?}} 8856 for (int i = 0; i < 10; ++i) 8857 ; 8858 } 8859 #pragma omp critical 8860 { 8861 #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?}} 8862 for (int i = 0; i < 10; ++i) 8863 ; 8864 } 8865 #pragma omp critical 8866 { 8867 #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?}} 8868 for (int i = 0; i < 10; ++i) 8869 ; 8870 } 8871 #pragma omp critical 8872 { 8873 #pragma omp target simd // OK 8874 for (int i = 0; i < 10; ++i) 8875 ; 8876 } 8877 #pragma omp critical 8878 { 8879 #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?}} 8880 for (int i = 0; i < 10; ++i) 8881 ; 8882 } 8883 #pragma omp critical 8884 { 8885 #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?}} 8886 for (int i = 0; i < 10; ++i) 8887 ; 8888 } 8889 #pragma omp critical 8890 { 8891 #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?}} 8892 for (int i = 0; i < 10; ++i) 8893 ; 8894 } 8895 #pragma omp critical 8896 { 8897 #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?}} 8898 for (int i = 0; i < 10; ++i) 8899 ; 8900 } 8901 8902 // PARALLEL FOR DIRECTIVE 8903 #pragma omp parallel for 8904 for (int i = 0; i < 10; ++i) { 8905 #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?}} 8906 for (int i = 0; i < 10; ++i) 8907 ; 8908 } 8909 #pragma omp parallel for 8910 for (int i = 0; i < 10; ++i) { 8911 #pragma omp simd 8912 for (int i = 0; i < 10; ++i) 8913 ; 8914 } 8915 #pragma omp parallel for 8916 for (int i = 0; i < 10; ++i) { 8917 #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?}} 8918 for (int i = 0; i < 10; ++i) 8919 ; 8920 } 8921 8922 #pragma omp parallel for 8923 for (int i = 0; i < 10; ++i) { 8924 #pragma omp parallel 8925 for (int i = 0; i < 10; ++i) 8926 ; 8927 } 8928 #pragma omp parallel for 8929 for (int i = 0; i < 10; ++i) { 8930 #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?}} 8931 { 8932 bar(); 8933 } 8934 } 8935 #pragma omp parallel for 8936 for (int i = 0; i < 10; ++i) { 8937 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}} 8938 { 8939 bar(); 8940 } 8941 } 8942 #pragma omp parallel for 8943 for (int i = 0; i < 10; ++i) { 8944 #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?}} 8945 { 8946 bar(); 8947 } 8948 #pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}} 8949 { 8950 bar(); 8951 } 8952 #pragma omp critical 8953 { 8954 bar(); 8955 } 8956 } 8957 #pragma omp parallel for 8958 for (int i = 0; i < 10; ++i) { 8959 #pragma omp parallel 8960 { 8961 #pragma omp single // OK 8962 { 8963 bar(); 8964 } 8965 #pragma omp master // OK 8966 { 8967 bar(); 8968 } 8969 #pragma omp critical // OK 8970 { 8971 bar(); 8972 } 8973 #pragma omp for // OK 8974 for (int i = 0; i < 10; ++i) 8975 ; 8976 #pragma omp for simd // OK 8977 for (int i = 0; i < 10; ++i) 8978 ; 8979 #pragma omp sections // OK 8980 { 8981 bar(); 8982 } 8983 } 8984 } 8985 #pragma omp parallel for 8986 for (int i = 0; i < 10; ++i) { 8987 #pragma omp parallel for 8988 for (int i = 0; i < 10; ++i) 8989 ; 8990 } 8991 #pragma omp parallel for 8992 for (int i = 0; i < 10; ++i) { 8993 #pragma omp parallel for simd 8994 for (int i = 0; i < 10; ++i) 8995 ; 8996 } 8997 #pragma omp parallel for 8998 for (int i = 0; i < 10; ++i) { 8999 #pragma omp parallel sections 9000 { 9001 bar(); 9002 } 9003 } 9004 #pragma omp parallel for 9005 for (int i = 0; i < 10; ++i) { 9006 #pragma omp task 9007 { 9008 bar(); 9009 } 9010 } 9011 #pragma omp parallel for 9012 for (int i = 0; i < 10; ++i) { 9013 #pragma omp taskyield 9014 bar(); 9015 } 9016 #pragma omp parallel for 9017 for (int i = 0; i < 10; ++i) { 9018 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}} 9019 bar(); 9020 } 9021 #pragma omp parallel for 9022 for (int i = 0; i < 10; ++i) { 9023 #pragma omp taskwait 9024 bar(); 9025 } 9026 #pragma omp parallel for 9027 for (int i = 0; i < 10; ++i) { 9028 #pragma omp flush 9029 bar(); 9030 } 9031 #pragma omp parallel for 9032 for (int i = 0; i < 10; ++i) { 9033 #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?}} 9034 bar(); 9035 } 9036 #pragma omp parallel for ordered 9037 for (int i = 0; i < 10; ++i) { 9038 #pragma omp ordered // OK 9039 bar(); 9040 } 9041 #pragma omp parallel for 9042 for (int i = 0; i < 10; ++i) { 9043 #pragma omp atomic 9044 ++a; 9045 } 9046 #pragma omp parallel for 9047 for (int i = 0; i < 10; ++i) { 9048 #pragma omp target 9049 ++a; 9050 } 9051 #pragma omp parallel for 9052 for (int i = 0; i < 10; ++i) { 9053 #pragma omp target parallel 9054 ++a; 9055 } 9056 #pragma omp parallel for 9057 for (int i = 0; i < 10; ++i) { 9058 #pragma omp target parallel for 9059 for (int i = 0; i < 10; ++i) 9060 ; 9061 } 9062 #pragma omp parallel for 9063 for (int i = 0; i < 10; ++i) { 9064 #pragma omp target enter data map(to: a) 9065 ++a; 9066 } 9067 #pragma omp parallel for 9068 for (int i = 0; i < 10; ++i) { 9069 #pragma omp target exit data map(from: a) 9070 ++a; 9071 } 9072 #pragma omp parallel for 9073 for (int i = 0; i < 10; ++i) { 9074 #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?}} 9075 ++a; 9076 } 9077 #pragma omp parallel for 9078 for (int i = 0; i < 10; ++i) { 9079 #pragma omp taskloop 9080 for (int i = 0; i < 10; ++i) 9081 ++a; 9082 } 9083 #pragma omp parallel for 9084 for (int i = 0; i < 10; ++i) { 9085 #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?}} 9086 for (int j = 0; j < 10; ++j) 9087 ; 9088 } 9089 #pragma omp parallel for 9090 for (int i = 0; i < 10; ++i) { 9091 #pragma omp target update to(a) 9092 a++; 9093 } 9094 #pragma omp parallel for 9095 for (int i = 0; i < 10; ++i) { 9096 #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?}} 9097 for (int j = 0; j < 10; ++j) 9098 ; 9099 } 9100 #pragma omp parallel for 9101 for (int i = 0; i < 10; ++i) { 9102 #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?}} 9103 for (int j = 0; j < 10; ++j) 9104 ; 9105 } 9106 #pragma omp parallel for 9107 for (int i = 0; i < 10; ++i) { 9108 #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?}} 9109 for (int j = 0; j < 10; ++j) 9110 ; 9111 } 9112 #pragma omp parallel for 9113 for (int i = 0; i < 10; ++i) { 9114 #pragma omp target simd // OK 9115 for (int j = 0; j < 10; ++j) 9116 ; 9117 } 9118 #pragma omp parallel for 9119 for (int i = 0; i < 10; ++i) { 9120 #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?}} 9121 for (int j = 0; j < 10; ++j) 9122 ; 9123 } 9124 #pragma omp parallel for 9125 for (int i = 0; i < 10; ++i) { 9126 #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?}} 9127 for (int j = 0; j < 10; ++j) 9128 ; 9129 } 9130 #pragma omp parallel for 9131 for (int i = 0; i < 10; ++i) { 9132 #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?}} 9133 for (int j = 0; j < 10; ++j) 9134 ; 9135 } 9136 #pragma omp parallel for 9137 for (int i = 0; i < 10; ++i) { 9138 #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?}} 9139 for (int j = 0; j < 10; ++j) 9140 ; 9141 } 9142 9143 // PARALLEL FOR SIMD DIRECTIVE 9144 #pragma omp parallel for simd 9145 for (int i = 0; i < 10; ++i) { 9146 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9147 for (int i = 0; i < 10; ++i) 9148 ; 9149 } 9150 #pragma omp parallel for simd 9151 for (int i = 0; i < 10; ++i) { 9152 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 9153 for (int i = 0; i < 10; ++i) 9154 ; 9155 } 9156 #pragma omp parallel for simd 9157 for (int i = 0; i < 10; ++i) { 9158 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9159 for (int i = 0; i < 10; ++i) 9160 ; 9161 } 9162 #pragma omp parallel for simd 9163 for (int i = 0; i < 10; ++i) { 9164 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9165 for (int i = 0; i < 10; ++i) 9166 ; 9167 } 9168 #pragma omp parallel for simd 9169 for (int i = 0; i < 10; ++i) { 9170 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9171 { 9172 bar(); 9173 } 9174 } 9175 #pragma omp parallel for simd 9176 for (int i = 0; i < 10; ++i) { 9177 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9178 { 9179 bar(); 9180 } 9181 } 9182 #pragma omp parallel for simd 9183 for (int i = 0; i < 10; ++i) { 9184 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9185 { 9186 bar(); 9187 } 9188 } 9189 9190 #pragma omp parallel for simd 9191 for (int i = 0; i < 10; ++i) { 9192 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9193 { 9194 bar(); 9195 } 9196 } 9197 9198 #pragma omp parallel for simd 9199 for (int i = 0; i < 10; ++i) { 9200 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9201 { 9202 bar(); 9203 } 9204 } 9205 9206 #pragma omp parallel for simd 9207 for (int i = 0; i < 10; ++i) { 9208 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9209 { 9210 #pragma omp single 9211 { 9212 bar(); 9213 } 9214 #pragma omp for 9215 for (int i = 0; i < 10; ++i) 9216 ; 9217 #pragma omp for simd 9218 for (int i = 0; i < 10; ++i) 9219 ; 9220 #pragma omp sections 9221 { 9222 bar(); 9223 } 9224 } 9225 } 9226 #pragma omp parallel for simd 9227 for (int i = 0; i < 10; ++i) { 9228 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9229 for (int i = 0; i < 10; ++i) 9230 ; 9231 } 9232 #pragma omp parallel for simd 9233 for (int i = 0; i < 10; ++i) { 9234 #pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} 9235 for (int i = 0; i < 10; ++i) 9236 ; 9237 } 9238 #pragma omp parallel for simd 9239 for (int i = 0; i < 10; ++i) { 9240 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9241 { 9242 bar(); 9243 } 9244 } 9245 #pragma omp parallel for simd 9246 for (int i = 0; i < 10; ++i) { 9247 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9248 { 9249 bar(); 9250 } 9251 } 9252 #pragma omp parallel for simd 9253 for (int i = 0; i < 10; ++i) { 9254 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9255 bar(); 9256 } 9257 #pragma omp parallel for simd 9258 for (int i = 0; i < 10; ++i) { 9259 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9260 bar(); 9261 } 9262 #pragma omp parallel for simd 9263 for (int i = 0; i < 10; ++i) { 9264 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9265 bar(); 9266 } 9267 #pragma omp parallel for simd 9268 for (int i = 0; i < 10; ++i) { 9269 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9270 bar(); 9271 } 9272 #pragma omp parallel for simd 9273 for (int i = 0; i < 10; ++i) { 9274 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9275 bar(); 9276 } 9277 #pragma omp parallel for simd 9278 for (int i = 0; i < 10; ++i) { 9279 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9280 bar(); 9281 } 9282 #pragma omp parallel for simd 9283 for (int i = 0; i < 10; ++i) { 9284 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9285 ++a; 9286 } 9287 #pragma omp parallel for simd 9288 for (int i = 0; i < 10; ++i) { 9289 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9290 ++a; 9291 } 9292 #pragma omp parallel for simd 9293 for (int i = 0; i < 10; ++i) { 9294 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9295 ++a; 9296 } 9297 #pragma omp parallel for simd 9298 for (int i = 0; i < 10; ++i) { 9299 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9300 for (int i = 0; i < 10; ++i) 9301 ; 9302 } 9303 #pragma omp parallel for simd 9304 for (int i = 0; i < 10; ++i) { 9305 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9306 ++a; 9307 } 9308 #pragma omp parallel for simd 9309 for (int i = 0; i < 10; ++i) { 9310 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9311 ++a; 9312 } 9313 #pragma omp parallel for simd 9314 for (int i = 0; i < 10; ++i) { 9315 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9316 ++a; 9317 } 9318 #pragma omp parallel for simd 9319 for (int i = 0; i < 10; ++i) { 9320 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9321 for (int i = 0; i < 10; ++i) 9322 ++a; 9323 } 9324 #pragma omp parallel for simd 9325 for (int i = 0; i < 10; ++i) { 9326 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9327 for (int j = 0; j < 10; ++j) 9328 ; 9329 } 9330 #pragma omp parallel for simd 9331 for (int i = 0; i < 10; ++i) { 9332 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9333 a++; 9334 } 9335 #pragma omp parallel for simd 9336 for (int i = 0; i < 10; ++i) { 9337 #pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9338 for (int j = 0; j < 10; ++j) 9339 ; 9340 } 9341 #pragma omp parallel for simd 9342 for (int i = 0; i < 10; ++i) { 9343 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9344 for (int j = 0; j < 10; ++j) 9345 ; 9346 } 9347 #pragma omp parallel for simd 9348 for (int i = 0; i < 10; ++i) { 9349 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9350 for (int j = 0; j < 10; ++j) 9351 ; 9352 } 9353 #pragma omp parallel for simd 9354 for (int i = 0; i < 10; ++i) { 9355 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9356 for (int j = 0; j < 10; ++j) 9357 ; 9358 } 9359 #pragma omp parallel for simd 9360 for (int i = 0; i < 10; ++i) { 9361 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9362 for (int j = 0; j < 10; ++j) 9363 ; 9364 } 9365 #pragma omp parallel for simd 9366 for (int i = 0; i < 10; ++i) { 9367 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9368 for (int j = 0; j < 10; ++j) 9369 ; 9370 } 9371 #pragma omp parallel for simd 9372 for (int i = 0; i < 10; ++i) { 9373 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9374 for (int j = 0; j < 10; ++j) 9375 ; 9376 } 9377 #pragma omp parallel for simd 9378 for (int i = 0; i < 10; ++i) { 9379 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 9380 for (int j = 0; j < 10; ++j) 9381 ; 9382 } 9383 9384 // PARALLEL SECTIONS DIRECTIVE 9385 #pragma omp parallel sections 9386 { 9387 #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?}} 9388 for (int i = 0; i < 10; ++i) 9389 ; 9390 } 9391 #pragma omp parallel sections 9392 { 9393 #pragma omp simd 9394 for (int i = 0; i < 10; ++i) 9395 ; 9396 } 9397 #pragma omp parallel sections 9398 { 9399 #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?}} 9400 for (int i = 0; i < 10; ++i) 9401 ; 9402 } 9403 #pragma omp parallel sections 9404 { 9405 #pragma omp parallel 9406 for (int i = 0; i < 10; ++i) 9407 ; 9408 } 9409 #pragma omp parallel sections 9410 { 9411 #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?}} 9412 { 9413 bar(); 9414 } 9415 } 9416 #pragma omp parallel sections 9417 { 9418 #pragma omp section 9419 { 9420 bar(); 9421 } 9422 } 9423 #pragma omp parallel sections 9424 { 9425 #pragma omp section 9426 { 9427 #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?}} 9428 bar(); 9429 #pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}} 9430 bar(); 9431 #pragma omp critical 9432 bar(); 9433 } 9434 } 9435 #pragma omp parallel sections 9436 { 9437 #pragma omp parallel 9438 { 9439 #pragma omp single // OK 9440 { 9441 bar(); 9442 } 9443 #pragma omp master // OK 9444 { 9445 bar(); 9446 } 9447 #pragma omp critical // OK 9448 { 9449 bar(); 9450 } 9451 #pragma omp for // OK 9452 for (int i = 0; i < 10; ++i) 9453 ; 9454 #pragma omp for simd // OK 9455 for (int i = 0; i < 10; ++i) 9456 ; 9457 #pragma omp sections // OK 9458 { 9459 bar(); 9460 } 9461 } 9462 } 9463 #pragma omp parallel sections 9464 { 9465 #pragma omp parallel for 9466 for (int i = 0; i < 10; ++i) 9467 ; 9468 } 9469 #pragma omp parallel sections 9470 { 9471 #pragma omp parallel for simd 9472 for (int i = 0; i < 10; ++i) 9473 ; 9474 } 9475 #pragma omp parallel sections 9476 { 9477 #pragma omp parallel sections 9478 { 9479 bar(); 9480 } 9481 } 9482 #pragma omp parallel sections 9483 { 9484 #pragma omp task 9485 { 9486 bar(); 9487 } 9488 } 9489 #pragma omp parallel sections 9490 { 9491 #pragma omp taskyield 9492 } 9493 #pragma omp parallel sections 9494 { 9495 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}} 9496 } 9497 #pragma omp parallel sections 9498 { 9499 #pragma omp taskwait 9500 } 9501 #pragma omp parallel sections 9502 { 9503 #pragma omp flush 9504 } 9505 #pragma omp parallel sections 9506 { 9507 #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?}} 9508 bar(); 9509 } 9510 #pragma omp parallel sections 9511 { 9512 #pragma omp atomic 9513 ++a; 9514 } 9515 #pragma omp parallel sections 9516 { 9517 #pragma omp target 9518 ++a; 9519 } 9520 #pragma omp parallel sections 9521 { 9522 #pragma omp target parallel 9523 ++a; 9524 } 9525 #pragma omp parallel sections 9526 { 9527 #pragma omp target parallel for 9528 for (int i = 0; i < 10; ++i) 9529 ; 9530 } 9531 #pragma omp parallel sections 9532 { 9533 #pragma omp target enter data map(to: a) 9534 } 9535 #pragma omp parallel sections 9536 { 9537 #pragma omp target exit data map(from: a) 9538 } 9539 #pragma omp parallel sections 9540 { 9541 #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?}} 9542 ++a; 9543 } 9544 #pragma omp parallel sections 9545 { 9546 #pragma omp taskloop 9547 for (int i = 0; i < 10; ++i) 9548 ++a; 9549 } 9550 #pragma omp parallel sections 9551 { 9552 #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?}} 9553 for (int i = 0; i < 10; ++i) 9554 ; 9555 } 9556 #pragma omp parallel sections 9557 { 9558 #pragma omp target update to(a) 9559 } 9560 #pragma omp parallel sections 9561 { 9562 #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?}} 9563 for (int i = 0; i < 10; ++i) 9564 ; 9565 } 9566 #pragma omp parallel sections 9567 { 9568 #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?}} 9569 for (int i = 0; i < 10; ++i) 9570 ; 9571 } 9572 #pragma omp parallel sections 9573 { 9574 #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?}} 9575 for (int i = 0; i < 10; ++i) 9576 ; 9577 } 9578 #pragma omp parallel sections 9579 { 9580 #pragma omp target simd // OK 9581 for (int i = 0; i < 10; ++i) 9582 ; 9583 } 9584 #pragma omp parallel sections 9585 { 9586 #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?}} 9587 for (int i = 0; i < 10; ++i) 9588 ; 9589 } 9590 #pragma omp parallel sections 9591 { 9592 #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?}} 9593 for (int i = 0; i < 10; ++i) 9594 ; 9595 } 9596 #pragma omp parallel sections 9597 { 9598 #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?}} 9599 for (int i = 0; i < 10; ++i) 9600 ; 9601 } 9602 #pragma omp parallel sections 9603 { 9604 #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?}} 9605 for (int i = 0; i < 10; ++i) 9606 ; 9607 } 9608 9609 // TASK DIRECTIVE 9610 #pragma omp task 9611 #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?}} 9612 for (int i = 0; i < 10; ++i) 9613 ; 9614 #pragma omp task 9615 #pragma omp simd 9616 for (int i = 0; i < 10; ++i) 9617 ; 9618 #pragma omp task 9619 #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?}} 9620 for (int i = 0; i < 10; ++i) 9621 ; 9622 #pragma omp task 9623 #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?}} 9624 { 9625 bar(); 9626 } 9627 #pragma omp task 9628 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}} 9629 { 9630 bar(); 9631 } 9632 #pragma omp task 9633 #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?}} 9634 bar(); 9635 #pragma omp task 9636 #pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}} 9637 bar(); 9638 #pragma omp task 9639 #pragma omp critical 9640 bar(); 9641 #pragma omp task 9642 #pragma omp parallel for 9643 for (int i = 0; i < 10; ++i) 9644 ; 9645 #pragma omp task 9646 #pragma omp parallel for simd 9647 for (int i = 0; i < 10; ++i) 9648 ; 9649 #pragma omp task 9650 #pragma omp parallel sections 9651 { 9652 bar(); 9653 } 9654 #pragma omp task 9655 #pragma omp task 9656 { 9657 bar(); 9658 } 9659 #pragma omp task 9660 { 9661 #pragma omp taskyield 9662 bar(); 9663 } 9664 #pragma omp task 9665 { 9666 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}} 9667 bar(); 9668 } 9669 #pragma omp task 9670 { 9671 #pragma omp taskwait 9672 bar(); 9673 } 9674 #pragma omp task 9675 { 9676 #pragma omp flush 9677 bar(); 9678 } 9679 #pragma omp task 9680 { 9681 #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?}} 9682 bar(); 9683 } 9684 #pragma omp task 9685 { 9686 #pragma omp atomic 9687 ++a; 9688 } 9689 #pragma omp task 9690 { 9691 #pragma omp target 9692 ++a; 9693 } 9694 #pragma omp task 9695 { 9696 #pragma omp target parallel 9697 ++a; 9698 } 9699 #pragma omp task 9700 #pragma omp target parallel for 9701 for (int i = 0; i < 10; ++i) 9702 ; 9703 #pragma omp task 9704 { 9705 #pragma omp target enter data map(to: a) 9706 ++a; 9707 } 9708 #pragma omp task 9709 { 9710 #pragma omp target exit data map(from: a) 9711 ++a; 9712 } 9713 #pragma omp task 9714 { 9715 #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?}} 9716 ++a; 9717 } 9718 #pragma omp task 9719 { 9720 #pragma omp taskloop 9721 for (int i = 0; i < 10; ++i) 9722 ++a; 9723 } 9724 #pragma omp task 9725 { 9726 #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?}} 9727 for (int i = 0; i < 10; ++i) 9728 ; 9729 } 9730 #pragma omp task 9731 { 9732 #pragma omp target update to(a) 9733 a++; 9734 } 9735 #pragma omp task 9736 { 9737 #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?}} 9738 for (int i = 0; i < 10; ++i) 9739 ; 9740 } 9741 #pragma omp task 9742 { 9743 #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?}} 9744 for (int i = 0; i < 10; ++i) 9745 ; 9746 } 9747 #pragma omp task 9748 { 9749 #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?}} 9750 for (int i = 0; i < 10; ++i) 9751 ; 9752 } 9753 #pragma omp task 9754 { 9755 #pragma omp target simd // OK 9756 for (int i = 0; i < 10; ++i) 9757 ; 9758 } 9759 #pragma omp task 9760 { 9761 #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?}} 9762 for (int i = 0; i < 10; ++i) 9763 ; 9764 } 9765 #pragma omp task 9766 { 9767 #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?}} 9768 for (int i = 0; i < 10; ++i) 9769 ; 9770 } 9771 #pragma omp task 9772 { 9773 #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?}} 9774 for (int i = 0; i < 10; ++i) 9775 ; 9776 } 9777 #pragma omp task 9778 { 9779 #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?}} 9780 for (int i = 0; i < 10; ++i) 9781 ; 9782 } 9783 9784 // ATOMIC DIRECTIVE 9785 #pragma omp atomic 9786 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9787 // expected-note@+1 {{expected an expression statement}} 9788 { 9789 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9790 for (int i = 0; i < 10; ++i) 9791 ; 9792 } 9793 #pragma omp atomic 9794 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9795 // expected-note@+1 {{expected an expression statement}} 9796 { 9797 #pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9798 for (int i = 0; i < 10; ++i) 9799 ; 9800 } 9801 #pragma omp atomic 9802 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9803 // expected-note@+1 {{expected an expression statement}} 9804 { 9805 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9806 for (int i = 0; i < 10; ++i) 9807 ; 9808 } 9809 #pragma omp atomic 9810 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9811 // expected-note@+1 {{expected an expression statement}} 9812 { 9813 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9814 for (int i = 0; i < 10; ++i) 9815 ; 9816 } 9817 #pragma omp atomic 9818 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9819 // expected-note@+1 {{expected an expression statement}} 9820 { 9821 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9822 { 9823 bar(); 9824 } 9825 } 9826 #pragma omp atomic 9827 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9828 // expected-note@+1 {{expected an expression statement}} 9829 { 9830 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9831 { 9832 bar(); 9833 } 9834 } 9835 #pragma omp atomic 9836 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9837 // expected-note@+1 {{expected an expression statement}} 9838 { 9839 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9840 { 9841 bar(); 9842 } 9843 } 9844 #pragma omp atomic 9845 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9846 // expected-note@+1 {{expected an expression statement}} 9847 { 9848 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9849 { 9850 bar(); 9851 } 9852 } 9853 #pragma omp atomic 9854 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9855 // expected-note@+1 {{expected an expression statement}} 9856 { 9857 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9858 { 9859 bar(); 9860 } 9861 } 9862 #pragma omp atomic 9863 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9864 // expected-note@+1 {{expected an expression statement}} 9865 { 9866 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9867 for (int i = 0; i < 10; ++i) 9868 ; 9869 } 9870 #pragma omp atomic 9871 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9872 // expected-note@+1 {{expected an expression statement}} 9873 { 9874 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9875 for (int i = 0; i < 10; ++i) 9876 ; 9877 } 9878 #pragma omp atomic 9879 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9880 // expected-note@+1 {{expected an expression statement}} 9881 { 9882 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9883 { 9884 bar(); 9885 } 9886 } 9887 #pragma omp atomic 9888 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9889 // expected-note@+1 {{expected an expression statement}} 9890 { 9891 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9892 { 9893 bar(); 9894 } 9895 } 9896 #pragma omp atomic 9897 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9898 // expected-note@+1 {{expected an expression statement}} 9899 { 9900 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9901 bar(); 9902 } 9903 #pragma omp atomic 9904 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9905 // expected-note@+1 {{expected an expression statement}} 9906 { 9907 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9908 bar(); 9909 } 9910 #pragma omp atomic 9911 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9912 // expected-note@+1 {{expected an expression statement}} 9913 { 9914 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9915 bar(); 9916 } 9917 #pragma omp atomic 9918 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9919 // expected-note@+1 {{expected an expression statement}} 9920 { 9921 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9922 bar(); 9923 } 9924 #pragma omp atomic 9925 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9926 // expected-note@+1 {{expected an expression statement}} 9927 { 9928 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9929 bar(); 9930 } 9931 #pragma omp atomic 9932 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9933 // expected-note@+1 {{expected an expression statement}} 9934 { 9935 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9936 ++a; 9937 } 9938 #pragma omp atomic 9939 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9940 // expected-note@+1 {{expected an expression statement}} 9941 { 9942 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9943 ++a; 9944 } 9945 #pragma omp atomic 9946 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9947 // expected-note@+1 {{expected an expression statement}} 9948 { 9949 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9950 ++a; 9951 } 9952 #pragma omp atomic 9953 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9954 // expected-note@+1 {{expected an expression statement}} 9955 { 9956 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9957 for (int i = 0; i < 10; ++i) 9958 ; 9959 } 9960 #pragma omp atomic 9961 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9962 // expected-note@+1 {{expected an expression statement}} 9963 { 9964 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9965 ++a; 9966 } 9967 #pragma omp atomic 9968 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9969 // expected-note@+1 {{expected an expression statement}} 9970 { 9971 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9972 ++a; 9973 } 9974 #pragma omp atomic 9975 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9976 // expected-note@+1 {{expected an expression statement}} 9977 { 9978 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9979 ++a; 9980 } 9981 #pragma omp atomic 9982 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9983 // expected-note@+1 {{expected an expression statement}} 9984 { 9985 #pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9986 for (int i = 0; i < 10; ++i) 9987 ++a; 9988 } 9989 #pragma omp atomic 9990 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9991 // expected-note@+1 {{expected an expression statement}} 9992 { 9993 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 9994 for (int i = 0; i < 10; ++i) 9995 ; 9996 } 9997 #pragma omp atomic 9998 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 9999 // expected-note@+1 {{expected an expression statement}} 10000 { 10001 #pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10002 } 10003 #pragma omp atomic 10004 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10005 // expected-note@+1 {{expected an expression statement}} 10006 { 10007 #pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10008 for (int i = 0; i < 10; ++i) 10009 ; 10010 } 10011 #pragma omp atomic 10012 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10013 // expected-note@+1 {{expected an expression statement}} 10014 { 10015 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10016 for (int i = 0; i < 10; ++i) 10017 ; 10018 } 10019 #pragma omp atomic 10020 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10021 // expected-note@+1 {{expected an expression statement}} 10022 { 10023 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10024 for (int i = 0; i < 10; ++i) 10025 ; 10026 } 10027 #pragma omp atomic 10028 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10029 // expected-note@+1 {{expected an expression statement}} 10030 { 10031 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10032 for (int i = 0; i < 10; ++i) 10033 ; 10034 } 10035 #pragma omp atomic 10036 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10037 // expected-note@+1 {{expected an expression statement}} 10038 { 10039 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10040 for (int i = 0; i < 10; ++i) 10041 ; 10042 } 10043 #pragma omp atomic 10044 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10045 // expected-note@+1 {{expected an expression statement}} 10046 { 10047 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10048 for (int i = 0; i < 10; ++i) 10049 ; 10050 } 10051 #pragma omp atomic 10052 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10053 // expected-note@+1 {{expected an expression statement}} 10054 { 10055 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10056 for (int i = 0; i < 10; ++i) 10057 ; 10058 } 10059 #pragma omp atomic 10060 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10061 // expected-note@+1 {{expected an expression statement}} 10062 { 10063 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10064 for (int i = 0; i < 10; ++i) 10065 ; 10066 } 10067 10068 // TARGET DIRECTIVE 10069 #pragma omp target 10070 #pragma omp parallel 10071 bar(); 10072 #pragma omp target 10073 #pragma omp for 10074 for (int i = 0; i < 10; ++i) 10075 ; 10076 #pragma omp target 10077 #pragma omp simd 10078 for (int i = 0; i < 10; ++i) 10079 ; 10080 #pragma omp target 10081 #pragma omp for simd 10082 for (int i = 0; i < 10; ++i) 10083 ; 10084 #pragma omp target 10085 #pragma omp sections 10086 { 10087 bar(); 10088 } 10089 #pragma omp target 10090 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}} 10091 { 10092 bar(); 10093 } 10094 #pragma omp target 10095 #pragma omp single 10096 bar(); 10097 10098 #pragma omp target 10099 #pragma omp master 10100 { 10101 bar(); 10102 } 10103 #pragma omp target 10104 #pragma omp critical 10105 { 10106 bar(); 10107 } 10108 #pragma omp target 10109 #pragma omp parallel for 10110 for (int i = 0; i < 10; ++i) 10111 ; 10112 #pragma omp target 10113 #pragma omp parallel for simd 10114 for (int i = 0; i < 10; ++i) 10115 ; 10116 #pragma omp target 10117 #pragma omp parallel sections 10118 { 10119 bar(); 10120 } 10121 #pragma omp target 10122 #pragma omp task 10123 { 10124 bar(); 10125 } 10126 #pragma omp target 10127 { 10128 #pragma omp taskyield 10129 bar(); 10130 } 10131 #pragma omp target 10132 { 10133 #pragma omp barrier 10134 bar(); 10135 } 10136 #pragma omp target 10137 { 10138 #pragma omp taskwait 10139 bar(); 10140 } 10141 #pragma omp target 10142 { 10143 #pragma omp flush 10144 bar(); 10145 } 10146 #pragma omp target 10147 { 10148 #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?}} 10149 bar(); 10150 } 10151 #pragma omp target 10152 { 10153 #pragma omp atomic 10154 ++a; 10155 } 10156 #pragma omp target 10157 { 10158 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 10159 ++a; 10160 } 10161 #pragma omp target 10162 { 10163 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 10164 ++a; 10165 } 10166 #pragma omp target 10167 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 10168 for (int i = 0; i < 10; ++i) 10169 ; 10170 #pragma omp target 10171 { 10172 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 10173 } 10174 #pragma omp target 10175 { 10176 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 10177 } 10178 #pragma omp target 10179 { 10180 #pragma omp teams 10181 ++a; 10182 } 10183 #pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}} 10184 { 10185 ++a; // expected-note {{statement outside teams construct here}} 10186 #pragma omp teams // expected-note {{nested teams construct here}} 10187 ++a; 10188 } 10189 #pragma omp target 10190 { 10191 #pragma omp taskloop 10192 for (int i = 0; i < 10; ++i) 10193 ++a; 10194 } 10195 #pragma omp target 10196 { 10197 #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?}} 10198 for (int i = 0; i < 10; ++i) 10199 ; 10200 } 10201 #pragma omp atomic 10202 // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} 10203 // expected-note@+1 {{expected an expression statement}} 10204 { 10205 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}} 10206 a++; 10207 } 10208 #pragma omp target 10209 { 10210 #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?}} 10211 for (int i = 0; i < 10; ++i) 10212 ; 10213 } 10214 #pragma omp target 10215 { 10216 #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?}} 10217 for (int i = 0; i < 10; ++i) 10218 ; 10219 } 10220 #pragma omp target 10221 { 10222 #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?}} 10223 for (int i = 0; i < 10; ++i) 10224 ; 10225 } 10226 #pragma omp target 10227 { 10228 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 10229 for (int i = 0; i < 10; ++i) 10230 ; 10231 } 10232 #pragma omp target 10233 { 10234 #pragma omp teams distribute // OK 10235 for (int i = 0; i < 10; ++i) 10236 ; 10237 } 10238 #pragma omp target 10239 { 10240 #pragma omp teams distribute simd // OK 10241 for (int i = 0; i < 10; ++i) 10242 ; 10243 } 10244 #pragma omp target 10245 { 10246 #pragma omp teams distribute parallel for simd // OK 10247 for (int i = 0; i < 10; ++i) 10248 ; 10249 } 10250 #pragma omp target 10251 { 10252 #pragma omp teams distribute parallel for // OK 10253 for (int i = 0; i < 10; ++i) 10254 ; 10255 } 10256 10257 // TARGET PARALLEL DIRECTIVE 10258 #pragma omp target parallel 10259 #pragma omp parallel 10260 bar(); 10261 #pragma omp target parallel 10262 #pragma omp for 10263 for (int i = 0; i < 10; ++i) 10264 ; 10265 #pragma omp target parallel 10266 #pragma omp simd 10267 for (int i = 0; i < 10; ++i) 10268 ; 10269 #pragma omp target parallel 10270 #pragma omp for simd 10271 for (int i = 0; i < 10; ++i) 10272 ; 10273 #pragma omp target parallel 10274 #pragma omp sections 10275 { 10276 bar(); 10277 } 10278 #pragma omp target parallel 10279 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}} 10280 { 10281 bar(); 10282 } 10283 #pragma omp target parallel 10284 #pragma omp single 10285 bar(); 10286 10287 #pragma omp target parallel 10288 #pragma omp master 10289 { 10290 bar(); 10291 } 10292 #pragma omp target parallel 10293 #pragma omp critical 10294 { 10295 bar(); 10296 } 10297 #pragma omp target parallel 10298 #pragma omp parallel for 10299 for (int i = 0; i < 10; ++i) 10300 ; 10301 #pragma omp target parallel 10302 #pragma omp parallel for simd 10303 for (int i = 0; i < 10; ++i) 10304 ; 10305 #pragma omp target parallel 10306 #pragma omp parallel sections 10307 { 10308 bar(); 10309 } 10310 #pragma omp target parallel 10311 #pragma omp task 10312 { 10313 bar(); 10314 } 10315 #pragma omp target parallel 10316 { 10317 #pragma omp taskyield 10318 bar(); 10319 } 10320 #pragma omp target parallel 10321 { 10322 #pragma omp barrier 10323 bar(); 10324 } 10325 #pragma omp target parallel 10326 { 10327 #pragma omp taskwait 10328 bar(); 10329 } 10330 #pragma omp target parallel 10331 { 10332 #pragma omp flush 10333 bar(); 10334 } 10335 #pragma omp target parallel 10336 { 10337 #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?}} 10338 bar(); 10339 } 10340 #pragma omp target parallel 10341 { 10342 #pragma omp atomic 10343 ++a; 10344 } 10345 #pragma omp target parallel 10346 { 10347 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}} 10348 ++a; 10349 } 10350 #pragma omp target parallel 10351 { 10352 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}} 10353 ++a; 10354 } 10355 #pragma omp target parallel 10356 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}} 10357 for (int i = 0; i < 10; ++i) 10358 ; 10359 #pragma omp target parallel 10360 { 10361 #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?}} 10362 ++a; 10363 } 10364 #pragma omp target parallel 10365 { 10366 ++a; 10367 #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?}} 10368 ++a; 10369 } 10370 #pragma omp target parallel 10371 { 10372 #pragma omp taskloop 10373 for (int i = 0; i < 10; ++i) 10374 ++a; 10375 } 10376 #pragma omp target parallel 10377 { 10378 #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?}} 10379 for (int i = 0; i < 10; ++i) 10380 ; 10381 } 10382 #pragma omp target parallel 10383 { 10384 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 10385 } 10386 #pragma omp target parallel 10387 { 10388 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}} 10389 } 10390 #pragma omp target parallel 10391 { 10392 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}} 10393 } 10394 #pragma omp target parallel 10395 { 10396 #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?}} 10397 for (int i = 0; i < 10; ++i) 10398 ; 10399 } 10400 #pragma omp target parallel 10401 { 10402 #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?}} 10403 for (int i = 0; i < 10; ++i) 10404 ; 10405 } 10406 #pragma omp target parallel 10407 { 10408 #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?}} 10409 for (int i = 0; i < 10; ++i) 10410 ; 10411 } 10412 #pragma omp target parallel 10413 { 10414 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}} 10415 for (int i = 0; i < 10; ++i) 10416 ; 10417 } 10418 #pragma omp target parallel 10419 { 10420 #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?}} 10421 for (int i = 0; i < 10; ++i) 10422 ; 10423 } 10424 #pragma omp target parallel 10425 { 10426 #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?}} 10427 for (int i = 0; i < 10; ++i) 10428 ; 10429 } 10430 #pragma omp target parallel 10431 { 10432 #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?}} 10433 for (int i = 0; i < 10; ++i) 10434 ; 10435 } 10436 #pragma omp target parallel 10437 { 10438 #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?}} 10439 for (int i = 0; i < 10; ++i) 10440 ; 10441 } 10442 10443 // TARGET PARALLEL FOR DIRECTIVE 10444 #pragma omp target parallel for 10445 for (int i = 0; i < 10; ++i) { 10446 #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?}} 10447 for (int i = 0; i < 10; ++i) 10448 ; 10449 } 10450 #pragma omp target parallel for 10451 for (int i = 0; i < 10; ++i) { 10452 #pragma omp simd 10453 for (int i = 0; i < 10; ++i) 10454 ; 10455 } 10456 #pragma omp target parallel for 10457 for (int i = 0; i < 10; ++i) { 10458 #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?}} 10459 for (int i = 0; i < 10; ++i) 10460 ; 10461 } 10462 #pragma omp target parallel for 10463 for (int i = 0; i < 10; ++i) { 10464 #pragma omp parallel 10465 for (int i = 0; i < 10; ++i) 10466 ; 10467 } 10468 #pragma omp target parallel for 10469 for (int i = 0; i < 10; ++i) { 10470 #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?}} 10471 { 10472 bar(); 10473 } 10474 } 10475 #pragma omp target parallel for 10476 for (int i = 0; i < 10; ++i) { 10477 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}} 10478 { 10479 bar(); 10480 } 10481 } 10482 #pragma omp target parallel for 10483 for (int i = 0; i < 10; ++i) { 10484 #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?}} 10485 { 10486 bar(); 10487 } 10488 } 10489 10490 #pragma omp target parallel for 10491 for (int i = 0; i < 10; ++i) { 10492 #pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 10493 { 10494 bar(); 10495 } 10496 } 10497 10498 #pragma omp target parallel for 10499 for (int i = 0; i < 10; ++i) { 10500 #pragma omp critical 10501 { 10502 bar(); 10503 } 10504 } 10505 10506 #pragma omp target parallel for 10507 for (int i = 0; i < 10; ++i) { 10508 #pragma omp parallel 10509 { 10510 #pragma omp single // OK 10511 { 10512 bar(); 10513 } 10514 #pragma omp for // OK 10515 for (int i = 0; i < 10; ++i) 10516 ; 10517 #pragma omp for simd // OK 10518 for (int i = 0; i < 10; ++i) 10519 ; 10520 #pragma omp sections // OK 10521 { 10522 bar(); 10523 } 10524 } 10525 } 10526 #pragma omp target parallel for 10527 for (int i = 0; i < 10; ++i) { 10528 #pragma omp parallel for 10529 for (int i = 0; i < 10; ++i) 10530 ; 10531 } 10532 #pragma omp target parallel for 10533 for (int i = 0; i < 10; ++i) { 10534 #pragma omp parallel for simd 10535 for (int i = 0; i < 10; ++i) 10536 ; 10537 } 10538 #pragma omp target parallel for 10539 for (int i = 0; i < 10; ++i) { 10540 #pragma omp parallel sections 10541 { 10542 bar(); 10543 } 10544 } 10545 #pragma omp target parallel for 10546 for (int i = 0; i < 10; ++i) { 10547 #pragma omp task 10548 { 10549 bar(); 10550 } 10551 } 10552 #pragma omp target parallel for 10553 for (int i = 0; i < 10; ++i) { 10554 #pragma omp taskyield 10555 bar(); 10556 } 10557 #pragma omp target parallel for 10558 for (int i = 0; i < 10; ++i) { 10559 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}} 10560 bar(); 10561 } 10562 #pragma omp target parallel for 10563 for (int i = 0; i < 10; ++i) { 10564 #pragma omp taskwait 10565 bar(); 10566 } 10567 #pragma omp target parallel for 10568 for (int i = 0; i < 10; ++i) { 10569 #pragma omp flush 10570 bar(); 10571 } 10572 #pragma omp target parallel for 10573 for (int i = 0; i < 10; ++i) { 10574 #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?}} 10575 bar(); 10576 } 10577 #pragma omp target parallel for ordered 10578 for (int i = 0; i < 10; ++i) { 10579 #pragma omp ordered // OK 10580 bar(); 10581 } 10582 #pragma omp target parallel for 10583 for (int i = 0; i < 10; ++i) { 10584 #pragma omp atomic 10585 ++a; 10586 } 10587 #pragma omp target parallel for 10588 for (int i = 0; i < 10; ++i) { 10589 #pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}} 10590 ++a; 10591 } 10592 #pragma omp target parallel for 10593 for (int i = 0; i < 10; ++i) { 10594 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}} 10595 ++a; 10596 } 10597 #pragma omp target parallel for 10598 for (int i = 0; i < 10; ++i) { 10599 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}} 10600 for (int i = 0; i < 10; ++i) 10601 ; 10602 } 10603 #pragma omp target parallel for 10604 for (int i = 0; i < 10; ++i) { 10605 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 10606 ++a; 10607 } 10608 #pragma omp target parallel for 10609 for (int i = 0; i < 10; ++i) { 10610 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 10611 ++a; 10612 } 10613 #pragma omp target parallel for 10614 for (int i = 0; i < 10; ++i) { 10615 #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?}} 10616 ++a; 10617 } 10618 #pragma omp target parallel for 10619 for (int i = 0; i < 10; ++i) { 10620 #pragma omp taskloop 10621 for (int i = 0; i < 10; ++i) 10622 ++a; 10623 } 10624 #pragma omp target parallel for 10625 for (int i = 0; i < 10; ++i) { 10626 #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?}} 10627 for (int j = 0; j < 10; ++j) 10628 ; 10629 } 10630 #pragma omp target parallel for 10631 for (int i = 0; i < 10; ++i) { 10632 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}} 10633 a++; 10634 } 10635 #pragma omp target parallel for 10636 for (int i = 0; i < 10; ++i) { 10637 #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?}} 10638 for (int j = 0; j < 10; ++j) 10639 ; 10640 } 10641 #pragma omp target parallel for 10642 for (int i = 0; i < 10; ++i) { 10643 #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?}} 10644 for (int j = 0; j < 10; ++j) 10645 ; 10646 } 10647 #pragma omp target parallel for 10648 for (int i = 0; i < 10; ++i) { 10649 #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?}} 10650 for (int j = 0; j < 10; ++j) 10651 ; 10652 } 10653 #pragma omp target parallel for 10654 for (int i = 0; i < 10; ++i) { 10655 #pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}} 10656 for (int j = 0; j < 10; ++j) 10657 ; 10658 } 10659 #pragma omp target parallel for 10660 for (int i = 0; i < 10; ++i) { 10661 #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?}} 10662 for (int j = 0; j < 10; ++j) 10663 ; 10664 } 10665 #pragma omp target parallel for 10666 for (int i = 0; i < 10; ++i) { 10667 #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?}} 10668 for (int j = 0; j < 10; ++j) 10669 ; 10670 } 10671 #pragma omp target parallel for 10672 for (int i = 0; i < 10; ++i) { 10673 #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?}} 10674 for (int j = 0; j < 10; ++j) 10675 ; 10676 } 10677 #pragma omp target parallel for 10678 for (int i = 0; i < 10; ++i) { 10679 #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?}} 10680 for (int j = 0; j < 10; ++j) 10681 ; 10682 } 10683 10684 // TEAMS DIRECTIVE 10685 #pragma omp target 10686 #pragma omp teams 10687 #pragma omp parallel 10688 bar(); 10689 #pragma omp target 10690 #pragma omp teams 10691 #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?}} 10692 for (int i = 0; i < 10; ++i) 10693 ; 10694 #pragma omp target 10695 #pragma omp teams 10696 #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?}} 10697 for (int i = 0; i < 10; ++i) 10698 ; 10699 #pragma omp target 10700 #pragma omp teams 10701 #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?}} 10702 for (int i = 0; i < 10; ++i) 10703 ; 10704 #pragma omp target 10705 #pragma omp teams 10706 #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?}} 10707 { 10708 bar(); 10709 } 10710 #pragma omp target 10711 #pragma omp teams 10712 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}} 10713 { 10714 bar(); 10715 } 10716 #pragma omp target 10717 #pragma omp teams 10718 #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?}} 10719 bar(); 10720 10721 #pragma omp target 10722 #pragma omp teams 10723 #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?}} 10724 { 10725 bar(); 10726 } 10727 #pragma omp target 10728 #pragma omp teams 10729 #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?}} 10730 { 10731 bar(); 10732 } 10733 #pragma omp target 10734 #pragma omp teams 10735 #pragma omp parallel for 10736 for (int i = 0; i < 10; ++i) 10737 ; 10738 #pragma omp target 10739 #pragma omp teams 10740 #pragma omp parallel for simd 10741 for (int i = 0; i < 10; ++i) 10742 ; 10743 #pragma omp target 10744 #pragma omp teams 10745 #pragma omp parallel sections 10746 { 10747 bar(); 10748 } 10749 #pragma omp target 10750 #pragma omp teams 10751 #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?}} 10752 { 10753 bar(); 10754 } 10755 #pragma omp target 10756 #pragma omp teams 10757 { 10758 #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?}} 10759 bar(); 10760 } 10761 #pragma omp target 10762 #pragma omp teams 10763 { 10764 #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?}} 10765 bar(); 10766 } 10767 #pragma omp target 10768 #pragma omp teams 10769 { 10770 #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?}} 10771 bar(); 10772 } 10773 #pragma omp target 10774 #pragma omp teams 10775 { 10776 #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?}} 10777 bar(); 10778 } 10779 #pragma omp target 10780 #pragma omp teams 10781 { 10782 #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?}} 10783 bar(); 10784 } 10785 #pragma omp target 10786 #pragma omp teams 10787 { 10788 #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?}} 10789 ++a; 10790 } 10791 #pragma omp target 10792 #pragma omp teams 10793 { 10794 #pragma omp target // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target' directive into a parallel region?}} 10795 ++a; 10796 } 10797 #pragma omp target 10798 #pragma omp teams 10799 { 10800 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 10801 ++a; 10802 } 10803 #pragma omp target 10804 #pragma omp teams 10805 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 10806 for (int i = 0; i < 10; ++i) 10807 ; 10808 #pragma omp target 10809 #pragma omp teams 10810 { 10811 #pragma omp target enter data map(to: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target enter data' directive into a parallel region?}} 10812 } 10813 #pragma omp target 10814 #pragma omp teams 10815 { 10816 #pragma omp target exit data map(from: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target exit data' directive into a parallel region?}} 10817 } 10818 #pragma omp target 10819 #pragma omp teams 10820 { 10821 #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?}} 10822 ++a; 10823 } 10824 #pragma omp target 10825 #pragma omp teams 10826 { 10827 #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?}} 10828 for (int i = 0; i < 10; ++i) 10829 ++a; 10830 } 10831 #pragma omp target 10832 #pragma omp teams 10833 #pragma omp distribute 10834 for (int i = 0; i < 10; ++i) 10835 ; 10836 #pragma omp target 10837 #pragma omp teams 10838 #pragma omp distribute 10839 for (int i = 0; i < 10; ++i) 10840 ; 10841 #pragma omp distribute 10842 for (int j = 0; j < 10; ++j) 10843 ; 10844 #pragma omp target 10845 #pragma omp teams 10846 { 10847 #pragma omp target update to(a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target update' directive into a parallel region?}} 10848 ++a; 10849 } 10850 #pragma omp target 10851 #pragma omp teams 10852 #pragma omp distribute parallel for 10853 for (int i = 0; i < 10; ++i) 10854 ; 10855 #pragma omp target 10856 #pragma omp teams 10857 { 10858 #pragma omp distribute parallel for 10859 for (int i = 0; i < 10; ++i) 10860 ; 10861 #pragma omp distribute parallel for 10862 for (int j = 0; j < 10; ++j) 10863 ; 10864 } 10865 #pragma omp target 10866 #pragma omp teams 10867 { 10868 #pragma omp distribute parallel for simd 10869 for (int i = 0; i < 10; ++i) 10870 ; 10871 #pragma omp distribute parallel for simd 10872 for (int j = 0; j < 10; ++j) 10873 ; 10874 } 10875 #pragma omp target 10876 #pragma omp teams 10877 { 10878 #pragma omp distribute simd 10879 for (int i = 0; i < 10; ++i) 10880 ; 10881 #pragma omp distribute simd 10882 for (int j = 0; j < 10; ++j) 10883 ; 10884 } 10885 #pragma omp target 10886 #pragma omp teams 10887 { 10888 #pragma omp target simd // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target simd' directive into a parallel region?}} 10889 for (int i = 0; i < 10; ++i) 10890 ; 10891 } 10892 #pragma omp target 10893 #pragma omp teams 10894 { 10895 #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?}} 10896 for (int i = 0; i < 10; ++i) 10897 ; 10898 } 10899 #pragma omp target 10900 #pragma omp teams 10901 { 10902 #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?}} 10903 for (int i = 0; i < 10; ++i) 10904 ; 10905 } 10906 #pragma omp target 10907 #pragma omp teams 10908 { 10909 #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?}} 10910 for (int i = 0; i < 10; ++i) 10911 ; 10912 } 10913 #pragma omp target 10914 #pragma omp teams 10915 { 10916 #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?}} 10917 for (int i = 0; i < 10; ++i) 10918 ; 10919 } 10920 10921 // TASKLOOP DIRECTIVE 10922 #pragma omp taskloop 10923 for (int i = 0; i < 10; ++i) { 10924 #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?}} 10925 for (int i = 0; i < 10; ++i) 10926 ; 10927 } 10928 #pragma omp taskloop 10929 for (int i = 0; i < 10; ++i) { 10930 #pragma omp simd 10931 for (int i = 0; i < 10; ++i) 10932 ; 10933 } 10934 #pragma omp taskloop 10935 for (int i = 0; i < 10; ++i) { 10936 #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?}} 10937 for (int i = 0; i < 10; ++i) 10938 ; 10939 } 10940 #pragma omp taskloop 10941 for (int i = 0; i < 10; ++i) { 10942 #pragma omp parallel 10943 for (int i = 0; i < 10; ++i) 10944 ; 10945 } 10946 #pragma omp taskloop 10947 for (int i = 0; i < 10; ++i) { 10948 #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?}} 10949 { 10950 bar(); 10951 } 10952 } 10953 #pragma omp taskloop 10954 for (int i = 0; i < 10; ++i) { 10955 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}} 10956 { 10957 bar(); 10958 } 10959 } 10960 #pragma omp taskloop 10961 for (int i = 0; i < 10; ++i) { 10962 #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?}} 10963 { 10964 bar(); 10965 } 10966 } 10967 10968 #pragma omp taskloop 10969 for (int i = 0; i < 10; ++i) { 10970 #pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}} 10971 { 10972 bar(); 10973 } 10974 } 10975 #pragma omp taskloop 10976 for (int i = 0; i < 10; ++i) { 10977 #pragma omp critical 10978 { 10979 bar(); 10980 } 10981 } 10982 #pragma omp taskloop 10983 for (int i = 0; i < 10; ++i) { 10984 #pragma omp parallel 10985 { 10986 #pragma omp single // OK 10987 { 10988 bar(); 10989 } 10990 #pragma omp for // OK 10991 for (int i = 0; i < 10; ++i) 10992 ; 10993 #pragma omp sections // OK 10994 { 10995 bar(); 10996 } 10997 } 10998 } 10999 #pragma omp taskloop 11000 for (int i = 0; i < 10; ++i) { 11001 #pragma omp parallel for 11002 for (int i = 0; i < 10; ++i) 11003 ; 11004 } 11005 #pragma omp taskloop 11006 for (int i = 0; i < 10; ++i) { 11007 #pragma omp parallel for simd 11008 for (int i = 0; i < 10; ++i) 11009 ; 11010 } 11011 #pragma omp taskloop 11012 for (int i = 0; i < 10; ++i) { 11013 #pragma omp parallel sections 11014 { 11015 bar(); 11016 } 11017 } 11018 #pragma omp taskloop 11019 for (int i = 0; i < 10; ++i) { 11020 #pragma omp task 11021 { 11022 bar(); 11023 } 11024 } 11025 #pragma omp taskloop 11026 for (int i = 0; i < 10; ++i) { 11027 #pragma omp taskyield 11028 bar(); 11029 } 11030 #pragma omp taskloop 11031 for (int i = 0; i < 10; ++i) { 11032 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}} 11033 bar(); 11034 } 11035 #pragma omp taskloop 11036 for (int i = 0; i < 10; ++i) { 11037 #pragma omp taskwait 11038 bar(); 11039 } 11040 #pragma omp taskloop 11041 for (int i = 0; i < 10; ++i) { 11042 #pragma omp flush 11043 bar(); 11044 } 11045 #pragma omp taskloop 11046 for (int i = 0; i < 10; ++i) { 11047 #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?}} 11048 bar(); 11049 } 11050 #pragma omp taskloop 11051 for (int i = 0; i < 10; ++i) { 11052 #pragma omp atomic 11053 ++a; 11054 } 11055 #pragma omp taskloop 11056 for (int i = 0; i < 10; ++i) { 11057 #pragma omp target 11058 ++a; 11059 } 11060 #pragma omp taskloop 11061 for (int i = 0; i < 10; ++i) { 11062 #pragma omp target parallel 11063 ++a; 11064 } 11065 #pragma omp taskloop 11066 for (int i = 0; i < 10; ++i) { 11067 #pragma omp target parallel for 11068 for (int i = 0; i < 10; ++i) 11069 ; 11070 } 11071 #pragma omp taskloop 11072 for (int i = 0; i < 10; ++i) { 11073 #pragma omp target enter data map(to: a) 11074 ++a; 11075 } 11076 #pragma omp taskloop 11077 for (int i = 0; i < 10; ++i) { 11078 #pragma omp target exit data map(from: a) 11079 ++a; 11080 } 11081 #pragma omp taskloop 11082 for (int i = 0; i < 10; ++i) { 11083 #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?}} 11084 ++a; 11085 } 11086 #pragma omp taskloop 11087 for (int i = 0; i < 10; ++i) { 11088 #pragma omp taskloop 11089 for (int i = 0; i < 10; ++i) 11090 ++a; 11091 } 11092 #pragma omp taskloop 11093 for (int i = 0; i < 10; ++i) { 11094 #pragma omp target update to(a) 11095 ++a; 11096 } 11097 #pragma omp taskloop 11098 for (int i = 0; i < 10; ++i) { 11099 #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?}} 11100 for (int i = 0; i < 10; ++i) 11101 ; 11102 } 11103 #pragma omp taskloop 11104 for (int i = 0; i < 10; ++i) { 11105 #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?}} 11106 for (int i = 0; i < 10; ++i) 11107 ; 11108 } 11109 #pragma omp taskloop 11110 for (int i = 0; i < 10; ++i) { 11111 #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?}} 11112 for (int i = 0; i < 10; ++i) 11113 ; 11114 } 11115 #pragma omp taskloop 11116 for (int i = 0; i < 10; ++i) { 11117 #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?}} 11118 for (int i = 0; i < 10; ++i) 11119 ; 11120 } 11121 #pragma omp taskloop 11122 for (int i = 0; i < 10; ++i) { 11123 #pragma omp target simd // OK 11124 for (int i = 0; i < 10; ++i) 11125 ; 11126 } 11127 #pragma omp taskloop 11128 for (int i = 0; i < 10; ++i) { 11129 #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?}} 11130 for (int i = 0; i < 10; ++i) 11131 ; 11132 } 11133 #pragma omp taskloop 11134 for (int i = 0; i < 10; ++i) { 11135 #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?}} 11136 for (int i = 0; i < 10; ++i) 11137 ; 11138 } 11139 #pragma omp taskloop 11140 for (int i = 0; i < 10; ++i) { 11141 #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?}} 11142 for (int i = 0; i < 10; ++i) 11143 ; 11144 } 11145 #pragma omp taskloop 11146 for (int i = 0; i < 10; ++i) { 11147 #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?}} 11148 for (int i = 0; i < 10; ++i) 11149 ; 11150 } 11151 11152 // DISTRIBUTE DIRECTIVE 11153 #pragma omp target 11154 #pragma omp teams 11155 #pragma omp distribute 11156 for (int i = 0; i < 10; ++i) { 11157 #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?}} 11158 for (int i = 0; i < 10; ++i) 11159 ; 11160 } 11161 #pragma omp target 11162 #pragma omp teams 11163 #pragma omp distribute 11164 for (int i = 0; i < 10; ++i) { 11165 #pragma omp for 11166 for (int i = 0; i < 10; ++i) 11167 ; 11168 } 11169 #pragma omp target 11170 #pragma omp teams 11171 #pragma omp distribute 11172 for (int i = 0; i < 10; ++i) { 11173 #pragma omp simd 11174 for (int i = 0; i < 10; ++i) 11175 ; 11176 } 11177 #pragma omp target 11178 #pragma omp teams 11179 #pragma omp distribute 11180 for (int i = 0; i < 10; ++i) { 11181 #pragma omp for simd 11182 for (int i = 0; i < 10; ++i) 11183 ; 11184 } 11185 #pragma omp target 11186 #pragma omp teams 11187 #pragma omp distribute 11188 for (int i = 0; i < 10; ++i) { 11189 #pragma omp parallel 11190 for (int i = 0; i < 10; ++i) 11191 ; 11192 } 11193 #pragma omp target 11194 #pragma omp teams 11195 #pragma omp distribute 11196 for (int i = 0; i < 10; ++i) { 11197 #pragma omp sections 11198 { 11199 bar(); 11200 } 11201 } 11202 #pragma omp target 11203 #pragma omp teams 11204 #pragma omp distribute 11205 for (int i = 0; i < 10; ++i) { 11206 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}} 11207 { 11208 bar(); 11209 } 11210 } 11211 #pragma omp target 11212 #pragma omp teams 11213 #pragma omp distribute 11214 for (int i = 0; i < 10; ++i) { 11215 #pragma omp single 11216 { 11217 bar(); 11218 } 11219 } 11220 #pragma omp target 11221 #pragma omp teams 11222 #pragma omp distribute 11223 for (int i = 0; i < 10; ++i) { 11224 #pragma omp master 11225 { 11226 bar(); 11227 } 11228 } 11229 #pragma omp target 11230 #pragma omp teams 11231 #pragma omp distribute 11232 for (int i = 0; i < 10; ++i) { 11233 #pragma omp critical 11234 { 11235 bar(); 11236 } 11237 } 11238 #pragma omp target 11239 #pragma omp teams 11240 #pragma omp distribute 11241 for (int i = 0; i < 10; ++i) { 11242 #pragma omp parallel 11243 { 11244 #pragma omp single 11245 { 11246 bar(); 11247 } 11248 } 11249 } 11250 #pragma omp target 11251 #pragma omp teams 11252 #pragma omp distribute 11253 for (int i = 0; i < 10; ++i) { 11254 #pragma omp parallel for 11255 for (int i = 0; i < 10; ++i) 11256 ; 11257 } 11258 #pragma omp target 11259 #pragma omp teams 11260 #pragma omp distribute 11261 for (int i = 0; i < 10; ++i) { 11262 #pragma omp parallel for simd 11263 for (int i = 0; i < 10; ++i) 11264 ; 11265 } 11266 #pragma omp target 11267 #pragma omp teams 11268 #pragma omp distribute 11269 for (int i = 0; i < 10; ++i) { 11270 #pragma omp parallel sections 11271 { 11272 bar(); 11273 } 11274 } 11275 #pragma omp target 11276 #pragma omp teams 11277 #pragma omp distribute 11278 for (int i = 0; i < 10; ++i) { 11279 #pragma omp task 11280 { 11281 bar(); 11282 } 11283 } 11284 #pragma omp target 11285 #pragma omp teams 11286 #pragma omp distribute 11287 for (int i = 0; i < 10; ++i) { 11288 #pragma omp taskyield 11289 bar(); 11290 } 11291 #pragma omp target 11292 #pragma omp teams 11293 #pragma omp distribute 11294 for (int i = 0; i < 10; ++i) { 11295 #pragma omp barrier 11296 bar(); 11297 } 11298 #pragma omp target 11299 #pragma omp teams 11300 #pragma omp distribute 11301 for (int i = 0; i < 10; ++i) { 11302 #pragma omp taskwait 11303 bar(); 11304 } 11305 #pragma omp target 11306 #pragma omp teams 11307 #pragma omp distribute 11308 for (int i = 0; i < 10; ++i) { 11309 #pragma omp flush 11310 bar(); 11311 } 11312 #pragma omp target 11313 #pragma omp teams 11314 #pragma omp distribute 11315 for (int i = 0; i < 10; ++i) { 11316 #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?}} 11317 bar(); 11318 } 11319 #pragma omp target 11320 #pragma omp teams 11321 #pragma omp distribute 11322 for (int i = 0; i < 10; ++i) { 11323 #pragma omp atomic 11324 ++a; 11325 } 11326 #pragma omp target 11327 #pragma omp teams 11328 #pragma omp distribute 11329 for (int i = 0; i < 10; ++i) { 11330 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 11331 ++a; 11332 } 11333 #pragma omp target 11334 #pragma omp teams 11335 #pragma omp distribute 11336 for (int i = 0; i < 10; ++i) { 11337 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 11338 ++a; 11339 } 11340 #pragma omp target 11341 #pragma omp teams 11342 #pragma omp distribute 11343 for (int i = 0; i < 10; ++i) { 11344 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11345 for (int i = 0; i < 10; ++i) 11346 ; 11347 } 11348 #pragma omp target 11349 #pragma omp teams 11350 #pragma omp distribute 11351 for (int i = 0; i < 10; ++i) { 11352 #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?}} 11353 ++a; 11354 } 11355 #pragma omp target 11356 #pragma omp teams 11357 #pragma omp distribute 11358 for (int i = 0; i < 10; ++i) { 11359 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 11360 ++a; 11361 } 11362 #pragma omp target 11363 #pragma omp teams 11364 #pragma omp distribute 11365 for (int i = 0; i < 10; ++i) { 11366 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 11367 ++a; 11368 } 11369 #pragma omp target 11370 #pragma omp teams 11371 #pragma omp distribute 11372 for (int i = 0; i < 10; ++i) { 11373 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 11374 ++a; 11375 } 11376 #pragma omp target 11377 #pragma omp teams 11378 #pragma omp distribute 11379 for (int i = 0; i < 10; ++i) { 11380 #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?}} 11381 for (int i = 0; i < 10; ++i) 11382 ++a; 11383 } 11384 #pragma omp target 11385 #pragma omp teams 11386 #pragma omp distribute 11387 for (int i = 0; i < 10; ++i) { 11388 #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?}} 11389 for (int i = 0; i < 10; ++i) 11390 ++a; 11391 } 11392 #pragma omp target 11393 #pragma omp teams 11394 #pragma omp distribute 11395 for (int i = 0; i < 10; ++i) { 11396 #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?}} 11397 for (int i = 0; i < 10; ++i) 11398 ++a; 11399 } 11400 #pragma omp target 11401 #pragma omp teams 11402 #pragma omp distribute 11403 for (int i = 0; i < 10; ++i) { 11404 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 11405 for (int i = 0; i < 10; ++i) 11406 ++a; 11407 } 11408 #pragma omp target 11409 #pragma omp teams 11410 #pragma omp distribute 11411 for (int i = 0; i < 10; ++i) { 11412 #pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}} 11413 for (int i = 0; i < 10; ++i) 11414 ++a; 11415 } 11416 #pragma omp target 11417 #pragma omp teams 11418 #pragma omp distribute 11419 for (int i = 0; i < 10; ++i) { 11420 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11421 for (int i = 0; i < 10; ++i) 11422 ++a; 11423 } 11424 11425 // DISTRIBUTE PARALLEL FOR DIRECTIVE 11426 #pragma omp target 11427 #pragma omp teams 11428 #pragma omp distribute parallel for 11429 for (int i = 0; i < 10; ++i) { 11430 #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?}} 11431 for (int i = 0; i < 10; ++i) 11432 ; 11433 } 11434 11435 #pragma omp target 11436 #pragma omp teams 11437 #pragma omp distribute parallel for 11438 for (int i = 0; i < 10; ++i) { 11439 #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?}} 11440 for (int i = 0; i < 10; ++i) 11441 ; 11442 } 11443 #pragma omp target 11444 #pragma omp teams 11445 #pragma omp distribute parallel for 11446 for (int i = 0; i < 10; ++i) { 11447 #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?}} 11448 for (int i = 0; i < 10; ++i) 11449 ; 11450 } 11451 #pragma omp target 11452 #pragma omp teams 11453 #pragma omp distribute parallel for 11454 for (int i = 0; i < 10; ++i) { 11455 #pragma omp simd 11456 for (int i = 0; i < 10; ++i) 11457 ; 11458 } 11459 #pragma omp target 11460 #pragma omp teams 11461 #pragma omp distribute parallel for 11462 for (int i = 0; i < 10; ++i) { 11463 #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?}} 11464 for (int i = 0; i < 10; ++i) 11465 ; 11466 } 11467 #pragma omp target 11468 #pragma omp teams 11469 #pragma omp distribute parallel for 11470 for (int i = 0; i < 10; ++i) { 11471 #pragma omp parallel 11472 for (int i = 0; i < 10; ++i) 11473 ; 11474 } 11475 #pragma omp target 11476 #pragma omp teams 11477 #pragma omp distribute parallel for 11478 for (int i = 0; i < 10; ++i) { 11479 #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?}} 11480 { 11481 bar(); 11482 } 11483 } 11484 #pragma omp target 11485 #pragma omp teams 11486 #pragma omp distribute parallel for 11487 for (int i = 0; i < 10; ++i) { 11488 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}} 11489 { 11490 bar(); 11491 } 11492 } 11493 #pragma omp target 11494 #pragma omp teams 11495 #pragma omp distribute parallel for 11496 for (int i = 0; i < 10; ++i) { 11497 #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?}} 11498 { 11499 bar(); 11500 } 11501 } 11502 #pragma omp target 11503 #pragma omp teams 11504 #pragma omp distribute parallel for 11505 for (int i = 0; i < 10; ++i) { 11506 #pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 11507 { 11508 bar(); 11509 } 11510 } 11511 #pragma omp target 11512 #pragma omp teams 11513 #pragma omp distribute parallel for 11514 for (int i = 0; i < 10; ++i) { 11515 #pragma omp critical 11516 { 11517 bar(); 11518 } 11519 } 11520 #pragma omp target 11521 #pragma omp teams 11522 #pragma omp distribute parallel for 11523 for (int i = 0; i < 10; ++i) { 11524 #pragma omp parallel 11525 { 11526 #pragma omp single 11527 { 11528 bar(); 11529 } 11530 } 11531 } 11532 #pragma omp target 11533 #pragma omp teams 11534 #pragma omp distribute parallel for 11535 for (int i = 0; i < 10; ++i) { 11536 #pragma omp parallel for 11537 for (int i = 0; i < 10; ++i) 11538 ; 11539 } 11540 #pragma omp target 11541 #pragma omp teams 11542 #pragma omp distribute parallel for 11543 for (int i = 0; i < 10; ++i) { 11544 #pragma omp parallel for simd 11545 for (int i = 0; i < 10; ++i) 11546 ; 11547 } 11548 #pragma omp target 11549 #pragma omp teams 11550 #pragma omp distribute parallel for 11551 for (int i = 0; i < 10; ++i) { 11552 #pragma omp parallel sections 11553 { 11554 bar(); 11555 } 11556 } 11557 #pragma omp target 11558 #pragma omp teams 11559 #pragma omp distribute parallel for 11560 for (int i = 0; i < 10; ++i) { 11561 #pragma omp task 11562 { 11563 bar(); 11564 } 11565 } 11566 #pragma omp target 11567 #pragma omp teams 11568 #pragma omp distribute parallel for 11569 for (int i = 0; i < 10; ++i) { 11570 #pragma omp taskyield 11571 bar(); 11572 } 11573 #pragma omp target 11574 #pragma omp teams 11575 #pragma omp distribute parallel for 11576 for (int i = 0; i < 10; ++i) { 11577 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}} 11578 bar(); 11579 } 11580 #pragma omp target 11581 #pragma omp teams 11582 #pragma omp distribute parallel for 11583 for (int i = 0; i < 10; ++i) { 11584 #pragma omp taskwait 11585 bar(); 11586 } 11587 #pragma omp target 11588 #pragma omp teams 11589 #pragma omp distribute parallel for 11590 for (int i = 0; i < 10; ++i) { 11591 #pragma omp flush 11592 bar(); 11593 } 11594 #pragma omp target 11595 #pragma omp teams 11596 #pragma omp distribute parallel for 11597 for (int i = 0; i < 10; ++i) { 11598 #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?}} 11599 bar(); 11600 } 11601 #pragma omp target 11602 #pragma omp teams 11603 #pragma omp distribute parallel for 11604 for (int i = 0; i < 10; ++i) { 11605 #pragma omp atomic 11606 ++a; 11607 } 11608 #pragma omp target 11609 #pragma omp teams 11610 #pragma omp distribute parallel for 11611 for (int i = 0; i < 10; ++i) { 11612 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 11613 ++a; 11614 } 11615 #pragma omp target 11616 #pragma omp teams 11617 #pragma omp distribute parallel for 11618 for (int i = 0; i < 10; ++i) { 11619 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 11620 ++a; 11621 } 11622 #pragma omp target 11623 #pragma omp teams 11624 #pragma omp distribute parallel for 11625 for (int i = 0; i < 10; ++i) { 11626 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 11627 for (int i = 0; i < 10; ++i) 11628 ; 11629 } 11630 #pragma omp target 11631 #pragma omp teams 11632 #pragma omp distribute parallel for 11633 for (int i = 0; i < 10; ++i) { 11634 #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?}} 11635 ++a; 11636 } 11637 #pragma omp target 11638 #pragma omp teams 11639 #pragma omp distribute parallel for 11640 for (int i = 0; i < 10; ++i) { 11641 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 11642 ++a; 11643 } 11644 #pragma omp target 11645 #pragma omp teams 11646 #pragma omp distribute parallel for 11647 for (int i = 0; i < 10; ++i) { 11648 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 11649 ++a; 11650 } 11651 #pragma omp target 11652 #pragma omp teams 11653 #pragma omp distribute parallel for 11654 for (int i = 0; i < 10; ++i) { 11655 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 11656 ++a; 11657 } 11658 #pragma omp target 11659 #pragma omp teams 11660 #pragma omp distribute parallel for 11661 for (int i = 0; i < 10; ++i) { 11662 #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?}} 11663 for (int i = 0; i < 10; ++i) 11664 ++a; 11665 } 11666 #pragma omp target 11667 #pragma omp teams 11668 #pragma omp distribute parallel for 11669 for (int i = 0; i < 10; ++i) { 11670 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 11671 for (int i = 0; i < 10; ++i) 11672 ++a; 11673 } 11674 #pragma omp target 11675 #pragma omp teams 11676 #pragma omp distribute parallel for 11677 for (int i = 0; i < 10; ++i) { 11678 #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?}} 11679 for (int i = 0; i < 10; ++i) 11680 ++a; 11681 } 11682 #pragma omp target 11683 #pragma omp teams 11684 #pragma omp distribute parallel for 11685 for (int i = 0; i < 10; ++i) { 11686 #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?}} 11687 for (int i = 0; i < 10; ++i) 11688 ++a; 11689 } 11690 #pragma omp target 11691 #pragma omp teams 11692 #pragma omp distribute parallel for 11693 for (int i = 0; i < 10; ++i) { 11694 #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?}} 11695 for (int i = 0; i < 10; ++i) 11696 ++a; 11697 } 11698 #pragma omp target 11699 #pragma omp teams 11700 #pragma omp distribute parallel for 11701 for (int i = 0; i < 10; ++i) { 11702 #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?}} 11703 for (int i = 0; i < 10; ++i) 11704 ++a; 11705 } 11706 11707 // DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 11708 #pragma omp target 11709 #pragma omp teams 11710 #pragma omp distribute parallel for simd 11711 for (int i = 0; i < 10; ++i) { 11712 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11713 for (int i = 0; i < 10; ++i) 11714 ; 11715 } 11716 #pragma omp target 11717 #pragma omp teams 11718 #pragma omp distribute parallel for simd 11719 for (int i = 0; i < 10; ++i) { 11720 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11721 for (int i = 0; i < 10; ++i) 11722 ; 11723 } 11724 #pragma omp target 11725 #pragma omp teams 11726 #pragma omp distribute parallel for simd 11727 for (int i = 0; i < 10; ++i) { 11728 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11729 for (int i = 0; i < 10; ++i) 11730 ; 11731 } 11732 #pragma omp target 11733 #pragma omp teams 11734 #pragma omp distribute parallel for simd 11735 for (int i = 0; i < 10; ++i) { 11736 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 11737 for (int i = 0; i < 10; ++i) 11738 ; 11739 } 11740 #pragma omp target 11741 #pragma omp teams 11742 #pragma omp distribute parallel for simd 11743 for (int i = 0; i < 10; ++i) { 11744 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11745 for (int i = 0; i < 10; ++i) 11746 ; 11747 } 11748 #pragma omp target 11749 #pragma omp teams 11750 #pragma omp distribute parallel for simd 11751 for (int i = 0; i < 10; ++i) { 11752 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11753 for (int i = 0; i < 10; ++i) 11754 ; 11755 } 11756 #pragma omp target 11757 #pragma omp teams 11758 #pragma omp distribute parallel for simd 11759 for (int i = 0; i < 10; ++i) { 11760 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11761 { 11762 bar(); 11763 } 11764 } 11765 #pragma omp target 11766 #pragma omp teams 11767 #pragma omp distribute parallel for simd 11768 for (int i = 0; i < 10; ++i) { 11769 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11770 { 11771 bar(); 11772 } 11773 } 11774 #pragma omp target 11775 #pragma omp teams 11776 #pragma omp distribute parallel for simd 11777 for (int i = 0; i < 10; ++i) { 11778 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11779 { 11780 bar(); 11781 } 11782 } 11783 #pragma omp target 11784 #pragma omp teams 11785 #pragma omp distribute parallel for simd 11786 for (int i = 0; i < 10; ++i) { 11787 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11788 { 11789 bar(); 11790 } 11791 } 11792 #pragma omp target 11793 #pragma omp teams 11794 #pragma omp distribute parallel for simd 11795 for (int i = 0; i < 10; ++i) { 11796 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11797 { 11798 bar(); 11799 } 11800 } 11801 #pragma omp target 11802 #pragma omp teams 11803 #pragma omp distribute parallel for simd 11804 for (int i = 0; i < 10; ++i) { 11805 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11806 { 11807 #pragma omp single 11808 { 11809 bar(); 11810 } 11811 } 11812 } 11813 #pragma omp target 11814 #pragma omp teams 11815 #pragma omp distribute parallel for simd 11816 for (int i = 0; i < 10; ++i) { 11817 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11818 for (int i = 0; i < 10; ++i) 11819 ; 11820 } 11821 #pragma omp target 11822 #pragma omp teams 11823 #pragma omp distribute parallel for simd 11824 for (int i = 0; i < 10; ++i) { 11825 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11826 for (int i = 0; i < 10; ++i) 11827 ; 11828 } 11829 #pragma omp target 11830 #pragma omp teams 11831 #pragma omp distribute parallel for simd 11832 for (int i = 0; i < 10; ++i) { 11833 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11834 { 11835 bar(); 11836 } 11837 } 11838 #pragma omp target 11839 #pragma omp teams 11840 #pragma omp distribute parallel for simd 11841 for (int i = 0; i < 10; ++i) { 11842 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11843 { 11844 bar(); 11845 } 11846 } 11847 #pragma omp target 11848 #pragma omp teams 11849 #pragma omp distribute parallel for simd 11850 for (int i = 0; i < 10; ++i) { 11851 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11852 bar(); 11853 } 11854 #pragma omp target 11855 #pragma omp teams 11856 #pragma omp distribute parallel for simd 11857 for (int i = 0; i < 10; ++i) { 11858 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11859 bar(); 11860 } 11861 #pragma omp target 11862 #pragma omp teams 11863 #pragma omp distribute parallel for simd 11864 for (int i = 0; i < 10; ++i) { 11865 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11866 bar(); 11867 } 11868 #pragma omp target 11869 #pragma omp teams 11870 #pragma omp distribute parallel for simd 11871 for (int i = 0; i < 10; ++i) { 11872 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11873 bar(); 11874 } 11875 #pragma omp target 11876 #pragma omp teams 11877 #pragma omp distribute parallel for simd 11878 for (int i = 0; i < 10; ++i) { 11879 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11880 bar(); 11881 } 11882 #pragma omp target 11883 #pragma omp teams 11884 #pragma omp distribute parallel for simd 11885 for (int i = 0; i < 10; ++i) { 11886 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11887 ++a; 11888 } 11889 #pragma omp target 11890 #pragma omp teams 11891 #pragma omp distribute parallel for simd 11892 for (int i = 0; i < 10; ++i) { 11893 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11894 ++a; 11895 } 11896 #pragma omp target 11897 #pragma omp teams 11898 #pragma omp distribute parallel for simd 11899 for (int i = 0; i < 10; ++i) { 11900 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11901 ++a; 11902 } 11903 #pragma omp target 11904 #pragma omp teams 11905 #pragma omp distribute parallel for simd 11906 for (int i = 0; i < 10; ++i) { 11907 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11908 ++a; 11909 } 11910 #pragma omp target 11911 #pragma omp teams 11912 #pragma omp distribute parallel for simd 11913 for (int i = 0; i < 10; ++i) { 11914 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11915 ++a; 11916 } 11917 #pragma omp target 11918 #pragma omp teams 11919 #pragma omp distribute parallel for simd 11920 for (int i = 0; i < 10; ++i) { 11921 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11922 ++a; 11923 } 11924 #pragma omp target 11925 #pragma omp teams 11926 #pragma omp distribute parallel for simd 11927 for (int i = 0; i < 10; ++i) { 11928 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11929 ++a; 11930 } 11931 #pragma omp target 11932 #pragma omp teams 11933 #pragma omp distribute parallel for simd 11934 for (int i = 0; i < 10; ++i) { 11935 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11936 for (int i = 0; i < 10; ++i) 11937 ; 11938 } 11939 #pragma omp target 11940 #pragma omp teams 11941 #pragma omp distribute parallel for simd 11942 for (int i = 0; i < 10; ++i) { 11943 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11944 for (int i = 0; i < 10; ++i) 11945 ; 11946 } 11947 #pragma omp target 11948 #pragma omp teams 11949 #pragma omp distribute parallel for simd 11950 for (int i = 0; i < 10; ++i) { 11951 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11952 for (int i = 0; i < 10; ++i) 11953 ; 11954 } 11955 #pragma omp target 11956 #pragma omp teams 11957 #pragma omp distribute parallel for simd 11958 for (int i = 0; i < 10; ++i) { 11959 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11960 for (int i = 0; i < 10; ++i) 11961 ; 11962 } 11963 #pragma omp target 11964 #pragma omp teams 11965 #pragma omp distribute parallel for simd 11966 for (int i = 0; i < 10; ++i) { 11967 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11968 for (int i = 0; i < 10; ++i) 11969 ; 11970 } 11971 #pragma omp target 11972 #pragma omp teams 11973 #pragma omp distribute parallel for simd 11974 for (int i = 0; i < 10; ++i) { 11975 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11976 for (int i = 0; i < 10; ++i) 11977 ; 11978 } 11979 11980 // DISTRIBUTE SIMD DIRECTIVE 11981 #pragma omp target 11982 #pragma omp teams 11983 #pragma omp distribute simd 11984 for (int i = 0; i < 10; ++i) { 11985 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11986 for (int i = 0; i < 10; ++i) 11987 ; 11988 } 11989 #pragma omp target 11990 #pragma omp teams 11991 #pragma omp distribute simd 11992 for (int i = 0; i < 10; ++i) { 11993 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 11994 for (int i = 0; i < 10; ++i) 11995 ; 11996 } 11997 #pragma omp target 11998 #pragma omp teams 11999 #pragma omp distribute simd 12000 for (int i = 0; i < 10; ++i) { 12001 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12002 for (int i = 0; i < 10; ++i) 12003 ; 12004 } 12005 #pragma omp target 12006 #pragma omp teams 12007 #pragma omp distribute simd 12008 for (int i = 0; i < 10; ++i) { 12009 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12010 for (int i = 0; i < 10; ++i) 12011 ; 12012 } 12013 #pragma omp target 12014 #pragma omp teams 12015 #pragma omp distribute simd 12016 for (int i = 0; i < 10; ++i) { 12017 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12018 for (int i = 0; i < 10; ++i) 12019 ; 12020 } 12021 #pragma omp target 12022 #pragma omp teams 12023 #pragma omp distribute simd 12024 for (int i = 0; i < 10; ++i) { 12025 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12026 for (int i = 0; i < 10; ++i) 12027 ; 12028 } 12029 #pragma omp target 12030 #pragma omp teams 12031 #pragma omp distribute simd 12032 for (int i = 0; i < 10; ++i) { 12033 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12034 { 12035 bar(); 12036 } 12037 } 12038 #pragma omp target 12039 #pragma omp teams 12040 #pragma omp distribute simd 12041 for (int i = 0; i < 10; ++i) { 12042 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12043 { 12044 bar(); 12045 } 12046 } 12047 #pragma omp target 12048 #pragma omp teams 12049 #pragma omp distribute simd 12050 for (int i = 0; i < 10; ++i) { 12051 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12052 { 12053 bar(); 12054 } 12055 } 12056 #pragma omp target 12057 #pragma omp teams 12058 #pragma omp distribute simd 12059 for (int i = 0; i < 10; ++i) { 12060 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12061 { 12062 bar(); 12063 } 12064 } 12065 #pragma omp target 12066 #pragma omp teams 12067 #pragma omp distribute simd 12068 for (int i = 0; i < 10; ++i) { 12069 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12070 { 12071 bar(); 12072 } 12073 } 12074 #pragma omp target 12075 #pragma omp teams 12076 #pragma omp distribute simd 12077 for (int i = 0; i < 10; ++i) { 12078 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12079 { 12080 #pragma omp single 12081 { 12082 bar(); 12083 } 12084 } 12085 } 12086 #pragma omp target 12087 #pragma omp teams 12088 #pragma omp distribute simd 12089 for (int i = 0; i < 10; ++i) { 12090 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12091 for (int i = 0; i < 10; ++i) 12092 ; 12093 } 12094 #pragma omp target 12095 #pragma omp teams 12096 #pragma omp distribute simd 12097 for (int i = 0; i < 10; ++i) { 12098 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12099 for (int i = 0; i < 10; ++i) 12100 ; 12101 } 12102 #pragma omp target 12103 #pragma omp teams 12104 #pragma omp distribute simd 12105 for (int i = 0; i < 10; ++i) { 12106 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12107 { 12108 bar(); 12109 } 12110 } 12111 #pragma omp target 12112 #pragma omp teams 12113 #pragma omp distribute simd 12114 for (int i = 0; i < 10; ++i) { 12115 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12116 { 12117 bar(); 12118 } 12119 } 12120 #pragma omp target 12121 #pragma omp teams 12122 #pragma omp distribute simd 12123 for (int i = 0; i < 10; ++i) { 12124 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12125 bar(); 12126 } 12127 #pragma omp target 12128 #pragma omp teams 12129 #pragma omp distribute simd 12130 for (int i = 0; i < 10; ++i) { 12131 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12132 bar(); 12133 } 12134 #pragma omp target 12135 #pragma omp teams 12136 #pragma omp distribute simd 12137 for (int i = 0; i < 10; ++i) { 12138 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12139 bar(); 12140 } 12141 #pragma omp target 12142 #pragma omp teams 12143 #pragma omp distribute simd 12144 for (int i = 0; i < 10; ++i) { 12145 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12146 bar(); 12147 } 12148 #pragma omp target 12149 #pragma omp teams 12150 #pragma omp distribute simd 12151 for (int i = 0; i < 10; ++i) { 12152 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12153 bar(); 12154 } 12155 #pragma omp target 12156 #pragma omp teams 12157 #pragma omp distribute simd 12158 for (int i = 0; i < 10; ++i) { 12159 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12160 ++a; 12161 } 12162 #pragma omp target 12163 #pragma omp teams 12164 #pragma omp distribute simd 12165 for (int i = 0; i < 10; ++i) { 12166 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12167 ++a; 12168 } 12169 #pragma omp target 12170 #pragma omp teams 12171 #pragma omp distribute simd 12172 for (int i = 0; i < 10; ++i) { 12173 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12174 ++a; 12175 } 12176 #pragma omp target 12177 #pragma omp teams 12178 #pragma omp distribute simd 12179 for (int i = 0; i < 10; ++i) { 12180 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12181 ++a; 12182 } 12183 #pragma omp target 12184 #pragma omp teams 12185 #pragma omp distribute simd 12186 for (int i = 0; i < 10; ++i) { 12187 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12188 ++a; 12189 } 12190 #pragma omp target 12191 #pragma omp teams 12192 #pragma omp distribute simd 12193 for (int i = 0; i < 10; ++i) { 12194 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12195 ++a; 12196 } 12197 #pragma omp target 12198 #pragma omp teams 12199 #pragma omp distribute simd 12200 for (int i = 0; i < 10; ++i) { 12201 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12202 ++a; 12203 } 12204 #pragma omp target 12205 #pragma omp teams 12206 #pragma omp distribute simd 12207 for (int i = 0; i < 10; ++i) { 12208 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12209 for (int i = 0; i < 10; ++i) 12210 ; 12211 } 12212 #pragma omp target 12213 #pragma omp teams 12214 #pragma omp distribute simd 12215 for (int i = 0; i < 10; ++i) { 12216 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12217 for (int i = 0; i < 10; ++i) 12218 ; 12219 } 12220 #pragma omp target 12221 #pragma omp teams 12222 #pragma omp distribute simd 12223 for (int i = 0; i < 10; ++i) { 12224 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12225 for (int i = 0; i < 10; ++i) 12226 ; 12227 } 12228 #pragma omp target 12229 #pragma omp teams 12230 #pragma omp distribute simd 12231 for (int i = 0; i < 10; ++i) { 12232 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12233 for (int i = 0; i < 10; ++i) 12234 ; 12235 } 12236 #pragma omp target 12237 #pragma omp teams 12238 #pragma omp distribute simd 12239 for (int i = 0; i < 10; ++i) { 12240 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12241 for (int i = 0; i < 10; ++i) 12242 ; 12243 } 12244 #pragma omp target 12245 #pragma omp teams 12246 #pragma omp distribute simd 12247 for (int i = 0; i < 10; ++i) { 12248 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12249 for (int i = 0; i < 10; ++i) 12250 ; 12251 } 12252 12253 // TARGET SIMD DIRECTIVE 12254 #pragma omp target simd 12255 for (int i = 0; i < 10; ++i) { 12256 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12257 for (int i = 0; i < 10; ++i) 12258 ; 12259 } 12260 #pragma omp target simd 12261 for (int i = 0; i < 10; ++i) { 12262 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12263 for (int i = 0; i < 10; ++i) 12264 ; 12265 } 12266 #pragma omp target simd 12267 for (int i = 0; i < 10; ++i) { 12268 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12269 for (int i = 0; i < 10; ++i) 12270 ; 12271 } 12272 #pragma omp target simd 12273 for (int i = 0; i < 10; ++i) { 12274 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12275 for (int i = 0; i < 10; ++i) 12276 ; 12277 } 12278 #pragma omp target simd 12279 for (int i = 0; i < 10; ++i) { 12280 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12281 for (int i = 0; i < 10; ++i) 12282 ; 12283 } 12284 #pragma omp target simd 12285 for (int i = 0; i < 10; ++i) { 12286 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12287 for (int i = 0; i < 10; ++i) 12288 ; 12289 } 12290 #pragma omp target simd 12291 for (int i = 0; i < 10; ++i) { 12292 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12293 { 12294 bar(); 12295 } 12296 } 12297 #pragma omp target simd 12298 for (int i = 0; i < 10; ++i) { 12299 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12300 { 12301 bar(); 12302 } 12303 } 12304 #pragma omp target simd 12305 for (int i = 0; i < 10; ++i) { 12306 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12307 { 12308 bar(); 12309 } 12310 } 12311 #pragma omp target simd 12312 for (int i = 0; i < 10; ++i) { 12313 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12314 { 12315 bar(); 12316 } 12317 } 12318 #pragma omp target simd 12319 for (int i = 0; i < 10; ++i) { 12320 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12321 { 12322 bar(); 12323 } 12324 } 12325 #pragma omp target simd 12326 for (int i = 0; i < 10; ++i) { 12327 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12328 { 12329 #pragma omp single 12330 { 12331 bar(); 12332 } 12333 } 12334 } 12335 #pragma omp target simd 12336 for (int i = 0; i < 10; ++i) { 12337 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12338 for (int i = 0; i < 10; ++i) 12339 ; 12340 } 12341 #pragma omp target simd 12342 for (int i = 0; i < 10; ++i) { 12343 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12344 for (int i = 0; i < 10; ++i) 12345 ; 12346 } 12347 #pragma omp target simd 12348 for (int i = 0; i < 10; ++i) { 12349 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12350 { 12351 bar(); 12352 } 12353 } 12354 #pragma omp target simd 12355 for (int i = 0; i < 10; ++i) { 12356 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12357 { 12358 bar(); 12359 } 12360 } 12361 #pragma omp target simd 12362 for (int i = 0; i < 10; ++i) { 12363 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12364 bar(); 12365 } 12366 #pragma omp target simd 12367 for (int i = 0; i < 10; ++i) { 12368 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12369 bar(); 12370 } 12371 #pragma omp target simd 12372 for (int i = 0; i < 10; ++i) { 12373 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12374 bar(); 12375 } 12376 #pragma omp target simd 12377 for (int i = 0; i < 10; ++i) { 12378 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12379 bar(); 12380 } 12381 #pragma omp target simd 12382 for (int i = 0; i < 10; ++i) { 12383 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12384 bar(); 12385 } 12386 #pragma omp target simd 12387 for (int i = 0; i < 10; ++i) { 12388 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12389 ++a; 12390 } 12391 #pragma omp target simd 12392 for (int i = 0; i < 10; ++i) { 12393 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12394 ++a; 12395 } 12396 #pragma omp target simd 12397 for (int i = 0; i < 10; ++i) { 12398 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12399 ++a; 12400 } 12401 #pragma omp target simd 12402 for (int i = 0; i < 10; ++i) { 12403 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12404 ++a; 12405 } 12406 #pragma omp target simd 12407 for (int i = 0; i < 10; ++i) { 12408 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12409 ++a; 12410 } 12411 #pragma omp target simd 12412 for (int i = 0; i < 10; ++i) { 12413 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12414 ++a; 12415 } 12416 #pragma omp target simd 12417 for (int i = 0; i < 10; ++i) { 12418 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12419 ++a; 12420 } 12421 #pragma omp target simd 12422 for (int i = 0; i < 10; ++i) { 12423 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12424 for (int i = 0; i < 10; ++i) 12425 ; 12426 } 12427 #pragma omp target simd 12428 for (int i = 0; i < 10; ++i) { 12429 #pragma omp target 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 simd 12434 for (int i = 0; i < 10; ++i) { 12435 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12436 for (int i = 0; i < 10; ++i) 12437 ; 12438 } 12439 #pragma omp target simd 12440 for (int i = 0; i < 10; ++i) { 12441 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12442 for (int i = 0; i < 10; ++i) 12443 ; 12444 } 12445 #pragma omp target simd 12446 for (int i = 0; i < 10; ++i) { 12447 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12448 for (int i = 0; i < 10; ++i) 12449 ; 12450 } 12451 #pragma omp target simd 12452 for (int i = 0; i < 10; ++i) { 12453 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12454 for (int i = 0; i < 10; ++i) 12455 ; 12456 } 12457 12458 // TEAMS DISTRIBUTE DIRECTIVE 12459 #pragma omp teams distribute // expected-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}} 12460 for (int i = 0; i < 10; ++i) 12461 ; 12462 #pragma omp target 12463 #pragma omp teams distribute 12464 for (int i = 0; i < 10; ++i) { 12465 #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?}} 12466 for (int i = 0; i < 10; ++i) 12467 ; 12468 } 12469 #pragma omp target 12470 #pragma omp teams distribute 12471 for (int i = 0; i < 10; ++i) { 12472 #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?}} 12473 for (int i = 0; i < 10; ++i) 12474 ; 12475 } 12476 #pragma omp target 12477 #pragma omp teams distribute 12478 for (int i = 0; i < 10; ++i) { 12479 #pragma omp for // OK 12480 for (int i = 0; i < 10; ++i) 12481 ; 12482 } 12483 #pragma omp target 12484 #pragma omp teams distribute 12485 for (int i = 0; i < 10; ++i) { 12486 #pragma omp simd // OK 12487 for (int i = 0; i < 10; ++i) 12488 ; 12489 } 12490 #pragma omp target 12491 #pragma omp teams distribute 12492 for (int i = 0; i < 10; ++i) { 12493 #pragma omp for simd // OK 12494 for (int i = 0; i < 10; ++i) 12495 ; 12496 } 12497 #pragma omp target 12498 #pragma omp teams distribute 12499 for (int i = 0; i < 10; ++i) { 12500 #pragma omp parallel // OK 12501 for (int i = 0; i < 10; ++i) 12502 ; 12503 } 12504 #pragma omp target 12505 #pragma omp teams distribute 12506 for (int i = 0; i < 10; ++i) { 12507 #pragma omp sections // OK 12508 { 12509 bar(); 12510 } 12511 } 12512 #pragma omp target 12513 #pragma omp teams distribute 12514 for (int i = 0; i < 10; ++i) { 12515 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}} 12516 { 12517 bar(); 12518 } 12519 } 12520 #pragma omp target 12521 #pragma omp teams distribute 12522 for (int i = 0; i < 10; ++i) { 12523 #pragma omp single // OK 12524 { 12525 bar(); 12526 } 12527 } 12528 #pragma omp target 12529 #pragma omp teams distribute 12530 for (int i = 0; i < 10; ++i) { 12531 #pragma omp master // OK 12532 { 12533 bar(); 12534 } 12535 } 12536 #pragma omp target 12537 #pragma omp teams distribute 12538 for (int i = 0; i < 10; ++i) { 12539 #pragma omp critical // OK 12540 { 12541 bar(); 12542 } 12543 } 12544 #pragma omp target 12545 #pragma omp teams distribute 12546 for (int i = 0; i < 10; ++i) { 12547 #pragma omp parallel // OK 12548 { 12549 #pragma omp single 12550 { 12551 bar(); 12552 } 12553 } 12554 } 12555 #pragma omp target 12556 #pragma omp teams distribute 12557 for (int i = 0; i < 10; ++i) { 12558 #pragma omp parallel for // OK 12559 for (int i = 0; i < 10; ++i) 12560 ; 12561 } 12562 #pragma omp target 12563 #pragma omp teams distribute 12564 for (int i = 0; i < 10; ++i) { 12565 #pragma omp parallel for simd // OK 12566 for (int i = 0; i < 10; ++i) 12567 ; 12568 } 12569 #pragma omp target 12570 #pragma omp teams distribute 12571 for (int i = 0; i < 10; ++i) { 12572 #pragma omp parallel sections // OK 12573 { 12574 bar(); 12575 } 12576 } 12577 #pragma omp target 12578 #pragma omp teams distribute 12579 for (int i = 0; i < 10; ++i) { 12580 #pragma omp task // OK 12581 { 12582 bar(); 12583 } 12584 } 12585 #pragma omp target 12586 #pragma omp teams distribute 12587 for (int i = 0; i < 10; ++i) { 12588 #pragma omp taskyield // OK 12589 bar(); 12590 } 12591 #pragma omp target 12592 #pragma omp teams distribute 12593 for (int i = 0; i < 10; ++i) { 12594 #pragma omp barrier // OK 12595 bar(); 12596 } 12597 #pragma omp target 12598 #pragma omp teams distribute 12599 for (int i = 0; i < 10; ++i) { 12600 #pragma omp taskwait // OK 12601 bar(); 12602 } 12603 #pragma omp target 12604 #pragma omp teams distribute 12605 for (int i = 0; i < 10; ++i) { 12606 #pragma omp flush // OK 12607 bar(); 12608 } 12609 #pragma omp target 12610 #pragma omp teams distribute 12611 for (int i = 0; i < 10; ++i) { 12612 #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?}} 12613 bar(); 12614 } 12615 #pragma omp target 12616 #pragma omp teams distribute 12617 for (int i = 0; i < 10; ++i) { 12618 #pragma omp atomic // OK 12619 ++a; 12620 } 12621 #pragma omp target 12622 #pragma omp teams distribute 12623 for (int i = 0; i < 10; ++i) { 12624 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 12625 ++a; 12626 } 12627 #pragma omp target 12628 #pragma omp teams distribute 12629 for (int i = 0; i < 10; ++i) { 12630 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 12631 ++a; 12632 } 12633 #pragma omp target 12634 #pragma omp teams distribute 12635 for (int i = 0; i < 10; ++i) { 12636 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 12637 for (int i = 0; i < 10; ++i) 12638 ; 12639 } 12640 #pragma omp target 12641 #pragma omp teams distribute 12642 for (int i = 0; i < 10; ++i) { 12643 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 12644 ++a; 12645 } 12646 #pragma omp target 12647 #pragma omp teams distribute 12648 for (int i = 0; i < 10; ++i) { 12649 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 12650 ++a; 12651 } 12652 #pragma omp target 12653 #pragma omp teams distribute 12654 for (int i = 0; i < 10; ++i) { 12655 #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?}} 12656 ++a; 12657 } 12658 #pragma omp target 12659 #pragma omp teams distribute 12660 for (int i = 0; i < 10; ++i) { 12661 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 12662 ++a; 12663 } 12664 #pragma omp target 12665 #pragma omp teams distribute 12666 for (int i = 0; i < 10; ++i) { 12667 #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?}} 12668 for (int i = 0; i < 10; ++i) 12669 ++a; 12670 } 12671 #pragma omp target 12672 #pragma omp teams distribute 12673 for (int i = 0; i < 10; ++i) { 12674 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 12675 for (int i = 0; i < 10; ++i) 12676 ++a; 12677 } 12678 #pragma omp target 12679 #pragma omp teams distribute 12680 for (int i = 0; i < 10; ++i) { 12681 #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?}} 12682 for (int i = 0; i < 10; ++i) 12683 ++a; 12684 } 12685 #pragma omp target 12686 #pragma omp teams distribute 12687 for (int i = 0; i < 10; ++i) { 12688 #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?}} 12689 for (int i = 0; i < 10; ++i) 12690 ++a; 12691 } 12692 #pragma omp target 12693 #pragma omp teams distribute 12694 for (int i = 0; i < 10; ++i) { 12695 #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?}} 12696 for (int i = 0; i < 10; ++i) 12697 ++a; 12698 } 12699 #pragma omp target 12700 #pragma omp teams distribute 12701 for (int i = 0; i < 10; ++i) { 12702 #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?}} 12703 for (int i = 0; i < 10; ++i) 12704 ++a; 12705 } 12706 12707 // TEAMS DISTRIBUTE SIMD DIRECTIVE 12708 #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?}} 12709 for (int i = 0; i < 10; ++i) 12710 ; 12711 #pragma omp target 12712 #pragma omp teams distribute simd 12713 for (int i = 0; i < 10; ++i) { 12714 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12715 for (int i = 0; i < 10; ++i) 12716 ; 12717 } 12718 #pragma omp target 12719 #pragma omp teams distribute simd 12720 for (int i = 0; i < 10; ++i) { 12721 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12722 for (int i = 0; i < 10; ++i) 12723 ; 12724 } 12725 #pragma omp target 12726 #pragma omp teams distribute simd 12727 for (int i = 0; i < 10; ++i) { 12728 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12729 for (int i = 0; i < 10; ++i) 12730 ; 12731 } 12732 #pragma omp target 12733 #pragma omp teams distribute simd 12734 for (int i = 0; i < 10; ++i) { 12735 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12736 for (int i = 0; i < 10; ++i) 12737 ; 12738 } 12739 #pragma omp target 12740 #pragma omp teams distribute simd 12741 for (int i = 0; i < 10; ++i) { 12742 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12743 for (int i = 0; i < 10; ++i) 12744 ; 12745 } 12746 #pragma omp target 12747 #pragma omp teams distribute simd 12748 for (int i = 0; i < 10; ++i) { 12749 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12750 for (int i = 0; i < 10; ++i) 12751 ; 12752 } 12753 #pragma omp target 12754 #pragma omp teams distribute simd 12755 for (int i = 0; i < 10; ++i) { 12756 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12757 { 12758 bar(); 12759 } 12760 } 12761 #pragma omp target 12762 #pragma omp teams distribute simd 12763 for (int i = 0; i < 10; ++i) { 12764 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12765 { 12766 bar(); 12767 } 12768 } 12769 #pragma omp target 12770 #pragma omp teams distribute simd 12771 for (int i = 0; i < 10; ++i) { 12772 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12773 { 12774 bar(); 12775 } 12776 } 12777 #pragma omp target 12778 #pragma omp teams distribute simd 12779 for (int i = 0; i < 10; ++i) { 12780 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12781 { 12782 bar(); 12783 } 12784 } 12785 #pragma omp target 12786 #pragma omp teams distribute simd 12787 for (int i = 0; i < 10; ++i) { 12788 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12789 { 12790 bar(); 12791 } 12792 } 12793 #pragma omp target 12794 #pragma omp teams distribute simd 12795 for (int i = 0; i < 10; ++i) { 12796 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12797 { 12798 #pragma omp single 12799 { 12800 bar(); 12801 } 12802 } 12803 } 12804 #pragma omp target 12805 #pragma omp teams distribute simd 12806 for (int i = 0; i < 10; ++i) { 12807 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12808 for (int i = 0; i < 10; ++i) 12809 ; 12810 } 12811 #pragma omp target 12812 #pragma omp teams distribute simd 12813 for (int i = 0; i < 10; ++i) { 12814 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12815 for (int i = 0; i < 10; ++i) 12816 ; 12817 } 12818 #pragma omp target 12819 #pragma omp teams distribute simd 12820 for (int i = 0; i < 10; ++i) { 12821 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12822 { 12823 bar(); 12824 } 12825 } 12826 #pragma omp target 12827 #pragma omp teams distribute simd 12828 for (int i = 0; i < 10; ++i) { 12829 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12830 { 12831 bar(); 12832 } 12833 } 12834 #pragma omp target 12835 #pragma omp teams distribute simd 12836 for (int i = 0; i < 10; ++i) { 12837 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12838 bar(); 12839 } 12840 #pragma omp target 12841 #pragma omp teams distribute simd 12842 for (int i = 0; i < 10; ++i) { 12843 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12844 bar(); 12845 } 12846 #pragma omp target 12847 #pragma omp teams distribute 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 12853 #pragma omp teams distribute simd 12854 for (int i = 0; i < 10; ++i) { 12855 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12856 bar(); 12857 } 12858 #pragma omp target 12859 #pragma omp teams distribute simd 12860 for (int i = 0; i < 10; ++i) { 12861 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12862 bar(); 12863 } 12864 #pragma omp target 12865 #pragma omp teams distribute simd 12866 for (int i = 0; i < 10; ++i) { 12867 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12868 ++a; 12869 } 12870 #pragma omp target 12871 #pragma omp teams distribute simd 12872 for (int i = 0; i < 10; ++i) { 12873 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12874 ++a; 12875 } 12876 #pragma omp target 12877 #pragma omp teams distribute simd 12878 for (int i = 0; i < 10; ++i) { 12879 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12880 ++a; 12881 } 12882 #pragma omp target 12883 #pragma omp teams distribute simd 12884 for (int i = 0; i < 10; ++i) { 12885 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12886 for (int i = 0; i < 10; ++i) 12887 ; 12888 } 12889 #pragma omp target 12890 #pragma omp teams distribute simd 12891 for (int i = 0; i < 10; ++i) { 12892 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12893 ++a; 12894 } 12895 #pragma omp target 12896 #pragma omp teams distribute simd 12897 for (int i = 0; i < 10; ++i) { 12898 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12899 ++a; 12900 } 12901 #pragma omp target 12902 #pragma omp teams distribute simd 12903 for (int i = 0; i < 10; ++i) { 12904 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12905 ++a; 12906 } 12907 #pragma omp target 12908 #pragma omp teams distribute simd 12909 for (int i = 0; i < 10; ++i) { 12910 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12911 ++a; 12912 } 12913 #pragma omp target 12914 #pragma omp teams distribute simd 12915 for (int i = 0; i < 10; ++i) { 12916 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12917 for (int i = 0; i < 10; ++i) 12918 ++a; 12919 } 12920 #pragma omp target 12921 #pragma omp teams distribute simd 12922 for (int i = 0; i < 10; ++i) { 12923 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12924 for (int i = 0; i < 10; ++i) 12925 ++a; 12926 } 12927 #pragma omp target 12928 #pragma omp teams distribute simd 12929 for (int i = 0; i < 10; ++i) { 12930 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12931 for (int i = 0; i < 10; ++i) 12932 ++a; 12933 } 12934 #pragma omp target 12935 #pragma omp teams distribute simd 12936 for (int i = 0; i < 10; ++i) { 12937 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12938 for (int i = 0; i < 10; ++i) 12939 ++a; 12940 } 12941 #pragma omp target 12942 #pragma omp teams distribute simd 12943 for (int i = 0; i < 10; ++i) { 12944 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12945 for (int i = 0; i < 10; ++i) 12946 ++a; 12947 } 12948 #pragma omp target 12949 #pragma omp teams distribute simd 12950 for (int i = 0; i < 10; ++i) { 12951 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12952 for (int i = 0; i < 10; ++i) 12953 ++a; 12954 } 12955 12956 // TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE 12957 #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?}} 12958 for (int i = 0; i < 10; ++i) 12959 ; 12960 #pragma omp target 12961 #pragma omp teams distribute parallel for simd 12962 for (int i = 0; i < 10; ++i) { 12963 #pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12964 for (int i = 0; i < 10; ++i) 12965 ; 12966 } 12967 #pragma omp target 12968 #pragma omp teams distribute parallel for simd 12969 for (int i = 0; i < 10; ++i) { 12970 #pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12971 for (int i = 0; i < 10; ++i) 12972 ; 12973 } 12974 #pragma omp target 12975 #pragma omp teams distribute parallel for simd 12976 for (int i = 0; i < 10; ++i) { 12977 #pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12978 for (int i = 0; i < 10; ++i) 12979 ; 12980 } 12981 #pragma omp target 12982 #pragma omp teams distribute parallel for simd 12983 for (int i = 0; i < 10; ++i) { 12984 #pragma omp simd // expected-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}} 12985 for (int i = 0; i < 10; ++i) 12986 ; 12987 } 12988 #pragma omp target 12989 #pragma omp teams distribute parallel for simd 12990 for (int i = 0; i < 10; ++i) { 12991 #pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12992 for (int i = 0; i < 10; ++i) 12993 ; 12994 } 12995 #pragma omp target 12996 #pragma omp teams distribute parallel for simd 12997 for (int i = 0; i < 10; ++i) { 12998 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 12999 for (int i = 0; i < 10; ++i) 13000 ; 13001 } 13002 #pragma omp target 13003 #pragma omp teams distribute parallel for simd 13004 for (int i = 0; i < 10; ++i) { 13005 #pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13006 { 13007 bar(); 13008 } 13009 } 13010 #pragma omp target 13011 #pragma omp teams distribute parallel for simd 13012 for (int i = 0; i < 10; ++i) { 13013 #pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13014 { 13015 bar(); 13016 } 13017 } 13018 #pragma omp target 13019 #pragma omp teams distribute parallel for simd 13020 for (int i = 0; i < 10; ++i) { 13021 #pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13022 { 13023 bar(); 13024 } 13025 } 13026 #pragma omp target 13027 #pragma omp teams distribute parallel for simd 13028 for (int i = 0; i < 10; ++i) { 13029 #pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13030 { 13031 bar(); 13032 } 13033 } 13034 #pragma omp target 13035 #pragma omp teams distribute parallel for simd 13036 for (int i = 0; i < 10; ++i) { 13037 #pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13038 { 13039 bar(); 13040 } 13041 } 13042 #pragma omp target 13043 #pragma omp teams distribute parallel for simd 13044 for (int i = 0; i < 10; ++i) { 13045 #pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13046 { 13047 #pragma omp single 13048 { 13049 bar(); 13050 } 13051 } 13052 } 13053 #pragma omp target 13054 #pragma omp teams distribute parallel for simd 13055 for (int i = 0; i < 10; ++i) { 13056 #pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13057 for (int i = 0; i < 10; ++i) 13058 ; 13059 } 13060 #pragma omp target 13061 #pragma omp teams distribute parallel for simd 13062 for (int i = 0; i < 10; ++i) { 13063 #pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13064 for (int i = 0; i < 10; ++i) 13065 ; 13066 } 13067 #pragma omp target 13068 #pragma omp teams distribute parallel for simd 13069 for (int i = 0; i < 10; ++i) { 13070 #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13071 { 13072 bar(); 13073 } 13074 } 13075 #pragma omp target 13076 #pragma omp teams distribute parallel for simd 13077 for (int i = 0; i < 10; ++i) { 13078 #pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13079 { 13080 bar(); 13081 } 13082 } 13083 #pragma omp target 13084 #pragma omp teams distribute parallel for simd 13085 for (int i = 0; i < 10; ++i) { 13086 #pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13087 bar(); 13088 } 13089 #pragma omp target 13090 #pragma omp teams distribute parallel for simd 13091 for (int i = 0; i < 10; ++i) { 13092 #pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13093 bar(); 13094 } 13095 #pragma omp target 13096 #pragma omp teams distribute parallel for simd 13097 for (int i = 0; i < 10; ++i) { 13098 #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13099 bar(); 13100 } 13101 #pragma omp target 13102 #pragma omp teams distribute parallel for simd 13103 for (int i = 0; i < 10; ++i) { 13104 #pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13105 bar(); 13106 } 13107 #pragma omp target 13108 #pragma omp teams distribute parallel for simd 13109 for (int i = 0; i < 10; ++i) { 13110 #pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13111 bar(); 13112 } 13113 #pragma omp target 13114 #pragma omp teams distribute parallel for simd 13115 for (int i = 0; i < 10; ++i) { 13116 #pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13117 ++a; 13118 } 13119 #pragma omp target 13120 #pragma omp teams distribute parallel for simd 13121 for (int i = 0; i < 10; ++i) { 13122 #pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13123 ++a; 13124 } 13125 #pragma omp target 13126 #pragma omp teams distribute parallel for simd 13127 for (int i = 0; i < 10; ++i) { 13128 #pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13129 ++a; 13130 } 13131 #pragma omp target 13132 #pragma omp teams distribute parallel for simd 13133 for (int i = 0; i < 10; ++i) { 13134 #pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13135 for (int i = 0; i < 10; ++i) 13136 ; 13137 } 13138 #pragma omp target 13139 #pragma omp teams distribute parallel for simd 13140 for (int i = 0; i < 10; ++i) { 13141 #pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13142 ++a; 13143 } 13144 #pragma omp target 13145 #pragma omp teams distribute parallel for simd 13146 for (int i = 0; i < 10; ++i) { 13147 #pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13148 ++a; 13149 } 13150 #pragma omp target 13151 #pragma omp teams distribute parallel for simd 13152 for (int i = 0; i < 10; ++i) { 13153 #pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13154 ++a; 13155 } 13156 #pragma omp target 13157 #pragma omp teams distribute parallel for simd 13158 for (int i = 0; i < 10; ++i) { 13159 #pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13160 ++a; 13161 } 13162 #pragma omp target 13163 #pragma omp teams distribute parallel for simd 13164 for (int i = 0; i < 10; ++i) { 13165 #pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13166 for (int i = 0; i < 10; ++i) 13167 ++a; 13168 } 13169 #pragma omp target 13170 #pragma omp teams distribute parallel for simd 13171 for (int i = 0; i < 10; ++i) { 13172 #pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13173 for (int i = 0; i < 10; ++i) 13174 ++a; 13175 } 13176 #pragma omp target 13177 #pragma omp teams distribute parallel for simd 13178 for (int i = 0; i < 10; ++i) { 13179 #pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13180 for (int i = 0; i < 10; ++i) 13181 ++a; 13182 } 13183 #pragma omp target 13184 #pragma omp teams distribute parallel for simd 13185 for (int i = 0; i < 10; ++i) { 13186 #pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13187 for (int i = 0; i < 10; ++i) 13188 ++a; 13189 } 13190 #pragma omp target 13191 #pragma omp teams distribute parallel for simd 13192 for (int i = 0; i < 10; ++i) { 13193 #pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13194 for (int i = 0; i < 10; ++i) 13195 ++a; 13196 } 13197 #pragma omp target 13198 #pragma omp teams distribute parallel for simd 13199 for (int i = 0; i < 10; ++i) { 13200 #pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} 13201 for (int i = 0; i < 10; ++i) 13202 ++a; 13203 } 13204 13205 //-------------------- 13206 13207 // TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE 13208 #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?}} 13209 for (int i = 0; i < 10; ++i) 13210 ; 13211 #pragma omp target 13212 #pragma omp teams distribute parallel for 13213 for (int i = 0; i < 10; ++i) { 13214 #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?}} 13215 for (int i = 0; i < 10; ++i) 13216 ; 13217 } 13218 #pragma omp target 13219 #pragma omp teams distribute parallel for 13220 for (int i = 0; i < 10; ++i) { 13221 #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?}} 13222 for (int i = 0; i < 10; ++i) 13223 ; 13224 } 13225 #pragma omp target 13226 #pragma omp teams distribute parallel for 13227 for (int i = 0; i < 10; ++i) { 13228 #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?}} 13229 for (int i = 0; i < 10; ++i) 13230 ; 13231 } 13232 #pragma omp target 13233 #pragma omp teams distribute parallel for 13234 for (int i = 0; i < 10; ++i) { 13235 #pragma omp simd // OK 13236 for (int i = 0; i < 10; ++i) 13237 ; 13238 } 13239 #pragma omp target 13240 #pragma omp teams distribute parallel for 13241 for (int i = 0; i < 10; ++i) { 13242 #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?}} 13243 for (int i = 0; i < 10; ++i) 13244 ; 13245 } 13246 #pragma omp target 13247 #pragma omp teams distribute parallel for 13248 for (int i = 0; i < 10; ++i) { 13249 #pragma omp parallel // OK 13250 for (int i = 0; i < 10; ++i) 13251 ; 13252 } 13253 #pragma omp target 13254 #pragma omp teams distribute parallel for 13255 for (int i = 0; i < 10; ++i) { 13256 #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?}} 13257 { 13258 bar(); 13259 } 13260 } 13261 #pragma omp target 13262 #pragma omp teams distribute parallel for 13263 for (int i = 0; i < 10; ++i) { 13264 #pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}} 13265 { 13266 bar(); 13267 } 13268 } 13269 #pragma omp target 13270 #pragma omp teams distribute parallel for 13271 for (int i = 0; i < 10; ++i) { 13272 #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?}} 13273 { 13274 bar(); 13275 } 13276 } 13277 #pragma omp target 13278 #pragma omp teams distribute parallel for 13279 for (int i = 0; i < 10; ++i) { 13280 #pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 13281 { 13282 bar(); 13283 } 13284 } 13285 #pragma omp target 13286 #pragma omp teams distribute parallel for 13287 for (int i = 0; i < 10; ++i) { 13288 #pragma omp critical // OK 13289 { 13290 bar(); 13291 } 13292 } 13293 #pragma omp target 13294 #pragma omp teams distribute parallel for 13295 for (int i = 0; i < 10; ++i) { 13296 #pragma omp parallel // OK 13297 { 13298 #pragma omp single 13299 { 13300 bar(); 13301 } 13302 } 13303 } 13304 #pragma omp target 13305 #pragma omp teams distribute parallel for 13306 for (int i = 0; i < 10; ++i) { 13307 #pragma omp parallel for // OK 13308 for (int i = 0; i < 10; ++i) 13309 ; 13310 } 13311 #pragma omp target 13312 #pragma omp teams distribute parallel for 13313 for (int i = 0; i < 10; ++i) { 13314 #pragma omp parallel for simd // OK 13315 for (int i = 0; i < 10; ++i) 13316 ; 13317 } 13318 #pragma omp target 13319 #pragma omp teams distribute parallel for 13320 for (int i = 0; i < 10; ++i) { 13321 #pragma omp parallel sections // OK 13322 { 13323 bar(); 13324 } 13325 } 13326 #pragma omp target 13327 #pragma omp teams distribute parallel for 13328 for (int i = 0; i < 10; ++i) { 13329 #pragma omp task // OK 13330 { 13331 bar(); 13332 } 13333 } 13334 #pragma omp target 13335 #pragma omp teams distribute parallel for 13336 for (int i = 0; i < 10; ++i) { 13337 #pragma omp taskyield // OK 13338 bar(); 13339 } 13340 #pragma omp target 13341 #pragma omp teams distribute parallel for 13342 for (int i = 0; i < 10; ++i) { 13343 #pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}} 13344 bar(); 13345 } 13346 #pragma omp target 13347 #pragma omp teams distribute parallel for 13348 for (int i = 0; i < 10; ++i) { 13349 #pragma omp taskwait // OK 13350 bar(); 13351 } 13352 #pragma omp target 13353 #pragma omp teams distribute parallel for 13354 for (int i = 0; i < 10; ++i) { 13355 #pragma omp flush // OK 13356 bar(); 13357 } 13358 #pragma omp target 13359 #pragma omp teams distribute parallel for 13360 for (int i = 0; i < 10; ++i) { 13361 #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?}} 13362 bar(); 13363 } 13364 #pragma omp target 13365 #pragma omp teams distribute parallel for 13366 for (int i = 0; i < 10; ++i) { 13367 #pragma omp atomic // OK 13368 ++a; 13369 } 13370 #pragma omp target 13371 #pragma omp teams distribute parallel for 13372 for (int i = 0; i < 10; ++i) { 13373 #pragma omp target // expected-error {{region cannot be nested inside 'target' region}} 13374 ++a; 13375 } 13376 #pragma omp target 13377 #pragma omp teams distribute parallel for 13378 for (int i = 0; i < 10; ++i) { 13379 #pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}} 13380 ++a; 13381 } 13382 #pragma omp target 13383 #pragma omp teams distribute parallel for 13384 for (int i = 0; i < 10; ++i) { 13385 #pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}} 13386 for (int i = 0; i < 10; ++i) 13387 ; 13388 } 13389 #pragma omp target 13390 #pragma omp teams distribute parallel for 13391 for (int i = 0; i < 10; ++i) { 13392 #pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}} 13393 ++a; 13394 } 13395 #pragma omp target 13396 #pragma omp teams distribute parallel for 13397 for (int i = 0; i < 10; ++i) { 13398 #pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}} 13399 ++a; 13400 } 13401 #pragma omp target 13402 #pragma omp teams distribute parallel for 13403 for (int i = 0; i < 10; ++i) { 13404 #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?}} 13405 ++a; 13406 } 13407 #pragma omp target 13408 #pragma omp teams distribute parallel for 13409 for (int i = 0; i < 10; ++i) { 13410 #pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}} 13411 ++a; 13412 } 13413 #pragma omp target 13414 #pragma omp teams distribute parallel for 13415 for (int i = 0; i < 10; ++i) { 13416 #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?}} 13417 for (int i = 0; i < 10; ++i) 13418 ++a; 13419 } 13420 #pragma omp target 13421 #pragma omp teams distribute parallel for 13422 for (int i = 0; i < 10; ++i) { 13423 #pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}} 13424 for (int i = 0; i < 10; ++i) 13425 ++a; 13426 } 13427 #pragma omp target 13428 #pragma omp teams distribute parallel for 13429 for (int i = 0; i < 10; ++i) { 13430 #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?}} 13431 for (int i = 0; i < 10; ++i) 13432 ++a; 13433 } 13434 #pragma omp target 13435 #pragma omp teams distribute parallel for 13436 for (int i = 0; i < 10; ++i) { 13437 #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?}} 13438 for (int i = 0; i < 10; ++i) 13439 ++a; 13440 } 13441 #pragma omp target 13442 #pragma omp teams distribute parallel for 13443 for (int i = 0; i < 10; ++i) { 13444 #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?}} 13445 for (int i = 0; i < 10; ++i) 13446 ++a; 13447 } 13448 #pragma omp target 13449 #pragma omp teams distribute parallel for 13450 for (int i = 0; i < 10; ++i) { 13451 #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?}} 13452 for (int i = 0; i < 10; ++i) 13453 ++a; 13454 } 13455 13456 return foo<int>(); 13457 } 13458 13459