1*bb83f8e7SJennifer Yu // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -o - %s -Wuninitialized 2*bb83f8e7SJennifer Yu 3*bb83f8e7SJennifer Yu // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized 4*bb83f8e7SJennifer Yu 5*bb83f8e7SJennifer Yu // RUN: %clang_cc1 -verify -fopenmp-version=51 -DOMP51 -fopenmp -ferror-limit 100 -o - %s -Wuninitialized 6*bb83f8e7SJennifer Yu 7*bb83f8e7SJennifer Yu // RUN: %clang_cc1 -verify -fopenmp-version=51 -DOMP51 -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized 8*bb83f8e7SJennifer Yu 9*bb83f8e7SJennifer Yu void foo(); 10*bb83f8e7SJennifer Yu 11*bb83f8e7SJennifer Yu namespace { 12*bb83f8e7SJennifer Yu static int y = 0; 13*bb83f8e7SJennifer Yu } 14*bb83f8e7SJennifer Yu static int x = 0; 15*bb83f8e7SJennifer Yu main(int argc,char ** argv)16*bb83f8e7SJennifer Yuint main(int argc, char **argv) { 17*bb83f8e7SJennifer Yu #pragma omp parallel masked default // expected-error {{expected '(' after 'default'}} 18*bb83f8e7SJennifer Yu { 19*bb83f8e7SJennifer Yu #pragma omp parallel masked default( // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}} expected-error {{expected ')'}} expected-note {{to match this '('}} 20*bb83f8e7SJennifer Yu { 21*bb83f8e7SJennifer Yu #pragma omp parallel masked default() // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}} 22*bb83f8e7SJennifer Yu { 23*bb83f8e7SJennifer Yu #pragma omp parallel masked default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} 24*bb83f8e7SJennifer Yu { 25*bb83f8e7SJennifer Yu #pragma omp parallel masked default(shared), default(shared) // expected-error {{directive '#pragma omp parallel masked' cannot contain more than one 'default' clause}} 26*bb83f8e7SJennifer Yu { 27*bb83f8e7SJennifer Yu #pragma omp parallel masked default(x) // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}} 28*bb83f8e7SJennifer Yu {foo(); 29*bb83f8e7SJennifer Yu } 30*bb83f8e7SJennifer Yu } 31*bb83f8e7SJennifer Yu } 32*bb83f8e7SJennifer Yu } 33*bb83f8e7SJennifer Yu } 34*bb83f8e7SJennifer Yu } 35*bb83f8e7SJennifer Yu 36*bb83f8e7SJennifer Yu #pragma omp parallel masked default(none) // expected-note {{explicit data sharing attribute requested here}} 37*bb83f8e7SJennifer Yu { 38*bb83f8e7SJennifer Yu ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} 39*bb83f8e7SJennifer Yu } 40*bb83f8e7SJennifer Yu 41*bb83f8e7SJennifer Yu #pragma omp parallel masked default(none) // expected-note {{explicit data sharing attribute requested here}} 42*bb83f8e7SJennifer Yu { 43*bb83f8e7SJennifer Yu #pragma omp parallel masked default(shared) 44*bb83f8e7SJennifer Yu { 45*bb83f8e7SJennifer Yu ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} 46*bb83f8e7SJennifer Yu } 47*bb83f8e7SJennifer Yu } 48*bb83f8e7SJennifer Yu 49*bb83f8e7SJennifer Yu #ifdef OMP51 50*bb83f8e7SJennifer Yu #pragma omp parallel masked default(firstprivate) // expected-note 2 {{explicit data sharing attribute requested here}} 51*bb83f8e7SJennifer Yu { 52*bb83f8e7SJennifer Yu ++x; // expected-error {{variable 'x' must have explicitly specified data sharing attributes}} 53*bb83f8e7SJennifer Yu ++y; // expected-error {{variable 'y' must have explicitly specified data sharing attributes}} 54*bb83f8e7SJennifer Yu } 55*bb83f8e7SJennifer Yu #pragma omp parallel masked default(private) // expected-note 2 {{explicit data sharing attribute requested here}} 56*bb83f8e7SJennifer Yu { 57*bb83f8e7SJennifer Yu ++x; // expected-error {{variable 'x' must have explicitly specified data sharing attributes}} 58*bb83f8e7SJennifer Yu ++y; // expected-error {{variable 'y' must have explicitly specified data sharing attributes}} 59*bb83f8e7SJennifer Yu } 60*bb83f8e7SJennifer Yu #endif 61*bb83f8e7SJennifer Yu 62*bb83f8e7SJennifer Yu return 0; 63*bb83f8e7SJennifer Yu } 64