1 // RUN: %clang_cc1 -std=c++11 -verify -fopenmp %s
3 // RUN: %clang_cc1 -std=c++11 -verify -fopenmp-simd %s
11 const int da[5] = { 0 };
22 #pragma omp target teams distribute parallel for simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}
23 for (int i=0; i<100; i++)
25 #pragma omp target teams distribute parallel for simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
26 for (int i=0; i<100; i++)
28 #pragma omp target teams distribute parallel for simd is_device_ptr() // expected-error {{expected expression}}
29 for (int i=0; i<100; i++)
31 #pragma omp target teams distribute parallel for simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
32 for (int i=0; i<100; i++)
34 #pragma omp target teams distribute parallel for simd is_device_ptr(arg // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
35 for (int i=0; i<100; i++)
37 #pragma omp target teams distribute parallel for simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
38 for (int i=0; i<100; i++)
40 #pragma omp target teams distribute parallel for simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
41 for (int i=0; i<100; i++)
43 #pragma omp target teams distribute parallel for simd is_device_ptr(k) // OK
44 for (int i=0; i<100; i++)
46 #pragma omp target teams distribute parallel for simd is_device_ptr(z) // OK
47 for (int i=0; i<100; i++)
49 #pragma omp target teams distribute parallel for simd is_device_ptr(aa) // OK
50 for (int i=0; i<100; i++)
52 #pragma omp target teams distribute parallel for simd is_device_ptr(raa) // OK
53 for (int i=0; i<100; i++)
55 #pragma omp target teams distribute parallel for simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
56 for (int i=0; i<100; i++)
58 #pragma omp target teams distribute parallel for simd is_device_ptr(g) // OK
59 for (int i=0; i<100; i++)
61 #pragma omp target teams distribute parallel for simd is_device_ptr(rg) // OK
62 for (int i=0; i<100; i++)
64 #pragma omp target teams distribute parallel for simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
65 for (int i=0; i<100; i++)
67 #pragma omp target teams distribute parallel for simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
68 for (int i=0; i<100; i++)
70 #pragma omp target teams distribute parallel for simd is_device_ptr(da) // OK
71 for (int i=0; i<100; i++)
98 SC(SB *&_RPtrS) : RPtrS(_RPtrS) {}
112 S2(S2 &s2):a(s2.a) { }
114 static const float S2sc;
116 const float S2::S2sc = 0;
123 S3(S3 &s3):a(s3.a) { }
138 S5(const S5 &s5):a(s5.a) { }
144 #pragma omp threadprivate(h)
150 template <typename T, int I>
153 const T da[5] = { 0 };
165 #pragma omp target teams distribute parallel for simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}
166 for (int i=0; i<100; i++)
168 #pragma omp target teams distribute parallel for simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
169 for (int i=0; i<100; i++)
171 #pragma omp target teams distribute parallel for simd is_device_ptr() // expected-error {{expected expression}}
172 for (int i=0; i<100; i++)
174 #pragma omp target teams distribute parallel for simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
175 for (int i=0; i<100; i++)
177 #pragma omp target teams distribute parallel for simd is_device_ptr(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
178 for (int i=0; i<100; i++)
180 #pragma omp target teams distribute parallel for simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
181 for (int i=0; i<100; i++)
183 #pragma omp target teams distribute parallel for simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
184 for (int i=0; i<100; i++)
186 #pragma omp target teams distribute parallel for simd is_device_ptr(k) // OK
187 for (int i=0; i<100; i++)
189 #pragma omp target teams distribute parallel for simd is_device_ptr(z) // OK
190 for (int i=0; i<100; i++)
192 #pragma omp target teams distribute parallel for simd is_device_ptr(aa) // OK
193 for (int i=0; i<100; i++)
195 #pragma omp target teams distribute parallel for simd is_device_ptr(raa) // OK
196 for (int i=0; i<100; i++)
198 #pragma omp target teams distribute parallel for simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
199 for (int i=0; i<100; i++)
201 #pragma omp target teams distribute parallel for simd is_device_ptr(g) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
202 for (int i=0; i<100; i++)
204 #pragma omp target teams distribute parallel for simd is_device_ptr(h) // OK
205 for (int i=0; i<100; i++)
207 #pragma omp target teams distribute parallel for simd is_device_ptr(rh) // OK
208 for (int i=0; i<100; i++)
210 #pragma omp target teams distribute parallel for simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
211 for (int i=0; i<100; i++)
213 #pragma omp target teams distribute parallel for simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
214 for (int i=0; i<100; i++)
216 #pragma omp target teams distribute parallel for simd is_device_ptr(da) // OK
217 for (int i=0; i<100; i++)
219 #pragma omp target teams distribute parallel for simd map(ps) is_device_ptr(ps) // expected-error{{variable already marked as mapped in current construct}} expected-note{{used here}}
220 for (int i=0; i<100; i++)
222 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) map(ps) // expected-error{{variable already marked as mapped in current construct}} expected-note{{used here}}
223 for (int i=0; i<100; i++)
225 #pragma omp target teams distribute parallel for simd map(ps->a) is_device_ptr(ps) // expected-error{{variable already marked as mapped in current construct}} expected-note{{used here}}
226 for (int i=0; i<100; i++)
228 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) map(ps->a) // expected-error{{pointer cannot be mapped along with a section derived from itself}} expected-note{{used here}}
229 for (int i=0; i<100; i++)
231 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) firstprivate(ps) // expected-error{{firstprivate variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}}
232 for (int i=0; i<100; i++)
234 #pragma omp target teams distribute parallel for simd firstprivate(ps) is_device_ptr(ps) // expected-error{{firstprivate variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}} expected-note{{defined as firstprivate}}
235 for (int i=0; i<100; i++)
237 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) private(ps) // expected-error{{private variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}}
238 for (int i=0; i<100; i++)
240 #pragma omp target teams distribute parallel for simd private(ps) is_device_ptr(ps) // expected-error{{private variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}} expected-note{{defined as private}}
241 for (int i=0; i<100; i++)
246 int main(int argc, char **argv) {
248 const int da[5] = { 0 };
260 #pragma omp target teams distribute parallel for simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}
261 for (int i=0; i<100; i++)
263 #pragma omp target teams distribute parallel for simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
264 for (int i=0; i<100; i++)
266 #pragma omp target teams distribute parallel for simd is_device_ptr() // expected-error {{expected expression}}
267 for (int i=0; i<100; i++)
269 #pragma omp target teams distribute parallel for simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
270 for (int i=0; i<100; i++)
272 #pragma omp target teams distribute parallel for simd is_device_ptr(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
273 for (int i=0; i<100; i++)
275 #pragma omp target teams distribute parallel for simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
276 for (int i=0; i<100; i++)
278 #pragma omp target teams distribute parallel for simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
279 for (int i=0; i<100; i++)
281 #pragma omp target teams distribute parallel for simd is_device_ptr(k) // OK
282 for (int i=0; i<100; i++)
284 #pragma omp target teams distribute parallel for simd is_device_ptr(z) // OK
285 for (int i=0; i<100; i++)
287 #pragma omp target teams distribute parallel for simd is_device_ptr(aa) // OK
288 for (int i=0; i<100; i++)
290 #pragma omp target teams distribute parallel for simd is_device_ptr(raa) // OK
291 for (int i=0; i<100; i++)
293 #pragma omp target teams distribute parallel for simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
294 for (int i=0; i<100; i++)
296 #pragma omp target teams distribute parallel for simd is_device_ptr(g) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
297 for (int i=0; i<100; i++)
299 #pragma omp target teams distribute parallel for simd is_device_ptr(h) // OK
300 for (int i=0; i<100; i++)
302 #pragma omp target teams distribute parallel for simd is_device_ptr(rh) // OK
303 for (int i=0; i<100; i++)
305 #pragma omp target teams distribute parallel for simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
306 for (int i=0; i<100; i++)
308 #pragma omp target teams distribute parallel for simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
309 for (int i=0; i<100; i++)
311 #pragma omp target teams distribute parallel for simd is_device_ptr(da) // OK
312 for (int i=0; i<100; i++)
314 #pragma omp target teams distribute parallel for simd map(ps) is_device_ptr(ps) // expected-error{{variable already marked as mapped in current construct}} expected-note{{used here}}
315 for (int i=0; i<100; i++)
317 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) map(ps) // expected-error{{variable already marked as mapped in current construct}} expected-note{{used here}}
318 for (int i=0; i<100; i++)
320 #pragma omp target teams distribute parallel for simd map(ps->a) is_device_ptr(ps) // expected-error{{variable already marked as mapped in current construct}} expected-note{{used here}}
321 for (int i=0; i<100; i++)
323 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) map(ps->a) // expected-error{{pointer cannot be mapped along with a section derived from itself}} expected-note{{used here}}
324 for (int i=0; i<100; i++)
326 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) firstprivate(ps) // expected-error{{firstprivate variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}}
327 for (int i=0; i<100; i++)
329 #pragma omp target teams distribute parallel for simd firstprivate(ps) is_device_ptr(ps) // expected-error{{firstprivate variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}} expected-note{{defined as firstprivate}}
330 for (int i=0; i<100; i++)
332 #pragma omp target teams distribute parallel for simd is_device_ptr(ps) private(ps) // expected-error{{private variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}}
333 for (int i=0; i<100; i++)
335 #pragma omp target teams distribute parallel for simd private(ps) is_device_ptr(ps) // expected-error{{private variable cannot be in a is_device_ptr clause in '#pragma omp target teams distribute parallel for simd' directive}} expected-note{{defined as private}}
336 for (int i=0; i<100; i++)
338 return tmain<int, 3>(argc); // expected-note {{in instantiation of function template specialization 'tmain<int, 3>' requested here}}