1 // RUN: %clang_cc1 %s -fopenacc -verify 2 3 void uses() { 4 #pragma acc parallel loop auto 5 for(unsigned i = 0; i < 5; ++i); 6 #pragma acc parallel loop seq 7 for(unsigned i = 0; i < 5; ++i); 8 #pragma acc parallel loop independent 9 for(unsigned i = 0; i < 5; ++i); 10 11 // expected-error@+2{{OpenACC clause 'seq' on 'parallel loop' construct conflicts with previous data dependence clause}} 12 // expected-note@+1{{previous clause is here}} 13 #pragma acc parallel loop auto seq 14 for(unsigned i = 0; i < 5; ++i); 15 // expected-error@+2{{OpenACC clause 'independent' on 'parallel loop' construct conflicts with previous data dependence clause}} 16 // expected-note@+1{{previous clause is here}} 17 #pragma acc parallel loop auto independent 18 for(unsigned i = 0; i < 5; ++i); 19 // expected-error@+2{{OpenACC clause 'auto' on 'parallel loop' construct conflicts with previous data dependence clause}} 20 // expected-note@+1{{previous clause is here}} 21 #pragma acc parallel loop seq auto 22 for(unsigned i = 0; i < 5; ++i); 23 // expected-error@+2{{OpenACC clause 'independent' on 'parallel loop' construct conflicts with previous data dependence clause}} 24 // expected-note@+1{{previous clause is here}} 25 #pragma acc parallel loop seq independent 26 for(unsigned i = 0; i < 5; ++i); 27 // expected-error@+2{{OpenACC clause 'auto' on 'parallel loop' construct conflicts with previous data dependence clause}} 28 // expected-note@+1{{previous clause is here}} 29 #pragma acc parallel loop independent auto 30 for(unsigned i = 0; i < 5; ++i); 31 // expected-error@+2{{OpenACC clause 'seq' on 'parallel loop' construct conflicts with previous data dependence clause}} 32 // expected-note@+1{{previous clause is here}} 33 #pragma acc parallel loop independent seq 34 for(unsigned i = 0; i < 5; ++i); 35 36 int Var; 37 int *VarPtr; 38 39 // 'auto' can combine with any other clause. 40 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}} 41 #pragma acc parallel loop auto finalize 42 for(unsigned i = 0; i < 5; ++i); 43 // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}} 44 #pragma acc parallel loop auto if_present 45 for(unsigned i = 0; i < 5; ++i); 46 #pragma acc parallel loop auto worker 47 for(unsigned i = 0; i < 5; ++i); 48 #pragma acc parallel loop auto vector 49 for(unsigned i = 0; i < 5; ++i); 50 // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}} 51 #pragma acc parallel loop auto nohost 52 for(unsigned i = 0; i < 5; ++i); 53 #pragma acc parallel loop auto default(none) 54 for(unsigned i = 0; i < 5; ++i); 55 #pragma acc parallel loop auto if(1) 56 for(unsigned i = 0; i < 5; ++i); 57 #pragma acc parallel loop auto self 58 for(unsigned i = 0; i < 5; ++i); 59 #pragma acc parallel loop auto copy(Var) 60 for(unsigned i = 0; i < 5; ++i); 61 // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}} 62 #pragma acc parallel loop auto pcopy(Var) 63 for(unsigned i = 0; i < 5; ++i); 64 // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}} 65 #pragma acc parallel loop auto present_or_copy(Var) 66 for(unsigned i = 0; i < 5; ++i); 67 // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}} 68 #pragma acc parallel loop auto use_device(Var) 69 for(unsigned i = 0; i < 5; ++i); 70 #pragma acc parallel loop auto attach(VarPtr) 71 for(unsigned i = 0; i < 5; ++i); 72 // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}} 73 #pragma acc parallel loop auto delete(Var) 74 for(unsigned i = 0; i < 5; ++i); 75 // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}} 76 #pragma acc parallel loop auto detach(Var) 77 for(unsigned i = 0; i < 5; ++i); 78 // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}} 79 #pragma acc parallel loop auto device(VarPtr) 80 for(unsigned i = 0; i < 5; ++i); 81 #pragma acc parallel loop auto deviceptr(VarPtr) 82 for(unsigned i = 0; i < 5; ++i); 83 // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}} 84 #pragma acc parallel loop auto device_resident(VarPtr) 85 for(unsigned i = 0; i < 5; ++i); 86 #pragma acc parallel loop auto firstprivate(Var) 87 for(unsigned i = 0; i < 5; ++i); 88 // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}} 89 #pragma acc parallel loop auto host(Var) 90 for(unsigned i = 0; i < 5; ++i); 91 // expected-warning@+1{{OpenACC clause 'link' not yet implemented}} 92 #pragma acc parallel loop auto link(Var) 93 for(unsigned i = 0; i < 5; ++i); 94 #pragma acc parallel loop auto no_create(Var) 95 for(unsigned i = 0; i < 5; ++i); 96 #pragma acc parallel loop auto present(Var) 97 for(unsigned i = 0; i < 5; ++i); 98 #pragma acc parallel loop auto private(Var) 99 for(unsigned i = 0; i < 5; ++i); 100 #pragma acc parallel loop auto copyout(Var) 101 for(unsigned i = 0; i < 5; ++i); 102 // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}} 103 #pragma acc parallel loop auto pcopyout(Var) 104 for(unsigned i = 0; i < 5; ++i); 105 // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}} 106 #pragma acc parallel loop auto present_or_copyout(Var) 107 for(unsigned i = 0; i < 5; ++i); 108 #pragma acc parallel loop auto copyin(Var) 109 for(unsigned i = 0; i < 5; ++i); 110 // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}} 111 #pragma acc parallel loop auto pcopyin(Var) 112 for(unsigned i = 0; i < 5; ++i); 113 // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}} 114 #pragma acc parallel loop auto present_or_copyin(Var) 115 for(unsigned i = 0; i < 5; ++i); 116 #pragma acc parallel loop auto create(Var) 117 for(unsigned i = 0; i < 5; ++i); 118 // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}} 119 #pragma acc parallel loop auto pcreate(Var) 120 for(unsigned i = 0; i < 5; ++i); 121 // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}} 122 #pragma acc parallel loop auto present_or_create(Var) 123 for(unsigned i = 0; i < 5; ++i); 124 #pragma acc parallel loop auto reduction(+:Var) 125 for(unsigned i = 0; i < 5; ++i); 126 #pragma acc parallel loop auto collapse(1) 127 for(unsigned i = 0; i < 5; ++i); 128 // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}} 129 #pragma acc parallel loop auto bind(Var) 130 for(unsigned i = 0; i < 5; ++i); 131 #pragma acc parallel loop auto vector_length(1) 132 for(unsigned i = 0; i < 5; ++i); 133 #pragma acc parallel loop auto num_gangs(1) 134 for(unsigned i = 0; i < 5; ++i); 135 #pragma acc parallel loop auto num_workers(1) 136 for(unsigned i = 0; i < 5; ++i); 137 // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}} 138 #pragma acc parallel loop auto device_num(1) 139 for(unsigned i = 0; i < 5; ++i); 140 // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}} 141 #pragma acc parallel loop auto default_async(1) 142 for(unsigned i = 0; i < 5; ++i); 143 #pragma acc parallel loop auto device_type(*) 144 for(unsigned i = 0; i < 5; ++i); 145 #pragma acc parallel loop auto dtype(*) 146 for(unsigned i = 0; i < 5; ++i); 147 #pragma acc parallel loop auto async 148 for(unsigned i = 0; i < 5; ++i); 149 #pragma acc parallel loop auto tile(1+2, 1) 150 for(unsigned j = 0; j < 5; ++j) 151 for(unsigned i = 0; i < 5; ++i); 152 #pragma acc parallel loop auto gang 153 for(unsigned i = 0; i < 5; ++i); 154 #pragma acc parallel loop auto wait 155 for(unsigned i = 0; i < 5; ++i); 156 157 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}} 158 #pragma acc parallel loop finalize auto 159 for(unsigned i = 0; i < 5; ++i); 160 // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}} 161 #pragma acc parallel loop if_present auto 162 for(unsigned i = 0; i < 5; ++i); 163 #pragma acc parallel loop worker auto 164 for(unsigned i = 0; i < 5; ++i); 165 #pragma acc parallel loop vector auto 166 for(unsigned i = 0; i < 5; ++i); 167 // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}} 168 #pragma acc parallel loop nohost auto 169 for(unsigned i = 0; i < 5; ++i); 170 #pragma acc parallel loop default(none) auto 171 for(unsigned i = 0; i < 5; ++i); 172 #pragma acc parallel loop if(1) auto 173 for(unsigned i = 0; i < 5; ++i); 174 #pragma acc parallel loop self auto 175 for(unsigned i = 0; i < 5; ++i); 176 #pragma acc parallel loop copy(Var) auto 177 for(unsigned i = 0; i < 5; ++i); 178 // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}} 179 #pragma acc parallel loop pcopy(Var) auto 180 for(unsigned i = 0; i < 5; ++i); 181 // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}} 182 #pragma acc parallel loop present_or_copy(Var) auto 183 for(unsigned i = 0; i < 5; ++i); 184 // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}} 185 #pragma acc parallel loop use_device(Var) auto 186 for(unsigned i = 0; i < 5; ++i); 187 #pragma acc parallel loop attach(VarPtr) auto 188 for(unsigned i = 0; i < 5; ++i); 189 // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}} 190 #pragma acc parallel loop delete(Var) auto 191 for(unsigned i = 0; i < 5; ++i); 192 // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}} 193 #pragma acc parallel loop detach(Var) auto 194 for(unsigned i = 0; i < 5; ++i); 195 // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}} 196 #pragma acc parallel loop device(VarPtr) auto 197 for(unsigned i = 0; i < 5; ++i); 198 #pragma acc parallel loop deviceptr(VarPtr) auto 199 for(unsigned i = 0; i < 5; ++i); 200 // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}} 201 #pragma acc parallel loop device_resident(VarPtr) auto 202 for(unsigned i = 0; i < 5; ++i); 203 #pragma acc parallel loop firstprivate(Var) auto 204 for(unsigned i = 0; i < 5; ++i); 205 // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}} 206 #pragma acc parallel loop host(Var) auto 207 for(unsigned i = 0; i < 5; ++i); 208 // expected-warning@+1{{OpenACC clause 'link' not yet implemented}} 209 #pragma acc parallel loop link(Var) auto 210 for(unsigned i = 0; i < 5; ++i); 211 #pragma acc parallel loop no_create(Var) auto 212 for(unsigned i = 0; i < 5; ++i); 213 #pragma acc parallel loop present(Var) auto 214 for(unsigned i = 0; i < 5; ++i); 215 #pragma acc parallel loop private(Var) auto 216 for(unsigned i = 0; i < 5; ++i); 217 #pragma acc parallel loop copyout(Var) auto 218 for(unsigned i = 0; i < 5; ++i); 219 // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}} 220 #pragma acc parallel loop pcopyout(Var) auto 221 for(unsigned i = 0; i < 5; ++i); 222 // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}} 223 #pragma acc parallel loop present_or_copyout(Var) auto 224 for(unsigned i = 0; i < 5; ++i); 225 #pragma acc parallel loop copyin(Var) auto 226 for(unsigned i = 0; i < 5; ++i); 227 // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}} 228 #pragma acc parallel loop pcopyin(Var) auto 229 for(unsigned i = 0; i < 5; ++i); 230 // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}} 231 #pragma acc parallel loop present_or_copyin(Var) auto 232 for(unsigned i = 0; i < 5; ++i); 233 #pragma acc parallel loop create(Var) auto 234 for(unsigned i = 0; i < 5; ++i); 235 // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}} 236 #pragma acc parallel loop pcreate(Var) auto 237 for(unsigned i = 0; i < 5; ++i); 238 // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}} 239 #pragma acc parallel loop present_or_create(Var) auto 240 for(unsigned i = 0; i < 5; ++i); 241 #pragma acc parallel loop reduction(+:Var) auto 242 for(unsigned i = 0; i < 5; ++i); 243 #pragma acc parallel loop collapse(1) auto 244 for(unsigned i = 0; i < 5; ++i); 245 // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}} 246 #pragma acc parallel loop bind(Var) auto 247 for(unsigned i = 0; i < 5; ++i); 248 #pragma acc parallel loop vector_length(1) auto 249 for(unsigned i = 0; i < 5; ++i); 250 #pragma acc parallel loop num_gangs(1) auto 251 for(unsigned i = 0; i < 5; ++i); 252 #pragma acc parallel loop num_workers(1) auto 253 for(unsigned i = 0; i < 5; ++i); 254 // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}} 255 #pragma acc parallel loop device_num(1) auto 256 for(unsigned i = 0; i < 5; ++i); 257 // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}} 258 #pragma acc parallel loop default_async(1) auto 259 for(unsigned i = 0; i < 5; ++i); 260 #pragma acc parallel loop device_type(*) auto 261 for(unsigned i = 0; i < 5; ++i); 262 #pragma acc parallel loop dtype(*) auto 263 for(unsigned i = 0; i < 5; ++i); 264 #pragma acc parallel loop async auto 265 for(unsigned i = 0; i < 5; ++i); 266 #pragma acc parallel loop tile(1+2, 1) auto 267 for(unsigned j = 0; j < 5; ++j) 268 for(unsigned i = 0; i < 5; ++i); 269 #pragma acc parallel loop gang auto 270 for(unsigned i = 0; i < 5; ++i); 271 #pragma acc parallel loop wait auto 272 for(unsigned i = 0; i < 5; ++i); 273 274 // 'independent' can also be combined with any clauses 275 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}} 276 #pragma acc parallel loop independent finalize 277 for(unsigned i = 0; i < 5; ++i); 278 // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}} 279 #pragma acc parallel loop independent if_present 280 for(unsigned i = 0; i < 5; ++i); 281 #pragma acc parallel loop independent worker 282 for(unsigned i = 0; i < 5; ++i); 283 #pragma acc parallel loop independent vector 284 for(unsigned i = 0; i < 5; ++i); 285 // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}} 286 #pragma acc parallel loop independent nohost 287 for(unsigned i = 0; i < 5; ++i); 288 #pragma acc parallel loop independent default(none) 289 for(unsigned i = 0; i < 5; ++i); 290 #pragma acc parallel loop independent if(1) 291 for(unsigned i = 0; i < 5; ++i); 292 #pragma acc parallel loop independent self 293 for(unsigned i = 0; i < 5; ++i); 294 #pragma acc parallel loop independent copy(Var) 295 for(unsigned i = 0; i < 5; ++i); 296 // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}} 297 #pragma acc parallel loop independent pcopy(Var) 298 for(unsigned i = 0; i < 5; ++i); 299 // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}} 300 #pragma acc parallel loop independent present_or_copy(Var) 301 for(unsigned i = 0; i < 5; ++i); 302 // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}} 303 #pragma acc parallel loop independent use_device(Var) 304 for(unsigned i = 0; i < 5; ++i); 305 #pragma acc parallel loop independent attach(VarPtr) 306 for(unsigned i = 0; i < 5; ++i); 307 // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}} 308 #pragma acc parallel loop independent delete(Var) 309 for(unsigned i = 0; i < 5; ++i); 310 // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}} 311 #pragma acc parallel loop independent detach(Var) 312 for(unsigned i = 0; i < 5; ++i); 313 // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}} 314 #pragma acc parallel loop independent device(VarPtr) 315 for(unsigned i = 0; i < 5; ++i); 316 #pragma acc parallel loop independent deviceptr(VarPtr) 317 for(unsigned i = 0; i < 5; ++i); 318 // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}} 319 #pragma acc parallel loop independent device_resident(VarPtr) 320 for(unsigned i = 0; i < 5; ++i); 321 #pragma acc parallel loop independent firstprivate(Var) 322 for(unsigned i = 0; i < 5; ++i); 323 // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}} 324 #pragma acc parallel loop independent host(Var) 325 for(unsigned i = 0; i < 5; ++i); 326 // expected-warning@+1{{OpenACC clause 'link' not yet implemented}} 327 #pragma acc parallel loop independent link(Var) 328 for(unsigned i = 0; i < 5; ++i); 329 #pragma acc parallel loop independent no_create(Var) 330 for(unsigned i = 0; i < 5; ++i); 331 #pragma acc parallel loop independent present(Var) 332 for(unsigned i = 0; i < 5; ++i); 333 #pragma acc parallel loop independent private(Var) 334 for(unsigned i = 0; i < 5; ++i); 335 #pragma acc parallel loop independent copyout(Var) 336 for(unsigned i = 0; i < 5; ++i); 337 // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}} 338 #pragma acc parallel loop independent pcopyout(Var) 339 for(unsigned i = 0; i < 5; ++i); 340 // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}} 341 #pragma acc parallel loop independent present_or_copyout(Var) 342 for(unsigned i = 0; i < 5; ++i); 343 #pragma acc parallel loop independent copyin(Var) 344 for(unsigned i = 0; i < 5; ++i); 345 // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}} 346 #pragma acc parallel loop independent pcopyin(Var) 347 for(unsigned i = 0; i < 5; ++i); 348 // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}} 349 #pragma acc parallel loop independent present_or_copyin(Var) 350 for(unsigned i = 0; i < 5; ++i); 351 #pragma acc parallel loop independent create(Var) 352 for(unsigned i = 0; i < 5; ++i); 353 // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}} 354 #pragma acc parallel loop independent pcreate(Var) 355 for(unsigned i = 0; i < 5; ++i); 356 // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}} 357 #pragma acc parallel loop independent present_or_create(Var) 358 for(unsigned i = 0; i < 5; ++i); 359 #pragma acc parallel loop independent reduction(+:Var) 360 for(unsigned i = 0; i < 5; ++i); 361 #pragma acc parallel loop independent collapse(1) 362 for(unsigned i = 0; i < 5; ++i); 363 // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}} 364 #pragma acc parallel loop independent bind(Var) 365 for(unsigned i = 0; i < 5; ++i); 366 #pragma acc parallel loop independent vector_length(1) 367 for(unsigned i = 0; i < 5; ++i); 368 #pragma acc parallel loop independent num_gangs(1) 369 for(unsigned i = 0; i < 5; ++i); 370 #pragma acc parallel loop independent num_workers(1) 371 for(unsigned i = 0; i < 5; ++i); 372 // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}} 373 #pragma acc parallel loop independent device_num(1) 374 for(unsigned i = 0; i < 5; ++i); 375 // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}} 376 #pragma acc parallel loop independent default_async(1) 377 for(unsigned i = 0; i < 5; ++i); 378 #pragma acc parallel loop independent device_type(*) 379 for(unsigned i = 0; i < 5; ++i); 380 #pragma acc parallel loop independent dtype(*) 381 for(unsigned i = 0; i < 5; ++i); 382 #pragma acc parallel loop independent async 383 for(unsigned i = 0; i < 5; ++i); 384 #pragma acc parallel loop independent tile(1+2, 1) 385 for(unsigned j = 0; j < 5; ++j) 386 for(unsigned i = 0; i < 5; ++i); 387 #pragma acc parallel loop independent gang 388 for(unsigned i = 0; i < 5; ++i); 389 #pragma acc parallel loop independent wait 390 for(unsigned i = 0; i < 5; ++i); 391 392 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}} 393 #pragma acc parallel loop finalize independent 394 for(unsigned i = 0; i < 5; ++i); 395 // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}} 396 #pragma acc parallel loop if_present independent 397 for(unsigned i = 0; i < 5; ++i); 398 #pragma acc parallel loop worker independent 399 for(unsigned i = 0; i < 5; ++i); 400 #pragma acc parallel loop vector independent 401 for(unsigned i = 0; i < 5; ++i); 402 // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}} 403 #pragma acc parallel loop nohost independent 404 for(unsigned i = 0; i < 5; ++i); 405 #pragma acc parallel loop default(none) independent 406 for(unsigned i = 0; i < 5; ++i); 407 #pragma acc parallel loop if(1) independent 408 for(unsigned i = 0; i < 5; ++i); 409 #pragma acc parallel loop self independent 410 for(unsigned i = 0; i < 5; ++i); 411 #pragma acc parallel loop copy(Var) independent 412 for(unsigned i = 0; i < 5; ++i); 413 // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}} 414 #pragma acc parallel loop pcopy(Var) independent 415 for(unsigned i = 0; i < 5; ++i); 416 // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}} 417 #pragma acc parallel loop present_or_copy(Var) independent 418 for(unsigned i = 0; i < 5; ++i); 419 // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}} 420 #pragma acc parallel loop use_device(Var) independent 421 for(unsigned i = 0; i < 5; ++i); 422 #pragma acc parallel loop attach(VarPtr) independent 423 for(unsigned i = 0; i < 5; ++i); 424 // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}} 425 #pragma acc parallel loop delete(Var) independent 426 for(unsigned i = 0; i < 5; ++i); 427 // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}} 428 #pragma acc parallel loop detach(Var) independent 429 for(unsigned i = 0; i < 5; ++i); 430 // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}} 431 #pragma acc parallel loop device(VarPtr) independent 432 for(unsigned i = 0; i < 5; ++i); 433 #pragma acc parallel loop deviceptr(VarPtr) independent 434 for(unsigned i = 0; i < 5; ++i); 435 // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}} 436 #pragma acc parallel loop device_resident(VarPtr) independent 437 for(unsigned i = 0; i < 5; ++i); 438 #pragma acc parallel loop firstprivate(Var) independent 439 for(unsigned i = 0; i < 5; ++i); 440 // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}} 441 #pragma acc parallel loop host(Var) independent 442 for(unsigned i = 0; i < 5; ++i); 443 // expected-warning@+1{{OpenACC clause 'link' not yet implemented}} 444 #pragma acc parallel loop link(Var) independent 445 for(unsigned i = 0; i < 5; ++i); 446 #pragma acc parallel loop no_create(Var) independent 447 for(unsigned i = 0; i < 5; ++i); 448 #pragma acc parallel loop present(Var) independent 449 for(unsigned i = 0; i < 5; ++i); 450 #pragma acc parallel loop private(Var) independent 451 for(unsigned i = 0; i < 5; ++i); 452 #pragma acc parallel loop copyout(Var) independent 453 for(unsigned i = 0; i < 5; ++i); 454 // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}} 455 #pragma acc parallel loop pcopyout(Var) independent 456 for(unsigned i = 0; i < 5; ++i); 457 // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}} 458 #pragma acc parallel loop present_or_copyout(Var) independent 459 for(unsigned i = 0; i < 5; ++i); 460 #pragma acc parallel loop copyin(Var) independent 461 for(unsigned i = 0; i < 5; ++i); 462 // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}} 463 #pragma acc parallel loop pcopyin(Var) independent 464 for(unsigned i = 0; i < 5; ++i); 465 // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}} 466 #pragma acc parallel loop present_or_copyin(Var) independent 467 for(unsigned i = 0; i < 5; ++i); 468 #pragma acc parallel loop create(Var) independent 469 for(unsigned i = 0; i < 5; ++i); 470 // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}} 471 #pragma acc parallel loop pcreate(Var) independent 472 for(unsigned i = 0; i < 5; ++i); 473 // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}} 474 #pragma acc parallel loop present_or_create(Var) independent 475 for(unsigned i = 0; i < 5; ++i); 476 #pragma acc parallel loop reduction(+:Var) independent 477 for(unsigned i = 0; i < 5; ++i); 478 #pragma acc parallel loop collapse(1) independent 479 for(unsigned i = 0; i < 5; ++i); 480 // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}} 481 #pragma acc parallel loop bind(Var) independent 482 for(unsigned i = 0; i < 5; ++i); 483 #pragma acc parallel loop vector_length(1) independent 484 for(unsigned i = 0; i < 5; ++i); 485 #pragma acc parallel loop num_gangs(1) independent 486 for(unsigned i = 0; i < 5; ++i); 487 #pragma acc parallel loop num_workers(1) independent 488 for(unsigned i = 0; i < 5; ++i); 489 // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}} 490 #pragma acc parallel loop device_num(1) independent 491 for(unsigned i = 0; i < 5; ++i); 492 // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}} 493 #pragma acc parallel loop default_async(1) independent 494 for(unsigned i = 0; i < 5; ++i); 495 #pragma acc parallel loop device_type(*) independent 496 for(unsigned i = 0; i < 5; ++i); 497 #pragma acc parallel loop dtype(*) independent 498 for(unsigned i = 0; i < 5; ++i); 499 #pragma acc parallel loop async independent 500 for(unsigned i = 0; i < 5; ++i); 501 #pragma acc parallel loop tile(1+2, 1) independent 502 for(unsigned j = 0; j < 5; ++j) 503 for(unsigned i = 0; i < 5; ++i); 504 #pragma acc parallel loop gang independent 505 for(unsigned i = 0; i < 5; ++i); 506 #pragma acc parallel loop wait independent 507 for(unsigned i = 0; i < 5; ++i); 508 509 // 'seq' cannot be combined with 'gang', 'worker' or 'vector' 510 // expected-error@+2{{OpenACC clause 'gang' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}} 511 // expected-note@+1{{previous clause is here}} 512 #pragma acc parallel loop seq gang 513 for(unsigned i = 0; i < 5; ++i); 514 // expected-error@+2{{OpenACC clause 'worker' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}} 515 // expected-note@+1{{previous clause is here}} 516 #pragma acc parallel loop seq worker 517 for(unsigned i = 0; i < 5; ++i); 518 // expected-error@+2{{OpenACC clause 'vector' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}} 519 // expected-note@+1{{previous clause is here}} 520 #pragma acc parallel loop seq vector 521 for(unsigned i = 0; i < 5; ++i); 522 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}} 523 #pragma acc parallel loop seq finalize 524 for(unsigned i = 0; i < 5; ++i); 525 // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}} 526 #pragma acc parallel loop seq if_present 527 for(unsigned i = 0; i < 5; ++i); 528 // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}} 529 #pragma acc parallel loop seq nohost 530 for(unsigned i = 0; i < 5; ++i); 531 #pragma acc parallel loop seq default(none) 532 for(unsigned i = 0; i < 5; ++i); 533 #pragma acc parallel loop seq if(1) 534 for(unsigned i = 0; i < 5; ++i); 535 #pragma acc parallel loop seq self 536 for(unsigned i = 0; i < 5; ++i); 537 #pragma acc parallel loop seq copy(Var) 538 for(unsigned i = 0; i < 5; ++i); 539 // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}} 540 #pragma acc parallel loop seq pcopy(Var) 541 for(unsigned i = 0; i < 5; ++i); 542 // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}} 543 #pragma acc parallel loop seq present_or_copy(Var) 544 for(unsigned i = 0; i < 5; ++i); 545 // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}} 546 #pragma acc parallel loop seq use_device(Var) 547 for(unsigned i = 0; i < 5; ++i); 548 #pragma acc parallel loop seq attach(VarPtr) 549 for(unsigned i = 0; i < 5; ++i); 550 // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}} 551 #pragma acc parallel loop seq delete(Var) 552 for(unsigned i = 0; i < 5; ++i); 553 // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}} 554 #pragma acc parallel loop seq detach(Var) 555 for(unsigned i = 0; i < 5; ++i); 556 // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}} 557 #pragma acc parallel loop seq device(VarPtr) 558 for(unsigned i = 0; i < 5; ++i); 559 #pragma acc parallel loop seq deviceptr(VarPtr) 560 for(unsigned i = 0; i < 5; ++i); 561 // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}} 562 #pragma acc parallel loop seq device_resident(VarPtr) 563 for(unsigned i = 0; i < 5; ++i); 564 #pragma acc parallel loop seq firstprivate(Var) 565 for(unsigned i = 0; i < 5; ++i); 566 // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}} 567 #pragma acc parallel loop seq host(Var) 568 for(unsigned i = 0; i < 5; ++i); 569 // expected-warning@+1{{OpenACC clause 'link' not yet implemented}} 570 #pragma acc parallel loop seq link(Var) 571 for(unsigned i = 0; i < 5; ++i); 572 #pragma acc parallel loop seq no_create(Var) 573 for(unsigned i = 0; i < 5; ++i); 574 #pragma acc parallel loop seq present(Var) 575 for(unsigned i = 0; i < 5; ++i); 576 #pragma acc parallel loop seq private(Var) 577 for(unsigned i = 0; i < 5; ++i); 578 #pragma acc parallel loop seq copyout(Var) 579 for(unsigned i = 0; i < 5; ++i); 580 // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}} 581 #pragma acc parallel loop seq pcopyout(Var) 582 for(unsigned i = 0; i < 5; ++i); 583 // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}} 584 #pragma acc parallel loop seq present_or_copyout(Var) 585 for(unsigned i = 0; i < 5; ++i); 586 #pragma acc parallel loop seq copyin(Var) 587 for(unsigned i = 0; i < 5; ++i); 588 // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}} 589 #pragma acc parallel loop seq pcopyin(Var) 590 for(unsigned i = 0; i < 5; ++i); 591 // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}} 592 #pragma acc parallel loop seq present_or_copyin(Var) 593 for(unsigned i = 0; i < 5; ++i); 594 #pragma acc parallel loop seq create(Var) 595 for(unsigned i = 0; i < 5; ++i); 596 // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}} 597 #pragma acc parallel loop seq pcreate(Var) 598 for(unsigned i = 0; i < 5; ++i); 599 // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}} 600 #pragma acc parallel loop seq present_or_create(Var) 601 for(unsigned i = 0; i < 5; ++i); 602 #pragma acc parallel loop seq reduction(+:Var) 603 for(unsigned i = 0; i < 5; ++i); 604 #pragma acc parallel loop seq collapse(1) 605 for(unsigned i = 0; i < 5; ++i); 606 // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}} 607 #pragma acc parallel loop seq bind(Var) 608 for(unsigned i = 0; i < 5; ++i); 609 #pragma acc parallel loop seq vector_length(1) 610 for(unsigned i = 0; i < 5; ++i); 611 #pragma acc parallel loop seq num_gangs(1) 612 for(unsigned i = 0; i < 5; ++i); 613 #pragma acc parallel loop seq num_workers(1) 614 for(unsigned i = 0; i < 5; ++i); 615 // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}} 616 #pragma acc parallel loop seq device_num(1) 617 for(unsigned i = 0; i < 5; ++i); 618 // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}} 619 #pragma acc parallel loop seq default_async(1) 620 for(unsigned i = 0; i < 5; ++i); 621 #pragma acc parallel loop seq device_type(*) 622 for(unsigned i = 0; i < 5; ++i); 623 #pragma acc parallel loop seq dtype(*) 624 for(unsigned i = 0; i < 5; ++i); 625 #pragma acc parallel loop seq async 626 for(unsigned i = 0; i < 5; ++i); 627 #pragma acc parallel loop seq tile(1+2, 1) 628 for(;;) 629 for(unsigned i = 0; i < 5; ++i); 630 #pragma acc parallel loop seq wait 631 for(unsigned i = 0; i < 5; ++i); 632 633 // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'gang' clause on a 'parallel loop' construct}} 634 // expected-note@+1{{previous clause is here}} 635 #pragma acc parallel loop gang seq 636 for(unsigned i = 0; i < 5; ++i); 637 // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'worker' clause on a 'parallel loop' construct}} 638 // expected-note@+1{{previous clause is here}} 639 #pragma acc parallel loop worker seq 640 for(unsigned i = 0; i < 5; ++i); 641 // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'vector' clause on a 'parallel loop' construct}} 642 // expected-note@+1{{previous clause is here}} 643 #pragma acc parallel loop vector seq 644 for(unsigned i = 0; i < 5; ++i); 645 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}} 646 #pragma acc parallel loop finalize seq 647 for(unsigned i = 0; i < 5; ++i); 648 // expected-error@+1{{OpenACC 'if_present' clause is not valid on 'parallel loop' directive}} 649 #pragma acc parallel loop if_present seq 650 for(unsigned i = 0; i < 5; ++i); 651 // expected-warning@+1{{OpenACC clause 'nohost' not yet implemented}} 652 #pragma acc parallel loop nohost seq 653 for(unsigned i = 0; i < 5; ++i); 654 #pragma acc parallel loop default(none) seq 655 for(unsigned i = 0; i < 5; ++i); 656 #pragma acc parallel loop if(1) seq 657 for(unsigned i = 0; i < 5; ++i); 658 #pragma acc parallel loop self seq 659 for(unsigned i = 0; i < 5; ++i); 660 #pragma acc parallel loop copy(Var) seq 661 for(unsigned i = 0; i < 5; ++i); 662 // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}} 663 #pragma acc parallel loop pcopy(Var) seq 664 for(unsigned i = 0; i < 5; ++i); 665 // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}} 666 #pragma acc parallel loop present_or_copy(Var) seq 667 for(unsigned i = 0; i < 5; ++i); 668 // expected-error@+1{{OpenACC 'use_device' clause is not valid on 'parallel loop' directive}} 669 #pragma acc parallel loop use_device(Var) seq 670 for(unsigned i = 0; i < 5; ++i); 671 #pragma acc parallel loop attach(VarPtr) seq 672 for(unsigned i = 0; i < 5; ++i); 673 // expected-error@+1{{OpenACC 'delete' clause is not valid on 'parallel loop' directive}} 674 #pragma acc parallel loop delete(Var) seq 675 for(unsigned i = 0; i < 5; ++i); 676 // expected-error@+1{{OpenACC 'detach' clause is not valid on 'parallel loop' directive}} 677 #pragma acc parallel loop detach(Var) seq 678 for(unsigned i = 0; i < 5; ++i); 679 // expected-error@+1{{OpenACC 'device' clause is not valid on 'parallel loop' directive}} 680 #pragma acc parallel loop device(VarPtr) seq 681 for(unsigned i = 0; i < 5; ++i); 682 #pragma acc parallel loop deviceptr(VarPtr) seq 683 for(unsigned i = 0; i < 5; ++i); 684 // expected-warning@+1{{OpenACC clause 'device_resident' not yet implemented}} 685 #pragma acc parallel loop device_resident(VarPtr) seq 686 for(unsigned i = 0; i < 5; ++i); 687 #pragma acc parallel loop firstprivate(Var) seq 688 for(unsigned i = 0; i < 5; ++i); 689 // expected-error@+1{{OpenACC 'host' clause is not valid on 'parallel loop' directive}} 690 #pragma acc parallel loop host(Var) seq 691 for(unsigned i = 0; i < 5; ++i); 692 // expected-warning@+1{{OpenACC clause 'link' not yet implemented}} 693 #pragma acc parallel loop link(Var) seq 694 for(unsigned i = 0; i < 5; ++i); 695 #pragma acc parallel loop no_create(Var) seq 696 for(unsigned i = 0; i < 5; ++i); 697 #pragma acc parallel loop present(Var) seq 698 for(unsigned i = 0; i < 5; ++i); 699 #pragma acc parallel loop private(Var) seq 700 for(unsigned i = 0; i < 5; ++i); 701 #pragma acc parallel loop copyout(Var) seq 702 for(unsigned i = 0; i < 5; ++i); 703 // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}} 704 #pragma acc parallel loop pcopyout(Var) seq 705 for(unsigned i = 0; i < 5; ++i); 706 // expected-warning@+1{{OpenACC clause name 'present_or_copyout' is a deprecated clause name and is now an alias for 'copyout'}} 707 #pragma acc parallel loop present_or_copyout(Var) seq 708 for(unsigned i = 0; i < 5; ++i); 709 #pragma acc parallel loop copyin(Var) seq 710 for(unsigned i = 0; i < 5; ++i); 711 // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}} 712 #pragma acc parallel loop pcopyin(Var) seq 713 for(unsigned i = 0; i < 5; ++i); 714 // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}} 715 #pragma acc parallel loop present_or_copyin(Var) seq 716 for(unsigned i = 0; i < 5; ++i); 717 #pragma acc parallel loop create(Var) seq 718 for(unsigned i = 0; i < 5; ++i); 719 // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}} 720 #pragma acc parallel loop pcreate(Var) seq 721 for(unsigned i = 0; i < 5; ++i); 722 // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}} 723 #pragma acc parallel loop present_or_create(Var) seq 724 for(unsigned i = 0; i < 5; ++i); 725 #pragma acc parallel loop reduction(+:Var) seq 726 for(unsigned i = 0; i < 5; ++i); 727 #pragma acc parallel loop collapse(1) seq 728 for(unsigned i = 0; i < 5; ++i); 729 // expected-warning@+1{{OpenACC clause 'bind' not yet implemented}} 730 #pragma acc parallel loop bind(Var) seq 731 for(unsigned i = 0; i < 5; ++i); 732 #pragma acc parallel loop vector_length(1) seq 733 for(unsigned i = 0; i < 5; ++i); 734 #pragma acc parallel loop num_gangs(1) seq 735 for(unsigned i = 0; i < 5; ++i); 736 #pragma acc parallel loop num_workers(1) seq 737 for(unsigned i = 0; i < 5; ++i); 738 // expected-error@+1{{OpenACC 'device_num' clause is not valid on 'parallel loop' directive}} 739 #pragma acc parallel loop device_num(1) seq 740 for(unsigned i = 0; i < 5; ++i); 741 // expected-error@+1{{OpenACC 'default_async' clause is not valid on 'parallel loop' directive}} 742 #pragma acc parallel loop default_async(1) seq 743 for(unsigned i = 0; i < 5; ++i); 744 #pragma acc parallel loop device_type(*) seq 745 for(unsigned i = 0; i < 5; ++i); 746 #pragma acc parallel loop dtype(*) seq 747 for(unsigned i = 0; i < 5; ++i); 748 #pragma acc parallel loop async seq 749 for(unsigned i = 0; i < 5; ++i); 750 #pragma acc parallel loop tile(1+2, 1) seq 751 for(;;) 752 for(unsigned i = 0; i < 5; ++i); 753 #pragma acc parallel loop wait seq 754 for(unsigned i = 0; i < 5; ++i); 755 } 756