1*b8552abfSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized 2*b8552abfSAlexey Bataev 3*b8552abfSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized 4*b8552abfSAlexey Bataev foo()5*b8552abfSAlexey Bataevvoid foo() { 6*b8552abfSAlexey Bataev } 7*b8552abfSAlexey Bataev foobool(int argc)8*b8552abfSAlexey Bataevbool foobool(int argc) { 9*b8552abfSAlexey Bataev return argc; 10*b8552abfSAlexey Bataev } 11*b8552abfSAlexey Bataev 12*b8552abfSAlexey Bataev struct S1; // expected-note {{declared here}} 13*b8552abfSAlexey Bataev 14*b8552abfSAlexey Bataev template <class T, class S> // expected-note {{declared here}} tmain(T argc,S ** argv)15*b8552abfSAlexey Bataevint tmain(T argc, S **argv) { 16*b8552abfSAlexey Bataev T z; 17*b8552abfSAlexey Bataev #pragma omp master taskloop simd final // expected-error {{expected '(' after 'final'}} 18*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 19*b8552abfSAlexey Bataev foo(); 20*b8552abfSAlexey Bataev #pragma omp master taskloop simd final( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 21*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 22*b8552abfSAlexey Bataev foo(); 23*b8552abfSAlexey Bataev #pragma omp master taskloop simd final() // expected-error {{expected expression}} 24*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 25*b8552abfSAlexey Bataev foo(); 26*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} 27*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 28*b8552abfSAlexey Bataev foo(); 29*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc + z)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}} 30*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 31*b8552abfSAlexey Bataev foo(); 32*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc > 0 ? argv[1] : argv[2]) 33*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 34*b8552abfSAlexey Bataev foo(); 35*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(foobool(argc)), final(true) // expected-error {{directive '#pragma omp master taskloop simd' cannot contain more than one 'final' clause}} 36*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 37*b8552abfSAlexey Bataev foo(); 38*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(S) // expected-error {{'S' does not refer to a value}} 39*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 40*b8552abfSAlexey Bataev foo(); 41*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argv[1] = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}} 42*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 43*b8552abfSAlexey Bataev foo(); 44*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}} 45*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 46*b8552abfSAlexey Bataev foo(); 47*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc) 48*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 49*b8552abfSAlexey Bataev foo(); 50*b8552abfSAlexey Bataev 51*b8552abfSAlexey Bataev return 0; 52*b8552abfSAlexey Bataev } 53*b8552abfSAlexey Bataev main(int argc,char ** argv)54*b8552abfSAlexey Bataevint main(int argc, char **argv) { 55*b8552abfSAlexey Bataev int z; 56*b8552abfSAlexey Bataev #pragma omp master taskloop simd final // expected-error {{expected '(' after 'final'}} 57*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 58*b8552abfSAlexey Bataev foo(); 59*b8552abfSAlexey Bataev #pragma omp master taskloop simd final( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 60*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 61*b8552abfSAlexey Bataev foo(); 62*b8552abfSAlexey Bataev #pragma omp master taskloop simd final() // expected-error {{expected expression}} 63*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 64*b8552abfSAlexey Bataev foo(); 65*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} 66*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 67*b8552abfSAlexey Bataev foo(); 68*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(z+argc)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}} 69*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 70*b8552abfSAlexey Bataev foo(); 71*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc > 0 ? argv[1] : argv[2]) 72*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 73*b8552abfSAlexey Bataev foo(); 74*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(foobool(argc)), final(true) // expected-error {{directive '#pragma omp master taskloop simd' cannot contain more than one 'final' clause}} 75*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 76*b8552abfSAlexey Bataev foo(); 77*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(S1) // expected-error {{'S1' does not refer to a value}} 78*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 79*b8552abfSAlexey Bataev foo(); 80*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argv[1] = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}} 81*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 82*b8552abfSAlexey Bataev foo(); 83*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}} 84*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 85*b8552abfSAlexey Bataev foo(); 86*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}} 87*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 88*b8552abfSAlexey Bataev foo(); 89*b8552abfSAlexey Bataev #pragma omp master taskloop simd final(if (tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 90*b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i) 91*b8552abfSAlexey Bataev foo(); 92*b8552abfSAlexey Bataev 93*b8552abfSAlexey Bataev return tmain(argc, argv); 94*b8552abfSAlexey Bataev } 95