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