brintos

brintos / llvm-project-archived public Read only

0
0
Text · 602.0 KiB · 985cdc0 Raw
19570 lines · cpp
1void bar();2 3template <class T>4void foo() {5  T a = T();6// PARALLEL DIRECTIVE7#pragma omp parallel8#pragma omp for9  for (int i = 0; i < 10; ++i)10    ;11#pragma omp parallel12#pragma omp simd13  for (int i = 0; i < 10; ++i)14    ;15#pragma omp parallel16#pragma omp for simd17  for (int i = 0; i < 10; ++i)18    ;19#pragma omp parallel20#pragma omp sections21  {22    bar();23  }24#pragma omp parallel25#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}26  {27    bar();28  }29#pragma omp parallel30#pragma omp single31  bar();32 33#pragma omp parallel34#pragma omp master35  {36    bar();37  }38#pragma omp parallel39#pragma omp critical40  {41    bar();42  }43#pragma omp parallel44#pragma omp parallel for45  for (int i = 0; i < 10; ++i)46    ;47#pragma omp parallel48#pragma omp parallel for simd49  for (int i = 0; i < 10; ++i)50    ;51#pragma omp parallel52#pragma omp parallel sections53  {54    bar();55  }56#pragma omp parallel57#pragma omp parallel master58  {59    bar();60  }61#pragma omp parallel62#pragma omp parallel masked63  {64    bar();65  }66#pragma omp parallel67#pragma omp task68  {69    bar();70  }71#pragma omp parallel72  {73#pragma omp taskyield74    bar();75  }76#pragma omp parallel77  {78#pragma omp barrier79    bar();80  }81#pragma omp parallel82  {83#pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}84    bar();85  }86#pragma omp parallel87  {88#pragma omp taskwait89    bar();90  }91#pragma omp parallel92  {93#pragma omp flush94    bar();95  }96#pragma omp parallel97  {98#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?}}99    bar();100  }101#pragma omp parallel102  {103#pragma omp atomic104    ++a;105  }106#pragma omp parallel107  {108#pragma omp target109    ++a;110  }111#pragma omp parallel112  {113#pragma omp target parallel114    ++a;115  }116#pragma omp parallel117  {118#pragma omp target parallel for119  for (int i = 0; i < 10; ++i)120    ;121  }122#pragma omp parallel123  {124#pragma omp target enter data map(to: a)125    ++a;126  }127#pragma omp parallel128  {129#pragma omp target exit data map(from: a)130    ++a;131  }132#pragma omp parallel133  {134#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?}}135    ++a;136  }137#pragma omp parallel138  {139#pragma omp taskloop140  for (int i = 0; i < 10; ++i)141    ++a;142  }143#pragma omp parallel144  {145#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?}}146    for (int i = 0; i < 10; ++i)147      ;148  }149#pragma omp parallel150  {151#pragma omp target update to(a)152  }153#pragma omp parallel154  {155#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?}}156    for (int i = 0; i < 10; ++i)157      ;158  }159#pragma omp parallel160  {161#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?}}162    for (int i = 0; i < 10; ++i)163      ;164  }165#pragma omp parallel166  {167#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?}}168    for (int i = 0; i < 10; ++i)169      ;170  }171#pragma omp parallel172  {173#pragma omp target simd // OK174    for (int i = 0; i < 10; ++i)175      ;176  }177#pragma omp parallel178  {179#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?}}180    for (int i = 0; i < 10; ++i)181      ;182  }183#pragma omp parallel184  {185#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?}}186    for (int i = 0; i < 10; ++i)187      ;188  }189#pragma omp parallel190  {191#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?}}192    for (int i = 0; i < 10; ++i)193      ;194  }195#pragma omp parallel196  {197#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?}}198    for (int i = 0; i < 10; ++i)199      ;200  }201#pragma omp parallel202  {203#pragma omp target teams // OK204    ++a;205  }206#pragma omp parallel207  {208#pragma omp target teams distribute // OK209    for (int i = 0; i < 10; ++i)210      ;211  }212#pragma omp parallel213  {214#pragma omp target teams distribute parallel for // OK215    for (int i = 0; i < 10; ++i)216      ;217  }218#pragma omp parallel219  {220#pragma omp target teams distribute parallel for simd // OK221    for (int i = 0; i < 10; ++i)222      ;223  }224#pragma omp parallel225  {226#pragma omp target teams distribute simd // OK227    for (int i = 0; i < 10; ++i)228      ;229  }230 231// SIMD DIRECTIVE232#pragma omp simd233  for (int i = 0; i < 10; ++i) {234#pragma omp for // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{OpenMP constructs may not be nested inside a simd region except for ordered simd, simd, scan, or atomic directive}} omp51-error {{OpenMP constructs may not be nested inside a simd region except for ordered simd, simd, scan, or atomic directive}}235    for (int i = 0; i < 10; ++i)236      ;237  }238#pragma omp simd239  for (int i = 0; i < 10; ++i) {240#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}241    for (int i = 0; i < 10; ++i)242      ;243  }244#pragma omp simd245  for (int i = 0; i < 10; ++i) {246#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}247    for (int i = 0; i < 10; ++i)248      ;249  }250#pragma omp simd251  for (int i = 0; i < 10; ++i) {252#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}253    for (int i = 0; i < 10; ++i)254      ;255  }256#pragma omp simd257  for (int i = 0; i < 10; ++i) {258#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}259    {260      bar();261    }262  }263#pragma omp simd264  for (int i = 0; i < 10; ++i) {265#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}266    {267      bar();268    }269  }270#pragma omp simd271  for (int i = 0; i < 10; ++i) {272#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}273    {274      bar();275    }276  }277#pragma omp simd278  for (int i = 0; i < 10; ++i) {279#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}280    {281      bar();282    }283  }284#pragma omp simd285  for (int i = 0; i < 10; ++i) {286#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}287    {288      bar();289    }290  }291#pragma omp simd292  for (int i = 0; i < 10; ++i) {293#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}294    for (int i = 0; i < 10; ++i)295      ;296  }297#pragma omp simd298  for (int i = 0; i < 10; ++i) {299#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}300    for (int i = 0; i < 10; ++i)301      ;302  }303#pragma omp simd304  for (int i = 0; i < 10; ++i) {305#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}306    {307      bar();308    }309  }310#pragma omp simd311  for (int i = 0; i < 10; ++i) {312#pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}}313    {314      bar();315    }316  }317#pragma omp simd318  for (int i = 0; i < 10; ++i) {319#pragma omp parallel masked // expected-error {{OpenMP constructs may not be nested inside a simd region}}320    {321      bar();322    }323  }324#pragma omp simd325  for (int i = 0; i < 10; ++i) {326#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}327    {328      bar();329    }330  }331#pragma omp simd332  for (int i = 0; i < 10; ++i) {333#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}334    bar();335  }336#pragma omp simd337  for (int i = 0; i < 10; ++i) {338#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}339    bar();340  }341#pragma omp simd342  for (int i = 0; i < 10; ++i) {343#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}344    bar();345  }346#pragma omp simd347  for (int i = 0; i < 10; ++i) {348#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}349    bar();350  }351#pragma omp simd352  for (int i = 0; i < 10; ++i) {353#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}354    bar();355  }356#pragma omp simd357  for (int i = 0; i < 10; ++i) {358#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}359    bar();360  }361#pragma omp simd362  for (int i = 0; i < 10; ++i) {363#pragma omp ordered simd // OK364    bar();365  }366#pragma omp simd367  for (int i = 0; i < 10; ++i) {368#pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}}369    bar();370  }371#pragma omp simd372  for (int i = 0; i < 10; ++i) {373#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}374    ++a;375  }376#pragma omp simd377  for (int i = 0; i < 10; ++i) {378#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}379    ++a;380  }381#pragma omp simd382  for (int i = 0; i < 10; ++i) {383#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}384    ++a;385  }386#pragma omp simd387  for (int i = 0; i < 10; ++i) {388#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}389    for (int i = 0; i < 10; ++i)390      ;391  }392#pragma omp simd393  for (int i = 0; i < 10; ++i) {394#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}395    ++a;396  }397#pragma omp simd398  for (int i = 0; i < 10; ++i) {399#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}400    ++a;401  }402#pragma omp simd403  for (int i = 0; i < 10; ++i) {404#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}405    ++a;406  }407#pragma omp simd408  for (int i = 0; i < 10; ++i) {409#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}410  for (int i = 0; i < 10; ++i)411    ++a;412  }413#pragma omp simd414  for (int i = 0; i < 10; ++i) {415#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}416    for (int j = 0; j < 10; ++j)417      ;418  }419#pragma omp simd420  for (int i = 0; i < 10; ++i) {421#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}422  }423#pragma omp simd424  for (int i = 0; i < 10; ++i) {425#pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside a simd region}}426    for (int j = 0; j < 10; ++j)427      ;428  }429#pragma omp simd430  for (int i = 0; i < 10; ++i) {431#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}432    for (int j = 0; j < 10; ++j)433      ;434  }435#pragma omp simd436  for (int i = 0; i < 10; ++i) {437#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}438    for (int j = 0; j < 10; ++j)439      ;440  }441#pragma omp simd442  for (int i = 0; i < 10; ++i) {443#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}444    for (int j = 0; j < 10; ++j)445      ;446  }447#pragma omp simd448  for (int i = 0; i < 10; ++i) {449#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}450    for (int j = 0; j < 10; ++j)451      ;452  }453#pragma omp simd454  for (int i = 0; i < 10; ++i) {455#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}456    for (int j = 0; j < 10; ++j)457      ;458  }459#pragma omp simd460  for (int i = 0; i < 10; ++i) {461#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}462    for (int j = 0; j < 10; ++j)463      ;464  }465#pragma omp simd466  for (int i = 0; i < 10; ++i) {467#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}468    for (int j = 0; j < 10; ++j)469      ;470  }471#pragma omp simd472  for (int i = 0; i < 10; ++i) {473#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}474    ++a;475  }476#pragma omp simd477  for (int i = 0; i < 10; ++i) {478#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}479    for (int j = 0; j < 10; ++j)480      ;481  }482#pragma omp simd483  for (int i = 0; i < 10; ++i) {484#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}485    for (int j = 0; j < 10; ++j)486      ;487  }488#pragma omp simd489  for (int i = 0; i < 10; ++i) {490#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}491    for (int j = 0; j < 10; ++j)492      ;493  }494#pragma omp simd495  for (int i = 0; i < 10; ++i) {496#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}497    for (int j = 0; j < 10; ++j)498      ;499  }500 501// FOR DIRECTIVE502#pragma omp for503  for (int i = 0; i < 10; ++i) {504#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?}}505    for (int i = 0; i < 10; ++i)506      ;507  }508#pragma omp for509  for (int i = 0; i < 10; ++i) {510#pragma omp simd511    for (int i = 0; i < 10; ++i)512      ;513  }514#pragma omp for515  for (int i = 0; i < 10; ++i) {516#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?}}517    for (int i = 0; i < 10; ++i)518      ;519  }520#pragma omp for521  for (int i = 0; i < 10; ++i) {522#pragma omp parallel523    for (int i = 0; i < 10; ++i)524      ;525  }526#pragma omp for527  for (int i = 0; i < 10; ++i) {528#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?}}529    {530      bar();531    }532  }533#pragma omp for534  for (int i = 0; i < 10; ++i) {535#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}536    {537      bar();538    }539  }540#pragma omp for541  for (int i = 0; i < 10; ++i) {542#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?}}543    {544      bar();545    }546  }547 548#pragma omp for549  for (int i = 0; i < 10; ++i) {550#pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}551    {552      bar();553    }554  }555#pragma omp for556  for (int i = 0; i < 10; ++i) {557#pragma omp critical558    {559      bar();560    }561  }562#pragma omp for563  for (int i = 0; i < 10; ++i) {564#pragma omp parallel565    {566#pragma omp single // OK567      {568        bar();569      }570#pragma omp for // OK571      for (int i = 0; i < 10; ++i)572        ;573#pragma omp sections // OK574      {575        bar();576      }577    }578  }579#pragma omp for580  for (int i = 0; i < 10; ++i) {581#pragma omp parallel for582    for (int i = 0; i < 10; ++i)583      ;584  }585#pragma omp for586  for (int i = 0; i < 10; ++i) {587#pragma omp parallel for simd588    for (int i = 0; i < 10; ++i)589      ;590  }591#pragma omp for592  for (int i = 0; i < 10; ++i) {593#pragma omp parallel master594    {595      bar();596    }597  }598#pragma omp for599  for (int i = 0; i < 10; ++i) {600#pragma omp parallel masked601    {602      bar();603    }604  }605#pragma omp for606  for (int i = 0; i < 10; ++i) {607#pragma omp parallel sections608    {609      bar();610    }611  }612#pragma omp for613  for (int i = 0; i < 10; ++i) {614#pragma omp task615    {616      bar();617    }618  }619#pragma omp for620  for (int i = 0; i < 10; ++i) {621#pragma omp taskyield622    bar();623  }624#pragma omp for625  for (int i = 0; i < 10; ++i) {626#pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}627    bar();628  }629#pragma omp for630  for (int i = 0; i < 10; ++i) {631#pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}632    bar();633  }634#pragma omp for635  for (int i = 0; i < 10; ++i) {636#pragma omp taskwait637    bar();638  }639#pragma omp for640  for (int i = 0; i < 10; ++i) {641#pragma omp flush642    bar();643  }644#pragma omp for645  for (int i = 0; i < 10; ++i) {646#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?}}647    bar();648  }649#pragma omp for ordered650  for (int i = 0; i < 10; ++i) {651#pragma omp ordered // OK652    bar();653  }654#pragma omp for655  for (int i = 0; i < 10; ++i) {656#pragma omp atomic657    ++a;658  }659#pragma omp for660  for (int i = 0; i < 10; ++i) {661#pragma omp target662    ++a;663  }664#pragma omp for665  for (int i = 0; i < 10; ++i) {666#pragma omp target parallel667    ++a;668  }669#pragma omp for670  for (int i = 0; i < 10; ++i) {671#pragma omp target parallel for672    for (int i = 0; i < 10; ++i)673      ;674  }675#pragma omp for676  for (int i = 0; i < 10; ++i) {677#pragma omp target enter data map(to: a)678    ++a;679  }680#pragma omp for681  for (int i = 0; i < 10; ++i) {682#pragma omp target exit data map(from: a)683    ++a;684  }685#pragma omp for686  for (int i = 0; i < 10; ++i) {687#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?}}688    ++a;689  }690#pragma omp for691  for (int i = 0; i < 10; ++i) {692#pragma omp taskloop693  for (int i = 0; i < 10; ++i)694    ++a;695  }696#pragma omp for697  for (int i = 0; i < 10; ++i) {698#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?}}699    for (int j = 0; j < 10; ++j)700      ;701  }702#pragma omp for703  for (int i = 0; i < 10; ++i) {704#pragma omp target update to(a)705  }706#pragma omp for707  for (int i = 0; i < 10; ++i) {708#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?}}709    for (int j = 0; j < 10; ++j)710      ;711  }712#pragma omp for713  for (int i = 0; i < 10; ++i) {714#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?}}715    for (int j = 0; j < 10; ++j)716      ;717  }718#pragma omp for719  for (int i = 0; i < 10; ++i) {720#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?}}721    for (int j = 0; j < 10; ++j)722      ;723  }724#pragma omp for725  for (int i = 0; i < 10; ++i) {726#pragma omp target simd // OK727    for (int j = 0; j < 10; ++j)728      ;729  }730#pragma omp for731  for (int i = 0; i < 10; ++i) {732#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?}}733    for (int j = 0; j < 10; ++j)734      ;735  }736#pragma omp for737  for (int i = 0; i < 10; ++i) {738#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?}}739    for (int j = 0; j < 10; ++j)740      ;741  }742#pragma omp for743  for (int i = 0; i < 10; ++i) {744#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?}}745    for (int j = 0; j < 10; ++j)746      ;747  }748#pragma omp for749  for (int i = 0; i < 10; ++i) {750#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?}}751    for (int j = 0; j < 10; ++j)752      ;753  }754#pragma omp for755  for (int i = 0; i < 10; ++i) {756#pragma omp target teams // OK757    ++a;758  }759#pragma omp for760  for (int i = 0; i < 10; ++i) {761#pragma omp target teams distribute // OK762    for (int j = 0; j < 10; ++j)763      ;764  }765#pragma omp for766  for (int i = 0; i < 10; ++i) {767#pragma omp target teams distribute parallel for // OK768    for (int j = 0; j < 10; ++j)769      ;770  }771#pragma omp for772  for (int i = 0; i < 10; ++i) {773#pragma omp target teams distribute parallel for simd // OK774    for (int j = 0; j < 10; ++j)775      ;776  }777#pragma omp for778  for (int i = 0; i < 10; ++i) {779#pragma omp target teams distribute simd // OK780    for (int j = 0; j < 10; ++j)781      ;782  }783 784// FOR SIMD DIRECTIVE785#pragma omp for simd786  for (int i = 0; i < 10; ++i) {787#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}788    for (int i = 0; i < 10; ++i)789      ;790  }791#pragma omp for simd792  for (int i = 0; i < 10; ++i) {793#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}794    for (int i = 0; i < 10; ++i)795      ;796  }797#pragma omp for simd798  for (int i = 0; i < 10; ++i) {799#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}800    for (int i = 0; i < 10; ++i)801      ;802  }803#pragma omp for simd804  for (int i = 0; i < 10; ++i) {805#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}806    for (int i = 0; i < 10; ++i)807      ;808  }809#pragma omp for simd810  for (int i = 0; i < 10; ++i) {811#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}812    {813      bar();814    }815  }816#pragma omp for simd817  for (int i = 0; i < 10; ++i) {818#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}819    {820      bar();821    }822  }823#pragma omp for simd824  for (int i = 0; i < 10; ++i) {825#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}826    {827      bar();828    }829  }830#pragma omp for simd831  for (int i = 0; i < 10; ++i) {832#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}833    {834      bar();835    }836  }837#pragma omp for simd838  for (int i = 0; i < 10; ++i) {839#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}840    {841      bar();842    }843  }844#pragma omp for simd845  for (int i = 0; i < 10; ++i) {846#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}847    for (int i = 0; i < 10; ++i)848      ;849  }850#pragma omp for simd851  for (int i = 0; i < 10; ++i) {852#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}853    for (int i = 0; i < 10; ++i)854      ;855  }856#pragma omp for simd857  for (int i = 0; i < 10; ++i) {858#pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside a simd region}}859    {860      bar();861    }862  }863#pragma omp for simd864  for (int i = 0; i < 10; ++i) {865#pragma omp parallel masked // expected-error {{OpenMP constructs may not be nested inside a simd region}}866    {867      bar();868    }869  }870#pragma omp for simd871  for (int i = 0; i < 10; ++i) {872#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}873    {874      bar();875    }876  }877#pragma omp for simd878  for (int i = 0; i < 10; ++i) {879#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}880    {881      bar();882    }883  }884#pragma omp for simd885  for (int i = 0; i < 10; ++i) {886#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}887    bar();888  }889#pragma omp for simd890  for (int i = 0; i < 10; ++i) {891#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}892    bar();893  }894#pragma omp for simd895  for (int i = 0; i < 10; ++i) {896#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}897    bar();898  }899#pragma omp for simd900  for (int i = 0; i < 10; ++i) {901#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}902    bar();903  }904#pragma omp for simd905  for (int i = 0; i < 10; ++i) {906#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}907    bar();908  }909#pragma omp for simd910  for (int i = 0; i < 10; ++i) {911#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}912    bar();913  }914#pragma omp for simd915  for (int i = 0; i < 10; ++i) {916#pragma omp ordered simd // OK917    bar();918  }919#pragma omp for simd920  for (int i = 0; i < 10; ++i) {921#pragma omp ordered threads // expected-error {{OpenMP constructs may not be nested inside a simd region}}922    bar();923  }924#pragma omp for simd925  for (int i = 0; i < 10; ++i) {926#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}927    ++a;928  }929#pragma omp for simd930  for (int i = 0; i < 10; ++i) {931#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}932    ++a;933  }934#pragma omp for simd935  for (int i = 0; i < 10; ++i) {936#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}937    ++a;938  }939#pragma omp for simd940  for (int i = 0; i < 10; ++i) {941#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}942    for (int i = 0; i < 10; ++i)943      ;944  }945#pragma omp for simd946  for (int i = 0; i < 10; ++i) {947#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}948    ++a;949  }950#pragma omp for simd951  for (int i = 0; i < 10; ++i) {952#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}953    ++a;954  }955#pragma omp for simd956  for (int i = 0; i < 10; ++i) {957#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}958    ++a;959  }960#pragma omp for simd961  for (int i = 0; i < 10; ++i) {962#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}963  for (int i = 0; i < 10; ++i)964    ++a;965  }966#pragma omp for simd967  for (int i = 0; i < 10; ++i) {968#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}969    for (int j = 0; j < 10; ++j)970      ;971  }972#pragma omp for simd973  for (int i = 0; i < 10; ++i) {974#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}975    bar();976  }977#pragma omp for simd978  for (int i = 0; i < 10; ++i) {979#pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}980    for (int j = 0; j < 10; ++j)981      ;982  }983#pragma omp for simd984  for (int i = 0; i < 10; ++i) {985#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}986    for (int j = 0; j < 10; ++j)987      ;988  }989#pragma omp for simd990  for (int i = 0; i < 10; ++i) {991#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}992    for (int j = 0; j < 10; ++j)993      ;994  }995#pragma omp for simd996  for (int i = 0; i < 10; ++i) {997#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}998    for (int j = 0; j < 10; ++j)999      ;1000  }1001#pragma omp for simd1002  for (int i = 0; i < 10; ++i) {1003#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}1004    for (int j = 0; j < 10; ++j)1005      ;1006  }1007#pragma omp for simd1008  for (int i = 0; i < 10; ++i) {1009#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}1010    for (int j = 0; j < 10; ++j)1011      ;1012  }1013#pragma omp for simd1014  for (int i = 0; i < 10; ++i) {1015#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}1016    for (int j = 0; j < 10; ++j)1017      ;1018  }1019#pragma omp for simd1020  for (int i = 0; i < 10; ++i) {1021#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}1022    for (int j = 0; j < 10; ++j)1023      ;1024  }1025#pragma omp for simd1026  for (int i = 0; i < 10; ++i) {1027#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}1028    a++;1029  }1030#pragma omp for simd1031  for (int i = 0; i < 10; ++i) {1032#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}1033    for (int j = 0; j < 10; ++j)1034      ;1035  }1036#pragma omp for simd1037  for (int i = 0; i < 10; ++i) {1038#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}1039    for (int j = 0; j < 10; ++j)1040      ;1041  }1042#pragma omp for simd1043  for (int i = 0; i < 10; ++i) {1044#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}1045    for (int j = 0; j < 10; ++j)1046      ;1047  }1048#pragma omp for simd1049  for (int i = 0; i < 10; ++i) {1050#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}1051    for (int j = 0; j < 10; ++j)1052      ;1053  }1054 1055// SECTIONS DIRECTIVE1056#pragma omp sections1057  {1058#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?}}1059    for (int i = 0; i < 10; ++i)1060      ;1061  }1062#pragma omp sections1063  {1064#pragma omp simd1065    for (int i = 0; i < 10; ++i)1066      ;1067  }1068#pragma omp sections1069  {1070#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?}}1071    for (int i = 0; i < 10; ++i)1072      ;1073  }1074#pragma omp sections1075  {1076#pragma omp parallel1077    for (int i = 0; i < 10; ++i)1078      ;1079  }1080#pragma omp sections1081  {1082#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?}}1083    {1084      bar();1085    }1086  }1087#pragma omp sections1088  {1089#pragma omp section1090    {1091      bar();1092    }1093  }1094#pragma omp sections1095  {1096#pragma omp parallel1097    {1098#pragma omp single // OK1099      {1100        bar();1101      }1102#pragma omp for // OK1103      for (int i = 0; i < 10; ++i)1104        ;1105#pragma omp sections // OK1106      {1107        bar();1108      }1109    }1110  }1111#pragma omp sections1112  {1113#pragma omp parallel master1114    {1115      bar();1116    }1117  }1118#pragma omp sections1119  {1120#pragma omp parallel masked1121    {1122      bar();1123    }1124  }1125#pragma omp sections1126  {1127#pragma omp parallel1128    {1129#pragma omp master // OK1130      {1131        bar();1132      }1133#pragma omp for // OK1134      for (int i = 0; i < 10; ++i)1135        ;1136#pragma omp master // OK1137      {1138        bar();1139      }1140    }1141#pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}1142    bar();1143  }1144#pragma omp sections1145  {1146#pragma omp parallel1147    {1148#pragma omp critical(A) // OK1149      {1150        bar();1151      }1152#pragma omp for // OK1153      for (int i = 0; i < 10; ++i)1154        ;1155#pragma omp critical // OK1156      {1157        bar();1158      }1159    }1160#pragma omp critical(A) // expected-error {{statement in 'omp sections' directive must be enclosed into a section region}}1161    bar();1162  }1163#pragma omp sections1164  {1165#pragma omp parallel for1166    for (int i = 0; i < 10; ++i)1167      ;1168  }1169#pragma omp sections1170  {1171#pragma omp parallel for simd1172    for (int i = 0; i < 10; ++i)1173      ;1174  }1175#pragma omp sections1176  {1177#pragma omp parallel sections1178    {1179      bar();1180    }1181  }1182#pragma omp sections1183  {1184#pragma omp task1185    {1186      bar();1187    }1188  }1189#pragma omp sections1190  {1191#pragma omp taskyield1192  }1193#pragma omp sections1194  {1195#pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}1196  }1197#pragma omp sections1198  {1199#pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}}1200  }1201#pragma omp sections1202  {1203#pragma omp taskwait1204  }1205#pragma omp sections1206  {1207#pragma omp flush1208  }1209#pragma omp sections1210  {1211#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?}}1212    bar();1213  }1214#pragma omp sections1215  {1216#pragma omp atomic1217    ++a;1218  }1219#pragma omp sections1220  {1221#pragma omp target1222    ++a;1223  }1224#pragma omp sections1225  {1226#pragma omp target parallel1227    ++a;1228  }1229#pragma omp sections1230  {1231#pragma omp target parallel for1232    for (int i = 0; i < 10; ++i)1233      ;1234  }1235#pragma omp sections1236  {1237#pragma omp target enter data map(to: a)1238  }1239#pragma omp sections1240  {1241#pragma omp target exit data map(from: a)1242  }1243#pragma omp sections1244  {1245#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?}}1246    ++a;1247  }1248#pragma omp sections1249  {1250#pragma omp taskloop1251  for (int i = 0; i < 10; ++i)1252    ++a;1253  }1254#pragma omp sections1255  {1256#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?}}1257    for (int i = 0; i < 10; ++i)1258      ;1259  }1260#pragma omp sections1261  {1262#pragma omp target update to(a)1263  }1264#pragma omp sections1265  {1266#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?}}1267    for (int i = 0; i < 10; ++i)1268      ;1269  }1270#pragma omp sections1271  {1272#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?}}1273    for (int i = 0; i < 10; ++i)1274      ;1275  }1276#pragma omp sections1277  {1278#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?}}1279    for (int i = 0; i < 10; ++i)1280      ;1281  }1282#pragma omp sections1283  {1284#pragma omp target simd // OK1285    for (int i = 0; i < 10; ++i)1286      ;1287  }1288#pragma omp sections1289  {1290#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?}}1291    for (int i = 0; i < 10; ++i)1292      ;1293  }1294#pragma omp sections1295  {1296#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?}}1297    for (int i = 0; i < 10; ++i)1298      ;1299  }1300#pragma omp sections1301  {1302#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?}}1303    for (int i = 0; i < 10; ++i)1304      ;1305  }1306#pragma omp sections1307  {1308#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?}}1309    for (int i = 0; i < 10; ++i)1310      ;1311  }1312#pragma omp sections1313  {1314#pragma omp target teams // OK1315    ++a;1316  }1317#pragma omp sections1318  {1319#pragma omp target teams distribute // OK1320    for (int i = 0; i < 10; ++i)1321      ;1322  }1323#pragma omp sections1324  {1325#pragma omp target teams distribute parallel for // OK1326    for (int i = 0; i < 10; ++i)1327      ;1328  }1329#pragma omp sections1330  {1331#pragma omp target teams distribute parallel for simd // OK1332    for (int i = 0; i < 10; ++i)1333      ;1334  }1335#pragma omp sections1336  {1337#pragma omp target teams distribute simd // OK1338    for (int i = 0; i < 10; ++i)1339      ;1340  }1341 1342// SECTION DIRECTIVE1343#pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}1344  {1345    bar();1346  }1347#pragma omp sections1348  {1349#pragma omp section1350    {1351#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?}}1352      for (int i = 0; i < 10; ++i)1353        ;1354    }1355  }1356#pragma omp sections1357  {1358#pragma omp section1359    {1360#pragma omp simd1361      for (int i = 0; i < 10; ++i)1362        ;1363    }1364  }1365#pragma omp sections1366  {1367#pragma omp section1368    {1369#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?}}1370      for (int i = 0; i < 10; ++i)1371        ;1372    }1373  }1374#pragma omp sections1375  {1376#pragma omp section1377    {1378#pragma omp parallel1379      for (int i = 0; i < 10; ++i)1380        ;1381    }1382  }1383#pragma omp sections1384  {1385#pragma omp section1386    {1387#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?}}1388      {1389        bar();1390      }1391    }1392  }1393#pragma omp sections1394  {1395#pragma omp section1396    {1397#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}1398      {1399        bar();1400      }1401    }1402  }1403#pragma omp sections1404  {1405#pragma omp section1406    {1407#pragma omp parallel master1408      bar();1409#pragma omp critical1410      bar();1411    }1412  }1413#pragma omp sections1414  {1415#pragma omp section1416    {1417#pragma omp parallel masked1418      bar();1419#pragma omp critical1420      bar();1421    }1422  }1423#pragma omp sections1424  {1425#pragma omp section1426    {1427#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?}}1428      bar();1429#pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}1430      bar();1431#pragma omp critical1432      bar();1433    }1434  }1435#pragma omp sections1436  {1437#pragma omp section1438    {1439#pragma omp parallel1440      {1441#pragma omp single // OK1442        {1443          bar();1444        }1445#pragma omp for // OK1446        for (int i = 0; i < 10; ++i)1447          ;1448#pragma omp for simd // OK1449        for (int i = 0; i < 10; ++i)1450          ;1451#pragma omp sections // OK1452        {1453          bar();1454        }1455      }1456    }1457  }1458#pragma omp sections1459  {1460#pragma omp section1461    {1462#pragma omp parallel for1463      for (int i = 0; i < 10; ++i)1464        ;1465    }1466  }1467#pragma omp sections1468  {1469#pragma omp section1470    {1471#pragma omp parallel for simd1472      for (int i = 0; i < 10; ++i)1473        ;1474    }1475  }1476#pragma omp sections1477  {1478#pragma omp section1479    {1480#pragma omp parallel sections1481      {1482        bar();1483      }1484    }1485  }1486#pragma omp sections1487  {1488#pragma omp section1489    {1490#pragma omp task1491      {1492        bar();1493      }1494    }1495  }1496#pragma omp sections1497  {1498#pragma omp section1499    {1500#pragma omp taskyield1501      bar();1502    }1503  }1504#pragma omp sections1505  {1506#pragma omp section1507    {1508#pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}1509      bar();1510    }1511  }1512#pragma omp sections1513  {1514#pragma omp section1515    {1516#pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}}1517      bar();1518    }1519  }1520#pragma omp sections1521  {1522#pragma omp section1523    {1524#pragma omp taskwait1525      bar();1526    }1527  }1528#pragma omp sections1529  {1530#pragma omp section1531    {1532#pragma omp flush1533      bar();1534    }1535  }1536#pragma omp sections1537  {1538#pragma omp section1539    {1540#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?}}1541      bar();1542    }1543  }1544#pragma omp sections1545  {1546#pragma omp section1547#pragma omp atomic1548    ++a;1549  }1550#pragma omp sections1551  {1552#pragma omp section1553#pragma omp target1554    ++a;1555  }1556#pragma omp sections1557  {1558#pragma omp section1559#pragma omp target parallel1560    ++a;1561  }1562#pragma omp sections1563  {1564#pragma omp section1565    {1566#pragma omp target parallel for1567      for (int i = 0; i < 10; ++i)1568        ;1569    }1570  }1571#pragma omp sections1572  {1573#pragma omp section1574    {1575#pragma omp target enter data map(to: a)1576      ++a;1577    }1578  }1579#pragma omp sections1580  {1581#pragma omp section1582    {1583#pragma omp target exit data map(from: a)1584      ++a;1585    }1586  }1587#pragma omp sections1588  {1589#pragma omp section1590#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?}}1591    ++a;1592  }1593#pragma omp sections1594  {1595#pragma omp section1596#pragma omp taskloop1597  for (int i = 0; i < 10; ++i)1598    ++a;1599  }1600#pragma omp sections1601  {1602#pragma omp section1603#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?}}1604    for (int i = 0; i < 10; ++i)1605      ;1606  }1607#pragma omp sections1608  {1609#pragma omp section1610    {1611      bar();1612#pragma omp target update to(a)1613    }1614  }1615#pragma omp sections1616  {1617#pragma omp section1618#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?}}1619    for (int i = 0; i < 10; ++i)1620      ;1621  }1622#pragma omp sections1623  {1624#pragma omp section1625#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?}}1626    for (int i = 0; i < 10; ++i)1627      ;1628  }1629#pragma omp sections1630  {1631#pragma omp section1632#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?}}1633    for (int i = 0; i < 10; ++i)1634      ;1635  }1636#pragma omp sections1637  {1638#pragma omp section1639#pragma omp target simd // OK1640    for (int i = 0; i < 10; ++i)1641      ;1642  }1643#pragma omp sections1644  {1645#pragma omp section1646#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?}}1647    for (int i = 0; i < 10; ++i)1648      ;1649  }1650#pragma omp sections1651  {1652#pragma omp section1653#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?}}1654    for (int i = 0; i < 10; ++i)1655      ;1656  }1657#pragma omp sections1658  {1659#pragma omp section1660#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?}}1661    for (int i = 0; i < 10; ++i)1662      ;1663  }1664#pragma omp sections1665  {1666#pragma omp section1667#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?}}1668    for (int i = 0; i < 10; ++i)1669      ;1670  }1671#pragma omp sections1672  {1673#pragma omp section1674#pragma omp target teams // OK1675    ++a;1676  }1677#pragma omp sections1678  {1679#pragma omp section1680#pragma omp target teams distribute // OK1681    for (int i = 0; i < 10; ++i)1682      ;1683  }1684#pragma omp sections1685  {1686#pragma omp section1687#pragma omp target teams distribute parallel for // OK1688    for (int i = 0; i < 10; ++i)1689      ;1690  }1691#pragma omp sections1692  {1693#pragma omp section1694#pragma omp target teams distribute parallel for simd // OK1695    for (int i = 0; i < 10; ++i)1696      ;1697  }1698#pragma omp sections1699  {1700#pragma omp section1701#pragma omp target teams distribute simd // OK1702    for (int i = 0; i < 10; ++i)1703      ;1704  }1705 1706// SINGLE DIRECTIVE1707#pragma omp single1708  {1709#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?}}1710    for (int i = 0; i < 10; ++i)1711      ;1712  }1713#pragma omp single1714  {1715#pragma omp simd1716    for (int i = 0; i < 10; ++i)1717      ;1718  }1719#pragma omp single1720  {1721#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?}}1722    for (int i = 0; i < 10; ++i)1723      ;1724  }1725#pragma omp single1726  {1727#pragma omp parallel1728    for (int i = 0; i < 10; ++i)1729      ;1730  }1731#pragma omp single1732  {1733#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?}}1734    {1735      bar();1736    }1737  }1738#pragma omp single1739  {1740#pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}1741    {1742      bar();1743    }1744  }1745#pragma omp single1746  {1747#pragma omp parallel master1748    {1749      bar();1750    }1751  }1752#pragma omp single1753  {1754#pragma omp parallel masked1755    {1756      bar();1757    }1758  }1759#pragma omp single1760  {1761#pragma omp critical1762    {1763      bar();1764    }1765  }1766#pragma omp single1767  {1768#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?}}1769    {1770      bar();1771    }1772  }1773#pragma omp single1774  {1775#pragma omp parallel1776    {1777#pragma omp single // OK1778      {1779        bar();1780      }1781#pragma omp for // OK1782      for (int i = 0; i < 10; ++i)1783        ;1784#pragma omp for simd // OK1785      for (int i = 0; i < 10; ++i)1786        ;1787#pragma omp sections // OK1788      {1789        bar();1790      }1791    }1792  }1793#pragma omp single1794  {1795#pragma omp parallel for1796    for (int i = 0; i < 10; ++i)1797      ;1798  }1799#pragma omp single1800  {1801#pragma omp parallel for simd1802    for (int i = 0; i < 10; ++i)1803      ;1804  }1805#pragma omp single1806  {1807#pragma omp parallel sections1808    {1809      bar();1810    }1811  }1812#pragma omp single1813  {1814#pragma omp task1815    {1816      bar();1817    }1818  }1819#pragma omp single1820  {1821#pragma omp taskyield1822    bar();1823  }1824#pragma omp single1825  {1826#pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}1827    bar();1828  }1829#pragma omp single1830  {1831#pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}}1832    bar();1833  }1834#pragma omp single1835  {1836#pragma omp taskwait1837    bar();1838  }1839#pragma omp single1840  {1841#pragma omp flush1842    bar();1843  }1844#pragma omp single1845  {1846#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?}}1847    bar();1848  }1849#pragma omp single1850  {1851#pragma omp atomic1852    ++a;1853  }1854#pragma omp single1855  {1856#pragma omp target1857    ++a;1858  }1859#pragma omp single1860  {1861#pragma omp target parallel1862    ++a;1863  }1864#pragma omp single1865  {1866#pragma omp target parallel for1867    for (int i = 0; i < 10; ++i)1868      ;1869  }1870#pragma omp single1871  {1872#pragma omp target enter data map(to: a)1873    ++a;1874  }1875#pragma omp single1876  {1877#pragma omp target exit data map(from: a)1878    ++a;1879  }1880#pragma omp single1881  {1882#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?}}1883    ++a;1884  }1885#pragma omp single1886  {1887#pragma omp taskloop1888  for (int i = 0; i < 10; ++i)1889    ++a;1890  }1891#pragma omp single1892  {1893#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?}}1894    for (int i = 0; i < 10; ++i)1895      ;1896  }1897#pragma omp single1898  {1899#pragma omp target update to(a)1900    bar();1901  }1902#pragma omp single1903  {1904#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?}}1905    for (int i = 0; i < 10; ++i)1906      ;1907  }1908#pragma omp single1909  {1910#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?}}1911    for (int i = 0; i < 10; ++i)1912      ;1913  }1914#pragma omp single1915  {1916#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?}}1917    for (int i = 0; i < 10; ++i)1918      ;1919  }1920#pragma omp single1921  {1922#pragma omp target simd // OK1923    for (int i = 0; i < 10; ++i)1924      ;1925  }1926#pragma omp single1927  {1928#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?}}1929    for (int i = 0; i < 10; ++i)1930      ;1931  }1932#pragma omp single1933  {1934#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?}}1935    for (int i = 0; i < 10; ++i)1936      ;1937  }1938#pragma omp single1939  {1940#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?}}1941    for (int i = 0; i < 10; ++i)1942      ;1943  }1944#pragma omp single1945  {1946#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?}}1947    for (int i = 0; i < 10; ++i)1948      ;1949  }1950#pragma omp single1951  {1952#pragma omp target teams // OK1953    ++a;1954  }1955#pragma omp single1956  {1957#pragma omp target teams distribute // OK1958    for (int i = 0; i < 10; ++i)1959      ;1960  }1961#pragma omp single1962  {1963#pragma omp target teams distribute parallel for // OK1964    for (int i = 0; i < 10; ++i)1965      ;1966  }1967#pragma omp single1968  {1969#pragma omp target teams distribute parallel for simd // OK1970    for (int i = 0; i < 10; ++i)1971      ;1972  }1973#pragma omp single1974  {1975#pragma omp target teams distribute simd // OK1976    for (int i = 0; i < 10; ++i)1977      ;1978  }1979 1980// MASTER DIRECTIVE1981#pragma omp master1982  {1983#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?}}1984    for (int i = 0; i < 10; ++i)1985      ;1986  }1987#pragma omp master1988  {1989#pragma omp simd1990    for (int i = 0; i < 10; ++i)1991      ;1992  }1993#pragma omp master1994  {1995#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?}}1996    for (int i = 0; i < 10; ++i)1997      ;1998  }1999#pragma omp master2000  {2001#pragma omp parallel2002    for (int i = 0; i < 10; ++i)2003      ;2004  }2005#pragma omp master2006  {2007#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?}}2008    {2009      bar();2010    }2011  }2012#pragma omp master2013  {2014#pragma omp master // OK, though second 'master' is redundant2015    {2016      bar();2017    }2018  }2019#pragma omp master2020  {2021#pragma omp critical2022    {2023      bar();2024    }2025  }2026#pragma omp master2027  {2028#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?}}2029    {2030      bar();2031    }2032  }2033#pragma omp master2034  {2035#pragma omp parallel2036    {2037#pragma omp master // OK2038      {2039        bar();2040      }2041#pragma omp for // OK2042      for (int i = 0; i < 10; ++i)2043        ;2044#pragma omp for simd // OK2045      for (int i = 0; i < 10; ++i)2046        ;2047#pragma omp sections // OK2048      {2049        bar();2050      }2051    }2052  }2053#pragma omp master2054  {2055#pragma omp parallel master // OK2056      {2057        bar();2058      }2059#pragma omp parallel2060    {2061#pragma omp for // OK2062      for (int i = 0; i < 10; ++i)2063        ;2064#pragma omp for simd // OK2065      for (int i = 0; i < 10; ++i)2066        ;2067#pragma omp sections // OK2068      {2069        bar();2070      }2071    }2072  }2073#pragma omp master2074  {2075#pragma omp parallel for2076    for (int i = 0; i < 10; ++i)2077      ;2078  }2079#pragma omp master2080  {2081#pragma omp parallel for simd2082    for (int i = 0; i < 10; ++i)2083      ;2084  }2085#pragma omp master2086  {2087#pragma omp parallel sections2088    {2089      bar();2090    }2091  }2092#pragma omp master2093  {2094#pragma omp task2095    {2096      bar();2097    }2098  }2099#pragma omp master2100  {2101#pragma omp taskyield2102    bar();2103  }2104#pragma omp master2105  {2106#pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}2107    bar();2108  }2109#pragma omp master2110  {2111#pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}}2112    bar();2113  }2114#pragma omp master2115  {2116#pragma omp taskwait2117    bar();2118  }2119#pragma omp master2120  {2121#pragma omp flush2122    bar();2123  }2124#pragma omp master2125  {2126#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?}}2127    bar();2128  }2129#pragma omp master2130  {2131#pragma omp atomic2132    ++a;2133  }2134#pragma omp master2135  {2136#pragma omp target2137    ++a;2138  }2139#pragma omp master2140  {2141#pragma omp target parallel2142    ++a;2143  }2144#pragma omp master2145  {2146#pragma omp target parallel for2147    for (int i = 0; i < 10; ++i)2148      ;2149  }2150#pragma omp master2151  {2152#pragma omp target enter data map(to: a)2153    ++a;2154  }2155#pragma omp master2156  {2157#pragma omp target exit data map(from: a)2158    ++a;2159  }2160#pragma omp master2161  {2162#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?}}2163    ++a;2164  }2165#pragma omp master2166  {2167#pragma omp taskloop2168  for (int i = 0; i < 10; ++i)2169    ++a;2170  }2171#pragma omp master2172  {2173#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?}}2174    for (int i = 0; i < 10; ++i)2175      ;2176  }2177#pragma omp master2178  {2179#pragma omp target update to(a)2180    bar();2181  }2182#pragma omp master2183  {2184#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?}}2185    for (int i = 0; i < 10; ++i)2186      ;2187  }2188#pragma omp master2189  {2190#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?}}2191    for (int i = 0; i < 10; ++i)2192      ;2193  }2194#pragma omp master2195  {2196#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?}}2197    for (int i = 0; i < 10; ++i)2198      ;2199  }2200#pragma omp master2201  {2202#pragma omp target simd // OK2203    for (int i = 0; i < 10; ++i)2204      ;2205  }2206#pragma omp master2207  {2208#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?}}2209    for (int i = 0; i < 10; ++i)2210      ;2211  }2212#pragma omp master2213  {2214#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?}}2215    for (int i = 0; i < 10; ++i)2216      ;2217  }2218#pragma omp master2219  {2220#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?}}2221    for (int i = 0; i < 10; ++i)2222      ;2223  }2224#pragma omp master2225  {2226#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?}}2227    for (int i = 0; i < 10; ++i)2228      ;2229  }2230#pragma omp master2231  {2232#pragma omp target teams // OK2233    a++;2234  }2235#pragma omp master2236  {2237#pragma omp target teams distribute // OK2238    for (int i = 0; i < 10; ++i)2239      ;2240  }2241#pragma omp master2242  {2243#pragma omp target teams distribute parallel for // OK2244    for (int i = 0; i < 10; ++i)2245      ;2246  }2247#pragma omp master2248  {2249#pragma omp target teams distribute parallel for simd // OK2250    for (int i = 0; i < 10; ++i)2251      ;2252  }2253#pragma omp master2254  {2255#pragma omp target teams distribute simd // OK2256    for (int i = 0; i < 10; ++i)2257      ;2258  }2259 2260// CRITICAL DIRECTIVE2261#pragma omp critical2262  {2263#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?}}2264    for (int i = 0; i < 10; ++i)2265      ;2266  }2267#pragma omp critical2268  {2269#pragma omp simd2270    for (int i = 0; i < 10; ++i)2271      ;2272  }2273#pragma omp critical2274  {2275#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?}}2276    for (int i = 0; i < 10; ++i)2277      ;2278  }2279#pragma omp critical2280  {2281#pragma omp parallel2282    for (int i = 0; i < 10; ++i)2283      ;2284  }2285#pragma omp critical2286  {2287#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?}}2288    {2289      bar();2290    }2291  }2292#pragma omp critical2293  {2294#pragma omp master // OK, though second 'master' is redundant2295    {2296      bar();2297    }2298  }2299#pragma omp critical2300  {2301#pragma omp critical2302    {2303      bar();2304    }2305  }2306#pragma omp critical2307  {2308#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?}}2309    {2310      bar();2311    }2312  }2313#pragma omp critical2314  {2315#pragma omp parallel2316    {2317#pragma omp master // OK2318      {2319        bar();2320      }2321#pragma omp for // OK2322      for (int i = 0; i < 10; ++i)2323        ;2324#pragma omp for simd // OK2325      for (int i = 0; i < 10; ++i)2326        ;2327#pragma omp sections // OK2328      {2329        bar();2330      }2331    }2332  }2333#pragma omp critical2334  {2335#pragma omp parallel master2336    {2337      bar();2338    }2339  }2340#pragma omp critical2341  {2342#pragma omp parallel masked2343    {2344      bar();2345    }2346  }2347#pragma omp critical2348  {2349#pragma omp parallel for2350    for (int i = 0; i < 10; ++i)2351      ;2352  }2353#pragma omp critical2354  {2355#pragma omp parallel for simd2356    for (int i = 0; i < 10; ++i)2357      ;2358  }2359#pragma omp critical2360  {2361#pragma omp parallel sections2362    {2363      bar();2364    }2365  }2366#pragma omp critical2367  {2368#pragma omp task2369    {2370      bar();2371    }2372  }2373#pragma omp critical2374  {2375#pragma omp taskyield2376    bar();2377  }2378#pragma omp critical2379  {2380#pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}2381    bar();2382  }2383#pragma omp critical2384  {2385#pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}}2386    bar();2387  }2388#pragma omp critical2389  {2390#pragma omp taskwait2391    bar();2392  }2393#pragma omp critical(Tuzik)2394  {2395#pragma omp critical(grelka)2396    bar();2397  }2398#pragma omp critical(Belka) // expected-note {{previous 'critical' region starts here}}2399  {2400#pragma omp critical(Belka) // expected-error {{cannot nest 'critical' regions having the same name 'Belka'}}2401    {2402#pragma omp critical(Tuzik)2403      {2404#pragma omp parallel2405#pragma omp critical(grelka)2406        {2407          bar();2408        }2409      }2410    }2411  }2412#pragma omp critical2413  {2414#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?}}2415    bar();2416  }2417#pragma omp critical2418  {2419#pragma omp atomic2420    ++a;2421  }2422#pragma omp critical2423  {2424#pragma omp target2425    ++a;2426  }2427#pragma omp critical2428  {2429#pragma omp target parallel2430    ++a;2431  }2432#pragma omp critical2433  {2434#pragma omp target parallel for2435    for (int i = 0; i < 10; ++i)2436      ;2437  }2438#pragma omp critical2439  {2440#pragma omp target enter data map(to: a)2441    ++a;2442  }2443#pragma omp critical2444  {2445#pragma omp target exit data map(from: a)2446    ++a;2447  }2448#pragma omp critical2449  {2450#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?}}2451    ++a;2452  }2453#pragma omp critical2454  {2455#pragma omp taskloop2456  for (int i = 0; i < 10; ++i)2457    ++a;2458  }2459#pragma omp critical2460  {2461#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?}}2462    for (int i = 0; i < 10; ++i)2463      ;2464  }2465#pragma omp critical2466  {2467#pragma omp target update to(a)2468    bar();2469  }2470#pragma omp critical2471  {2472#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?}}2473    for (int i = 0; i < 10; ++i)2474      ;2475  }2476#pragma omp critical2477  {2478#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?}}2479    for (int i = 0; i < 10; ++i)2480      ;2481  }2482#pragma omp critical2483  {2484#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?}}2485    for (int i = 0; i < 10; ++i)2486      ;2487  }2488#pragma omp critical2489  {2490#pragma omp target simd // OK2491    for (int i = 0; i < 10; ++i)2492      ;2493  }2494#pragma omp critical2495  {2496#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?}}2497    for (int i = 0; i < 10; ++i)2498      ;2499  }2500#pragma omp critical2501  {2502#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?}}2503    for (int i = 0; i < 10; ++i)2504      ;2505  }2506#pragma omp critical2507  {2508#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?}}2509    for (int i = 0; i < 10; ++i)2510      ;2511  }2512#pragma omp critical2513  {2514#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?}}2515    for (int i = 0; i < 10; ++i)2516      ;2517  }2518#pragma omp critical2519  {2520#pragma omp target teams // OK2521    a++;2522  }2523#pragma omp critical2524  {2525#pragma omp target teams distribute // OK2526    for (int i = 0; i < 10; ++i)2527      ;2528  }2529#pragma omp critical2530  {2531#pragma omp target teams distribute parallel for // OK2532    for (int i = 0; i < 10; ++i)2533      ;2534  }2535#pragma omp critical2536  {2537#pragma omp target teams distribute parallel for simd // OK2538    for (int i = 0; i < 10; ++i)2539      ;2540  }2541#pragma omp critical2542  {2543#pragma omp target teams distribute simd // OK2544    for (int i = 0; i < 10; ++i)2545      ;2546  }2547 2548// PARALLEL FOR DIRECTIVE2549#pragma omp parallel for2550  for (int i = 0; i < 10; ++i) {2551#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?}}2552    for (int i = 0; i < 10; ++i)2553      ;2554  }2555#pragma omp parallel for2556  for (int i = 0; i < 10; ++i) {2557#pragma omp simd2558    for (int i = 0; i < 10; ++i)2559      ;2560  }2561#pragma omp parallel for2562  for (int i = 0; i < 10; ++i) {2563#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?}}2564    for (int i = 0; i < 10; ++i)2565      ;2566  }2567#pragma omp parallel for2568  for (int i = 0; i < 10; ++i) {2569#pragma omp parallel2570    for (int i = 0; i < 10; ++i)2571      ;2572  }2573#pragma omp parallel for2574  for (int i = 0; i < 10; ++i) {2575#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?}}2576    {2577      bar();2578    }2579  }2580#pragma omp parallel for2581  for (int i = 0; i < 10; ++i) {2582#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}2583    {2584      bar();2585    }2586  }2587#pragma omp parallel for2588  for (int i = 0; i < 10; ++i) {2589#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?}}2590    {2591      bar();2592    }2593  }2594 2595#pragma omp parallel for2596  for (int i = 0; i < 10; ++i) {2597#pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}2598    {2599      bar();2600    }2601  }2602 2603#pragma omp parallel for2604  for (int i = 0; i < 10; ++i) {2605#pragma omp critical2606    {2607      bar();2608    }2609  }2610 2611#pragma omp parallel for2612  for (int i = 0; i < 10; ++i) {2613#pragma omp parallel2614    {2615#pragma omp single // OK2616      {2617        bar();2618      }2619#pragma omp for // OK2620      for (int i = 0; i < 10; ++i)2621        ;2622#pragma omp for simd // OK2623      for (int i = 0; i < 10; ++i)2624        ;2625#pragma omp sections // OK2626      {2627        bar();2628      }2629    }2630  }2631#pragma omp parallel for2632  for (int i = 0; i < 10; ++i) {2633#pragma omp parallel for2634    for (int i = 0; i < 10; ++i)2635      ;2636  }2637#pragma omp parallel for2638  for (int i = 0; i < 10; ++i) {2639#pragma omp parallel for simd2640    for (int i = 0; i < 10; ++i)2641      ;2642  }2643#pragma omp parallel for2644  for (int i = 0; i < 10; ++i) {2645#pragma omp parallel sections2646    {2647      bar();2648    }2649  }2650#pragma omp parallel for2651  for (int i = 0; i < 10; ++i) {2652#pragma omp task2653    {2654      bar();2655    }2656  }2657#pragma omp parallel for2658  for (int i = 0; i < 10; ++i) {2659#pragma omp taskyield2660    bar();2661  }2662#pragma omp parallel for2663  for (int i = 0; i < 10; ++i) {2664#pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}2665    bar();2666  }2667#pragma omp parallel for2668  for (int i = 0; i < 10; ++i) {2669#pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}2670    bar();2671  }2672#pragma omp parallel for2673  for (int i = 0; i < 10; ++i) {2674#pragma omp taskwait2675    bar();2676  }2677#pragma omp parallel for2678  for (int i = 0; i < 10; ++i) {2679#pragma omp flush2680    bar();2681  }2682#pragma omp parallel for2683  for (int i = 0; i < 10; ++i) {2684#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?}}2685    bar();2686  }2687#pragma omp parallel for ordered2688  for (int i = 0; i < 10; ++i) {2689#pragma omp ordered // OK2690    bar();2691  }2692#pragma omp parallel for2693  for (int i = 0; i < 10; ++i) {2694#pragma omp atomic2695    ++a;2696  }2697#pragma omp parallel for2698  for (int i = 0; i < 10; ++i) {2699#pragma omp target2700    ++a;2701  }2702#pragma omp parallel for2703  for (int i = 0; i < 10; ++i) {2704#pragma omp target parallel2705    ++a;2706  }2707#pragma omp parallel for2708  for (int i = 0; i < 10; ++i) {2709#pragma omp target parallel for2710    for (int i = 0; i < 10; ++i)2711      ;2712  }2713#pragma omp parallel for2714  for (int i = 0; i < 10; ++i) {2715#pragma omp target enter data map(to: a)2716    ++a;2717  }2718#pragma omp parallel for2719  for (int i = 0; i < 10; ++i) {2720#pragma omp target exit data map(from: a)2721    ++a;2722  }2723#pragma omp parallel for2724  for (int i = 0; i < 10; ++i) {2725#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?}}2726    ++a;2727  }2728#pragma omp parallel for2729  for (int i = 0; i < 10; ++i) {2730#pragma omp taskloop2731  for (int i = 0; i < 10; ++i)2732    ++a;2733  }2734#pragma omp parallel for2735  for (int i = 0; i < 10; ++i) {2736#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?}}2737    for (int j = 0; j < 10; ++j)2738      ;2739  }2740#pragma omp parallel for2741  for (int i = 0; i < 10; ++i) {2742#pragma omp target update to(a)2743  }2744#pragma omp parallel for2745  for (int i = 0; i < 10; ++i) {2746#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?}}2747    for (int j = 0; j < 10; ++j)2748      ;2749  }2750#pragma omp parallel for2751  for (int i = 0; i < 10; ++i) {2752#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?}}2753    for (int j = 0; j < 10; ++j)2754      ;2755  }2756#pragma omp parallel for2757  for (int i = 0; i < 10; ++i) {2758#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?}}2759    for (int j = 0; j < 10; ++j)2760      ;2761  }2762#pragma omp parallel for2763  for (int i = 0; i < 10; ++i) {2764#pragma omp target simd // OK2765    for (int j = 0; j < 10; ++j)2766      ;2767  }2768#pragma omp parallel for2769  for (int i = 0; i < 10; ++i) {2770#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?}}2771    for (int j = 0; j < 10; ++j)2772      ;2773  }2774#pragma omp parallel for2775  for (int i = 0; i < 10; ++i) {2776#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?}}2777    for (int j = 0; j < 10; ++j)2778      ;2779  }2780#pragma omp parallel for2781  for (int i = 0; i < 10; ++i) {2782#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?}}2783    for (int j = 0; j < 10; ++j)2784      ;2785  }2786#pragma omp parallel for2787  for (int i = 0; i < 10; ++i) {2788#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?}}2789    for (int j = 0; j < 10; ++j)2790      ;2791  }2792#pragma omp parallel for2793  for (int i = 0; i < 10; ++i) {2794#pragma omp target teams // OK2795    a++;2796  }2797#pragma omp parallel for2798  for (int i = 0; i < 10; ++i) {2799#pragma omp target teams distribute // OK2800    for (int j = 0; j < 10; ++j)2801      ;2802  }2803#pragma omp parallel for2804  for (int i = 0; i < 10; ++i) {2805#pragma omp target teams distribute parallel for // OK2806    for (int j = 0; j < 10; ++j)2807      ;2808  }2809#pragma omp parallel for2810  for (int i = 0; i < 10; ++i) {2811#pragma omp target teams distribute parallel for simd // OK2812    for (int j = 0; j < 10; ++j)2813      ;2814  }2815#pragma omp parallel for2816  for (int i = 0; i < 10; ++i) {2817#pragma omp target teams distribute simd // OK2818    for (int j = 0; j < 10; ++j)2819      ;2820  }2821 2822// PARALLEL FOR SIMD DIRECTIVE2823#pragma omp parallel for simd2824  for (int i = 0; i < 10; ++i) {2825#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}2826    for (int i = 0; i < 10; ++i)2827      ;2828  }2829#pragma omp parallel for simd2830  for (int i = 0; i < 10; ++i) {2831#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}2832    for (int i = 0; i < 10; ++i)2833      ;2834  }2835#pragma omp parallel for simd2836  for (int i = 0; i < 10; ++i) {2837#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}2838    for (int i = 0; i < 10; ++i)2839      ;2840  }2841#pragma omp parallel for simd2842  for (int i = 0; i < 10; ++i) {2843#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}2844    for (int i = 0; i < 10; ++i)2845      ;2846  }2847#pragma omp parallel for simd2848  for (int i = 0; i < 10; ++i) {2849#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}2850    {2851      bar();2852    }2853  }2854#pragma omp parallel for simd2855  for (int i = 0; i < 10; ++i) {2856#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}2857    {2858      bar();2859    }2860  }2861#pragma omp parallel for simd2862  for (int i = 0; i < 10; ++i) {2863#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}2864    {2865      bar();2866    }2867  }2868 2869#pragma omp parallel for simd2870  for (int i = 0; i < 10; ++i) {2871#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}2872    {2873      bar();2874    }2875  }2876 2877#pragma omp parallel for simd2878  for (int i = 0; i < 10; ++i) {2879#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}2880    {2881      bar();2882    }2883  }2884 2885#pragma omp parallel for simd2886  for (int i = 0; i < 10; ++i) {2887#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}2888    {2889#pragma omp single2890      {2891        bar();2892      }2893#pragma omp for2894      for (int i = 0; i < 10; ++i)2895        ;2896#pragma omp for simd2897      for (int i = 0; i < 10; ++i)2898        ;2899#pragma omp sections2900      {2901        bar();2902      }2903    }2904  }2905#pragma omp parallel for simd2906  for (int i = 0; i < 10; ++i) {2907#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}2908    for (int i = 0; i < 10; ++i)2909      ;2910  }2911#pragma omp parallel for simd2912  for (int i = 0; i < 10; ++i) {2913#pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}2914    for (int i = 0; i < 10; ++i)2915      ;2916  }2917#pragma omp parallel for simd2918  for (int i = 0; i < 10; ++i) {2919#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}2920    {2921      bar();2922    }2923  }2924#pragma omp parallel for simd2925  for (int i = 0; i < 10; ++i) {2926#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}2927    {2928      bar();2929    }2930  }2931#pragma omp parallel for simd2932  for (int i = 0; i < 10; ++i) {2933#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}2934    bar();2935  }2936#pragma omp parallel for simd2937  for (int i = 0; i < 10; ++i) {2938#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}2939    bar();2940  }2941#pragma omp parallel for simd2942  for (int i = 0; i < 10; ++i) {2943#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}2944    bar();2945  }2946#pragma omp parallel for simd2947  for (int i = 0; i < 10; ++i) {2948#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}2949    bar();2950  }2951#pragma omp parallel for simd2952  for (int i = 0; i < 10; ++i) {2953#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}2954    bar();2955  }2956#pragma omp parallel for simd2957  for (int i = 0; i < 10; ++i) {2958#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}2959    bar();2960  }2961#pragma omp parallel for simd2962  for (int i = 0; i < 10; ++i) {2963#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}2964    bar();2965  }2966#pragma omp parallel for simd2967  for (int i = 0; i < 10; ++i) {2968#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}2969    ++a;2970  }2971#pragma omp parallel for simd2972  for (int i = 0; i < 10; ++i) {2973#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}2974    ++a;2975  }2976#pragma omp parallel for simd2977  for (int i = 0; i < 10; ++i) {2978#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}2979    ++a;2980  }2981#pragma omp parallel for simd2982  for (int i = 0; i < 10; ++i) {2983#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}2984    for (int i = 0; i < 10; ++i)2985      ;2986  }2987#pragma omp parallel for simd2988  for (int i = 0; i < 10; ++i) {2989#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}2990    ++a;2991  }2992#pragma omp parallel for simd2993  for (int i = 0; i < 10; ++i) {2994#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}2995    ++a;2996  }2997#pragma omp parallel for simd2998  for (int i = 0; i < 10; ++i) {2999#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}3000    ++a;3001  }3002#pragma omp parallel for simd3003  for (int i = 0; i < 10; ++i) {3004#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}3005  for (int i = 0; i < 10; ++i)3006    ++a;3007  }3008#pragma omp parallel for simd3009  for (int i = 0; i < 10; ++i) {3010#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}3011    for (int j = 0; j < 10; ++j)3012      ;3013  }3014#pragma omp parallel for simd3015  for (int i = 0; i < 10; ++i) {3016#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}3017    bar();3018  }3019#pragma omp parallel for simd3020  for (int i = 0; i < 10; ++i) {3021#pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}3022    for (int j = 0; j < 10; ++j)3023      ;3024  }3025#pragma omp parallel for simd3026  for (int i = 0; i < 10; ++i) {3027#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3028    for (int j = 0; j < 10; ++j)3029      ;3030  }3031#pragma omp parallel for simd3032  for (int i = 0; i < 10; ++i) {3033#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3034    for (int j = 0; j < 10; ++j)3035      ;3036  }3037#pragma omp parallel for simd3038  for (int i = 0; i < 10; ++i) {3039#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3040    for (int j = 0; j < 10; ++j)3041      ;3042  }3043#pragma omp parallel for simd3044  for (int i = 0; i < 10; ++i) {3045#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}3046    for (int j = 0; j < 10; ++j)3047      ;3048  }3049#pragma omp parallel for simd3050  for (int i = 0; i < 10; ++i) {3051#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3052    for (int j = 0; j < 10; ++j)3053      ;3054  }3055#pragma omp parallel for simd3056  for (int i = 0; i < 10; ++i) {3057#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3058    for (int j = 0; j < 10; ++j)3059      ;3060  }3061#pragma omp parallel for simd3062  for (int i = 0; i < 10; ++i) {3063#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}3064    for (int j = 0; j < 10; ++j)3065      ;3066  }3067#pragma omp parallel for simd3068  for (int i = 0; i < 10; ++i) {3069#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}3070    a++;3071  }3072#pragma omp parallel for simd3073  for (int i = 0; i < 10; ++i) {3074#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}3075    for (int j = 0; j < 10; ++j)3076      ;3077  }3078#pragma omp parallel for simd3079  for (int i = 0; i < 10; ++i) {3080#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}3081    for (int j = 0; j < 10; ++j)3082      ;3083  }3084#pragma omp parallel for simd3085  for (int i = 0; i < 10; ++i) {3086#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3087    for (int j = 0; j < 10; ++j)3088      ;3089  }3090#pragma omp parallel for simd3091  for (int i = 0; i < 10; ++i) {3092#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}3093    for (int j = 0; j < 10; ++j)3094      ;3095  }3096 3097// PARALLEL MASTER DIRECTIVE3098#pragma omp parallel master3099  {3100#pragma omp for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}3101    for (int i = 0; i < 10; ++i)3102      ;3103  }3104#pragma omp parallel master3105  {3106#pragma omp simd3107    for (int i = 0; i < 10; ++i)3108      ;3109  }3110#pragma omp parallel master3111  {3112#pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}3113    for (int i = 0; i < 10; ++i)3114      ;3115  }3116#pragma omp parallel master3117  {3118#pragma omp parallel3119    for (int i = 0; i < 10; ++i)3120      ;3121  }3122#pragma omp parallel master3123  {3124#pragma omp single // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}3125    {3126      bar();3127    }3128  }3129#pragma omp parallel master3130  {3131#pragma omp master // OK, though second 'master' is redundant3132    {3133      bar();3134    }3135  }3136#pragma omp parallel master3137  {3138#pragma omp critical3139    {3140      bar();3141    }3142  }3143#pragma omp parallel master3144  {3145#pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}3146    {3147      bar();3148    }3149  }3150#pragma omp parallel master3151  {3152#pragma omp parallel3153    {3154#pragma omp parallel master // OK3155      {3156        bar();3157      }3158#pragma omp for // OK3159      for (int i = 0; i < 10; ++i)3160        ;3161#pragma omp for simd // OK3162      for (int i = 0; i < 10; ++i)3163        ;3164#pragma omp sections // OK3165      {3166        bar();3167      }3168    }3169  }3170#pragma omp parallel master3171  {3172#pragma omp parallel master // OK3173      {3174        bar();3175      }3176#pragma omp parallel3177    {3178#pragma omp for // OK3179      for (int i = 0; i < 10; ++i)3180        ;3181#pragma omp for simd // OK3182      for (int i = 0; i < 10; ++i)3183        ;3184#pragma omp sections // OK3185      {3186        bar();3187      }3188    }3189  }3190#pragma omp parallel master3191  {3192#pragma omp parallel for3193    for (int i = 0; i < 10; ++i)3194      ;3195  }3196#pragma omp parallel master3197  {3198#pragma omp parallel for simd3199    for (int i = 0; i < 10; ++i)3200      ;3201  }3202#pragma omp parallel master3203  {3204#pragma omp parallel sections3205    {3206      bar();3207    }3208  }3209#pragma omp parallel master3210  {3211#pragma omp task3212    {3213      bar();3214    }3215  }3216#pragma omp parallel master3217  {3218#pragma omp taskyield3219    bar();3220  }3221#pragma omp parallel master3222  {3223#pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}}3224    bar();3225  }3226#pragma omp parallel master3227  {3228#pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}}3229    bar();3230  }3231#pragma omp parallel master3232  {3233#pragma omp taskwait3234    bar();3235  }3236#pragma omp parallel master3237  {3238#pragma omp flush3239    bar();3240  }3241#pragma omp parallel master3242  {3243#pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}3244    bar();3245  }3246#pragma omp parallel master3247  {3248#pragma omp atomic3249    ++a;3250  }3251#pragma omp parallel master3252  {3253#pragma omp target3254    ++a;3255  }3256#pragma omp parallel master3257  {3258#pragma omp target parallel3259    ++a;3260  }3261#pragma omp parallel master3262  {3263#pragma omp target parallel for3264    for (int i = 0; i < 10; ++i)3265      ;3266  }3267#pragma omp parallel master3268  {3269#pragma omp target enter data map(to: a)3270    ++a;3271  }3272#pragma omp parallel master3273  {3274#pragma omp target exit data map(from: a)3275    ++a;3276  }3277#pragma omp parallel master3278  {3279#pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}3280    ++a;3281  }3282#pragma omp parallel master3283  {3284#pragma omp taskloop3285  for (int i = 0; i < 10; ++i)3286    ++a;3287  }3288#pragma omp parallel master3289  {3290#pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}3291    for (int i = 0; i < 10; ++i)3292      ;3293  }3294#pragma omp parallel master3295  {3296#pragma omp target update to(a)3297    bar();3298  }3299#pragma omp parallel master3300  {3301#pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}3302    for (int i = 0; i < 10; ++i)3303      ;3304  }3305#pragma omp parallel master3306  {3307#pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}3308    for (int i = 0; i < 10; ++i)3309      ;3310  }3311#pragma omp parallel master3312  {3313#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}3314    for (int i = 0; i < 10; ++i)3315      ;3316  }3317#pragma omp parallel master3318  {3319#pragma omp target simd // OK3320    for (int i = 0; i < 10; ++i)3321      ;3322  }3323#pragma omp parallel master3324  {3325#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}3326    for (int i = 0; i < 10; ++i)3327      ;3328  }3329#pragma omp parallel master3330  {3331#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}3332    for (int i = 0; i < 10; ++i)3333      ;3334  }3335#pragma omp parallel master3336  {3337#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}3338    for (int i = 0; i < 10; ++i)3339      ;3340  }3341#pragma omp parallel master3342  {3343#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}3344    for (int i = 0; i < 10; ++i)3345      ;3346  }3347#pragma omp parallel master3348  {3349#pragma omp target teams // OK3350    a++;3351  }3352#pragma omp parallel master3353  {3354#pragma omp target teams distribute // OK3355    for (int i = 0; i < 10; ++i)3356      ;3357  }3358#pragma omp parallel master3359  {3360#pragma omp target teams distribute parallel for // OK3361    for (int i = 0; i < 10; ++i)3362      ;3363  }3364#pragma omp parallel master3365  {3366#pragma omp target teams distribute parallel for simd // OK3367    for (int i = 0; i < 10; ++i)3368      ;3369  }3370#pragma omp parallel master3371  {3372#pragma omp target teams distribute simd // OK3373    for (int i = 0; i < 10; ++i)3374      ;3375  }3376 3377// PARALLEL MASKED DIRECTIVE3378#pragma omp parallel masked3379  {3380#pragma omp for // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}3381    for (int i = 0; i < 10; ++i)3382      ;3383  }3384#pragma omp parallel masked3385  {3386#pragma omp simd3387    for (int i = 0; i < 10; ++i)3388      ;3389  }3390#pragma omp parallel masked3391  {3392#pragma omp for simd // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}3393    for (int i = 0; i < 10; ++i)3394      ;3395  }3396#pragma omp parallel masked3397  {3398#pragma omp parallel3399    for (int i = 0; i < 10; ++i)3400      ;3401  }3402#pragma omp parallel masked3403  {3404#pragma omp single // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}3405    {3406      bar();3407    }3408  }3409#pragma omp parallel masked3410  {3411#pragma omp master // OK, though second 'master' is redundant3412    {3413      bar();3414    }3415  }3416#pragma omp parallel masked3417  {3418#pragma omp critical3419    {3420      bar();3421    }3422  }3423#pragma omp parallel masked3424  {3425#pragma omp sections // expected-error {{region cannot be closely nested inside 'parallel masked' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}3426    {3427      bar();3428    }3429  }3430#pragma omp parallel master3431  {3432#pragma omp parallel3433    {3434#pragma omp parallel master // OK3435      {3436        bar();3437      }3438#pragma omp for // OK3439      for (int i = 0; i < 10; ++i)3440        ;3441#pragma omp for simd // OK3442      for (int i = 0; i < 10; ++i)3443        ;3444#pragma omp sections // OK3445      {3446        bar();3447      }3448    }3449  }3450#pragma omp parallel master3451  {3452#pragma omp parallel master // OK3453      {3454        bar();3455      }3456#pragma omp parallel3457    {3458#pragma omp for // OK3459      for (int i = 0; i < 10; ++i)3460        ;3461#pragma omp for simd // OK3462      for (int i = 0; i < 10; ++i)3463        ;3464#pragma omp sections // OK3465      {3466        bar();3467      }3468    }3469  }3470#pragma omp parallel master3471  {3472#pragma omp parallel for3473    for (int i = 0; i < 10; ++i)3474      ;3475  }3476#pragma omp parallel master3477  {3478#pragma omp parallel for simd3479    for (int i = 0; i < 10; ++i)3480      ;3481  }3482#pragma omp parallel master3483  {3484#pragma omp parallel sections3485    {3486      bar();3487    }3488  }3489#pragma omp parallel master3490  {3491#pragma omp task3492    {3493      bar();3494    }3495  }3496#pragma omp parallel master3497  {3498#pragma omp taskyield3499    bar();3500  }3501#pragma omp parallel master3502  {3503#pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel master' region}}3504    bar();3505  }3506#pragma omp parallel master3507  {3508#pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel master' region}}3509    bar();3510  }3511#pragma omp parallel master3512  {3513#pragma omp taskwait3514    bar();3515  }3516#pragma omp parallel master3517  {3518#pragma omp flush3519    bar();3520  }3521#pragma omp parallel master3522  {3523#pragma omp ordered // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}3524    bar();3525  }3526#pragma omp parallel master3527  {3528#pragma omp atomic3529    ++a;3530  }3531#pragma omp parallel master3532  {3533#pragma omp target3534    ++a;3535  }3536#pragma omp parallel master3537  {3538#pragma omp target parallel3539    ++a;3540  }3541#pragma omp parallel master3542  {3543#pragma omp target parallel for3544    for (int i = 0; i < 10; ++i)3545      ;3546  }3547#pragma omp parallel master3548  {3549#pragma omp target enter data map(to: a)3550    ++a;3551  }3552#pragma omp parallel master3553  {3554#pragma omp target exit data map(from: a)3555    ++a;3556  }3557#pragma omp parallel master3558  {3559#pragma omp teams // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}3560    ++a;3561  }3562#pragma omp parallel master3563  {3564#pragma omp taskloop3565  for (int i = 0; i < 10; ++i)3566    ++a;3567  }3568#pragma omp parallel master3569  {3570#pragma omp distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}3571    for (int i = 0; i < 10; ++i)3572      ;3573  }3574#pragma omp parallel master3575  {3576#pragma omp target update to(a)3577    bar();3578  }3579#pragma omp parallel master3580  {3581#pragma omp distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for' directive into a teams region?}}3582    for (int i = 0; i < 10; ++i)3583      ;3584  }3585#pragma omp parallel master3586  {3587#pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}3588    for (int i = 0; i < 10; ++i)3589      ;3590  }3591#pragma omp parallel master3592  {3593#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}3594    for (int i = 0; i < 10; ++i)3595      ;3596  }3597#pragma omp parallel master3598  {3599#pragma omp target simd // OK3600    for (int i = 0; i < 10; ++i)3601      ;3602  }3603#pragma omp parallel master3604  {3605#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}3606    for (int i = 0; i < 10; ++i)3607      ;3608  }3609#pragma omp parallel master3610  {3611#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}3612    for (int i = 0; i < 10; ++i)3613      ;3614  }3615#pragma omp parallel master3616  {3617#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}3618    for (int i = 0; i < 10; ++i)3619      ;3620  }3621#pragma omp parallel master3622  {3623#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'parallel master' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}3624    for (int i = 0; i < 10; ++i)3625      ;3626  }3627#pragma omp parallel master3628  {3629#pragma omp target teams // OK3630    a++;3631  }3632#pragma omp parallel master3633  {3634#pragma omp target teams distribute // OK3635    for (int i = 0; i < 10; ++i)3636      ;3637  }3638#pragma omp parallel master3639  {3640#pragma omp target teams distribute parallel for // OK3641    for (int i = 0; i < 10; ++i)3642      ;3643  }3644#pragma omp parallel master3645  {3646#pragma omp target teams distribute parallel for simd // OK3647    for (int i = 0; i < 10; ++i)3648      ;3649  }3650#pragma omp parallel master3651  {3652#pragma omp target teams distribute simd // OK3653    for (int i = 0; i < 10; ++i)3654      ;3655  }3656// PARALLEL SECTIONS DIRECTIVE3657#pragma omp parallel sections3658  {3659#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?}}3660    for (int i = 0; i < 10; ++i)3661      ;3662  }3663#pragma omp parallel sections3664  {3665#pragma omp simd3666    for (int i = 0; i < 10; ++i)3667      ;3668  }3669#pragma omp parallel sections3670  {3671#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?}}3672    for (int i = 0; i < 10; ++i)3673      ;3674  }3675#pragma omp parallel sections3676  {3677#pragma omp parallel3678    for (int i = 0; i < 10; ++i)3679      ;3680  }3681#pragma omp parallel sections3682  {3683#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?}}3684    {3685      bar();3686    }3687  }3688#pragma omp parallel sections3689  {3690#pragma omp section3691    {3692      bar();3693    }3694  }3695#pragma omp parallel sections3696  {3697#pragma omp section3698    {3699#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?}}3700      bar();3701    }3702  }3703#pragma omp parallel sections3704  {3705#pragma omp section3706    {3707#pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}3708      bar();3709    }3710  }3711#pragma omp parallel sections3712  {3713#pragma omp section3714    {3715#pragma omp critical3716      bar();3717    }3718  }3719#pragma omp parallel sections3720  {3721#pragma omp parallel3722    {3723#pragma omp single // OK3724      {3725        bar();3726      }3727#pragma omp for // OK3728      for (int i = 0; i < 10; ++i)3729        ;3730#pragma omp for simd // OK3731      for (int i = 0; i < 10; ++i)3732        ;3733#pragma omp sections // OK3734      {3735        bar();3736      }3737    }3738  }3739#pragma omp parallel sections3740  {3741#pragma omp parallel for3742    for (int i = 0; i < 10; ++i)3743      ;3744  }3745#pragma omp parallel sections3746  {3747#pragma omp parallel for simd3748    for (int i = 0; i < 10; ++i)3749      ;3750  }3751#pragma omp parallel sections3752  {3753#pragma omp parallel sections3754    {3755      bar();3756    }3757  }3758#pragma omp parallel sections3759  {3760#pragma omp task3761    {3762      bar();3763    }3764  }3765#pragma omp parallel sections3766  {3767#pragma omp taskyield3768  }3769#pragma omp parallel sections3770  {3771#pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}3772  }3773#pragma omp parallel sections3774  {3775#pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}}3776  }3777#pragma omp parallel sections3778  {3779#pragma omp taskwait3780  }3781#pragma omp parallel sections3782  {3783#pragma omp flush3784  }3785#pragma omp parallel sections3786  {3787#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?}}3788    bar();3789  }3790#pragma omp parallel sections3791  {3792#pragma omp atomic3793    ++a;3794  }3795#pragma omp parallel sections3796  {3797#pragma omp target3798    ++a;3799  }3800#pragma omp parallel sections3801  {3802#pragma omp target parallel3803    ++a;3804  }3805#pragma omp parallel sections3806  {3807#pragma omp target parallel for3808    for (int i = 0; i < 10; ++i)3809      ;3810  }3811#pragma omp parallel sections3812  {3813#pragma omp target enter data map(to: a)3814  }3815#pragma omp parallel sections3816  {3817#pragma omp target exit data map(from: a)3818  }3819#pragma omp parallel sections3820  {3821#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?}}3822    ++a;3823  }3824#pragma omp parallel sections3825  {3826#pragma omp taskloop3827  for (int i = 0; i < 10; ++i)3828    ++a;3829  }3830#pragma omp parallel sections3831  {3832#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?}}3833    for (int i = 0; i < 10; ++i)3834      ;3835  }3836#pragma omp parallel sections3837  {3838#pragma omp target update to(a)3839  }3840#pragma omp parallel sections3841  {3842#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?}}3843    for (int i = 0; i < 10; ++i)3844      ;3845  }3846#pragma omp parallel sections3847  {3848#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?}}3849    for (int i = 0; i < 10; ++i)3850      ;3851  }3852#pragma omp parallel sections3853  {3854#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?}}3855    for (int i = 0; i < 10; ++i)3856      ;3857  }3858#pragma omp parallel sections3859  {3860#pragma omp target simd // OK3861    for (int i = 0; i < 10; ++i)3862      ;3863  }3864#pragma omp parallel sections3865  {3866#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?}}3867    for (int i = 0; i < 10; ++i)3868      ;3869  }3870#pragma omp parallel sections3871  {3872#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?}}3873    for (int i = 0; i < 10; ++i)3874      ;3875  }3876#pragma omp parallel sections3877  {3878#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?}}3879    for (int i = 0; i < 10; ++i)3880      ;3881  }3882#pragma omp parallel sections3883  {3884#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?}}3885    for (int i = 0; i < 10; ++i)3886      ;3887  }3888#pragma omp parallel sections3889  {3890#pragma omp target teams // OK3891    a++;3892  }3893#pragma omp parallel sections3894  {3895#pragma omp target teams distribute // OK3896    for (int i = 0; i < 10; ++i)3897      ;3898  }3899#pragma omp parallel sections3900  {3901#pragma omp target teams distribute parallel for // OK3902    for (int i = 0; i < 10; ++i)3903      ;3904  }3905#pragma omp parallel sections3906  {3907#pragma omp target teams distribute parallel for simd // OK3908    for (int i = 0; i < 10; ++i)3909      ;3910  }3911#pragma omp parallel sections3912  {3913#pragma omp target teams distribute simd // OK3914    for (int i = 0; i < 10; ++i)3915      ;3916  }3917 3918// TASK DIRECTIVE3919#pragma omp task3920#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?}}3921  for (int i = 0; i < 10; ++i)3922    ;3923#pragma omp task3924#pragma omp simd3925  for (int i = 0; i < 10; ++i)3926    ;3927#pragma omp task3928#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?}}3929  for (int i = 0; i < 10; ++i)3930    ;3931#pragma omp task3932#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?}}3933  {3934    bar();3935  }3936#pragma omp task3937#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}3938  {3939    bar();3940  }3941#pragma omp task3942#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?}}3943  bar();3944#pragma omp task3945#pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}3946  bar();3947#pragma omp task3948#pragma omp critical3949  bar();3950 3951#pragma omp task3952#pragma omp parallel for3953  for (int i = 0; i < 10; ++i)3954    ;3955#pragma omp task3956#pragma omp parallel for simd3957  for (int i = 0; i < 10; ++i)3958    ;3959#pragma omp task3960#pragma omp parallel sections3961  {3962    bar();3963  }3964#pragma omp task3965#pragma omp task3966  {3967    bar();3968  }3969#pragma omp task3970  {3971#pragma omp taskyield3972    bar();3973  }3974#pragma omp task3975  {3976#pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}3977    bar();3978  }3979#pragma omp task3980  {3981#pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}}3982    bar();3983  }3984#pragma omp task3985  {3986#pragma omp taskwait3987    bar();3988  }3989#pragma omp task3990  {3991#pragma omp flush3992    bar();3993  }3994#pragma omp task3995  {3996#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?}}3997    bar();3998  }3999#pragma omp task4000  {4001#pragma omp atomic4002    ++a;4003  }4004#pragma omp task4005  {4006#pragma omp target4007    ++a;4008  }4009#pragma omp task4010  {4011#pragma omp target parallel4012    ++a;4013  }4014#pragma omp task4015#pragma omp target parallel for4016  for (int i = 0; i < 10; ++i)4017    ;4018#pragma omp task4019  {4020#pragma omp target enter data map(to: a)4021    ++a;4022  }4023#pragma omp task4024  {4025#pragma omp target exit data map(from: a)4026    ++a;4027  }4028#pragma omp task4029  {4030#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?}}4031    ++a;4032  }4033#pragma omp task4034  {4035#pragma omp taskloop4036  for (int i = 0; i < 10; ++i)4037    ++a;4038  }4039#pragma omp task4040  {4041#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?}}4042    for (int i = 0; i < 10; ++i)4043      ;4044  }4045#pragma omp task4046  {4047#pragma omp target update to(a)4048    bar();4049  }4050#pragma omp task4051  {4052#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?}}4053    for (int i = 0; i < 10; ++i)4054      ;4055  }4056#pragma omp task4057  {4058#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?}}4059    for (int i = 0; i < 10; ++i)4060      ;4061  }4062#pragma omp task4063  {4064#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?}}4065    for (int i = 0; i < 10; ++i)4066      ;4067  }4068#pragma omp task4069  {4070#pragma omp target simd // OK4071    for (int i = 0; i < 10; ++i)4072      ;4073  }4074#pragma omp task4075  {4076#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?}}4077    for (int i = 0; i < 10; ++i)4078      ;4079  }4080#pragma omp task4081  {4082#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?}}4083    for (int i = 0; i < 10; ++i)4084      ;4085  }4086#pragma omp task4087  {4088#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?}}4089    for (int i = 0; i < 10; ++i)4090      ;4091  }4092#pragma omp task4093  {4094#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?}}4095    for (int i = 0; i < 10; ++i)4096      ;4097  }4098#pragma omp task4099  {4100#pragma omp target teams // OK4101    a++;4102  }4103#pragma omp task4104  {4105#pragma omp target teams distribute // OK4106    for (int i = 0; i < 10; ++i)4107      ;4108  }4109#pragma omp task4110  {4111#pragma omp target teams distribute parallel for // OK4112    for (int i = 0; i < 10; ++i)4113      ;4114  }4115#pragma omp task4116  {4117#pragma omp target teams distribute parallel for simd // OK4118    for (int i = 0; i < 10; ++i)4119      ;4120  }4121#pragma omp task4122  {4123#pragma omp target teams distribute simd // OK4124    for (int i = 0; i < 10; ++i)4125      ;4126  }4127 4128// ORDERED DIRECTIVE4129#pragma omp ordered4130  {4131#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?}}4132    for (int i = 0; i < 10; ++i)4133      ;4134  }4135#pragma omp ordered4136  {4137#pragma omp simd4138    for (int i = 0; i < 10; ++i)4139      ;4140  }4141#pragma omp ordered4142  {4143#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?}}4144    for (int i = 0; i < 10; ++i)4145      ;4146  }4147#pragma omp ordered4148  {4149#pragma omp parallel4150    for (int i = 0; i < 10; ++i)4151      ;4152  }4153#pragma omp ordered4154  {4155#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?}}4156    {4157      bar();4158    }4159  }4160#pragma omp ordered4161  {4162#pragma omp master // OK, though second 'ordered' is redundant4163    {4164      bar();4165    }4166  }4167#pragma omp ordered4168  {4169#pragma omp critical4170    {4171      bar();4172    }4173  }4174#pragma omp ordered4175  {4176#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?}}4177    {4178      bar();4179    }4180  }4181#pragma omp ordered4182  {4183#pragma omp parallel for ordered4184    for (int j = 0; j < 10; ++j) {4185#pragma omp ordered // OK4186      {4187        bar();4188      }4189    }4190  }4191#pragma omp ordered4192  {4193#pragma omp parallel for simd ordered4194    for (int j = 0; j < 10; ++j) {4195#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}4196      {4197        bar();4198      }4199    }4200  }4201#pragma omp ordered4202  {4203#pragma omp parallel for simd ordered4204    for (int j = 0; j < 10; ++j) {4205#pragma omp ordered simd4206      {4207        bar();4208      }4209    }4210  }4211#pragma omp ordered4212  {4213#pragma omp parallel for4214    for (int i = 0; i < 10; ++i)4215      ;4216  }4217#pragma omp ordered4218  {4219#pragma omp parallel for simd4220    for (int i = 0; i < 10; ++i)4221      ;4222  }4223#pragma omp ordered4224  {4225#pragma omp parallel sections4226    {4227      bar();4228    }4229  }4230#pragma omp ordered4231  {4232#pragma omp task4233    {4234      bar();4235    }4236  }4237#pragma omp ordered4238  {4239#pragma omp taskyield4240    bar();4241  }4242#pragma omp ordered4243  {4244#pragma omp barrier // expected-error {{region cannot be closely nested inside 'ordered' region}}4245    bar();4246  }4247#pragma omp ordered4248  {4249#pragma omp scan // expected-error {{region cannot be closely nested inside 'ordered' region}}4250    bar();4251  }4252#pragma omp ordered4253  {4254#pragma omp taskwait4255    bar();4256  }4257#pragma omp ordered4258  {4259#pragma omp flush4260    bar();4261  }4262#pragma omp ordered4263  {4264#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?}}4265    bar();4266  }4267#pragma omp ordered4268  {4269#pragma omp atomic4270    ++a;4271  }4272#pragma omp ordered4273  {4274#pragma omp target4275    ++a;4276  }4277#pragma omp ordered4278  {4279#pragma omp target parallel4280    ++a;4281  }4282#pragma omp ordered4283  {4284#pragma omp target parallel for ordered4285    for (int j = 0; j < 10; ++j) {4286#pragma omp ordered // OK4287      {4288        bar();4289      }4290    }4291  }4292#pragma omp ordered4293  {4294#pragma omp target parallel for4295    for (int i = 0; i < 10; ++i)4296      ;4297  }4298#pragma omp ordered4299  {4300#pragma omp target enter data map(to: a)4301    ++a;4302  }4303#pragma omp ordered4304  {4305#pragma omp target exit data map(from: a)4306    ++a;4307  }4308#pragma omp ordered4309  {4310#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?}}4311    ++a;4312  }4313#pragma omp ordered4314  {4315#pragma omp taskloop4316  for (int i = 0; i < 10; ++i)4317    ++a;4318  }4319#pragma omp ordered4320  {4321#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?}}4322    for (int i = 0; i < 10; ++i)4323      ;4324  }4325#pragma omp ordered4326  {4327    bar();4328#pragma omp target update to(a)4329    bar();4330  }4331#pragma omp ordered4332  {4333#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?}}4334    for (int i = 0; i < 10; ++i)4335      ;4336  }4337#pragma omp ordered4338  {4339#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?}}4340    for (int i = 0; i < 10; ++i)4341      ;4342  }4343#pragma omp ordered4344  {4345#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?}}4346    for (int i = 0; i < 10; ++i)4347      ;4348  }4349#pragma omp ordered4350  {4351#pragma omp target simd // OK4352    for (int i = 0; i < 10; ++i)4353      ;4354  }4355#pragma omp ordered4356  {4357#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?}}4358    for (int i = 0; i < 10; ++i)4359      ;4360  }4361#pragma omp ordered4362  {4363#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?}}4364    for (int i = 0; i < 10; ++i)4365      ;4366  }4367#pragma omp ordered4368  {4369#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?}}4370    for (int i = 0; i < 10; ++i)4371      ;4372  }4373#pragma omp ordered4374  {4375#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?}}4376    for (int i = 0; i < 10; ++i)4377      ;4378  }4379#pragma omp ordered4380  {4381#pragma omp target teams // OK4382    a++;4383  }4384#pragma omp ordered4385  {4386#pragma omp target teams distribute // OK4387    for (int i = 0; i < 10; ++i)4388      ;4389  }4390#pragma omp ordered4391  {4392#pragma omp target teams distribute parallel for // OK4393    for (int i = 0; i < 10; ++i)4394      ;4395  }4396#pragma omp ordered4397  {4398#pragma omp target teams distribute parallel for simd // OK4399    for (int i = 0; i < 10; ++i)4400      ;4401  }4402#pragma omp ordered4403  {4404#pragma omp target teams distribute simd // OK4405    for (int i = 0; i < 10; ++i)4406      ;4407  }4408 4409// ATOMIC DIRECTIVE4410#pragma omp atomic4411  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4412  // expected-note@+1 {{expected an expression statement}}4413  {4414#pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4415    for (int i = 0; i < 10; ++i)4416      ;4417  }4418#pragma omp atomic4419  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4420  // expected-note@+1 {{expected an expression statement}}4421  {4422#pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4423    for (int i = 0; i < 10; ++i)4424      ;4425  }4426#pragma omp atomic4427  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4428  // expected-note@+1 {{expected an expression statement}}4429  {4430#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4431    for (int i = 0; i < 10; ++i)4432      ;4433  }4434#pragma omp atomic4435  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4436  // expected-note@+1 {{expected an expression statement}}4437  {4438#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4439    for (int i = 0; i < 10; ++i)4440      ;4441  }4442#pragma omp atomic4443  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4444  // expected-note@+1 {{expected an expression statement}}4445  {4446#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4447    {4448      bar();4449    }4450  }4451#pragma omp atomic4452  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4453  // expected-note@+1 {{expected an expression statement}}4454  {4455#pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4456    {4457      bar();4458    }4459  }4460#pragma omp atomic4461  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4462  // expected-note@+1 {{expected an expression statement}}4463  {4464#pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4465    {4466      bar();4467    }4468  }4469#pragma omp atomic4470  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4471  // expected-note@+1 {{expected an expression statement}}4472  {4473#pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4474    {4475      bar();4476    }4477  }4478#pragma omp atomic4479  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4480  // expected-note@+1 {{expected an expression statement}}4481  {4482#pragma omp parallel master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4483    {4484      bar();4485    }4486  }4487#pragma omp atomic4488  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4489  // expected-note@+1 {{expected an expression statement}}4490  {4491#pragma omp parallel masked // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4492    {4493      bar();4494    }4495  }4496#pragma omp atomic4497  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4498  // expected-note@+1 {{expected an expression statement}}4499  {4500#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4501    {4502      bar();4503    }4504  }4505#pragma omp atomic4506  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4507  // expected-note@+1 {{expected an expression statement}}4508  {4509#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4510    for (int i = 0; i < 10; ++i)4511      ;4512  }4513#pragma omp atomic4514  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4515  // expected-note@+1 {{expected an expression statement}}4516  {4517#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4518    for (int i = 0; i < 10; ++i)4519      ;4520  }4521#pragma omp atomic4522  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4523  // expected-note@+1 {{expected an expression statement}}4524  {4525#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4526    {4527      bar();4528    }4529  }4530#pragma omp atomic4531  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4532  // expected-note@+1 {{expected an expression statement}}4533  {4534#pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4535    {4536      bar();4537    }4538  }4539#pragma omp atomic4540  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4541  // expected-note@+1 {{expected an expression statement}}4542  {4543#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4544    bar();4545  }4546#pragma omp atomic4547  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4548  // expected-note@+1 {{expected an expression statement}}4549  {4550#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4551    bar();4552  }4553#pragma omp atomic4554  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4555  // expected-note@+1 {{expected an expression statement}}4556  {4557#pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4558    bar();4559  }4560#pragma omp atomic4561  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4562  // expected-note@+1 {{expected an expression statement}}4563  {4564#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4565    bar();4566  }4567#pragma omp atomic4568  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4569  // expected-note@+1 {{expected an expression statement}}4570  {4571#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4572    bar();4573  }4574#pragma omp atomic4575  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4576  // expected-note@+1 {{expected an expression statement}}4577  {4578#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4579    bar();4580  }4581#pragma omp atomic4582  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4583  // expected-note@+1 {{expected an expression statement}}4584  {4585#pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4586    ++a;4587  }4588#pragma omp atomic4589  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4590  // expected-note@+1 {{expected an expression statement}}4591  {4592#pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4593    ++a;4594  }4595#pragma omp atomic4596  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4597  // expected-note@+1 {{expected an expression statement}}4598  {4599#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4600    ++a;4601  }4602#pragma omp atomic4603  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4604  // expected-note@+1 {{expected an expression statement}}4605  {4606#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4607    for (int i = 0; i < 10; ++i)4608      ;4609  }4610#pragma omp atomic4611  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4612  // expected-note@+1 {{expected an expression statement}}4613  {4614#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4615    ++a;4616  }4617#pragma omp atomic4618  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4619  // expected-note@+1 {{expected an expression statement}}4620  {4621#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4622    ++a;4623  }4624#pragma omp atomic4625  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4626  // expected-note@+1 {{expected an expression statement}}4627  {4628#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4629    ++a;4630  }4631#pragma omp atomic4632  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4633  // expected-note@+1 {{expected an expression statement}}4634  {4635#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4636  for (int i = 0; i < 10; ++i)4637    ++a;4638  }4639#pragma omp atomic4640  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4641  // expected-note@+1 {{expected an expression statement}}4642  {4643#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4644    for (int i = 0; i < 10; ++i)4645      ;4646  }4647#pragma omp atomic4648  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4649  // expected-note@+1 {{expected an expression statement}}4650  {4651#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4652    bar();4653  }4654#pragma omp atomic4655  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4656  // expected-note@+1 {{expected an expression statement}}4657  {4658#pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4659    for (int i = 0; i < 10; ++i)4660      ;4661  }4662#pragma omp atomic4663  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4664  // expected-note@+1 {{expected an expression statement}}4665  {4666#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4667    for (int i = 0; i < 10; ++i)4668      ;4669  }4670#pragma omp atomic4671  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4672  // expected-note@+1 {{expected an expression statement}}4673  {4674#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4675    for (int i = 0; i < 10; ++i)4676      ;4677  }4678#pragma omp atomic4679  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4680  // expected-note@+1 {{expected an expression statement}}4681  {4682#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4683    for (int i = 0; i < 10; ++i)4684      ;4685  }4686#pragma omp atomic4687  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4688  // expected-note@+1 {{expected an expression statement}}4689  {4690#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4691    for (int i = 0; i < 10; ++i)4692      ;4693  }4694#pragma omp atomic4695  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4696  // expected-note@+1 {{expected an expression statement}}4697  {4698#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4699    for (int i = 0; i < 10; ++i)4700      ;4701  }4702#pragma omp atomic4703  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4704  // expected-note@+1 {{expected an expression statement}}4705  {4706#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4707    for (int i = 0; i < 10; ++i)4708      ;4709  }4710#pragma omp atomic4711  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4712  // expected-note@+1 {{expected an expression statement}}4713  {4714#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4715    for (int i = 0; i < 10; ++i)4716      ;4717  }4718#pragma omp atomic4719  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4720  // expected-note@+1 {{expected an expression statement}}4721  {4722#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4723    a++;4724  }4725#pragma omp atomic4726  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4727  // expected-note@+1 {{expected an expression statement}}4728  {4729#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4730    for (int i = 0; i < 10; ++i)4731      ;4732  }4733#pragma omp atomic4734  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4735  // expected-note@+1 {{expected an expression statement}}4736  {4737#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4738    for (int i = 0; i < 10; ++i)4739      ;4740  }4741#pragma omp atomic4742  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4743  // expected-note@+1 {{expected an expression statement}}4744  {4745#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4746    for (int i = 0; i < 10; ++i)4747      ;4748  }4749#pragma omp atomic4750  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}4751  // expected-note@+1 {{expected an expression statement}}4752  {4753#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}4754    for (int i = 0; i < 10; ++i)4755      ;4756  }4757 4758// TARGET DIRECTIVE4759#pragma omp target4760#pragma omp parallel4761  bar();4762#pragma omp target4763#pragma omp for4764  for (int i = 0; i < 10; ++i)4765    ;4766#pragma omp target4767#pragma omp simd4768  for (int i = 0; i < 10; ++i)4769    ;4770#pragma omp target4771#pragma omp for simd4772  for (int i = 0; i < 10; ++i)4773    ;4774#pragma omp target4775#pragma omp sections4776  {4777    bar();4778  }4779#pragma omp target4780#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}4781  {4782    bar();4783  }4784#pragma omp target4785#pragma omp single4786  bar();4787 4788#pragma omp target4789#pragma omp master4790  {4791    bar();4792  }4793#pragma omp target4794#pragma omp critical4795  {4796    bar();4797  }4798#pragma omp target4799#pragma omp parallel for4800  for (int i = 0; i < 10; ++i)4801    ;4802#pragma omp target4803#pragma omp parallel for simd4804  for (int i = 0; i < 10; ++i)4805    ;4806#pragma omp target4807#pragma omp parallel sections4808  {4809    bar();4810  }4811#pragma omp target4812#pragma omp task4813  {4814    bar();4815  }4816#pragma omp target4817  {4818#pragma omp taskyield4819    bar();4820  }4821#pragma omp target4822  {4823#pragma omp barrier4824    bar();4825  }4826#pragma omp target4827  {4828#pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}4829    bar();4830  }4831#pragma omp target4832  {4833#pragma omp taskwait4834    bar();4835  }4836#pragma omp target4837  {4838#pragma omp flush4839    bar();4840  }4841#pragma omp target4842  {4843#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?}}4844    bar();4845  }4846#pragma omp target4847  {4848#pragma omp atomic4849    ++a;4850  }4851#pragma omp target4852  {4853#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}4854    ++a;4855  }4856#pragma omp target4857  {4858#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}4859    ++a;4860  }4861#pragma omp target4862#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}4863  for (int i = 0; i < 10; ++i)4864    ;4865#pragma omp target4866  {4867#pragma omp teams4868    ++a;4869  }4870#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}4871  {4872#pragma omp teams // expected-note {{directive outside teams construct here}}4873    ++a;4874#pragma omp teams // expected-note {{nested teams construct here}}4875    ++a;4876  }4877#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}4878  {4879    ++a;           // expected-note {{statement outside teams construct here}}4880#pragma omp teams  // expected-note {{nested teams construct here}}4881    ++a;4882  }4883#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}4884  {4885#pragma omp teams  // expected-note {{nested teams construct here}}4886    ++a;4887    ++a;           // expected-note {{statement outside teams construct here}}4888  }4889#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}4890  {4891    while (0)      // expected-note {{statement outside teams construct here}}4892#pragma omp teams  // expected-note {{nested teams construct here}}4893    ++a;4894  }4895#pragma omp target4896  {4897#pragma omp taskloop4898  for (int i = 0; i < 10; ++i)4899    ++a;4900  }4901#pragma omp target4902  {4903#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?}}4904    for (int i = 0; i < 10; ++i)4905      ;4906  }4907#pragma omp target4908  {4909#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}4910  }4911#pragma omp target4912  {4913#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}4914  }4915#pragma omp target4916  {4917#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}4918  }4919#pragma omp target4920  {4921#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?}}4922    for (int i = 0; i < 10; ++i)4923      ;4924  }4925#pragma omp target4926  {4927#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?}}4928    for (int i = 0; i < 10; ++i)4929      ;4930  }4931#pragma omp target4932  {4933#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?}}4934    for (int i = 0; i < 10; ++i)4935      ;4936  }4937#pragma omp target4938  {4939#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}4940    for (int i = 0; i < 10; ++i)4941      ;4942  }4943#pragma omp target4944  {4945#pragma omp teams distribute // OK4946    for (int i = 0; i < 10; ++i)4947      ;4948  }4949#pragma omp target4950  {4951#pragma omp teams distribute simd // OK4952    for (int i = 0; i < 10; ++i)4953      ;4954  }4955#pragma omp target4956  {4957#pragma omp teams distribute parallel for simd // OK4958    for (int i = 0; i < 10; ++i)4959      ;4960  }4961#pragma omp target4962  {4963#pragma omp teams distribute parallel for // OK4964    for (int i = 0; i < 10; ++i)4965      ;4966  }4967#pragma omp target4968  {4969#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}4970    for (int i = 0; i < 10; ++i)4971      ;4972  }4973#pragma omp target4974  {4975#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}4976    for (int i = 0; i < 10; ++i)4977      ;4978  }4979#pragma omp target4980  {4981#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}4982    for (int i = 0; i < 10; ++i)4983      ;4984  }4985#pragma omp target4986  {4987#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}4988    for (int i = 0; i < 10; ++i)4989      ;4990  }4991#pragma omp target4992  {4993#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}4994    for (int i = 0; i < 10; ++i)4995      ;4996  }4997 4998// TARGET PARALLEL DIRECTIVE4999#pragma omp target parallel5000#pragma omp parallel5001  bar();5002#pragma omp target parallel5003#pragma omp for5004  for (int i = 0; i < 10; ++i)5005    ;5006#pragma omp target parallel5007#pragma omp simd5008  for (int i = 0; i < 10; ++i)5009    ;5010#pragma omp target parallel5011#pragma omp for simd5012  for (int i = 0; i < 10; ++i)5013    ;5014#pragma omp target parallel5015#pragma omp sections5016  {5017    bar();5018  }5019#pragma omp target parallel5020#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}5021  {5022    bar();5023  }5024#pragma omp target parallel5025#pragma omp single5026  bar();5027 5028#pragma omp target parallel5029#pragma omp master5030  {5031    bar();5032  }5033#pragma omp target5034#pragma omp parallel master5035  {5036    bar();5037  }5038#pragma omp target5039#pragma omp parallel masked5040  {5041    bar();5042  }5043#pragma omp target parallel5044#pragma omp critical5045  {5046    bar();5047  }5048#pragma omp target parallel5049#pragma omp parallel for5050  for (int i = 0; i < 10; ++i)5051    ;5052#pragma omp target parallel5053#pragma omp parallel for simd5054  for (int i = 0; i < 10; ++i)5055    ;5056#pragma omp target parallel5057#pragma omp parallel sections5058  {5059    bar();5060  }5061#pragma omp target parallel5062#pragma omp task5063  {5064    bar();5065  }5066#pragma omp target parallel5067  {5068#pragma omp taskyield5069    bar();5070  }5071#pragma omp target parallel5072  {5073#pragma omp barrier5074    bar();5075  }5076#pragma omp target parallel5077  {5078#pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}5079    bar();5080  }5081#pragma omp target parallel5082  {5083#pragma omp taskwait5084    bar();5085  }5086#pragma omp target parallel5087  {5088#pragma omp flush5089    bar();5090  }5091#pragma omp target parallel5092  {5093#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?}}5094    bar();5095  }5096#pragma omp target parallel5097  {5098#pragma omp atomic5099    ++a;5100  }5101#pragma omp target parallel5102  {5103#pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}5104    ++a;5105  }5106#pragma omp target parallel5107  {5108#pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}5109    ++a;5110  }5111#pragma omp target parallel5112#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}5113  for (int i = 0; i < 10; ++i)5114    ;5115#pragma omp target parallel5116  {5117#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?}}5118    ++a;5119  }5120#pragma omp target parallel5121  {5122    ++a;5123#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?}}5124    ++a;5125  }5126#pragma omp target parallel5127  {5128#pragma omp taskloop5129  for (int i = 0; i < 10; ++i)5130    ++a;5131  }5132#pragma omp target parallel5133  {5134#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?}}5135    for (int i = 0; i < 10; ++i)5136      ;5137  }5138#pragma omp target parallel5139  {5140#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}5141  }5142#pragma omp target parallel5143  {5144#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}5145  }5146#pragma omp target parallel5147  {5148#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}5149  }5150#pragma omp target parallel5151  {5152#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?}}5153    for (int i = 0; i < 10; ++i)5154      ;5155  }5156#pragma omp target parallel5157  {5158#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?}}5159    for (int i = 0; i < 10; ++i)5160      ;5161  }5162#pragma omp target parallel5163  {5164#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?}}5165    for (int i = 0; i < 10; ++i)5166      ;5167  }5168#pragma omp target parallel5169  {5170#pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' region}}5171    for (int i = 0; i < 10; ++i)5172      ;5173  }5174#pragma omp target parallel5175  {5176#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?}}5177    for (int i = 0; i < 10; ++i)5178      ;5179  }5180#pragma omp target parallel5181  {5182#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?}}5183    for (int i = 0; i < 10; ++i)5184      ;5185  }5186#pragma omp target parallel5187  {5188#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?}}5189    for (int i = 0; i < 10; ++i)5190      ;5191  }5192#pragma omp target parallel5193  {5194#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?}}5195    for (int i = 0; i < 10; ++i)5196      ;5197  }5198#pragma omp target parallel5199  {5200#pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}5201    a++;5202  }5203#pragma omp target parallel5204  {5205#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}5206    for (int i = 0; i < 10; ++i)5207      ;5208  }5209#pragma omp target parallel5210  {5211#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}5212    for (int i = 0; i < 10; ++i)5213      ;5214  }5215#pragma omp target parallel5216  {5217#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}5218    for (int i = 0; i < 10; ++i)5219      ;5220  }5221#pragma omp target parallel5222  {5223#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}5224    for (int i = 0; i < 10; ++i)5225      ;5226  }5227 5228// TARGET PARALLEL FOR DIRECTIVE5229#pragma omp target parallel for5230  for (int i = 0; i < 10; ++i) {5231#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?}}5232    for (int i = 0; i < 10; ++i)5233      ;5234  }5235#pragma omp target parallel for5236  for (int i = 0; i < 10; ++i) {5237#pragma omp simd5238    for (int i = 0; i < 10; ++i)5239      ;5240  }5241#pragma omp target parallel for5242  for (int i = 0; i < 10; ++i) {5243#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?}}5244    for (int i = 0; i < 10; ++i)5245      ;5246  }5247#pragma omp target parallel for5248  for (int i = 0; i < 10; ++i) {5249#pragma omp parallel5250    for (int i = 0; i < 10; ++i)5251      ;5252  }5253#pragma omp target parallel for5254  for (int i = 0; i < 10; ++i) {5255#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?}}5256    {5257      bar();5258    }5259  }5260#pragma omp target parallel for5261  for (int i = 0; i < 10; ++i) {5262#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}5263    {5264      bar();5265    }5266  }5267#pragma omp target parallel for5268  for (int i = 0; i < 10; ++i) {5269#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?}}5270    {5271      bar();5272    }5273  }5274 5275#pragma omp target parallel for5276  for (int i = 0; i < 10; ++i) {5277#pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}5278    {5279      bar();5280    }5281  }5282 5283#pragma omp target parallel for5284  for (int i = 0; i < 10; ++i) {5285#pragma omp critical5286    {5287      bar();5288    }5289  }5290 5291#pragma omp target parallel for5292  for (int i = 0; i < 10; ++i) {5293#pragma omp parallel5294    {5295#pragma omp single // OK5296      {5297        bar();5298      }5299#pragma omp for // OK5300      for (int i = 0; i < 10; ++i)5301        ;5302#pragma omp for simd // OK5303      for (int i = 0; i < 10; ++i)5304        ;5305#pragma omp sections // OK5306      {5307        bar();5308      }5309    }5310  }5311#pragma omp target parallel for5312  for (int i = 0; i < 10; ++i) {5313#pragma omp parallel for5314    for (int i = 0; i < 10; ++i)5315      ;5316  }5317#pragma omp target parallel for5318  for (int i = 0; i < 10; ++i) {5319#pragma omp parallel for simd5320    for (int i = 0; i < 10; ++i)5321      ;5322  }5323#pragma omp target parallel for5324  for (int i = 0; i < 10; ++i) {5325#pragma omp parallel sections5326    {5327      bar();5328    }5329  }5330#pragma omp target parallel for5331  for (int i = 0; i < 10; ++i) {5332#pragma omp task5333    {5334      bar();5335    }5336  }5337#pragma omp target parallel for5338  for (int i = 0; i < 10; ++i) {5339#pragma omp taskyield5340    bar();5341  }5342#pragma omp target parallel for5343  for (int i = 0; i < 10; ++i) {5344#pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}5345    bar();5346  }5347#pragma omp target parallel for5348  for (int i = 0; i < 10; ++i) {5349#pragma omp taskwait5350    bar();5351  }5352#pragma omp target parallel for5353  for (int i = 0; i < 10; ++i) {5354#pragma omp flush5355    bar();5356  }5357#pragma omp target parallel for5358  for (int i = 0; i < 10; ++i) {5359#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?}}5360    bar();5361  }5362#pragma omp target parallel for ordered5363  for (int i = 0; i < 10; ++i) {5364#pragma omp ordered // OK5365    bar();5366  }5367#pragma omp target parallel for5368  for (int i = 0; i < 10; ++i) {5369#pragma omp atomic5370    ++a;5371  }5372#pragma omp target parallel for5373  for (int i = 0; i < 10; ++i) {5374#pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}5375    ++a;5376  }5377#pragma omp target parallel for5378  for (int i = 0; i < 10; ++i) {5379#pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}5380    ++a;5381  }5382#pragma omp target parallel for5383  for (int i = 0; i < 10; ++i) {5384#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}5385    for (int i = 0; i < 10; ++i)5386      ;5387  }5388#pragma omp target parallel for5389  for (int i = 0; i < 10; ++i) {5390#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}5391    ++a;5392  }5393#pragma omp target parallel for5394  for (int i = 0; i < 10; ++i) {5395#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}5396    ++a;5397  }5398#pragma omp target parallel for5399  for (int i = 0; i < 10; ++i) {5400#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?}}5401    ++a;5402  }5403#pragma omp target parallel for5404  for (int i = 0; i < 10; ++i) {5405#pragma omp taskloop5406  for (int i = 0; i < 10; ++i)5407    ++a;5408  }5409#pragma omp target parallel for5410  for (int i = 0; i < 10; ++i) {5411#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?}}5412    for (int j = 0; j < 10; ++j)5413      ;5414  }5415#pragma omp target parallel for5416  for (int i = 0; i < 10; ++i) {5417#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}5418  }5419#pragma omp target parallel for5420  for (int i = 0; i < 10; ++i) {5421#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?}}5422    for (int j = 0; j < 10; ++j)5423      ;5424  }5425#pragma omp target parallel for5426  for (int i = 0; i < 10; ++i) {5427#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?}}5428    for (int j = 0; j < 10; ++j)5429      ;5430  }5431#pragma omp target parallel for5432  for (int i = 0; i < 10; ++i) {5433#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?}}5434    for (int j = 0; j < 10; ++j)5435      ;5436  }5437#pragma omp target parallel for5438  for (int i = 0; i < 10; ++i) {5439#pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}5440    for (int j = 0; j < 10; ++j)5441      ;5442  }5443#pragma omp target parallel for5444  for (int i = 0; i < 10; ++i) {5445#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?}}5446    for (int j = 0; j < 10; ++j)5447      ;5448  }5449#pragma omp target parallel for5450  for (int i = 0; i < 10; ++i) {5451#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?}}5452    for (int j = 0; j < 10; ++j)5453      ;5454  }5455#pragma omp target parallel for5456  for (int i = 0; i < 10; ++i) {5457#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?}}5458    for (int j = 0; j < 10; ++j)5459      ;5460  }5461#pragma omp target parallel for5462  for (int i = 0; i < 10; ++i) {5463#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?}}5464    for (int j = 0; j < 10; ++j)5465      ;5466  }5467#pragma omp target parallel for5468  for (int i = 0; i < 10; ++i) {5469#pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}5470    a++;5471  }5472#pragma omp target parallel for5473  for (int i = 0; i < 10; ++i) {5474#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}5475    for (int j = 0; j < 10; ++j)5476      ;5477  }5478#pragma omp target parallel for5479  for (int i = 0; i < 10; ++i) {5480#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}5481    for (int j = 0; j < 10; ++j)5482      ;5483  }5484#pragma omp target parallel for5485  for (int i = 0; i < 10; ++i) {5486#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}5487    for (int j = 0; j < 10; ++j)5488      ;5489  }5490#pragma omp target parallel for5491  for (int i = 0; i < 10; ++i) {5492#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}5493    for (int j = 0; j < 10; ++j)5494      ;5495  }5496 5497// TEAMS DIRECTIVE5498#pragma omp teams // omp45-error {{orphaned 'omp teams' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}5499  bar();5500#pragma omp target5501#pragma omp teams5502#pragma omp parallel5503  bar();5504#pragma omp target5505#pragma omp teams5506#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?}}5507  for (int i = 0; i < 10; ++i)5508    ;5509#pragma omp target5510#pragma omp teams5511#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?}}5512  for (int i = 0; i < 10; ++i)5513    ;5514#pragma omp target5515#pragma omp teams5516#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?}}5517  for (int i = 0; i < 10; ++i)5518    ;5519#pragma omp target5520#pragma omp teams5521#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?}}5522  {5523    bar();5524  }5525#pragma omp target5526#pragma omp teams5527#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}5528  {5529    bar();5530  }5531#pragma omp target5532#pragma omp teams5533#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?}}5534  bar();5535 5536#pragma omp target5537#pragma omp teams5538#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?}}5539  {5540    bar();5541  }5542#pragma omp target5543#pragma omp teams5544#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?}}5545  {5546    bar();5547  }5548#pragma omp target5549#pragma omp teams5550#pragma omp parallel for5551  for (int i = 0; i < 10; ++i)5552    ;5553#pragma omp target5554#pragma omp teams5555#pragma omp parallel for simd5556  for (int i = 0; i < 10; ++i)5557    ;5558#pragma omp target5559#pragma omp teams5560#pragma omp parallel sections5561  {5562    bar();5563  }5564#pragma omp target5565#pragma omp teams5566#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?}}5567  {5568    bar();5569  }5570#pragma omp target5571#pragma omp teams5572  {5573#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?}}5574    bar();5575  }5576#pragma omp target5577#pragma omp teams5578  {5579#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?}}5580    bar();5581  }5582#pragma omp target5583#pragma omp teams5584  {5585#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}5586    bar();5587  }5588#pragma omp target5589#pragma omp teams5590  {5591#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?}}5592    bar();5593  }5594#pragma omp target5595#pragma omp teams5596  {5597#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?}}5598    bar();5599  }5600#pragma omp target5601#pragma omp teams5602  {5603#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?}}5604    bar();5605  }5606#pragma omp target5607#pragma omp teams5608  {5609#pragma omp atomic // omp-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}5610    ++a;5611  }5612#pragma omp target5613#pragma omp teams5614  {5615#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}5616    ++a;5617  }5618#pragma omp target5619#pragma omp teams5620  {5621#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}5622    ++a;5623  }5624#pragma omp target5625#pragma omp teams5626#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}5627  for (int i = 0; i < 10; ++i)5628    ;5629#pragma omp target5630#pragma omp teams5631  {5632#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}5633    ++a;5634  }5635#pragma omp target5636#pragma omp teams5637  {5638#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}5639    ++a;5640  }5641#pragma omp target5642#pragma omp teams5643  {5644#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?}}5645    ++a;5646  }5647#pragma omp target5648#pragma omp teams5649  {5650#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?}}5651  for (int i = 0; i < 10; ++i)5652    ++a;5653  }5654#pragma omp target5655#pragma omp teams5656#pragma omp distribute5657  for (int i = 0; i < 10; ++i)5658    ;5659#pragma omp target5660#pragma omp teams5661#pragma omp distribute5662  for (int i = 0; i < 10; ++i)5663    ;5664#pragma omp distribute5665  for (int j = 0; j < 10; ++j)5666    ;5667#pragma omp target5668#pragma omp teams5669  {5670#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}5671  }5672#pragma omp target5673#pragma omp teams5674  {5675#pragma omp distribute parallel for5676  for (int i = 0; i < 10; ++i)5677    ;5678#pragma omp distribute parallel for5679  for (int j = 0; j < 10; ++j)5680    ;5681  }5682#pragma omp target5683#pragma omp teams5684  {5685#pragma omp distribute parallel for simd5686  for (int i = 0; i < 10; ++i)5687    ;5688#pragma omp distribute parallel for simd5689  for (int j = 0; j < 10; ++j)5690    ;5691  }5692#pragma omp target5693#pragma omp teams5694  {5695#pragma omp distribute simd5696  for (int i = 0; i < 10; ++i)5697    ;5698#pragma omp distribute simd5699  for (int j = 0; j < 10; ++j)5700    ;5701  }5702#pragma omp target5703#pragma omp teams5704  {5705#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}5706  for (int i = 0; i < 10; ++i)5707    ;5708  }5709#pragma omp target5710#pragma omp teams5711  {5712#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?}}5713  for (int i = 0; i < 10; ++i)5714    ;5715  }5716#pragma omp target5717#pragma omp teams5718  {5719#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?}}5720  for (int i = 0; i < 10; ++i)5721    ;5722  }5723#pragma omp target5724#pragma omp teams5725  {5726#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?}}5727  for (int i = 0; i < 10; ++i)5728    ;5729  }5730#pragma omp target5731#pragma omp teams5732  {5733#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?}}5734  for (int i = 0; i < 10; ++i)5735    ;5736  }5737#pragma omp target5738#pragma omp teams5739  {5740#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}5741    a++;5742  }5743#pragma omp target5744#pragma omp teams5745  {5746#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}5747  for (int i = 0; i < 10; ++i)5748    ;5749  }5750#pragma omp target5751#pragma omp teams5752  {5753#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}5754  for (int i = 0; i < 10; ++i)5755    ;5756  }5757#pragma omp target5758#pragma omp teams5759  {5760#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}5761  for (int i = 0; i < 10; ++i)5762    ;5763  }5764#pragma omp target5765#pragma omp teams5766  {5767#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}5768  for (int i = 0; i < 10; ++i)5769    ;5770  }5771 5772// TASKLOOP DIRECTIVE5773#pragma omp taskloop5774  for (int i = 0; i < 10; ++i) {5775#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?}}5776    for (int i = 0; i < 10; ++i)5777      ;5778  }5779#pragma omp taskloop5780  for (int i = 0; i < 10; ++i) {5781#pragma omp simd5782    for (int i = 0; i < 10; ++i)5783      ;5784  }5785#pragma omp taskloop5786  for (int i = 0; i < 10; ++i) {5787#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?}}5788    for (int i = 0; i < 10; ++i)5789      ;5790  }5791#pragma omp taskloop5792  for (int i = 0; i < 10; ++i) {5793#pragma omp parallel5794    for (int i = 0; i < 10; ++i)5795      ;5796  }5797#pragma omp taskloop5798  for (int i = 0; i < 10; ++i) {5799#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?}}5800    {5801      bar();5802    }5803  }5804#pragma omp taskloop5805  for (int i = 0; i < 10; ++i) {5806#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}5807    {5808      bar();5809    }5810  }5811#pragma omp taskloop5812  for (int i = 0; i < 10; ++i) {5813#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?}}5814    {5815      bar();5816    }5817  }5818 5819#pragma omp taskloop5820  for (int i = 0; i < 10; ++i) {5821#pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}5822    {5823      bar();5824    }5825  }5826#pragma omp taskloop5827  for (int i = 0; i < 10; ++i) {5828#pragma omp critical5829    {5830      bar();5831    }5832  }5833#pragma omp taskloop5834  for (int i = 0; i < 10; ++i) {5835#pragma omp parallel5836    {5837#pragma omp single // OK5838      {5839        bar();5840      }5841#pragma omp for // OK5842      for (int i = 0; i < 10; ++i)5843        ;5844#pragma omp sections // OK5845      {5846        bar();5847      }5848    }5849  }5850#pragma omp taskloop5851  for (int i = 0; i < 10; ++i) {5852#pragma omp parallel for5853    for (int i = 0; i < 10; ++i)5854      ;5855  }5856#pragma omp taskloop5857  for (int i = 0; i < 10; ++i) {5858#pragma omp parallel for simd5859    for (int i = 0; i < 10; ++i)5860      ;5861  }5862#pragma omp taskloop5863  for (int i = 0; i < 10; ++i) {5864#pragma omp parallel sections5865    {5866      bar();5867    }5868  }5869#pragma omp taskloop5870  for (int i = 0; i < 10; ++i) {5871#pragma omp task5872    {5873      bar();5874    }5875  }5876#pragma omp taskloop5877  for (int i = 0; i < 10; ++i) {5878#pragma omp taskyield5879    bar();5880  }5881#pragma omp taskloop5882  for (int i = 0; i < 10; ++i) {5883#pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}5884    bar();5885  }5886#pragma omp taskloop5887  for (int i = 0; i < 10; ++i) {5888#pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}}5889    bar();5890  }5891#pragma omp taskloop5892  for (int i = 0; i < 10; ++i) {5893#pragma omp taskwait5894    bar();5895  }5896#pragma omp taskloop5897  for (int i = 0; i < 10; ++i) {5898#pragma omp flush5899    bar();5900  }5901#pragma omp taskloop5902  for (int i = 0; i < 10; ++i) {5903#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?}}5904    bar();5905  }5906#pragma omp taskloop5907  for (int i = 0; i < 10; ++i) {5908#pragma omp atomic5909    ++a;5910  }5911#pragma omp taskloop5912  for (int i = 0; i < 10; ++i) {5913#pragma omp target5914    ++a;5915  }5916#pragma omp taskloop5917  for (int i = 0; i < 10; ++i) {5918#pragma omp target parallel5919    ++a;5920  }5921#pragma omp taskloop5922  for (int i = 0; i < 10; ++i) {5923#pragma omp target parallel for5924    for (int i = 0; i < 10; ++i)5925      ;5926  }5927#pragma omp taskloop5928  for (int i = 0; i < 10; ++i) {5929#pragma omp target enter data map(to: a)5930    ++a;5931  }5932#pragma omp taskloop5933  for (int i = 0; i < 10; ++i) {5934#pragma omp target exit data map(from: a)5935    ++a;5936  }5937#pragma omp taskloop5938  for (int i = 0; i < 10; ++i) {5939#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?}}5940    ++a;5941  }5942#pragma omp taskloop5943  for (int i = 0; i < 10; ++i) {5944#pragma omp taskloop5945  for (int i = 0; i < 10; ++i)5946    ++a;5947  }5948#pragma omp taskloop5949  for (int i = 0; i < 10; ++i) {5950#pragma omp target update to(a)5951    bar();5952  }5953#pragma omp taskloop5954  for (int i = 0; i < 10; ++i) {5955#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?}}5956  for (int j = 0; j < 10; ++j)5957    ++a;5958  }5959#pragma omp taskloop5960  for (int i = 0; i < 10; ++i) {5961#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?}}5962  for (int j = 0; j < 10; ++j)5963    ++a;5964  }5965#pragma omp taskloop5966  for (int i = 0; i < 10; ++i) {5967#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?}}5968  for (int j = 0; j < 10; ++j)5969    ++a;5970  }5971#pragma omp taskloop5972  for (int i = 0; i < 10; ++i) {5973#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?}}5974  for (int j = 0; j < 10; ++j)5975    ++a;5976  }5977#pragma omp taskloop5978  for (int i = 0; i < 10; ++i) {5979#pragma omp target simd // OK5980  for (int j = 0; j < 10; ++j)5981    ++a;5982  }5983#pragma omp taskloop5984  for (int i = 0; i < 10; ++i) {5985#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?}}5986  for (int j = 0; j < 10; ++j)5987    ++a;5988  }5989#pragma omp taskloop5990  for (int i = 0; i < 10; ++i) {5991#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?}}5992  for (int j = 0; j < 10; ++j)5993    ++a;5994  }5995#pragma omp taskloop5996  for (int i = 0; i < 10; ++i) {5997#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?}}5998  for (int j = 0; j < 10; ++j)5999    ++a;6000  }6001#pragma omp taskloop6002  for (int i = 0; i < 10; ++i) {6003#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?}}6004  for (int j = 0; j < 10; ++j)6005    ++a;6006  }6007#pragma omp taskloop6008  for (int i = 0; i < 10; ++i) {6009#pragma omp target teams // OK6010    ++a;6011  }6012#pragma omp taskloop6013  for (int i = 0; i < 10; ++i) {6014#pragma omp target teams distribute // OK6015  for (int j = 0; j < 10; ++j)6016    ++a;6017  }6018#pragma omp taskloop6019  for (int i = 0; i < 10; ++i) {6020#pragma omp target teams distribute parallel for // OK6021  for (int j = 0; j < 10; ++j)6022    ++a;6023  }6024#pragma omp taskloop6025  for (int i = 0; i < 10; ++i) {6026#pragma omp target teams distribute parallel for simd // OK6027  for (int j = 0; j < 10; ++j)6028    ++a;6029  }6030#pragma omp taskloop6031  for (int i = 0; i < 10; ++i) {6032#pragma omp target teams distribute simd // OK6033  for (int j = 0; j < 10; ++j)6034    ++a;6035  }6036#pragma omp taskloop6037  for (int i = 0; i < 10; ++i) {6038#pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}}6039#pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'taskloop' region}}6040  }6041#pragma omp taskloop6042  for (int i = 0; i < 10; ++i) {6043#pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}}6044#pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'taskloop' region}}6045  }6046#pragma omp master taskloop6047  for (int i = 0; i < 10; ++i) {6048#pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}}6049#pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'master taskloop' region}}6050  }6051#pragma omp master taskloop6052  for (int i = 0; i < 10; ++i) {6053#pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}}6054#pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'master taskloop' region}}6055  }6056#pragma omp parallel master taskloop6057  for (int i = 0; i < 10; ++i) {6058#pragma omp cancel taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}}6059#pragma omp cancellation point taskgroup // omp45-error {{region cannot be closely nested inside 'parallel master taskloop' region}}6060  }6061#pragma omp parallel master taskloop6062  for (int i = 0; i < 10; ++i) {6063#pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}}6064#pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'parallel master taskloop' region}}6065  }6066 6067// DISTRIBUTE DIRECTIVE6068#pragma omp target6069#pragma omp teams6070#pragma omp distribute6071  for (int i = 0; i < 10; ++i) {6072#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?}}6073    for (int i = 0; i < 10; ++i)6074      ;6075  }6076#pragma omp target6077#pragma omp teams6078#pragma omp distribute6079  for (int i = 0; i < 10; ++i) {6080#pragma omp for6081    for (int i = 0; i < 10; ++i)6082      ;6083  }6084#pragma omp target6085#pragma omp teams6086#pragma omp distribute6087  for (int i = 0; i < 10; ++i) {6088#pragma omp simd6089    for (int i = 0; i < 10; ++i)6090      ;6091  }6092#pragma omp target6093#pragma omp teams6094#pragma omp distribute6095  for (int i = 0; i < 10; ++i) {6096#pragma omp for simd6097    for (int i = 0; i < 10; ++i)6098      ;6099  }6100#pragma omp target6101#pragma omp teams6102#pragma omp distribute6103  for (int i = 0; i < 10; ++i) {6104#pragma omp parallel6105    for (int i = 0; i < 10; ++i)6106      ;6107  }6108#pragma omp target6109#pragma omp teams6110#pragma omp distribute6111  for (int i = 0; i < 10; ++i) {6112#pragma omp sections6113    {6114      bar();6115    }6116  }6117#pragma omp target6118#pragma omp teams6119#pragma omp distribute6120  for (int i = 0; i < 10; ++i) {6121#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}6122    {6123      bar();6124    }6125  }6126#pragma omp target6127#pragma omp teams6128#pragma omp distribute6129  for (int i = 0; i < 10; ++i) {6130#pragma omp single6131    {6132      bar();6133    }6134  }6135#pragma omp target6136#pragma omp teams6137#pragma omp distribute6138  for (int i = 0; i < 10; ++i) {6139#pragma omp master6140    {6141      bar();6142    }6143  }6144#pragma omp target6145#pragma omp teams6146#pragma omp distribute6147  for (int i = 0; i < 10; ++i) {6148#pragma omp critical6149    {6150      bar();6151    }6152  }6153#pragma omp target6154#pragma omp teams6155#pragma omp distribute6156  for (int i = 0; i < 10; ++i) {6157#pragma omp parallel6158    {6159#pragma omp single6160      {6161        bar();6162      }6163    }6164  }6165#pragma omp target6166#pragma omp teams6167#pragma omp distribute6168  for (int i = 0; i < 10; ++i) {6169#pragma omp parallel for6170    for (int i = 0; i < 10; ++i)6171      ;6172  }6173#pragma omp target6174#pragma omp teams6175#pragma omp distribute6176  for (int i = 0; i < 10; ++i) {6177#pragma omp parallel for simd6178    for (int i = 0; i < 10; ++i)6179      ;6180  }6181#pragma omp target6182#pragma omp teams6183#pragma omp distribute6184  for (int i = 0; i < 10; ++i) {6185#pragma omp parallel sections6186    {6187      bar();6188    }6189  }6190#pragma omp target6191#pragma omp teams6192#pragma omp distribute6193  for (int i = 0; i < 10; ++i) {6194#pragma omp task6195    {6196      bar();6197    }6198  }6199#pragma omp target6200#pragma omp teams6201#pragma omp distribute6202  for (int i = 0; i < 10; ++i) {6203#pragma omp taskyield6204    bar();6205  }6206#pragma omp target6207#pragma omp teams6208#pragma omp distribute6209  for (int i = 0; i < 10; ++i) {6210#pragma omp barrier6211    bar();6212  }6213#pragma omp target6214#pragma omp teams6215#pragma omp distribute6216  for (int i = 0; i < 10; ++i) {6217#pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}6218    bar();6219  }6220#pragma omp target6221#pragma omp teams6222#pragma omp distribute6223  for (int i = 0; i < 10; ++i) {6224#pragma omp taskwait6225    bar();6226  }6227#pragma omp target6228#pragma omp teams6229#pragma omp distribute6230  for (int i = 0; i < 10; ++i) {6231#pragma omp flush6232    bar();6233  }6234#pragma omp target6235#pragma omp teams6236#pragma omp distribute6237  for (int i = 0; i < 10; ++i) {6238#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?}}6239    bar();6240  }6241#pragma omp target6242#pragma omp teams6243#pragma omp distribute6244  for (int i = 0; i < 10; ++i) {6245#pragma omp atomic6246    ++a;6247  }6248#pragma omp target6249#pragma omp teams6250#pragma omp distribute6251  for (int i = 0; i < 10; ++i) {6252#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}6253    ++a;6254  }6255#pragma omp target6256#pragma omp teams6257#pragma omp distribute6258  for (int i = 0; i < 10; ++i) {6259#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}6260    ++a;6261  }6262#pragma omp target6263#pragma omp teams6264#pragma omp distribute6265  for (int i = 0; i < 10; ++i) {6266#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}6267    for (int i = 0; i < 10; ++i)6268      ;6269  }6270#pragma omp target6271#pragma omp teams6272#pragma omp distribute6273  for (int i = 0; i < 10; ++i) {6274#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}6275    ++a;6276  }6277#pragma omp target6278#pragma omp teams6279#pragma omp distribute6280  for (int i = 0; i < 10; ++i) {6281#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}6282    ++a;6283  }6284#pragma omp target6285#pragma omp teams6286#pragma omp distribute6287  for (int i = 0; i < 10; ++i) {6288#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?}}6289    ++a;6290  }6291#pragma omp target6292#pragma omp teams6293#pragma omp distribute6294  for (int i = 0; i < 10; ++i) {6295#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}6296    ++a;6297  }6298#pragma omp target6299#pragma omp teams6300#pragma omp distribute6301  for (int i = 0; i < 10; ++i) {6302#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}6303    for (int j = 0; j < 10; ++j)6304      ;6305  }6306#pragma omp target6307#pragma omp teams6308#pragma omp distribute6309  for (int i = 0; i < 10; ++i) {6310#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?}}6311    for (int j = 0; j < 10; ++j)6312      ;6313  }6314#pragma omp target6315#pragma omp teams6316#pragma omp distribute6317  for (int i = 0; i < 10; ++i) {6318#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?}}6319    for (int j = 0; j < 10; ++j)6320      ;6321  }6322#pragma omp target6323#pragma omp teams6324#pragma omp distribute6325  for (int i = 0; i < 10; ++i) {6326#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?}}6327    for (int j = 0; j < 10; ++j)6328      ;6329  }6330#pragma omp target6331#pragma omp teams6332#pragma omp distribute6333  for (int i = 0; i < 10; ++i) {6334#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?}}6335    for (int j = 0; j < 10; ++j)6336      ;6337  }6338#pragma omp target6339#pragma omp teams6340#pragma omp distribute6341  for (int i = 0; i < 10; ++i) {6342#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}6343    a++;6344  }6345#pragma omp target6346#pragma omp teams6347#pragma omp distribute6348  for (int i = 0; i < 10; ++i) {6349#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}6350    for (int j = 0; j < 10; ++j)6351      ;6352  }6353#pragma omp target6354#pragma omp teams6355#pragma omp distribute6356  for (int i = 0; i < 10; ++i) {6357#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}6358    for (int j = 0; j < 10; ++j)6359      ;6360  }6361#pragma omp target6362#pragma omp teams6363#pragma omp distribute6364  for (int i = 0; i < 10; ++i) {6365#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}6366    for (int j = 0; j < 10; ++j)6367      ;6368  }6369#pragma omp target6370#pragma omp teams6371#pragma omp distribute6372  for (int i = 0; i < 10; ++i) {6373#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}6374    for (int j = 0; j < 10; ++j)6375      ;6376  }6377 6378// DISTRIBUTE PARALLEL FOR DIRECTIVE6379#pragma omp target6380#pragma omp teams6381#pragma omp distribute parallel for6382  for (int i = 0; i < 10; ++i) {6383#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?}}6384    for (int i = 0; i < 10; ++i)6385      ;6386  }6387#pragma omp target6388#pragma omp teams6389#pragma omp distribute parallel for6390  for (int i = 0; i < 10; ++i) {6391#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?}}6392    for (int i = 0; i < 10; ++i)6393      ;6394  }6395#pragma omp target6396#pragma omp teams6397#pragma omp distribute parallel for6398  for (int i = 0; i < 10; ++i) {6399#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?}}6400    for (int i = 0; i < 10; ++i)6401      ;6402  }6403#pragma omp target6404#pragma omp teams6405#pragma omp distribute parallel for6406  for (int i = 0; i < 10; ++i) {6407#pragma omp simd6408    for (int i = 0; i < 10; ++i)6409      ;6410  }6411#pragma omp target6412#pragma omp teams6413#pragma omp distribute parallel for6414  for (int i = 0; i < 10; ++i) {6415#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?}}6416    for (int i = 0; i < 10; ++i)6417      ;6418  }6419#pragma omp target6420#pragma omp teams6421#pragma omp distribute parallel for6422  for (int i = 0; i < 10; ++i) {6423#pragma omp parallel6424    for (int i = 0; i < 10; ++i)6425      ;6426  }6427#pragma omp target6428#pragma omp teams6429#pragma omp distribute parallel for6430  for (int i = 0; i < 10; ++i) {6431#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?}}6432    {6433      bar();6434    }6435  }6436#pragma omp target6437#pragma omp teams6438#pragma omp distribute parallel for6439  for (int i = 0; i < 10; ++i) {6440#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}6441    {6442      bar();6443    }6444  }6445#pragma omp target6446#pragma omp teams6447#pragma omp distribute parallel for6448  for (int i = 0; i < 10; ++i) {6449#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?}}6450    {6451      bar();6452    }6453  }6454#pragma omp target6455#pragma omp teams6456#pragma omp distribute parallel for6457  for (int i = 0; i < 10; ++i) {6458#pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}6459    {6460      bar();6461    }6462  }6463#pragma omp target6464#pragma omp teams6465#pragma omp distribute parallel for6466  for (int i = 0; i < 10; ++i) {6467#pragma omp critical6468    {6469      bar();6470    }6471  }6472#pragma omp target6473#pragma omp teams6474#pragma omp distribute parallel for6475  for (int i = 0; i < 10; ++i) {6476#pragma omp parallel6477    {6478#pragma omp single6479      {6480        bar();6481      }6482    }6483  }6484#pragma omp target6485#pragma omp teams6486#pragma omp distribute parallel for6487  for (int i = 0; i < 10; ++i) {6488#pragma omp parallel for6489    for (int i = 0; i < 10; ++i)6490      ;6491  }6492#pragma omp target6493#pragma omp teams6494#pragma omp distribute parallel for6495  for (int i = 0; i < 10; ++i) {6496#pragma omp parallel for simd6497    for (int i = 0; i < 10; ++i)6498      ;6499  }6500#pragma omp target6501#pragma omp teams6502#pragma omp distribute parallel for6503  for (int i = 0; i < 10; ++i) {6504#pragma omp parallel sections6505    {6506      bar();6507    }6508  }6509#pragma omp target6510#pragma omp teams6511#pragma omp distribute parallel for6512  for (int i = 0; i < 10; ++i) {6513#pragma omp task6514    {6515      bar();6516    }6517  }6518#pragma omp target6519#pragma omp teams6520#pragma omp distribute parallel for6521  for (int i = 0; i < 10; ++i) {6522#pragma omp taskyield6523    bar();6524  }6525#pragma omp target6526#pragma omp teams6527#pragma omp distribute parallel for6528  for (int i = 0; i < 10; ++i) {6529#pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}6530    bar();6531  }6532#pragma omp target6533#pragma omp teams6534#pragma omp distribute parallel for6535  for (int i = 0; i < 10; ++i) {6536#pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}6537    bar();6538  }6539#pragma omp target6540#pragma omp teams6541#pragma omp distribute parallel for6542  for (int i = 0; i < 10; ++i) {6543#pragma omp taskwait6544    bar();6545  }6546#pragma omp target6547#pragma omp teams6548#pragma omp distribute parallel for6549  for (int i = 0; i < 10; ++i) {6550#pragma omp flush6551    bar();6552  }6553#pragma omp target6554#pragma omp teams6555#pragma omp distribute parallel for6556  for (int i = 0; i < 10; ++i) {6557#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?}}6558    bar();6559  }6560#pragma omp target6561#pragma omp teams6562#pragma omp distribute parallel for6563  for (int i = 0; i < 10; ++i) {6564#pragma omp atomic6565    ++a;6566  }6567#pragma omp target6568#pragma omp teams6569#pragma omp distribute parallel for6570  for (int i = 0; i < 10; ++i) {6571#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}6572    ++a;6573  }6574#pragma omp target6575#pragma omp teams6576#pragma omp distribute parallel for6577  for (int i = 0; i < 10; ++i) {6578#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}6579    ++a;6580  }6581#pragma omp target6582#pragma omp teams6583#pragma omp distribute parallel for6584  for (int i = 0; i < 10; ++i) {6585#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}6586    for (int i = 0; i < 10; ++i)6587      ;6588  }6589#pragma omp target6590#pragma omp teams6591#pragma omp distribute parallel for6592  for (int i = 0; i < 10; ++i) {6593#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}6594    ++a;6595  }6596#pragma omp target6597#pragma omp teams6598#pragma omp distribute parallel for6599  for (int i = 0; i < 10; ++i) {6600#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}6601    ++a;6602  }6603#pragma omp target6604#pragma omp teams6605#pragma omp distribute parallel for6606  for (int i = 0; i < 10; ++i) {6607#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?}}6608    ++a;6609  }6610#pragma omp target6611#pragma omp teams6612#pragma omp distribute parallel for6613  for (int i = 0; i < 10; ++i) {6614#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}6615    ++a;6616  }6617#pragma omp target6618#pragma omp teams6619#pragma omp distribute parallel for6620  for (int i = 0; i < 10; ++i) {6621#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?}}6622    for (int i = 0; i < 10; ++i)6623      ;6624  }6625#pragma omp target6626#pragma omp teams6627#pragma omp distribute parallel for6628  for (int i = 0; i < 10; ++i) {6629#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?}}6630    for (int i = 0; i < 10; ++i)6631      ;6632  }6633#pragma omp target6634#pragma omp teams6635#pragma omp distribute parallel for6636  for (int i = 0; i < 10; ++i) {6637#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?}}6638    for (int i = 0; i < 10; ++i)6639      ;6640  }6641#pragma omp target6642#pragma omp teams6643#pragma omp distribute parallel for6644  for (int i = 0; i < 10; ++i) {6645#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?}}6646    for (int i = 0; i < 10; ++i)6647      ;6648  }6649#pragma omp target6650#pragma omp teams6651#pragma omp distribute parallel for6652  for (int i = 0; i < 10; ++i) {6653#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?}}6654    for (int i = 0; i < 10; ++i)6655      ;6656  }6657#pragma omp target6658#pragma omp teams6659#pragma omp distribute parallel for6660  for (int i = 0; i < 10; ++i) {6661#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}6662    a++;6663  }6664#pragma omp target6665#pragma omp teams6666#pragma omp distribute parallel for6667  for (int i = 0; i < 10; ++i) {6668#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}6669    for (int i = 0; i < 10; ++i)6670      ;6671  }6672#pragma omp target6673#pragma omp teams6674#pragma omp distribute parallel for6675  for (int i = 0; i < 10; ++i) {6676#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}6677    for (int i = 0; i < 10; ++i)6678      ;6679  }6680#pragma omp target6681#pragma omp teams6682#pragma omp distribute parallel for6683  for (int i = 0; i < 10; ++i) {6684#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}6685    for (int i = 0; i < 10; ++i)6686      ;6687  }6688#pragma omp target6689#pragma omp teams6690#pragma omp distribute parallel for6691  for (int i = 0; i < 10; ++i) {6692#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}6693    for (int i = 0; i < 10; ++i)6694      ;6695  }6696 6697// DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE6698#pragma omp target6699#pragma omp teams6700#pragma omp distribute parallel for simd6701  for (int i = 0; i < 10; ++i) {6702#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6703    for (int i = 0; i < 10; ++i)6704      ;6705  }6706#pragma omp target6707#pragma omp teams6708#pragma omp distribute parallel for simd6709  for (int i = 0; i < 10; ++i) {6710#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}6711    for (int i = 0; i < 10; ++i)6712      ;6713  }6714#pragma omp target6715#pragma omp teams6716#pragma omp distribute parallel for simd6717  for (int i = 0; i < 10; ++i) {6718#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}6719    for (int i = 0; i < 10; ++i)6720      ;6721  }6722#pragma omp target6723#pragma omp teams6724#pragma omp distribute parallel for simd6725  for (int i = 0; i < 10; ++i) {6726#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}6727    for (int i = 0; i < 10; ++i)6728      ;6729  }6730#pragma omp target6731#pragma omp teams6732#pragma omp distribute parallel for simd6733  for (int i = 0; i < 10; ++i) {6734#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6735    for (int i = 0; i < 10; ++i)6736      ;6737  }6738#pragma omp target6739#pragma omp teams6740#pragma omp distribute parallel for simd6741  for (int i = 0; i < 10; ++i) {6742#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}6743    for (int i = 0; i < 10; ++i)6744      ;6745  }6746#pragma omp target6747#pragma omp teams6748#pragma omp distribute parallel for simd6749  for (int i = 0; i < 10; ++i) {6750#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}6751    {6752      bar();6753    }6754  }6755#pragma omp target6756#pragma omp teams6757#pragma omp distribute parallel for simd6758  for (int i = 0; i < 10; ++i) {6759#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}6760    {6761      bar();6762    }6763  }6764#pragma omp target6765#pragma omp teams6766#pragma omp distribute parallel for simd6767  for (int i = 0; i < 10; ++i) {6768#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}6769    {6770      bar();6771    }6772  }6773#pragma omp target6774#pragma omp teams6775#pragma omp distribute parallel for simd6776  for (int i = 0; i < 10; ++i) {6777#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}6778    {6779      bar();6780    }6781  }6782#pragma omp target6783#pragma omp teams6784#pragma omp distribute parallel for simd6785  for (int i = 0; i < 10; ++i) {6786#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}6787    {6788      bar();6789    }6790  }6791#pragma omp target6792#pragma omp teams6793#pragma omp distribute parallel for simd6794  for (int i = 0; i < 10; ++i) {6795#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}6796    {6797#pragma omp single6798      {6799        bar();6800      }6801    }6802  }6803#pragma omp target6804#pragma omp teams6805#pragma omp distribute parallel for simd6806  for (int i = 0; i < 10; ++i) {6807#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}6808    for (int i = 0; i < 10; ++i)6809      ;6810  }6811#pragma omp target6812#pragma omp teams6813#pragma omp distribute parallel for simd6814  for (int i = 0; i < 10; ++i) {6815#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6816    for (int i = 0; i < 10; ++i)6817      ;6818  }6819#pragma omp target6820#pragma omp teams6821#pragma omp distribute parallel for simd6822  for (int i = 0; i < 10; ++i) {6823#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}6824    {6825      bar();6826    }6827  }6828#pragma omp target6829#pragma omp teams6830#pragma omp distribute parallel for simd6831  for (int i = 0; i < 10; ++i) {6832#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}6833    {6834      bar();6835    }6836  }6837#pragma omp target6838#pragma omp teams6839#pragma omp distribute parallel for simd6840  for (int i = 0; i < 10; ++i) {6841#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}6842    bar();6843  }6844#pragma omp target6845#pragma omp teams6846#pragma omp distribute parallel for simd6847  for (int i = 0; i < 10; ++i) {6848#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}6849    bar();6850  }6851#pragma omp target6852#pragma omp teams6853#pragma omp distribute parallel for simd6854  for (int i = 0; i < 10; ++i) {6855#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}6856    bar();6857  }6858#pragma omp target6859#pragma omp teams6860#pragma omp distribute parallel for simd6861  for (int i = 0; i < 10; ++i) {6862#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}6863    bar();6864  }6865#pragma omp target6866#pragma omp teams6867#pragma omp distribute parallel for simd6868  for (int i = 0; i < 10; ++i) {6869#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}6870    bar();6871  }6872#pragma omp target6873#pragma omp teams6874#pragma omp distribute parallel for simd6875  for (int i = 0; i < 10; ++i) {6876#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}6877    bar();6878  }6879#pragma omp target6880#pragma omp teams6881#pragma omp distribute parallel for simd6882  for (int i = 0; i < 10; ++i) {6883#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}6884    ++a;6885  }6886#pragma omp target6887#pragma omp teams6888#pragma omp distribute parallel for simd6889  for (int i = 0; i < 10; ++i) {6890#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}6891    ++a;6892  }6893#pragma omp target6894#pragma omp teams6895#pragma omp distribute parallel for simd6896  for (int i = 0; i < 10; ++i) {6897#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}6898    ++a;6899  }6900#pragma omp target6901#pragma omp teams6902#pragma omp distribute parallel for simd6903  for (int i = 0; i < 10; ++i) {6904#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}6905    for (int i = 0; i < 10; ++i)6906      ;6907  }6908#pragma omp target6909#pragma omp teams6910#pragma omp distribute parallel for simd6911  for (int i = 0; i < 10; ++i) {6912#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}6913    ++a;6914  }6915#pragma omp target6916#pragma omp teams6917#pragma omp distribute parallel for simd6918  for (int i = 0; i < 10; ++i) {6919#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}6920    ++a;6921  }6922#pragma omp target6923#pragma omp teams6924#pragma omp distribute parallel for simd6925  for (int i = 0; i < 10; ++i) {6926#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}6927    ++a;6928  }6929#pragma omp target6930#pragma omp teams6931#pragma omp distribute parallel for simd6932  for (int i = 0; i < 10; ++i) {6933#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}6934    ++a;6935  }6936#pragma omp target6937#pragma omp teams6938#pragma omp distribute parallel for simd6939  for (int i = 0; i < 10; ++i) {6940#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6941    for (int i = 0; i < 10; ++i)6942      ++a;6943  }6944#pragma omp target6945#pragma omp teams6946#pragma omp distribute parallel for simd6947  for (int i = 0; i < 10; ++i) {6948#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6949    for (int i = 0; i < 10; ++i)6950      ++a;6951  }6952#pragma omp target6953#pragma omp teams6954#pragma omp distribute parallel for simd6955  for (int i = 0; i < 10; ++i) {6956#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}6957    for (int i = 0; i < 10; ++i)6958      ++a;6959  }6960#pragma omp target6961#pragma omp teams6962#pragma omp distribute parallel for simd6963  for (int i = 0; i < 10; ++i) {6964#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6965    for (int i = 0; i < 10; ++i)6966      ++a;6967  }6968#pragma omp target6969#pragma omp teams6970#pragma omp distribute parallel for simd6971  for (int i = 0; i < 10; ++i) {6972#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}6973    for (int i = 0; i < 10; ++i)6974      ++a;6975  }6976#pragma omp target6977#pragma omp teams6978#pragma omp distribute parallel for simd6979  for (int i = 0; i < 10; ++i) {6980#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}6981    for (int i = 0; i < 10; ++i)6982      ++a;6983  }6984#pragma omp target6985#pragma omp teams6986#pragma omp distribute parallel for simd6987  for (int i = 0; i < 10; ++i) {6988#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}6989    ++a;6990  }6991#pragma omp target6992#pragma omp teams6993#pragma omp distribute parallel for simd6994  for (int i = 0; i < 10; ++i) {6995#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}6996    for (int i = 0; i < 10; ++i)6997      ++a;6998  }6999#pragma omp target7000#pragma omp teams7001#pragma omp distribute parallel for simd7002  for (int i = 0; i < 10; ++i) {7003#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7004    for (int i = 0; i < 10; ++i)7005      ++a;7006  }7007#pragma omp target7008#pragma omp teams7009#pragma omp distribute parallel for simd7010  for (int i = 0; i < 10; ++i) {7011#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7012    for (int i = 0; i < 10; ++i)7013      ++a;7014  }7015#pragma omp target7016#pragma omp teams7017#pragma omp distribute parallel for simd7018  for (int i = 0; i < 10; ++i) {7019#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7020    for (int i = 0; i < 10; ++i)7021      ++a;7022  }7023 7024// TARGET SIMD DIRECTIVE7025#pragma omp target simd7026  for (int i = 0; i < 10; ++i) {7027#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7028    for (int i = 0; i < 10; ++i)7029      ;7030  }7031#pragma omp target simd7032  for (int i = 0; i < 10; ++i) {7033#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}7034    for (int i = 0; i < 10; ++i)7035      ;7036  }7037#pragma omp target simd7038  for (int i = 0; i < 10; ++i) {7039#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7040    for (int i = 0; i < 10; ++i)7041      ;7042  }7043#pragma omp target simd7044  for (int i = 0; i < 10; ++i) {7045#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}7046    for (int i = 0; i < 10; ++i)7047      ;7048  }7049#pragma omp target simd7050  for (int i = 0; i < 10; ++i) {7051#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7052    for (int i = 0; i < 10; ++i)7053      ;7054  }7055#pragma omp target simd7056  for (int i = 0; i < 10; ++i) {7057#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}7058    for (int i = 0; i < 10; ++i)7059      ;7060  }7061#pragma omp target simd7062  for (int i = 0; i < 10; ++i) {7063#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}7064    {7065      bar();7066    }7067  }7068#pragma omp target simd7069  for (int i = 0; i < 10; ++i) {7070#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}7071    {7072      bar();7073    }7074  }7075#pragma omp target simd7076  for (int i = 0; i < 10; ++i) {7077#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}7078    {7079      bar();7080    }7081  }7082#pragma omp target simd7083  for (int i = 0; i < 10; ++i) {7084#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}7085    {7086      bar();7087    }7088  }7089#pragma omp target simd7090  for (int i = 0; i < 10; ++i) {7091#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}7092    {7093      bar();7094    }7095  }7096#pragma omp target simd7097  for (int i = 0; i < 10; ++i) {7098#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}7099    {7100#pragma omp single7101      {7102        bar();7103      }7104    }7105  }7106#pragma omp target simd7107  for (int i = 0; i < 10; ++i) {7108#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7109    for (int i = 0; i < 10; ++i)7110      ;7111  }7112#pragma omp target simd7113  for (int i = 0; i < 10; ++i) {7114#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7115    for (int i = 0; i < 10; ++i)7116      ;7117  }7118#pragma omp target simd7119  for (int i = 0; i < 10; ++i) {7120#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}7121    {7122      bar();7123    }7124  }7125#pragma omp target simd7126  for (int i = 0; i < 10; ++i) {7127#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}7128    {7129      bar();7130    }7131  }7132#pragma omp target simd7133  for (int i = 0; i < 10; ++i) {7134#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}7135    bar();7136  }7137#pragma omp target simd7138  for (int i = 0; i < 10; ++i) {7139#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}7140    bar();7141  }7142#pragma omp target simd7143  for (int i = 0; i < 10; ++i) {7144#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}7145    bar();7146  }7147#pragma omp target simd7148  for (int i = 0; i < 10; ++i) {7149#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}7150    bar();7151  }7152#pragma omp target simd7153  for (int i = 0; i < 10; ++i) {7154#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}7155    bar();7156  }7157#pragma omp target simd7158  for (int i = 0; i < 10; ++i) {7159#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}7160    bar();7161  }7162#pragma omp target simd7163  for (int i = 0; i < 10; ++i) {7164#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}7165    ++a;7166  }7167#pragma omp target simd7168  for (int i = 0; i < 10; ++i) {7169#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}7170    ++a;7171  }7172#pragma omp target simd7173  for (int i = 0; i < 10; ++i) {7174#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}7175    ++a;7176  }7177#pragma omp target simd7178  for (int i = 0; i < 10; ++i) {7179#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7180    for (int i = 0; i < 10; ++i)7181      ;7182  }7183#pragma omp target simd7184  for (int i = 0; i < 10; ++i) {7185#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}7186    ++a;7187  }7188#pragma omp target simd7189  for (int i = 0; i < 10; ++i) {7190#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}7191    ++a;7192  }7193#pragma omp target simd7194  for (int i = 0; i < 10; ++i) {7195#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}7196    ++a;7197  }7198#pragma omp target simd7199  for (int i = 0; i < 10; ++i) {7200#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}7201    ++a;7202  }7203#pragma omp target simd7204  for (int i = 0; i < 10; ++i) {7205#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7206    for (int i = 0; i < 10; ++i)7207      ++a;7208  }7209#pragma omp target simd7210  for (int i = 0; i < 10; ++i) {7211#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7212    for (int i = 0; i < 10; ++i)7213      ++a;7214  }7215#pragma omp target simd7216  for (int i = 0; i < 10; ++i) {7217#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}7218    for (int i = 0; i < 10; ++i)7219      ++a;7220  }7221#pragma omp target simd7222  for (int i = 0; i < 10; ++i) {7223#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7224    for (int i = 0; i < 10; ++i)7225      ++a;7226  }7227#pragma omp target simd7228  for (int i = 0; i < 10; ++i) {7229#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7230    for (int i = 0; i < 10; ++i)7231      ++a;7232  }7233#pragma omp target simd7234  for (int i = 0; i < 10; ++i) {7235#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7236    for (int i = 0; i < 10; ++i)7237      ++a;7238  }7239#pragma omp target simd7240  for (int i = 0; i < 10; ++i) {7241#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7242    for (int i = 0; i < 10; ++i)7243      ++a;7244  }7245#pragma omp target simd7246  for (int i = 0; i < 10; ++i) {7247#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7248    for (int i = 0; i < 10; ++i)7249      ++a;7250  }7251 7252// TEAMS DISTRIBUTE DIRECTIVE7253#pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}7254  for (int i = 0; i < 10; ++i)7255    ;7256#pragma omp target7257#pragma omp teams distribute7258  for (int i = 0; i < 10; ++i) {7259#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?}}7260    for (int i = 0; i < 10; ++i)7261      ;7262  }7263#pragma omp target7264#pragma omp teams distribute7265  for (int i = 0; i < 10; ++i) {7266#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?}}7267    for (int i = 0; i < 10; ++i)7268      ;7269  }7270#pragma omp target7271#pragma omp teams distribute7272  for (int i = 0; i < 10; ++i) {7273#pragma omp for // OK7274    for (int i = 0; i < 10; ++i)7275      ;7276  }7277#pragma omp target7278#pragma omp teams distribute7279  for (int i = 0; i < 10; ++i) {7280#pragma omp simd // OK7281    for (int i = 0; i < 10; ++i)7282      ;7283  }7284#pragma omp target7285#pragma omp teams distribute7286  for (int i = 0; i < 10; ++i) {7287#pragma omp for simd // OK7288    for (int i = 0; i < 10; ++i)7289      ;7290  }7291#pragma omp target7292#pragma omp teams distribute7293  for (int i = 0; i < 10; ++i) {7294#pragma omp parallel // OK7295    for (int i = 0; i < 10; ++i)7296      ;7297  }7298#pragma omp target7299#pragma omp teams distribute7300  for (int i = 0; i < 10; ++i) {7301#pragma omp sections // OK7302    {7303      bar();7304    }7305  }7306#pragma omp target7307#pragma omp teams distribute7308  for (int i = 0; i < 10; ++i) {7309#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}7310    {7311      bar();7312    }7313  }7314#pragma omp target7315#pragma omp teams distribute7316  for (int i = 0; i < 10; ++i) {7317#pragma omp single // OK7318    {7319      bar();7320    }7321  }7322#pragma omp target7323#pragma omp teams distribute7324  for (int i = 0; i < 10; ++i) {7325#pragma omp master // OK7326    {7327      bar();7328    }7329  }7330#pragma omp target7331#pragma omp teams distribute7332  for (int i = 0; i < 10; ++i) {7333#pragma omp critical // OK7334    {7335      bar();7336    }7337  }7338#pragma omp target7339#pragma omp teams distribute7340  for (int i = 0; i < 10; ++i) {7341#pragma omp parallel // OK7342    {7343#pragma omp single7344      {7345        bar();7346      }7347    }7348  }7349#pragma omp target7350#pragma omp teams distribute7351  for (int i = 0; i < 10; ++i) {7352#pragma omp parallel for // OK7353    for (int i = 0; i < 10; ++i)7354      ;7355  }7356#pragma omp target7357#pragma omp teams distribute7358  for (int i = 0; i < 10; ++i) {7359#pragma omp parallel for simd // OK7360    for (int i = 0; i < 10; ++i)7361      ;7362  }7363#pragma omp target7364#pragma omp teams distribute7365  for (int i = 0; i < 10; ++i) {7366#pragma omp parallel sections // OK7367    {7368      bar();7369    }7370  }7371#pragma omp target7372#pragma omp teams distribute7373  for (int i = 0; i < 10; ++i) {7374#pragma omp task // OK7375    {7376      bar();7377    }7378  }7379#pragma omp target7380#pragma omp teams distribute7381  for (int i = 0; i < 10; ++i) {7382#pragma omp taskyield // OK7383    bar();7384  }7385#pragma omp target7386#pragma omp teams distribute7387  for (int i = 0; i < 10; ++i) {7388#pragma omp barrier // OK7389    bar();7390  }7391#pragma omp target7392#pragma omp teams distribute7393  for (int i = 0; i < 10; ++i) {7394#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}7395    bar();7396  }7397#pragma omp target7398#pragma omp teams distribute7399  for (int i = 0; i < 10; ++i) {7400#pragma omp taskwait // OK7401    bar();7402  }7403#pragma omp target7404#pragma omp teams distribute7405  for (int i = 0; i < 10; ++i) {7406#pragma omp flush // OK7407    bar();7408  }7409#pragma omp target7410#pragma omp teams distribute7411  for (int i = 0; i < 10; ++i) {7412#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?}}7413    bar();7414  }7415#pragma omp target7416#pragma omp teams distribute7417  for (int i = 0; i < 10; ++i) {7418#pragma omp atomic // OK7419    ++a;7420  }7421#pragma omp target7422#pragma omp teams distribute7423  for (int i = 0; i < 10; ++i) {7424#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}7425    ++a;7426  }7427#pragma omp target7428#pragma omp teams distribute7429  for (int i = 0; i < 10; ++i) {7430#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target' region}}7431    ++a;7432  }7433#pragma omp target7434#pragma omp teams distribute7435  for (int i = 0; i < 10; ++i) {7436#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}7437    for (int i = 0; i < 10; ++i)7438      ;7439  }7440#pragma omp target7441#pragma omp teams distribute7442  for (int i = 0; i < 10; ++i) {7443#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}7444    ++a;7445  }7446#pragma omp target7447#pragma omp teams distribute7448  for (int i = 0; i < 10; ++i) {7449#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}7450    ++a;7451  }7452#pragma omp target7453#pragma omp teams distribute7454  for (int i = 0; i < 10; ++i) {7455#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?}}7456    ++a;7457  }7458#pragma omp target7459#pragma omp teams distribute7460  for (int i = 0; i < 10; ++i) {7461#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}7462    ++a;7463  }7464#pragma omp target7465#pragma omp teams distribute7466  for (int i = 0; i < 10; ++i) {7467#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?}}7468    for (int i = 0; i < 10; ++i)7469      ++a;7470  }7471#pragma omp target7472#pragma omp teams distribute7473  for (int i = 0; i < 10; ++i) {7474#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}7475    for (int i = 0; i < 10; ++i)7476      ++a;7477  }7478#pragma omp target7479#pragma omp teams distribute7480  for (int i = 0; i < 10; ++i) {7481#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?}}7482    for (int i = 0; i < 10; ++i)7483      ++a;7484  }7485#pragma omp target7486#pragma omp teams distribute7487  for (int i = 0; i < 10; ++i) {7488#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?}}7489    for (int i = 0; i < 10; ++i)7490      ++a;7491  }7492#pragma omp target7493#pragma omp teams distribute7494  for (int i = 0; i < 10; ++i) {7495#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?}}7496    for (int i = 0; i < 10; ++i)7497      ++a;7498  }7499#pragma omp target7500#pragma omp teams distribute7501  for (int i = 0; i < 10; ++i) {7502#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}7503    for (int i = 0; i < 10; ++i)7504      ++a;7505  }7506#pragma omp target7507#pragma omp teams distribute7508  for (int i = 0; i < 10; ++i) {7509#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}7510    for (int i = 0; i < 10; ++i)7511      ++a;7512  }7513#pragma omp target7514#pragma omp teams distribute7515  for (int i = 0; i < 10; ++i) {7516#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}7517    for (int i = 0; i < 10; ++i)7518      ++a;7519  }7520 7521// TEAMS DISTRIBUTE DIRECTIVE7522#pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}7523  for (int i = 0; i < 10; ++i)7524    ;7525#pragma omp target7526#pragma omp teams distribute7527  for (int i = 0; i < 10; ++i) {7528#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?}}7529    for (int i = 0; i < 10; ++i)7530      ;7531  }7532#pragma omp target7533#pragma omp teams distribute7534  for (int i = 0; i < 10; ++i) {7535#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?}}7536    for (int i = 0; i < 10; ++i)7537      ;7538  }7539#pragma omp target7540#pragma omp teams distribute7541  for (int i = 0; i < 10; ++i) {7542#pragma omp for // OK7543    for (int i = 0; i < 10; ++i)7544      ;7545  }7546#pragma omp target7547#pragma omp teams distribute7548  for (int i = 0; i < 10; ++i) {7549#pragma omp simd // OK7550    for (int i = 0; i < 10; ++i)7551      ;7552  }7553#pragma omp target7554#pragma omp teams distribute7555  for (int i = 0; i < 10; ++i) {7556#pragma omp for simd // OK7557    for (int i = 0; i < 10; ++i)7558      ;7559  }7560#pragma omp target7561#pragma omp teams distribute7562  for (int i = 0; i < 10; ++i) {7563#pragma omp parallel // OK7564    for (int i = 0; i < 10; ++i)7565      ;7566  }7567#pragma omp target7568#pragma omp teams distribute7569  for (int i = 0; i < 10; ++i) {7570#pragma omp sections // OK7571    {7572      bar();7573    }7574  }7575#pragma omp target7576#pragma omp teams distribute7577  for (int i = 0; i < 10; ++i) {7578#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}7579    {7580      bar();7581    }7582  }7583#pragma omp target7584#pragma omp teams distribute7585  for (int i = 0; i < 10; ++i) {7586#pragma omp single // OK7587    {7588      bar();7589    }7590  }7591#pragma omp target7592#pragma omp teams distribute7593  for (int i = 0; i < 10; ++i) {7594#pragma omp master // OK7595    {7596      bar();7597    }7598  }7599#pragma omp target7600#pragma omp teams distribute7601  for (int i = 0; i < 10; ++i) {7602#pragma omp critical // OK7603    {7604      bar();7605    }7606  }7607#pragma omp target7608#pragma omp teams distribute7609  for (int i = 0; i < 10; ++i) {7610#pragma omp parallel // OK7611    {7612#pragma omp single7613      {7614        bar();7615      }7616    }7617  }7618#pragma omp target7619#pragma omp teams distribute7620  for (int i = 0; i < 10; ++i) {7621#pragma omp parallel for // OK7622    for (int i = 0; i < 10; ++i)7623      ;7624  }7625#pragma omp target7626#pragma omp teams distribute7627  for (int i = 0; i < 10; ++i) {7628#pragma omp parallel for simd // OK7629    for (int i = 0; i < 10; ++i)7630      ;7631  }7632#pragma omp target7633#pragma omp teams distribute7634  for (int i = 0; i < 10; ++i) {7635#pragma omp parallel sections // OK7636    {7637      bar();7638    }7639  }7640#pragma omp target7641#pragma omp teams distribute7642  for (int i = 0; i < 10; ++i) {7643#pragma omp task // OK7644    {7645      bar();7646    }7647  }7648#pragma omp target7649#pragma omp teams distribute7650  for (int i = 0; i < 10; ++i) {7651#pragma omp taskyield // OK7652    bar();7653  }7654#pragma omp target7655#pragma omp teams distribute7656  for (int i = 0; i < 10; ++i) {7657#pragma omp barrier // OK7658    bar();7659  }7660#pragma omp target7661#pragma omp teams distribute7662  for (int i = 0; i < 10; ++i) {7663#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}7664    bar();7665  }7666#pragma omp target7667#pragma omp teams distribute7668  for (int i = 0; i < 10; ++i) {7669#pragma omp taskwait // OK7670    bar();7671  }7672#pragma omp target7673#pragma omp teams distribute7674  for (int i = 0; i < 10; ++i) {7675#pragma omp flush // OK7676    bar();7677  }7678#pragma omp target7679#pragma omp teams distribute7680  for (int i = 0; i < 10; ++i) {7681#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?}}7682    bar();7683  }7684#pragma omp target7685#pragma omp teams distribute7686  for (int i = 0; i < 10; ++i) {7687#pragma omp atomic // OK7688    ++a;7689  }7690#pragma omp target7691#pragma omp teams distribute7692  for (int i = 0; i < 10; ++i) {7693#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}7694    ++a;7695  }7696#pragma omp target7697#pragma omp teams distribute7698  for (int i = 0; i < 10; ++i) {7699#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target' region}}7700    ++a;7701  }7702#pragma omp target7703#pragma omp teams distribute7704  for (int i = 0; i < 10; ++i) {7705#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}7706    for (int i = 0; i < 10; ++i)7707      ;7708  }7709#pragma omp target7710#pragma omp teams distribute7711  for (int i = 0; i < 10; ++i) {7712#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}7713    ++a;7714  }7715#pragma omp target7716#pragma omp teams distribute7717  for (int i = 0; i < 10; ++i) {7718#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}7719    ++a;7720  }7721#pragma omp target7722#pragma omp teams distribute7723  for (int i = 0; i < 10; ++i) {7724#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?}}7725    ++a;7726  }7727#pragma omp target7728#pragma omp teams distribute7729  for (int i = 0; i < 10; ++i) {7730#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}7731    ++a;7732  }7733#pragma omp target7734#pragma omp teams distribute7735  for (int i = 0; i < 10; ++i) {7736#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?}}7737    for (int i = 0; i < 10; ++i)7738      ++a;7739  }7740#pragma omp target7741#pragma omp teams distribute7742  for (int i = 0; i < 10; ++i) {7743#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}7744    for (int i = 0; i < 10; ++i)7745      ++a;7746  }7747#pragma omp target7748#pragma omp teams distribute7749  for (int i = 0; i < 10; ++i) {7750#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?}}7751    for (int i = 0; i < 10; ++i)7752      ++a;7753  }7754#pragma omp target7755#pragma omp teams distribute7756  for (int i = 0; i < 10; ++i) {7757#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?}}7758    for (int i = 0; i < 10; ++i)7759      ++a;7760  }7761#pragma omp target7762#pragma omp teams distribute7763  for (int i = 0; i < 10; ++i) {7764#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?}}7765    for (int i = 0; i < 10; ++i)7766      ++a;7767  }7768#pragma omp target7769#pragma omp teams distribute7770  for (int i = 0; i < 10; ++i) {7771#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?}}7772    for (int i = 0; i < 10; ++i)7773      ++a;7774  }7775#pragma omp target7776#pragma omp teams distribute7777  for (int i = 0; i < 10; ++i) {7778#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}7779    ++a;7780  }7781#pragma omp target7782#pragma omp teams distribute7783  for (int i = 0; i < 10; ++i) {7784#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}7785    for (int i = 0; i < 10; ++i)7786      ++a;7787  }7788#pragma omp target7789#pragma omp teams distribute7790  for (int i = 0; i < 10; ++i) {7791#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}7792    for (int i = 0; i < 10; ++i)7793      ++a;7794  }7795#pragma omp target7796#pragma omp teams distribute7797  for (int i = 0; i < 10; ++i) {7798#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}7799    for (int i = 0; i < 10; ++i)7800      ++a;7801  }7802#pragma omp target7803#pragma omp teams distribute7804  for (int i = 0; i < 10; ++i) {7805#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}7806    for (int i = 0; i < 10; ++i)7807      ++a;7808  }7809 7810// TEAMS DISTRIBUTE SIMD DIRECTIVE7811#pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}7812  for (int i = 0; i < 10; ++i)7813    ;7814#pragma omp target7815#pragma omp teams distribute simd7816  for (int i = 0; i < 10; ++i) {7817#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7818    for (int i = 0; i < 10; ++i)7819      ;7820  }7821#pragma omp target7822#pragma omp teams distribute simd7823  for (int i = 0; i < 10; ++i) {7824#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}7825    for (int i = 0; i < 10; ++i)7826      ;7827  }7828#pragma omp target7829#pragma omp teams distribute simd7830  for (int i = 0; i < 10; ++i) {7831#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7832    for (int i = 0; i < 10; ++i)7833      ;7834  }7835#pragma omp target7836#pragma omp teams distribute simd7837  for (int i = 0; i < 10; ++i) {7838#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}7839    for (int i = 0; i < 10; ++i)7840      ;7841  }7842#pragma omp target7843#pragma omp teams distribute simd7844  for (int i = 0; i < 10; ++i) {7845#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7846    for (int i = 0; i < 10; ++i)7847      ;7848  }7849#pragma omp target7850#pragma omp teams distribute simd7851  for (int i = 0; i < 10; ++i) {7852#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}7853    for (int i = 0; i < 10; ++i)7854      ;7855  }7856#pragma omp target7857#pragma omp teams distribute simd7858  for (int i = 0; i < 10; ++i) {7859#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}7860    {7861      bar();7862    }7863  }7864#pragma omp target7865#pragma omp teams distribute simd7866  for (int i = 0; i < 10; ++i) {7867#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}7868    {7869      bar();7870    }7871  }7872#pragma omp target7873#pragma omp teams distribute simd7874  for (int i = 0; i < 10; ++i) {7875#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}7876    {7877      bar();7878    }7879  }7880#pragma omp target7881#pragma omp teams distribute simd7882  for (int i = 0; i < 10; ++i) {7883#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}7884    {7885      bar();7886    }7887  }7888#pragma omp target7889#pragma omp teams distribute simd7890  for (int i = 0; i < 10; ++i) {7891#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}7892    {7893      bar();7894    }7895  }7896#pragma omp target7897#pragma omp teams distribute simd7898  for (int i = 0; i < 10; ++i) {7899#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}7900    {7901#pragma omp single7902      {7903        bar();7904      }7905    }7906  }7907#pragma omp target7908#pragma omp teams distribute simd7909  for (int i = 0; i < 10; ++i) {7910#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7911    for (int i = 0; i < 10; ++i)7912      ;7913  }7914#pragma omp target7915#pragma omp teams distribute simd7916  for (int i = 0; i < 10; ++i) {7917#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}7918    for (int i = 0; i < 10; ++i)7919      ;7920  }7921#pragma omp target7922#pragma omp teams distribute simd7923  for (int i = 0; i < 10; ++i) {7924#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}7925    {7926      bar();7927    }7928  }7929#pragma omp target7930#pragma omp teams distribute simd7931  for (int i = 0; i < 10; ++i) {7932#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}7933    {7934      bar();7935    }7936  }7937#pragma omp target7938#pragma omp teams distribute simd7939  for (int i = 0; i < 10; ++i) {7940#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}7941    bar();7942  }7943#pragma omp target7944#pragma omp teams distribute simd7945  for (int i = 0; i < 10; ++i) {7946#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}7947    bar();7948  }7949#pragma omp target7950#pragma omp teams distribute simd7951  for (int i = 0; i < 10; ++i) {7952#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}7953    bar();7954  }7955#pragma omp target7956#pragma omp teams distribute simd7957  for (int i = 0; i < 10; ++i) {7958#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}7959    bar();7960  }7961#pragma omp target7962#pragma omp teams distribute simd7963  for (int i = 0; i < 10; ++i) {7964#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}7965    bar();7966  }7967#pragma omp target7968#pragma omp teams distribute simd7969  for (int i = 0; i < 10; ++i) {7970#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}7971    bar();7972  }7973#pragma omp target7974#pragma omp teams distribute simd7975  for (int i = 0; i < 10; ++i) {7976#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}7977    ++a;7978  }7979#pragma omp target7980#pragma omp teams distribute simd7981  for (int i = 0; i < 10; ++i) {7982#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}7983    ++a;7984  }7985#pragma omp target7986#pragma omp teams distribute simd7987  for (int i = 0; i < 10; ++i) {7988#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}7989    ++a;7990  }7991#pragma omp target7992#pragma omp teams distribute simd7993  for (int i = 0; i < 10; ++i) {7994#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}7995    for (int i = 0; i < 10; ++i)7996      ;7997  }7998#pragma omp target7999#pragma omp teams distribute simd8000  for (int i = 0; i < 10; ++i) {8001#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}8002    ++a;8003  }8004#pragma omp target8005#pragma omp teams distribute simd8006  for (int i = 0; i < 10; ++i) {8007#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}8008    ++a;8009  }8010#pragma omp target8011#pragma omp teams distribute simd8012  for (int i = 0; i < 10; ++i) {8013#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}8014    ++a;8015  }8016#pragma omp target8017#pragma omp teams distribute simd8018  for (int i = 0; i < 10; ++i) {8019#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}8020    ++a;8021  }8022#pragma omp target8023#pragma omp teams distribute simd8024  for (int i = 0; i < 10; ++i) {8025#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8026    for (int i = 0; i < 10; ++i)8027      ++a;8028  }8029#pragma omp target8030#pragma omp teams distribute simd8031  for (int i = 0; i < 10; ++i) {8032#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8033    for (int i = 0; i < 10; ++i)8034      ++a;8035  }8036#pragma omp target8037#pragma omp teams distribute simd8038  for (int i = 0; i < 10; ++i) {8039#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}8040    for (int i = 0; i < 10; ++i)8041      ++a;8042  }8043#pragma omp target8044#pragma omp teams distribute simd8045  for (int i = 0; i < 10; ++i) {8046#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8047    for (int i = 0; i < 10; ++i)8048      ++a;8049  }8050#pragma omp target8051#pragma omp teams distribute simd8052  for (int i = 0; i < 10; ++i) {8053#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8054    for (int i = 0; i < 10; ++i)8055      ++a;8056  }8057#pragma omp target8058#pragma omp teams distribute simd8059  for (int i = 0; i < 10; ++i) {8060#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8061    for (int i = 0; i < 10; ++i)8062      ++a;8063  }8064#pragma omp target8065#pragma omp teams distribute simd8066  for (int i = 0; i < 10; ++i) {8067#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}8068    ++a;8069  }8070#pragma omp target8071#pragma omp teams distribute simd8072  for (int i = 0; i < 10; ++i) {8073#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}8074    for (int i = 0; i < 10; ++i)8075      ++a;8076  }8077#pragma omp target8078#pragma omp teams distribute simd8079  for (int i = 0; i < 10; ++i) {8080#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8081    for (int i = 0; i < 10; ++i)8082      ++a;8083  }8084#pragma omp target8085#pragma omp teams distribute simd8086  for (int i = 0; i < 10; ++i) {8087#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8088    for (int i = 0; i < 10; ++i)8089      ++a;8090  }8091#pragma omp target8092#pragma omp teams distribute simd8093  for (int i = 0; i < 10; ++i) {8094#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8095    for (int i = 0; i < 10; ++i)8096      ++a;8097  }8098 8099// TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE8100#pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}8101  for (int i = 0; i < 10; ++i)8102    ;8103#pragma omp target8104#pragma omp teams distribute parallel for simd8105  for (int i = 0; i < 10; ++i) {8106#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8107    for (int i = 0; i < 10; ++i)8108      ;8109  }8110#pragma omp target8111#pragma omp teams distribute parallel for simd8112  for (int i = 0; i < 10; ++i) {8113#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}8114    for (int i = 0; i < 10; ++i)8115      ;8116  }8117#pragma omp target8118#pragma omp teams distribute parallel for simd8119  for (int i = 0; i < 10; ++i) {8120#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8121    for (int i = 0; i < 10; ++i)8122      ;8123  }8124#pragma omp target8125#pragma omp teams distribute parallel for simd8126  for (int i = 0; i < 10; ++i) {8127#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}8128    for (int i = 0; i < 10; ++i)8129      ;8130  }8131#pragma omp target8132#pragma omp teams distribute parallel for simd8133  for (int i = 0; i < 10; ++i) {8134#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8135    for (int i = 0; i < 10; ++i)8136      ;8137  }8138#pragma omp target8139#pragma omp teams distribute parallel for simd8140  for (int i = 0; i < 10; ++i) {8141#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}8142    for (int i = 0; i < 10; ++i)8143      ;8144  }8145#pragma omp target8146#pragma omp teams distribute parallel for simd8147  for (int i = 0; i < 10; ++i) {8148#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}8149    {8150      bar();8151    }8152  }8153#pragma omp target8154#pragma omp teams distribute parallel for simd8155  for (int i = 0; i < 10; ++i) {8156#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}8157    {8158      bar();8159    }8160  }8161#pragma omp target8162#pragma omp teams distribute parallel for simd8163  for (int i = 0; i < 10; ++i) {8164#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}8165    {8166      bar();8167    }8168  }8169#pragma omp target8170#pragma omp teams distribute parallel for simd8171  for (int i = 0; i < 10; ++i) {8172#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}8173    {8174      bar();8175    }8176  }8177#pragma omp target8178#pragma omp teams distribute parallel for simd8179  for (int i = 0; i < 10; ++i) {8180#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}8181    {8182      bar();8183    }8184  }8185#pragma omp target8186#pragma omp teams distribute parallel for simd8187  for (int i = 0; i < 10; ++i) {8188#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}8189    {8190#pragma omp single8191      {8192        bar();8193      }8194    }8195  }8196#pragma omp target8197#pragma omp teams distribute parallel for simd8198  for (int i = 0; i < 10; ++i) {8199#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8200    for (int i = 0; i < 10; ++i)8201      ;8202  }8203#pragma omp target8204#pragma omp teams distribute parallel for simd8205  for (int i = 0; i < 10; ++i) {8206#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8207    for (int i = 0; i < 10; ++i)8208      ;8209  }8210#pragma omp target8211#pragma omp teams distribute parallel for simd8212  for (int i = 0; i < 10; ++i) {8213#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}8214    {8215      bar();8216    }8217  }8218#pragma omp target8219#pragma omp teams distribute parallel for simd8220  for (int i = 0; i < 10; ++i) {8221#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}8222    {8223      bar();8224    }8225  }8226#pragma omp target8227#pragma omp teams distribute parallel for simd8228  for (int i = 0; i < 10; ++i) {8229#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}8230    bar();8231  }8232#pragma omp target8233#pragma omp teams distribute parallel for simd8234  for (int i = 0; i < 10; ++i) {8235#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}8236    bar();8237  }8238#pragma omp target8239#pragma omp teams distribute parallel for simd8240  for (int i = 0; i < 10; ++i) {8241#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}8242    bar();8243  }8244#pragma omp target8245#pragma omp teams distribute parallel for simd8246  for (int i = 0; i < 10; ++i) {8247#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}8248    bar();8249  }8250#pragma omp target8251#pragma omp teams distribute parallel for simd8252  for (int i = 0; i < 10; ++i) {8253#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}8254    bar();8255  }8256#pragma omp target8257#pragma omp teams distribute parallel for simd8258  for (int i = 0; i < 10; ++i) {8259#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}8260    bar();8261  }8262#pragma omp target8263#pragma omp teams distribute parallel for simd8264  for (int i = 0; i < 10; ++i) {8265#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}8266    ++a;8267  }8268#pragma omp target8269#pragma omp teams distribute parallel for simd8270  for (int i = 0; i < 10; ++i) {8271#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}8272    ++a;8273  }8274#pragma omp target8275#pragma omp teams distribute parallel for simd8276  for (int i = 0; i < 10; ++i) {8277#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}8278    ++a;8279  }8280#pragma omp target8281#pragma omp teams distribute parallel for simd8282  for (int i = 0; i < 10; ++i) {8283#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8284    for (int i = 0; i < 10; ++i)8285      ;8286  }8287#pragma omp target8288#pragma omp teams distribute parallel for simd8289  for (int i = 0; i < 10; ++i) {8290#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}8291    ++a;8292  }8293#pragma omp target8294#pragma omp teams distribute parallel for simd8295  for (int i = 0; i < 10; ++i) {8296#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}8297    ++a;8298  }8299#pragma omp target8300#pragma omp teams distribute parallel for simd8301  for (int i = 0; i < 10; ++i) {8302#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}8303    ++a;8304  }8305#pragma omp target8306#pragma omp teams distribute parallel for simd8307  for (int i = 0; i < 10; ++i) {8308#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}8309    ++a;8310  }8311#pragma omp target8312#pragma omp teams distribute parallel for simd8313  for (int i = 0; i < 10; ++i) {8314#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8315    for (int i = 0; i < 10; ++i)8316      ++a;8317  }8318#pragma omp target8319#pragma omp teams distribute parallel for simd8320  for (int i = 0; i < 10; ++i) {8321#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8322    for (int i = 0; i < 10; ++i)8323      ++a;8324  }8325#pragma omp target8326#pragma omp teams distribute parallel for simd8327  for (int i = 0; i < 10; ++i) {8328#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}8329    for (int i = 0; i < 10; ++i)8330      ++a;8331  }8332#pragma omp target8333#pragma omp teams distribute parallel for simd8334  for (int i = 0; i < 10; ++i) {8335#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8336    for (int i = 0; i < 10; ++i)8337      ++a;8338  }8339#pragma omp target8340#pragma omp teams distribute parallel for simd8341  for (int i = 0; i < 10; ++i) {8342#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8343    for (int i = 0; i < 10; ++i)8344      ++a;8345  }8346#pragma omp target8347#pragma omp teams distribute parallel for simd8348  for (int i = 0; i < 10; ++i) {8349#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8350    for (int i = 0; i < 10; ++i)8351      ++a;8352  }8353#pragma omp target8354#pragma omp teams distribute parallel for simd8355  for (int i = 0; i < 10; ++i) {8356#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}8357    ++a;8358  }8359#pragma omp target8360#pragma omp teams distribute parallel for simd8361  for (int i = 0; i < 10; ++i) {8362#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}8363    for (int i = 0; i < 10; ++i)8364      ++a;8365  }8366#pragma omp target8367#pragma omp teams distribute parallel for simd8368  for (int i = 0; i < 10; ++i) {8369#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}8370    for (int i = 0; i < 10; ++i)8371      ++a;8372  }8373#pragma omp target8374#pragma omp teams distribute parallel for simd8375  for (int i = 0; i < 10; ++i) {8376#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8377    for (int i = 0; i < 10; ++i)8378      ++a;8379  }8380#pragma omp target8381#pragma omp teams distribute parallel for simd8382  for (int i = 0; i < 10; ++i) {8383#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}8384    for (int i = 0; i < 10; ++i)8385      ++a;8386  }8387 8388// TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE8389#pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}8390  for (int i = 0; i < 10; ++i)8391    ;8392#pragma omp target8393#pragma omp teams distribute parallel for8394  for (int i = 0; i < 10; ++i) {8395#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?}}8396    for (int i = 0; i < 10; ++i)8397      ;8398  }8399#pragma omp target8400#pragma omp teams distribute parallel for8401  for (int i = 0; i < 10; ++i) {8402#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?}}8403    for (int i = 0; i < 10; ++i)8404      ;8405  }8406#pragma omp target8407#pragma omp teams distribute parallel for8408  for (int i = 0; i < 10; ++i) {8409#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?}}8410    for (int i = 0; i < 10; ++i)8411      ;8412  }8413#pragma omp target8414#pragma omp teams distribute parallel for8415  for (int i = 0; i < 10; ++i) {8416#pragma omp simd // OK8417    for (int i = 0; i < 10; ++i)8418      ;8419  }8420#pragma omp target8421#pragma omp teams distribute parallel for8422  for (int i = 0; i < 10; ++i) {8423#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?}}8424    for (int i = 0; i < 10; ++i)8425      ;8426  }8427#pragma omp target8428#pragma omp teams distribute parallel for8429  for (int i = 0; i < 10; ++i) {8430#pragma omp parallel // OK8431    for (int i = 0; i < 10; ++i)8432      ;8433  }8434#pragma omp target8435#pragma omp teams distribute parallel for8436  for (int i = 0; i < 10; ++i) {8437#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?}}8438    {8439      bar();8440    }8441  }8442#pragma omp target8443#pragma omp teams distribute parallel for8444  for (int i = 0; i < 10; ++i) {8445#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}8446    {8447      bar();8448    }8449  }8450#pragma omp target8451#pragma omp teams distribute parallel for8452  for (int i = 0; i < 10; ++i) {8453#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?}}8454    {8455      bar();8456    }8457  }8458#pragma omp target8459#pragma omp teams distribute parallel for8460  for (int i = 0; i < 10; ++i) {8461#pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}8462    {8463      bar();8464    }8465  }8466#pragma omp target8467#pragma omp teams distribute parallel for8468  for (int i = 0; i < 10; ++i) {8469#pragma omp critical // OK8470    {8471      bar();8472    }8473  }8474#pragma omp target8475#pragma omp teams distribute parallel for8476  for (int i = 0; i < 10; ++i) {8477#pragma omp parallel // OK8478    {8479#pragma omp single8480      {8481        bar();8482      }8483    }8484  }8485#pragma omp target8486#pragma omp teams distribute parallel for8487  for (int i = 0; i < 10; ++i) {8488#pragma omp parallel for // OK8489    for (int i = 0; i < 10; ++i)8490      ;8491  }8492#pragma omp target8493#pragma omp teams distribute parallel for8494  for (int i = 0; i < 10; ++i) {8495#pragma omp parallel for simd // OK8496    for (int i = 0; i < 10; ++i)8497      ;8498  }8499#pragma omp target8500#pragma omp teams distribute parallel for8501  for (int i = 0; i < 10; ++i) {8502#pragma omp parallel sections // OK8503    {8504      bar();8505    }8506  }8507#pragma omp target8508#pragma omp teams distribute parallel for8509  for (int i = 0; i < 10; ++i) {8510#pragma omp task // OK8511    {8512      bar();8513    }8514  }8515#pragma omp target8516#pragma omp teams distribute parallel for8517  for (int i = 0; i < 10; ++i) {8518#pragma omp taskyield // OK8519    bar();8520  }8521#pragma omp target8522#pragma omp teams distribute parallel for8523  for (int i = 0; i < 10; ++i) {8524#pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}8525    bar();8526  }8527#pragma omp target8528#pragma omp teams distribute parallel for8529  for (int i = 0; i < 10; ++i) {8530#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}8531    bar();8532  }8533#pragma omp target8534#pragma omp teams distribute parallel for8535  for (int i = 0; i < 10; ++i) {8536#pragma omp taskwait // OK8537    bar();8538  }8539#pragma omp target8540#pragma omp teams distribute parallel for8541  for (int i = 0; i < 10; ++i) {8542#pragma omp flush // OK8543    bar();8544  }8545#pragma omp target8546#pragma omp teams distribute parallel for8547  for (int i = 0; i < 10; ++i) {8548#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?}}8549    bar();8550  }8551#pragma omp target8552#pragma omp teams distribute parallel for8553  for (int i = 0; i < 10; ++i) {8554#pragma omp atomic // OK8555    ++a;8556  }8557#pragma omp target8558#pragma omp teams distribute parallel for8559  for (int i = 0; i < 10; ++i) {8560#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}8561    ++a;8562  }8563#pragma omp target8564#pragma omp teams distribute parallel for8565  for (int i = 0; i < 10; ++i) {8566#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target' region}}8567    ++a;8568  }8569#pragma omp target8570#pragma omp teams distribute parallel for8571  for (int i = 0; i < 10; ++i) {8572#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}8573    for (int i = 0; i < 10; ++i)8574      ;8575  }8576#pragma omp target8577#pragma omp teams distribute parallel for8578  for (int i = 0; i < 10; ++i) {8579#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}8580    ++a;8581  }8582#pragma omp target8583#pragma omp teams distribute parallel for8584  for (int i = 0; i < 10; ++i) {8585#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}8586    ++a;8587  }8588#pragma omp target8589#pragma omp teams distribute parallel for8590  for (int i = 0; i < 10; ++i) {8591#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?}}8592    ++a;8593  }8594#pragma omp target8595#pragma omp teams distribute parallel for8596  for (int i = 0; i < 10; ++i) {8597#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}8598    ++a;8599  }8600#pragma omp target8601#pragma omp teams distribute parallel for8602  for (int i = 0; i < 10; ++i) {8603#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?}}8604    for (int i = 0; i < 10; ++i)8605      ++a;8606  }8607#pragma omp target8608#pragma omp teams distribute parallel for8609  for (int i = 0; i < 10; ++i) {8610#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}8611    for (int i = 0; i < 10; ++i)8612      ++a;8613  }8614#pragma omp target8615#pragma omp teams distribute parallel for8616  for (int i = 0; i < 10; ++i) {8617#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?}}8618    for (int i = 0; i < 10; ++i)8619      ++a;8620  }8621#pragma omp target8622#pragma omp teams distribute parallel for8623  for (int i = 0; i < 10; ++i) {8624#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?}}8625    for (int i = 0; i < 10; ++i)8626      ++a;8627  }8628#pragma omp target8629#pragma omp teams distribute parallel for8630  for (int i = 0; i < 10; ++i) {8631#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?}}8632    for (int i = 0; i < 10; ++i)8633      ++a;8634  }8635#pragma omp target8636#pragma omp teams distribute parallel for8637  for (int i = 0; i < 10; ++i) {8638#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?}}8639    for (int i = 0; i < 10; ++i)8640      ++a;8641  }8642#pragma omp target8643#pragma omp teams distribute parallel for8644  for (int i = 0; i < 10; ++i) {8645#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}8646    ++a;8647  }8648#pragma omp target8649#pragma omp teams distribute parallel for8650  for (int i = 0; i < 10; ++i) {8651#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}8652    for (int i = 0; i < 10; ++i)8653      ++a;8654  }8655#pragma omp target8656#pragma omp teams distribute parallel for8657  for (int i = 0; i < 10; ++i) {8658#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}8659    for (int i = 0; i < 10; ++i)8660      ++a;8661  }8662#pragma omp target8663#pragma omp teams distribute parallel for8664  for (int i = 0; i < 10; ++i) {8665#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}8666    for (int i = 0; i < 10; ++i)8667      ++a;8668  }8669#pragma omp target8670#pragma omp teams distribute parallel for8671  for (int i = 0; i < 10; ++i) {8672#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}8673    for (int i = 0; i < 10; ++i)8674      ++a;8675  }8676 8677// TARGET TEAMS DIRECTIVE8678#pragma omp target teams8679#pragma omp parallel8680  bar();8681#pragma omp target teams8682#pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}8683  for (int i = 0; i < 10; ++i)8684    ;8685#pragma omp target teams8686#pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}}8687  for (int i = 0; i < 10; ++i)8688    ;8689#pragma omp target teams8690#pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}8691  for (int i = 0; i < 10; ++i)8692    ;8693#pragma omp target teams8694#pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}8695  {8696    bar();8697  }8698#pragma omp target teams8699#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}8700  {8701    bar();8702  }8703#pragma omp target teams8704#pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}8705  bar();8706 8707#pragma omp target teams8708#pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}}8709  {8710    bar();8711  }8712#pragma omp target teams8713#pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}}8714  {8715    bar();8716  }8717#pragma omp target teams8718#pragma omp parallel for8719  for (int i = 0; i < 10; ++i)8720    ;8721#pragma omp target teams8722#pragma omp parallel for simd8723  for (int i = 0; i < 10; ++i)8724    ;8725#pragma omp target teams8726#pragma omp parallel sections8727  {8728    bar();8729  }8730#pragma omp target teams8731#pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}}8732  {8733    bar();8734  }8735#pragma omp target teams8736  {8737#pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}}8738    bar();8739  }8740#pragma omp target teams8741  {8742#pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}}8743    bar();8744  }8745#pragma omp target teams8746  {8747#pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}8748    bar();8749  }8750#pragma omp target teams8751  {8752#pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}}8753    bar();8754  }8755#pragma omp target teams8756  {8757#pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}}8758    bar();8759  }8760#pragma omp target teams8761  {8762#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}8763    bar();8764  }8765#pragma omp target teams8766  {8767#pragma omp atomic // omp-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}8768    ++a;8769  }8770#pragma omp target teams8771  {8772#pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}8773    ++a;8774  }8775#pragma omp target teams8776  {8777#pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}8778    ++a;8779  }8780#pragma omp target teams8781#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}8782  for (int i = 0; i < 10; ++i)8783    ;8784#pragma omp target teams8785  {8786#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}8787  }8788#pragma omp target teams8789  {8790#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}8791  }8792#pragma omp target teams8793  {8794#pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}8795    ++a;8796  }8797#pragma omp target teams8798  {8799#pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}}8800  for (int i = 0; i < 10; ++i)8801    ++a;8802  }8803#pragma omp target teams8804#pragma omp distribute8805  for (int i = 0; i < 10; ++i)8806    ;8807#pragma omp target teams8808  {8809#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}8810    ++a;8811  }8812#pragma omp target teams8813#pragma omp distribute parallel for8814  for (int i = 0; i < 10; ++i)8815    ;8816#pragma omp target teams8817  {8818#pragma omp distribute parallel for8819  for (int i = 0; i < 10; ++i)8820    ;8821#pragma omp distribute parallel for8822  for (int j = 0; j < 10; ++j)8823    ;8824  }8825#pragma omp target teams8826  {8827#pragma omp distribute parallel for simd8828  for (int i = 0; i < 10; ++i)8829    ;8830#pragma omp distribute parallel for simd8831  for (int j = 0; j < 10; ++j)8832    ;8833  }8834#pragma omp target teams8835  {8836#pragma omp distribute simd8837  for (int i = 0; i < 10; ++i)8838    ;8839#pragma omp distribute simd8840  for (int j = 0; j < 10; ++j)8841    ;8842  }8843#pragma omp target teams8844  {8845#pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}8846  for (int i = 0; i < 10; ++i)8847    ;8848  }8849#pragma omp target teams8850  {8851#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}8852  for (int i = 0; i < 10; ++i)8853    ;8854  }8855#pragma omp target teams8856  {8857#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}8858  for (int i = 0; i < 10; ++i)8859    ;8860  }8861#pragma omp target teams8862  {8863#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}8864  for (int i = 0; i < 10; ++i)8865    ;8866  }8867#pragma omp target teams8868  {8869#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}8870  for (int i = 0; i < 10; ++i)8871    ;8872  }8873#pragma omp target teams8874  {8875#pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}8876    a++;8877  }8878#pragma omp target teams8879  {8880#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}8881  for (int i = 0; i < 10; ++i)8882    ;8883  }8884#pragma omp target teams8885  {8886#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}8887  for (int i = 0; i < 10; ++i)8888    ;8889  }8890#pragma omp target teams8891  {8892#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}8893  for (int i = 0; i < 10; ++i)8894    ;8895  }8896#pragma omp target teams8897  {8898#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}8899  for (int i = 0; i < 10; ++i)8900    ;8901  }8902 8903// TARGET TEAMS DISTRIBUTE DIRECTIVE8904#pragma omp target teams distribute // OK8905  for (int i = 0; i < 10; ++i)8906    ;8907#pragma omp target teams distribute8908  for (int i = 0; i < 10; ++i) {8909#pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}8910    for (int i = 0; i < 10; ++i)8911      ;8912  }8913#pragma omp target teams distribute8914  for (int i = 0; i < 10; ++i) {8915#pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}8916    for (int i = 0; i < 10; ++i)8917      ;8918  }8919#pragma omp target teams distribute8920  for (int i = 0; i < 10; ++i) {8921#pragma omp for // OK8922    for (int i = 0; i < 10; ++i)8923      ;8924  }8925#pragma omp target teams distribute8926  for (int i = 0; i < 10; ++i) {8927#pragma omp simd // OK8928    for (int i = 0; i < 10; ++i)8929      ;8930  }8931#pragma omp target teams distribute8932  for (int i = 0; i < 10; ++i) {8933#pragma omp for simd // OK8934    for (int i = 0; i < 10; ++i)8935      ;8936  }8937#pragma omp target teams distribute8938  for (int i = 0; i < 10; ++i) {8939#pragma omp parallel // OK8940    for (int i = 0; i < 10; ++i)8941      ;8942  }8943#pragma omp target teams distribute8944  for (int i = 0; i < 10; ++i) {8945#pragma omp sections // OK8946    {8947      bar();8948    }8949  }8950#pragma omp target teams distribute8951  for (int i = 0; i < 10; ++i) {8952#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}8953    {8954      bar();8955    }8956  }8957#pragma omp target teams distribute8958  for (int i = 0; i < 10; ++i) {8959#pragma omp single // OK8960    {8961      bar();8962    }8963  }8964#pragma omp target teams distribute8965  for (int i = 0; i < 10; ++i) {8966#pragma omp master // OK8967    {8968      bar();8969    }8970  }8971#pragma omp target teams distribute8972  for (int i = 0; i < 10; ++i) {8973#pragma omp critical // OK8974    {8975      bar();8976    }8977  }8978#pragma omp target teams distribute8979  for (int i = 0; i < 10; ++i) {8980#pragma omp parallel // OK8981    {8982#pragma omp single8983      {8984        bar();8985      }8986    }8987  }8988#pragma omp target teams distribute8989  for (int i = 0; i < 10; ++i) {8990#pragma omp parallel for // OK8991    for (int i = 0; i < 10; ++i)8992      ;8993  }8994#pragma omp target teams distribute8995  for (int i = 0; i < 10; ++i) {8996#pragma omp parallel for simd // OK8997    for (int i = 0; i < 10; ++i)8998      ;8999  }9000#pragma omp target teams distribute9001  for (int i = 0; i < 10; ++i) {9002#pragma omp parallel sections // OK9003    {9004      bar();9005    }9006  }9007#pragma omp target teams distribute9008  for (int i = 0; i < 10; ++i) {9009#pragma omp task // OK9010    {9011      bar();9012    }9013  }9014#pragma omp target teams distribute9015  for (int i = 0; i < 10; ++i) {9016#pragma omp taskyield // OK9017    bar();9018  }9019#pragma omp target teams distribute9020  for (int i = 0; i < 10; ++i) {9021#pragma omp barrier // OK9022    bar();9023  }9024#pragma omp target teams distribute9025  for (int i = 0; i < 10; ++i) {9026#pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}9027    bar();9028  }9029#pragma omp target teams distribute9030  for (int i = 0; i < 10; ++i) {9031#pragma omp taskwait // OK9032    bar();9033  }9034#pragma omp target teams distribute9035  for (int i = 0; i < 10; ++i) {9036#pragma omp flush // OK9037    bar();9038  }9039#pragma omp target teams distribute9040  for (int i = 0; i < 10; ++i) {9041#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}9042    bar();9043  }9044#pragma omp target teams distribute9045  for (int i = 0; i < 10; ++i) {9046#pragma omp atomic // OK9047    ++a;9048  }9049#pragma omp target teams distribute9050  for (int i = 0; i < 10; ++i) {9051#pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}9052    ++a;9053  }9054#pragma omp target teams distribute9055  for (int i = 0; i < 10; ++i) {9056#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target teams distribute' region}}9057    ++a;9058  }9059#pragma omp target teams distribute9060  for (int i = 0; i < 10; ++i) {9061#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}9062    for (int i = 0; i < 10; ++i)9063      ;9064  }9065#pragma omp target teams distribute9066  for (int i = 0; i < 10; ++i) {9067#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}9068    ++a;9069  }9070#pragma omp target teams distribute9071  for (int i = 0; i < 10; ++i) {9072#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}9073    ++a;9074  }9075#pragma omp target teams distribute9076  for (int i = 0; i < 10; ++i) {9077#pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}9078    ++a;9079  }9080#pragma omp target teams distribute9081  for (int i = 0; i < 10; ++i) {9082#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}9083    ++a;9084  }9085#pragma omp target teams distribute9086  for (int i = 0; i < 10; ++i) {9087#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}9088    for (int i = 0; i < 10; ++i)9089      ++a;9090  }9091#pragma omp target teams distribute9092  for (int i = 0; i < 10; ++i) {9093#pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}9094    for (int i = 0; i < 10; ++i)9095      ++a;9096  }9097#pragma omp target teams distribute9098  for (int i = 0; i < 10; ++i) {9099#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}9100    for (int i = 0; i < 10; ++i)9101      ++a;9102  }9103#pragma omp target teams distribute9104  for (int i = 0; i < 10; ++i) {9105#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}9106    for (int i = 0; i < 10; ++i)9107      ++a;9108  }9109#pragma omp target teams distribute9110  for (int i = 0; i < 10; ++i) {9111#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}9112    for (int i = 0; i < 10; ++i)9113      ++a;9114  }9115#pragma omp target teams distribute9116  for (int i = 0; i < 10; ++i) {9117#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}9118    for (int i = 0; i < 10; ++i)9119      ;9120  }9121#pragma omp target teams distribute9122  for (int i = 0; i < 10; ++i) {9123#pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}9124    a++;9125  }9126#pragma omp target teams distribute9127  for (int i = 0; i < 10; ++i) {9128#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}9129    for (int i = 0; i < 10; ++i)9130      ;9131  }9132#pragma omp target teams distribute9133  for (int i = 0; i < 10; ++i) {9134#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}9135    for (int i = 0; i < 10; ++i)9136      ;9137  }9138#pragma omp target teams distribute9139  for (int i = 0; i < 10; ++i) {9140#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}9141    for (int i = 0; i < 10; ++i)9142      ;9143  }9144#pragma omp target teams distribute9145  for (int i = 0; i < 10; ++i) {9146#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}9147    for (int i = 0; i < 10; ++i)9148      ;9149  }9150 9151// TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE9152#pragma omp target teams distribute parallel for // OK9153  for (int i = 0; i < 10; ++i)9154    ;9155#pragma omp target teams distribute parallel for9156  for (int i = 0; i < 10; ++i) {9157#pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}9158    for (int i = 0; i < 10; ++i)9159      ;9160  }9161#pragma omp target teams distribute parallel for9162  for (int i = 0; i < 10; ++i) {9163#pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}9164    for (int i = 0; i < 10; ++i)9165      ;9166  }9167#pragma omp target teams distribute parallel for9168  for (int i = 0; i < 10; ++i) {9169#pragma omp for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}9170    for (int i = 0; i < 10; ++i)9171      ;9172  }9173#pragma omp target teams distribute parallel for9174  for (int i = 0; i < 10; ++i) {9175#pragma omp simd // OK9176    for (int i = 0; i < 10; ++i)9177      ;9178  }9179#pragma omp target teams distribute parallel for9180  for (int i = 0; i < 10; ++i) {9181#pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}9182    for (int i = 0; i < 10; ++i)9183      ;9184  }9185#pragma omp target teams distribute parallel for9186  for (int i = 0; i < 10; ++i) {9187#pragma omp parallel // OK9188    for (int i = 0; i < 10; ++i)9189      ;9190  }9191#pragma omp target teams distribute parallel for9192  for (int i = 0; i < 10; ++i) {9193#pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}9194    {9195      bar();9196    }9197  }9198#pragma omp target teams distribute parallel for9199  for (int i = 0; i < 10; ++i) {9200#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}}9201    {9202      bar();9203    }9204  }9205#pragma omp target teams distribute parallel for9206  for (int i = 0; i < 10; ++i) {9207#pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}9208    {9209      bar();9210    }9211  }9212#pragma omp target teams distribute parallel for9213  for (int i = 0; i < 10; ++i) {9214#pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}9215    {9216      bar();9217    }9218  }9219#pragma omp target teams distribute parallel for9220  for (int i = 0; i < 10; ++i) {9221#pragma omp critical // OK9222    {9223      bar();9224    }9225  }9226#pragma omp target teams distribute parallel for9227  for (int i = 0; i < 10; ++i) {9228#pragma omp parallel // OK9229    {9230#pragma omp single9231      {9232        bar();9233      }9234    }9235  }9236#pragma omp target teams distribute parallel for9237  for (int i = 0; i < 10; ++i) {9238#pragma omp parallel for // OK9239    for (int i = 0; i < 10; ++i)9240      ;9241  }9242#pragma omp target teams distribute parallel for9243  for (int i = 0; i < 10; ++i) {9244#pragma omp parallel for simd // OK9245    for (int i = 0; i < 10; ++i)9246      ;9247  }9248#pragma omp target teams distribute parallel for9249  for (int i = 0; i < 10; ++i) {9250#pragma omp parallel sections // OK9251    {9252      bar();9253    }9254  }9255#pragma omp target teams distribute parallel for9256  for (int i = 0; i < 10; ++i) {9257#pragma omp task // OK9258    {9259      bar();9260    }9261  }9262#pragma omp target teams distribute parallel for9263  for (int i = 0; i < 10; ++i) {9264#pragma omp taskyield // OK9265    bar();9266  }9267#pragma omp target teams distribute parallel for9268  for (int i = 0; i < 10; ++i) {9269#pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}9270    bar();9271  }9272#pragma omp target teams distribute parallel for9273  for (int i = 0; i < 10; ++i) {9274#pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}9275    bar();9276  }9277#pragma omp target teams distribute parallel for9278  for (int i = 0; i < 10; ++i) {9279#pragma omp taskwait // OK9280    bar();9281  }9282#pragma omp target teams distribute parallel for9283  for (int i = 0; i < 10; ++i) {9284#pragma omp flush // OK9285    bar();9286  }9287#pragma omp target teams distribute parallel for9288  for (int i = 0; i < 10; ++i) {9289#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}9290    bar();9291  }9292#pragma omp target teams distribute parallel for9293  for (int i = 0; i < 10; ++i) {9294#pragma omp atomic // OK9295    ++a;9296  }9297#pragma omp target teams distribute parallel for9298  for (int i = 0; i < 10; ++i) {9299#pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9300    ++a;9301  }9302#pragma omp target teams distribute parallel for9303  for (int i = 0; i < 10; ++i) {9304#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9305    ++a;9306  }9307#pragma omp target teams distribute parallel for9308  for (int i = 0; i < 10; ++i) {9309#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9310    for (int i = 0; i < 10; ++i)9311      ;9312  }9313#pragma omp target teams distribute parallel for9314  for (int i = 0; i < 10; ++i) {9315#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9316    ++a;9317  }9318#pragma omp target teams distribute parallel for9319  for (int i = 0; i < 10; ++i) {9320#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9321    ++a;9322  }9323#pragma omp target teams distribute parallel for9324  for (int i = 0; i < 10; ++i) {9325#pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}9326    ++a;9327  }9328#pragma omp target teams distribute parallel for9329  for (int i = 0; i < 10; ++i) {9330#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9331    ++a;9332  }9333#pragma omp target teams distribute parallel for9334  for (int i = 0; i < 10; ++i) {9335#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}9336    for (int i = 0; i < 10; ++i)9337      ++a;9338  }9339#pragma omp target teams distribute parallel for9340  for (int i = 0; i < 10; ++i) {9341#pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9342    for (int i = 0; i < 10; ++i)9343      ++a;9344  }9345#pragma omp target teams distribute parallel for9346  for (int i = 0; i < 10; ++i) {9347#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}9348    for (int i = 0; i < 10; ++i)9349      ++a;9350  }9351#pragma omp target teams distribute parallel for9352  for (int i = 0; i < 10; ++i) {9353#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}9354    for (int i = 0; i < 10; ++i)9355      ++a;9356  }9357#pragma omp target teams distribute parallel for9358  for (int i = 0; i < 10; ++i) {9359#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}9360    for (int i = 0; i < 10; ++i)9361      ++a;9362  }9363#pragma omp target teams distribute parallel for9364  for (int i = 0; i < 10; ++i) {9365#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}9366    for (int i = 0; i < 10; ++i)9367      ;9368  }9369#pragma omp target teams distribute parallel for9370  for (int i = 0; i < 10; ++i) {9371#pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9372    a++;9373  }9374#pragma omp target teams distribute parallel for9375  for (int i = 0; i < 10; ++i) {9376#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9377    for (int i = 0; i < 10; ++i)9378      ;9379  }9380#pragma omp target teams distribute parallel for9381  for (int i = 0; i < 10; ++i) {9382#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9383    for (int i = 0; i < 10; ++i)9384      ;9385  }9386#pragma omp target teams distribute parallel for9387  for (int i = 0; i < 10; ++i) {9388#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9389    for (int i = 0; i < 10; ++i)9390      ;9391  }9392#pragma omp target teams distribute parallel for9393  for (int i = 0; i < 10; ++i) {9394#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}9395    for (int i = 0; i < 10; ++i)9396      ;9397  }9398 9399// TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE9400#pragma omp target teams distribute parallel for simd // OK9401  for (int i = 0; i < 10; ++i)9402    ;9403#pragma omp target teams distribute parallel for simd9404  for (int i = 0; i < 10; ++i) {9405#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9406    for (int i = 0; i < 10; ++i)9407      ;9408  }9409#pragma omp target teams distribute parallel for simd9410  for (int i = 0; i < 10; ++i) {9411#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}9412    for (int i = 0; i < 10; ++i)9413      ;9414  }9415#pragma omp target teams distribute parallel for simd9416  for (int i = 0; i < 10; ++i) {9417#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9418    for (int i = 0; i < 10; ++i)9419      ;9420  }9421#pragma omp target teams distribute parallel for simd9422  for (int i = 0; i < 10; ++i) {9423#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}9424    for (int i = 0; i < 10; ++i)9425      ;9426  }9427#pragma omp target teams distribute parallel for simd9428  for (int i = 0; i < 10; ++i) {9429#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9430    for (int i = 0; i < 10; ++i)9431      ;9432  }9433#pragma omp target teams distribute parallel for simd9434  for (int i = 0; i < 10; ++i) {9435#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}9436    for (int i = 0; i < 10; ++i)9437      ;9438  }9439#pragma omp target teams distribute parallel for simd9440  for (int i = 0; i < 10; ++i) {9441#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}9442    {9443      bar();9444    }9445  }9446#pragma omp target teams distribute parallel for simd9447  for (int i = 0; i < 10; ++i) {9448#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}9449    {9450      bar();9451    }9452  }9453#pragma omp target teams distribute parallel for simd9454  for (int i = 0; i < 10; ++i) {9455#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}9456    {9457      bar();9458    }9459  }9460#pragma omp target teams distribute parallel for simd9461  for (int i = 0; i < 10; ++i) {9462#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}9463    {9464      bar();9465    }9466  }9467#pragma omp target teams distribute parallel for simd9468  for (int i = 0; i < 10; ++i) {9469#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}9470    {9471      bar();9472    }9473  }9474#pragma omp target teams distribute parallel for simd9475  for (int i = 0; i < 10; ++i) {9476#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}9477    {9478#pragma omp single9479      {9480        bar();9481      }9482    }9483  }9484#pragma omp target teams distribute parallel for simd9485  for (int i = 0; i < 10; ++i) {9486#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9487    for (int i = 0; i < 10; ++i)9488      ;9489  }9490#pragma omp target teams distribute parallel for simd9491  for (int i = 0; i < 10; ++i) {9492#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9493    for (int i = 0; i < 10; ++i)9494      ;9495  }9496#pragma omp target teams distribute parallel for simd9497  for (int i = 0; i < 10; ++i) {9498#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}9499    {9500      bar();9501    }9502  }9503#pragma omp target teams distribute parallel for simd9504  for (int i = 0; i < 10; ++i) {9505#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}9506    {9507      bar();9508    }9509  }9510#pragma omp target teams distribute parallel for simd9511  for (int i = 0; i < 10; ++i) {9512#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}9513    bar();9514  }9515#pragma omp target teams distribute parallel for simd9516  for (int i = 0; i < 10; ++i) {9517#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}9518    bar();9519  }9520#pragma omp target teams distribute parallel for simd9521  for (int i = 0; i < 10; ++i) {9522#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}9523    bar();9524  }9525#pragma omp target teams distribute parallel for simd9526  for (int i = 0; i < 10; ++i) {9527#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}9528    bar();9529  }9530#pragma omp target teams distribute parallel for simd9531  for (int i = 0; i < 10; ++i) {9532#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}9533    bar();9534  }9535#pragma omp target teams distribute parallel for simd9536  for (int i = 0; i < 10; ++i) {9537#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}9538    bar();9539  }9540#pragma omp target teams distribute parallel for simd9541  for (int i = 0; i < 10; ++i) {9542#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}9543    ++a;9544  }9545#pragma omp target teams distribute parallel for simd9546  for (int i = 0; i < 10; ++i) {9547#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}9548    ++a;9549  }9550#pragma omp target teams distribute parallel for simd9551  for (int i = 0; i < 10; ++i) {9552#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}9553    ++a;9554  }9555#pragma omp target teams distribute parallel for simd9556  for (int i = 0; i < 10; ++i) {9557#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9558    for (int i = 0; i < 10; ++i)9559      ;9560  }9561#pragma omp target teams distribute parallel for simd9562  for (int i = 0; i < 10; ++i) {9563#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}9564    ++a;9565  }9566#pragma omp target teams distribute parallel for simd9567  for (int i = 0; i < 10; ++i) {9568#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}9569    ++a;9570  }9571#pragma omp target teams distribute parallel for simd9572  for (int i = 0; i < 10; ++i) {9573#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}9574    ++a;9575  }9576#pragma omp target teams distribute parallel for simd9577  for (int i = 0; i < 10; ++i) {9578#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}9579    ++a;9580  }9581#pragma omp target teams distribute parallel for simd9582  for (int i = 0; i < 10; ++i) {9583#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9584    for (int i = 0; i < 10; ++i)9585      ++a;9586  }9587#pragma omp target teams distribute parallel for simd9588  for (int i = 0; i < 10; ++i) {9589#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9590    for (int i = 0; i < 10; ++i)9591      ++a;9592  }9593#pragma omp target teams distribute parallel for simd9594  for (int i = 0; i < 10; ++i) {9595#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}9596    for (int i = 0; i < 10; ++i)9597      ++a;9598  }9599#pragma omp target teams distribute parallel for simd9600  for (int i = 0; i < 10; ++i) {9601#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9602    for (int i = 0; i < 10; ++i)9603      ++a;9604  }9605#pragma omp target teams distribute parallel for simd9606  for (int i = 0; i < 10; ++i) {9607#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9608    for (int i = 0; i < 10; ++i)9609      ++a;9610  }9611#pragma omp target teams distribute parallel for simd9612  for (int i = 0; i < 10; ++i) {9613#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9614    for (int i = 0; i < 10; ++i)9615      ;9616  }9617#pragma omp target teams distribute parallel for simd9618  for (int i = 0; i < 10; ++i) {9619#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}9620    a++;9621  }9622#pragma omp target teams distribute parallel for simd9623  for (int i = 0; i < 10; ++i) {9624#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}9625    for (int i = 0; i < 10; ++i)9626      ;9627  }9628#pragma omp target teams distribute parallel for simd9629  for (int i = 0; i < 10; ++i) {9630#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9631    for (int i = 0; i < 10; ++i)9632      ;9633  }9634#pragma omp target teams distribute parallel for simd9635  for (int i = 0; i < 10; ++i) {9636#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9637    for (int i = 0; i < 10; ++i)9638      ;9639  }9640#pragma omp target teams distribute parallel for simd9641  for (int i = 0; i < 10; ++i) {9642#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9643    for (int i = 0; i < 10; ++i)9644      ;9645  }9646 9647// TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE9648#pragma omp target teams distribute simd // OK9649  for (int i = 0; i < 10; ++i)9650    ;9651#pragma omp target teams distribute simd9652  for (int i = 0; i < 10; ++i) {9653#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9654    for (int i = 0; i < 10; ++i)9655      ;9656  }9657#pragma omp target teams distribute simd9658  for (int i = 0; i < 10; ++i) {9659#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}9660    for (int i = 0; i < 10; ++i)9661      ;9662  }9663#pragma omp target teams distribute simd9664  for (int i = 0; i < 10; ++i) {9665#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9666    for (int i = 0; i < 10; ++i)9667      ;9668  }9669#pragma omp target teams distribute simd9670  for (int i = 0; i < 10; ++i) {9671#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}9672    for (int i = 0; i < 10; ++i)9673      ;9674  }9675#pragma omp target teams distribute simd9676  for (int i = 0; i < 10; ++i) {9677#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9678    for (int i = 0; i < 10; ++i)9679      ;9680  }9681#pragma omp target teams distribute simd9682  for (int i = 0; i < 10; ++i) {9683#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}9684    for (int i = 0; i < 10; ++i)9685      ;9686  }9687#pragma omp target teams distribute simd9688  for (int i = 0; i < 10; ++i) {9689#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}9690    {9691      bar();9692    }9693  }9694#pragma omp target teams distribute simd9695  for (int i = 0; i < 10; ++i) {9696#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}9697    {9698      bar();9699    }9700  }9701#pragma omp target teams distribute simd9702  for (int i = 0; i < 10; ++i) {9703#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}9704    {9705      bar();9706    }9707  }9708#pragma omp target teams distribute simd9709  for (int i = 0; i < 10; ++i) {9710#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}9711    {9712      bar();9713    }9714  }9715#pragma omp target teams distribute simd9716  for (int i = 0; i < 10; ++i) {9717#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}9718    {9719      bar();9720    }9721  }9722#pragma omp target teams distribute simd9723  for (int i = 0; i < 10; ++i) {9724#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}9725    {9726#pragma omp single9727      {9728        bar();9729      }9730    }9731  }9732#pragma omp target teams distribute simd9733  for (int i = 0; i < 10; ++i) {9734#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9735    for (int i = 0; i < 10; ++i)9736      ;9737  }9738#pragma omp target teams distribute simd9739  for (int i = 0; i < 10; ++i) {9740#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9741    for (int i = 0; i < 10; ++i)9742      ;9743  }9744#pragma omp target teams distribute simd9745  for (int i = 0; i < 10; ++i) {9746#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}9747    {9748      bar();9749    }9750  }9751#pragma omp target teams distribute simd9752  for (int i = 0; i < 10; ++i) {9753#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}9754    {9755      bar();9756    }9757  }9758#pragma omp target teams distribute simd9759  for (int i = 0; i < 10; ++i) {9760#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}9761    bar();9762  }9763#pragma omp target teams distribute simd9764  for (int i = 0; i < 10; ++i) {9765#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}9766    bar();9767  }9768#pragma omp target teams distribute simd9769  for (int i = 0; i < 10; ++i) {9770#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}9771    bar();9772  }9773#pragma omp target teams distribute simd9774  for (int i = 0; i < 10; ++i) {9775#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}9776    bar();9777  }9778#pragma omp target teams distribute simd9779  for (int i = 0; i < 10; ++i) {9780#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}9781    bar();9782  }9783#pragma omp target teams distribute simd9784  for (int i = 0; i < 10; ++i) {9785#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}9786    bar();9787  }9788#pragma omp target teams distribute simd9789  for (int i = 0; i < 10; ++i) {9790#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}9791    ++a;9792  }9793#pragma omp target teams distribute simd9794  for (int i = 0; i < 10; ++i) {9795#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}9796    ++a;9797  }9798#pragma omp target teams distribute simd9799  for (int i = 0; i < 10; ++i) {9800#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}9801    ++a;9802  }9803#pragma omp target teams distribute simd9804  for (int i = 0; i < 10; ++i) {9805#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9806    for (int i = 0; i < 10; ++i)9807      ;9808  }9809#pragma omp target teams distribute simd9810  for (int i = 0; i < 10; ++i) {9811#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}9812    ++a;9813  }9814#pragma omp target teams distribute simd9815  for (int i = 0; i < 10; ++i) {9816#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}9817    ++a;9818  }9819#pragma omp target teams distribute simd9820  for (int i = 0; i < 10; ++i) {9821#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}9822    ++a;9823  }9824#pragma omp target teams distribute simd9825  for (int i = 0; i < 10; ++i) {9826#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}9827    ++a;9828  }9829#pragma omp target teams distribute simd9830  for (int i = 0; i < 10; ++i) {9831#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9832    for (int i = 0; i < 10; ++i)9833      ++a;9834  }9835#pragma omp target teams distribute simd9836  for (int i = 0; i < 10; ++i) {9837#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9838    for (int i = 0; i < 10; ++i)9839      ++a;9840  }9841#pragma omp target teams distribute simd9842  for (int i = 0; i < 10; ++i) {9843#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}9844    for (int i = 0; i < 10; ++i)9845      ++a;9846  }9847#pragma omp target teams distribute simd9848  for (int i = 0; i < 10; ++i) {9849#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9850    for (int i = 0; i < 10; ++i)9851      ++a;9852  }9853#pragma omp target teams distribute simd9854  for (int i = 0; i < 10; ++i) {9855#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9856    for (int i = 0; i < 10; ++i)9857      ++a;9858  }9859#pragma omp target teams distribute simd9860  for (int i = 0; i < 10; ++i) {9861#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9862    for (int i = 0; i < 10; ++i)9863      ;9864  }9865#pragma omp target teams distribute simd9866  for (int i = 0; i < 10; ++i) {9867#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}9868    a++;9869  }9870#pragma omp target teams distribute simd9871  for (int i = 0; i < 10; ++i) {9872#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}9873    for (int i = 0; i < 10; ++i)9874      ;9875  }9876#pragma omp target teams distribute simd9877  for (int i = 0; i < 10; ++i) {9878#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}9879    for (int i = 0; i < 10; ++i)9880      ;9881  }9882#pragma omp target teams distribute simd9883  for (int i = 0; i < 10; ++i) {9884#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9885    for (int i = 0; i < 10; ++i)9886      ;9887  }9888#pragma omp target teams distribute simd9889  for (int i = 0; i < 10; ++i) {9890#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}9891    for (int i = 0; i < 10; ++i)9892      ;9893  }9894 9895  // SCOPE DIRECTIVE9896#pragma omp scope9897#pragma omp parallel // OK9898  bar();9899#pragma omp scope9900#pragma omp parallel for // OK9901  for(int i = 0; i < 10; i++)9902    ;9903#pragma omp scope9904#pragma omp parallel for simd // OK9905  for(int i = 0; i < 10; i++)9906    ;9907#pragma omp scope9908#pragma omp for9909  for (int i = 0; i < 10; ++i)9910    ;9911#pragma omp scope9912#pragma omp simd9913  for (int i = 0; i < 10; ++i)9914    ;9915#pragma omp scope9916#pragma omp for simd9917  for (int i = 0; i < 10; ++i)9918    ;9919#pragma omp scope9920#pragma omp sections9921  {9922    bar();9923  }9924#pragma omp scope9925#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a scope region}}9926  {9927    bar();9928  }9929#pragma omp scope9930#pragma omp single9931  bar();9932 9933#pragma omp scope9934#pragma omp master9935  {9936    bar();9937  }9938#pragma omp scope9939#pragma omp critical9940  {9941    bar();9942  }9943#pragma omp scope9944#pragma omp parallel sections9945  {9946    bar();9947  }9948#pragma omp scope9949#pragma omp parallel master9950  {9951    bar();9952  }9953#pragma omp scope9954#pragma omp parallel masked9955  {9956    bar();9957  }9958#pragma omp scope9959#pragma omp task9960  {9961    bar();9962  }9963#pragma omp scope9964  {9965#pragma omp taskyield9966    bar();9967  }9968#pragma omp scope9969  {9970#pragma omp barrier9971    bar();9972  }9973#pragma omp scope9974  {9975#pragma omp scan // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}9976    bar();9977  }9978#pragma omp scope9979  {9980#pragma omp taskwait9981    bar();9982  }9983#pragma omp scope9984  {9985#pragma omp flush9986    bar();9987  }9988#pragma omp scope9989  {9990#pragma omp ordered // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}9991    bar();9992  }9993#pragma omp scope9994  {9995#pragma omp atomic9996    ++a;9997  }9998#pragma omp scope9999  {10000#pragma omp target parallel10001    ++a;10002  }10003#pragma omp scope10004  {10005#pragma omp target parallel for10006  for (int i = 0; i < 10; ++i)10007    ;10008  }10009#pragma omp scope10010  {10011#pragma omp target enter data map(to: a)10012    ++a;10013  }10014#pragma omp scope10015  {10016#pragma omp target exit data map(from: a)10017    ++a;10018  }10019#pragma omp scope10020  {10021#pragma omp taskloop10022  for (int i = 0; i < 10; ++i)10023    ++a;10024  }10025#pragma omp scope10026  {10027#pragma omp target // OK10028    a++;10029  }10030#pragma omp scope10031  {10032#pragma omp teams // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}10033    a++;10034  }10035#pragma omp scope10036  {10037#pragma omp target teams // OK10038    a++;10039  }10040#pragma omp scope10041  {10042#pragma omp distribute // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}10043    for (int i = 0; i < 10; ++i)10044      ;10045  }10046 #pragma omp scope10047   {10048 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}10049     for (int i = 0; i < 10; ++i)10050       ;10051   }10052#pragma omp scope10053  {10054#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}10055    for (int i = 0; i < 10; ++i)10056      ;10057  }10058#pragma omp scope10059  {10060#pragma omp target simd // OK10061    for (int i = 0; i < 10; ++i)10062      ;10063  }10064#pragma omp scope10065   {10066 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}10067     for (int i = 0; i < 10; ++i)10068       ;10069   }10070#pragma omp scope10071  {10072#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}10073    for (int i = 0; i < 10; ++i)10074      ;10075  }10076#pragma omp scope10077  {10078#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}10079    for (int i = 0; i < 10; ++i)10080      ;10081  }10082#pragma omp scope10083  {10084#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}10085    for (int i = 0; i < 10; ++i)10086      ;10087  }10088#pragma omp scope10089  {10090#pragma omp target teams // OK10091    ++a;10092  }10093#pragma omp scope10094  {10095#pragma omp target teams distribute // OK10096    for (int i = 0; i < 10; ++i)10097      ;10098  }10099#pragma omp scope10100  {10101#pragma omp target teams distribute parallel for // OK10102    for (int i = 0; i < 10; ++i)10103      ;10104  }10105#pragma omp scope10106  {10107#pragma omp target teams distribute parallel for simd // OK10108    for (int i = 0; i < 10; ++i)10109      ;10110  }10111#pragma omp scope10112  {10113#pragma omp target teams distribute simd // OK10114    for (int i = 0; i < 10; ++i)10115      ;10116  }10117#pragma omp for10118  for (int i = 0; i < 10; ++i) {10119#pragma omp scope // expected-error {{region cannot be closely nested inside 'for' region}}10120    bar();10121  }10122 10123#pragma omp for simd10124  for (int i = 0; i < 10; ++i) {10125#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10126    bar();10127  }10128 10129#pragma omp sections10130  {10131#pragma omp scope // expected-error {{region cannot be closely nested inside 'sections' region}}10132    bar();10133  }10134 10135#pragma omp sections10136  {10137#pragma omp section10138    {10139#pragma omp scope // expected-error {{region cannot be closely nested inside 'section' region}}10140      bar();10141    }10142  }10143 10144#pragma omp single10145  {10146#pragma omp scope // expected-error {{region cannot be closely nested inside 'single' region}}10147    bar();10148  }10149 10150#pragma omp master10151  {10152#pragma omp scope // expected-error {{region cannot be closely nested inside 'master' region}}10153    bar();10154  }10155 10156#pragma omp critical10157  {10158#pragma omp scope // expected-error {{region cannot be closely nested inside 'critical' region}}10159    bar();10160  }10161 10162#pragma omp parallel for10163  for (int i = 0; i < 10; ++i) {10164#pragma omp scope // expected-error {{region cannot be closely nested inside 'parallel for' region}}10165    bar();10166  }10167 10168#pragma omp parallel for simd10169  for (int i = 0; i < 10; ++i) {10170#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10171    bar();10172  }10173 10174#pragma omp parallel master10175  {10176#pragma omp scope // expected-error {{region cannot be closely nested inside 'parallel master' region}}10177    bar();10178  }10179 10180#pragma omp parallel sections10181  {10182#pragma omp scope // expected-error {{region cannot be closely nested inside 'parallel sections' region}}10183    bar();10184  }10185 10186#pragma omp task10187  {10188#pragma omp scope // expected-error {{region cannot be closely nested inside 'task' region}}10189    bar();10190  }10191 10192#pragma omp ordered10193  {10194#pragma omp scope // expected-error {{region cannot be closely nested inside 'ordered' region}}10195    bar();10196  }10197 10198#pragma omp atomic10199  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}10200  // expected-note@+1 {{expected an expression statement}}10201  {10202#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside an atomic region}}10203    bar();10204  }10205 10206#pragma omp target10207#pragma omp teams10208  {10209#pragma omp scope // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scope' directive into a parallel region?}}10210    bar();10211  }10212 10213#pragma omp taskloop10214  for (int i = 0; i < 10; ++i) {10215#pragma omp scope // expected-error {{region cannot be closely nested inside 'taskloop' region}}10216    bar();10217  }10218 10219#pragma omp target10220#pragma omp teams10221#pragma omp distribute parallel for10222  for (int i = 0; i < 10; ++i) {10223#pragma omp scope // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}10224    bar();10225  }10226 10227#pragma omp target10228#pragma omp teams10229#pragma omp distribute parallel for simd10230  for (int i = 0; i < 10; ++i) {10231#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10232    bar();10233  }10234 10235#pragma omp target simd10236  for (int i = 0; i < 10; ++i) {10237#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10238    bar();10239  }10240 10241#pragma omp target10242#pragma omp teams distribute simd10243  for (int i = 0; i < 10; ++i) {10244#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10245    bar();10246  }10247 10248#pragma omp target10249#pragma omp teams distribute parallel for simd10250  for (int i = 0; i < 10; ++i) {10251#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10252    bar();10253  }10254 10255#pragma omp target10256#pragma omp teams distribute parallel for10257  for (int i = 0; i < 10; ++i) {10258#pragma omp scope // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}10259    bar();10260  }10261 10262#pragma omp target teams10263  {10264#pragma omp scope // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scope' directive into a parallel region?}}10265    bar();10266  }10267 10268#pragma omp target teams distribute parallel for10269  for (int i = 0; i < 10; ++i) {10270#pragma omp scope // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}10271    bar();10272  }10273 10274#pragma omp target teams distribute parallel for simd10275  for (int i = 0; i < 10; ++i) {10276#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10277    bar();10278  }10279 10280#pragma omp target teams distribute simd10281  for (int i = 0; i < 10; ++i) {10282#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10283    bar();10284  }10285 10286#pragma omp simd10287  for (int i = 0; i < 10; ++i) {10288#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}10289    bar();10290  }10291}10292 10293void foo() {10294  int a = 0;10295// PARALLEL DIRECTIVE10296#pragma omp parallel10297#pragma omp for10298  for (int i = 0; i < 10; ++i)10299    ;10300#pragma omp parallel10301#pragma omp simd10302  for (int i = 0; i < 10; ++i)10303    ;10304#pragma omp parallel10305#pragma omp for simd10306  for (int i = 0; i < 10; ++i)10307    ;10308#pragma omp parallel10309#pragma omp sections10310  {10311    bar();10312  }10313#pragma omp parallel10314#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel region}}10315  {10316    bar();10317  }10318#pragma omp parallel10319#pragma omp sections10320  {10321    bar();10322  }10323#pragma omp parallel10324#pragma omp single10325  bar();10326#pragma omp parallel10327#pragma omp master10328  bar();10329#pragma omp parallel master10330  bar();10331#pragma omp parallel masked10332  bar();10333#pragma omp parallel10334#pragma omp critical10335  bar();10336#pragma omp parallel10337#pragma omp parallel for10338  for (int i = 0; i < 10; ++i)10339    ;10340#pragma omp parallel10341#pragma omp parallel for simd10342  for (int i = 0; i < 10; ++i)10343    ;10344#pragma omp parallel10345#pragma omp parallel sections10346  {10347    bar();10348  }10349#pragma omp parallel10350#pragma omp task10351  {10352    bar();10353  }10354#pragma omp parallel10355  {10356#pragma omp taskyield10357    bar();10358  }10359#pragma omp parallel10360  {10361#pragma omp barrier10362    bar();10363  }10364#pragma omp parallel10365  {10366#pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}10367    bar();10368  }10369#pragma omp parallel10370  {10371#pragma omp taskwait10372    bar();10373  }10374#pragma omp parallel10375  {10376#pragma omp flush10377    bar();10378  }10379#pragma omp parallel10380  {10381#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?}}10382    bar();10383  }10384#pragma omp parallel10385  {10386#pragma omp atomic10387    ++a;10388  }10389#pragma omp parallel10390  {10391#pragma omp target10392    ++a;10393  }10394#pragma omp parallel10395  {10396#pragma omp target parallel10397    ++a;10398  }10399#pragma omp parallel10400#pragma omp target parallel for10401  for (int i = 0; i < 10; ++i)10402    ;10403#pragma omp parallel10404  {10405#pragma omp target enter data map(to: a)10406    ++a;10407  }10408#pragma omp parallel10409  {10410#pragma omp target exit data map(from: a)10411    ++a;10412  }10413#pragma omp parallel10414  {10415#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?}}10416    ++a;10417  }10418#pragma omp parallel10419  {10420#pragma omp taskloop10421  for (int i = 0; i < 10; ++i)10422    ++a;10423  }10424#pragma omp parallel10425  {10426#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?}}10427    for (int i = 0; i < 10; ++i)10428      ;10429  }10430#pragma omp parallel10431  {10432#pragma omp target update to(a)10433    a++;10434  }10435#pragma omp parallel10436  {10437#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?}}10438    for (int i = 0; i < 10; ++i)10439      ;10440  }10441#pragma omp parallel10442  {10443#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?}}10444    for (int i = 0; i < 10; ++i)10445      ;10446  }10447#pragma omp parallel10448  {10449#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?}}10450    for (int i = 0; i < 10; ++i)10451      ;10452  }10453#pragma omp parallel10454  {10455#pragma omp target simd // OK10456    for (int i = 0; i < 10; ++i)10457      ;10458  }10459#pragma omp parallel10460  {10461#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?}}10462    for (int i = 0; i < 10; ++i)10463      ;10464  }10465#pragma omp parallel10466  {10467#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?}}10468    for (int i = 0; i < 10; ++i)10469      ;10470  }10471#pragma omp parallel10472  {10473#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?}}10474    for (int i = 0; i < 10; ++i)10475      ;10476  }10477#pragma omp parallel10478  {10479#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?}}10480    for (int i = 0; i < 10; ++i)10481      ;10482  }10483#pragma omp parallel10484  {10485#pragma omp target teams // OK10486    a++;10487  }10488#pragma omp parallel10489  {10490#pragma omp target teams distribute // OK10491    for (int i = 0; i < 10; ++i)10492      ;10493  }10494#pragma omp parallel10495  {10496#pragma omp target teams distribute parallel for // OK10497    for (int i = 0; i < 10; ++i)10498      ;10499  }10500#pragma omp parallel10501  {10502#pragma omp target teams distribute parallel for simd // OK10503    for (int i = 0; i < 10; ++i)10504      ;10505  }10506#pragma omp parallel10507  {10508#pragma omp target teams distribute simd // OK10509    for (int i = 0; i < 10; ++i)10510      ;10511  }10512 10513// SIMD DIRECTIVE10514#pragma omp simd10515  for (int i = 0; i < 10; ++i) {10516#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}10517    for (int i = 0; i < 10; ++i)10518      ;10519  }10520#pragma omp simd10521  for (int i = 0; i < 10; ++i) {10522#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}10523    for (int i = 0; i < 10; ++i)10524      ;10525  }10526#pragma omp simd10527  for (int i = 0; i < 10; ++i) {10528#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10529    for (int i = 0; i < 10; ++i)10530      ;10531  }10532#pragma omp simd10533  for (int i = 0; i < 10; ++i) {10534#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}10535    for (int i = 0; i < 10; ++i)10536      ;10537  }10538#pragma omp simd10539  for (int i = 0; i < 10; ++i) {10540#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}10541    {10542      bar();10543    }10544  }10545#pragma omp simd10546  for (int i = 0; i < 10; ++i) {10547#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}10548    {10549      bar();10550    }10551  }10552#pragma omp simd10553  for (int i = 0; i < 10; ++i) {10554#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}10555    bar();10556#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}10557    bar();10558  }10559#pragma omp simd10560  for (int i = 0; i < 10; ++i) {10561#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}10562    bar();10563#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}10564    bar();10565  }10566#pragma omp simd10567  for (int i = 0; i < 10; ++i) {10568#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}10569    for (int i = 0; i < 10; ++i)10570      ;10571  }10572#pragma omp simd10573  for (int i = 0; i < 10; ++i) {10574#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10575    for (int i = 0; i < 10; ++i)10576      ;10577  }10578#pragma omp simd10579  for (int i = 0; i < 10; ++i) {10580#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}10581    {10582      bar();10583    }10584  }10585#pragma omp simd10586  for (int i = 0; i < 10; ++i) {10587#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}10588    {10589      bar();10590    }10591  }10592#pragma omp simd10593  for (int i = 0; i < 10; ++i) {10594#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}10595    bar();10596  }10597#pragma omp simd10598  for (int i = 0; i < 10; ++i) {10599#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}10600    bar();10601  }10602#pragma omp simd10603  for (int i = 0; i < 10; ++i) {10604#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}10605    bar();10606  }10607#pragma omp simd10608  for (int i = 0; i < 10; ++i) {10609#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}10610    bar();10611  }10612#pragma omp simd10613  for (int i = 0; i < 10; ++i) {10614#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}10615    bar();10616  }10617#pragma omp simd10618  for (int i = 0; i < 10; ++i) {10619#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}10620    bar();10621  }10622#pragma omp simd10623  for (int i = 0; i < 10; ++i) {10624#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}10625    ++a;10626  }10627#pragma omp simd10628  for (int i = 0; i < 10; ++i) {10629#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}10630    ++a;10631  }10632#pragma omp simd10633  for (int i = 0; i < 10; ++i) {10634#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}10635    ++a;10636  }10637#pragma omp simd10638  for (int i = 0; i < 10; ++i) {10639#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}10640    for (int i = 0; i < 10; ++i)10641      ;10642  }10643#pragma omp simd10644  for (int i = 0; i < 10; ++i) {10645#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}10646    ++a;10647  }10648#pragma omp simd10649  for (int i = 0; i < 10; ++i) {10650#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}10651    ++a;10652  }10653#pragma omp simd10654  for (int i = 0; i < 10; ++i) {10655#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}10656    ++a;10657  }10658#pragma omp simd10659  for (int i = 0; i < 10; ++i) {10660#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}10661  for (int i = 0; i < 10; ++i)10662    ++a;10663  }10664#pragma omp simd10665  for (int i = 0; i < 10; ++i) {10666#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}10667    for (int j = 0; j < 10; ++j)10668      ;10669  }10670#pragma omp simd10671  for (int i = 0; i < 10; ++i) {10672#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}10673    a++;10674  }10675#pragma omp simd10676  for (int i = 0; i < 10; ++i) {10677#pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}10678    for (int j = 0; j < 10; ++j)10679      ;10680  }10681#pragma omp simd10682  for (int i = 0; i < 10; ++i) {10683#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10684    for (int j = 0; j < 10; ++j)10685      ;10686  }10687#pragma omp simd10688  for (int i = 0; i < 10; ++i) {10689#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10690    for (int j = 0; j < 10; ++j)10691      ;10692  }10693#pragma omp simd10694  for (int i = 0; i < 10; ++i) {10695#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10696    for (int j = 0; j < 10; ++j)10697      ;10698  }10699#pragma omp simd10700  for (int i = 0; i < 10; ++i) {10701#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}10702    for (int j = 0; j < 10; ++j)10703      ;10704  }10705#pragma omp simd10706  for (int i = 0; i < 10; ++i) {10707#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10708    for (int j = 0; j < 10; ++j)10709      ;10710  }10711#pragma omp simd10712  for (int i = 0; i < 10; ++i) {10713#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10714    for (int j = 0; j < 10; ++j)10715      ;10716  }10717#pragma omp simd10718  for (int i = 0; i < 10; ++i) {10719#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}10720    for (int j = 0; j < 10; ++j)10721      ;10722  }10723#pragma omp simd10724  for (int i = 0; i < 10; ++i) {10725#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}10726    a++;10727  }10728#pragma omp simd10729  for (int i = 0; i < 10; ++i) {10730#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}10731    for (int j = 0; j < 10; ++j)10732      ;10733  }10734#pragma omp simd10735  for (int i = 0; i < 10; ++i) {10736#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}10737    for (int j = 0; j < 10; ++j)10738      ;10739  }10740#pragma omp simd10741  for (int i = 0; i < 10; ++i) {10742#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10743    for (int j = 0; j < 10; ++j)10744      ;10745  }10746#pragma omp simd10747  for (int i = 0; i < 10; ++i) {10748#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}10749    for (int j = 0; j < 10; ++j)10750      ;10751  }10752 10753// FOR DIRECTIVE10754#pragma omp for10755  for (int i = 0; i < 10; ++i) {10756#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?}}10757    for (int i = 0; i < 10; ++i)10758      ;10759  }10760#pragma omp for10761  for (int i = 0; i < 10; ++i) {10762#pragma omp simd10763    for (int i = 0; i < 10; ++i)10764      ;10765  }10766#pragma omp for10767  for (int i = 0; i < 10; ++i) {10768#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?}}10769    for (int i = 0; i < 10; ++i)10770      ;10771  }10772#pragma omp for10773  for (int i = 0; i < 10; ++i) {10774#pragma omp parallel10775    for (int i = 0; i < 10; ++i)10776      ;10777  }10778#pragma omp for10779  for (int i = 0; i < 10; ++i) {10780#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?}}10781    {10782      bar();10783    }10784  }10785#pragma omp for10786  for (int i = 0; i < 10; ++i) {10787#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a for region}}10788    {10789      bar();10790    }10791  }10792#pragma omp for10793  for (int i = 0; i < 10; ++i) {10794#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?}}10795    bar();10796#pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}10797    bar();10798#pragma omp critical10799    bar();10800  }10801#pragma omp for10802  for (int i = 0; i < 10; ++i) {10803#pragma omp parallel10804    {10805#pragma omp single // OK10806      {10807        bar();10808      }10809#pragma omp for // OK10810      for (int i = 0; i < 10; ++i)10811        ;10812#pragma omp for simd // OK10813      for (int i = 0; i < 10; ++i)10814        ;10815#pragma omp sections // OK10816      {10817        bar();10818      }10819    }10820  }10821#pragma omp for10822  for (int i = 0; i < 10; ++i) {10823#pragma omp parallel for10824    for (int i = 0; i < 10; ++i)10825      ;10826  }10827#pragma omp for10828  for (int i = 0; i < 10; ++i) {10829#pragma omp parallel for simd10830    for (int i = 0; i < 10; ++i)10831      ;10832  }10833#pragma omp for10834  for (int i = 0; i < 10; ++i) {10835#pragma omp parallel sections10836    {10837      bar();10838    }10839  }10840#pragma omp for10841  for (int i = 0; i < 10; ++i) {10842#pragma omp task10843    {10844      bar();10845    }10846  }10847#pragma omp for10848  for (int i = 0; i < 10; ++i) {10849#pragma omp taskyield10850    bar();10851  }10852#pragma omp for10853  for (int i = 0; i < 10; ++i) {10854#pragma omp barrier // expected-error {{region cannot be closely nested inside 'for' region}}10855    bar();10856  }10857#pragma omp for10858  for (int i = 0; i < 10; ++i) {10859#pragma omp scan // omp45-error {{region cannot be closely nested inside 'for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}10860    bar();10861  }10862#pragma omp for10863  for (int i = 0; i < 10; ++i) {10864#pragma omp taskwait10865    bar();10866  }10867#pragma omp for10868  for (int i = 0; i < 10; ++i) {10869#pragma omp flush10870    bar();10871  }10872#pragma omp for10873  for (int i = 0; i < 10; ++i) {10874#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?}}10875    bar();10876  }10877#pragma omp for ordered10878  for (int i = 0; i < 10; ++i) {10879#pragma omp ordered // OK10880    bar();10881  }10882#pragma omp for10883  for (int i = 0; i < 10; ++i) {10884#pragma omp atomic10885    ++a;10886  }10887#pragma omp for10888  for (int i = 0; i < 10; ++i) {10889#pragma omp target10890    ++a;10891  }10892#pragma omp for10893  for (int i = 0; i < 10; ++i) {10894#pragma omp target parallel10895    ++a;10896  }10897#pragma omp for10898  for (int i = 0; i < 10; ++i) {10899#pragma omp target parallel for10900    for (int i = 0; i < 10; ++i)10901      ;10902  }10903#pragma omp for10904  for (int i = 0; i < 10; ++i) {10905#pragma omp target enter data map(to: a)10906    ++a;10907  }10908#pragma omp for10909  for (int i = 0; i < 10; ++i) {10910#pragma omp target exit data map(from: a)10911    ++a;10912  }10913#pragma omp for10914  for (int i = 0; i < 10; ++i) {10915#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?}}10916    ++a;10917  }10918#pragma omp for10919  for (int i = 0; i < 10; ++i) {10920#pragma omp taskloop10921  for (int i = 0; i < 10; ++i)10922    ++a;10923  }10924#pragma omp for10925  for (int i = 0; i < 10; ++i) {10926#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?}}10927    for (int j = 0; j < 10; ++j)10928      ;10929  }10930#pragma omp for10931  for (int i = 0; i < 10; ++i) {10932#pragma omp target update to(a)10933    ++a;10934  }10935#pragma omp for10936  for (int i = 0; i < 10; ++i) {10937#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?}}10938    for (int j = 0; j < 10; ++j)10939      ;10940  }10941#pragma omp for10942  for (int i = 0; i < 10; ++i) {10943#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?}}10944    for (int j = 0; j < 10; ++j)10945      ;10946  }10947#pragma omp for10948  for (int i = 0; i < 10; ++i) {10949#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?}}10950    for (int j = 0; j < 10; ++j)10951      ;10952  }10953#pragma omp for10954  for (int i = 0; i < 10; ++i) {10955#pragma omp target simd // OK10956    for (int j = 0; j < 10; ++j)10957      ;10958  }10959#pragma omp for10960  for (int i = 0; i < 10; ++i) {10961#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?}}10962    for (int j = 0; j < 10; ++j)10963      ;10964  }10965#pragma omp for10966  for (int i = 0; i < 10; ++i) {10967#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?}}10968    for (int j = 0; j < 10; ++j)10969      ;10970  }10971#pragma omp for10972  for (int i = 0; i < 10; ++i) {10973#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?}}10974    for (int j = 0; j < 10; ++j)10975      ;10976  }10977#pragma omp for10978  for (int i = 0; i < 10; ++i) {10979#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?}}10980    for (int j = 0; j < 10; ++j)10981      ;10982  }10983#pragma omp for10984  for (int i = 0; i < 10; ++i) {10985#pragma omp target teams // OK10986    a++;10987  }10988#pragma omp for10989  for (int i = 0; i < 10; ++i) {10990#pragma omp target teams distribute // OK10991    for (int j = 0; j < 10; ++j)10992      ;10993  }10994#pragma omp for10995  for (int i = 0; i < 10; ++i) {10996#pragma omp target teams distribute parallel for // OK10997    for (int j = 0; j < 10; ++j)10998      ;10999  }11000#pragma omp for11001  for (int i = 0; i < 10; ++i) {11002#pragma omp target teams distribute parallel for simd // OK11003    for (int j = 0; j < 10; ++j)11004      ;11005  }11006#pragma omp for11007  for (int i = 0; i < 10; ++i) {11008#pragma omp target teams distribute simd // OK11009    for (int j = 0; j < 10; ++j)11010      ;11011  }11012 11013// FOR SIMD DIRECTIVE11014#pragma omp for simd11015  for (int i = 0; i < 10; ++i) {11016#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}11017    for (int i = 0; i < 10; ++i)11018      ;11019  }11020#pragma omp for simd11021  for (int i = 0; i < 10; ++i) {11022#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}11023    for (int i = 0; i < 10; ++i)11024      ;11025  }11026#pragma omp for simd11027  for (int i = 0; i < 10; ++i) {11028#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11029    for (int i = 0; i < 10; ++i)11030      ;11031  }11032#pragma omp for simd11033  for (int i = 0; i < 10; ++i) {11034#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}11035    for (int i = 0; i < 10; ++i)11036      ;11037  }11038#pragma omp for simd11039  for (int i = 0; i < 10; ++i) {11040#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}11041    {11042      bar();11043    }11044  }11045#pragma omp for simd11046  for (int i = 0; i < 10; ++i) {11047#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}11048    {11049      bar();11050    }11051  }11052#pragma omp for simd11053  for (int i = 0; i < 10; ++i) {11054#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}11055    bar();11056#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}11057    bar();11058  }11059#pragma omp for simd11060  for (int i = 0; i < 10; ++i) {11061#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}11062    bar();11063#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}11064    bar();11065  }11066#pragma omp for simd11067  for (int i = 0; i < 10; ++i) {11068#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}11069    for (int i = 0; i < 10; ++i)11070      ;11071  }11072#pragma omp for simd11073  for (int i = 0; i < 10; ++i) {11074#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11075    for (int i = 0; i < 10; ++i)11076      ;11077  }11078#pragma omp for simd11079  for (int i = 0; i < 10; ++i) {11080#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}11081    {11082      bar();11083    }11084  }11085#pragma omp for simd11086  for (int i = 0; i < 10; ++i) {11087#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}11088    {11089      bar();11090    }11091  }11092#pragma omp for simd11093  for (int i = 0; i < 10; ++i) {11094#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}11095    bar();11096  }11097#pragma omp for simd11098  for (int i = 0; i < 10; ++i) {11099#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}11100    bar();11101  }11102#pragma omp for simd11103  for (int i = 0; i < 10; ++i) {11104#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}11105    bar();11106  }11107#pragma omp for simd11108  for (int i = 0; i < 10; ++i) {11109#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}11110    bar();11111  }11112#pragma omp for simd11113  for (int i = 0; i < 10; ++i) {11114#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}11115    bar();11116  }11117#pragma omp for simd11118  for (int i = 0; i < 10; ++i) {11119#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}11120    bar();11121  }11122#pragma omp for simd11123  for (int i = 0; i < 10; ++i) {11124#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}11125    ++a;11126  }11127#pragma omp for simd11128  for (int i = 0; i < 10; ++i) {11129#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}11130    ++a;11131  }11132#pragma omp for simd11133  for (int i = 0; i < 10; ++i) {11134#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}11135    ++a;11136  }11137#pragma omp for simd11138  for (int i = 0; i < 10; ++i) {11139#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}11140    for (int i = 0; i < 10; ++i)11141      ;11142  }11143#pragma omp for simd11144  for (int i = 0; i < 10; ++i) {11145#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}11146    ++a;11147  }11148#pragma omp for simd11149  for (int i = 0; i < 10; ++i) {11150#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}11151    ++a;11152  }11153#pragma omp for simd11154  for (int i = 0; i < 10; ++i) {11155#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}11156    ++a;11157  }11158#pragma omp for simd11159  for (int i = 0; i < 10; ++i) {11160#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}11161  for (int i = 0; i < 10; ++i)11162    ++a;11163  }11164#pragma omp for simd11165  for (int i = 0; i < 10; ++i) {11166#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}11167    for (int j = 0; j < 10; ++j)11168      ;11169  }11170#pragma omp for simd11171  for (int i = 0; i < 10; ++i) {11172#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}11173    ++a;11174  }11175#pragma omp for simd11176  for (int i = 0; i < 10; ++i) {11177#pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}11178    for (int j = 0; j < 10; ++j)11179      ;11180  }11181#pragma omp for simd11182  for (int i = 0; i < 10; ++i) {11183#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11184    for (int j = 0; j < 10; ++j)11185      ;11186  }11187#pragma omp for simd11188  for (int i = 0; i < 10; ++i) {11189#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11190    for (int j = 0; j < 10; ++j)11191      ;11192  }11193#pragma omp for simd11194  for (int i = 0; i < 10; ++i) {11195#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11196    for (int j = 0; j < 10; ++j)11197      ;11198  }11199#pragma omp for simd11200  for (int i = 0; i < 10; ++i) {11201#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}11202    for (int j = 0; j < 10; ++j)11203      ;11204  }11205#pragma omp for simd11206  for (int i = 0; i < 10; ++i) {11207#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11208    for (int j = 0; j < 10; ++j)11209      ;11210  }11211#pragma omp for simd11212  for (int i = 0; i < 10; ++i) {11213#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11214    for (int j = 0; j < 10; ++j)11215      ;11216  }11217#pragma omp for simd11218  for (int i = 0; i < 10; ++i) {11219#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}11220    for (int j = 0; j < 10; ++j)11221      ;11222  }11223#pragma omp for simd11224  for (int i = 0; i < 10; ++i) {11225#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}11226    a++;11227  }11228#pragma omp for simd11229  for (int i = 0; i < 10; ++i) {11230#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}11231    for (int j = 0; j < 10; ++j)11232      ;11233  }11234#pragma omp for simd11235  for (int i = 0; i < 10; ++i) {11236#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}11237    for (int j = 0; j < 10; ++j)11238      ;11239  }11240#pragma omp for simd11241  for (int i = 0; i < 10; ++i) {11242#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11243    for (int j = 0; j < 10; ++j)11244      ;11245  }11246#pragma omp for simd11247  for (int i = 0; i < 10; ++i) {11248#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}11249    for (int j = 0; j < 10; ++j)11250      ;11251  }11252 11253// SECTIONS DIRECTIVE11254#pragma omp sections11255  {11256#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?}}11257    for (int i = 0; i < 10; ++i)11258      ;11259  }11260#pragma omp sections11261  {11262#pragma omp simd11263    for (int i = 0; i < 10; ++i)11264      ;11265  }11266#pragma omp sections11267  {11268#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?}}11269    for (int i = 0; i < 10; ++i)11270      ;11271  }11272#pragma omp sections11273  {11274#pragma omp parallel11275    for (int i = 0; i < 10; ++i)11276      ;11277  }11278#pragma omp sections11279  {11280#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?}}11281    {11282      bar();11283    }11284  }11285#pragma omp sections11286  {11287#pragma omp section11288    {11289      bar();11290    }11291  }11292#pragma omp sections11293  {11294#pragma omp critical11295    bar();11296#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?}}11297    bar();11298#pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}11299    bar();11300  }11301#pragma omp sections11302  {11303#pragma omp parallel11304    {11305#pragma omp single // OK11306      {11307        bar();11308      }11309#pragma omp for // OK11310      for (int i = 0; i < 10; ++i)11311        ;11312#pragma omp for simd // OK11313      for (int i = 0; i < 10; ++i)11314        ;11315#pragma omp sections // OK11316      {11317        bar();11318      }11319    }11320  }11321#pragma omp sections11322  {11323#pragma omp parallel for11324    for (int i = 0; i < 10; ++i)11325      ;11326  }11327#pragma omp sections11328  {11329#pragma omp parallel for simd11330    for (int i = 0; i < 10; ++i)11331      ;11332  }11333#pragma omp sections11334  {11335#pragma omp parallel sections11336    {11337      bar();11338    }11339  }11340#pragma omp sections11341  {11342#pragma omp task11343    {11344      bar();11345    }11346  }11347#pragma omp sections11348  {11349#pragma omp taskyield11350  }11351#pragma omp sections11352  {11353#pragma omp barrier // expected-error {{region cannot be closely nested inside 'sections' region}}11354    bar();11355  }11356#pragma omp sections11357  {11358#pragma omp scan // expected-error {{region cannot be closely nested inside 'sections' region}}11359    bar();11360  }11361#pragma omp sections11362  {11363#pragma omp taskwait11364  }11365#pragma omp sections11366  {11367#pragma omp flush11368  }11369#pragma omp sections11370  {11371#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?}}11372    bar();11373  }11374#pragma omp sections11375  {11376#pragma omp atomic11377    ++a;11378  }11379#pragma omp sections11380  {11381#pragma omp target11382    ++a;11383  }11384#pragma omp sections11385  {11386#pragma omp target parallel11387    ++a;11388  }11389#pragma omp sections11390  {11391#pragma omp target parallel for11392    for (int i = 0; i < 10; ++i)11393      ;11394  }11395#pragma omp sections11396  {11397#pragma omp target enter data map(to: a)11398  }11399#pragma omp sections11400  {11401#pragma omp target exit data map(from: a)11402  }11403#pragma omp sections11404  {11405#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?}}11406    ++a;11407  }11408#pragma omp sections11409  {11410#pragma omp taskloop11411  for (int i = 0; i < 10; ++i)11412    ++a;11413  }11414#pragma omp sections11415  {11416#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?}}11417    for (int i = 0; i < 10; ++i)11418      ;11419  }11420#pragma omp sections11421  {11422#pragma omp target update to(a)11423  }11424#pragma omp sections11425  {11426#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?}}11427    for (int i = 0; i < 10; ++i)11428      ;11429  }11430#pragma omp sections11431  {11432#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?}}11433    for (int i = 0; i < 10; ++i)11434      ;11435  }11436#pragma omp sections11437  {11438#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?}}11439    for (int i = 0; i < 10; ++i)11440      ;11441  }11442#pragma omp sections11443  {11444#pragma omp target simd // OK11445    for (int i = 0; i < 10; ++i)11446      ;11447  }11448#pragma omp sections11449  {11450#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?}}11451    for (int i = 0; i < 10; ++i)11452      ;11453  }11454#pragma omp sections11455  {11456#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?}}11457    for (int i = 0; i < 10; ++i)11458      ;11459  }11460#pragma omp sections11461  {11462#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?}}11463    for (int i = 0; i < 10; ++i)11464      ;11465  }11466#pragma omp sections11467  {11468#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?}}11469    for (int i = 0; i < 10; ++i)11470      ;11471  }11472#pragma omp sections11473  {11474#pragma omp target teams // OK11475    a++;11476  }11477#pragma omp sections11478  {11479#pragma omp target teams distribute // OK11480    for (int i = 0; i < 10; ++i)11481      ;11482  }11483#pragma omp sections11484  {11485#pragma omp target teams distribute parallel for // OK11486    for (int i = 0; i < 10; ++i)11487      ;11488  }11489#pragma omp sections11490  {11491#pragma omp target teams distribute parallel for simd // OK11492    for (int i = 0; i < 10; ++i)11493      ;11494  }11495#pragma omp sections11496  {11497#pragma omp target teams distribute simd // OK11498    for (int i = 0; i < 10; ++i)11499      ;11500  }11501 11502// SECTION DIRECTIVE11503#pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}}11504  {11505    bar();11506  }11507#pragma omp sections11508  {11509#pragma omp section11510    {11511#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?}}11512      for (int i = 0; i < 10; ++i)11513        ;11514    }11515  }11516#pragma omp sections11517  {11518#pragma omp section11519    {11520#pragma omp simd11521      for (int i = 0; i < 10; ++i)11522        ;11523    }11524  }11525#pragma omp sections11526  {11527#pragma omp section11528    {11529#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?}}11530      for (int i = 0; i < 10; ++i)11531        ;11532    }11533  }11534#pragma omp sections11535  {11536#pragma omp section11537    {11538#pragma omp parallel11539      for (int i = 0; i < 10; ++i)11540        ;11541    }11542  }11543#pragma omp sections11544  {11545#pragma omp section11546    {11547#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?}}11548      {11549        bar();11550      }11551    }11552  }11553#pragma omp sections11554  {11555#pragma omp section11556    {11557#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a section region}}11558      {11559        bar();11560      }11561    }11562  }11563#pragma omp sections11564  {11565#pragma omp section11566    {11567#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?}}11568      bar();11569#pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}11570      bar();11571#pragma omp critical11572      bar();11573    }11574  }11575#pragma omp sections11576  {11577#pragma omp section11578    {11579#pragma omp parallel11580      {11581#pragma omp single // OK11582        {11583          bar();11584        }11585#pragma omp for // OK11586        for (int i = 0; i < 10; ++i)11587          ;11588#pragma omp for simd // OK11589        for (int i = 0; i < 10; ++i)11590          ;11591#pragma omp sections // OK11592        {11593          bar();11594        }11595      }11596    }11597  }11598#pragma omp sections11599  {11600#pragma omp section11601    {11602#pragma omp parallel for11603      for (int i = 0; i < 10; ++i)11604        ;11605    }11606  }11607#pragma omp sections11608  {11609#pragma omp section11610    {11611#pragma omp parallel for simd11612      for (int i = 0; i < 10; ++i)11613        ;11614    }11615  }11616#pragma omp sections11617  {11618#pragma omp section11619    {11620#pragma omp parallel sections11621      {11622        bar();11623      }11624    }11625  }11626#pragma omp sections11627  {11628#pragma omp section11629    {11630#pragma omp task11631      {11632        bar();11633      }11634    }11635  }11636#pragma omp sections11637  {11638#pragma omp section11639    {11640#pragma omp taskyield11641      bar();11642    }11643  }11644#pragma omp sections11645  {11646#pragma omp section11647    {11648#pragma omp barrier // expected-error {{region cannot be closely nested inside 'section' region}}11649      bar();11650    }11651  }11652#pragma omp sections11653  {11654#pragma omp section11655    {11656#pragma omp scan // expected-error {{region cannot be closely nested inside 'section' region}}11657      bar();11658    }11659  }11660#pragma omp sections11661  {11662#pragma omp section11663    {11664#pragma omp taskwait11665      bar();11666    }11667  }11668#pragma omp sections11669  {11670#pragma omp section11671    {11672#pragma omp flush11673      bar();11674    }11675  }11676#pragma omp sections11677  {11678#pragma omp section11679    {11680#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?}}11681      bar();11682    }11683  }11684#pragma omp sections11685  {11686#pragma omp section11687    {11688#pragma omp atomic11689      ++a;11690    }11691  }11692#pragma omp sections11693  {11694#pragma omp section11695    {11696#pragma omp target11697      ++a;11698    }11699  }11700#pragma omp sections11701  {11702#pragma omp section11703    {11704#pragma omp target parallel11705      ++a;11706    }11707  }11708#pragma omp sections11709  {11710#pragma omp section11711    {11712#pragma omp target parallel for11713      for (int i = 0; i < 10; ++i)11714        ;11715    }11716  }11717#pragma omp sections11718  {11719#pragma omp section11720    {11721#pragma omp target enter data map(to: a)11722      ++a;11723    }11724  }11725#pragma omp sections11726  {11727#pragma omp section11728    {11729#pragma omp target exit data map(from: a)11730      ++a;11731    }11732  }11733#pragma omp sections11734  {11735#pragma omp section11736    {11737#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?}}11738      ++a;11739    }11740  }11741#pragma omp sections11742  {11743#pragma omp section11744    {11745#pragma omp taskloop11746  for (int i = 0; i < 10; ++i)11747      ++a;11748    }11749  }11750#pragma omp sections11751  {11752#pragma omp section11753#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?}}11754    for (int i = 0; i < 10; ++i)11755      ;11756  }11757#pragma omp sections11758  {11759#pragma omp section11760    {11761#pragma omp target update to(a)11762      a++;11763    }11764  }11765#pragma omp sections11766  {11767#pragma omp section11768#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?}}11769    for (int i = 0; i < 10; ++i)11770      ;11771  }11772#pragma omp sections11773  {11774#pragma omp section11775#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?}}11776    for (int i = 0; i < 10; ++i)11777      ;11778  }11779#pragma omp sections11780  {11781#pragma omp section11782#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?}}11783    for (int i = 0; i < 10; ++i)11784      ;11785  }11786#pragma omp sections11787  {11788#pragma omp section11789#pragma omp target simd // OK11790    for (int i = 0; i < 10; ++i)11791      ;11792  }11793#pragma omp sections11794  {11795#pragma omp section11796#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?}}11797    for (int i = 0; i < 10; ++i)11798      ;11799  }11800#pragma omp sections11801  {11802#pragma omp section11803#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?}}11804    for (int i = 0; i < 10; ++i)11805      ;11806  }11807#pragma omp sections11808  {11809#pragma omp section11810#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?}}11811    for (int i = 0; i < 10; ++i)11812      ;11813  }11814#pragma omp sections11815  {11816#pragma omp section11817#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?}}11818    for (int i = 0; i < 10; ++i)11819      ;11820  }11821#pragma omp sections11822  {11823#pragma omp section11824#pragma omp target teams // OK11825    a++;11826  }11827#pragma omp sections11828  {11829#pragma omp section11830#pragma omp target teams distribute // OK11831    for (int i = 0; i < 10; ++i)11832      ;11833  }11834#pragma omp sections11835  {11836#pragma omp section11837#pragma omp target teams distribute parallel for // OK11838    for (int i = 0; i < 10; ++i)11839      ;11840  }11841#pragma omp sections11842  {11843#pragma omp section11844#pragma omp target teams distribute parallel for simd // OK11845    for (int i = 0; i < 10; ++i)11846      ;11847  }11848#pragma omp sections11849  {11850#pragma omp section11851#pragma omp target teams distribute simd // OK11852    for (int i = 0; i < 10; ++i)11853      ;11854  }11855 11856// SINGLE DIRECTIVE11857#pragma omp single11858  {11859#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?}}11860    for (int i = 0; i < 10; ++i)11861      ;11862  }11863#pragma omp single11864  {11865#pragma omp simd11866    for (int i = 0; i < 10; ++i)11867      ;11868  }11869#pragma omp single11870  {11871#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?}}11872    for (int i = 0; i < 10; ++i)11873      ;11874  }11875#pragma omp single11876  {11877#pragma omp parallel11878    for (int i = 0; i < 10; ++i)11879      ;11880  }11881#pragma omp single11882  {11883#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?}}11884    {11885      bar();11886    }11887#pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}11888    bar();11889#pragma omp critical11890    bar();11891  }11892#pragma omp single11893  {11894#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?}}11895    {11896      bar();11897    }11898  }11899#pragma omp single11900  {11901#pragma omp parallel11902    {11903#pragma omp single // OK11904      {11905        bar();11906      }11907#pragma omp for // OK11908      for (int i = 0; i < 10; ++i)11909        ;11910#pragma omp for simd // OK11911      for (int i = 0; i < 10; ++i)11912        ;11913#pragma omp sections // OK11914      {11915        bar();11916      }11917    }11918  }11919#pragma omp single11920  {11921#pragma omp parallel for11922    for (int i = 0; i < 10; ++i)11923      ;11924  }11925#pragma omp single11926  {11927#pragma omp parallel for simd11928    for (int i = 0; i < 10; ++i)11929      ;11930  }11931#pragma omp single11932  {11933#pragma omp parallel sections11934    {11935      bar();11936    }11937  }11938#pragma omp single11939  {11940#pragma omp task11941    {11942      bar();11943    }11944  }11945#pragma omp single11946  {11947#pragma omp taskyield11948    bar();11949  }11950#pragma omp single11951  {11952#pragma omp barrier // expected-error {{region cannot be closely nested inside 'single' region}}11953    bar();11954  }11955#pragma omp single11956  {11957#pragma omp scan // expected-error {{region cannot be closely nested inside 'single' region}}11958    bar();11959  }11960#pragma omp single11961  {11962#pragma omp taskwait11963    bar();11964  }11965#pragma omp single11966  {11967#pragma omp flush11968    bar();11969  }11970#pragma omp single11971  {11972#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?}}11973    bar();11974  }11975#pragma omp single11976  {11977#pragma omp atomic11978    ++a;11979  }11980#pragma omp single11981  {11982#pragma omp target11983    ++a;11984  }11985#pragma omp single11986  {11987#pragma omp target parallel11988    ++a;11989  }11990#pragma omp single11991  {11992#pragma omp target parallel for11993    for (int i = 0; i < 10; ++i)11994      ;11995  }11996#pragma omp single11997  {11998#pragma omp target enter data map(to: a)11999    ++a;12000  }12001#pragma omp single12002  {12003#pragma omp target exit data map(from: a)12004    ++a;12005  }12006#pragma omp single12007  {12008#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?}}12009    ++a;12010  }12011#pragma omp single12012  {12013#pragma omp taskloop12014  for (int i = 0; i < 10; ++i)12015    ++a;12016  }12017#pragma omp single12018  {12019#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?}}12020    for (int i = 0; i < 10; ++i)12021      ;12022  }12023#pragma omp single12024  {12025#pragma omp target update to(a)12026    a++;12027  }12028#pragma omp single12029  {12030#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?}}12031    for (int i = 0; i < 10; ++i)12032      ;12033  }12034#pragma omp single12035  {12036#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?}}12037    for (int i = 0; i < 10; ++i)12038      ;12039  }12040#pragma omp single12041  {12042#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?}}12043    for (int i = 0; i < 10; ++i)12044      ;12045  }12046#pragma omp single12047  {12048#pragma omp target simd // OK12049    for (int i = 0; i < 10; ++i)12050      ;12051  }12052#pragma omp single12053  {12054#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?}}12055    for (int i = 0; i < 10; ++i)12056      ;12057  }12058#pragma omp single12059  {12060#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?}}12061    for (int i = 0; i < 10; ++i)12062      ;12063  }12064#pragma omp single12065  {12066#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?}}12067    for (int i = 0; i < 10; ++i)12068      ;12069  }12070#pragma omp single12071  {12072#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?}}12073    for (int i = 0; i < 10; ++i)12074      ;12075  }12076#pragma omp single12077  {12078#pragma omp target teams // oK12079    a++;12080  }12081#pragma omp single12082  {12083#pragma omp target teams distribute // OK12084    for (int i = 0; i < 10; ++i)12085      ;12086  }12087#pragma omp single12088  {12089#pragma omp target teams distribute parallel for // OK12090    for (int i = 0; i < 10; ++i)12091      ;12092  }12093#pragma omp single12094  {12095#pragma omp target teams distribute parallel for simd // OK12096    for (int i = 0; i < 10; ++i)12097      ;12098  }12099#pragma omp single12100  {12101#pragma omp target teams distribute simd // OK12102    for (int i = 0; i < 10; ++i)12103      ;12104  }12105 12106// MASTER DIRECTIVE12107#pragma omp master12108  {12109#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?}}12110    for (int i = 0; i < 10; ++i)12111      ;12112  }12113#pragma omp master12114  {12115#pragma omp simd12116    for (int i = 0; i < 10; ++i)12117      ;12118  }12119#pragma omp master12120  {12121#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?}}12122    for (int i = 0; i < 10; ++i)12123      ;12124  }12125#pragma omp master12126  {12127#pragma omp parallel12128    for (int i = 0; i < 10; ++i)12129      ;12130  }12131#pragma omp parallel master12132  {12133    for (int i = 0; i < 10; ++i)12134      ;12135  }12136#pragma omp master12137  {12138#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?}}12139    {12140      bar();12141    }12142  }12143#pragma omp master12144  {12145#pragma omp master // OK, though second 'master' is redundant12146    {12147      bar();12148    }12149  }12150#pragma omp master12151  {12152#pragma omp critical12153    {12154      bar();12155    }12156  }12157#pragma omp master12158  {12159#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?}}12160    {12161      bar();12162    }12163  }12164#pragma omp master12165  {12166#pragma omp parallel12167    {12168#pragma omp master // OK12169      {12170        bar();12171      }12172#pragma omp for // OK12173      for (int i = 0; i < 10; ++i)12174        ;12175#pragma omp for simd // OK12176      for (int i = 0; i < 10; ++i)12177        ;12178#pragma omp sections // OK12179      {12180        bar();12181      }12182    }12183  }12184#pragma omp master12185  {12186#pragma omp parallel master12187    {12188      bar();12189    }12190  }12191#pragma omp master12192  {12193#pragma omp parallel for12194    for (int i = 0; i < 10; ++i)12195      ;12196  }12197#pragma omp master12198  {12199#pragma omp parallel for simd12200    for (int i = 0; i < 10; ++i)12201      ;12202  }12203#pragma omp master12204  {12205#pragma omp parallel sections12206    {12207      bar();12208    }12209  }12210#pragma omp master12211  {12212#pragma omp task12213    {12214      bar();12215    }12216  }12217#pragma omp master12218  {12219#pragma omp taskyield12220    bar();12221  }12222#pragma omp master12223  {12224#pragma omp barrier // expected-error {{region cannot be closely nested inside 'master' region}}12225    bar();12226  }12227#pragma omp master12228  {12229#pragma omp scan // expected-error {{region cannot be closely nested inside 'master' region}}12230    bar();12231  }12232#pragma omp master12233  {12234#pragma omp taskwait12235    bar();12236  }12237#pragma omp master12238  {12239#pragma omp flush12240    bar();12241  }12242#pragma omp master12243  {12244#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?}}12245    bar();12246  }12247#pragma omp master12248  {12249#pragma omp atomic12250    ++a;12251  }12252#pragma omp master12253  {12254#pragma omp target12255    ++a;12256  }12257#pragma omp master12258  {12259#pragma omp target parallel12260    ++a;12261  }12262#pragma omp master12263  {12264#pragma omp target parallel for12265    for (int i = 0; i < 10; ++i)12266      ;12267  }12268#pragma omp master12269  {12270#pragma omp target enter data map(to: a)12271    ++a;12272  }12273#pragma omp master12274  {12275#pragma omp target exit data map(from: a)12276    ++a;12277  }12278#pragma omp master12279  {12280#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?}}12281    ++a;12282  }12283#pragma omp master12284  {12285#pragma omp taskloop12286  for (int i = 0; i < 10; ++i)12287    ++a;12288  }12289#pragma omp master12290  {12291#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?}}12292    for (int i = 0; i < 10; ++i)12293      ;12294  }12295#pragma omp master12296  {12297#pragma omp target update to(a)12298    ++a;12299  }12300#pragma omp master12301  {12302#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?}}12303    for (int i = 0; i < 10; ++i)12304      ;12305  }12306#pragma omp master12307  {12308#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?}}12309    for (int i = 0; i < 10; ++i)12310      ;12311  }12312#pragma omp master12313  {12314#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?}}12315    for (int i = 0; i < 10; ++i)12316      ;12317  }12318#pragma omp master12319  {12320#pragma omp target simd // OK12321    for (int i = 0; i < 10; ++i)12322      ;12323  }12324#pragma omp master12325  {12326#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?}}12327    for (int i = 0; i < 10; ++i)12328      ;12329  }12330#pragma omp master12331  {12332#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?}}12333    for (int i = 0; i < 10; ++i)12334      ;12335  }12336#pragma omp master12337  {12338#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?}}12339    for (int i = 0; i < 10; ++i)12340      ;12341  }12342#pragma omp master12343  {12344#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?}}12345    for (int i = 0; i < 10; ++i)12346      ;12347  }12348#pragma omp master12349  {12350#pragma omp target teams // OK12351    a++;12352  }12353#pragma omp master12354  {12355#pragma omp target teams distribute // OK12356    for (int i = 0; i < 10; ++i)12357      ;12358  }12359#pragma omp master12360  {12361#pragma omp target teams distribute parallel for // OK12362    for (int i = 0; i < 10; ++i)12363      ;12364  }12365#pragma omp master12366  {12367#pragma omp target teams distribute parallel for simd // OK12368    for (int i = 0; i < 10; ++i)12369      ;12370  }12371#pragma omp master12372  {12373#pragma omp target teams distribute simd // OK12374    for (int i = 0; i < 10; ++i)12375      ;12376  }12377 12378// CRITICAL DIRECTIVE12379#pragma omp critical12380  {12381#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?}}12382    for (int i = 0; i < 10; ++i)12383      ;12384  }12385#pragma omp critical12386  {12387#pragma omp simd12388    for (int i = 0; i < 10; ++i)12389      ;12390  }12391#pragma omp critical12392  {12393#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?}}12394    for (int i = 0; i < 10; ++i)12395      ;12396  }12397#pragma omp critical12398  {12399#pragma omp parallel12400    for (int i = 0; i < 10; ++i)12401      ;12402  }12403#pragma omp critical12404  {12405#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?}}12406    {12407      bar();12408    }12409  }12410#pragma omp critical12411  {12412#pragma omp master // OK, though second 'master' is redundant12413    {12414      bar();12415    }12416  }12417#pragma omp critical12418  {12419#pragma omp critical12420    {12421      bar();12422    }12423  }12424#pragma omp critical12425  {12426#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?}}12427    {12428      bar();12429    }12430  }12431#pragma omp critical12432  {12433#pragma omp parallel12434    {12435#pragma omp master // OK12436      {12437        bar();12438      }12439#pragma omp for // OK12440      for (int i = 0; i < 10; ++i)12441        ;12442#pragma omp for simd // OK12443      for (int i = 0; i < 10; ++i)12444        ;12445#pragma omp sections // OK12446      {12447        bar();12448      }12449    }12450  }12451#pragma omp critical12452  {12453#pragma omp parallel for12454    for (int i = 0; i < 10; ++i)12455      ;12456  }12457#pragma omp critical12458  {12459#pragma omp parallel for simd12460    for (int i = 0; i < 10; ++i)12461      ;12462  }12463#pragma omp critical12464  {12465#pragma omp parallel sections12466    {12467      bar();12468    }12469  }12470#pragma omp critical12471  {12472#pragma omp task12473    {12474      bar();12475    }12476  }12477#pragma omp critical12478  {12479#pragma omp taskyield12480    bar();12481  }12482#pragma omp critical12483  {12484#pragma omp barrier // expected-error {{region cannot be closely nested inside 'critical' region}}12485    bar();12486  }12487#pragma omp critical12488  {12489#pragma omp scan // expected-error {{region cannot be closely nested inside 'critical' region}}12490    bar();12491  }12492#pragma omp critical12493  {12494#pragma omp taskwait12495    bar();12496  }12497#pragma omp critical(Belka)12498  {12499#pragma omp critical(Strelka)12500    bar();12501  }12502#pragma omp critical(Tuzik) // expected-note {{previous 'critical' region starts here}}12503  {12504#pragma omp critical(grelka) // expected-note {{previous 'critical' region starts here}}12505    {12506#pragma omp critical(Tuzik) // expected-error {{cannot nest 'critical' regions having the same name 'Tuzik'}}12507      {12508#pragma omp parallel12509#pragma omp critical(grelka) // expected-error {{cannot nest 'critical' regions having the same name 'grelka'}}12510        {12511          bar();12512        }12513      }12514    }12515  }12516#pragma omp critical12517  {12518#pragma omp flush12519    bar();12520  }12521#pragma omp critical12522  {12523#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?}}12524    bar();12525  }12526#pragma omp critical12527  {12528#pragma omp atomic12529    ++a;12530  }12531#pragma omp critical12532  {12533#pragma omp target12534    ++a;12535  }12536#pragma omp critical12537  {12538#pragma omp target parallel12539    ++a;12540  }12541#pragma omp critical12542  {12543#pragma omp target parallel for12544    for (int i = 0; i < 10; ++i)12545      ;12546  }12547#pragma omp critical12548  {12549#pragma omp target enter data map(to: a)12550    ++a;12551  }12552#pragma omp critical12553  {12554#pragma omp target exit data map(from: a)12555    ++a;12556  }12557#pragma omp critical12558  {12559#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?}}12560    ++a;12561  }12562#pragma omp critical12563  {12564#pragma omp taskloop12565  for (int i = 0; i < 10; ++i)12566    ++a;12567  }12568#pragma omp critical12569  {12570#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?}}12571    for (int i = 0; i < 10; ++i)12572      ;12573  }12574#pragma omp critical12575  {12576#pragma omp target update to(a)12577    a++;12578  }12579#pragma omp critical12580  {12581#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?}}12582    for (int i = 0; i < 10; ++i)12583      ;12584  }12585#pragma omp critical12586  {12587#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?}}12588    for (int i = 0; i < 10; ++i)12589      ;12590  }12591#pragma omp critical12592  {12593#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?}}12594    for (int i = 0; i < 10; ++i)12595      ;12596  }12597#pragma omp critical12598  {12599#pragma omp target simd // OK12600    for (int i = 0; i < 10; ++i)12601      ;12602  }12603#pragma omp critical12604  {12605#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?}}12606    for (int i = 0; i < 10; ++i)12607      ;12608  }12609#pragma omp critical12610  {12611#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?}}12612    for (int i = 0; i < 10; ++i)12613      ;12614  }12615#pragma omp critical12616  {12617#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?}}12618    for (int i = 0; i < 10; ++i)12619      ;12620  }12621#pragma omp critical12622  {12623#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?}}12624    for (int i = 0; i < 10; ++i)12625      ;12626  }12627#pragma omp critical12628  {12629#pragma omp target teams // OK12630    a++;12631  }12632#pragma omp critical12633  {12634#pragma omp target teams distribute // OK12635    for (int i = 0; i < 10; ++i)12636      ;12637  }12638#pragma omp critical12639  {12640#pragma omp target teams distribute parallel for // OK12641    for (int i = 0; i < 10; ++i)12642      ;12643  }12644#pragma omp critical12645  {12646#pragma omp target teams distribute parallel for simd // OK12647    for (int i = 0; i < 10; ++i)12648      ;12649  }12650#pragma omp critical12651  {12652#pragma omp target teams distribute simd // OK12653    for (int i = 0; i < 10; ++i)12654      ;12655  }12656 12657// PARALLEL FOR DIRECTIVE12658#pragma omp parallel for12659  for (int i = 0; i < 10; ++i) {12660#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?}}12661    for (int i = 0; i < 10; ++i)12662      ;12663  }12664#pragma omp parallel for12665  for (int i = 0; i < 10; ++i) {12666#pragma omp simd12667    for (int i = 0; i < 10; ++i)12668      ;12669  }12670#pragma omp parallel for12671  for (int i = 0; i < 10; ++i) {12672#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?}}12673    for (int i = 0; i < 10; ++i)12674      ;12675  }12676 12677#pragma omp parallel for12678  for (int i = 0; i < 10; ++i) {12679#pragma omp parallel12680    for (int i = 0; i < 10; ++i)12681      ;12682  }12683#pragma omp parallel for12684  for (int i = 0; i < 10; ++i) {12685#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?}}12686    {12687      bar();12688    }12689  }12690#pragma omp parallel for12691  for (int i = 0; i < 10; ++i) {12692#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a parallel for region}}12693    {12694      bar();12695    }12696  }12697#pragma omp parallel for12698  for (int i = 0; i < 10; ++i) {12699#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?}}12700    {12701      bar();12702    }12703#pragma omp master // expected-error {{region cannot be closely nested inside 'parallel for' region}}12704    {12705      bar();12706    }12707#pragma omp critical12708    {12709      bar();12710    }12711  }12712#pragma omp parallel for12713  for (int i = 0; i < 10; ++i) {12714#pragma omp parallel12715    {12716#pragma omp single // OK12717      {12718        bar();12719      }12720#pragma omp master // OK12721      {12722        bar();12723      }12724#pragma omp critical // OK12725      {12726        bar();12727      }12728#pragma omp for // OK12729      for (int i = 0; i < 10; ++i)12730        ;12731#pragma omp for simd // OK12732      for (int i = 0; i < 10; ++i)12733        ;12734#pragma omp sections // OK12735      {12736        bar();12737      }12738    }12739  }12740#pragma omp parallel for12741  for (int i = 0; i < 10; ++i) {12742#pragma omp parallel for12743    for (int i = 0; i < 10; ++i)12744      ;12745  }12746#pragma omp parallel for12747  for (int i = 0; i < 10; ++i) {12748#pragma omp parallel for simd12749    for (int i = 0; i < 10; ++i)12750      ;12751  }12752#pragma omp parallel for12753  for (int i = 0; i < 10; ++i) {12754#pragma omp parallel sections12755    {12756      bar();12757    }12758  }12759#pragma omp parallel for12760  for (int i = 0; i < 10; ++i) {12761#pragma omp task12762    {12763      bar();12764    }12765  }12766#pragma omp parallel for12767  for (int i = 0; i < 10; ++i) {12768#pragma omp taskyield12769    bar();12770  }12771#pragma omp parallel for12772  for (int i = 0; i < 10; ++i) {12773#pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel for' region}}12774    bar();12775  }12776#pragma omp parallel for12777  for (int i = 0; i < 10; ++i) {12778#pragma omp scan // omp45-error {{region cannot be closely nested inside 'parallel for' region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}12779    bar();12780  }12781#pragma omp parallel for12782  for (int i = 0; i < 10; ++i) {12783#pragma omp taskwait12784    bar();12785  }12786#pragma omp parallel for12787  for (int i = 0; i < 10; ++i) {12788#pragma omp flush12789    bar();12790  }12791#pragma omp parallel for12792  for (int i = 0; i < 10; ++i) {12793#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?}}12794    bar();12795  }12796#pragma omp parallel for ordered12797  for (int i = 0; i < 10; ++i) {12798#pragma omp ordered // OK12799    bar();12800  }12801#pragma omp parallel for12802  for (int i = 0; i < 10; ++i) {12803#pragma omp atomic12804    ++a;12805  }12806#pragma omp parallel for12807  for (int i = 0; i < 10; ++i) {12808#pragma omp target12809    ++a;12810  }12811#pragma omp parallel for12812  for (int i = 0; i < 10; ++i) {12813#pragma omp target parallel12814    ++a;12815  }12816#pragma omp parallel for12817  for (int i = 0; i < 10; ++i) {12818#pragma omp target parallel for12819    for (int i = 0; i < 10; ++i)12820      ;12821  }12822#pragma omp parallel for12823  for (int i = 0; i < 10; ++i) {12824#pragma omp target enter data map(to: a)12825    ++a;12826  }12827#pragma omp parallel for12828  for (int i = 0; i < 10; ++i) {12829#pragma omp target exit data map(from: a)12830    ++a;12831  }12832#pragma omp parallel for12833  for (int i = 0; i < 10; ++i) {12834#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?}}12835    ++a;12836  }12837#pragma omp parallel for12838  for (int i = 0; i < 10; ++i) {12839#pragma omp taskloop12840  for (int i = 0; i < 10; ++i)12841    ++a;12842  }12843#pragma omp parallel for12844  for (int i = 0; i < 10; ++i) {12845#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?}}12846    for (int j = 0; j < 10; ++j)12847      ;12848  }12849#pragma omp parallel for12850  for (int i = 0; i < 10; ++i) {12851#pragma omp target update to(a)12852    a++;12853  }12854#pragma omp parallel for12855  for (int i = 0; i < 10; ++i) {12856#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?}}12857    for (int j = 0; j < 10; ++j)12858      ;12859  }12860#pragma omp parallel for12861  for (int i = 0; i < 10; ++i) {12862#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?}}12863    for (int j = 0; j < 10; ++j)12864      ;12865  }12866#pragma omp parallel for12867  for (int i = 0; i < 10; ++i) {12868#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?}}12869    for (int j = 0; j < 10; ++j)12870      ;12871  }12872#pragma omp parallel for12873  for (int i = 0; i < 10; ++i) {12874#pragma omp target simd // OK12875    for (int j = 0; j < 10; ++j)12876      ;12877  }12878#pragma omp parallel for12879  for (int i = 0; i < 10; ++i) {12880#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?}}12881    for (int j = 0; j < 10; ++j)12882      ;12883  }12884#pragma omp parallel for12885  for (int i = 0; i < 10; ++i) {12886#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?}}12887    for (int j = 0; j < 10; ++j)12888      ;12889  }12890#pragma omp parallel for12891  for (int i = 0; i < 10; ++i) {12892#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?}}12893    for (int j = 0; j < 10; ++j)12894      ;12895  }12896#pragma omp parallel for12897  for (int i = 0; i < 10; ++i) {12898#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?}}12899    for (int j = 0; j < 10; ++j)12900      ;12901  }12902#pragma omp parallel for12903  for (int i = 0; i < 10; ++i) {12904#pragma omp target teams // OK12905    a++;12906  }12907#pragma omp parallel for12908  for (int i = 0; i < 10; ++i) {12909#pragma omp target teams distribute // OK12910    for (int j = 0; j < 10; ++j)12911      ;12912  }12913#pragma omp parallel for12914  for (int i = 0; i < 10; ++i) {12915#pragma omp target teams distribute parallel for // OK12916    for (int j = 0; j < 10; ++j)12917      ;12918  }12919#pragma omp parallel for12920  for (int i = 0; i < 10; ++i) {12921#pragma omp target teams distribute parallel for simd // OK12922    for (int j = 0; j < 10; ++j)12923      ;12924  }12925#pragma omp parallel for12926  for (int i = 0; i < 10; ++i) {12927#pragma omp target teams distribute simd // OK12928    for (int j = 0; j < 10; ++j)12929      ;12930  }12931 12932// PARALLEL FOR SIMD DIRECTIVE12933#pragma omp parallel for simd12934  for (int i = 0; i < 10; ++i) {12935#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}12936    for (int i = 0; i < 10; ++i)12937      ;12938  }12939#pragma omp parallel for simd12940  for (int i = 0; i < 10; ++i) {12941#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}12942    for (int i = 0; i < 10; ++i)12943      ;12944  }12945#pragma omp parallel for simd12946  for (int i = 0; i < 10; ++i) {12947#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}12948    for (int i = 0; i < 10; ++i)12949      ;12950  }12951#pragma omp parallel for simd12952  for (int i = 0; i < 10; ++i) {12953#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}12954    for (int i = 0; i < 10; ++i)12955      ;12956  }12957#pragma omp parallel for simd12958  for (int i = 0; i < 10; ++i) {12959#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}12960    {12961      bar();12962    }12963  }12964#pragma omp parallel for simd12965  for (int i = 0; i < 10; ++i) {12966#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}12967    {12968      bar();12969    }12970  }12971#pragma omp parallel for simd12972  for (int i = 0; i < 10; ++i) {12973#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}12974    {12975      bar();12976    }12977  }12978 12979#pragma omp parallel for simd12980  for (int i = 0; i < 10; ++i) {12981#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}12982    {12983      bar();12984    }12985  }12986 12987#pragma omp parallel for simd12988  for (int i = 0; i < 10; ++i) {12989#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}12990    {12991      bar();12992    }12993  }12994 12995#pragma omp parallel for simd12996  for (int i = 0; i < 10; ++i) {12997#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}12998    {12999#pragma omp single13000      {13001        bar();13002      }13003#pragma omp for13004      for (int i = 0; i < 10; ++i)13005        ;13006#pragma omp for simd13007      for (int i = 0; i < 10; ++i)13008        ;13009#pragma omp sections13010      {13011        bar();13012      }13013    }13014  }13015#pragma omp parallel for simd13016  for (int i = 0; i < 10; ++i) {13017#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}13018    for (int i = 0; i < 10; ++i)13019      ;13020  }13021#pragma omp parallel for simd13022  for (int i = 0; i < 10; ++i) {13023#pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}}13024    for (int i = 0; i < 10; ++i)13025      ;13026  }13027#pragma omp parallel for simd13028  for (int i = 0; i < 10; ++i) {13029#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}13030    {13031      bar();13032    }13033  }13034#pragma omp parallel for simd13035  for (int i = 0; i < 10; ++i) {13036#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}13037    {13038      bar();13039    }13040  }13041#pragma omp parallel for simd13042  for (int i = 0; i < 10; ++i) {13043#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}13044    bar();13045  }13046#pragma omp parallel for simd13047  for (int i = 0; i < 10; ++i) {13048#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}13049    bar();13050  }13051#pragma omp parallel for simd13052  for (int i = 0; i < 10; ++i) {13053#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}13054    bar();13055  }13056#pragma omp parallel for simd13057  for (int i = 0; i < 10; ++i) {13058#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}13059    bar();13060  }13061#pragma omp parallel for simd13062  for (int i = 0; i < 10; ++i) {13063#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}13064    bar();13065  }13066#pragma omp parallel for simd13067  for (int i = 0; i < 10; ++i) {13068#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}13069    bar();13070  }13071#pragma omp parallel for simd13072  for (int i = 0; i < 10; ++i) {13073#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}13074    bar();13075  }13076#pragma omp parallel for simd13077  for (int i = 0; i < 10; ++i) {13078#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}13079    ++a;13080  }13081#pragma omp parallel for simd13082  for (int i = 0; i < 10; ++i) {13083#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}13084    ++a;13085  }13086#pragma omp parallel for simd13087  for (int i = 0; i < 10; ++i) {13088#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}13089    ++a;13090  }13091#pragma omp parallel for simd13092  for (int i = 0; i < 10; ++i) {13093#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}13094    for (int i = 0; i < 10; ++i)13095      ;13096  }13097#pragma omp parallel for simd13098  for (int i = 0; i < 10; ++i) {13099#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}13100    ++a;13101  }13102#pragma omp parallel for simd13103  for (int i = 0; i < 10; ++i) {13104#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}13105    ++a;13106  }13107#pragma omp parallel for simd13108  for (int i = 0; i < 10; ++i) {13109#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}13110    ++a;13111  }13112#pragma omp parallel for simd13113  for (int i = 0; i < 10; ++i) {13114#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside a simd region}}13115  for (int i = 0; i < 10; ++i)13116    ++a;13117  }13118#pragma omp parallel for simd13119  for (int i = 0; i < 10; ++i) {13120#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}13121    for (int j = 0; j < 10; ++j)13122      ;13123  }13124#pragma omp parallel for simd13125  for (int i = 0; i < 10; ++i) {13126#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}13127    a++;13128  }13129#pragma omp parallel for simd13130  for (int i = 0; i < 10; ++i) {13131#pragma omp distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}13132    for (int j = 0; j < 10; ++j)13133      ;13134  }13135#pragma omp parallel for simd13136  for (int i = 0; i < 10; ++i) {13137#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13138    for (int j = 0; j < 10; ++j)13139      ;13140  }13141#pragma omp parallel for simd13142  for (int i = 0; i < 10; ++i) {13143#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13144    for (int j = 0; j < 10; ++j)13145      ;13146  }13147#pragma omp parallel for simd13148  for (int i = 0; i < 10; ++i) {13149#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13150    for (int j = 0; j < 10; ++j)13151      ;13152  }13153#pragma omp parallel for simd13154  for (int i = 0; i < 10; ++i) {13155#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}13156    for (int j = 0; j < 10; ++j)13157      ;13158  }13159#pragma omp parallel for simd13160  for (int i = 0; i < 10; ++i) {13161#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13162    for (int j = 0; j < 10; ++j)13163      ;13164  }13165#pragma omp parallel for simd13166  for (int i = 0; i < 10; ++i) {13167#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13168    for (int j = 0; j < 10; ++j)13169      ;13170  }13171#pragma omp parallel for simd13172  for (int i = 0; i < 10; ++i) {13173#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}13174    for (int j = 0; j < 10; ++j)13175      ;13176  }13177#pragma omp parallel for simd13178  for (int i = 0; i < 10; ++i) {13179#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}13180    a++;13181  }13182#pragma omp parallel for simd13183  for (int i = 0; i < 10; ++i) {13184#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}13185    for (int j = 0; j < 10; ++j)13186      ;13187  }13188#pragma omp parallel for simd13189  for (int i = 0; i < 10; ++i) {13190#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}13191    for (int j = 0; j < 10; ++j)13192      ;13193  }13194#pragma omp parallel for simd13195  for (int i = 0; i < 10; ++i) {13196#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13197    for (int j = 0; j < 10; ++j)13198      ;13199  }13200#pragma omp parallel for simd13201  for (int i = 0; i < 10; ++i) {13202#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}13203    for (int j = 0; j < 10; ++j)13204      ;13205  }13206 13207// PARALLEL SECTIONS DIRECTIVE13208#pragma omp parallel sections13209  {13210#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?}}13211    for (int i = 0; i < 10; ++i)13212      ;13213  }13214#pragma omp parallel sections13215  {13216#pragma omp simd13217    for (int i = 0; i < 10; ++i)13218      ;13219  }13220#pragma omp parallel sections13221  {13222#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?}}13223    for (int i = 0; i < 10; ++i)13224      ;13225  }13226#pragma omp parallel sections13227  {13228#pragma omp parallel13229    for (int i = 0; i < 10; ++i)13230      ;13231  }13232#pragma omp parallel sections13233  {13234#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?}}13235    {13236      bar();13237    }13238  }13239#pragma omp parallel sections13240  {13241#pragma omp section13242    {13243      bar();13244    }13245  }13246#pragma omp parallel sections13247  {13248#pragma omp section13249    {13250#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?}}13251      bar();13252#pragma omp master // expected-error {{region cannot be closely nested inside 'section' region}}13253      bar();13254#pragma omp critical13255      bar();13256    }13257  }13258#pragma omp parallel sections13259  {13260#pragma omp parallel13261    {13262#pragma omp single // OK13263      {13264        bar();13265      }13266#pragma omp master // OK13267      {13268        bar();13269      }13270#pragma omp critical // OK13271      {13272        bar();13273      }13274#pragma omp for // OK13275      for (int i = 0; i < 10; ++i)13276        ;13277#pragma omp for simd // OK13278      for (int i = 0; i < 10; ++i)13279        ;13280#pragma omp sections // OK13281      {13282        bar();13283      }13284    }13285  }13286#pragma omp parallel sections13287  {13288#pragma omp parallel for13289    for (int i = 0; i < 10; ++i)13290      ;13291  }13292#pragma omp parallel sections13293  {13294#pragma omp parallel for simd13295    for (int i = 0; i < 10; ++i)13296      ;13297  }13298#pragma omp parallel sections13299  {13300#pragma omp parallel sections13301    {13302      bar();13303    }13304  }13305#pragma omp parallel sections13306  {13307#pragma omp task13308    {13309      bar();13310    }13311  }13312#pragma omp parallel sections13313  {13314#pragma omp taskyield13315  }13316#pragma omp parallel sections13317  {13318#pragma omp barrier // expected-error {{region cannot be closely nested inside 'parallel sections' region}}13319  }13320#pragma omp parallel sections13321  {13322#pragma omp scan // expected-error {{region cannot be closely nested inside 'parallel sections' region}}13323  }13324#pragma omp parallel sections13325  {13326#pragma omp taskwait13327  }13328#pragma omp parallel sections13329  {13330#pragma omp flush13331  }13332#pragma omp parallel sections13333  {13334#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?}}13335    bar();13336  }13337#pragma omp parallel sections13338  {13339#pragma omp atomic13340    ++a;13341  }13342#pragma omp parallel sections13343  {13344#pragma omp target13345    ++a;13346  }13347#pragma omp parallel sections13348  {13349#pragma omp target parallel13350    ++a;13351  }13352#pragma omp parallel sections13353  {13354#pragma omp target parallel for13355    for (int i = 0; i < 10; ++i)13356      ;13357  }13358#pragma omp parallel sections13359  {13360#pragma omp target enter data map(to: a)13361  }13362#pragma omp parallel sections13363  {13364#pragma omp target exit data map(from: a)13365  }13366#pragma omp parallel sections13367  {13368#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?}}13369    ++a;13370  }13371#pragma omp parallel sections13372  {13373#pragma omp taskloop13374  for (int i = 0; i < 10; ++i)13375    ++a;13376  }13377#pragma omp parallel sections13378  {13379#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?}}13380    for (int i = 0; i < 10; ++i)13381      ;13382  }13383#pragma omp parallel sections13384  {13385#pragma omp target update to(a)13386  }13387#pragma omp parallel sections13388  {13389#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?}}13390    for (int i = 0; i < 10; ++i)13391      ;13392  }13393#pragma omp parallel sections13394  {13395#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?}}13396    for (int i = 0; i < 10; ++i)13397      ;13398  }13399#pragma omp parallel sections13400  {13401#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?}}13402    for (int i = 0; i < 10; ++i)13403      ;13404  }13405#pragma omp parallel sections13406  {13407#pragma omp target simd // OK13408    for (int i = 0; i < 10; ++i)13409      ;13410  }13411#pragma omp parallel sections13412  {13413#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?}}13414    for (int i = 0; i < 10; ++i)13415      ;13416  }13417#pragma omp parallel sections13418  {13419#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?}}13420    for (int i = 0; i < 10; ++i)13421      ;13422  }13423#pragma omp parallel sections13424  {13425#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?}}13426    for (int i = 0; i < 10; ++i)13427      ;13428  }13429#pragma omp parallel sections13430  {13431#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?}}13432    for (int i = 0; i < 10; ++i)13433      ;13434  }13435#pragma omp parallel sections13436  {13437#pragma omp target teams // OK13438    a++;13439  }13440#pragma omp parallel sections13441  {13442#pragma omp target teams distribute // OK13443    for (int i = 0; i < 10; ++i)13444      ;13445  }13446#pragma omp parallel sections13447  {13448#pragma omp target teams distribute parallel for // OK13449    for (int i = 0; i < 10; ++i)13450      ;13451  }13452#pragma omp parallel sections13453  {13454#pragma omp target teams distribute parallel for simd // OK13455    for (int i = 0; i < 10; ++i)13456      ;13457  }13458#pragma omp parallel sections13459  {13460#pragma omp target teams distribute simd // OK13461    for (int i = 0; i < 10; ++i)13462      ;13463  }13464 13465// TASK DIRECTIVE13466#pragma omp task13467#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?}}13468  for (int i = 0; i < 10; ++i)13469    ;13470#pragma omp task13471#pragma omp simd13472  for (int i = 0; i < 10; ++i)13473    ;13474#pragma omp task13475#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?}}13476  for (int i = 0; i < 10; ++i)13477    ;13478#pragma omp task13479#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?}}13480  {13481    bar();13482  }13483#pragma omp task13484#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a task region}}13485  {13486    bar();13487  }13488#pragma omp task13489#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?}}13490  bar();13491#pragma omp task13492#pragma omp master // expected-error {{region cannot be closely nested inside 'task' region}}13493  bar();13494#pragma omp task13495#pragma omp critical13496  bar();13497#pragma omp task13498#pragma omp parallel for13499  for (int i = 0; i < 10; ++i)13500    ;13501#pragma omp task13502#pragma omp parallel for simd13503  for (int i = 0; i < 10; ++i)13504    ;13505#pragma omp task13506#pragma omp parallel sections13507  {13508    bar();13509  }13510#pragma omp task13511#pragma omp task13512  {13513    bar();13514  }13515#pragma omp task13516  {13517#pragma omp taskyield13518    bar();13519  }13520#pragma omp task13521  {13522#pragma omp barrier // expected-error {{region cannot be closely nested inside 'task' region}}13523    bar();13524  }13525#pragma omp task13526  {13527#pragma omp scan // expected-error {{region cannot be closely nested inside 'task' region}}13528    bar();13529  }13530#pragma omp task13531  {13532#pragma omp taskwait13533    bar();13534  }13535#pragma omp task13536  {13537#pragma omp flush13538    bar();13539  }13540#pragma omp task13541  {13542#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?}}13543    bar();13544  }13545#pragma omp task13546  {13547#pragma omp atomic13548    ++a;13549  }13550#pragma omp task13551  {13552#pragma omp target13553    ++a;13554  }13555#pragma omp task13556  {13557#pragma omp target parallel13558    ++a;13559  }13560#pragma omp task13561#pragma omp target parallel for13562  for (int i = 0; i < 10; ++i)13563    ;13564#pragma omp task13565  {13566#pragma omp target enter data map(to: a)13567    ++a;13568  }13569#pragma omp task13570  {13571#pragma omp target exit data map(from: a)13572    ++a;13573  }13574#pragma omp task13575  {13576#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?}}13577    ++a;13578  }13579#pragma omp task13580  {13581#pragma omp taskloop13582  for (int i = 0; i < 10; ++i)13583    ++a;13584  }13585#pragma omp task13586  {13587#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?}}13588    for (int i = 0; i < 10; ++i)13589      ;13590  }13591#pragma omp task13592  {13593#pragma omp target update to(a)13594    a++;13595  }13596#pragma omp task13597  {13598#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?}}13599    for (int i = 0; i < 10; ++i)13600      ;13601  }13602#pragma omp task13603  {13604#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?}}13605    for (int i = 0; i < 10; ++i)13606      ;13607  }13608#pragma omp task13609  {13610#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?}}13611    for (int i = 0; i < 10; ++i)13612      ;13613  }13614#pragma omp task13615  {13616#pragma omp target simd // OK13617    for (int i = 0; i < 10; ++i)13618      ;13619  }13620#pragma omp task13621  {13622#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?}}13623    for (int i = 0; i < 10; ++i)13624      ;13625  }13626#pragma omp task13627  {13628#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?}}13629    for (int i = 0; i < 10; ++i)13630      ;13631  }13632#pragma omp task13633  {13634#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?}}13635    for (int i = 0; i < 10; ++i)13636      ;13637  }13638#pragma omp task13639  {13640#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?}}13641    for (int i = 0; i < 10; ++i)13642      ;13643  }13644#pragma omp task13645  {13646#pragma omp target teams // OK13647    a++;13648  }13649#pragma omp task13650  {13651#pragma omp target teams distribute // OK13652    for (int i = 0; i < 10; ++i)13653      ;13654  }13655#pragma omp task13656  {13657#pragma omp target teams distribute parallel for // OK13658    for (int i = 0; i < 10; ++i)13659      ;13660  }13661#pragma omp task13662  {13663#pragma omp target teams distribute parallel for simd // OK13664    for (int i = 0; i < 10; ++i)13665      ;13666  }13667#pragma omp task13668  {13669#pragma omp target teams distribute simd // OK13670    for (int i = 0; i < 10; ++i)13671      ;13672  }13673 13674// ATOMIC DIRECTIVE13675#pragma omp atomic13676  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13677  // expected-note@+1 {{expected an expression statement}}13678  {13679#pragma omp for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13680    for (int i = 0; i < 10; ++i)13681      ;13682  }13683#pragma omp atomic13684  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13685  // expected-note@+1 {{expected an expression statement}}13686  {13687#pragma omp simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13688    for (int i = 0; i < 10; ++i)13689      ;13690  }13691#pragma omp atomic13692  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13693  // expected-note@+1 {{expected an expression statement}}13694  {13695#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13696    for (int i = 0; i < 10; ++i)13697      ;13698  }13699#pragma omp atomic13700  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13701  // expected-note@+1 {{expected an expression statement}}13702  {13703#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13704    for (int i = 0; i < 10; ++i)13705      ;13706  }13707#pragma omp atomic13708  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13709  // expected-note@+1 {{expected an expression statement}}13710  {13711#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13712    {13713      bar();13714    }13715  }13716#pragma omp atomic13717  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13718  // expected-note@+1 {{expected an expression statement}}13719  {13720#pragma omp section // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13721    {13722      bar();13723    }13724  }13725#pragma omp atomic13726  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13727  // expected-note@+1 {{expected an expression statement}}13728  {13729#pragma omp single // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13730    {13731      bar();13732    }13733  }13734#pragma omp atomic13735  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13736  // expected-note@+1 {{expected an expression statement}}13737  {13738#pragma omp master // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13739    {13740      bar();13741    }13742  }13743#pragma omp atomic13744  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13745  // expected-note@+1 {{expected an expression statement}}13746  {13747#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13748    {13749      bar();13750    }13751  }13752#pragma omp atomic13753  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13754  // expected-note@+1 {{expected an expression statement}}13755  {13756#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13757    for (int i = 0; i < 10; ++i)13758      ;13759  }13760#pragma omp atomic13761  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13762  // expected-note@+1 {{expected an expression statement}}13763  {13764#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13765    for (int i = 0; i < 10; ++i)13766      ;13767  }13768#pragma omp atomic13769  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13770  // expected-note@+1 {{expected an expression statement}}13771  {13772#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13773    {13774      bar();13775    }13776  }13777#pragma omp atomic13778  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13779  // expected-note@+1 {{expected an expression statement}}13780  {13781#pragma omp task // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13782    {13783      bar();13784    }13785  }13786#pragma omp atomic13787  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13788  // expected-note@+1 {{expected an expression statement}}13789  {13790#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13791    bar();13792  }13793#pragma omp atomic13794  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13795  // expected-note@+1 {{expected an expression statement}}13796  {13797#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13798    bar();13799  }13800#pragma omp atomic13801  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13802  // expected-note@+1 {{expected an expression statement}}13803  {13804#pragma omp scan // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13805    bar();13806  }13807#pragma omp atomic13808  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13809  // expected-note@+1 {{expected an expression statement}}13810  {13811#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13812    bar();13813  }13814#pragma omp atomic13815  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13816  // expected-note@+1 {{expected an expression statement}}13817  {13818#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13819    bar();13820  }13821#pragma omp atomic13822  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13823  // expected-note@+1 {{expected an expression statement}}13824  {13825#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13826    bar();13827  }13828#pragma omp atomic13829  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13830  // expected-note@+1 {{expected an expression statement}}13831  {13832#pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13833    ++a;13834  }13835#pragma omp atomic13836  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13837  // expected-note@+1 {{expected an expression statement}}13838  {13839#pragma omp target // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13840    ++a;13841  }13842#pragma omp atomic13843  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13844  // expected-note@+1 {{expected an expression statement}}13845  {13846#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13847    ++a;13848  }13849#pragma omp atomic13850  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13851  // expected-note@+1 {{expected an expression statement}}13852  {13853#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13854    for (int i = 0; i < 10; ++i)13855      ;13856  }13857#pragma omp atomic13858  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13859  // expected-note@+1 {{expected an expression statement}}13860  {13861#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13862    ++a;13863  }13864#pragma omp atomic13865  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13866  // expected-note@+1 {{expected an expression statement}}13867  {13868#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13869    ++a;13870  }13871#pragma omp atomic13872  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13873  // expected-note@+1 {{expected an expression statement}}13874  {13875#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13876    ++a;13877  }13878#pragma omp atomic13879  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13880  // expected-note@+1 {{expected an expression statement}}13881  {13882#pragma omp taskloop // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13883  for (int i = 0; i < 10; ++i)13884    ++a;13885  }13886#pragma omp atomic13887  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13888  // expected-note@+1 {{expected an expression statement}}13889  {13890#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13891    for (int i = 0; i < 10; ++i)13892      ;13893  }13894#pragma omp atomic13895  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13896  // expected-note@+1 {{expected an expression statement}}13897  {13898#pragma omp target update // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13899  }13900#pragma omp atomic13901  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13902  // expected-note@+1 {{expected an expression statement}}13903  {13904#pragma omp distribute parallel for// expected-error {{OpenMP constructs may not be nested inside an atomic region}}13905    for (int i = 0; i < 10; ++i)13906      ;13907  }13908#pragma omp atomic13909  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13910  // expected-note@+1 {{expected an expression statement}}13911  {13912#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13913    for (int i = 0; i < 10; ++i)13914      ;13915  }13916#pragma omp atomic13917  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13918  // expected-note@+1 {{expected an expression statement}}13919  {13920#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13921    for (int i = 0; i < 10; ++i)13922      ;13923  }13924#pragma omp atomic13925  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13926  // expected-note@+1 {{expected an expression statement}}13927  {13928#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13929    for (int i = 0; i < 10; ++i)13930      ;13931  }13932#pragma omp atomic13933  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13934  // expected-note@+1 {{expected an expression statement}}13935  {13936#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13937    for (int i = 0; i < 10; ++i)13938      ;13939  }13940#pragma omp atomic13941  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13942  // expected-note@+1 {{expected an expression statement}}13943  {13944#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13945    for (int i = 0; i < 10; ++i)13946      ;13947  }13948#pragma omp atomic13949  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13950  // expected-note@+1 {{expected an expression statement}}13951  {13952#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13953    for (int i = 0; i < 10; ++i)13954      ;13955  }13956#pragma omp atomic13957  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13958  // expected-note@+1 {{expected an expression statement}}13959  {13960#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13961    for (int i = 0; i < 10; ++i)13962      ;13963  }13964#pragma omp atomic13965  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13966  // expected-note@+1 {{expected an expression statement}}13967  {13968#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13969    a++;13970  }13971#pragma omp atomic13972  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13973  // expected-note@+1 {{expected an expression statement}}13974  {13975#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13976    for (int i = 0; i < 10; ++i)13977      ;13978  }13979#pragma omp atomic13980  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13981  // expected-note@+1 {{expected an expression statement}}13982  {13983#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13984    for (int i = 0; i < 10; ++i)13985      ;13986  }13987#pragma omp atomic13988  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13989  // expected-note@+1 {{expected an expression statement}}13990  {13991#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}13992    for (int i = 0; i < 10; ++i)13993      ;13994  }13995#pragma omp atomic13996  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}13997  // expected-note@+1 {{expected an expression statement}}13998  {13999#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}}14000    for (int i = 0; i < 10; ++i)14001      ;14002  }14003 14004// TARGET DIRECTIVE14005#pragma omp target14006#pragma omp parallel14007  bar();14008#pragma omp target14009#pragma omp for14010  for (int i = 0; i < 10; ++i)14011    ;14012#pragma omp target14013#pragma omp simd14014  for (int i = 0; i < 10; ++i)14015    ;14016#pragma omp target14017#pragma omp for simd14018  for (int i = 0; i < 10; ++i)14019    ;14020#pragma omp target14021#pragma omp sections14022  {14023    bar();14024  }14025#pragma omp target14026#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target region}}14027  {14028    bar();14029  }14030#pragma omp target14031#pragma omp single14032  bar();14033 14034#pragma omp target14035#pragma omp master14036  {14037    bar();14038  }14039#pragma omp target14040#pragma omp critical14041  {14042    bar();14043  }14044#pragma omp target14045#pragma omp parallel for14046  for (int i = 0; i < 10; ++i)14047    ;14048#pragma omp target14049#pragma omp parallel for simd14050  for (int i = 0; i < 10; ++i)14051    ;14052#pragma omp target14053#pragma omp parallel sections14054  {14055    bar();14056  }14057#pragma omp target14058#pragma omp task14059  {14060    bar();14061  }14062#pragma omp target14063  {14064#pragma omp taskyield14065    bar();14066  }14067#pragma omp target14068  {14069#pragma omp barrier14070    bar();14071  }14072#pragma omp target14073  {14074#pragma omp scan // expected-error {{region cannot be closely nested inside 'target' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}14075    bar();14076  }14077#pragma omp target14078  {14079#pragma omp taskwait14080    bar();14081  }14082#pragma omp target14083  {14084#pragma omp flush14085    bar();14086  }14087#pragma omp target14088  {14089#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?}}14090    bar();14091  }14092#pragma omp target14093  {14094#pragma omp atomic14095    ++a;14096  }14097#pragma omp target14098  {14099#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}14100    ++a;14101  }14102#pragma omp target14103  {14104#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}14105    ++a;14106  }14107#pragma omp target14108#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}14109  for (int i = 0; i < 10; ++i)14110    ;14111#pragma omp target14112  {14113#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}14114  }14115#pragma omp target14116  {14117#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}14118  }14119#pragma omp target14120  {14121#pragma omp teams14122    ++a;14123  }14124#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}14125  {14126#pragma omp teams // expected-note {{directive outside teams construct here}}14127    ++a;14128#pragma omp teams // expected-note {{nested teams construct here}}14129    ++a;14130  }14131#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}14132  {14133    ++a;          // expected-note {{statement outside teams construct here}}14134#pragma omp teams // expected-note {{nested teams construct here}}14135    ++a;14136  }14137#pragma omp target // expected-error {{target construct with nested teams region contains statements outside of the teams construct}}14138  {14139#pragma omp teams // expected-note {{nested teams construct here}}14140    ++a;14141    ++a;          // expected-note {{statement outside teams construct here}}14142  }14143#pragma omp target14144  {14145#pragma omp taskloop14146  for (int i = 0; i < 10; ++i)14147    ++a;14148  }14149#pragma omp target14150  {14151#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?}}14152    for (int i = 0; i < 10; ++i)14153      ;14154  }14155#pragma omp atomic14156  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}14157  // expected-note@+1 {{expected an expression statement}}14158  {14159#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}14160    a++;14161  }14162#pragma omp target14163  {14164#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?}}14165    for (int i = 0; i < 10; ++i)14166      ;14167  }14168#pragma omp target14169  {14170#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?}}14171    for (int i = 0; i < 10; ++i)14172      ;14173  }14174#pragma omp target14175  {14176#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?}}14177    for (int i = 0; i < 10; ++i)14178      ;14179  }14180#pragma omp target14181  {14182#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}14183    for (int i = 0; i < 10; ++i)14184      ;14185  }14186#pragma omp target14187  {14188#pragma omp teams distribute // OK14189    for (int i = 0; i < 10; ++i)14190      ;14191  }14192#pragma omp target14193  {14194#pragma omp teams distribute simd // OK14195    for (int i = 0; i < 10; ++i)14196      ;14197  }14198#pragma omp target14199  {14200#pragma omp teams distribute parallel for simd // OK14201    for (int i = 0; i < 10; ++i)14202      ;14203  }14204#pragma omp target14205  {14206#pragma omp teams distribute parallel for // OK14207    for (int i = 0; i < 10; ++i)14208      ;14209  }14210#pragma omp target14211  {14212#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}14213    a++;14214  }14215#pragma omp target14216  {14217#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}14218    for (int i = 0; i < 10; ++i)14219      ;14220  }14221#pragma omp target14222  {14223#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}14224    for (int i = 0; i < 10; ++i)14225      ;14226  }14227#pragma omp target14228  {14229#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}14230    for (int i = 0; i < 10; ++i)14231      ;14232  }14233#pragma omp target14234  {14235#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}14236    for (int i = 0; i < 10; ++i)14237      ;14238  }14239 14240// TARGET PARALLEL DIRECTIVE14241#pragma omp target parallel14242#pragma omp parallel14243  bar();14244#pragma omp target parallel14245#pragma omp for14246  for (int i = 0; i < 10; ++i)14247    ;14248#pragma omp target parallel14249#pragma omp simd14250  for (int i = 0; i < 10; ++i)14251    ;14252#pragma omp target parallel14253#pragma omp for simd14254  for (int i = 0; i < 10; ++i)14255    ;14256#pragma omp target parallel14257#pragma omp sections14258  {14259    bar();14260  }14261#pragma omp target parallel14262#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}14263  {14264    bar();14265  }14266#pragma omp target parallel14267#pragma omp single14268  bar();14269 14270#pragma omp target parallel14271#pragma omp master14272  {14273    bar();14274  }14275#pragma omp target parallel14276#pragma omp critical14277  {14278    bar();14279  }14280#pragma omp target parallel14281#pragma omp parallel for14282  for (int i = 0; i < 10; ++i)14283    ;14284#pragma omp target parallel14285#pragma omp parallel for simd14286  for (int i = 0; i < 10; ++i)14287    ;14288#pragma omp target parallel14289#pragma omp parallel sections14290  {14291    bar();14292  }14293#pragma omp target parallel14294#pragma omp task14295  {14296    bar();14297  }14298#pragma omp target parallel14299  {14300#pragma omp taskyield14301    bar();14302  }14303#pragma omp target parallel14304  {14305#pragma omp barrier14306    bar();14307  }14308#pragma omp target parallel14309  {14310#pragma omp scan // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}14311    bar();14312  }14313#pragma omp target parallel14314  {14315#pragma omp taskwait14316    bar();14317  }14318#pragma omp target parallel14319  {14320#pragma omp flush14321    bar();14322  }14323#pragma omp target parallel14324  {14325#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?}}14326    bar();14327  }14328#pragma omp target parallel14329  {14330#pragma omp atomic14331    ++a;14332  }14333#pragma omp target parallel14334  {14335#pragma omp target // expected-error {{region cannot be nested inside 'target parallel' region}}14336    ++a;14337  }14338#pragma omp target parallel14339  {14340#pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel' region}}14341    ++a;14342  }14343#pragma omp target parallel14344#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}14345  for (int i = 0; i < 10; ++i)14346    ;14347#pragma omp target parallel14348  {14349#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?}}14350    ++a;14351  }14352#pragma omp target parallel14353  {14354    ++a;14355#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?}}14356    ++a;14357  }14358#pragma omp target parallel14359  {14360#pragma omp taskloop14361  for (int i = 0; i < 10; ++i)14362    ++a;14363  }14364#pragma omp target parallel14365  {14366#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?}}14367    for (int i = 0; i < 10; ++i)14368      ;14369  }14370#pragma omp target parallel14371  {14372#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel' region}}14373  }14374#pragma omp target parallel14375  {14376#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel' region}}14377  }14378#pragma omp target parallel14379  {14380#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel' region}}14381  }14382#pragma omp target parallel14383  {14384#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?}}14385    for (int i = 0; i < 10; ++i)14386      ;14387  }14388#pragma omp target parallel14389  {14390#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?}}14391    for (int i = 0; i < 10; ++i)14392      ;14393  }14394#pragma omp target parallel14395  {14396#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?}}14397    for (int i = 0; i < 10; ++i)14398      ;14399  }14400#pragma omp target parallel14401  {14402#pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel' regio}}14403    for (int i = 0; i < 10; ++i)14404      ;14405  }14406#pragma omp target parallel14407  {14408#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?}}14409    for (int i = 0; i < 10; ++i)14410      ;14411  }14412#pragma omp target parallel14413  {14414#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?}}14415    for (int i = 0; i < 10; ++i)14416      ;14417  }14418#pragma omp target parallel14419  {14420#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?}}14421    for (int i = 0; i < 10; ++i)14422      ;14423  }14424#pragma omp target parallel14425  {14426#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?}}14427    for (int i = 0; i < 10; ++i)14428      ;14429  }14430#pragma omp target parallel14431  {14432#pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel' region}}14433    a++;14434  }14435#pragma omp target parallel14436  {14437#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel' region}}14438    for (int i = 0; i < 10; ++i)14439      ;14440  }14441#pragma omp target parallel14442  {14443#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel' region}}14444    for (int i = 0; i < 10; ++i)14445      ;14446  }14447#pragma omp target parallel14448  {14449#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel' region}}14450    for (int i = 0; i < 10; ++i)14451      ;14452  }14453#pragma omp target parallel14454  {14455#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel' region}}14456    for (int i = 0; i < 10; ++i)14457      ;14458  }14459 14460// TARGET PARALLEL FOR DIRECTIVE14461#pragma omp target parallel for14462  for (int i = 0; i < 10; ++i) {14463#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?}}14464    for (int i = 0; i < 10; ++i)14465      ;14466  }14467#pragma omp target parallel for14468  for (int i = 0; i < 10; ++i) {14469#pragma omp simd14470    for (int i = 0; i < 10; ++i)14471      ;14472  }14473#pragma omp target parallel for14474  for (int i = 0; i < 10; ++i) {14475#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?}}14476    for (int i = 0; i < 10; ++i)14477      ;14478  }14479#pragma omp target parallel for14480  for (int i = 0; i < 10; ++i) {14481#pragma omp parallel14482    for (int i = 0; i < 10; ++i)14483      ;14484  }14485#pragma omp target parallel for14486  for (int i = 0; i < 10; ++i) {14487#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?}}14488    {14489      bar();14490    }14491  }14492#pragma omp target parallel for14493  for (int i = 0; i < 10; ++i) {14494#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel for region}}14495    {14496      bar();14497    }14498  }14499#pragma omp target parallel for14500  for (int i = 0; i < 10; ++i) {14501#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?}}14502    {14503      bar();14504    }14505  }14506 14507#pragma omp target parallel for14508  for (int i = 0; i < 10; ++i) {14509#pragma omp master // expected-error {{region cannot be closely nested inside 'target parallel for' region}}14510    {14511      bar();14512    }14513  }14514 14515#pragma omp target parallel for14516  for (int i = 0; i < 10; ++i) {14517#pragma omp critical14518    {14519      bar();14520    }14521  }14522 14523#pragma omp target parallel for14524  for (int i = 0; i < 10; ++i) {14525#pragma omp parallel14526    {14527#pragma omp single // OK14528      {14529        bar();14530      }14531#pragma omp for // OK14532      for (int i = 0; i < 10; ++i)14533        ;14534#pragma omp for simd // OK14535      for (int i = 0; i < 10; ++i)14536        ;14537#pragma omp sections // OK14538      {14539        bar();14540      }14541    }14542  }14543#pragma omp target parallel for14544  for (int i = 0; i < 10; ++i) {14545#pragma omp parallel for14546    for (int i = 0; i < 10; ++i)14547      ;14548  }14549#pragma omp target parallel for14550  for (int i = 0; i < 10; ++i) {14551#pragma omp parallel for simd14552    for (int i = 0; i < 10; ++i)14553      ;14554  }14555#pragma omp target parallel for14556  for (int i = 0; i < 10; ++i) {14557#pragma omp parallel sections14558    {14559      bar();14560    }14561  }14562#pragma omp target parallel for14563  for (int i = 0; i < 10; ++i) {14564#pragma omp task14565    {14566      bar();14567    }14568  }14569#pragma omp target parallel for14570  for (int i = 0; i < 10; ++i) {14571#pragma omp taskyield14572    bar();14573  }14574#pragma omp target parallel for14575  for (int i = 0; i < 10; ++i) {14576#pragma omp barrier // expected-error {{region cannot be closely nested inside 'target parallel for' region}}14577    bar();14578  }14579#pragma omp target parallel for14580  for (int i = 0; i < 10; ++i) {14581#pragma omp taskwait14582    bar();14583  }14584#pragma omp target parallel for14585  for (int i = 0; i < 10; ++i) {14586#pragma omp flush14587    bar();14588  }14589#pragma omp target parallel for14590  for (int i = 0; i < 10; ++i) {14591#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?}}14592    bar();14593  }14594#pragma omp target parallel for ordered14595  for (int i = 0; i < 10; ++i) {14596#pragma omp ordered // OK14597    bar();14598  }14599#pragma omp target parallel for14600  for (int i = 0; i < 10; ++i) {14601#pragma omp atomic14602    ++a;14603  }14604#pragma omp target parallel for14605  for (int i = 0; i < 10; ++i) {14606#pragma omp target // expected-error {{region cannot be nested inside 'target parallel for' region}}14607    ++a;14608  }14609#pragma omp target parallel for14610  for (int i = 0; i < 10; ++i) {14611#pragma omp target parallel // expected-error {{region cannot be nested inside 'target parallel for' region}}14612    ++a;14613  }14614#pragma omp target parallel for14615  for (int i = 0; i < 10; ++i) {14616#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}14617    for (int i = 0; i < 10; ++i)14618      ;14619  }14620#pragma omp target parallel for14621  for (int i = 0; i < 10; ++i) {14622#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}14623    ++a;14624  }14625#pragma omp target parallel for14626  for (int i = 0; i < 10; ++i) {14627#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target parallel for' region}}14628    ++a;14629  }14630#pragma omp target parallel for14631  for (int i = 0; i < 10; ++i) {14632#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?}}14633    ++a;14634  }14635#pragma omp target parallel for14636  for (int i = 0; i < 10; ++i) {14637#pragma omp taskloop14638  for (int i = 0; i < 10; ++i)14639    ++a;14640  }14641#pragma omp target parallel for14642  for (int i = 0; i < 10; ++i) {14643#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?}}14644    for (int j = 0; j < 10; ++j)14645      ;14646  }14647#pragma omp target parallel for14648  for (int i = 0; i < 10; ++i) {14649#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target parallel for' region}}14650    a++;14651  }14652#pragma omp target parallel for14653  for (int i = 0; i < 10; ++i) {14654#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?}}14655    for (int j = 0; j < 10; ++j)14656      ;14657  }14658#pragma omp target parallel for14659  for (int i = 0; i < 10; ++i) {14660#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?}}14661    for (int j = 0; j < 10; ++j)14662      ;14663  }14664#pragma omp target parallel for14665  for (int i = 0; i < 10; ++i) {14666#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?}}14667    for (int j = 0; j < 10; ++j)14668      ;14669  }14670#pragma omp target parallel for14671  for (int i = 0; i < 10; ++i) {14672#pragma omp target simd // expected-error {{region cannot be nested inside 'target parallel for' region}}14673    for (int j = 0; j < 10; ++j)14674      ;14675  }14676#pragma omp target parallel for14677  for (int i = 0; i < 10; ++i) {14678#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?}}14679    for (int j = 0; j < 10; ++j)14680      ;14681  }14682#pragma omp target parallel for14683  for (int i = 0; i < 10; ++i) {14684#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?}}14685    for (int j = 0; j < 10; ++j)14686      ;14687  }14688#pragma omp target parallel for14689  for (int i = 0; i < 10; ++i) {14690#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?}}14691    for (int j = 0; j < 10; ++j)14692      ;14693  }14694#pragma omp target parallel for14695  for (int i = 0; i < 10; ++i) {14696#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?}}14697    for (int j = 0; j < 10; ++j)14698      ;14699  }14700#pragma omp target parallel for14701  for (int i = 0; i < 10; ++i) {14702#pragma omp target teams // expected-error {{region cannot be nested inside 'target parallel for' region}}14703    a++;14704  }14705#pragma omp target parallel for14706  for (int i = 0; i < 10; ++i) {14707#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target parallel for' region}}14708    for (int j = 0; j < 10; ++j)14709      ;14710  }14711#pragma omp target parallel for14712  for (int i = 0; i < 10; ++i) {14713#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target parallel for' region}}14714    for (int j = 0; j < 10; ++j)14715      ;14716  }14717#pragma omp target parallel for14718  for (int i = 0; i < 10; ++i) {14719#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target parallel for' region}}14720    for (int j = 0; j < 10; ++j)14721      ;14722  }14723#pragma omp target parallel for14724  for (int i = 0; i < 10; ++i) {14725#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target parallel for' region}}14726    for (int j = 0; j < 10; ++j)14727      ;14728  }14729 14730// TEAMS DIRECTIVE14731#pragma omp target14732#pragma omp teams14733#pragma omp parallel14734  bar();14735#pragma omp target14736#pragma omp teams14737#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?}}14738  for (int i = 0; i < 10; ++i)14739    ;14740#pragma omp target14741#pragma omp teams14742#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?}}14743  for (int i = 0; i < 10; ++i)14744    ;14745#pragma omp target14746#pragma omp teams14747#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?}}14748  for (int i = 0; i < 10; ++i)14749    ;14750#pragma omp target14751#pragma omp teams14752#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?}}14753  {14754    bar();14755  }14756#pragma omp target14757#pragma omp teams14758#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams region}}14759  {14760    bar();14761  }14762#pragma omp target14763#pragma omp teams14764#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?}}14765  bar();14766 14767#pragma omp target14768#pragma omp teams14769#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?}}14770  {14771    bar();14772  }14773#pragma omp target14774#pragma omp teams14775#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?}}14776  {14777    bar();14778  }14779#pragma omp target14780#pragma omp teams14781#pragma omp parallel for14782  for (int i = 0; i < 10; ++i)14783    ;14784#pragma omp target14785#pragma omp teams14786#pragma omp parallel for simd14787  for (int i = 0; i < 10; ++i)14788    ;14789#pragma omp target14790#pragma omp teams14791#pragma omp parallel sections14792  {14793    bar();14794  }14795#pragma omp target14796#pragma omp teams14797#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?}}14798  {14799    bar();14800  }14801#pragma omp target14802#pragma omp teams14803  {14804#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?}}14805    bar();14806  }14807#pragma omp target14808#pragma omp teams14809  {14810#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?}}14811    bar();14812  }14813#pragma omp target14814#pragma omp teams14815  {14816#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}14817    bar();14818  }14819#pragma omp target14820#pragma omp teams14821  {14822#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?}}14823    bar();14824  }14825#pragma omp target14826#pragma omp teams14827  {14828#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?}}14829    bar();14830  }14831#pragma omp target14832#pragma omp teams14833  {14834#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?}}14835    bar();14836  }14837#pragma omp target14838#pragma omp teams14839  {14840#pragma omp atomic // omp-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}14841    ++a;14842  }14843#pragma omp target14844#pragma omp teams14845  {14846#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}14847    ++a;14848  }14849#pragma omp target14850#pragma omp teams14851  {14852#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}14853    ++a;14854  }14855#pragma omp target14856#pragma omp teams14857#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}14858  for (int i = 0; i < 10; ++i)14859    ;14860#pragma omp target14861#pragma omp teams14862  {14863#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}14864  }14865#pragma omp target14866#pragma omp teams14867  {14868#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}14869  }14870#pragma omp target14871#pragma omp teams14872  {14873#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?}}14874    ++a;14875  }14876#pragma omp target14877#pragma omp teams14878  {14879#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?}}14880  for (int i = 0; i < 10; ++i)14881    ++a;14882  }14883#pragma omp target14884#pragma omp teams14885#pragma omp distribute14886  for (int i = 0; i < 10; ++i)14887    ;14888#pragma omp target14889#pragma omp teams14890#pragma omp distribute14891  for (int i = 0; i < 10; ++i)14892    ;14893#pragma omp distribute14894  for (int j = 0; j < 10; ++j)14895    ;14896#pragma omp target14897#pragma omp teams14898  {14899#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}14900    ++a;14901  }14902#pragma omp target14903#pragma omp teams14904#pragma omp distribute parallel for14905  for (int i = 0; i < 10; ++i)14906    ;14907#pragma omp target14908#pragma omp teams14909  {14910#pragma omp distribute parallel for14911  for (int i = 0; i < 10; ++i)14912    ;14913#pragma omp distribute parallel for14914  for (int j = 0; j < 10; ++j)14915    ;14916  }14917#pragma omp target14918#pragma omp teams14919  {14920#pragma omp distribute parallel for simd14921  for (int i = 0; i < 10; ++i)14922    ;14923#pragma omp distribute parallel for simd14924  for (int j = 0; j < 10; ++j)14925    ;14926  }14927#pragma omp target14928#pragma omp teams14929  {14930#pragma omp distribute simd14931  for (int i = 0; i < 10; ++i)14932    ;14933#pragma omp distribute simd14934  for (int j = 0; j < 10; ++j)14935    ;14936  }14937#pragma omp target14938#pragma omp teams14939  {14940#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}14941  for (int i = 0; i < 10; ++i)14942    ;14943  }14944#pragma omp target14945#pragma omp teams14946  {14947#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?}}14948  for (int i = 0; i < 10; ++i)14949    ;14950  }14951#pragma omp target14952#pragma omp teams14953  {14954#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?}}14955  for (int i = 0; i < 10; ++i)14956    ;14957  }14958#pragma omp target14959#pragma omp teams14960  {14961#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?}}14962  for (int i = 0; i < 10; ++i)14963    ;14964  }14965#pragma omp target14966#pragma omp teams14967  {14968#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?}}14969  for (int i = 0; i < 10; ++i)14970    ;14971  }14972#pragma omp target14973#pragma omp teams14974  {14975#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}14976    a++;14977  }14978#pragma omp target14979#pragma omp teams14980  {14981#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}14982  for (int i = 0; i < 10; ++i)14983    ;14984  }14985#pragma omp target14986#pragma omp teams14987  {14988#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}14989  for (int i = 0; i < 10; ++i)14990    ;14991  }14992#pragma omp target14993#pragma omp teams14994  {14995#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}14996  for (int i = 0; i < 10; ++i)14997    ;14998  }14999#pragma omp target15000#pragma omp teams15001  {15002#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}15003  for (int i = 0; i < 10; ++i)15004    ;15005  }15006 15007// TASKLOOP DIRECTIVE15008#pragma omp taskloop15009  for (int i = 0; i < 10; ++i) {15010#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?}}15011    for (int i = 0; i < 10; ++i)15012      ;15013  }15014#pragma omp taskloop15015  for (int i = 0; i < 10; ++i) {15016#pragma omp simd15017    for (int i = 0; i < 10; ++i)15018      ;15019  }15020#pragma omp taskloop15021  for (int i = 0; i < 10; ++i) {15022#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?}}15023    for (int i = 0; i < 10; ++i)15024      ;15025  }15026#pragma omp taskloop15027  for (int i = 0; i < 10; ++i) {15028#pragma omp parallel15029    for (int i = 0; i < 10; ++i)15030      ;15031  }15032#pragma omp taskloop15033  for (int i = 0; i < 10; ++i) {15034#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?}}15035    {15036      bar();15037    }15038  }15039#pragma omp taskloop15040  for (int i = 0; i < 10; ++i) {15041#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a taskloop region}}15042    {15043      bar();15044    }15045  }15046#pragma omp taskloop15047  for (int i = 0; i < 10; ++i) {15048#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?}}15049    {15050      bar();15051    }15052  }15053 15054#pragma omp taskloop15055  for (int i = 0; i < 10; ++i) {15056#pragma omp master // expected-error {{region cannot be closely nested inside 'taskloop' region}}15057    {15058      bar();15059    }15060  }15061#pragma omp taskloop15062  for (int i = 0; i < 10; ++i) {15063#pragma omp critical15064    {15065      bar();15066    }15067  }15068#pragma omp taskloop15069  for (int i = 0; i < 10; ++i) {15070#pragma omp parallel15071    {15072#pragma omp single // OK15073      {15074        bar();15075      }15076#pragma omp for // OK15077      for (int i = 0; i < 10; ++i)15078        ;15079#pragma omp sections // OK15080      {15081        bar();15082      }15083    }15084  }15085#pragma omp taskloop15086  for (int i = 0; i < 10; ++i) {15087#pragma omp parallel for15088    for (int i = 0; i < 10; ++i)15089      ;15090  }15091#pragma omp taskloop15092  for (int i = 0; i < 10; ++i) {15093#pragma omp parallel for simd15094    for (int i = 0; i < 10; ++i)15095      ;15096  }15097#pragma omp taskloop15098  for (int i = 0; i < 10; ++i) {15099#pragma omp parallel sections15100    {15101      bar();15102    }15103  }15104#pragma omp taskloop15105  for (int i = 0; i < 10; ++i) {15106#pragma omp task15107    {15108      bar();15109    }15110  }15111#pragma omp taskloop15112  for (int i = 0; i < 10; ++i) {15113#pragma omp taskyield15114    bar();15115  }15116#pragma omp taskloop15117  for (int i = 0; i < 10; ++i) {15118#pragma omp barrier // expected-error {{region cannot be closely nested inside 'taskloop' region}}15119    bar();15120  }15121#pragma omp taskloop15122  for (int i = 0; i < 10; ++i) {15123#pragma omp scan // expected-error {{region cannot be closely nested inside 'taskloop' region}}15124    bar();15125  }15126#pragma omp taskloop15127  for (int i = 0; i < 10; ++i) {15128#pragma omp taskwait15129    bar();15130  }15131#pragma omp taskloop15132  for (int i = 0; i < 10; ++i) {15133#pragma omp flush15134    bar();15135  }15136#pragma omp taskloop15137  for (int i = 0; i < 10; ++i) {15138#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?}}15139    bar();15140  }15141#pragma omp taskloop15142  for (int i = 0; i < 10; ++i) {15143#pragma omp atomic15144    ++a;15145  }15146#pragma omp taskloop15147  for (int i = 0; i < 10; ++i) {15148#pragma omp target15149    ++a;15150  }15151#pragma omp taskloop15152  for (int i = 0; i < 10; ++i) {15153#pragma omp target parallel15154    ++a;15155  }15156#pragma omp taskloop15157  for (int i = 0; i < 10; ++i) {15158#pragma omp target parallel for15159    for (int i = 0; i < 10; ++i)15160      ;15161  }15162#pragma omp taskloop15163  for (int i = 0; i < 10; ++i) {15164#pragma omp target enter data map(to: a)15165    ++a;15166  }15167#pragma omp taskloop15168  for (int i = 0; i < 10; ++i) {15169#pragma omp target exit data map(from: a)15170    ++a;15171  }15172#pragma omp taskloop15173  for (int i = 0; i < 10; ++i) {15174#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?}}15175    ++a;15176  }15177#pragma omp taskloop15178  for (int i = 0; i < 10; ++i) {15179#pragma omp taskloop15180  for (int i = 0; i < 10; ++i)15181    ++a;15182  }15183#pragma omp taskloop15184  for (int i = 0; i < 10; ++i) {15185#pragma omp target update to(a)15186    ++a;15187  }15188#pragma omp taskloop15189  for (int i = 0; i < 10; ++i) {15190#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?}}15191    for (int i = 0; i < 10; ++i)15192      ;15193  }15194#pragma omp taskloop15195  for (int i = 0; i < 10; ++i) {15196#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?}}15197    for (int i = 0; i < 10; ++i)15198      ;15199  }15200#pragma omp taskloop15201  for (int i = 0; i < 10; ++i) {15202#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?}}15203    for (int i = 0; i < 10; ++i)15204      ;15205  }15206#pragma omp taskloop15207  for (int i = 0; i < 10; ++i) {15208#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?}}15209    for (int i = 0; i < 10; ++i)15210      ;15211  }15212#pragma omp taskloop15213  for (int i = 0; i < 10; ++i) {15214#pragma omp target simd // OK15215    for (int i = 0; i < 10; ++i)15216      ;15217  }15218#pragma omp taskloop15219  for (int i = 0; i < 10; ++i) {15220#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?}}15221    for (int i = 0; i < 10; ++i)15222      ;15223  }15224#pragma omp taskloop15225  for (int i = 0; i < 10; ++i) {15226#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?}}15227    for (int i = 0; i < 10; ++i)15228      ;15229  }15230#pragma omp taskloop15231  for (int i = 0; i < 10; ++i) {15232#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?}}15233    for (int i = 0; i < 10; ++i)15234      ;15235  }15236#pragma omp taskloop15237  for (int i = 0; i < 10; ++i) {15238#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?}}15239    for (int i = 0; i < 10; ++i)15240      ;15241  }15242#pragma omp taskloop15243  for (int i = 0; i < 10; ++i) {15244#pragma omp target teams // OK15245    a++;15246  }15247#pragma omp taskloop15248  for (int i = 0; i < 10; ++i) {15249#pragma omp target teams distribute // OK15250    for (int i = 0; i < 10; ++i)15251      ;15252  }15253#pragma omp taskloop15254  for (int i = 0; i < 10; ++i) {15255#pragma omp target teams distribute parallel for // OK15256    for (int i = 0; i < 10; ++i)15257      ;15258  }15259#pragma omp taskloop15260  for (int i = 0; i < 10; ++i) {15261#pragma omp target teams distribute parallel for simd // OK15262    for (int i = 0; i < 10; ++i)15263      ;15264  }15265#pragma omp taskloop15266  for (int i = 0; i < 10; ++i) {15267#pragma omp target teams distribute simd // OK15268    for (int i = 0; i < 10; ++i)15269      ;15270  }15271 15272// DISTRIBUTE DIRECTIVE15273#pragma omp target15274#pragma omp teams15275#pragma omp distribute15276  for (int i = 0; i < 10; ++i) {15277#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?}}15278    for (int i = 0; i < 10; ++i)15279      ;15280  }15281#pragma omp target15282#pragma omp teams15283#pragma omp distribute15284  for (int i = 0; i < 10; ++i) {15285#pragma omp for15286    for (int i = 0; i < 10; ++i)15287      ;15288  }15289#pragma omp target15290#pragma omp teams15291#pragma omp distribute15292  for (int i = 0; i < 10; ++i) {15293#pragma omp simd15294    for (int i = 0; i < 10; ++i)15295      ;15296  }15297#pragma omp target15298#pragma omp teams15299#pragma omp distribute15300  for (int i = 0; i < 10; ++i) {15301#pragma omp for simd15302    for (int i = 0; i < 10; ++i)15303      ;15304  }15305#pragma omp target15306#pragma omp teams15307#pragma omp distribute15308  for (int i = 0; i < 10; ++i) {15309#pragma omp parallel15310    for (int i = 0; i < 10; ++i)15311      ;15312  }15313#pragma omp target15314#pragma omp teams15315#pragma omp distribute15316  for (int i = 0; i < 10; ++i) {15317#pragma omp sections15318    {15319      bar();15320    }15321  }15322#pragma omp target15323#pragma omp teams15324#pragma omp distribute15325  for (int i = 0; i < 10; ++i) {15326#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute region}}15327    {15328      bar();15329    }15330  }15331#pragma omp target15332#pragma omp teams15333#pragma omp distribute15334  for (int i = 0; i < 10; ++i) {15335#pragma omp single15336    {15337      bar();15338    }15339  }15340#pragma omp target15341#pragma omp teams15342#pragma omp distribute15343  for (int i = 0; i < 10; ++i) {15344#pragma omp master15345    {15346      bar();15347    }15348  }15349#pragma omp target15350#pragma omp teams15351#pragma omp distribute15352  for (int i = 0; i < 10; ++i) {15353#pragma omp critical15354    {15355      bar();15356    }15357  }15358#pragma omp target15359#pragma omp teams15360#pragma omp distribute15361  for (int i = 0; i < 10; ++i) {15362#pragma omp parallel15363    {15364#pragma omp single15365      {15366        bar();15367      }15368    }15369  }15370#pragma omp target15371#pragma omp teams15372#pragma omp distribute15373  for (int i = 0; i < 10; ++i) {15374#pragma omp parallel for15375    for (int i = 0; i < 10; ++i)15376      ;15377  }15378#pragma omp target15379#pragma omp teams15380#pragma omp distribute15381  for (int i = 0; i < 10; ++i) {15382#pragma omp parallel for simd15383    for (int i = 0; i < 10; ++i)15384      ;15385  }15386#pragma omp target15387#pragma omp teams15388#pragma omp distribute15389  for (int i = 0; i < 10; ++i) {15390#pragma omp parallel sections15391    {15392      bar();15393    }15394  }15395#pragma omp target15396#pragma omp teams15397#pragma omp distribute15398  for (int i = 0; i < 10; ++i) {15399#pragma omp task15400    {15401      bar();15402    }15403  }15404#pragma omp target15405#pragma omp teams15406#pragma omp distribute15407  for (int i = 0; i < 10; ++i) {15408#pragma omp taskyield15409    bar();15410  }15411#pragma omp target15412#pragma omp teams15413#pragma omp distribute15414  for (int i = 0; i < 10; ++i) {15415#pragma omp barrier15416    bar();15417  }15418#pragma omp target15419#pragma omp teams15420#pragma omp distribute15421  for (int i = 0; i < 10; ++i) {15422#pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}15423    bar();15424  }15425#pragma omp target15426#pragma omp teams15427#pragma omp distribute15428  for (int i = 0; i < 10; ++i) {15429#pragma omp taskwait15430    bar();15431  }15432#pragma omp target15433#pragma omp teams15434#pragma omp distribute15435  for (int i = 0; i < 10; ++i) {15436#pragma omp flush15437    bar();15438  }15439#pragma omp target15440#pragma omp teams15441#pragma omp distribute15442  for (int i = 0; i < 10; ++i) {15443#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?}}15444    bar();15445  }15446#pragma omp target15447#pragma omp teams15448#pragma omp distribute15449  for (int i = 0; i < 10; ++i) {15450#pragma omp atomic15451    ++a;15452  }15453#pragma omp target15454#pragma omp teams15455#pragma omp distribute15456  for (int i = 0; i < 10; ++i) {15457#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}15458    ++a;15459  }15460#pragma omp target15461#pragma omp teams15462#pragma omp distribute15463  for (int i = 0; i < 10; ++i) {15464#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}15465    ++a;15466  }15467#pragma omp target15468#pragma omp teams15469#pragma omp distribute15470  for (int i = 0; i < 10; ++i) {15471#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}15472    for (int i = 0; i < 10; ++i)15473      ;15474  }15475#pragma omp target15476#pragma omp teams15477#pragma omp distribute15478  for (int i = 0; i < 10; ++i) {15479#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?}}15480    ++a;15481  }15482#pragma omp target15483#pragma omp teams15484#pragma omp distribute15485  for (int i = 0; i < 10; ++i) {15486#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}15487    ++a;15488  }15489#pragma omp target15490#pragma omp teams15491#pragma omp distribute15492  for (int i = 0; i < 10; ++i) {15493#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}15494    ++a;15495  }15496#pragma omp target15497#pragma omp teams15498#pragma omp distribute15499  for (int i = 0; i < 10; ++i) {15500#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}15501    ++a;15502  }15503#pragma omp target15504#pragma omp teams15505#pragma omp distribute15506  for (int i = 0; i < 10; ++i) {15507#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?}}15508  for (int i = 0; i < 10; ++i)15509    ++a;15510  }15511#pragma omp target15512#pragma omp teams15513#pragma omp distribute15514  for (int i = 0; i < 10; ++i) {15515#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?}}15516  for (int i = 0; i < 10; ++i)15517    ++a;15518  }15519#pragma omp target15520#pragma omp teams15521#pragma omp distribute15522  for (int i = 0; i < 10; ++i) {15523#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?}}15524  for (int i = 0; i < 10; ++i)15525    ++a;15526  }15527#pragma omp target15528#pragma omp teams15529#pragma omp distribute15530  for (int i = 0; i < 10; ++i) {15531#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}15532  for (int i = 0; i < 10; ++i)15533    ++a;15534  }15535#pragma omp target15536#pragma omp teams15537#pragma omp distribute15538  for (int i = 0; i < 10; ++i) {15539#pragma omp target parallel for simd // expected-error {{region cannot be nested inside 'target' region}}15540  for (int i = 0; i < 10; ++i)15541    ++a;15542  }15543#pragma omp target15544#pragma omp teams15545#pragma omp distribute15546  for (int i = 0; i < 10; ++i) {15547#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}15548  for (int i = 0; i < 10; ++i)15549    ++a;15550  }15551#pragma omp target15552#pragma omp teams15553#pragma omp distribute15554  for (int i = 0; i < 10; ++i) {15555#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}15556  for (int i = 0; i < 10; ++i)15557    ++a;15558  }15559#pragma omp target15560#pragma omp teams15561#pragma omp distribute15562  for (int i = 0; i < 10; ++i) {15563#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}15564  for (int i = 0; i < 10; ++i)15565    ++a;15566  }15567#pragma omp target15568#pragma omp teams15569#pragma omp distribute15570  for (int i = 0; i < 10; ++i) {15571#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}15572  for (int i = 0; i < 10; ++i)15573    ++a;15574  }15575#pragma omp target15576#pragma omp teams15577#pragma omp distribute15578  for (int i = 0; i < 10; ++i) {15579#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}15580  for (int i = 0; i < 10; ++i)15581    ++a;15582  }15583#pragma omp target15584#pragma omp teams15585#pragma omp distribute15586  for (int i = 0; i < 10; ++i) {15587#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}15588  for (int i = 0; i < 10; ++i)15589    ++a;15590  }15591 15592// DISTRIBUTE PARALLEL FOR DIRECTIVE15593#pragma omp target15594#pragma omp teams15595#pragma omp distribute parallel for15596  for (int i = 0; i < 10; ++i) {15597#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?}}15598    for (int i = 0; i < 10; ++i)15599      ;15600  }15601 15602#pragma omp target15603#pragma omp teams15604#pragma omp distribute parallel for15605  for (int i = 0; i < 10; ++i) {15606#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?}}15607    for (int i = 0; i < 10; ++i)15608      ;15609  }15610#pragma omp target15611#pragma omp teams15612#pragma omp distribute parallel for15613  for (int i = 0; i < 10; ++i) {15614#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?}}15615    for (int i = 0; i < 10; ++i)15616      ;15617  }15618#pragma omp target15619#pragma omp teams15620#pragma omp distribute parallel for15621  for (int i = 0; i < 10; ++i) {15622#pragma omp simd15623    for (int i = 0; i < 10; ++i)15624      ;15625  }15626#pragma omp target15627#pragma omp teams15628#pragma omp distribute parallel for15629  for (int i = 0; i < 10; ++i) {15630#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?}}15631    for (int i = 0; i < 10; ++i)15632      ;15633  }15634#pragma omp target15635#pragma omp teams15636#pragma omp distribute parallel for15637  for (int i = 0; i < 10; ++i) {15638#pragma omp parallel15639    for (int i = 0; i < 10; ++i)15640      ;15641  }15642#pragma omp target15643#pragma omp teams15644#pragma omp distribute parallel for15645  for (int i = 0; i < 10; ++i) {15646#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?}}15647    {15648      bar();15649    }15650  }15651#pragma omp target15652#pragma omp teams15653#pragma omp distribute parallel for15654  for (int i = 0; i < 10; ++i) {15655#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a distribute parallel for region}}15656    {15657      bar();15658    }15659  }15660#pragma omp target15661#pragma omp teams15662#pragma omp distribute parallel for15663  for (int i = 0; i < 10; ++i) {15664#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?}}15665    {15666      bar();15667    }15668  }15669#pragma omp target15670#pragma omp teams15671#pragma omp distribute parallel for15672  for (int i = 0; i < 10; ++i) {15673#pragma omp master // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}15674    {15675      bar();15676    }15677  }15678#pragma omp target15679#pragma omp teams15680#pragma omp distribute parallel for15681  for (int i = 0; i < 10; ++i) {15682#pragma omp critical15683    {15684      bar();15685    }15686  }15687#pragma omp target15688#pragma omp teams15689#pragma omp distribute parallel for15690  for (int i = 0; i < 10; ++i) {15691#pragma omp parallel15692    {15693#pragma omp single15694      {15695        bar();15696      }15697    }15698  }15699#pragma omp target15700#pragma omp teams15701#pragma omp distribute parallel for15702  for (int i = 0; i < 10; ++i) {15703#pragma omp parallel for15704    for (int i = 0; i < 10; ++i)15705      ;15706  }15707#pragma omp target15708#pragma omp teams15709#pragma omp distribute parallel for15710  for (int i = 0; i < 10; ++i) {15711#pragma omp parallel for simd15712    for (int i = 0; i < 10; ++i)15713      ;15714  }15715#pragma omp target15716#pragma omp teams15717#pragma omp distribute parallel for15718  for (int i = 0; i < 10; ++i) {15719#pragma omp parallel sections15720    {15721      bar();15722    }15723  }15724#pragma omp target15725#pragma omp teams15726#pragma omp distribute parallel for15727  for (int i = 0; i < 10; ++i) {15728#pragma omp task15729    {15730      bar();15731    }15732  }15733#pragma omp target15734#pragma omp teams15735#pragma omp distribute parallel for15736  for (int i = 0; i < 10; ++i) {15737#pragma omp taskyield15738    bar();15739  }15740#pragma omp target15741#pragma omp teams15742#pragma omp distribute parallel for15743  for (int i = 0; i < 10; ++i) {15744#pragma omp barrier // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}15745    bar();15746  }15747#pragma omp target15748#pragma omp teams15749#pragma omp distribute parallel for15750  for (int i = 0; i < 10; ++i) {15751#pragma omp scan // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}15752    bar();15753  }15754#pragma omp target15755#pragma omp teams15756#pragma omp distribute parallel for15757  for (int i = 0; i < 10; ++i) {15758#pragma omp taskwait15759    bar();15760  }15761#pragma omp target15762#pragma omp teams15763#pragma omp distribute parallel for15764  for (int i = 0; i < 10; ++i) {15765#pragma omp flush15766    bar();15767  }15768#pragma omp target15769#pragma omp teams15770#pragma omp distribute parallel for15771  for (int i = 0; i < 10; ++i) {15772#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?}}15773    bar();15774  }15775#pragma omp target15776#pragma omp teams15777#pragma omp distribute parallel for15778  for (int i = 0; i < 10; ++i) {15779#pragma omp atomic15780    ++a;15781  }15782#pragma omp target15783#pragma omp teams15784#pragma omp distribute parallel for15785  for (int i = 0; i < 10; ++i) {15786#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}15787    ++a;15788  }15789#pragma omp target15790#pragma omp teams15791#pragma omp distribute parallel for15792  for (int i = 0; i < 10; ++i) {15793#pragma omp target parallel // expected-error {{region cannot be nested inside 'target' region}}15794    ++a;15795  }15796#pragma omp target15797#pragma omp teams15798#pragma omp distribute parallel for15799  for (int i = 0; i < 10; ++i) {15800#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}15801    for (int i = 0; i < 10; ++i)15802      ;15803  }15804#pragma omp target15805#pragma omp teams15806#pragma omp distribute parallel for15807  for (int i = 0; i < 10; ++i) {15808#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?}}15809    ++a;15810  }15811#pragma omp target15812#pragma omp teams15813#pragma omp distribute parallel for15814  for (int i = 0; i < 10; ++i) {15815#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}15816    ++a;15817  }15818#pragma omp target15819#pragma omp teams15820#pragma omp distribute parallel for15821  for (int i = 0; i < 10; ++i) {15822#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}15823    ++a;15824  }15825#pragma omp target15826#pragma omp teams15827#pragma omp distribute parallel for15828  for (int i = 0; i < 10; ++i) {15829#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}15830    ++a;15831  }15832#pragma omp target15833#pragma omp teams15834#pragma omp distribute parallel for15835  for (int i = 0; i < 10; ++i) {15836#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?}}15837  for (int i = 0; i < 10; ++i)15838    ++a;15839  }15840#pragma omp target15841#pragma omp teams15842#pragma omp distribute parallel for15843  for (int i = 0; i < 10; ++i) {15844#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}15845  for (int i = 0; i < 10; ++i)15846    ++a;15847  }15848#pragma omp target15849#pragma omp teams15850#pragma omp distribute parallel for15851  for (int i = 0; i < 10; ++i) {15852#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?}}15853  for (int i = 0; i < 10; ++i)15854    ++a;15855  }15856#pragma omp target15857#pragma omp teams15858#pragma omp distribute parallel for15859  for (int i = 0; i < 10; ++i) {15860#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?}}15861  for (int i = 0; i < 10; ++i)15862    ++a;15863  }15864#pragma omp target15865#pragma omp teams15866#pragma omp distribute parallel for15867  for (int i = 0; i < 10; ++i) {15868#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?}}15869  for (int i = 0; i < 10; ++i)15870    ++a;15871  }15872#pragma omp target15873#pragma omp teams15874#pragma omp distribute parallel for15875  for (int i = 0; i < 10; ++i) {15876#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?}}15877  for (int i = 0; i < 10; ++i)15878    ++a;15879  }15880#pragma omp target15881#pragma omp teams15882#pragma omp distribute parallel for15883  for (int i = 0; i < 10; ++i) {15884#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}15885    ++a;15886  }15887#pragma omp target15888#pragma omp teams15889#pragma omp distribute parallel for15890  for (int i = 0; i < 10; ++i) {15891#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}15892  for (int i = 0; i < 10; ++i)15893    ++a;15894  }15895#pragma omp target15896#pragma omp teams15897#pragma omp distribute parallel for15898  for (int i = 0; i < 10; ++i) {15899#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}15900  for (int i = 0; i < 10; ++i)15901    ++a;15902  }15903#pragma omp target15904#pragma omp teams15905#pragma omp distribute parallel for15906  for (int i = 0; i < 10; ++i) {15907#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}15908  for (int i = 0; i < 10; ++i)15909    ++a;15910  }15911#pragma omp target15912#pragma omp teams15913#pragma omp distribute parallel for15914  for (int i = 0; i < 10; ++i) {15915#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}15916  for (int i = 0; i < 10; ++i)15917    ++a;15918  }15919 15920// DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE15921#pragma omp target15922#pragma omp teams15923#pragma omp distribute parallel for simd15924  for (int i = 0; i < 10; ++i) {15925#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}15926    for (int i = 0; i < 10; ++i)15927      ;15928  }15929#pragma omp target15930#pragma omp teams15931#pragma omp distribute parallel for simd15932  for (int i = 0; i < 10; ++i) {15933#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}15934    for (int i = 0; i < 10; ++i)15935      ;15936  }15937#pragma omp target15938#pragma omp teams15939#pragma omp distribute parallel for simd15940  for (int i = 0; i < 10; ++i) {15941#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}15942    for (int i = 0; i < 10; ++i)15943      ;15944  }15945#pragma omp target15946#pragma omp teams15947#pragma omp distribute parallel for simd15948  for (int i = 0; i < 10; ++i) {15949#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}15950    for (int i = 0; i < 10; ++i)15951      ;15952  }15953#pragma omp target15954#pragma omp teams15955#pragma omp distribute parallel for simd15956  for (int i = 0; i < 10; ++i) {15957#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}15958    for (int i = 0; i < 10; ++i)15959      ;15960  }15961#pragma omp target15962#pragma omp teams15963#pragma omp distribute parallel for simd15964  for (int i = 0; i < 10; ++i) {15965#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}15966    for (int i = 0; i < 10; ++i)15967      ;15968  }15969#pragma omp target15970#pragma omp teams15971#pragma omp distribute parallel for simd15972  for (int i = 0; i < 10; ++i) {15973#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}15974    {15975      bar();15976    }15977  }15978#pragma omp target15979#pragma omp teams15980#pragma omp distribute parallel for simd15981  for (int i = 0; i < 10; ++i) {15982#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}15983    {15984      bar();15985    }15986  }15987#pragma omp target15988#pragma omp teams15989#pragma omp distribute parallel for simd15990  for (int i = 0; i < 10; ++i) {15991#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}15992    {15993      bar();15994    }15995  }15996#pragma omp target15997#pragma omp teams15998#pragma omp distribute parallel for simd15999  for (int i = 0; i < 10; ++i) {16000#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}16001    {16002      bar();16003    }16004  }16005#pragma omp target16006#pragma omp teams16007#pragma omp distribute parallel for simd16008  for (int i = 0; i < 10; ++i) {16009#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}16010    {16011      bar();16012    }16013  }16014#pragma omp target16015#pragma omp teams16016#pragma omp distribute parallel for simd16017  for (int i = 0; i < 10; ++i) {16018#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16019    {16020#pragma omp single16021      {16022        bar();16023      }16024    }16025  }16026#pragma omp target16027#pragma omp teams16028#pragma omp distribute parallel for simd16029  for (int i = 0; i < 10; ++i) {16030#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16031    for (int i = 0; i < 10; ++i)16032      ;16033  }16034#pragma omp target16035#pragma omp teams16036#pragma omp distribute parallel for simd16037  for (int i = 0; i < 10; ++i) {16038#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16039    for (int i = 0; i < 10; ++i)16040      ;16041  }16042#pragma omp target16043#pragma omp teams16044#pragma omp distribute parallel for simd16045  for (int i = 0; i < 10; ++i) {16046#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}16047    {16048      bar();16049    }16050  }16051#pragma omp target16052#pragma omp teams16053#pragma omp distribute parallel for simd16054  for (int i = 0; i < 10; ++i) {16055#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}16056    {16057      bar();16058    }16059  }16060#pragma omp target16061#pragma omp teams16062#pragma omp distribute parallel for simd16063  for (int i = 0; i < 10; ++i) {16064#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}16065    bar();16066  }16067#pragma omp target16068#pragma omp teams16069#pragma omp distribute parallel for simd16070  for (int i = 0; i < 10; ++i) {16071#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}16072    bar();16073  }16074#pragma omp target16075#pragma omp teams16076#pragma omp distribute parallel for simd16077  for (int i = 0; i < 10; ++i) {16078#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}16079    bar();16080  }16081#pragma omp target16082#pragma omp teams16083#pragma omp distribute parallel for simd16084  for (int i = 0; i < 10; ++i) {16085#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}16086    bar();16087  }16088#pragma omp target16089#pragma omp teams16090#pragma omp distribute parallel for simd16091  for (int i = 0; i < 10; ++i) {16092#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}16093    bar();16094  }16095#pragma omp target16096#pragma omp teams16097#pragma omp distribute parallel for simd16098  for (int i = 0; i < 10; ++i) {16099#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}16100    bar();16101  }16102#pragma omp target16103#pragma omp teams16104#pragma omp distribute parallel for simd16105  for (int i = 0; i < 10; ++i) {16106#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}16107    ++a;16108  }16109#pragma omp target16110#pragma omp teams16111#pragma omp distribute parallel for simd16112  for (int i = 0; i < 10; ++i) {16113#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}16114    ++a;16115  }16116#pragma omp target16117#pragma omp teams16118#pragma omp distribute parallel for simd16119  for (int i = 0; i < 10; ++i) {16120#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16121    ++a;16122  }16123#pragma omp target16124#pragma omp teams16125#pragma omp distribute parallel for simd16126  for (int i = 0; i < 10; ++i) {16127#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}16128    ++a;16129  }16130#pragma omp target16131#pragma omp teams16132#pragma omp distribute parallel for simd16133  for (int i = 0; i < 10; ++i) {16134#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16135    ++a;16136  }16137#pragma omp target16138#pragma omp teams16139#pragma omp distribute parallel for simd16140  for (int i = 0; i < 10; ++i) {16141#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16142    ++a;16143  }16144#pragma omp target16145#pragma omp teams16146#pragma omp distribute parallel for simd16147  for (int i = 0; i < 10; ++i) {16148#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16149    ++a;16150  }16151#pragma omp target16152#pragma omp teams16153#pragma omp distribute parallel for simd16154  for (int i = 0; i < 10; ++i) {16155#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16156    for (int i = 0; i < 10; ++i)16157      ;16158  }16159#pragma omp target16160#pragma omp teams16161#pragma omp distribute parallel for simd16162  for (int i = 0; i < 10; ++i) {16163#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16164    for (int i = 0; i < 10; ++i)16165      ;16166  }16167#pragma omp target16168#pragma omp teams16169#pragma omp distribute parallel for simd16170  for (int i = 0; i < 10; ++i) {16171#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16172    for (int i = 0; i < 10; ++i)16173      ;16174  }16175#pragma omp target16176#pragma omp teams16177#pragma omp distribute parallel for simd16178  for (int i = 0; i < 10; ++i) {16179#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16180    for (int i = 0; i < 10; ++i)16181      ;16182  }16183#pragma omp target16184#pragma omp teams16185#pragma omp distribute parallel for simd16186  for (int i = 0; i < 10; ++i) {16187#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16188    for (int i = 0; i < 10; ++i)16189      ;16190  }16191#pragma omp target16192#pragma omp teams16193#pragma omp distribute parallel for simd16194  for (int i = 0; i < 10; ++i) {16195#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16196    for (int i = 0; i < 10; ++i)16197      ;16198  }16199#pragma omp target16200#pragma omp teams16201#pragma omp distribute parallel for simd16202  for (int i = 0; i < 10; ++i) {16203#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}16204    a++;16205  }16206#pragma omp target16207#pragma omp teams16208#pragma omp distribute parallel for simd16209  for (int i = 0; i < 10; ++i) {16210#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16211    for (int i = 0; i < 10; ++i)16212      ;16213  }16214#pragma omp target16215#pragma omp teams16216#pragma omp distribute parallel for simd16217  for (int i = 0; i < 10; ++i) {16218#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16219    for (int i = 0; i < 10; ++i)16220      ;16221  }16222#pragma omp target16223#pragma omp teams16224#pragma omp distribute parallel for simd16225  for (int i = 0; i < 10; ++i) {16226#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16227    for (int i = 0; i < 10; ++i)16228      ;16229  }16230#pragma omp target16231#pragma omp teams16232#pragma omp distribute parallel for simd16233  for (int i = 0; i < 10; ++i) {16234#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16235    for (int i = 0; i < 10; ++i)16236      ;16237  }16238 16239// DISTRIBUTE SIMD DIRECTIVE16240#pragma omp target16241#pragma omp teams16242#pragma omp distribute simd16243  for (int i = 0; i < 10; ++i) {16244#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16245    for (int i = 0; i < 10; ++i)16246      ;16247  }16248#pragma omp target16249#pragma omp teams16250#pragma omp distribute simd16251  for (int i = 0; i < 10; ++i) {16252#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16253    for (int i = 0; i < 10; ++i)16254      ;16255  }16256#pragma omp target16257#pragma omp teams16258#pragma omp distribute simd16259  for (int i = 0; i < 10; ++i) {16260#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16261    for (int i = 0; i < 10; ++i)16262      ;16263  }16264#pragma omp target16265#pragma omp teams16266#pragma omp distribute simd16267  for (int i = 0; i < 10; ++i) {16268#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}16269    for (int i = 0; i < 10; ++i)16270      ;16271  }16272#pragma omp target16273#pragma omp teams16274#pragma omp distribute simd16275  for (int i = 0; i < 10; ++i) {16276#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16277    for (int i = 0; i < 10; ++i)16278      ;16279  }16280#pragma omp target16281#pragma omp teams16282#pragma omp distribute simd16283  for (int i = 0; i < 10; ++i) {16284#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16285    for (int i = 0; i < 10; ++i)16286      ;16287  }16288#pragma omp target16289#pragma omp teams16290#pragma omp distribute simd16291  for (int i = 0; i < 10; ++i) {16292#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}16293    {16294      bar();16295    }16296  }16297#pragma omp target16298#pragma omp teams16299#pragma omp distribute simd16300  for (int i = 0; i < 10; ++i) {16301#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}16302    {16303      bar();16304    }16305  }16306#pragma omp target16307#pragma omp teams16308#pragma omp distribute simd16309  for (int i = 0; i < 10; ++i) {16310#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}16311    {16312      bar();16313    }16314  }16315#pragma omp target16316#pragma omp teams16317#pragma omp distribute simd16318  for (int i = 0; i < 10; ++i) {16319#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}16320    {16321      bar();16322    }16323  }16324#pragma omp target16325#pragma omp teams16326#pragma omp distribute simd16327  for (int i = 0; i < 10; ++i) {16328#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}16329    {16330      bar();16331    }16332  }16333#pragma omp target16334#pragma omp teams16335#pragma omp distribute simd16336  for (int i = 0; i < 10; ++i) {16337#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16338    {16339#pragma omp single16340      {16341        bar();16342      }16343    }16344  }16345#pragma omp target16346#pragma omp teams16347#pragma omp distribute simd16348  for (int i = 0; i < 10; ++i) {16349#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16350    for (int i = 0; i < 10; ++i)16351      ;16352  }16353#pragma omp target16354#pragma omp teams16355#pragma omp distribute simd16356  for (int i = 0; i < 10; ++i) {16357#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16358    for (int i = 0; i < 10; ++i)16359      ;16360  }16361#pragma omp target16362#pragma omp teams16363#pragma omp distribute simd16364  for (int i = 0; i < 10; ++i) {16365#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}16366    {16367      bar();16368    }16369  }16370#pragma omp target16371#pragma omp teams16372#pragma omp distribute simd16373  for (int i = 0; i < 10; ++i) {16374#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}16375    {16376      bar();16377    }16378  }16379#pragma omp target16380#pragma omp teams16381#pragma omp distribute simd16382  for (int i = 0; i < 10; ++i) {16383#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}16384    bar();16385  }16386#pragma omp target16387#pragma omp teams16388#pragma omp distribute simd16389  for (int i = 0; i < 10; ++i) {16390#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}16391    bar();16392  }16393#pragma omp target16394#pragma omp teams16395#pragma omp distribute simd16396  for (int i = 0; i < 10; ++i) {16397#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}16398    bar();16399  }16400#pragma omp target16401#pragma omp teams16402#pragma omp distribute simd16403  for (int i = 0; i < 10; ++i) {16404#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}16405    bar();16406  }16407#pragma omp target16408#pragma omp teams16409#pragma omp distribute simd16410  for (int i = 0; i < 10; ++i) {16411#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}16412    bar();16413  }16414#pragma omp target16415#pragma omp teams16416#pragma omp distribute simd16417  for (int i = 0; i < 10; ++i) {16418#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}16419    bar();16420  }16421#pragma omp target16422#pragma omp teams16423#pragma omp distribute simd16424  for (int i = 0; i < 10; ++i) {16425#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}16426    ++a;16427  }16428#pragma omp target16429#pragma omp teams16430#pragma omp distribute simd16431  for (int i = 0; i < 10; ++i) {16432#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}16433    ++a;16434  }16435#pragma omp target16436#pragma omp teams16437#pragma omp distribute simd16438  for (int i = 0; i < 10; ++i) {16439#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16440    ++a;16441  }16442#pragma omp target16443#pragma omp teams16444#pragma omp distribute simd16445  for (int i = 0; i < 10; ++i) {16446#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}16447    ++a;16448  }16449#pragma omp target16450#pragma omp teams16451#pragma omp distribute simd16452  for (int i = 0; i < 10; ++i) {16453#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16454    ++a;16455  }16456#pragma omp target16457#pragma omp teams16458#pragma omp distribute simd16459  for (int i = 0; i < 10; ++i) {16460#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16461    ++a;16462  }16463#pragma omp target16464#pragma omp teams16465#pragma omp distribute simd16466  for (int i = 0; i < 10; ++i) {16467#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16468    ++a;16469  }16470#pragma omp target16471#pragma omp teams16472#pragma omp distribute simd16473  for (int i = 0; i < 10; ++i) {16474#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16475    for (int i = 0; i < 10; ++i)16476      ;16477  }16478#pragma omp target16479#pragma omp teams16480#pragma omp distribute simd16481  for (int i = 0; i < 10; ++i) {16482#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16483    for (int i = 0; i < 10; ++i)16484      ;16485  }16486#pragma omp target16487#pragma omp teams16488#pragma omp distribute simd16489  for (int i = 0; i < 10; ++i) {16490#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16491    for (int i = 0; i < 10; ++i)16492      ;16493  }16494#pragma omp target16495#pragma omp teams16496#pragma omp distribute simd16497  for (int i = 0; i < 10; ++i) {16498#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16499    for (int i = 0; i < 10; ++i)16500      ;16501  }16502#pragma omp target16503#pragma omp teams16504#pragma omp distribute simd16505  for (int i = 0; i < 10; ++i) {16506#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16507    for (int i = 0; i < 10; ++i)16508      ;16509  }16510#pragma omp target16511#pragma omp teams16512#pragma omp distribute simd16513  for (int i = 0; i < 10; ++i) {16514#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16515    for (int i = 0; i < 10; ++i)16516      ;16517  }16518#pragma omp target16519#pragma omp teams16520#pragma omp distribute simd16521  for (int i = 0; i < 10; ++i) {16522#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}16523    a++;16524  }16525#pragma omp target16526#pragma omp teams16527#pragma omp distribute simd16528  for (int i = 0; i < 10; ++i) {16529#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16530    for (int i = 0; i < 10; ++i)16531      ;16532  }16533#pragma omp target16534#pragma omp teams16535#pragma omp distribute simd16536  for (int i = 0; i < 10; ++i) {16537#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16538    for (int i = 0; i < 10; ++i)16539      ;16540  }16541#pragma omp target16542#pragma omp teams16543#pragma omp distribute simd16544  for (int i = 0; i < 10; ++i) {16545#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16546    for (int i = 0; i < 10; ++i)16547      ;16548  }16549#pragma omp target16550#pragma omp teams16551#pragma omp distribute simd16552  for (int i = 0; i < 10; ++i) {16553#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16554    for (int i = 0; i < 10; ++i)16555      ;16556  }16557 16558// TARGET SIMD DIRECTIVE16559#pragma omp target simd16560  for (int i = 0; i < 10; ++i) {16561#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16562    for (int i = 0; i < 10; ++i)16563      ;16564  }16565#pragma omp target simd16566  for (int i = 0; i < 10; ++i) {16567#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16568    for (int i = 0; i < 10; ++i)16569      ;16570  }16571#pragma omp target simd16572  for (int i = 0; i < 10; ++i) {16573#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16574    for (int i = 0; i < 10; ++i)16575      ;16576  }16577#pragma omp target simd16578  for (int i = 0; i < 10; ++i) {16579#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}16580    for (int i = 0; i < 10; ++i)16581      ;16582  }16583#pragma omp target simd16584  for (int i = 0; i < 10; ++i) {16585#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16586    for (int i = 0; i < 10; ++i)16587      ;16588  }16589#pragma omp target simd16590  for (int i = 0; i < 10; ++i) {16591#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16592    for (int i = 0; i < 10; ++i)16593      ;16594  }16595#pragma omp target simd16596  for (int i = 0; i < 10; ++i) {16597#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}16598    {16599      bar();16600    }16601  }16602#pragma omp target simd16603  for (int i = 0; i < 10; ++i) {16604#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}16605    {16606      bar();16607    }16608  }16609#pragma omp target simd16610  for (int i = 0; i < 10; ++i) {16611#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}16612    {16613      bar();16614    }16615  }16616#pragma omp target simd16617  for (int i = 0; i < 10; ++i) {16618#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}16619    {16620      bar();16621    }16622  }16623#pragma omp target simd16624  for (int i = 0; i < 10; ++i) {16625#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}16626    {16627      bar();16628    }16629  }16630#pragma omp target simd16631  for (int i = 0; i < 10; ++i) {16632#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16633    {16634#pragma omp single16635      {16636        bar();16637      }16638    }16639  }16640#pragma omp target simd16641  for (int i = 0; i < 10; ++i) {16642#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16643    for (int i = 0; i < 10; ++i)16644      ;16645  }16646#pragma omp target simd16647  for (int i = 0; i < 10; ++i) {16648#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16649    for (int i = 0; i < 10; ++i)16650      ;16651  }16652#pragma omp target simd16653  for (int i = 0; i < 10; ++i) {16654#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}16655    {16656      bar();16657    }16658  }16659#pragma omp target simd16660  for (int i = 0; i < 10; ++i) {16661#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}16662    {16663      bar();16664    }16665  }16666#pragma omp target simd16667  for (int i = 0; i < 10; ++i) {16668#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}16669    bar();16670  }16671#pragma omp target simd16672  for (int i = 0; i < 10; ++i) {16673#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}16674    bar();16675  }16676#pragma omp target simd16677  for (int i = 0; i < 10; ++i) {16678#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}} omp51-error {{exactly one of 'inclusive' or 'exclusive' clauses is expected}}16679    bar();16680  }16681#pragma omp target simd16682  for (int i = 0; i < 10; ++i) {16683#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}16684    bar();16685  }16686#pragma omp target simd16687  for (int i = 0; i < 10; ++i) {16688#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}16689    bar();16690  }16691#pragma omp target simd16692  for (int i = 0; i < 10; ++i) {16693#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}16694    bar();16695  }16696#pragma omp target simd16697  for (int i = 0; i < 10; ++i) {16698#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}16699    ++a;16700  }16701#pragma omp target simd16702  for (int i = 0; i < 10; ++i) {16703#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}16704    ++a;16705  }16706#pragma omp target simd16707  for (int i = 0; i < 10; ++i) {16708#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}16709    ++a;16710  }16711#pragma omp target simd16712  for (int i = 0; i < 10; ++i) {16713#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}16714    ++a;16715  }16716#pragma omp target simd16717  for (int i = 0; i < 10; ++i) {16718#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16719    ++a;16720  }16721#pragma omp target simd16722  for (int i = 0; i < 10; ++i) {16723#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16724    ++a;16725  }16726#pragma omp target simd16727  for (int i = 0; i < 10; ++i) {16728#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}16729    ++a;16730  }16731#pragma omp target simd16732  for (int i = 0; i < 10; ++i) {16733#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16734    for (int i = 0; i < 10; ++i)16735      ;16736  }16737#pragma omp target simd16738  for (int i = 0; i < 10; ++i) {16739#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16740    for (int i = 0; i < 10; ++i)16741      ;16742  }16743#pragma omp target simd16744  for (int i = 0; i < 10; ++i) {16745#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16746    for (int i = 0; i < 10; ++i)16747      ;16748  }16749#pragma omp target simd16750  for (int i = 0; i < 10; ++i) {16751#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16752    for (int i = 0; i < 10; ++i)16753      ;16754  }16755#pragma omp target simd16756  for (int i = 0; i < 10; ++i) {16757#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16758    for (int i = 0; i < 10; ++i)16759      ;16760  }16761#pragma omp target simd16762  for (int i = 0; i < 10; ++i) {16763#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16764    for (int i = 0; i < 10; ++i)16765      ;16766  }16767#pragma omp target simd16768  for (int i = 0; i < 10; ++i) {16769#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}16770    a++;16771  }16772#pragma omp target simd16773  for (int i = 0; i < 10; ++i) {16774#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}16775    for (int i = 0; i < 10; ++i)16776      ;16777  }16778#pragma omp target simd16779  for (int i = 0; i < 10; ++i) {16780#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}16781    for (int i = 0; i < 10; ++i)16782      ;16783  }16784#pragma omp target simd16785  for (int i = 0; i < 10; ++i) {16786#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16787    for (int i = 0; i < 10; ++i)16788      ;16789  }16790#pragma omp target simd16791  for (int i = 0; i < 10; ++i) {16792#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}16793    for (int i = 0; i < 10; ++i)16794      ;16795  }16796 16797// TEAMS DISTRIBUTE DIRECTIVE16798#pragma omp teams distribute // omp45-error {{orphaned 'omp teams distribute' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}16799  for (int i = 0; i < 10; ++i)16800    ;16801#pragma omp target16802#pragma omp teams distribute16803  for (int i = 0; i < 10; ++i) {16804#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?}}16805    for (int i = 0; i < 10; ++i)16806      ;16807  }16808#pragma omp target16809#pragma omp teams distribute16810  for (int i = 0; i < 10; ++i) {16811#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?}}16812    for (int i = 0; i < 10; ++i)16813      ;16814  }16815#pragma omp target16816#pragma omp teams distribute16817  for (int i = 0; i < 10; ++i) {16818#pragma omp for // OK16819    for (int i = 0; i < 10; ++i)16820      ;16821  }16822#pragma omp target16823#pragma omp teams distribute16824  for (int i = 0; i < 10; ++i) {16825#pragma omp simd // OK16826    for (int i = 0; i < 10; ++i)16827      ;16828  }16829#pragma omp target16830#pragma omp teams distribute16831  for (int i = 0; i < 10; ++i) {16832#pragma omp for simd // OK16833    for (int i = 0; i < 10; ++i)16834      ;16835  }16836#pragma omp target16837#pragma omp teams distribute16838  for (int i = 0; i < 10; ++i) {16839#pragma omp parallel // OK16840    for (int i = 0; i < 10; ++i)16841      ;16842  }16843#pragma omp target16844#pragma omp teams distribute16845  for (int i = 0; i < 10; ++i) {16846#pragma omp sections // OK16847    {16848      bar();16849    }16850  }16851#pragma omp target16852#pragma omp teams distribute16853  for (int i = 0; i < 10; ++i) {16854#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute region}}16855    {16856      bar();16857    }16858  }16859#pragma omp target16860#pragma omp teams distribute16861  for (int i = 0; i < 10; ++i) {16862#pragma omp single // OK16863    {16864      bar();16865    }16866  }16867#pragma omp target16868#pragma omp teams distribute16869  for (int i = 0; i < 10; ++i) {16870#pragma omp master // OK16871    {16872      bar();16873    }16874  }16875#pragma omp target16876#pragma omp teams distribute16877  for (int i = 0; i < 10; ++i) {16878#pragma omp critical // OK16879    {16880      bar();16881    }16882  }16883#pragma omp target16884#pragma omp teams distribute16885  for (int i = 0; i < 10; ++i) {16886#pragma omp parallel // OK16887    {16888#pragma omp single16889      {16890        bar();16891      }16892    }16893  }16894#pragma omp target16895#pragma omp teams distribute16896  for (int i = 0; i < 10; ++i) {16897#pragma omp parallel for // OK16898    for (int i = 0; i < 10; ++i)16899      ;16900  }16901#pragma omp target16902#pragma omp teams distribute16903  for (int i = 0; i < 10; ++i) {16904#pragma omp parallel for simd // OK16905    for (int i = 0; i < 10; ++i)16906      ;16907  }16908#pragma omp target16909#pragma omp teams distribute16910  for (int i = 0; i < 10; ++i) {16911#pragma omp parallel sections // OK16912    {16913      bar();16914    }16915  }16916#pragma omp target16917#pragma omp teams distribute16918  for (int i = 0; i < 10; ++i) {16919#pragma omp task // OK16920    {16921      bar();16922    }16923  }16924#pragma omp target16925#pragma omp teams distribute16926  for (int i = 0; i < 10; ++i) {16927#pragma omp taskyield // OK16928    bar();16929  }16930#pragma omp target16931#pragma omp teams distribute16932  for (int i = 0; i < 10; ++i) {16933#pragma omp barrier // OK16934    bar();16935  }16936#pragma omp target16937#pragma omp teams distribute16938  for (int i = 0; i < 10; ++i) {16939#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}16940    bar();16941  }16942#pragma omp target16943#pragma omp teams distribute16944  for (int i = 0; i < 10; ++i) {16945#pragma omp taskwait // OK16946    bar();16947  }16948#pragma omp target16949#pragma omp teams distribute16950  for (int i = 0; i < 10; ++i) {16951#pragma omp flush // OK16952    bar();16953  }16954#pragma omp target16955#pragma omp teams distribute16956  for (int i = 0; i < 10; ++i) {16957#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?}}16958    bar();16959  }16960#pragma omp target16961#pragma omp teams distribute16962  for (int i = 0; i < 10; ++i) {16963#pragma omp atomic // OK16964    ++a;16965  }16966#pragma omp target16967#pragma omp teams distribute16968  for (int i = 0; i < 10; ++i) {16969#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}16970    ++a;16971  }16972#pragma omp target16973#pragma omp teams distribute16974  for (int i = 0; i < 10; ++i) {16975#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target' region}}16976    ++a;16977  }16978#pragma omp target16979#pragma omp teams distribute16980  for (int i = 0; i < 10; ++i) {16981#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}16982    for (int i = 0; i < 10; ++i)16983      ;16984  }16985#pragma omp target16986#pragma omp teams distribute16987  for (int i = 0; i < 10; ++i) {16988#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}16989    ++a;16990  }16991#pragma omp target16992#pragma omp teams distribute16993  for (int i = 0; i < 10; ++i) {16994#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}16995    ++a;16996  }16997#pragma omp target16998#pragma omp teams distribute16999  for (int i = 0; i < 10; ++i) {17000#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?}}17001    ++a;17002  }17003#pragma omp target17004#pragma omp teams distribute17005  for (int i = 0; i < 10; ++i) {17006#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}17007    ++a;17008  }17009#pragma omp target17010#pragma omp teams distribute17011  for (int i = 0; i < 10; ++i) {17012#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?}}17013    for (int i = 0; i < 10; ++i)17014      ++a;17015  }17016#pragma omp target17017#pragma omp teams distribute17018  for (int i = 0; i < 10; ++i) {17019#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}17020    for (int i = 0; i < 10; ++i)17021      ++a;17022  }17023#pragma omp target17024#pragma omp teams distribute17025  for (int i = 0; i < 10; ++i) {17026#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?}}17027    for (int i = 0; i < 10; ++i)17028      ++a;17029  }17030#pragma omp target17031#pragma omp teams distribute17032  for (int i = 0; i < 10; ++i) {17033#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?}}17034    for (int i = 0; i < 10; ++i)17035      ++a;17036  }17037#pragma omp target17038#pragma omp teams distribute17039  for (int i = 0; i < 10; ++i) {17040#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?}}17041    for (int i = 0; i < 10; ++i)17042      ++a;17043  }17044#pragma omp target17045#pragma omp teams distribute17046  for (int i = 0; i < 10; ++i) {17047#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?}}17048    for (int i = 0; i < 10; ++i)17049      ++a;17050  }17051#pragma omp target17052#pragma omp teams distribute17053  for (int i = 0; i < 10; ++i) {17054#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}17055    ++a;17056  }17057#pragma omp target17058#pragma omp teams distribute17059  for (int i = 0; i < 10; ++i) {17060#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}17061    for (int i = 0; i < 10; ++i)17062      ++a;17063  }17064#pragma omp target17065#pragma omp teams distribute17066  for (int i = 0; i < 10; ++i) {17067#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}17068    for (int i = 0; i < 10; ++i)17069      ++a;17070  }17071#pragma omp target17072#pragma omp teams distribute17073  for (int i = 0; i < 10; ++i) {17074#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}17075    for (int i = 0; i < 10; ++i)17076      ++a;17077  }17078#pragma omp target17079#pragma omp teams distribute17080  for (int i = 0; i < 10; ++i) {17081#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}17082    for (int i = 0; i < 10; ++i)17083      ++a;17084  }17085 17086// TEAMS DISTRIBUTE SIMD DIRECTIVE17087#pragma omp teams distribute simd // omp45-error {{orphaned 'omp teams distribute simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}17088  for (int i = 0; i < 10; ++i)17089    ;17090#pragma omp target17091#pragma omp teams distribute simd17092  for (int i = 0; i < 10; ++i) {17093#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17094    for (int i = 0; i < 10; ++i)17095      ;17096  }17097#pragma omp target17098#pragma omp teams distribute simd17099  for (int i = 0; i < 10; ++i) {17100#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}17101    for (int i = 0; i < 10; ++i)17102      ;17103  }17104#pragma omp target17105#pragma omp teams distribute simd17106  for (int i = 0; i < 10; ++i) {17107#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17108    for (int i = 0; i < 10; ++i)17109      ;17110  }17111#pragma omp target17112#pragma omp teams distribute simd17113  for (int i = 0; i < 10; ++i) {17114#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}17115    for (int i = 0; i < 10; ++i)17116      ;17117  }17118#pragma omp target17119#pragma omp teams distribute simd17120  for (int i = 0; i < 10; ++i) {17121#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17122    for (int i = 0; i < 10; ++i)17123      ;17124  }17125#pragma omp target17126#pragma omp teams distribute simd17127  for (int i = 0; i < 10; ++i) {17128#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}17129    for (int i = 0; i < 10; ++i)17130      ;17131  }17132#pragma omp target17133#pragma omp teams distribute simd17134  for (int i = 0; i < 10; ++i) {17135#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}17136    {17137      bar();17138    }17139  }17140#pragma omp target17141#pragma omp teams distribute simd17142  for (int i = 0; i < 10; ++i) {17143#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}17144    {17145      bar();17146    }17147  }17148#pragma omp target17149#pragma omp teams distribute simd17150  for (int i = 0; i < 10; ++i) {17151#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}17152    {17153      bar();17154    }17155  }17156#pragma omp target17157#pragma omp teams distribute simd17158  for (int i = 0; i < 10; ++i) {17159#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}17160    {17161      bar();17162    }17163  }17164#pragma omp target17165#pragma omp teams distribute simd17166  for (int i = 0; i < 10; ++i) {17167#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}17168    {17169      bar();17170    }17171  }17172#pragma omp target17173#pragma omp teams distribute simd17174  for (int i = 0; i < 10; ++i) {17175#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}17176    {17177#pragma omp single17178      {17179        bar();17180      }17181    }17182  }17183#pragma omp target17184#pragma omp teams distribute simd17185  for (int i = 0; i < 10; ++i) {17186#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17187    for (int i = 0; i < 10; ++i)17188      ;17189  }17190#pragma omp target17191#pragma omp teams distribute simd17192  for (int i = 0; i < 10; ++i) {17193#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17194    for (int i = 0; i < 10; ++i)17195      ;17196  }17197#pragma omp target17198#pragma omp teams distribute simd17199  for (int i = 0; i < 10; ++i) {17200#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}17201    {17202      bar();17203    }17204  }17205#pragma omp target17206#pragma omp teams distribute simd17207  for (int i = 0; i < 10; ++i) {17208#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}17209    {17210      bar();17211    }17212  }17213#pragma omp target17214#pragma omp teams distribute simd17215  for (int i = 0; i < 10; ++i) {17216#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}17217    bar();17218  }17219#pragma omp target17220#pragma omp teams distribute simd17221  for (int i = 0; i < 10; ++i) {17222#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}17223    bar();17224  }17225#pragma omp target17226#pragma omp teams distribute simd17227  for (int i = 0; i < 10; ++i) {17228#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}17229    bar();17230  }17231#pragma omp target17232#pragma omp teams distribute simd17233  for (int i = 0; i < 10; ++i) {17234#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}17235    bar();17236  }17237#pragma omp target17238#pragma omp teams distribute simd17239  for (int i = 0; i < 10; ++i) {17240#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}17241    bar();17242  }17243#pragma omp target17244#pragma omp teams distribute simd17245  for (int i = 0; i < 10; ++i) {17246#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}17247    bar();17248  }17249#pragma omp target17250#pragma omp teams distribute simd17251  for (int i = 0; i < 10; ++i) {17252#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}17253    ++a;17254  }17255#pragma omp target17256#pragma omp teams distribute simd17257  for (int i = 0; i < 10; ++i) {17258#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}17259    ++a;17260  }17261#pragma omp target17262#pragma omp teams distribute simd17263  for (int i = 0; i < 10; ++i) {17264#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}17265    ++a;17266  }17267#pragma omp target17268#pragma omp teams distribute simd17269  for (int i = 0; i < 10; ++i) {17270#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17271    for (int i = 0; i < 10; ++i)17272      ;17273  }17274#pragma omp target17275#pragma omp teams distribute simd17276  for (int i = 0; i < 10; ++i) {17277#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}17278    ++a;17279  }17280#pragma omp target17281#pragma omp teams distribute simd17282  for (int i = 0; i < 10; ++i) {17283#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}17284    ++a;17285  }17286#pragma omp target17287#pragma omp teams distribute simd17288  for (int i = 0; i < 10; ++i) {17289#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}17290    ++a;17291  }17292#pragma omp target17293#pragma omp teams distribute simd17294  for (int i = 0; i < 10; ++i) {17295#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}17296    ++a;17297  }17298#pragma omp target17299#pragma omp teams distribute simd17300  for (int i = 0; i < 10; ++i) {17301#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17302    for (int i = 0; i < 10; ++i)17303      ++a;17304  }17305#pragma omp target17306#pragma omp teams distribute simd17307  for (int i = 0; i < 10; ++i) {17308#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17309    for (int i = 0; i < 10; ++i)17310      ++a;17311  }17312#pragma omp target17313#pragma omp teams distribute simd17314  for (int i = 0; i < 10; ++i) {17315#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}17316    for (int i = 0; i < 10; ++i)17317      ++a;17318  }17319#pragma omp target17320#pragma omp teams distribute simd17321  for (int i = 0; i < 10; ++i) {17322#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17323    for (int i = 0; i < 10; ++i)17324      ++a;17325  }17326#pragma omp target17327#pragma omp teams distribute simd17328  for (int i = 0; i < 10; ++i) {17329#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17330    for (int i = 0; i < 10; ++i)17331      ++a;17332  }17333#pragma omp target17334#pragma omp teams distribute simd17335  for (int i = 0; i < 10; ++i) {17336#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17337    for (int i = 0; i < 10; ++i)17338      ++a;17339  }17340#pragma omp target17341#pragma omp teams distribute simd17342  for (int i = 0; i < 10; ++i) {17343#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}17344    ++a;17345  }17346#pragma omp target17347#pragma omp teams distribute simd17348  for (int i = 0; i < 10; ++i) {17349#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}17350    for (int i = 0; i < 10; ++i)17351      ++a;17352  }17353#pragma omp target17354#pragma omp teams distribute simd17355  for (int i = 0; i < 10; ++i) {17356#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17357    for (int i = 0; i < 10; ++i)17358      ++a;17359  }17360#pragma omp target17361#pragma omp teams distribute simd17362  for (int i = 0; i < 10; ++i) {17363#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17364    for (int i = 0; i < 10; ++i)17365      ++a;17366  }17367#pragma omp target17368#pragma omp teams distribute simd17369  for (int i = 0; i < 10; ++i) {17370#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17371    for (int i = 0; i < 10; ++i)17372      ++a;17373  }17374 17375// TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE17376#pragma omp teams distribute parallel for simd // omp45-error {{orphaned 'omp teams distribute parallel for simd' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}17377  for (int i = 0; i < 10; ++i)17378    ;17379#pragma omp target17380#pragma omp teams distribute parallel for simd17381  for (int i = 0; i < 10; ++i) {17382#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17383    for (int i = 0; i < 10; ++i)17384      ;17385  }17386#pragma omp target17387#pragma omp teams distribute parallel for simd17388  for (int i = 0; i < 10; ++i) {17389#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}17390    for (int i = 0; i < 10; ++i)17391      ;17392  }17393#pragma omp target17394#pragma omp teams distribute parallel for simd17395  for (int i = 0; i < 10; ++i) {17396#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17397    for (int i = 0; i < 10; ++i)17398      ;17399  }17400#pragma omp target17401#pragma omp teams distribute parallel for simd17402  for (int i = 0; i < 10; ++i) {17403#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}17404    for (int i = 0; i < 10; ++i)17405      ;17406  }17407#pragma omp target17408#pragma omp teams distribute parallel for simd17409  for (int i = 0; i < 10; ++i) {17410#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17411    for (int i = 0; i < 10; ++i)17412      ;17413  }17414#pragma omp target17415#pragma omp teams distribute parallel for simd17416  for (int i = 0; i < 10; ++i) {17417#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}17418    for (int i = 0; i < 10; ++i)17419      ;17420  }17421#pragma omp target17422#pragma omp teams distribute parallel for simd17423  for (int i = 0; i < 10; ++i) {17424#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}17425    {17426      bar();17427    }17428  }17429#pragma omp target17430#pragma omp teams distribute parallel for simd17431  for (int i = 0; i < 10; ++i) {17432#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}17433    {17434      bar();17435    }17436  }17437#pragma omp target17438#pragma omp teams distribute parallel for simd17439  for (int i = 0; i < 10; ++i) {17440#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}17441    {17442      bar();17443    }17444  }17445#pragma omp target17446#pragma omp teams distribute parallel for simd17447  for (int i = 0; i < 10; ++i) {17448#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}17449    {17450      bar();17451    }17452  }17453#pragma omp target17454#pragma omp teams distribute parallel for simd17455  for (int i = 0; i < 10; ++i) {17456#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}17457    {17458      bar();17459    }17460  }17461#pragma omp target17462#pragma omp teams distribute parallel for simd17463  for (int i = 0; i < 10; ++i) {17464#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}17465    {17466#pragma omp single17467      {17468        bar();17469      }17470    }17471  }17472#pragma omp target17473#pragma omp teams distribute parallel for simd17474  for (int i = 0; i < 10; ++i) {17475#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17476    for (int i = 0; i < 10; ++i)17477      ;17478  }17479#pragma omp target17480#pragma omp teams distribute parallel for simd17481  for (int i = 0; i < 10; ++i) {17482#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17483    for (int i = 0; i < 10; ++i)17484      ;17485  }17486#pragma omp target17487#pragma omp teams distribute parallel for simd17488  for (int i = 0; i < 10; ++i) {17489#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}17490    {17491      bar();17492    }17493  }17494#pragma omp target17495#pragma omp teams distribute parallel for simd17496  for (int i = 0; i < 10; ++i) {17497#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}17498    {17499      bar();17500    }17501  }17502#pragma omp target17503#pragma omp teams distribute parallel for simd17504  for (int i = 0; i < 10; ++i) {17505#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}17506    bar();17507  }17508#pragma omp target17509#pragma omp teams distribute parallel for simd17510  for (int i = 0; i < 10; ++i) {17511#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}17512    bar();17513  }17514#pragma omp target17515#pragma omp teams distribute parallel for simd17516  for (int i = 0; i < 10; ++i) {17517#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}17518    bar();17519  }17520#pragma omp target17521#pragma omp teams distribute parallel for simd17522  for (int i = 0; i < 10; ++i) {17523#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}17524    bar();17525  }17526#pragma omp target17527#pragma omp teams distribute parallel for simd17528  for (int i = 0; i < 10; ++i) {17529#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}17530    bar();17531  }17532#pragma omp target17533#pragma omp teams distribute parallel for simd17534  for (int i = 0; i < 10; ++i) {17535#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}17536    bar();17537  }17538#pragma omp target17539#pragma omp teams distribute parallel for simd17540  for (int i = 0; i < 10; ++i) {17541#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}17542    ++a;17543  }17544#pragma omp target17545#pragma omp teams distribute parallel for simd17546  for (int i = 0; i < 10; ++i) {17547#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}17548    ++a;17549  }17550#pragma omp target17551#pragma omp teams distribute parallel for simd17552  for (int i = 0; i < 10; ++i) {17553#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}17554    ++a;17555  }17556#pragma omp target17557#pragma omp teams distribute parallel for simd17558  for (int i = 0; i < 10; ++i) {17559#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17560    for (int i = 0; i < 10; ++i)17561      ;17562  }17563#pragma omp target17564#pragma omp teams distribute parallel for simd17565  for (int i = 0; i < 10; ++i) {17566#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}17567    ++a;17568  }17569#pragma omp target17570#pragma omp teams distribute parallel for simd17571  for (int i = 0; i < 10; ++i) {17572#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}17573    ++a;17574  }17575#pragma omp target17576#pragma omp teams distribute parallel for simd17577  for (int i = 0; i < 10; ++i) {17578#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}17579    ++a;17580  }17581#pragma omp target17582#pragma omp teams distribute parallel for simd17583  for (int i = 0; i < 10; ++i) {17584#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}17585    ++a;17586  }17587#pragma omp target17588#pragma omp teams distribute parallel for simd17589  for (int i = 0; i < 10; ++i) {17590#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17591    for (int i = 0; i < 10; ++i)17592      ++a;17593  }17594#pragma omp target17595#pragma omp teams distribute parallel for simd17596  for (int i = 0; i < 10; ++i) {17597#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17598    for (int i = 0; i < 10; ++i)17599      ++a;17600  }17601#pragma omp target17602#pragma omp teams distribute parallel for simd17603  for (int i = 0; i < 10; ++i) {17604#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}17605    for (int i = 0; i < 10; ++i)17606      ++a;17607  }17608#pragma omp target17609#pragma omp teams distribute parallel for simd17610  for (int i = 0; i < 10; ++i) {17611#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17612    for (int i = 0; i < 10; ++i)17613      ++a;17614  }17615#pragma omp target17616#pragma omp teams distribute parallel for simd17617  for (int i = 0; i < 10; ++i) {17618#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17619    for (int i = 0; i < 10; ++i)17620      ++a;17621  }17622#pragma omp target17623#pragma omp teams distribute parallel for simd17624  for (int i = 0; i < 10; ++i) {17625#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17626    for (int i = 0; i < 10; ++i)17627      ++a;17628  }17629#pragma omp target17630#pragma omp teams distribute parallel for simd17631  for (int i = 0; i < 10; ++i) {17632#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}17633    ++a;17634  }17635#pragma omp target17636#pragma omp teams distribute parallel for simd17637  for (int i = 0; i < 10; ++i) {17638#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}17639    for (int i = 0; i < 10; ++i)17640      ++a;17641  }17642#pragma omp target17643#pragma omp teams distribute parallel for simd17644  for (int i = 0; i < 10; ++i) {17645#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}17646    for (int i = 0; i < 10; ++i)17647      ++a;17648  }17649#pragma omp target17650#pragma omp teams distribute parallel for simd17651  for (int i = 0; i < 10; ++i) {17652#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17653    for (int i = 0; i < 10; ++i)17654      ++a;17655  }17656#pragma omp target17657#pragma omp teams distribute parallel for simd17658  for (int i = 0; i < 10; ++i) {17659#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}17660    for (int i = 0; i < 10; ++i)17661      ++a;17662  }17663 17664// TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE17665#pragma omp teams distribute parallel for // omp45-error {{orphaned 'omp teams distribute parallel for' directives are prohibited; perhaps you forget to enclose the directive into a target region?}}17666  for (int i = 0; i < 10; ++i)17667    ;17668#pragma omp target17669#pragma omp teams distribute parallel for17670  for (int i = 0; i < 10; ++i) {17671#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?}}17672    for (int i = 0; i < 10; ++i)17673      ;17674  }17675#pragma omp target17676#pragma omp teams distribute parallel for17677  for (int i = 0; i < 10; ++i) {17678#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?}}17679    for (int i = 0; i < 10; ++i)17680      ;17681  }17682#pragma omp target17683#pragma omp teams distribute parallel for17684  for (int i = 0; i < 10; ++i) {17685#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?}}17686    for (int i = 0; i < 10; ++i)17687      ;17688  }17689#pragma omp target17690#pragma omp teams distribute parallel for17691  for (int i = 0; i < 10; ++i) {17692#pragma omp simd // OK17693    for (int i = 0; i < 10; ++i)17694      ;17695  }17696#pragma omp target17697#pragma omp teams distribute parallel for17698  for (int i = 0; i < 10; ++i) {17699#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?}}17700    for (int i = 0; i < 10; ++i)17701      ;17702  }17703#pragma omp target17704#pragma omp teams distribute parallel for17705  for (int i = 0; i < 10; ++i) {17706#pragma omp parallel // OK17707    for (int i = 0; i < 10; ++i)17708      ;17709  }17710#pragma omp target17711#pragma omp teams distribute parallel for17712  for (int i = 0; i < 10; ++i) {17713#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?}}17714    {17715      bar();17716    }17717  }17718#pragma omp target17719#pragma omp teams distribute parallel for17720  for (int i = 0; i < 10; ++i) {17721#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a teams distribute parallel for region}}17722    {17723      bar();17724    }17725  }17726#pragma omp target17727#pragma omp teams distribute parallel for17728  for (int i = 0; i < 10; ++i) {17729#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?}}17730    {17731      bar();17732    }17733  }17734#pragma omp target17735#pragma omp teams distribute parallel for17736  for (int i = 0; i < 10; ++i) {17737#pragma omp master // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}17738    {17739      bar();17740    }17741  }17742#pragma omp target17743#pragma omp teams distribute parallel for17744  for (int i = 0; i < 10; ++i) {17745#pragma omp critical // OK17746    {17747      bar();17748    }17749  }17750#pragma omp target17751#pragma omp teams distribute parallel for17752  for (int i = 0; i < 10; ++i) {17753#pragma omp parallel // OK17754    {17755#pragma omp single17756      {17757        bar();17758      }17759    }17760  }17761#pragma omp target17762#pragma omp teams distribute parallel for17763  for (int i = 0; i < 10; ++i) {17764#pragma omp parallel for // OK17765    for (int i = 0; i < 10; ++i)17766      ;17767  }17768#pragma omp target17769#pragma omp teams distribute parallel for17770  for (int i = 0; i < 10; ++i) {17771#pragma omp parallel for simd // OK17772    for (int i = 0; i < 10; ++i)17773      ;17774  }17775#pragma omp target17776#pragma omp teams distribute parallel for17777  for (int i = 0; i < 10; ++i) {17778#pragma omp parallel sections // OK17779    {17780      bar();17781    }17782  }17783#pragma omp target17784#pragma omp teams distribute parallel for17785  for (int i = 0; i < 10; ++i) {17786#pragma omp task // OK17787    {17788      bar();17789    }17790  }17791#pragma omp target17792#pragma omp teams distribute parallel for17793  for (int i = 0; i < 10; ++i) {17794#pragma omp taskyield // OK17795    bar();17796  }17797#pragma omp target17798#pragma omp teams distribute parallel for17799  for (int i = 0; i < 10; ++i) {17800#pragma omp barrier // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}17801    bar();17802  }17803#pragma omp target17804#pragma omp teams distribute parallel for17805  for (int i = 0; i < 10; ++i) {17806#pragma omp scan // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}17807    bar();17808  }17809#pragma omp target17810#pragma omp teams distribute parallel for17811  for (int i = 0; i < 10; ++i) {17812#pragma omp taskwait // OK17813    bar();17814  }17815#pragma omp target17816#pragma omp teams distribute parallel for17817  for (int i = 0; i < 10; ++i) {17818#pragma omp flush // OK17819    bar();17820  }17821#pragma omp target17822#pragma omp teams distribute parallel for17823  for (int i = 0; i < 10; ++i) {17824#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?}}17825    bar();17826  }17827#pragma omp target17828#pragma omp teams distribute parallel for17829  for (int i = 0; i < 10; ++i) {17830#pragma omp atomic // OK17831    ++a;17832  }17833#pragma omp target17834#pragma omp teams distribute parallel for17835  for (int i = 0; i < 10; ++i) {17836#pragma omp target // expected-error {{region cannot be nested inside 'target' region}}17837    ++a;17838  }17839#pragma omp target17840#pragma omp teams distribute parallel for17841  for (int i = 0; i < 10; ++i) {17842#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target' region}}17843    ++a;17844  }17845#pragma omp target17846#pragma omp teams distribute parallel for17847  for (int i = 0; i < 10; ++i) {17848#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target' region}}17849    for (int i = 0; i < 10; ++i)17850      ;17851  }17852#pragma omp target17853#pragma omp teams distribute parallel for17854  for (int i = 0; i < 10; ++i) {17855#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target' region}}17856    ++a;17857  }17858#pragma omp target17859#pragma omp teams distribute parallel for17860  for (int i = 0; i < 10; ++i) {17861#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target' region}}17862    ++a;17863  }17864#pragma omp target17865#pragma omp teams distribute parallel for17866  for (int i = 0; i < 10; ++i) {17867#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?}}17868    ++a;17869  }17870#pragma omp target17871#pragma omp teams distribute parallel for17872  for (int i = 0; i < 10; ++i) {17873#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target' region}}17874    ++a;17875  }17876#pragma omp target17877#pragma omp teams distribute parallel for17878  for (int i = 0; i < 10; ++i) {17879#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?}}17880    for (int i = 0; i < 10; ++i)17881      ++a;17882  }17883#pragma omp target17884#pragma omp teams distribute parallel for17885  for (int i = 0; i < 10; ++i) {17886#pragma omp target simd // expected-error {{region cannot be nested inside 'target' region}}17887    for (int i = 0; i < 10; ++i)17888      ++a;17889  }17890#pragma omp target17891#pragma omp teams distribute parallel for17892  for (int i = 0; i < 10; ++i) {17893#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?}}17894    for (int i = 0; i < 10; ++i)17895      ++a;17896  }17897#pragma omp target17898#pragma omp teams distribute parallel for17899  for (int i = 0; i < 10; ++i) {17900#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?}}17901    for (int i = 0; i < 10; ++i)17902      ++a;17903  }17904#pragma omp target17905#pragma omp teams distribute parallel for17906  for (int i = 0; i < 10; ++i) {17907#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?}}17908    for (int i = 0; i < 10; ++i)17909      ++a;17910  }17911#pragma omp target17912#pragma omp teams distribute parallel for17913  for (int i = 0; i < 10; ++i) {17914#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?}}17915    for (int i = 0; i < 10; ++i)17916      ++a;17917  }17918#pragma omp target17919#pragma omp teams distribute parallel for17920  for (int i = 0; i < 10; ++i) {17921#pragma omp target teams // expected-error {{region cannot be nested inside 'target' region}}17922    ++a;17923  }17924#pragma omp target17925#pragma omp teams distribute parallel for17926  for (int i = 0; i < 10; ++i) {17927#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target' region}}17928    for (int i = 0; i < 10; ++i)17929      ++a;17930  }17931#pragma omp target17932#pragma omp teams distribute parallel for17933  for (int i = 0; i < 10; ++i) {17934#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target' region}}17935    for (int i = 0; i < 10; ++i)17936      ++a;17937  }17938#pragma omp target17939#pragma omp teams distribute parallel for17940  for (int i = 0; i < 10; ++i) {17941#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target' region}}17942    for (int i = 0; i < 10; ++i)17943      ++a;17944  }17945#pragma omp target17946#pragma omp teams distribute parallel for17947  for (int i = 0; i < 10; ++i) {17948#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target' region}}17949    for (int i = 0; i < 10; ++i)17950      ++a;17951  }17952 17953// TARGET TEAMS DIRECTIVE17954#pragma omp target teams17955#pragma omp parallel17956  bar();17957#pragma omp target teams17958#pragma omp for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}17959  for (int i = 0; i < 10; ++i)17960    ;17961#pragma omp target teams17962#pragma omp simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp simd' directive into a parallel region?}}17963  for (int i = 0; i < 10; ++i)17964    ;17965#pragma omp target teams17966#pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}17967  for (int i = 0; i < 10; ++i)17968    ;17969#pragma omp target teams17970#pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}17971  {17972    bar();17973  }17974#pragma omp target teams17975#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams region}}17976  {17977    bar();17978  }17979#pragma omp target teams17980#pragma omp single // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp single' directive into a parallel region?}}17981  bar();17982 17983#pragma omp target teams17984#pragma omp master // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp master' directive into a parallel region?}}17985  {17986    bar();17987  }17988#pragma omp target teams17989#pragma omp critical // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp critical' directive into a parallel region?}}17990  {17991    bar();17992  }17993#pragma omp target teams17994#pragma omp parallel for17995  for (int i = 0; i < 10; ++i)17996    ;17997#pragma omp target teams17998#pragma omp parallel for simd17999  for (int i = 0; i < 10; ++i)18000    ;18001#pragma omp target teams18002#pragma omp parallel sections18003  {18004    bar();18005  }18006#pragma omp target teams18007#pragma omp task // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp task' directive into a parallel region?}}18008  {18009    bar();18010  }18011#pragma omp target teams18012  {18013#pragma omp taskyield // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskyield' directive into a parallel region?}}18014    bar();18015  }18016#pragma omp target teams18017  {18018#pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp barrier' directive into a parallel region?}}18019    bar();18020  }18021#pragma omp target teams18022  {18023#pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}18024    bar();18025  }18026#pragma omp target teams18027  {18028#pragma omp taskwait // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskwait' directive into a parallel region?}}18029    bar();18030  }18031#pragma omp target teams18032  {18033#pragma omp flush // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp flush' directive into a parallel region?}}18034    bar();18035  }18036#pragma omp target teams18037  {18038#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}18039    bar();18040  }18041#pragma omp target teams18042  {18043#pragma omp atomic // omp-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp atomic' directive into a parallel region?}}18044    ++a;18045  }18046#pragma omp target teams18047  {18048#pragma omp target // expected-error {{region cannot be nested inside 'target teams' region}}18049    ++a;18050  }18051#pragma omp target teams18052  {18053#pragma omp target parallel // expected-error {{region cannot be nested inside 'target teams' region}}18054    ++a;18055  }18056#pragma omp target teams18057#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams' region}}18058  for (int i = 0; i < 10; ++i)18059    ;18060#pragma omp target teams18061  {18062#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams' region}}18063  }18064#pragma omp target teams18065  {18066#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams' region}}18067  }18068#pragma omp target teams18069  {18070#pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}18071    ++a;18072  }18073#pragma omp target teams18074  {18075#pragma omp taskloop // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp taskloop' directive into a parallel region?}}18076  for (int i = 0; i < 10; ++i)18077    ++a;18078  }18079#pragma omp target teams18080#pragma omp distribute18081  for (int i = 0; i < 10; ++i)18082    ;18083#pragma omp target teams18084  {18085#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams' region}}18086    ++a;18087  }18088#pragma omp target teams18089#pragma omp distribute parallel for18090  for (int i = 0; i < 10; ++i)18091    ;18092#pragma omp target teams18093  {18094#pragma omp distribute parallel for18095  for (int i = 0; i < 10; ++i)18096    ;18097#pragma omp distribute parallel for18098  for (int j = 0; j < 10; ++j)18099    ;18100  }18101#pragma omp target teams18102  {18103#pragma omp distribute parallel for simd18104  for (int i = 0; i < 10; ++i)18105    ;18106#pragma omp distribute parallel for simd18107  for (int j = 0; j < 10; ++j)18108    ;18109  }18110#pragma omp target teams18111  {18112#pragma omp distribute simd18113  for (int i = 0; i < 10; ++i)18114    ;18115#pragma omp distribute simd18116  for (int j = 0; j < 10; ++j)18117    ;18118  }18119#pragma omp target teams18120  {18121#pragma omp target simd // expected-error {{region cannot be nested inside 'target teams' region}}18122  for (int i = 0; i < 10; ++i)18123    ;18124  }18125#pragma omp target teams18126  {18127#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}18128  for (int i = 0; i < 10; ++i)18129    ;18130  }18131#pragma omp target teams18132  {18133#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}18134  for (int i = 0; i < 10; ++i)18135    ;18136  }18137#pragma omp target teams18138  {18139#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}18140  for (int i = 0; i < 10; ++i)18141    ;18142  }18143#pragma omp target teams18144  {18145#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}18146  for (int i = 0; i < 10; ++i)18147    ;18148  }18149#pragma omp target teams18150  {18151#pragma omp target teams // expected-error {{region cannot be nested inside 'target teams' region}}18152    a++;18153  }18154#pragma omp target teams18155  {18156#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams' region}}18157  for (int i = 0; i < 10; ++i)18158    ;18159  }18160#pragma omp target teams18161  {18162#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams' region}}18163  for (int i = 0; i < 10; ++i)18164    ;18165  }18166#pragma omp target teams18167  {18168#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams' region}}18169  for (int i = 0; i < 10; ++i)18170    ;18171  }18172#pragma omp target teams18173  {18174#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams' region}}18175  for (int i = 0; i < 10; ++i)18176    ;18177  }18178 18179// TARGET TEAMS DISTRIBUTE DIRECTIVE18180#pragma omp target teams distribute // OK18181  for (int i = 0; i < 10; ++i)18182    ;18183#pragma omp target teams distribute18184  for (int i = 0; i < 10; ++i) {18185#pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}18186    for (int i = 0; i < 10; ++i)18187      ;18188  }18189#pragma omp target teams distribute18190  for (int i = 0; i < 10; ++i) {18191#pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}18192    for (int i = 0; i < 10; ++i)18193      ;18194  }18195#pragma omp target teams distribute18196  for (int i = 0; i < 10; ++i) {18197#pragma omp for // OK18198    for (int i = 0; i < 10; ++i)18199      ;18200  }18201#pragma omp target teams distribute18202  for (int i = 0; i < 10; ++i) {18203#pragma omp simd // OK18204    for (int i = 0; i < 10; ++i)18205      ;18206  }18207#pragma omp target teams distribute18208  for (int i = 0; i < 10; ++i) {18209#pragma omp for simd // OK18210    for (int i = 0; i < 10; ++i)18211      ;18212  }18213#pragma omp target teams distribute18214  for (int i = 0; i < 10; ++i) {18215#pragma omp parallel // OK18216    for (int i = 0; i < 10; ++i)18217      ;18218  }18219#pragma omp target teams distribute18220  for (int i = 0; i < 10; ++i) {18221#pragma omp sections // OK18222    {18223      bar();18224    }18225  }18226#pragma omp target teams distribute18227  for (int i = 0; i < 10; ++i) {18228#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute region}}18229    {18230      bar();18231    }18232  }18233#pragma omp target teams distribute18234  for (int i = 0; i < 10; ++i) {18235#pragma omp single // OK18236    {18237      bar();18238    }18239  }18240#pragma omp target teams distribute18241  for (int i = 0; i < 10; ++i) {18242#pragma omp master // OK18243    {18244      bar();18245    }18246  }18247#pragma omp target teams distribute18248  for (int i = 0; i < 10; ++i) {18249#pragma omp critical // OK18250    {18251      bar();18252    }18253  }18254#pragma omp target teams distribute18255  for (int i = 0; i < 10; ++i) {18256#pragma omp parallel // OK18257    {18258#pragma omp single18259      {18260        bar();18261      }18262    }18263  }18264#pragma omp target teams distribute18265  for (int i = 0; i < 10; ++i) {18266#pragma omp parallel for // OK18267    for (int i = 0; i < 10; ++i)18268      ;18269  }18270#pragma omp target teams distribute18271  for (int i = 0; i < 10; ++i) {18272#pragma omp parallel for simd // OK18273    for (int i = 0; i < 10; ++i)18274      ;18275  }18276#pragma omp target teams distribute18277  for (int i = 0; i < 10; ++i) {18278#pragma omp parallel sections // OK18279    {18280      bar();18281    }18282  }18283#pragma omp target teams distribute18284  for (int i = 0; i < 10; ++i) {18285#pragma omp task // OK18286    {18287      bar();18288    }18289  }18290#pragma omp target teams distribute18291  for (int i = 0; i < 10; ++i) {18292#pragma omp taskyield // OK18293    bar();18294  }18295#pragma omp target teams distribute18296  for (int i = 0; i < 10; ++i) {18297#pragma omp barrier // OK18298    bar();18299  }18300#pragma omp target teams distribute18301  for (int i = 0; i < 10; ++i) {18302#pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}18303    bar();18304  }18305#pragma omp target teams distribute18306  for (int i = 0; i < 10; ++i) {18307#pragma omp taskwait // OK18308    bar();18309  }18310#pragma omp target teams distribute18311  for (int i = 0; i < 10; ++i) {18312#pragma omp flush // OK18313    bar();18314  }18315#pragma omp target teams distribute18316  for (int i = 0; i < 10; ++i) {18317#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}18318    bar();18319  }18320#pragma omp target teams distribute18321  for (int i = 0; i < 10; ++i) {18322#pragma omp atomic // OK18323    ++a;18324  }18325#pragma omp target teams distribute18326  for (int i = 0; i < 10; ++i) {18327#pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute' region}}18328    ++a;18329  }18330#pragma omp target teams distribute18331  for (int i = 0; i < 10; ++i) {18332#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target teams distribute' region}}18333    ++a;18334  }18335#pragma omp target teams distribute18336  for (int i = 0; i < 10; ++i) {18337#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}18338    for (int i = 0; i < 10; ++i)18339      ;18340  }18341#pragma omp target teams distribute18342  for (int i = 0; i < 10; ++i) {18343#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}18344    ++a;18345  }18346#pragma omp target teams distribute18347  for (int i = 0; i < 10; ++i) {18348#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}18349    ++a;18350  }18351#pragma omp target teams distribute18352  for (int i = 0; i < 10; ++i) {18353#pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}18354    ++a;18355  }18356#pragma omp target teams distribute18357  for (int i = 0; i < 10; ++i) {18358#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute' region}}18359    ++a;18360  }18361#pragma omp target teams distribute18362  for (int i = 0; i < 10; ++i) {18363#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}18364    for (int i = 0; i < 10; ++i)18365      ++a;18366  }18367#pragma omp target teams distribute18368  for (int i = 0; i < 10; ++i) {18369#pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}18370    for (int i = 0; i < 10; ++i)18371      ++a;18372  }18373#pragma omp target teams distribute18374  for (int i = 0; i < 10; ++i) {18375#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}18376    for (int i = 0; i < 10; ++i)18377      ++a;18378  }18379#pragma omp target teams distribute18380  for (int i = 0; i < 10; ++i) {18381#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}18382    for (int i = 0; i < 10; ++i)18383      ++a;18384  }18385#pragma omp target teams distribute18386  for (int i = 0; i < 10; ++i) {18387#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}18388    for (int i = 0; i < 10; ++i)18389      ++a;18390  }18391#pragma omp target teams distribute18392  for (int i = 0; i < 10; ++i) {18393#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}18394    for (int i = 0; i < 10; ++i)18395      ++a;18396  }18397#pragma omp target teams distribute18398  for (int i = 0; i < 10; ++i) {18399#pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute' region}}18400    ++a;18401  }18402#pragma omp target teams distribute18403  for (int i = 0; i < 10; ++i) {18404#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute' region}}18405    for (int i = 0; i < 10; ++i)18406      ++a;18407  }18408#pragma omp target teams distribute18409  for (int i = 0; i < 10; ++i) {18410#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute' region}}18411    for (int i = 0; i < 10; ++i)18412      ++a;18413  }18414#pragma omp target teams distribute18415  for (int i = 0; i < 10; ++i) {18416#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}18417    for (int i = 0; i < 10; ++i)18418      ++a;18419  }18420#pragma omp target teams distribute18421  for (int i = 0; i < 10; ++i) {18422#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute' region}}18423    for (int i = 0; i < 10; ++i)18424      ++a;18425  }18426 18427// TARGET TEAMS DISTRIBUTE PARALLEL FOR DIRECTIVE18428#pragma omp target teams distribute parallel for // OK18429  for (int i = 0; i < 10; ++i)18430    ;18431#pragma omp target teams distribute parallel for18432  for (int i = 0; i < 10; ++i) {18433#pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}18434    for (int i = 0; i < 10; ++i)18435      ;18436  }18437#pragma omp target teams distribute parallel for18438  for (int i = 0; i < 10; ++i) {18439#pragma omp distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}18440    for (int i = 0; i < 10; ++i)18441      ;18442  }18443#pragma omp target teams distribute parallel for18444  for (int i = 0; i < 10; ++i) {18445#pragma omp for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for' directive into a parallel region?}}18446    for (int i = 0; i < 10; ++i)18447      ;18448  }18449#pragma omp target teams distribute parallel for18450  for (int i = 0; i < 10; ++i) {18451#pragma omp simd // OK18452    for (int i = 0; i < 10; ++i)18453      ;18454  }18455#pragma omp target teams distribute parallel for18456  for (int i = 0; i < 10; ++i) {18457#pragma omp for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp for simd' directive into a parallel region?}}18458    for (int i = 0; i < 10; ++i)18459      ;18460  }18461#pragma omp target teams distribute parallel for18462  for (int i = 0; i < 10; ++i) {18463#pragma omp parallel // OK18464    for (int i = 0; i < 10; ++i)18465      ;18466  }18467#pragma omp target teams distribute parallel for18468  for (int i = 0; i < 10; ++i) {18469#pragma omp sections // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp sections' directive into a parallel region?}}18470    {18471      bar();18472    }18473  }18474#pragma omp target teams distribute parallel for18475  for (int i = 0; i < 10; ++i) {18476#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target teams distribute parallel for region}}18477    {18478      bar();18479    }18480  }18481#pragma omp target teams distribute parallel for18482  for (int i = 0; i < 10; ++i) {18483#pragma omp single // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}18484    {18485      bar();18486    }18487  }18488#pragma omp target teams distribute parallel for18489  for (int i = 0; i < 10; ++i) {18490#pragma omp master // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}18491    {18492      bar();18493    }18494  }18495#pragma omp target teams distribute parallel for18496  for (int i = 0; i < 10; ++i) {18497#pragma omp critical // OK18498    {18499      bar();18500    }18501  }18502#pragma omp target teams distribute parallel for18503  for (int i = 0; i < 10; ++i) {18504#pragma omp parallel // OK18505    {18506#pragma omp single18507      {18508        bar();18509      }18510    }18511  }18512#pragma omp target teams distribute parallel for18513  for (int i = 0; i < 10; ++i) {18514#pragma omp parallel for // OK18515    for (int i = 0; i < 10; ++i)18516      ;18517  }18518#pragma omp target teams distribute parallel for18519  for (int i = 0; i < 10; ++i) {18520#pragma omp parallel for simd // OK18521    for (int i = 0; i < 10; ++i)18522      ;18523  }18524#pragma omp target teams distribute parallel for18525  for (int i = 0; i < 10; ++i) {18526#pragma omp parallel sections // OK18527    {18528      bar();18529    }18530  }18531#pragma omp target teams distribute parallel for18532  for (int i = 0; i < 10; ++i) {18533#pragma omp task // OK18534    {18535      bar();18536    }18537  }18538#pragma omp target teams distribute parallel for18539  for (int i = 0; i < 10; ++i) {18540#pragma omp taskyield // OK18541    bar();18542  }18543#pragma omp target teams distribute parallel for18544  for (int i = 0; i < 10; ++i) {18545#pragma omp barrier // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}18546    bar();18547  }18548#pragma omp target teams distribute parallel for18549  for (int i = 0; i < 10; ++i) {18550#pragma omp scan // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}18551    bar();18552  }18553#pragma omp target teams distribute parallel for18554  for (int i = 0; i < 10; ++i) {18555#pragma omp taskwait // OK18556    bar();18557  }18558#pragma omp target teams distribute parallel for18559  for (int i = 0; i < 10; ++i) {18560#pragma omp flush // OK18561    bar();18562  }18563#pragma omp target teams distribute parallel for18564  for (int i = 0; i < 10; ++i) {18565#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}18566    bar();18567  }18568#pragma omp target teams distribute parallel for18569  for (int i = 0; i < 10; ++i) {18570#pragma omp atomic // OK18571    ++a;18572  }18573#pragma omp target teams distribute parallel for18574  for (int i = 0; i < 10; ++i) {18575#pragma omp target // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18576    ++a;18577  }18578#pragma omp target teams distribute parallel for18579  for (int i = 0; i < 10; ++i) {18580#pragma omp target parallel  // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18581    ++a;18582  }18583#pragma omp target teams distribute parallel for18584  for (int i = 0; i < 10; ++i) {18585#pragma omp target parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18586    for (int i = 0; i < 10; ++i)18587      ;18588  }18589#pragma omp target teams distribute parallel for18590  for (int i = 0; i < 10; ++i) {18591#pragma omp target enter data map(to: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18592    ++a;18593  }18594#pragma omp target teams distribute parallel for18595  for (int i = 0; i < 10; ++i) {18596#pragma omp target exit data map(from: a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18597    ++a;18598  }18599#pragma omp target teams distribute parallel for18600  for (int i = 0; i < 10; ++i) {18601#pragma omp teams // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}18602    ++a;18603  }18604#pragma omp target teams distribute parallel for18605  for (int i = 0; i < 10; ++i) {18606#pragma omp target update to(a) // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18607    ++a;18608  }18609#pragma omp target teams distribute parallel for18610  for (int i = 0; i < 10; ++i) {18611#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}18612    for (int i = 0; i < 10; ++i)18613      ++a;18614  }18615#pragma omp target teams distribute parallel for18616  for (int i = 0; i < 10; ++i) {18617#pragma omp target simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18618    for (int i = 0; i < 10; ++i)18619      ++a;18620  }18621#pragma omp target teams distribute parallel for18622  for (int i = 0; i < 10; ++i) {18623#pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}18624    for (int i = 0; i < 10; ++i)18625      ++a;18626  }18627#pragma omp target teams distribute parallel for18628  for (int i = 0; i < 10; ++i) {18629#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}18630    for (int i = 0; i < 10; ++i)18631      ++a;18632  }18633#pragma omp target teams distribute parallel for18634  for (int i = 0; i < 10; ++i) {18635#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}18636    for (int i = 0; i < 10; ++i)18637      ++a;18638  }18639#pragma omp target teams distribute parallel for18640  for (int i = 0; i < 10; ++i) {18641#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}18642    for (int i = 0; i < 10; ++i)18643      ++a;18644  }18645#pragma omp target teams distribute parallel for18646  for (int i = 0; i < 10; ++i) {18647#pragma omp target teams // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18648    ++a;18649  }18650#pragma omp target teams distribute parallel for18651  for (int i = 0; i < 10; ++i) {18652#pragma omp target teams distribute // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18653    for (int i = 0; i < 10; ++i)18654      ++a;18655  }18656#pragma omp target teams distribute parallel for18657  for (int i = 0; i < 10; ++i) {18658#pragma omp target teams distribute parallel for // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18659    for (int i = 0; i < 10; ++i)18660      ++a;18661  }18662#pragma omp target teams distribute parallel for18663  for (int i = 0; i < 10; ++i) {18664#pragma omp target teams distribute parallel for simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18665    for (int i = 0; i < 10; ++i)18666      ++a;18667  }18668#pragma omp target teams distribute parallel for18669  for (int i = 0; i < 10; ++i) {18670#pragma omp target teams distribute simd // expected-error {{region cannot be nested inside 'target teams distribute parallel for' region}}18671    for (int i = 0; i < 10; ++i)18672      ++a;18673  }18674 18675// TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD DIRECTIVE18676#pragma omp target teams distribute parallel for simd // OK18677  for (int i = 0; i < 10; ++i)18678    ;18679#pragma omp target teams distribute parallel for simd18680  for (int i = 0; i < 10; ++i) {18681#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18682    for (int i = 0; i < 10; ++i)18683      ;18684  }18685#pragma omp target teams distribute parallel for simd18686  for (int i = 0; i < 10; ++i) {18687#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}18688    for (int i = 0; i < 10; ++i)18689      ;18690  }18691#pragma omp target teams distribute parallel for simd18692  for (int i = 0; i < 10; ++i) {18693#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}18694    for (int i = 0; i < 10; ++i)18695      ;18696  }18697#pragma omp target teams distribute parallel for simd18698  for (int i = 0; i < 10; ++i) {18699#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}18700    for (int i = 0; i < 10; ++i)18701      ;18702  }18703#pragma omp target teams distribute parallel for simd18704  for (int i = 0; i < 10; ++i) {18705#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18706    for (int i = 0; i < 10; ++i)18707      ;18708  }18709#pragma omp target teams distribute parallel for simd18710  for (int i = 0; i < 10; ++i) {18711#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}18712    for (int i = 0; i < 10; ++i)18713      ;18714  }18715#pragma omp target teams distribute parallel for simd18716  for (int i = 0; i < 10; ++i) {18717#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}18718    {18719      bar();18720    }18721  }18722#pragma omp target teams distribute parallel for simd18723  for (int i = 0; i < 10; ++i) {18724#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}18725    {18726      bar();18727    }18728  }18729#pragma omp target teams distribute parallel for simd18730  for (int i = 0; i < 10; ++i) {18731#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}18732    {18733      bar();18734    }18735  }18736#pragma omp target teams distribute parallel for simd18737  for (int i = 0; i < 10; ++i) {18738#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}18739    {18740      bar();18741    }18742  }18743#pragma omp target teams distribute parallel for simd18744  for (int i = 0; i < 10; ++i) {18745#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}18746    {18747      bar();18748    }18749  }18750#pragma omp target teams distribute parallel for simd18751  for (int i = 0; i < 10; ++i) {18752#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}18753    {18754#pragma omp single18755      {18756        bar();18757      }18758    }18759  }18760#pragma omp target teams distribute parallel for simd18761  for (int i = 0; i < 10; ++i) {18762#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}18763    for (int i = 0; i < 10; ++i)18764      ;18765  }18766#pragma omp target teams distribute parallel for simd18767  for (int i = 0; i < 10; ++i) {18768#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18769    for (int i = 0; i < 10; ++i)18770      ;18771  }18772#pragma omp target teams distribute parallel for simd18773  for (int i = 0; i < 10; ++i) {18774#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}18775    {18776      bar();18777    }18778  }18779#pragma omp target teams distribute parallel for simd18780  for (int i = 0; i < 10; ++i) {18781#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}18782    {18783      bar();18784    }18785  }18786#pragma omp target teams distribute parallel for simd18787  for (int i = 0; i < 10; ++i) {18788#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}18789    bar();18790  }18791#pragma omp target teams distribute parallel for simd18792  for (int i = 0; i < 10; ++i) {18793#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}18794    bar();18795  }18796#pragma omp target teams distribute parallel for simd18797  for (int i = 0; i < 10; ++i) {18798#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'target teams distribute parallel for simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}18799    bar();18800  }18801#pragma omp target teams distribute parallel for simd18802  for (int i = 0; i < 10; ++i) {18803#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}18804    bar();18805  }18806#pragma omp target teams distribute parallel for simd18807  for (int i = 0; i < 10; ++i) {18808#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}18809    bar();18810  }18811#pragma omp target teams distribute parallel for simd18812  for (int i = 0; i < 10; ++i) {18813#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}18814    bar();18815  }18816#pragma omp target teams distribute parallel for simd18817  for (int i = 0; i < 10; ++i) {18818#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}18819    ++a;18820  }18821#pragma omp target teams distribute parallel for simd18822  for (int i = 0; i < 10; ++i) {18823#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}18824    ++a;18825  }18826#pragma omp target teams distribute parallel for simd18827  for (int i = 0; i < 10; ++i) {18828#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}18829    ++a;18830  }18831#pragma omp target teams distribute parallel for simd18832  for (int i = 0; i < 10; ++i) {18833#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}18834    for (int i = 0; i < 10; ++i)18835      ;18836  }18837#pragma omp target teams distribute parallel for simd18838  for (int i = 0; i < 10; ++i) {18839#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}18840    ++a;18841  }18842#pragma omp target teams distribute parallel for simd18843  for (int i = 0; i < 10; ++i) {18844#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}18845    ++a;18846  }18847#pragma omp target teams distribute parallel for simd18848  for (int i = 0; i < 10; ++i) {18849#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}18850    ++a;18851  }18852#pragma omp target teams distribute parallel for simd18853  for (int i = 0; i < 10; ++i) {18854#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}18855    ++a;18856  }18857#pragma omp target teams distribute parallel for simd18858  for (int i = 0; i < 10; ++i) {18859#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18860    for (int i = 0; i < 10; ++i)18861      ++a;18862  }18863#pragma omp target teams distribute parallel for simd18864  for (int i = 0; i < 10; ++i) {18865#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18866    for (int i = 0; i < 10; ++i)18867      ++a;18868  }18869#pragma omp target teams distribute parallel for simd18870  for (int i = 0; i < 10; ++i) {18871#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}18872    for (int i = 0; i < 10; ++i)18873      ++a;18874  }18875#pragma omp target teams distribute parallel for simd18876  for (int i = 0; i < 10; ++i) {18877#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18878    for (int i = 0; i < 10; ++i)18879      ++a;18880  }18881#pragma omp target teams distribute parallel for simd18882  for (int i = 0; i < 10; ++i) {18883#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18884    for (int i = 0; i < 10; ++i)18885      ++a;18886  }18887#pragma omp target teams distribute parallel for simd18888  for (int i = 0; i < 10; ++i) {18889#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}18890    for (int i = 0; i < 10; ++i)18891      ;18892  }18893#pragma omp target teams distribute parallel for simd18894  for (int i = 0; i < 10; ++i) {18895#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}18896    a++;18897  }18898#pragma omp target teams distribute parallel for simd18899  for (int i = 0; i < 10; ++i) {18900#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}18901    for (int i = 0; i < 10; ++i)18902      ;18903  }18904#pragma omp target teams distribute parallel for simd18905  for (int i = 0; i < 10; ++i) {18906#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}18907    for (int i = 0; i < 10; ++i)18908      ;18909  }18910#pragma omp target teams distribute parallel for simd18911  for (int i = 0; i < 10; ++i) {18912#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18913    for (int i = 0; i < 10; ++i)18914      ;18915  }18916#pragma omp target teams distribute parallel for simd18917  for (int i = 0; i < 10; ++i) {18918#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18919    for (int i = 0; i < 10; ++i)18920      ;18921  }18922 18923// TARGET TEAMS DISTRIBUTE SIMD DIRECTIVE18924#pragma omp target teams distribute simd // OK18925  for (int i = 0; i < 10; ++i)18926    ;18927#pragma omp target teams distribute simd18928  for (int i = 0; i < 10; ++i) {18929#pragma omp distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18930    for (int i = 0; i < 10; ++i)18931      ;18932  }18933#pragma omp target teams distribute simd18934  for (int i = 0; i < 10; ++i) {18935#pragma omp distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}18936    for (int i = 0; i < 10; ++i)18937      ;18938  }18939#pragma omp target teams distribute simd18940  for (int i = 0; i < 10; ++i) {18941#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}}18942    for (int i = 0; i < 10; ++i)18943      ;18944  }18945#pragma omp target teams distribute simd18946  for (int i = 0; i < 10; ++i) {18947#pragma omp simd // omp45warn-warning {{OpenMP only allows an ordered construct with the simd clause nested in a simd construct}}18948    for (int i = 0; i < 10; ++i)18949      ;18950  }18951#pragma omp target teams distribute simd18952  for (int i = 0; i < 10; ++i) {18953#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}18954    for (int i = 0; i < 10; ++i)18955      ;18956  }18957#pragma omp target teams distribute simd18958  for (int i = 0; i < 10; ++i) {18959#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}18960    for (int i = 0; i < 10; ++i)18961      ;18962  }18963#pragma omp target teams distribute simd18964  for (int i = 0; i < 10; ++i) {18965#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}18966    {18967      bar();18968    }18969  }18970#pragma omp target teams distribute simd18971  for (int i = 0; i < 10; ++i) {18972#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}}18973    {18974      bar();18975    }18976  }18977#pragma omp target teams distribute simd18978  for (int i = 0; i < 10; ++i) {18979#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}}18980    {18981      bar();18982    }18983  }18984#pragma omp target teams distribute simd18985  for (int i = 0; i < 10; ++i) {18986#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}}18987    {18988      bar();18989    }18990  }18991#pragma omp target teams distribute simd18992  for (int i = 0; i < 10; ++i) {18993#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}}18994    {18995      bar();18996    }18997  }18998#pragma omp target teams distribute simd18999  for (int i = 0; i < 10; ++i) {19000#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}19001    {19002#pragma omp single19003      {19004        bar();19005      }19006    }19007  }19008#pragma omp target teams distribute simd19009  for (int i = 0; i < 10; ++i) {19010#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}19011    for (int i = 0; i < 10; ++i)19012      ;19013  }19014#pragma omp target teams distribute simd19015  for (int i = 0; i < 10; ++i) {19016#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19017    for (int i = 0; i < 10; ++i)19018      ;19019  }19020#pragma omp target teams distribute simd19021  for (int i = 0; i < 10; ++i) {19022#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}}19023    {19024      bar();19025    }19026  }19027#pragma omp target teams distribute simd19028  for (int i = 0; i < 10; ++i) {19029#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}}19030    {19031      bar();19032    }19033  }19034#pragma omp target teams distribute simd19035  for (int i = 0; i < 10; ++i) {19036#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}}19037    bar();19038  }19039#pragma omp target teams distribute simd19040  for (int i = 0; i < 10; ++i) {19041#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}}19042    bar();19043  }19044#pragma omp target teams distribute simd19045  for (int i = 0; i < 10; ++i) {19046#pragma omp scan // omp45-error {{OpenMP constructs may not be nested inside a simd region}} omp50-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}} omp51-error {{region cannot be closely nested inside 'target teams distribute simd' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}19047    bar();19048  }19049#pragma omp target teams distribute simd19050  for (int i = 0; i < 10; ++i) {19051#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}}19052    bar();19053  }19054#pragma omp target teams distribute simd19055  for (int i = 0; i < 10; ++i) {19056#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}}19057    bar();19058  }19059#pragma omp target teams distribute simd19060  for (int i = 0; i < 10; ++i) {19061#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}}19062    bar();19063  }19064#pragma omp target teams distribute simd19065  for (int i = 0; i < 10; ++i) {19066#pragma omp atomic // omp45-error {{OpenMP constructs may not be nested inside a simd region}}19067    ++a;19068  }19069#pragma omp target teams distribute simd19070  for (int i = 0; i < 10; ++i) {19071#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}}19072    ++a;19073  }19074#pragma omp target teams distribute simd19075  for (int i = 0; i < 10; ++i) {19076#pragma omp target parallel  // expected-error {{OpenMP constructs may not be nested inside a simd region}}19077    ++a;19078  }19079#pragma omp target teams distribute simd19080  for (int i = 0; i < 10; ++i) {19081#pragma omp target parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}19082    for (int i = 0; i < 10; ++i)19083      ;19084  }19085#pragma omp target teams distribute simd19086  for (int i = 0; i < 10; ++i) {19087#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}19088    ++a;19089  }19090#pragma omp target teams distribute simd19091  for (int i = 0; i < 10; ++i) {19092#pragma omp target exit data map(from: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}19093    ++a;19094  }19095#pragma omp target teams distribute simd19096  for (int i = 0; i < 10; ++i) {19097#pragma omp teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}19098    ++a;19099  }19100#pragma omp target teams distribute simd19101  for (int i = 0; i < 10; ++i) {19102#pragma omp target update to(a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}19103    ++a;19104  }19105#pragma omp target teams distribute simd19106  for (int i = 0; i < 10; ++i) {19107#pragma omp distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19108    for (int i = 0; i < 10; ++i)19109      ++a;19110  }19111#pragma omp target teams distribute simd19112  for (int i = 0; i < 10; ++i) {19113#pragma omp target simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19114    for (int i = 0; i < 10; ++i)19115      ++a;19116  }19117#pragma omp target teams distribute simd19118  for (int i = 0; i < 10; ++i) {19119#pragma omp teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}19120    for (int i = 0; i < 10; ++i)19121      ++a;19122  }19123#pragma omp target teams distribute simd19124  for (int i = 0; i < 10; ++i) {19125#pragma omp teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19126    for (int i = 0; i < 10; ++i)19127      ++a;19128  }19129#pragma omp target teams distribute simd19130  for (int i = 0; i < 10; ++i) {19131#pragma omp teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19132    for (int i = 0; i < 10; ++i)19133      ++a;19134  }19135#pragma omp target teams distribute simd19136  for (int i = 0; i < 10; ++i) {19137#pragma omp teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}19138    for (int i = 0; i < 10; ++i)19139      ;19140  }19141#pragma omp target teams distribute simd19142  for (int i = 0; i < 10; ++i) {19143#pragma omp target teams // expected-error {{OpenMP constructs may not be nested inside a simd region}}19144    a++;19145  }19146#pragma omp target teams distribute simd19147  for (int i = 0; i < 10; ++i) {19148#pragma omp target teams distribute // expected-error {{OpenMP constructs may not be nested inside a simd region}}19149    for (int i = 0; i < 10; ++i)19150      ;19151  }19152#pragma omp target teams distribute simd19153  for (int i = 0; i < 10; ++i) {19154#pragma omp target teams distribute parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}}19155    for (int i = 0; i < 10; ++i)19156      ;19157  }19158#pragma omp target teams distribute simd19159  for (int i = 0; i < 10; ++i) {19160#pragma omp target teams distribute parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19161    for (int i = 0; i < 10; ++i)19162      ;19163  }19164#pragma omp target teams distribute simd19165  for (int i = 0; i < 10; ++i) {19166#pragma omp target teams distribute simd // expected-error {{OpenMP constructs may not be nested inside a simd region}}19167    for (int i = 0; i < 10; ++i)19168      ;19169  }19170 19171  // SCOPE DIRECTIVE19172#pragma omp scope19173#pragma omp parallel // OK19174  bar();19175#pragma omp scope19176#pragma omp parallel for // OK19177  for(int i = 0; i < 10; i++)19178    ;19179#pragma omp scope19180#pragma omp parallel for simd // OK19181  for(int i = 0; i < 10; i++)19182    ;19183#pragma omp scope19184#pragma omp for19185  for (int i = 0; i < 10; ++i)19186    ;19187#pragma omp scope19188#pragma omp simd19189  for (int i = 0; i < 10; ++i)19190    ;19191#pragma omp scope19192#pragma omp for simd19193  for (int i = 0; i < 10; ++i)19194    ;19195#pragma omp scope19196#pragma omp sections19197  {19198    bar();19199  }19200#pragma omp scope19201#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a scope region}}19202  {19203    bar();19204  }19205#pragma omp scope19206#pragma omp single19207  bar();19208 19209#pragma omp scope19210#pragma omp master19211  {19212    bar();19213  }19214#pragma omp scope19215#pragma omp critical19216  {19217    bar();19218  }19219#pragma omp scope19220#pragma omp parallel sections19221  {19222    bar();19223  }19224#pragma omp scope19225#pragma omp parallel master19226  {19227    bar();19228  }19229#pragma omp scope19230#pragma omp parallel masked19231  {19232    bar();19233  }19234#pragma omp scope19235#pragma omp task19236  {19237    bar();19238  }19239#pragma omp scope19240  {19241#pragma omp taskyield19242    bar();19243  }19244#pragma omp scope19245  {19246#pragma omp barrier19247    bar();19248  }19249#pragma omp scope19250  {19251#pragma omp scan // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp scan' directive into a for, simd, for simd, parallel for, or parallel for simd region?}}19252    bar();19253  }19254#pragma omp scope19255  {19256#pragma omp taskwait19257    bar();19258  }19259#pragma omp scope19260  {19261#pragma omp flush19262    bar();19263  }19264#pragma omp scope19265  {19266#pragma omp ordered // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}19267    bar();19268  }19269#pragma omp scope19270  {19271#pragma omp atomic19272    ++a;19273  }19274#pragma omp scope19275  {19276#pragma omp target parallel19277    ++a;19278  }19279#pragma omp scope19280  {19281#pragma omp target parallel for19282  for (int i = 0; i < 10; ++i)19283    ;19284  }19285#pragma omp scope19286  {19287#pragma omp target enter data map(to: a)19288    ++a;19289  }19290#pragma omp scope19291  {19292#pragma omp target exit data map(from: a)19293    ++a;19294  }19295#pragma omp scope19296  {19297#pragma omp taskloop19298  for (int i = 0; i < 10; ++i)19299    ++a;19300  }19301#pragma omp scope19302  {19303#pragma omp target // OK19304    a++;19305  }19306#pragma omp scope19307  {19308#pragma omp teams // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}19309    a++;19310  }19311#pragma omp scope19312  {19313#pragma omp target teams // OK19314    a++;19315  }19316#pragma omp scope19317  {19318#pragma omp distribute // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}19319    for (int i = 0; i < 10; ++i)19320      ;19321  }19322 #pragma omp scope19323   {19324 #pragma omp distribute parallel for simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp distribute parallel for simd' directive into a teams region?}}19325     for (int i = 0; i < 10; ++i)19326       ;19327   }19328#pragma omp scope19329  {19330#pragma omp distribute simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp distribute simd' directive into a teams region?}}19331    for (int i = 0; i < 10; ++i)19332      ;19333  }19334#pragma omp scope19335  {19336#pragma omp target simd // OK19337    for (int i = 0; i < 10; ++i)19338      ;19339  }19340#pragma omp scope19341   {19342 #pragma omp teams distribute // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute' directive into a target region?}}19343     for (int i = 0; i < 10; ++i)19344       ;19345   }19346#pragma omp scope19347  {19348#pragma omp teams distribute simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute simd' directive into a target region?}}19349    for (int i = 0; i < 10; ++i)19350      ;19351  }19352#pragma omp scope19353  {19354#pragma omp teams distribute parallel for simd // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute parallel for simd' directive into a target region?}}19355    for (int i = 0; i < 10; ++i)19356      ;19357  }19358#pragma omp scope19359  {19360#pragma omp teams distribute parallel for // expected-error {{region cannot be closely nested inside 'scope' region; perhaps you forget to enclose 'omp teams distribute parallel for' directive into a target region?}}19361    for (int i = 0; i < 10; ++i)19362      ;19363  }19364#pragma omp scope19365  {19366#pragma omp target teams // OK19367    ++a;19368  }19369#pragma omp scope19370  {19371#pragma omp target teams distribute // OK19372    for (int i = 0; i < 10; ++i)19373      ;19374  }19375#pragma omp scope19376  {19377#pragma omp target teams distribute parallel for // OK19378    for (int i = 0; i < 10; ++i)19379      ;19380  }19381#pragma omp scope19382  {19383#pragma omp target teams distribute parallel for simd // OK19384    for (int i = 0; i < 10; ++i)19385      ;19386  }19387#pragma omp scope19388  {19389#pragma omp target teams distribute simd // OK19390    for (int i = 0; i < 10; ++i)19391      ;19392  }19393#pragma omp for19394  for (int i = 0; i < 10; ++i) {19395#pragma omp scope // expected-error {{region cannot be closely nested inside 'for' region}}19396    bar();19397  }19398 19399#pragma omp for simd19400  for (int i = 0; i < 10; ++i) {19401#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19402    bar();19403  }19404 19405#pragma omp sections19406  {19407#pragma omp scope // expected-error {{region cannot be closely nested inside 'sections' region}}19408    bar();19409  }19410 19411#pragma omp sections19412  {19413#pragma omp section19414    {19415#pragma omp scope // expected-error {{region cannot be closely nested inside 'section' region}}19416      bar();19417    }19418  }19419 19420#pragma omp single19421  {19422#pragma omp scope // expected-error {{region cannot be closely nested inside 'single' region}}19423    bar();19424  }19425 19426#pragma omp master19427  {19428#pragma omp scope // expected-error {{region cannot be closely nested inside 'master' region}}19429    bar();19430  }19431 19432#pragma omp critical19433  {19434#pragma omp scope // expected-error {{region cannot be closely nested inside 'critical' region}}19435    bar();19436  }19437 19438#pragma omp parallel for19439  for (int i = 0; i < 10; ++i) {19440#pragma omp scope // expected-error {{region cannot be closely nested inside 'parallel for' region}}19441    bar();19442  }19443 19444#pragma omp parallel for simd19445  for (int i = 0; i < 10; ++i) {19446#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19447    bar();19448  }19449 19450#pragma omp parallel master19451  {19452#pragma omp scope // expected-error {{region cannot be closely nested inside 'parallel master' region}}19453    bar();19454  }19455 19456#pragma omp parallel sections19457  {19458#pragma omp scope // expected-error {{region cannot be closely nested inside 'parallel sections' region}}19459    bar();19460  }19461 19462#pragma omp task19463  {19464#pragma omp scope // expected-error {{region cannot be closely nested inside 'task' region}}19465    bar();19466  }19467 19468#pragma omp ordered19469  {19470#pragma omp scope // expected-error {{region cannot be closely nested inside 'ordered' region}}19471    bar();19472  }19473 19474#pragma omp atomic19475  // expected-error@+2 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an lvalue expression with scalar type}}19476  // expected-note@+1 {{expected an expression statement}}19477  {19478#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside an atomic region}}19479    bar();19480  }19481 19482#pragma omp target19483#pragma omp teams19484  {19485#pragma omp scope // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp scope' directive into a parallel region?}}19486    bar();19487  }19488 19489#pragma omp taskloop19490  for (int i = 0; i < 10; ++i) {19491#pragma omp scope // expected-error {{region cannot be closely nested inside 'taskloop' region}}19492    bar();19493  }19494 19495#pragma omp target19496#pragma omp teams19497#pragma omp distribute parallel for19498  for (int i = 0; i < 10; ++i) {19499#pragma omp scope // expected-error {{region cannot be closely nested inside 'distribute parallel for' region}}19500    bar();19501  }19502 19503#pragma omp target19504#pragma omp teams19505#pragma omp distribute parallel for simd19506  for (int i = 0; i < 10; ++i) {19507#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19508    bar();19509  }19510 19511#pragma omp target simd19512  for (int i = 0; i < 10; ++i) {19513#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19514    bar();19515  }19516 19517#pragma omp target19518#pragma omp teams distribute simd19519  for (int i = 0; i < 10; ++i) {19520#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19521    bar();19522  }19523 19524#pragma omp target19525#pragma omp teams distribute parallel for simd19526  for (int i = 0; i < 10; ++i) {19527#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19528    bar();19529  }19530 19531#pragma omp target19532#pragma omp teams distribute parallel for19533  for (int i = 0; i < 10; ++i) {19534#pragma omp scope // expected-error {{region cannot be closely nested inside 'teams distribute parallel for' region}}19535    bar();19536  }19537 19538#pragma omp target teams19539  {19540#pragma omp scope // expected-error {{region cannot be closely nested inside 'target teams' region; perhaps you forget to enclose 'omp scope' directive into a parallel region?}}19541    bar();19542  }19543 19544#pragma omp target teams distribute parallel for19545  for (int i = 0; i < 10; ++i) {19546#pragma omp scope // expected-error {{region cannot be closely nested inside 'target teams distribute parallel for' region}}19547    bar();19548  }19549 19550#pragma omp target teams distribute parallel for simd19551  for (int i = 0; i < 10; ++i) {19552#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19553    bar();19554  }19555 19556#pragma omp target teams distribute simd19557  for (int i = 0; i < 10; ++i) {19558#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19559    bar();19560  }19561 19562#pragma omp simd19563  for (int i = 0; i < 10; ++i) {19564#pragma omp scope // expected-error {{OpenMP constructs may not be nested inside a simd region}}19565    bar();19566  }19567 19568  return foo<int>();19569}19570