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