brintos

brintos / llvm-project-archived public Read only

0
0
Text · 48.3 KiB · d3fd903 Raw
1375 lines · c
1// RUN: %clang_cc1 %s -verify=expected,c -fopenacc -std=c992// RUN: %clang_cc1 %s -verify=expected,c -fopenacc3// RUN: %clang_cc1 %s -verify=expected,cpp -fopenacc -x c++4 5void func() {6 7  // expected-error@+1{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}8#pragma acc exit data finalize9 10  // expected-error@+1{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}11#pragma acc exit data finalize finalize12 13  // expected-error@+2{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}14  // expected-error@+1{{invalid OpenACC clause 'invalid'}}15#pragma acc exit data finalize invalid16 17  // expected-error@+2{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}18  // expected-error@+1{{invalid OpenACC clause 'invalid'}}19#pragma acc exit data finalize invalid invalid finalize20 21  // expected-error@+1{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}22#pragma acc exit data wait finalize23 24  // expected-error@+1{{OpenACC 'host_data' construct must have at least one 'use_device' clause}}25#pragma acc host_data if_present26 27  // expected-error@+1{{OpenACC 'host_data' construct must have at least one 'use_device' clause}}28#pragma acc host_data if_present, if_present29 30  // expected-error@+4{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'loop' construct}}31  // expected-note@+3{{previous 'seq' clause is here}}32  // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'loop' construct}}33  // expected-note@+1{{previous 'seq' clause is here}}34#pragma acc loop seq independent auto35  for(int i = 0; i < 5;++i) {}36 37  // expected-error@+4{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'loop' construct}}38  // expected-note@+3{{previous 'seq' clause is here}}39  // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'loop' construct}}40  // expected-note@+1{{previous 'seq' clause is here}}41#pragma acc loop seq, independent auto42  for(int i = 0; i < 5;++i) {}43 44  // expected-error@+4{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'loop' construct}}45  // expected-note@+3{{previous 'seq' clause is here}}46  // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'loop' construct}}47  // expected-note@+1{{previous 'seq' clause is here}}48#pragma acc loop seq independent, auto49  for(int i = 0; i < 5;++i) {}50 51  // expected-error@+3{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'kernels loop' construct}}52  // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'kernels loop' construct}}53  // expected-note@+1 2{{previous 'seq' clause is here}}54#pragma acc kernels loop seq independent auto55  for(int i = 0; i < 5;++i) {}56 57  // expected-error@+3{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'serial loop' construct}}58  // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'serial loop' construct}}59  // expected-note@+1 2{{previous 'seq' clause is here}}60#pragma acc serial loop seq, independent auto61  for(int i = 0; i < 5;++i) {}62 63  // expected-error@+3{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}64  // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}65  // expected-note@+1 2{{previous 'seq' clause is here}}66#pragma acc parallel loop seq independent, auto67  for(int i = 0; i < 5;++i) {}68 69 70  // expected-error@+1{{expected identifier}}71#pragma acc loop , seq72  for(int i = 0; i < 5;++i) {}73 74  // expected-error@+1{{expected identifier}}75#pragma acc loop seq,76  for(int i = 0; i < 5;++i) {}77 78  // expected-error@+1{{expected '('}}79#pragma acc loop collapse80  for(int i = 0; i < 5;++i) {}81 82  // expected-error@+1{{expected expression}}83#pragma acc loop collapse()84  for(int i = 0; i < 5;++i) {}85 86  // expected-error@+2{{invalid tag 'unknown' on 'collapse' clause}}87  // expected-error@+1{{expected expression}}88#pragma acc loop collapse(unknown:)89  for(int i = 0; i < 5;++i) {}90 91  // expected-error@+1{{expected expression}}92#pragma acc loop collapse(force:)93  for(int i = 0; i < 5;++i) {}94 95  // expected-error@+1{{invalid tag 'unknown' on 'collapse' clause}}96#pragma acc loop collapse(unknown:1)97  for(int i = 0; i < 5;++i) {}98 99#pragma acc loop collapse(force:1)100  for(int i = 0; i < 5;++i) {}101 102#pragma acc loop collapse(1)103  for(int i = 0; i < 5;++i) {}104 105  // expected-error@+2{{expected ')'}}106  // expected-note@+1{{to match this '('}}107#pragma acc loop collapse(5, 6)108  for(int i = 0; i < 5;++i) {}109}110 111void DefaultClause() {112  // expected-error@+1{{expected '('}}113#pragma acc serial loop default114  for(int i = 0; i < 5;++i) {}115 116  // expected-error@+1{{expected '('}}117#pragma acc serial default self118  for(int i = 0; i < 5;++i) {}119 120  // expected-error@+1{{expected '('}}121#pragma acc serial default, self122  for(int i = 0; i < 5;++i) {}123 124  // expected-error@+3{{expected identifier}}125  // expected-error@+2{{expected ')'}}126  // expected-note@+1{{to match this '('}}127#pragma acc serial default(128  for(int i = 0; i < 5;++i) {}129 130  // expected-error@+3{{invalid value for 'default' clause; expected 'present' or 'none'}}131  // expected-error@+2{{expected ')'}}132  // expected-note@+1{{to match this '('}}133#pragma acc serial default( self134  for(int i = 0; i < 5;++i) {}135 136  // expected-error@+3{{expected identifier}}137  // expected-error@+2{{expected ')'}}138  // expected-note@+1{{to match this '('}}139#pragma acc serial default(, self140  for(int i = 0; i < 5;++i) {}141 142  // expected-error@+2{{expected '('}}143  // expected-error@+1{{expected identifier}}144#pragma acc serial default)145  for(int i = 0; i < 5;++i) {}146 147  // expected-error@+2{{expected '('}}148  // expected-error@+1{{expected identifier}}149#pragma acc serial default), self150  for(int i = 0; i < 5;++i) {}151 152  // expected-error@+1{{expected identifier}}153#pragma acc serial default()154  for(int i = 0; i < 5;++i) {}155 156  // expected-error@+1{{expected identifier}}157#pragma acc serial default() self158  for(int i = 0; i < 5;++i) {}159 160  // expected-error@+1{{expected identifier}}161#pragma acc serial default(), self162  for(int i = 0; i < 5;++i) {}163 164  // expected-error@+1{{invalid value for 'default' clause; expected 'present' or 'none'}}165#pragma acc serial default(invalid)166  for(int i = 0; i < 5;++i) {}167 168  // expected-error@+1{{invalid value for 'default' clause; expected 'present' or 'none'}}169#pragma acc serial default(auto) self170  for(int i = 0; i < 5;++i) {}171 172  // expected-error@+1{{invalid value for 'default' clause; expected 'present' or 'none'}}173#pragma acc serial default(invalid), self174  for(int i = 0; i < 5;++i) {}175 176#pragma acc serial default(none)177  for(int i = 0; i < 5;++i) {}178 179#pragma acc serial default(present), self180  for(int i = 0; i < 5;++i) {}181}182 183void IfClause() {184  int i, j;185  // expected-error@+1{{expected '('}}186#pragma acc serial loop if187  for(int i = 0; i < 5;++i) {}188 189  // expected-error@+1{{expected '('}}190#pragma acc serial if private(i)191  for(int i = 0; i < 5;++i) {}192 193  // expected-error@+1{{expected '('}}194#pragma acc serial if, private(i)195  for(int i = 0; i < 5;++i) {}196 197  // expected-error@+3{{expected expression}}198  // expected-error@+2{{expected ')'}}199  // expected-note@+1{{to match this '('}}200#pragma acc serial if(201  for(int i = 0; i < 5;++i) {}202 203  // expected-error@+3{{use of undeclared identifier 'self'}}204  // expected-error@+2{{expected ')'}}205  // expected-note@+1{{to match this '('}}206#pragma acc serial if( self207  for(int i = 0; i < 5;++i) {}208 209  // expected-error@+4{{expected expression}}210  // expected-error@+3{{use of undeclared identifier 'self'}}211  // expected-error@+2{{expected ')'}}212  // expected-note@+1{{to match this '('}}213#pragma acc serial if(, self214  for(int i = 0; i < 5;++i) {}215 216  // expected-error@+2{{expected '('}}217  // expected-error@+1{{expected identifier}}218#pragma acc serial if)219  for(int i = 0; i < 5;++i) {}220 221  // expected-error@+2{{expected '('}}222  // expected-error@+1{{expected identifier}}223#pragma acc serial if) private(i)224  for(int i = 0; i < 5;++i) {}225 226  // expected-error@+2{{expected '('}}227  // expected-error@+1{{expected identifier}}228#pragma acc serial if), private(i)229  for(int i = 0; i < 5;++i) {}230 231  // expected-error@+1{{expected expression}}232#pragma acc serial if()233  for(int i = 0; i < 5;++i) {}234 235  // expected-error@+1{{expected expression}}236#pragma acc serial if() private(i)237  for(int i = 0; i < 5;++i) {}238 239  // expected-error@+1{{expected expression}}240#pragma acc serial if(), private(i)241  for(int i = 0; i < 5;++i) {}242 243  // expected-error@+1{{use of undeclared identifier 'invalid_expr'}}244#pragma acc serial if(invalid_expr)245  for(int i = 0; i < 5;++i) {}246 247  // expected-error@+1{{expected expression}}248#pragma acc serial if() private(i)249  for(int i = 0; i < 5;++i) {}250 251#pragma acc serial if(i > j)252  for(int i = 0; i < 5;++i) {}253 254#pragma acc serial if(1+5>3), private(i)255  for(int i = 0; i < 5;++i) {}256}257 258void SelfClause() {259#pragma acc serial loop self260  for(int i = 0; i < 5;++i) {}261 262#pragma acc serial loop self, seq263  for(int i = 0; i < 5;++i) {}264 265  // expected-error@+3{{expected expression}}266  // expected-error@+2{{expected ')'}}267  // expected-note@+1{{to match this '('}}268#pragma acc serial loop self(269  for(int i = 0; i < 5;++i) {}270 271  // expected-error@+3{{use of undeclared identifier 'seq'}}272  // expected-error@+2{{expected ')'}}273  // expected-note@+1{{to match this '('}}274#pragma acc serial loop self( seq275  for(int i = 0; i < 5;++i) {}276 277  // expected-error@+4{{expected expression}}278  // expected-error@+3{{use of undeclared identifier 'seq'}}279  // expected-error@+2{{expected ')'}}280  // expected-note@+1{{to match this '('}}281#pragma acc serial loop self(, seq282  for(int i = 0; i < 5;++i) {}283 284  // expected-error@+1{{expected identifier}}285#pragma acc serial loop self)286  for(int i = 0; i < 5;++i) {}287 288  // expected-error@+1{{expected identifier}}289#pragma acc serial loop self) seq290  for(int i = 0; i < 5;++i) {}291 292  // expected-error@+1{{expected identifier}}293#pragma acc serial loop self), seq294  for(int i = 0; i < 5;++i) {}295 296 297  // expected-error@+1{{expected expression}}298#pragma acc serial loop self(), seq299  for(int i = 0; i < 5;++i) {}300 301  // expected-error@+2{{expected expression}}302  // expected-error@+1{{expected expression}}303#pragma acc serial loop self(,), seq304  for(int i = 0; i < 5;++i) {}305 306  // expected-error@+1{{use of undeclared identifier 'invalid_expr'}}307#pragma acc serial loop self(invalid_expr), seq308  for(int i = 0; i < 5;++i) {}309 310  int i, j;311 312  // expected-error@+2{{expected ')'}}313  // expected-note@+1{{to match this '('}}314#pragma acc serial self(i > j315  for(int i = 0; i < 5;++i) {}316 317  // expected-error@+3{{use of undeclared identifier 'seq'}}318  // expected-error@+2{{expected ')'}}319  // expected-note@+1{{to match this '('}}320#pragma acc serial self(i > j, seq321  for(int i = 0; i < 5;++i) {}322 323  // expected-warning@+1{{left operand of comma operator has no effect}}324#pragma acc serial self(i, j)325  for(int i = 0; i < 5;++i) {}326 327#pragma acc serial self(i > j)328  for(int i = 0; i < 5;++i) {}329 330#pragma acc serial self(1+5>3), private(i)331  for(int i = 0; i < 5;++i) {}332}333 334struct Members {335  int value;336  char array[5];337};338struct HasMembersArray {339  struct Members MemArr[4];340};341 342// On 'update', self behaves differently and requires parens, plus takes a var-list instead.343void SelfUpdate() {344  struct Members s;345 346  // expected-error@+1{{expected '('}}347#pragma acc update host(s) self348  for(int i = 0; i < 5;++i) {}349 350  // expected-error@+1{{use of undeclared identifier 'zero'}}351#pragma acc update self(zero : s.array[s.value : 5], s.value), if_present352  for(int i = 0; i < 5;++i) {}353 354#pragma acc update self(s.array[s.value : 5], s.value), if_present355  for(int i = 0; i < 5;++i) {}356}357 358void VarListClauses() {359  // expected-error@+1{{expected '('}}360#pragma acc serial copy361  for(int i = 0; i < 5;++i) {}362 363  // expected-error@+1{{expected '('}}364#pragma acc serial copy, self365  for(int i = 0; i < 5;++i) {}366 367  // expected-error@+2{{expected '('}}368  // expected-error@+1{{expected identifier}}369#pragma acc serial copy)370  for(int i = 0; i < 5;++i) {}371 372  // expected-error@+2{{expected '('}}373  // expected-error@+1{{expected identifier}}374#pragma acc serial copy), self375  for(int i = 0; i < 5;++i) {}376 377  // expected-error@+3{{expected expression}}378  // expected-error@+2{{expected ')'}}379  // expected-note@+1{{to match this '('}}380#pragma acc serial copy(381  for(int i = 0; i < 5;++i) {}382 383  // expected-error@+3{{expected expression}}384  // expected-error@+2{{expected ')'}}385  // expected-note@+1{{to match this '('}}386#pragma acc serial copy(, self387  for(int i = 0; i < 5;++i) {}388 389  // expected-error@+1{{expected expression}}390#pragma acc serial copy()391  for(int i = 0; i < 5;++i) {}392 393  // expected-error@+1{{expected expression}}394#pragma acc serial copy(), self395  for(int i = 0; i < 5;++i) {}396 397  struct Members s;398  struct HasMembersArray HasMem;399 400#pragma acc serial copy(s.array[s.value]), self401  for(int i = 0; i < 5;++i) {}402 403#pragma acc serial copy(s.array[s.value], s.array[s.value :5] ), self404  for(int i = 0; i < 5;++i) {}405 406#pragma acc serial copy(HasMem.MemArr[3].array[1]), self407  for(int i = 0; i < 5;++i) {}408 409#pragma acc serial copy(HasMem.MemArr[3].array[1:4]), self410  for(int i = 0; i < 5;++i) {}411 412  // expected-error@+1{{OpenACC sub-array is not allowed here}}413#pragma acc serial copy(HasMem.MemArr[1:3].array[1]), self414  for(int i = 0; i < 5;++i) {}415 416  // expected-error@+1{{OpenACC sub-array is not allowed here}}417#pragma acc serial copy(HasMem.MemArr[1:3].array[1:2]), self418  for(int i = 0; i < 5;++i) {}419 420#pragma acc serial copy(HasMem.MemArr[:]), self421  for(int i = 0; i < 5;++i) {}422 423  // cpp-error@+2{{expected unqualified-id}}424  // c-error@+1{{expected expression}}425#pragma acc serial copy(HasMem.MemArr[::]), self426  for(int i = 0; i < 5;++i) {}427 428  // expected-error@+3{{expected expression}}429  // expected-error@+2{{expected ']'}}430  // expected-note@+1{{to match this '['}}431#pragma acc serial copy(HasMem.MemArr[: :]), self432  for(int i = 0; i < 5;++i) {}433 434#pragma acc serial copy(HasMem.MemArr[3:]), self435  for(int i = 0; i < 5;++i) {}436 437  // expected-warning@+1{{OpenACC clause name 'pcopy' is a deprecated clause name and is now an alias for 'copy'}}438#pragma acc serial pcopy(HasMem.MemArr[3:])439  for(int i = 0; i < 5;++i) {}440 441  // expected-warning@+1{{OpenACC clause name 'present_or_copy' is a deprecated clause name and is now an alias for 'copy'}}442#pragma acc serial present_or_copy(HasMem.MemArr[3:])443  for(int i = 0; i < 5;++i) {}444 445  // expected-error@+2{{unknown modifier 'foo' in OpenACC modifier-list on 'copy' clause}}446  // expected-error@+1{{unknown modifier 'bar' in OpenACC modifier-list on 'copy' clause}}447#pragma acc parallel copy(foo, bar: HasMem.MemArr[3:]) self448  for(int i = 0; i < 5;++i) {}449 450  // expected-error@+1{{duplicate modifier 'always' in OpenACC modifier-list on 'copy' clause}}451#pragma acc parallel copy(always, alwaysin, always: HasMem.MemArr[3:]) self452  for(int i = 0; i < 5;++i) {}453 454  // expected-error@+1{{use of undeclared identifier 'always'}}455#pragma acc parallel copy(always, alwaysin, always, HasMem.MemArr[3:]) self456  for(int i = 0; i < 5;++i) {}457 458  // expected-error@+2 2{{OpenACC variable in 'use_device' clause is not a valid variable name or array name}}459  // expected-error@+1{{expected ','}}460#pragma acc host_data use_device(s.array[s.value] s.array[s.value :5] ), if_present461  for(int i = 0; i < 5;++i) {}462 463  // expected-error@+1{{OpenACC variable in 'use_device' clause is not a valid variable name or array name}}464#pragma acc host_data use_device(s.array[s.value : 5]), if_present465  for(int i = 0; i < 5;++i) {}466 467#pragma acc host_data use_device(HasMem), if_present468  for(int i = 0; i < 5;++i) {}469 470  // expected-error@+1{{expected ','}}471#pragma acc serial no_create(s.array[s.value] s.array[s.value :5] ), self472  for(int i = 0; i < 5;++i) {}473 474#pragma acc serial no_create(s.array[s.value : 5], s.value), self475  for(int i = 0; i < 5;++i) {}476 477  // expected-error@+1{{expected ','}}478#pragma acc serial present(s.array[s.value] s.array[s.value :5] ), self479  for(int i = 0; i < 5;++i) {}480 481#pragma acc serial present(s.array[s.value : 5], s.value), self482  for(int i = 0; i < 5;++i) {}483 484 485  void *IsPointer;486  // expected-error@+4{{expected ','}}487  // expected-error@+3{{expected pointer in 'deviceptr' clause, type is 'char'}}488  // expected-error@+2{{OpenACC sub-array is not allowed here}}489  // expected-note@+1{{expected variable of pointer type}}490#pragma acc serial deviceptr(s.array[s.value] s.array[s.value :5] ), self491  for(int i = 0; i < 5;++i) {}492 493#pragma acc serial deviceptr(IsPointer), self494  for(int i = 0; i < 5;++i) {}495 496  // expected-error@+4{{expected ','}}497  // expected-error@+3{{expected pointer in 'attach' clause, type is 'char'}}498  // expected-error@+2{{OpenACC sub-array is not allowed here}}499  // expected-note@+1{{expected variable of pointer type}}500#pragma acc serial attach(s.array[s.value] s.array[s.value :5] ), self501  for(int i = 0; i < 5;++i) {}502 503#pragma acc serial attach(IsPointer), self504  for(int i = 0; i < 5;++i) {}505 506  // expected-error@+4{{expected ','}}507  // expected-error@+3{{expected pointer in 'detach' clause, type is 'char'}}508  // expected-error@+2{{OpenACC sub-array is not allowed here}}509  // expected-note@+1{{expected variable of pointer type}}510#pragma acc exit data copyout(s) detach(s.array[s.value] s.array[s.value :5])511 512#pragma acc exit data copyout(s) detach(IsPointer)513 514  // expected-error@+1{{expected ','}}515#pragma acc serial private(s.array[s.value] s.array[s.value :5] ), self516  for(int i = 0; i < 5;++i) {}517 518#pragma acc serial private(s.array[s.value : 5], s.value), self519  for(int i = 0; i < 5;++i) {}520 521  // expected-error@+1{{expected ','}}522#pragma acc serial firstprivate(s.array[s.value] s.array[s.value :5] ), self523  for(int i = 0; i < 5;++i) {}524 525#pragma acc serial firstprivate(s.array[s.value : 5], s.value), self526  for(int i = 0; i < 5;++i) {}527 528  // expected-error@+1{{expected ','}}529#pragma acc exit data delete(s.array[s.value] s.array[s.value :5] ) async530  for(int i = 0; i < 5;++i) {}531 532#pragma acc exit data delete(s.array[s.value : 5], s.value),async533  for(int i = 0; i < 5;++i) {}534 535  // expected-error@+3{{expected ','}}536  // expected-error@+2{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}537  // expected-error@+1{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}538#pragma acc declare device_resident(s.array[s.value] s.array[s.value :5] ), copy(s)539 540  int CopyRef1, CopyRef2, CopyRef3;541 542  // expected-error@+2{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}543  // expected-error@+1{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}544#pragma acc declare device_resident(s.array[s.value : 5], s.value), copy(CopyRef1)545 546  // expected-error@+3{{expected ','}}547  // expected-error@+2{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}548  // expected-error@+1{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}549#pragma acc declare link(s.array[s.value] s.array[s.value :5] ), copy(CopyRef2)550 551  // expected-error@+2{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}552  // expected-error@+1{{OpenACC variable on 'declare' construct is not a valid variable name or array name}}553#pragma acc declare link(s.array[s.value : 5], s.value), copy(CopyRef3)554 555  // expected-error@+1{{expected ','}}556#pragma acc update host(s.array[s.value] s.array[s.value :5] )557  for(int i = 0; i < 5;++i) {}558 559#pragma acc update host(s.array[s.value : 5], s.value)560  for(int i = 0; i < 5;++i) {}561 562  // expected-error@+1{{expected ','}}563#pragma acc update device(s.array[s.value] s.array[s.value :5] )564  for(int i = 0; i < 5;++i) {}565 566#pragma acc update device(s.array[s.value : 5], s.value)567  for(int i = 0; i < 5;++i) {}568 569  // expected-error@+1{{expected ','}}570#pragma acc serial copyout(s.array[s.value] s.array[s.value :5] ), self571  for(int i = 0; i < 5;++i) {}572 573#pragma acc serial copyout(s.array[s.value : 5], s.value), self574  for(int i = 0; i < 5;++i) {}575 576#pragma acc serial copyout(zero:s.array[s.value : 5], s.value), self577  for(int i = 0; i < 5;++i) {}578 579  // expected-warning@+1{{OpenACC clause name 'pcopyout' is a deprecated clause name and is now an alias for 'copyout'}}580#pragma acc serial pcopyout(s.array[s.value : 5], s.value)581  for(int i = 0; i < 5;++i) {}582 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 serial present_or_copyout(zero:s.array[s.value : 5], s.value)585  for(int i = 0; i < 5;++i) {}586 587#pragma acc serial copyout(zero : s.array[s.value : 5], s.value), self588  for(int i = 0; i < 5;++i) {}589 590  // expected-error@+1{{use of undeclared identifier 'zero'}}591#pragma acc serial copyout(zero s.array[s.value : 5], s.value), self592  for(int i = 0; i < 5;++i) {}593 594  // expected-error@+1{{OpenACC 'readonly' modifier not valid on 'copyout' clause}}595#pragma acc serial copyout(readonly:s.array[s.value : 5], s.value), self596  for(int i = 0; i < 5;++i) {}597 598  // expected-error@+1{{unknown modifier 'invalid' in OpenACC modifier-list on 'copyout' clause}}599#pragma acc serial copyout(invalid:s.array[s.value : 5], s.value), self600  for(int i = 0; i < 5;++i) {}601 602  // expected-error@+1{{unknown modifier 'invalid' in OpenACC modifier-list on 'copyout' clause}}603#pragma acc serial copyout(invalid:s.array[s.value : 5], s.value), self604  for(int i = 0; i < 5;++i) {}605 606  // expected-error@+1{{use of undeclared identifier 'invalid'}}607#pragma acc serial copyout(invalid s.array[s.value : 5], s.value), self608  for(int i = 0; i < 5;++i) {}609 610  // expected-error@+2{{unknown modifier 'invalid' in OpenACC modifier-list on 'copyout' clause}}611  // expected-error@+1{{unknown modifier 'bar' in OpenACC modifier-list on 'copyout' clause}}612#pragma acc serial copyout(invalid, bar: s.array[s.value : 5], s.value), self613  for(int i = 0; i < 5;++i) {}614 615  // expected-error@+1{{duplicate modifier 'zero' in OpenACC modifier-list on 'copyout' clause}}616#pragma acc serial copyout(zero, zero, always: s.array[s.value : 5], s.value), self617  for(int i = 0; i < 5;++i) {}618 619  // expected-error@+1{{expected ','}}620#pragma acc serial create(s.array[s.value] s.array[s.value :5] ), self621  for(int i = 0; i < 5;++i) {}622 623#pragma acc serial create(s.array[s.value : 5], s.value), self624  for(int i = 0; i < 5;++i) {}625 626#pragma acc serial create(zero:s.array[s.value : 5], s.value), self627  for(int i = 0; i < 5;++i) {}628 629  // expected-error@+1{{OpenACC 'always' modifier not valid on 'create' clause}}630#pragma acc serial create(always, zero:s.array[s.value : 5], s.value), self631  for(int i = 0; i < 5;++i) {}632 633  // expected-error@+2{{duplicate modifier 'always' in OpenACC modifier-list on 'create' clause}}634  // expected-error@+1{{OpenACC 'always' modifier not valid on 'create' clause}}635#pragma acc serial create(always, always, zero:s.array[s.value : 5], s.value), self636  for(int i = 0; i < 5;++i) {}637 638  // expected-error@+2{{unknown modifier 'invalid' in OpenACC modifier-list on 'create' clause}}639  // expected-error@+1{{OpenACC 'always' modifier not valid on 'create' clause}}640#pragma acc serial create(always, invalid, zero:s.array[s.value : 5], s.value), self641  for(int i = 0; i < 5;++i) {}642 643  // expected-warning@+1{{OpenACC clause name 'pcreate' is a deprecated clause name and is now an alias for 'create'}}644#pragma acc serial pcreate(s.array[s.value : 5], s.value)645  for(int i = 0; i < 5;++i) {}646 647  // expected-warning@+1{{OpenACC clause name 'present_or_create' is a deprecated clause name and is now an alias for 'create'}}648#pragma acc serial present_or_create(zero:s.array[s.value : 5], s.value)649  for(int i = 0; i < 5;++i) {}650 651#pragma acc serial create(zero : s.array[s.value : 5], s.value), self652  for(int i = 0; i < 5;++i) {}653 654  // expected-error@+1{{use of undeclared identifier 'zero'}}655#pragma acc serial create(zero s.array[s.value : 5], s.value), self656  for(int i = 0; i < 5;++i) {}657 658  // expected-error@+1{{OpenACC 'readonly' modifier not valid on 'create' clause}}659#pragma acc serial create(readonly:s.array[s.value : 5], s.value), self660  for(int i = 0; i < 5;++i) {}661 662  // expected-error@+1{{unknown modifier 'invalid' in OpenACC modifier-list on 'create' clause}}663#pragma acc serial create(invalid:s.array[s.value : 5], s.value), self664  for(int i = 0; i < 5;++i) {}665 666  // expected-error@+1{{unknown modifier 'invalid' in OpenACC modifier-list on 'create' clause}}667#pragma acc serial create(invalid:s.array[s.value : 5], s.value), self668  for(int i = 0; i < 5;++i) {}669 670  // expected-error@+1{{use of undeclared identifier 'invalid'}}671#pragma acc serial create(invalid s.array[s.value : 5], s.value), self672  for(int i = 0; i < 5;++i) {}673 674  // expected-error@+1{{expected ','}}675#pragma acc serial copyin(s.array[s.value] s.array[s.value :5] ), self676  for(int i = 0; i < 5;++i) {}677 678#pragma acc serial copyin(s.array[s.value : 5], s.value), self679  for(int i = 0; i < 5;++i) {}680 681#pragma acc serial copyin(readonly:s.array[s.value : 5], s.value), self682  for(int i = 0; i < 5;++i) {}683 684  // expected-warning@+1{{OpenACC clause name 'pcopyin' is a deprecated clause name and is now an alias for 'copyin'}}685#pragma acc serial pcopyin(s.array[s.value : 5], s.value)686  for(int i = 0; i < 5;++i) {}687 688  // expected-warning@+1{{OpenACC clause name 'present_or_copyin' is a deprecated clause name and is now an alias for 'copyin'}}689#pragma acc serial present_or_copyin(readonly:s.array[s.value : 5], s.value)690  for(int i = 0; i < 5;++i) {}691 692#pragma acc serial copyin(readonly : s.array[s.value : 5], s.value), self693  for(int i = 0; i < 5;++i) {}694 695  // expected-error@+1{{use of undeclared identifier 'readonly'}}696#pragma acc serial copyin(readonly s.array[s.value : 5], s.value), self697  for(int i = 0; i < 5;++i) {}698 699  // expected-error@+1{{OpenACC 'zero' modifier not valid on 'copyin' clause}}700#pragma acc serial copyin(zero :s.array[s.value : 5], s.value), self701  for(int i = 0; i < 5;++i) {}702 703  // expected-error@+1{{unknown modifier 'invalid' in OpenACC modifier-list on 'copyin' clause}}704#pragma acc serial copyin(invalid:s.array[s.value : 5], s.value), self705  for(int i = 0; i < 5;++i) {}706 707  // expected-error@+1{{unknown modifier 'invalid' in OpenACC modifier-list on 'copyin' clause}}708#pragma acc serial copyin(invalid:s.array[s.value : 5], s.value), self709  for(int i = 0; i < 5;++i) {}710 711  // expected-error@+1{{use of undeclared identifier 'invalid'}}712#pragma acc serial copyin(invalid s.array[s.value : 5], s.value), self713  for(int i = 0; i < 5;++i) {}714 715  // expected-error@+2{{unknown modifier 'foo' in OpenACC modifier-list on 'copyin' clause}}716  // expected-error@+1{{unknown modifier 'bar' in OpenACC modifier-list on 'copyin' clause}}717#pragma acc serial copyin(foo, bar: s.array[s.value : 5], s.value), self718  for(int i = 0; i < 5;++i) {}719 720  // expected-error@+1{{duplicate modifier 'readonly' in OpenACC modifier-list on 'copyin' clause}}721#pragma acc serial copyin(always, readonly, readonly: s.array[s.value : 5], s.value), self722  for(int i = 0; i < 5;++i) {}723}724 725void ReductionClauseParsing() {726  char Begin, End;727  // expected-error@+1{{expected '('}}728#pragma acc serial reduction729  for(int i = 0; i < 5;++i) {}730  // expected-error@+2{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}731  // expected-error@+1{{expected expression}}732#pragma acc serial reduction()733  for(int i = 0; i < 5;++i) {}734  // expected-error@+1{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}735#pragma acc serial reduction(Begin)736  for(int i = 0; i < 5;++i) {}737  // expected-error@+1{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}738#pragma acc serial reduction(Begin, End)739  for(int i = 0; i < 5;++i) {}740  // expected-error@+1{{missing reduction operator, expected '+', '*', 'max', 'min', '&', '|', '^', '&&', or '||', follwed by a ':'}}741#pragma acc serial reduction(Begin, End)742  for(int i = 0; i < 5;++i) {}743#pragma acc serial reduction(+:Begin)744  for(int i = 0; i < 5;++i) {}745#pragma acc serial reduction(+:Begin, End)746  for(int i = 0; i < 5;++i) {}747#pragma acc serial reduction(*: Begin, End)748  for(int i = 0; i < 5;++i) {}749#pragma acc serial reduction(max : Begin, End)750  for(int i = 0; i < 5;++i) {}751#pragma acc serial reduction(min: Begin, End)752  for(int i = 0; i < 5;++i) {}753#pragma acc serial reduction(&: Begin, End)754  for(int i = 0; i < 5;++i) {}755#pragma acc serial reduction(|: Begin, End)756  for(int i = 0; i < 5;++i) {}757#pragma acc serial reduction(^: Begin, End)758  for(int i = 0; i < 5;++i) {}759#pragma acc serial self, reduction(&&: Begin, End)760  for(int i = 0; i < 5;++i) {}761#pragma acc serial reduction(||: Begin, End), self762  for(int i = 0; i < 5;++i) {}763}764 765int returns_int();766 767void IntExprParsing() {768  // expected-error@+1{{expected '('}}769#pragma acc parallel vector_length770  {}771 772  // expected-error@+1{{expected expression}}773#pragma acc parallel vector_length()774  {}775 776  // expected-error@+1{{use of undeclared identifier 'invalid'}}777#pragma acc parallel vector_length(invalid)778  {}779 780  // expected-error@+2{{expected ')'}}781  // expected-note@+1{{to match this '('}}782#pragma acc parallel vector_length(5, 4)783  {}784 785#pragma acc parallel vector_length(5)786  {}787 788#pragma acc parallel vector_length(returns_int())789  {}790 791  // expected-error@+1{{expected '('}}792#pragma acc parallel num_gangs793  {}794 795  // expected-error@+1{{expected expression}}796#pragma acc parallel num_gangs()797  {}798 799  // expected-error@+1{{use of undeclared identifier 'invalid'}}800#pragma acc parallel num_gangs(invalid)801  {}802 803#pragma acc parallel num_gangs(5, 4)804  {}805 806#pragma acc parallel num_gangs(5)807  {}808 809#pragma acc parallel num_gangs(returns_int())810  {}811 812  // expected-error@+1{{expected '('}}813#pragma acc parallel num_workers814  {}815 816  // expected-error@+1{{expected expression}}817#pragma acc parallel num_workers()818  {}819 820  // expected-error@+1{{use of undeclared identifier 'invalid'}}821#pragma acc parallel num_workers(invalid)822  {}823 824  // expected-error@+2{{expected ')'}}825  // expected-note@+1{{to match this '('}}826#pragma acc parallel num_workers(5, 4)827  {}828 829#pragma acc parallel num_workers(5)830  {}831 832#pragma acc parallel num_workers(returns_int())833  {}834 835  // expected-error@+1{{expected '('}}836#pragma acc init device_num837 838  // expected-error@+1{{expected expression}}839#pragma acc init device_num()840 841  // expected-error@+1{{use of undeclared identifier 'invalid'}}842#pragma acc init device_num(invalid)843 844  // expected-error@+2{{expected ')'}}845  // expected-note@+1{{to match this '('}}846#pragma acc init device_num(5, 4)847 848#pragma acc init device_num(5)849 850#pragma acc init device_num(returns_int())851 852  // expected-error@+2{{expected '('}}853  // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', or 'device_type' clause}}854#pragma acc set default_async855 856  // expected-error@+2{{expected expression}}857  // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', or 'device_type' clause}}858#pragma acc set default_async()859 860  // expected-error@+2{{use of undeclared identifier 'invalid'}}861  // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', or 'device_type' clause}}862#pragma acc set default_async(invalid)863 864  // expected-error@+3{{expected ')'}}865  // expected-note@+2{{to match this '('}}866  // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', or 'device_type' clause}}867#pragma acc set default_async(5, 4)868 869#pragma acc set default_async(5)870 871#pragma acc set default_async(returns_int())872 873 874#pragma acc loop vector875  for(int i = 0; i < 5;++i);876  // expected-error@+1{{expected expression}}877#pragma acc loop vector()878  for(int i = 0; i < 5;++i);879  // expected-error@+2{{invalid tag 'invalid' on 'vector' clause}}880  // expected-error@+1{{expected expression}}881#pragma acc loop vector(invalid:)882  for(int i = 0; i < 5;++i);883  // expected-error@+1{{invalid tag 'invalid' on 'vector' clause}}884#pragma acc loop vector(invalid:5)885  for(int i = 0; i < 5;++i);886  // expected-error@+1{{expected expression}}887#pragma acc loop vector(length:)888  for(int i = 0; i < 5;++i);889  // expected-error@+2{{invalid tag 'num' on 'vector' clause}}890  // expected-error@+1{{expected expression}}891#pragma acc loop vector(num:)892  for(int i = 0; i < 5;++i);893  // expected-error@+2{{expected ')'}}894  // expected-note@+1{{to match this '('}}895#pragma acc loop vector(5, 4)896  for(int i = 0; i < 5;++i);897  // expected-error@+2{{expected ')'}}898  // expected-note@+1{{to match this '('}}899#pragma acc loop vector(length:6,4)900  for(int i = 0; i < 5;++i);901  // expected-error@+3{{invalid tag 'num' on 'vector' clause}}902  // expected-error@+2{{expected ')'}}903  // expected-note@+1{{to match this '('}}904#pragma acc loop vector(num:6,4)905  for(int i = 0; i < 5;++i);906#pragma acc loop vector(5)907  for(int i = 0; i < 5;++i);908  // expected-error@+1{{invalid tag 'num' on 'vector' clause}}909#pragma acc loop vector(num:5)910  for(int i = 0; i < 5;++i);911#pragma acc loop vector(length:5)912  for(int i = 0; i < 5;++i);913#pragma acc loop vector(returns_int())914  for(int i = 0; i < 5;++i);915#pragma acc loop vector(length:returns_int())916  for(int i = 0; i < 5;++i);917 918#pragma acc loop worker919  for(int i = 0; i < 5;++i);920  // expected-error@+1{{expected expression}}921#pragma acc loop worker()922  for(int i = 0; i < 5;++i);923  // expected-error@+2{{invalid tag 'invalid' on 'worker' clause}}924  // expected-error@+1{{expected expression}}925#pragma acc loop worker(invalid:)926  for(int i = 0; i < 5;++i);927#pragma acc kernels928  // expected-error@+1{{invalid tag 'invalid' on 'worker' clause}}929#pragma acc loop worker(invalid:5)930  for(int i = 0; i < 5;++i);931  // expected-error@+1{{expected expression}}932#pragma acc loop worker(num:)933  for(int i = 0; i < 5;++i);934  // expected-error@+2{{invalid tag 'length' on 'worker' clause}}935  // expected-error@+1{{expected expression}}936#pragma acc loop worker(length:)937  for(int i = 0; i < 5;++i);938  // expected-error@+2{{expected ')'}}939  // expected-note@+1{{to match this '('}}940#pragma acc loop worker(5, 4)941  for(int i = 0; i < 5;++i);942  // expected-error@+2{{expected ')'}}943  // expected-note@+1{{to match this '('}}944#pragma acc loop worker(num:6,4)945  for(int i = 0; i < 5;++i);946  // expected-error@+3{{invalid tag 'length' on 'worker' clause}}947  // expected-error@+2{{expected ')'}}948  // expected-note@+1{{to match this '('}}949#pragma acc loop worker(length:6,4)950  for(int i = 0; i < 5;++i);951#pragma acc kernels952#pragma acc loop worker(5)953  for(int i = 0; i < 5;++i);954#pragma acc kernels955  // expected-error@+1{{invalid tag 'length' on 'worker' clause}}956#pragma acc loop worker(length:5)957  for(int i = 0; i < 5;++i);958#pragma acc kernels959#pragma acc loop worker(num:5)960  for(int i = 0; i < 5;++i);961#pragma acc kernels962#pragma acc loop worker(returns_int())963  for(int i = 0; i < 5;++i);964#pragma acc kernels965  // expected-error@+1{{invalid tag 'length' on 'worker' clause}}966#pragma acc loop worker(length:returns_int())967  for(int i = 0; i < 5;++i);968}969 970void device_type() {971  // expected-error@+1{{expected '('}}972#pragma acc parallel device_type973  {}974  // expected-error@+1{{expected '('}}975#pragma acc parallel dtype976  {}977 978  // expected-error@+3{{expected identifier}}979  // expected-error@+2{{expected ')'}}980  // expected-note@+1{{to match this '('}}981#pragma acc parallel device_type(982    {}983  // expected-error@+3{{expected identifier}}984  // expected-error@+2{{expected ')'}}985  // expected-note@+1{{to match this '('}}986#pragma acc parallel dtype(987  {}988 989  // expected-error@+1{{expected identifier}}990#pragma acc parallel device_type()991  {}992  // expected-error@+1{{expected identifier}}993#pragma acc parallel dtype()994  {}995 996  // expected-error@+2{{expected ')'}}997  // expected-note@+1{{to match this '('}}998#pragma acc parallel device_type(*999  {}1000  // expected-error@+2{{expected ')'}}1001  // expected-note@+1{{to match this '('}}1002#pragma acc parallel dtype(*1003  {}1004 1005  // expected-error@+2{{expected ')'}}1006  // expected-note@+1{{to match this '('}}1007#pragma acc parallel device_type(ident1008  {}1009  // expected-error@+2{{expected ')'}}1010  // expected-note@+1{{to match this '('}}1011#pragma acc parallel dtype(ident1012  {}1013 1014  // expected-error@+3{{expected ','}}1015  // expected-error@+2{{expected ')'}}1016  // expected-note@+1{{to match this '('}}1017#pragma acc parallel device_type(ident ident21018  {}1019  // expected-error@+3{{expected ','}}1020  // expected-error@+2{{expected ')'}}1021  // expected-note@+1{{to match this '('}}1022#pragma acc parallel dtype(ident ident21023  {}1024 1025  // expected-error@+2{{expected ')'}}1026  // expected-note@+1{{to match this '('}}1027#pragma acc parallel device_type(ident, ident21028  {}1029  // expected-error@+2{{expected ')'}}1030  // expected-note@+1{{to match this '('}}1031#pragma acc parallel dtype(ident, ident21032  {}1033 1034  // expected-error@+1{{expected identifier}}1035#pragma acc parallel device_type(ident, ident2,)1036  {}1037  // expected-error@+1{{expected identifier}}1038#pragma acc parallel dtype(ident, ident2,)1039  {}1040 1041  // expected-error@+2{{expected ')'}}1042  // expected-note@+1{{to match this '('}}1043#pragma acc parallel device_type(*,)1044  {}1045  // expected-error@+2{{expected ')'}}1046  // expected-note@+1{{to match this '('}}1047#pragma acc parallel dtype(*,)1048  {}1049 1050  // expected-error@+2{{expected ')'}}1051  // expected-note@+1{{to match this '('}}1052#pragma acc parallel device_type(*,ident)1053  {}1054  // expected-error@+2{{expected ')'}}1055  // expected-note@+1{{to match this '('}}1056#pragma acc parallel dtype(*,ident)1057  {}1058 1059  // expected-error@+1{{expected identifier}}1060#pragma acc parallel device_type(ident, *)1061  {}1062  // expected-error@+1{{expected identifier}}1063#pragma acc parallel dtype(ident, *)1064  {}1065 1066  // expected-error@+1{{expected identifier}}1067#pragma acc parallel device_type("foo", 54)1068  {}1069  // expected-error@+1{{expected identifier}}1070#pragma acc parallel dtype(31, "bar")1071  {}1072 1073  // expected-error@+4{{invalid value 'ident' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1074  // expected-error@+3{{invalid value 'auto' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1075  // expected-error@+2{{invalid value 'int' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1076  // expected-error@+1{{invalid value 'float' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1077#pragma acc parallel device_type(ident, auto, int, float)1078  {}1079  // expected-error@+4{{invalid value 'ident' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1080  // expected-error@+3{{invalid value 'auto' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1081  // expected-error@+2{{invalid value 'int' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1082  // expected-error@+1{{invalid value 'float' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1083#pragma acc parallel dtype(ident, auto, int, float)1084  {}1085 1086  // expected-error@+8{{invalid value 'ident' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1087  // expected-error@+7{{invalid value 'auto' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1088  // expected-error@+6{{invalid value 'int' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1089  // expected-error@+5{{invalid value 'float' in 'device_type' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1090  // expected-error@+4{{invalid value 'ident' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1091  // expected-error@+3{{invalid value 'auto' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1092  // expected-error@+2{{invalid value 'int' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1093  // expected-error@+1{{invalid value 'float' in 'dtype' clause; valid values are 'default', 'nvidia', 'acc_device_nvidia', 'radeon', 'host', 'multicore'}}1094#pragma acc parallel device_type(ident, auto, int, float) dtype(ident, auto, int, float)1095  {}1096}1097 1098#define acc_async_sync -11099void AsyncArgument() {1100#pragma acc parallel async1101  {}1102 1103  // expected-error@+1{{expected expression}}1104#pragma acc parallel async()1105  {}1106 1107  // expected-error@+1{{use of undeclared identifier 'invalid'}}1108#pragma acc parallel async(invalid)1109  {}1110 1111  // expected-error@+2{{expected ')'}}1112  // expected-note@+1{{to match this '('}}1113#pragma acc parallel async(4, 3)1114  {}1115 1116#pragma acc parallel async(returns_int())1117  {}1118 1119#pragma acc parallel async(5)1120  {}1121 1122#pragma acc parallel async(acc_async_sync)1123  {}1124}1125 1126void Tile() {1127 1128  int* Foo;1129  // expected-error@+1{{expected '('}}1130#pragma acc loop tile1131  for(int i = 0; i < 5;++i) {}1132  // expected-error@+3{{expected expression}}1133  // expected-error@+2{{expected ')'}}1134  // expected-note@+1{{to match this '('}}1135#pragma acc loop tile(1136  for(int i = 0; i < 5;++i) {}1137  // expected-error@+1{{expected expression}}1138#pragma acc loop tile()1139  for(int i = 0; i < 5;++i) {}1140  // expected-error@+3{{expected expression}}1141  // expected-error@+2{{expected ')'}}1142  // expected-note@+1{{to match this '('}}1143#pragma acc loop tile(,1144  for(int i = 0; i < 5;++i) {}1145  // expected-error@+1{{expected expression}}1146#pragma acc loop tile(,)1147  for(int i = 0; i < 5;++i) {}1148  // expected-error@+1{{use of undeclared identifier 'invalid'}}1149#pragma acc loop tile(returns_int(), *, invalid, *)1150  for(int i = 0; i < 5;++i) {}1151 1152  // expected-error@+1{{expected expression}}1153#pragma acc loop tile(returns_int() *, Foo, *)1154  for(int i = 0; i < 5;++i) {}1155 1156  // expected-error@+1{{indirection requires pointer operand ('int' invalid)}}1157#pragma acc loop tile(* returns_int() , *)1158  for(int j = 0; j < 5;++j){1159    for(int i = 0; i < 5;++i);1160  }1161 1162#pragma acc loop tile(*)1163  for(int i = 0; i < 5;++i) {}1164  // expected-error@+1{{OpenACC 'tile' clause size expression must be an asterisk or a constant expression}}1165#pragma acc loop tile(*Foo, *Foo)1166  for(int i = 0; i < 5;++i) {}1167#pragma acc loop tile(5)1168  for(int i = 0; i < 5;++i) {}1169#pragma acc loop tile(*, 5)1170  for(int j = 0; j < 5;++j){1171    for(int i = 0; i < 5;++i);1172  }1173#pragma acc loop tile(5, *)1174  for(int j = 0; j < 5;++j){1175    for(int i = 0; i < 5;++i);1176  }1177#pragma acc loop tile(5, *, 3, *)1178  for(int j = 0; j < 5;++j){1179    for(int k = 0; k < 5;++k)1180      for(int l = 0;l < 5;++l)1181        for(int i = 0; i < 5;++i);1182  }1183}1184 1185void Gang() {1186#pragma acc loop gang1187  for(int i = 0; i < 5;++i) {}1188  // expected-error@+3{{expected expression}}1189  // expected-error@+2{{expected ')'}}1190  // expected-note@+1{{to match this '('}}1191#pragma acc loop gang(1192  for(int i = 0; i < 5;++i) {}1193  // expected-error@+1{{expected expression}}1194#pragma acc loop gang()1195  for(int i = 0; i < 5;++i) {}1196 1197  // expected-error@+1{{expected expression}}1198#pragma acc loop gang(5, *)1199  for(int i = 0; i < 5;++i) {}1200 1201  // expected-error@+1{{expected expression}}1202#pragma acc loop gang(*)1203  for(int i = 0; i < 5;++i) {}1204 1205  // expected-error@+1{{expected expression}}1206#pragma acc loop gang(5, num:*)1207  for(int i = 0; i < 5;++i) {}1208 1209  // expected-error@+1{{expected expression}}1210#pragma acc loop gang(num:5, *)1211  for(int i = 0; i < 5;++i) {}1212 1213  // expected-error@+1{{expected expression}}1214#pragma acc loop gang(num:5, num:*)1215  for(int i = 0; i < 5;++i) {}1216 1217  // expected-error@+1{{expected expression}}1218#pragma acc loop gang(num:*)1219  for(int i = 0; i < 5;++i) {}1220 1221#pragma acc loop gang(dim:2)1222  for(int i = 0; i < 5;++i) {}1223 1224  // expected-error@+1{{expected expression}}1225#pragma acc loop gang(dim:5, dim:*)1226  for(int i = 0; i < 5;++i) {}1227 1228  // expected-error@+1{{expected expression}}1229#pragma acc loop gang(dim:*)1230  for(int i = 0; i < 5;++i) {}1231 1232#pragma acc loop gang(static:*)1233  for(int i = 0; i < 5;++i) {}1234 1235  // expected-error@+2{{OpenACC 'gang' clause may have at most one 'static' argument}}1236  // expected-note@+1{{previous expression is here}}1237#pragma acc loop gang(static:*, static:5)1238  for(int i = 0; i < 5;++i) {}1239 1240#pragma acc kernels1241#pragma acc loop gang(static:*, 5)1242  for(int i = 0; i < 5;++i) {}1243 1244#pragma acc kernels1245#pragma acc loop gang(static:45, 5)1246  for(int i = 0; i < 5;++i) {}1247 1248  // expected-error@+3{{expected expression}}1249  // expected-error@+2{{expected ')'}}1250  // expected-note@+1{{to match this '('}}1251#pragma acc loop gang(static:45,1252  for(int i = 0; i < 5;++i) {}1253 1254  // expected-error@+2{{expected ')'}}1255  // expected-note@+1{{to match this '('}}1256#pragma acc loop gang(static:451257  for(int i = 0; i < 5;++i) {}1258 1259  // expected-error@+3{{expected expression}}1260  // expected-error@+2{{expected ')'}}1261  // expected-note@+1{{to match this '('}}1262#pragma acc loop gang(static:*,1263  for(int i = 0; i < 5;++i) {}1264 1265  // expected-error@+2{{expected ')'}}1266  // expected-note@+1{{to match this '('}}1267#pragma acc loop gang(static:*1268  for(int i = 0; i < 5;++i) {}1269 1270  // expected-error@+3{{expected expression}}1271  // expected-error@+2{{expected ')'}}1272  // expected-note@+1{{to match this '('}}1273#pragma acc loop gang(45,1274  for(int i = 0; i < 5;++i) {}1275 1276  // expected-error@+2{{expected ')'}}1277  // expected-note@+1{{to match this '('}}1278#pragma acc loop gang(451279  for(int i = 0; i < 5;++i) {}1280 1281  // expected-error@+3{{expected expression}}1282  // expected-error@+2{{expected ')'}}1283  // expected-note@+1{{to match this '('}}1284#pragma acc loop gang(num:45,1285  for(int i = 0; i < 5;++i) {}1286 1287  // expected-error@+2{{expected ')'}}1288  // expected-note@+1{{to match this '('}}1289#pragma acc loop gang(num:451290  for(int i = 0; i < 5;++i) {}1291 1292  // expected-error@+3{{expected expression}}1293  // expected-error@+2{{expected ')'}}1294  // expected-note@+1{{to match this '('}}1295#pragma acc loop gang(dim:45,1296  for(int i = 0; i < 5;++i) {}1297 1298  // expected-error@+2{{expected ')'}}1299  // expected-note@+1{{to match this '('}}1300#pragma acc loop gang(dim:451301  for(int i = 0; i < 5;++i) {}1302 1303#pragma acc kernels1304#pragma acc loop gang(static:*, 5)1305  for(int i = 0; i < 5;++i) {}1306 1307  // expected-error@+1{{argument to 'gang' clause dimension must be a constant expression}}1308#pragma acc loop gang(static:*, dim:returns_int())1309  for(int i = 0; i < 5;++i) {}1310 1311  // expected-error@+2 2{{'num' argument on 'gang' clause is not permitted on an orphaned 'loop' construct}}1312  // expected-error@+1{{argument to 'gang' clause dimension must be a constant expression}}1313#pragma acc loop gang(num: 32, static:*, dim:returns_int(), 5)1314  for(int i = 0; i < 5;++i) {}1315 1316}1317 1318  // expected-error@+4{{OpenACC clause 'seq' may not appear on the same construct as a 'worker' clause on a 'routine' construct}}1319  // expected-note@+3{{previous 'worker' clause is here}}1320  // expected-error@+2{{OpenACC clause 'vector' may not appear on the same construct as a 'worker' clause on a 'routine' construct}}1321  // expected-note@+1{{previous 'worker' clause is here}}1322#pragma acc routine worker, vector, seq, nohost1323void bar();1324 1325  // expected-error@+4{{OpenACC clause 'seq' may not appear on the same construct as a 'worker' clause on a 'routine' construct}}1326  // expected-note@+3{{previous 'worker' clause is here}}1327  // expected-error@+2{{OpenACC clause 'vector' may not appear on the same construct as a 'worker' clause on a 'routine' construct}}1328  // expected-note@+1{{previous 'worker' clause is here}}1329#pragma acc routine(bar) worker, vector, seq, nohost1330 1331 1332// Bind Clause Parsing.1333 1334// expected-error@+1{{expected '('}}1335#pragma acc routine seq bind1336void BCP1();1337 1338  // expected-error@+1{{expected identifier or string literal in OpenACC 'bind' clause}}1339#pragma acc routine(BCP1) seq bind()1340 1341  // expected-error@+1{{expected identifier or string literal in OpenACC 'bind' clause}}1342#pragma acc routine(BCP1) seq bind(1)1343 1344  // expected-error@+1{{expected identifier or string literal in OpenACC 'bind' clause}}1345#pragma acc routine(BCP1) gang bind(0xF)1346 1347// expected-error@+1{{expected function or lambda declaration for 'routine' construct}}1348#pragma acc routine seq bind("ReductionClauseParsing")1349 1350#pragma acc routine(BCP1) seq bind(unknown_thing)1351 1352void AtomicIf() {1353  int i, j;1354  // expected-error@+1{{expected '('}}1355#pragma acc atomic read if1356  i = j;1357#pragma acc atomic read if (0)1358  i = j;1359#pragma acc atomic write if (1)1360  i = j + 1;1361 1362#pragma acc atomic update if (i)1363  ++i;1364#pragma acc atomic if (j)1365  ++i;1366 1367#pragma acc atomic capture if (0)1368  i = j++;1369#pragma acc atomic capture if (i)1370  {1371    ++j;1372    i = j;1373  }1374}1375