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