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