Clang Project

clang_source_code/test/OpenMP/target_data_use_device_ptr_messages.cpp
1// RUN: %clang_cc1 -std=c++11 -verify -fopenmp -ferror-limit 200 %s
2
3// RUN: %clang_cc1 -std=c++11 -verify -fopenmp-simd -ferror-limit 200 %s
4struct ST {
5  int *a;
6};
7struct SA {
8  const int d = 5;
9  const int da[5] = { 0 };
10  ST e;
11  ST g[10];
12  int i;
13  int &j = i;
14  int *k = &j;
15  int *&z = k;
16  int aa[10];
17  void func(int arg) {
18#pragma omp target data map(i) use_device_ptr // expected-error {{expected '(' after 'use_device_ptr'}}
19    {}
20#pragma omp target data map(i) use_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
21    {}
22#pragma omp target data map(i) use_device_ptr() // expected-error {{expected expression}}
23    {}
24#pragma omp target data map(i) use_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
25    {}
26#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}}
27    {}
28#pragma omp target data map(i) use_device_ptr(i) // expected-error {{expected pointer or reference to pointer in 'use_device_ptr' clause}}
29    {}
30#pragma omp target data map(i) use_device_ptr(j) // expected-error {{expected pointer or reference to pointer in 'use_device_ptr' clause}}
31    {}
32#pragma omp target data map(i) use_device_ptr(k) // OK
33    {}
34#pragma omp target data map(i) use_device_ptr(z) // OK
35    {}
36#pragma omp target data map(i) use_device_ptr(aa) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
37    {}
38#pragma omp target data map(i) use_device_ptr(e) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
39    {}
40#pragma omp target data map(i) use_device_ptr(g) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
41    {}
42#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}}
43    {}
44#pragma omp target data map(i) use_device_ptr(d) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
45    {}
46#pragma omp target data map(i) use_device_ptr(da) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
47    {}
48  return;
49 }
50};
51struct SB {
52  unsigned A;
53  unsigned B;
54  float Arr[100];
55  float *Ptr;
56  float *foo() {
57    return &Arr[0];
58  }
59};
60
61struct SC {
62  unsigned A : 2;
63  unsigned B : 3;
64  unsigned C;
65  unsigned D;
66  float Arr[100];
67  SB S;
68  SB ArrS[100];
69  SB *PtrS;
70  SB *&RPtrS;
71  float *Ptr;
72
73  SC(SB *&_RPtrS) : RPtrS(_RPtrS) {}
74};
75
76union SD {
77  unsigned A;
78  float B;
79};
80
81struct S1;
82extern S1 a;
83class S2 {
84  mutable int a;
85public:
86  S2():a(0) { }
87  S2(S2 &s2):a(s2.a) { }
88  static float S2s;
89  static const float S2sc;
90};
91const float S2::S2sc = 0;
92const S2 b;
93const S2 ba[5];
94class S3 {
95  int a;
96public:
97  S3():a(0) { }
98  S3(S3 &s3):a(s3.a) { }
99};
100const S3 c;
101const S3 ca[5];
102extern const int f;
103class S4 {
104  int a;
105  S4();
106  S4(const S4 &s4);
107public:
108  S4(int v):a(v) { }
109};
110class S5 {
111  int a;
112  S5():a(0) {}
113  S5(const S5 &s5):a(s5.a) { }
114public:
115  S5(int v):a(v) { }
116};
117
118S3 h;
119#pragma omp threadprivate(h)
120
121typedef int from;
122
123template <typename T, int I>
124T tmain(T argc) {
125  const T d = 5;
126  const T da[5] = { 0 };
127  S4 e(4);
128  S5 g(5);
129  T i;
130  T &j = i;
131  T *k = &j;
132  T *&z = k;
133  T aa[10];
134#pragma omp target data map(i) use_device_ptr // expected-error {{expected '(' after 'use_device_ptr'}}
135  {}
136#pragma omp target data map(i) use_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
137  {}
138#pragma omp target data map(i) use_device_ptr() // expected-error {{expected expression}}
139  {}
140#pragma omp target data map(i) use_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
141  {}
142#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}}
143  {}
144#pragma omp target data map(i) use_device_ptr(i) // expected-error {{expected pointer or reference to pointer in 'use_device_ptr' clause}}
145  {}
146#pragma omp target data map(i) use_device_ptr(j) // expected-error {{expected pointer or reference to pointer in 'use_device_ptr' clause}}
147  {}
148#pragma omp target data map(i) use_device_ptr(k) // OK
149  {}
150#pragma omp target data map(i) use_device_ptr(z) // OK
151  {}
152#pragma omp target data map(i) use_device_ptr(aa) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
153  {}
154#pragma omp target data map(i) use_device_ptr(e) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
155  {}
156#pragma omp target data map(i) use_device_ptr(g) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
157  {}
158#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}}
159  {}
160#pragma omp target data map(i) use_device_ptr(d) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
161  {}
162#pragma omp target data map(i) use_device_ptr(da) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
163  {}
164  return 0;
165}
166
167int main(int argc, char **argv) {
168  const int d = 5;
169  const int da[5] = { 0 };
170  S4 e(4);
171  S5 g(5);
172  int i;
173  int &j = i;
174  int *k = &j;
175  int *&z = k;
176  int aa[10];
177#pragma omp target data map(i) use_device_ptr // expected-error {{expected '(' after 'use_device_ptr'}}
178  {}
179#pragma omp target data map(i) use_device_ptr( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{expected expression}}
180  {}
181#pragma omp target data map(i) use_device_ptr() // expected-error {{expected expression}}
182  {}
183#pragma omp target data map(i) use_device_ptr(alloc) // expected-error {{use of undeclared identifier 'alloc'}}
184  {}
185#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}}
186  {}
187#pragma omp target data map(i) use_device_ptr(i) // expected-error {{expected pointer or reference to pointer in 'use_device_ptr' clause}}
188  {}
189#pragma omp target data map(i) use_device_ptr(j) // expected-error {{expected pointer or reference to pointer in 'use_device_ptr' clause}}
190  {}
191#pragma omp target data map(i) use_device_ptr(k) // OK
192  {}
193#pragma omp target data map(i) use_device_ptr(z) // OK
194  {}
195#pragma omp target data map(i) use_device_ptr(aa) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
196  {}
197#pragma omp target data map(i) use_device_ptr(e) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
198  {}
199#pragma omp target data map(i) use_device_ptr(g) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
200  {}
201#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}}
202  {}
203#pragma omp target data map(i) use_device_ptr(d) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
204  {}
205#pragma omp target data map(i) use_device_ptr(da) // expected-error{{expected pointer or reference to pointer in 'use_device_ptr' clause}}
206  {}
207  return tmain<int, 3>(argc); // expected-note {{in instantiation of function template specialization 'tmain<int, 3>' requested here}}
208}
209