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