1*ff260ad0SSaiyedul Islam // RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized
2103f3c9eSAlexey Bataev
3*ff260ad0SSaiyedul Islam // RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized
4103f3c9eSAlexey Bataev
foo()5103f3c9eSAlexey Bataev void foo() {
6103f3c9eSAlexey Bataev }
7103f3c9eSAlexey Bataev
foobool(int argc)8103f3c9eSAlexey Bataev bool foobool(int argc) {
9103f3c9eSAlexey Bataev return argc;
10103f3c9eSAlexey Bataev }
11103f3c9eSAlexey Bataev
xxx(int argc)12103f3c9eSAlexey Bataev void xxx(int argc) {
13103f3c9eSAlexey Bataev int cond; // expected-note {{initialize the variable 'cond' to silence this warning}}
14103f3c9eSAlexey Bataev #pragma omp for simd if(cond) // expected-warning {{variable 'cond' is uninitialized when used here}}
15103f3c9eSAlexey Bataev for (int i = 0; i < 10; ++i)
16103f3c9eSAlexey Bataev ;
17103f3c9eSAlexey Bataev }
18103f3c9eSAlexey Bataev
19103f3c9eSAlexey Bataev struct S1; // expected-note {{declared here}}
20103f3c9eSAlexey Bataev
21103f3c9eSAlexey Bataev template <class T, class S> // expected-note {{declared here}}
tmain(T argc,S ** argv)22103f3c9eSAlexey Bataev int tmain(T argc, S **argv) {
23103f3c9eSAlexey Bataev T z;
24103f3c9eSAlexey Bataev int i;
25103f3c9eSAlexey Bataev #pragma omp for simd if // expected-error {{expected '(' after 'if'}}
26103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
27103f3c9eSAlexey Bataev #pragma omp for simd if ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
28103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
29103f3c9eSAlexey Bataev #pragma omp for simd if () // expected-error {{expected expression}}
30103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
31103f3c9eSAlexey Bataev #pragma omp for simd if (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
32103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
33103f3c9eSAlexey Bataev #pragma omp for simd if (argc)) // expected-warning {{extra tokens at the end of '#pragma omp for simd' are ignored}}
34103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
35103f3c9eSAlexey Bataev #pragma omp for simd if (argc > 0 ? argv[1] : argv[2])
36103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
37103f3c9eSAlexey Bataev #pragma omp for simd if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp for simd' cannot contain more than one 'if' clause}}
38103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
39103f3c9eSAlexey Bataev #pragma omp for simd if (S) // expected-error {{'S' does not refer to a value}}
40103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
41103f3c9eSAlexey Bataev #pragma omp for simd if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
42103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
43103f3c9eSAlexey Bataev #pragma omp for simd if (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
44103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
45103f3c9eSAlexey Bataev #pragma omp for simd if(argc + z)
46103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
47103f3c9eSAlexey Bataev #pragma omp for simd if(simd : // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
48103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
49103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
50103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
51103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc)
52103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
53103f3c9eSAlexey Bataev #pragma omp for simd if(target : argc) // expected-error {{directive name modifier 'target' is not allowed for '#pragma omp for simd'}}
54103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
55103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc) if (simd :argc) // expected-error {{directive '#pragma omp for simd' cannot contain more than one 'if' clause with 'simd' name modifier}}
56103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
57103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc) if (argc) // expected-note {{previous clause with directive name modifier specified here}} expected-error {{no more 'if' clause is allowed}}
58103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
59103f3c9eSAlexey Bataev
60103f3c9eSAlexey Bataev return 0;
61103f3c9eSAlexey Bataev }
62103f3c9eSAlexey Bataev
main(int argc,char ** argv)63103f3c9eSAlexey Bataev int main(int argc, char **argv) {
64103f3c9eSAlexey Bataev int i, z;
65103f3c9eSAlexey Bataev #pragma omp for simd if // expected-error {{expected '(' after 'if'}}
66103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
67103f3c9eSAlexey Bataev #pragma omp for simd if ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
68103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
69103f3c9eSAlexey Bataev #pragma omp for simd if () // expected-error {{expected expression}}
70103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
71103f3c9eSAlexey Bataev #pragma omp for simd if (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
72103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
73103f3c9eSAlexey Bataev #pragma omp for simd if (argc)) // expected-warning {{extra tokens at the end of '#pragma omp for simd' are ignored}}
74103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
75103f3c9eSAlexey Bataev #pragma omp for simd if (argc > 0 ? argv[1] : argv[2])
76103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
77103f3c9eSAlexey Bataev #pragma omp for simd if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp for simd' cannot contain more than one 'if' clause}}
78103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
79103f3c9eSAlexey Bataev #pragma omp for simd if (S1) // expected-error {{'S1' does not refer to a value}}
80103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
81103f3c9eSAlexey Bataev #pragma omp for simd if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
82103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
83103f3c9eSAlexey Bataev #pragma omp for simd if (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
84103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
85103f3c9eSAlexey Bataev #pragma omp for simd if (1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}}
86103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
87103f3c9eSAlexey Bataev #pragma omp for simd if(if(tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
88103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
89103f3c9eSAlexey Bataev #pragma omp for simd if(simd : // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
90103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
91103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
92103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
93103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc + z) if (for:argc) // expected-error {{directive name modifier 'for' is not allowed for '#pragma omp for simd'}}
94103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
95103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc) if (simd :argc) // expected-error {{directive '#pragma omp for simd' cannot contain more than one 'if' clause with 'simd' name modifier}}
96103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
97103f3c9eSAlexey Bataev #pragma omp for simd if(simd : argc) if (argc) // expected-note {{previous clause with directive name modifier specified here}} expected-error {{no more 'if' clause is allowed}}
98103f3c9eSAlexey Bataev for (i = 0; i < argc; ++i) foo();
99103f3c9eSAlexey Bataev
100103f3c9eSAlexey Bataev return tmain(argc, argv);
101103f3c9eSAlexey Bataev }
102