114 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s2 3// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s4 5template <class T>6T tmain(T argc) {7#pragma omp barrier8 ;9#pragma omp barrier allocate(argc) // expected-error {{unexpected OpenMP clause 'allocate' in directive '#pragma omp barrier'}}10#pragma omp barrier untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp barrier'}}11#pragma omp barrier unknown // expected-warning {{extra tokens at the end of '#pragma omp barrier' are ignored}}12 if (argc)13#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}14 if (argc) {15#pragma omp barrier16 }17 while (argc)18#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}19 while (argc) {20#pragma omp barrier21 }22 do23#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}24 while (argc)25 ;26 do {27#pragma omp barrier28 } while (argc);29 switch (argc)30#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}31 switch (argc)32 case 1:33#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}34 switch (argc)35 case 1: {36#pragma omp barrier37 }38 switch (argc) {39#pragma omp barrier40 case 1:41#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}42 break;43 default: {44#pragma omp barrier45 } break;46 }47 for (;;)48#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}49 for (;;) {50#pragma omp barrier51 }52label:53#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}54label1 : {55#pragma omp barrier56}57 58 return T();59}60 61int main(int argc, char **argv) {62#pragma omp barrier63 ;64#pragma omp barrier untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp barrier'}}65#pragma omp barrier unknown // expected-warning {{extra tokens at the end of '#pragma omp barrier' are ignored}}66 if (argc)67#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}68 if (argc) {69#pragma omp barrier70 }71 while (argc)72#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}73 while (argc) {74#pragma omp barrier75 }76 do77#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}78 while (argc)79 ;80 do {81#pragma omp barrier82 } while (argc);83 switch (argc)84#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}85 switch (argc)86 case 1:87#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}88 switch (argc)89 case 1: {90#pragma omp barrier91 }92 switch (argc) {93#pragma omp barrier94 case 1:95#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}96 break;97 default: {98#pragma omp barrier99 } break;100 }101 for (;;)102#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}103 for (;;) {104#pragma omp barrier105 }106label:107#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}108label1 : {109#pragma omp barrier110}111 112 return tmain(argc);113}114