Clang Project

clang_source_code/test/OpenMP/target_simd_is_device_ptr_messages.cpp
1// RUN: %clang_cc1 -std=c++11 -verify -fopenmp %s
2
3// RUN: %clang_cc1 -std=c++11 -verify -fopenmp-simd %s
4
5struct ST {
6  int *a;
7};
8typedef int arr[10];
9typedef ST STarr[10];
10struct SA {
11  const int d = 5;
12  const int da[5] = { 0 };
13  ST e;
14  ST g[10];
15  STarr &rg = g;
16  int i;
17  int &j = i;
18  int *k = &j;
19  int *&z = k;
20  int aa[10];
21  arr &raa = aa;
22  void func(int arg) {
23#pragma omp target simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}
24    for (int ii=0; ii<10; ii++)
25      ;
26#pragma omp target simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
27    for (int ii=0; ii<10; ii++)
28      ;
29#pragma omp target simd is_device_ptr() // expected-error {{expected expression}}
30    for (int ii=0; ii<10; ii++)
31      ;
32#pragma omp target simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
33    for (int ii=0; ii<10; ii++)
34      ;
35#pragma omp target 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'}}
36    for (int ii=0; ii<10; ii++)
37      ;
38#pragma omp target simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
39    for (int ii=0; ii<10; ii++)
40      ;
41#pragma omp target simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
42    for (int ii=0; ii<10; ii++)
43      ;
44#pragma omp target simd is_device_ptr(k) // OK
45    for (int ii=0; ii<10; ii++)
46      ;
47#pragma omp target simd is_device_ptr(z) // OK
48    for (int ii=0; ii<10; ii++)
49      ;
50#pragma omp target simd is_device_ptr(aa) // OK
51    for (int ii=0; ii<10; ii++)
52      ;
53#pragma omp target simd is_device_ptr(raa) // OK
54    for (int ii=0; ii<10; ii++)
55      ;   
56#pragma omp target simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
57    for (int ii=0; ii<10; ii++)
58      ;
59#pragma omp target simd is_device_ptr(g) // OK
60    for (int ii=0; ii<10; ii++)
61      ;
62#pragma omp target simd is_device_ptr(rg) // OK
63    for (int ii=0; ii<10; ii++)
64      ;
65#pragma omp target simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
66    for (int ii=0; ii<10; ii++)
67      ;
68#pragma omp target simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
69    for (int ii=0; ii<10; ii++)
70      ;
71#pragma omp target simd is_device_ptr(da) // OK
72    for (int ii=0; ii<10; ii++)
73      ;
74  return;
75 }
76};
77struct SB {
78  unsigned A;
79  unsigned B;
80  float Arr[100];
81  float *Ptr;
82  float *foo() {
83    return &Arr[0];
84  }
85};
86
87struct SC {
88  unsigned A : 2;
89  unsigned B : 3;
90  unsigned C;
91  unsigned D;
92  float Arr[100];
93  SB S;
94  SB ArrS[100];
95  SB *PtrS;
96  SB *&RPtrS;
97  float *Ptr;
98
99  SC(SB *&_RPtrS) : RPtrS(_RPtrS) {}
100};
101
102union SD {
103  unsigned A;
104  float B;
105};
106
107struct S1;
108extern S1 a;
109class S2 {
110  mutable int a;
111public:
112  S2():a(0) { }
113  S2(S2 &s2):a(s2.a) { }
114  static float S2s;
115  static const float S2sc;
116};
117const float S2::S2sc = 0;
118const S2 b;
119const S2 ba[5];
120class S3 {
121  int a;
122public:
123  S3():a(0) { }
124  S3(S3 &s3):a(s3.a) { }
125};
126const S3 c;
127const S3 ca[5];
128extern const int f;
129class S4 {
130  int a;
131  S4();
132  S4(const S4 &s4);
133public:
134  S4(int v):a(v) { }
135};
136class S5 {
137  int a;
138  S5():a(0) {}
139  S5(const S5 &s5):a(s5.a) { }
140public:
141  S5(int v):a(v) { }
142};
143
144S3 h;
145#pragma omp threadprivate(h)
146
147typedef struct {
148  int a;
149} S6;
150
151template <typename T, int I>
152T tmain(T argc) {
153  const T d = 5;
154  const T da[5] = { 0 };
155  S4 e(4);
156  S5 g(5);
157  S6 h[10];
158  auto &rh = h;
159  T i;
160  T &j = i;
161  T *k = &j;
162  T *&z = k;
163  T aa[10];
164  auto &raa = aa;
165#pragma omp target simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}
166  for (int kk=0; kk<20; kk++)
167    ;
168#pragma omp target simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
169  for (int kk=0; kk<20; kk++)
170    ;
171#pragma omp target simd is_device_ptr() // expected-error {{expected expression}}
172  for (int kk=0; kk<20; kk++)
173    ;
174#pragma omp target simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
175  for (int kk=0; kk<20; kk++)
176    ;
177#pragma omp target 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 kk=0; kk<20; kk++)
179    ;
180#pragma omp target 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 kk=0; kk<20; kk++)
182    ;
183#pragma omp target 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 kk=0; kk<20; kk++)
185    ;
186#pragma omp target simd is_device_ptr(k) // OK
187  for (int kk=0; kk<20; kk++)
188    ;
189#pragma omp target simd is_device_ptr(z) // OK
190  for (int kk=0; kk<20; kk++)
191    ;
192#pragma omp target simd is_device_ptr(aa) // OK
193  for (int kk=0; kk<20; kk++)
194    ;
195#pragma omp target simd is_device_ptr(raa) // OK
196  for (int kk=0; kk<20; kk++)
197    ;
198#pragma omp target 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 kk=0; kk<20; kk++)
200    ;
201#pragma omp target 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 kk=0; kk<20; kk++)
203    ;
204#pragma omp target simd is_device_ptr(h) // OK
205  for (int kk=0; kk<20; kk++)
206    ;
207#pragma omp target simd is_device_ptr(rh) // OK
208  for (int kk=0; kk<20; kk++)
209    ;
210#pragma omp target 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 kk=0; kk<20; kk++)
212    ;
213#pragma omp target 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 kk=0; kk<20; kk++)
215    ;
216#pragma omp target simd is_device_ptr(da) // OK
217  for (int kk=0; kk<20; kk++)
218    ;
219  return 0;
220}
221
222int main(int argc, char **argv) {
223  const int d = 5;
224  const int da[5] = { 0 };
225  S4 e(4);
226  S5 g(5);
227  S6 h[10];
228  auto &rh = h;
229  int i;
230  int &j = i;
231  int *k = &j;
232  int *&z = k;
233  int aa[10];
234  auto &raa = aa;
235#pragma omp target simd is_device_ptr // expected-error {{expected '(' after 'is_device_ptr'}}
236  for (int kk=0; kk<20; kk++)
237    ;
238#pragma omp target simd is_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
239  for (int kk=0; kk<20; kk++)
240    ;
241#pragma omp target simd is_device_ptr() // expected-error {{expected expression}}
242  for (int kk=0; kk<20; kk++)
243    ;
244#pragma omp target simd is_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
245  for (int kk=0; kk<20; kk++)
246    ;
247#pragma omp target 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'}}
248  for (int kk=0; kk<20; kk++)
249    ;
250#pragma omp target simd is_device_ptr(i) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
251  for (int kk=0; kk<20; kk++)
252    ;
253#pragma omp target simd is_device_ptr(j) // expected-error {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
254  for (int kk=0; kk<20; kk++)
255    ;
256#pragma omp target simd is_device_ptr(k) // OK
257  for (int kk=0; kk<20; kk++)
258    ;
259#pragma omp target simd is_device_ptr(z) // OK
260  for (int kk=0; kk<20; kk++)
261    ;
262#pragma omp target simd is_device_ptr(aa) // OK
263  for (int kk=0; kk<20; kk++)
264    ;
265#pragma omp target simd is_device_ptr(raa) // OK
266  for (int kk=0; kk<20; kk++)
267    ;
268#pragma omp target simd is_device_ptr(e) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
269  for (int kk=0; kk<20; kk++)
270    ;
271#pragma omp target simd is_device_ptr(g) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
272  for (int kk=0; kk<20; kk++)
273    ;
274#pragma omp target simd is_device_ptr(h) // OK
275  for (int kk=0; kk<20; kk++)
276    ;
277#pragma omp target simd is_device_ptr(rh) // OK
278  for (int kk=0; kk<20; kk++)
279    ;
280#pragma omp target simd is_device_ptr(k,i,j) // expected-error2 {{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
281  for (int kk=0; kk<20; kk++)
282    ;
283#pragma omp target simd is_device_ptr(d) // expected-error{{expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'}}
284  for (int kk=0; kk<20; kk++)
285    ;
286#pragma omp target simd is_device_ptr(da) // OK
287  for (int kk=0; kk<20; kk++)
288    ;
289  return tmain<int, 3>(argc); // expected-note {{in instantiation of function template specialization 'tmain<int, 3>' requested here}}
290}
291