1// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s 2 3template <class T> 4T tmain(T argc) { 5#pragma omp barrier 6 ; 7#pragma omp barrier untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp barrier'}} 8#pragma omp barrier unknown // expected-warning {{extra tokens at the end of '#pragma omp barrier' are ignored}} 9 if (argc) 10#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 11 if (argc) { 12#pragma omp barrier 13 } 14 while (argc) 15#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 16 while (argc) { 17#pragma omp barrier 18 } 19 do 20#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 21 while (argc) 22 ; 23 do { 24#pragma omp barrier 25 } while (argc); 26 switch (argc) 27#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 28 switch (argc) 29 case 1: 30#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 31 switch (argc) 32 case 1: { 33#pragma omp barrier 34 } 35 switch (argc) { 36#pragma omp barrier 37 case 1: 38#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 39 break; 40 default: { 41#pragma omp barrier 42 } break; 43 } 44 for (;;) 45#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 46 for (;;) { 47#pragma omp barrier 48 } 49label: 50#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 51label1 : { 52#pragma omp barrier 53} 54 55 return T(); 56} 57 58int main(int argc, char **argv) { 59#pragma omp barrier 60 ; 61#pragma omp barrier untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp barrier'}} 62#pragma omp barrier unknown // expected-warning {{extra tokens at the end of '#pragma omp barrier' are ignored}} 63 if (argc) 64#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 65 if (argc) { 66#pragma omp barrier 67 } 68 while (argc) 69#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 70 while (argc) { 71#pragma omp barrier 72 } 73 do 74#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 75 while (argc) 76 ; 77 do { 78#pragma omp barrier 79 } while (argc); 80 switch (argc) 81#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 82 switch (argc) 83 case 1: 84#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 85 switch (argc) 86 case 1: { 87#pragma omp barrier 88 } 89 switch (argc) { 90#pragma omp barrier 91 case 1: 92#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 93 break; 94 default: { 95#pragma omp barrier 96 } break; 97 } 98 for (;;) 99#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 100 for (;;) { 101#pragma omp barrier 102 } 103label: 104#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}} 105label1 : { 106#pragma omp barrier 107} 108 109 return tmain(argc); 110} 111