1b6e7084eSAlexey Bataev // RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 -triple x86_64-unknown-unknown %s -Wuninitialized
2ff260ad0SSaiyedul Islam // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp50 -triple x86_64-unknown-unknown %s -Wuninitialized
3b8552abfSAlexey Bataev
4b6e7084eSAlexey Bataev // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45 -triple x86_64-unknown-unknown %s -Wuninitialized
5ff260ad0SSaiyedul Islam // RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp50 -triple x86_64-unknown-unknown %s -Wuninitialized
6b8552abfSAlexey Bataev
xxx(int argc)7b8552abfSAlexey Bataev void xxx(int argc) {
8b8552abfSAlexey Bataev int x; // expected-note {{initialize the variable 'x' to silence this warning}}
9b8552abfSAlexey Bataev #pragma omp master taskloop simd
10b8552abfSAlexey Bataev for (int i = 0; i < 10; ++i)
11b8552abfSAlexey Bataev argc = x; // expected-warning {{variable 'x' is uninitialized when used here}}
12b8552abfSAlexey Bataev }
13b8552abfSAlexey Bataev
14b8552abfSAlexey Bataev // expected-error@+1 {{unexpected OpenMP directive '#pragma omp master taskloop simd'}}
15b8552abfSAlexey Bataev #pragma omp master taskloop simd
16b8552abfSAlexey Bataev
17b8552abfSAlexey Bataev // expected-error@+1 {{unexpected OpenMP directive '#pragma omp master taskloop simd'}}
18b8552abfSAlexey Bataev #pragma omp master taskloop simd foo
19b8552abfSAlexey Bataev
test_no_clause(void)20*e9e55acdSAaron Ballman void test_no_clause(void) {
21b8552abfSAlexey Bataev int i;
22b8552abfSAlexey Bataev #pragma omp master taskloop simd
23b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
24b8552abfSAlexey Bataev ;
25b8552abfSAlexey Bataev
26b8552abfSAlexey Bataev // expected-error@+2 {{statement after '#pragma omp master taskloop simd' must be a for loop}}
27b8552abfSAlexey Bataev #pragma omp master taskloop simd
28b8552abfSAlexey Bataev ++i;
29b8552abfSAlexey Bataev }
30b8552abfSAlexey Bataev
test_branch_protected_scope(void)31*e9e55acdSAaron Ballman void test_branch_protected_scope(void) {
32b8552abfSAlexey Bataev int i = 0;
33b8552abfSAlexey Bataev L1:
34b8552abfSAlexey Bataev ++i;
35b8552abfSAlexey Bataev
36b8552abfSAlexey Bataev int x[24];
37b8552abfSAlexey Bataev
38b8552abfSAlexey Bataev #pragma omp parallel
39b8552abfSAlexey Bataev #pragma omp master taskloop simd
40b8552abfSAlexey Bataev for (i = 0; i < 16; ++i) {
41b8552abfSAlexey Bataev if (i == 5)
42b8552abfSAlexey Bataev goto L1; // expected-error {{use of undeclared label 'L1'}}
43b8552abfSAlexey Bataev else if (i == 6)
44b8552abfSAlexey Bataev return; // expected-error {{cannot return from OpenMP region}}
45b8552abfSAlexey Bataev else if (i == 7)
46b8552abfSAlexey Bataev goto L2;
47b8552abfSAlexey Bataev else if (i == 8) {
48b8552abfSAlexey Bataev L2:
49b8552abfSAlexey Bataev x[i]++;
50b8552abfSAlexey Bataev }
51b8552abfSAlexey Bataev }
52b8552abfSAlexey Bataev
53b8552abfSAlexey Bataev if (x[0] == 0)
54b8552abfSAlexey Bataev goto L2; // expected-error {{use of undeclared label 'L2'}}
55b8552abfSAlexey Bataev else if (x[1] == 1)
56b8552abfSAlexey Bataev goto L1;
57b8552abfSAlexey Bataev }
58b8552abfSAlexey Bataev
test_invalid_clause(void)59*e9e55acdSAaron Ballman void test_invalid_clause(void) {
60b8552abfSAlexey Bataev int i;
61b8552abfSAlexey Bataev #pragma omp parallel
62b8552abfSAlexey Bataev // expected-warning@+1 {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
63b8552abfSAlexey Bataev #pragma omp master taskloop simd foo bar
64b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
65b8552abfSAlexey Bataev ;
66b8552abfSAlexey Bataev // expected-error@+1 {{directive '#pragma omp master taskloop simd' cannot contain more than one 'nogroup' clause}}
67b8552abfSAlexey Bataev #pragma omp master taskloop simd nogroup nogroup
68b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
69b8552abfSAlexey Bataev ;
70b8552abfSAlexey Bataev }
71b8552abfSAlexey Bataev
test_non_identifiers(void)72*e9e55acdSAaron Ballman void test_non_identifiers(void) {
73b8552abfSAlexey Bataev int i, x;
74b8552abfSAlexey Bataev
75b8552abfSAlexey Bataev #pragma omp parallel
76b8552abfSAlexey Bataev // expected-warning@+1 {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
77b8552abfSAlexey Bataev #pragma omp master taskloop simd;
78b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
79b8552abfSAlexey Bataev ;
80b8552abfSAlexey Bataev // expected-warning@+2 {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
81b8552abfSAlexey Bataev #pragma omp parallel
82b8552abfSAlexey Bataev #pragma omp master taskloop simd linear(x);
83b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
84b8552abfSAlexey Bataev ;
85b8552abfSAlexey Bataev
86b8552abfSAlexey Bataev #pragma omp parallel
87b8552abfSAlexey Bataev // expected-warning@+1 {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
88b8552abfSAlexey Bataev #pragma omp master taskloop simd private(x);
89b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
90b8552abfSAlexey Bataev ;
91b8552abfSAlexey Bataev
92b8552abfSAlexey Bataev #pragma omp parallel
93b8552abfSAlexey Bataev // expected-warning@+1 {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
94b8552abfSAlexey Bataev #pragma omp master taskloop simd, private(x);
95b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
96b8552abfSAlexey Bataev ;
97b8552abfSAlexey Bataev }
98b8552abfSAlexey Bataev
99*e9e55acdSAaron Ballman extern int foo(void);
100b8552abfSAlexey Bataev
test_collapse(void)101*e9e55acdSAaron Ballman void test_collapse(void) {
102b8552abfSAlexey Bataev int i;
103b8552abfSAlexey Bataev #pragma omp parallel
104b8552abfSAlexey Bataev // expected-error@+1 {{expected '('}}
105b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse
106b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
107b8552abfSAlexey Bataev ;
108b8552abfSAlexey Bataev #pragma omp parallel
109b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
110b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(
111b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
112b8552abfSAlexey Bataev ;
113b8552abfSAlexey Bataev #pragma omp parallel
114b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
115b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse()
116b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
117b8552abfSAlexey Bataev ;
118b8552abfSAlexey Bataev #pragma omp parallel
119b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
120b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(,
121b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
122b8552abfSAlexey Bataev ;
123b8552abfSAlexey Bataev #pragma omp parallel
124b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
125b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(, )
126b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
127b8552abfSAlexey Bataev ;
128b8552abfSAlexey Bataev #pragma omp parallel
129b8552abfSAlexey Bataev // expected-warning@+2 {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
130b8552abfSAlexey Bataev // expected-error@+1 {{expected '('}}
131b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse 4)
132b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
133b8552abfSAlexey Bataev ;
134b8552abfSAlexey Bataev #pragma omp parallel
135b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}}
136b8552abfSAlexey Bataev // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
137b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4
138b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
139b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
140b8552abfSAlexey Bataev #pragma omp parallel
141b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}}
142b8552abfSAlexey Bataev // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
143b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4,
144b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
145b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
146b8552abfSAlexey Bataev #pragma omp parallel
147b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}}
148b8552abfSAlexey Bataev // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
149b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4, )
150b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
151b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
152b8552abfSAlexey Bataev #pragma omp parallel
153b8552abfSAlexey Bataev // expected-note@+1 {{as specified in 'collapse' clause}}
154b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4)
155b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
156b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
157b8552abfSAlexey Bataev #pragma omp parallel
158b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}}
159b8552abfSAlexey Bataev // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
160b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4 4)
161b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
162b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
163b8552abfSAlexey Bataev #pragma omp parallel
164b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}}
165b8552abfSAlexey Bataev // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
166b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4, , 4)
167b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
168b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
169b8552abfSAlexey Bataev #pragma omp parallel
170b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4)
171b8552abfSAlexey Bataev for (int i1 = 0; i1 < 16; ++i1)
172b8552abfSAlexey Bataev for (int i2 = 0; i2 < 16; ++i2)
173b8552abfSAlexey Bataev for (int i3 = 0; i3 < 16; ++i3)
174b8552abfSAlexey Bataev for (int i4 = 0; i4 < 16; ++i4)
175b8552abfSAlexey Bataev foo();
176b8552abfSAlexey Bataev #pragma omp parallel
177b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}}
178b8552abfSAlexey Bataev // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
179b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(4, 8)
180b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
181b8552abfSAlexey Bataev ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
182b8552abfSAlexey Bataev #pragma omp parallel
1836f339367SRichard Smith // expected-error@+1 {{integer constant expression}}
184b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(2.5)
185b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
186b8552abfSAlexey Bataev ;
187b8552abfSAlexey Bataev #pragma omp parallel
1886f339367SRichard Smith // expected-error@+1 {{integer constant expression}}
189b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(foo())
190b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
191b8552abfSAlexey Bataev ;
192b8552abfSAlexey Bataev #pragma omp parallel
193b8552abfSAlexey Bataev // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
194b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(-5)
195b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
196b8552abfSAlexey Bataev ;
197b8552abfSAlexey Bataev #pragma omp parallel
198b8552abfSAlexey Bataev // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
199b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(0)
200b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
201b8552abfSAlexey Bataev ;
202b8552abfSAlexey Bataev #pragma omp parallel
203b8552abfSAlexey Bataev // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
204b8552abfSAlexey Bataev #pragma omp master taskloop simd collapse(5 - 5)
205b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
206b8552abfSAlexey Bataev ;
207b8552abfSAlexey Bataev }
208b8552abfSAlexey Bataev
test_private(void)209*e9e55acdSAaron Ballman void test_private(void) {
210b8552abfSAlexey Bataev int i;
211b8552abfSAlexey Bataev #pragma omp parallel
212b8552abfSAlexey Bataev // expected-error@+2 {{expected expression}}
213b8552abfSAlexey Bataev // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
214b8552abfSAlexey Bataev #pragma omp master taskloop simd private(
215b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
216b8552abfSAlexey Bataev ;
217b8552abfSAlexey Bataev #pragma omp parallel
218b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
219b8552abfSAlexey Bataev // expected-error@+1 2 {{expected expression}}
220b8552abfSAlexey Bataev #pragma omp master taskloop simd private(,
221b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
222b8552abfSAlexey Bataev ;
223b8552abfSAlexey Bataev #pragma omp parallel
224b8552abfSAlexey Bataev // expected-error@+1 2 {{expected expression}}
225b8552abfSAlexey Bataev #pragma omp master taskloop simd private(, )
226b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
227b8552abfSAlexey Bataev ;
228b8552abfSAlexey Bataev #pragma omp parallel
229b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
230b8552abfSAlexey Bataev #pragma omp master taskloop simd private()
231b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
232b8552abfSAlexey Bataev ;
233b8552abfSAlexey Bataev #pragma omp parallel
234b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
235b8552abfSAlexey Bataev #pragma omp master taskloop simd private(int)
236b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
237b8552abfSAlexey Bataev ;
238b8552abfSAlexey Bataev #pragma omp parallel
239b8552abfSAlexey Bataev // expected-error@+1 {{expected variable name}}
240b8552abfSAlexey Bataev #pragma omp master taskloop simd private(0)
241b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
242b8552abfSAlexey Bataev ;
243b8552abfSAlexey Bataev
244b8552abfSAlexey Bataev int x, y, z;
245b8552abfSAlexey Bataev #pragma omp parallel
246b8552abfSAlexey Bataev #pragma omp master taskloop simd private(x)
247b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
248b8552abfSAlexey Bataev ;
249b8552abfSAlexey Bataev #pragma omp parallel
250b8552abfSAlexey Bataev #pragma omp master taskloop simd private(x, y)
251b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
252b8552abfSAlexey Bataev ;
253b8552abfSAlexey Bataev #pragma omp parallel
254b8552abfSAlexey Bataev #pragma omp master taskloop simd private(x, y, z)
255b8552abfSAlexey Bataev for (i = 0; i < 16; ++i) {
256b8552abfSAlexey Bataev x = y * i + z;
257b8552abfSAlexey Bataev }
258b8552abfSAlexey Bataev }
259b8552abfSAlexey Bataev
test_lastprivate(void)260*e9e55acdSAaron Ballman void test_lastprivate(void) {
261b8552abfSAlexey Bataev int i;
262b8552abfSAlexey Bataev #pragma omp parallel
263b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
264b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
265b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(
266b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
267b8552abfSAlexey Bataev ;
268b8552abfSAlexey Bataev
269b8552abfSAlexey Bataev #pragma omp parallel
270b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
271b8552abfSAlexey Bataev // expected-error@+1 2 {{expected expression}}
272b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(,
273b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
274b8552abfSAlexey Bataev ;
275b8552abfSAlexey Bataev #pragma omp parallel
276b8552abfSAlexey Bataev // expected-error@+1 2 {{expected expression}}
277b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(, )
278b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
279b8552abfSAlexey Bataev ;
280b8552abfSAlexey Bataev #pragma omp parallel
281b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
282b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate()
283b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
284b8552abfSAlexey Bataev ;
285b8552abfSAlexey Bataev #pragma omp parallel
286b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
287b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(int)
288b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
289b8552abfSAlexey Bataev ;
290b8552abfSAlexey Bataev #pragma omp parallel
291b8552abfSAlexey Bataev // expected-error@+1 {{expected variable name}}
292b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(0)
293b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
294b8552abfSAlexey Bataev ;
295b8552abfSAlexey Bataev
296b8552abfSAlexey Bataev int x, y, z;
297b8552abfSAlexey Bataev #pragma omp parallel
298b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(x)
299b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
300b8552abfSAlexey Bataev ;
301b8552abfSAlexey Bataev #pragma omp parallel
302b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(x, y)
303b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
304b8552abfSAlexey Bataev ;
305b8552abfSAlexey Bataev #pragma omp parallel
306b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(x, y, z)
307b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
308b8552abfSAlexey Bataev ;
309b8552abfSAlexey Bataev }
310b8552abfSAlexey Bataev
test_firstprivate(void)311*e9e55acdSAaron Ballman void test_firstprivate(void) {
312b8552abfSAlexey Bataev int i;
313b8552abfSAlexey Bataev #pragma omp parallel
314b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
315b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
316b8552abfSAlexey Bataev #pragma omp master taskloop simd firstprivate(
317b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
318b8552abfSAlexey Bataev ;
319b8552abfSAlexey Bataev
320b8552abfSAlexey Bataev #pragma omp parallel
321b8552abfSAlexey Bataev // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
322b8552abfSAlexey Bataev // expected-error@+1 2 {{expected expression}}
323b8552abfSAlexey Bataev #pragma omp master taskloop simd firstprivate(,
324b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
325b8552abfSAlexey Bataev ;
326b8552abfSAlexey Bataev #pragma omp parallel
327b8552abfSAlexey Bataev // expected-error@+1 2 {{expected expression}}
328b8552abfSAlexey Bataev #pragma omp master taskloop simd firstprivate(, )
329b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
330b8552abfSAlexey Bataev ;
331b8552abfSAlexey Bataev #pragma omp parallel
332b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
333b8552abfSAlexey Bataev #pragma omp master taskloop simd firstprivate()
334b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
335b8552abfSAlexey Bataev ;
336b8552abfSAlexey Bataev #pragma omp parallel
337b8552abfSAlexey Bataev // expected-error@+1 {{expected expression}}
338b8552abfSAlexey Bataev #pragma omp master taskloop simd firstprivate(int)
339b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
340b8552abfSAlexey Bataev ;
341b8552abfSAlexey Bataev #pragma omp parallel
342b8552abfSAlexey Bataev // expected-error@+1 {{expected variable name}}
343b8552abfSAlexey Bataev #pragma omp master taskloop simd firstprivate(0)
344b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
345b8552abfSAlexey Bataev ;
346b8552abfSAlexey Bataev
347b8552abfSAlexey Bataev int x, y, z;
348b8552abfSAlexey Bataev #pragma omp parallel
349b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(x) firstprivate(x)
350b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
351b8552abfSAlexey Bataev ;
352b8552abfSAlexey Bataev #pragma omp parallel
353b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(x, y) firstprivate(x, y)
354b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
355b8552abfSAlexey Bataev ;
356b8552abfSAlexey Bataev #pragma omp parallel
357b8552abfSAlexey Bataev #pragma omp master taskloop simd lastprivate(x, y, z) firstprivate(x, y, z)
358b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
359b8552abfSAlexey Bataev ;
360b8552abfSAlexey Bataev // expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}
361b8552abfSAlexey Bataev #pragma omp master taskloop simd simdlen(64) safelen(8)
362b8552abfSAlexey Bataev for (i = 0; i < 16; ++i)
363b8552abfSAlexey Bataev ;
364b8552abfSAlexey Bataev }
365b8552abfSAlexey Bataev
test_loop_messages(void)366*e9e55acdSAaron Ballman void test_loop_messages(void) {
367b8552abfSAlexey Bataev float a[100], b[100], c[100];
368b8552abfSAlexey Bataev #pragma omp parallel
369b8552abfSAlexey Bataev // expected-error@+2 {{variable must be of integer or pointer type}}
370b8552abfSAlexey Bataev #pragma omp master taskloop simd
371b8552abfSAlexey Bataev for (float fi = 0; fi < 10.0; fi++) {
372b8552abfSAlexey Bataev c[(int)fi] = a[(int)fi] + b[(int)fi];
373b8552abfSAlexey Bataev }
374b8552abfSAlexey Bataev #pragma omp parallel
375b8552abfSAlexey Bataev // expected-error@+2 {{variable must be of integer or pointer type}}
376b8552abfSAlexey Bataev #pragma omp master taskloop simd
377b8552abfSAlexey Bataev for (double fi = 0; fi < 10.0; fi++) {
378b8552abfSAlexey Bataev c[(int)fi] = a[(int)fi] + b[(int)fi];
379b8552abfSAlexey Bataev }
380b8552abfSAlexey Bataev
381b8552abfSAlexey Bataev // expected-warning@+2 {{OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed}}
382b8552abfSAlexey Bataev #pragma omp master taskloop simd
383b8552abfSAlexey Bataev for (__int128 ii = 0; ii < 10; ii++) {
384b8552abfSAlexey Bataev c[ii] = a[ii] + b[ii];
385b8552abfSAlexey Bataev }
386b8552abfSAlexey Bataev }
387b8552abfSAlexey Bataev
test_nontemporal(void)388*e9e55acdSAaron Ballman void test_nontemporal(void) {
389b6e7084eSAlexey Bataev int i;
390b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
391b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(
392b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
393b6e7084eSAlexey Bataev ;
394b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
395b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(,
396b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
397b6e7084eSAlexey Bataev ;
398b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 2 {{expected expression}}
399b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(, )
400b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
401b6e7084eSAlexey Bataev ;
402b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{expected expression}}
403b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal()
404b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
405b6e7084eSAlexey Bataev ;
406b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{expected expression}}
407b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(int)
408b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
409b6e7084eSAlexey Bataev ;
410b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} omp50-error@+1 {{expected variable name}}
411b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(0)
412b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
413b6e7084eSAlexey Bataev ;
414b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}
415b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x)
416b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
417b6e7084eSAlexey Bataev ;
418b6e7084eSAlexey Bataev // expected-error@+2 {{use of undeclared identifier 'x'}}
419b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}
420b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x, y)
421b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
422b6e7084eSAlexey Bataev ;
423b6e7084eSAlexey Bataev // expected-error@+3 {{use of undeclared identifier 'x'}}
424b6e7084eSAlexey Bataev // expected-error@+2 {{use of undeclared identifier 'y'}}
425b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}
426b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x, y, z)
427b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
428b6e7084eSAlexey Bataev ;
429b6e7084eSAlexey Bataev
430b6e7084eSAlexey Bataev int x, y;
431b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
432b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x :)
433b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
434b6e7084eSAlexey Bataev ;
435b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}
436b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x :, )
437b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
438b6e7084eSAlexey Bataev ;
439b6e7084eSAlexey Bataev
440b6e7084eSAlexey Bataev // omp50-note@+2 {{defined as nontemporal}}
441b6e7084eSAlexey Bataev // omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} omp50-error@+1 {{a variable cannot appear in more than one nontemporal clause}}
442b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x) nontemporal(x)
443b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
444b6e7084eSAlexey Bataev ;
445b6e7084eSAlexey Bataev
446b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}}
447b6e7084eSAlexey Bataev #pragma omp master taskloop simd private(x) nontemporal(x)
448b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
449b6e7084eSAlexey Bataev ;
450b6e7084eSAlexey Bataev
451b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}}
452b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x) private(x)
453b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
454b6e7084eSAlexey Bataev ;
455b6e7084eSAlexey Bataev
456b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}
457b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x, y : 0)
458b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
459b6e7084eSAlexey Bataev ;
460b6e7084eSAlexey Bataev
461b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}}
462b6e7084eSAlexey Bataev #pragma omp master taskloop simd nontemporal(x) lastprivate(x)
463b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
464b6e7084eSAlexey Bataev ;
465b6e7084eSAlexey Bataev
466b6e7084eSAlexey Bataev // omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp master taskloop simd'}}
467b6e7084eSAlexey Bataev #pragma omp master taskloop simd lastprivate(x) nontemporal(x)
468b6e7084eSAlexey Bataev for (i = 0; i < 16; ++i)
469b6e7084eSAlexey Bataev ;
470b6e7084eSAlexey Bataev }
471b6e7084eSAlexey Bataev
472