1 // RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized 2 3 // RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized 4 xxx(int argc)5void xxx(int argc) { 6 int x; // expected-note {{initialize the variable 'x' to silence this warning}} 7 #pragma omp parallel masked 8 argc = x; // expected-warning {{variable 'x' is uninitialized when used here}} 9 } 10 11 #pragma omp parallel masked // expected-error {{unexpected OpenMP directive '#pragma omp parallel masked'}} 12 foo()13int foo() { 14 return 0; 15 } 16 17 int a; 18 struct S; 19 S& bar(); main(int argc,char ** argv)20int main(int argc, char **argv) { 21 #pragma omp parallel masked nowait // expected-error {{unexpected OpenMP clause 'nowait' in directive '#pragma omp parallel masked'}} 22 #pragma omp parallel masked unknown // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 23 foo(); 24 { 25 #pragma omp masked 26 } // expected-error {{expected statement}} 27 { 28 #pragma omp parallel masked 29 } // expected-error {{expected statement}} 30 31 S &s = bar(); 32 int tid = 0; 33 #pragma omp parallel masked filter(tid) 34 (void)&s; 35 #pragma omp parallel masked { // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 36 foo(); 37 #pragma omp parallel masked ( // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 38 foo(); 39 #pragma omp parallel masked [ // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 40 foo(); 41 #pragma omp parallel masked ] // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 42 foo(); 43 #pragma omp parallel masked ) // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 44 foo(); 45 #pragma omp parallel masked } // expected-warning {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 46 foo(); 47 #pragma omp parallel masked 48 // expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel masked' are ignored}} 49 #pragma omp parallel masked unknown() 50 foo(); 51 L1: 52 foo(); 53 #pragma omp parallel masked 54 ; 55 #pragma omp parallel masked 56 { 57 58 for (int i = 0; i < 10; ++i) { 59 switch(argc) { 60 case (0): 61 #pragma omp parallel masked 62 { 63 foo(); 64 break; // expected-error {{'break' statement not in loop or switch statement}} 65 continue; // expected-error {{'continue' statement not in loop statement}} 66 } 67 default: 68 break; 69 } 70 } 71 goto L1; // expected-error {{use of undeclared label 'L1'}} 72 argc++; 73 } 74 #pragma omp parallel masked default(none) // expected-note 2 {{explicit data sharing attribute requested here}} 75 { 76 ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} 77 ++a; // expected-error {{variable 'a' must have explicitly specified data sharing attributes}} 78 } 79 80 goto L2; // expected-error {{use of undeclared label 'L2'}} 81 #pragma omp parallel masked 82 L2: 83 foo(); 84 #pragma omp parallel masked 85 { 86 return 1; // expected-error {{cannot return from OpenMP region}} 87 } 88 return 0; 89 } 90