756 lines · c
1// RUN: %clang_cc1 %s -fopenacc -verify2 3void uses() {4#pragma acc parallel loop auto5 for(unsigned i = 0; i < 5; ++i);6#pragma acc parallel loop seq7 for(unsigned i = 0; i < 5; ++i);8#pragma acc parallel loop independent9 for(unsigned i = 0; i < 5; ++i);10 11 // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'auto' clause on a 'parallel loop' construct}}12 // expected-note@+1{{previous 'auto' clause is here}}13#pragma acc parallel loop auto seq14 for(unsigned i = 0; i < 5; ++i);15 // expected-error@+2{{OpenACC clause 'independent' may not appear on the same construct as a 'auto' clause on a 'parallel loop' construct}}16 // expected-note@+1{{previous 'auto' clause is here}}17#pragma acc parallel loop auto independent18 for(unsigned i = 0; i < 5; ++i);19 // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}20 // expected-note@+1{{previous 'seq' clause is here}}21#pragma acc parallel loop seq auto22 for(unsigned i = 0; i < 5; ++i);23 // expected-error@+2{{OpenACC clause 'independent' may not appear on the same construct as a 'seq' clause on a 'parallel loop' construct}}24 // expected-note@+1{{previous 'seq' clause is here}}25#pragma acc parallel loop seq independent26 for(unsigned i = 0; i < 5; ++i);27 // expected-error@+2{{OpenACC clause 'auto' may not appear on the same construct as a 'independent' clause on a 'parallel loop' construct}}28 // expected-note@+1{{previous 'independent' clause is here}}29#pragma acc parallel loop independent auto30 for(unsigned i = 0; i < 5; ++i);31 // expected-error@+2{{OpenACC clause 'seq' may not appear on the same construct as a 'independent' clause on a 'parallel loop' construct}}32 // expected-note@+1{{previous 'independent' clause is here}}33#pragma acc parallel loop independent seq34 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 finalize42 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_present45 for(unsigned i = 0; i < 5; ++i);46#pragma acc parallel loop auto worker47 for(unsigned i = 0; i < 5; ++i);48#pragma acc parallel loop auto vector49 for(unsigned i = 0; i < 5; ++i);50 // expected-error@+1{{OpenACC 'nohost' clause is not valid on 'parallel loop' directive}}51#pragma acc parallel loop auto nohost52 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 self58 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-error@+1{{OpenACC 'device_resident' clause is not valid on 'parallel loop' directive}}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-error@+1{{OpenACC 'link' clause is not valid on 'parallel loop' directive}}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-error@+1{{OpenACC 'bind' clause is not valid on 'parallel loop' directive}}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 async148 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 gang153 for(unsigned i = 0; i < 5; ++i);154#pragma acc parallel loop auto wait155 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 auto159 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 auto162 for(unsigned i = 0; i < 5; ++i);163#pragma acc parallel loop worker auto164 for(unsigned i = 0; i < 5; ++i);165#pragma acc parallel loop vector auto166 for(unsigned i = 0; i < 5; ++i);167 // expected-error@+1{{OpenACC 'nohost' clause is not valid on 'parallel loop' directive}}168#pragma acc parallel loop nohost auto169 for(unsigned i = 0; i < 5; ++i);170#pragma acc parallel loop default(none) auto171 for(unsigned i = 0; i < 5; ++i);172#pragma acc parallel loop if(1) auto173 for(unsigned i = 0; i < 5; ++i);174#pragma acc parallel loop self auto175 for(unsigned i = 0; i < 5; ++i);176#pragma acc parallel loop copy(Var) auto177 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) auto180 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) auto183 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) auto186 for(unsigned i = 0; i < 5; ++i);187#pragma acc parallel loop attach(VarPtr) auto188 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) auto191 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) auto194 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) auto197 for(unsigned i = 0; i < 5; ++i);198#pragma acc parallel loop deviceptr(VarPtr) auto199 for(unsigned i = 0; i < 5; ++i);200 // expected-error@+1{{OpenACC 'device_resident' clause is not valid on 'parallel loop' directive}}201#pragma acc parallel loop device_resident(VarPtr) auto202 for(unsigned i = 0; i < 5; ++i);203#pragma acc parallel loop firstprivate(Var) auto204 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) auto207 for(unsigned i = 0; i < 5; ++i);208 // expected-error@+1{{OpenACC 'link' clause is not valid on 'parallel loop' directive}}209#pragma acc parallel loop link(Var) auto210 for(unsigned i = 0; i < 5; ++i);211#pragma acc parallel loop no_create(Var) auto212 for(unsigned i = 0; i < 5; ++i);213#pragma acc parallel loop present(Var) auto214 for(unsigned i = 0; i < 5; ++i);215#pragma acc parallel loop private(Var) auto216 for(unsigned i = 0; i < 5; ++i);217#pragma acc parallel loop copyout(Var) auto218 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) auto221 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) auto224 for(unsigned i = 0; i < 5; ++i);225#pragma acc parallel loop copyin(Var) auto226 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) auto229 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) auto232 for(unsigned i = 0; i < 5; ++i);233#pragma acc parallel loop create(Var) auto234 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) auto237 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) auto240 for(unsigned i = 0; i < 5; ++i);241#pragma acc parallel loop reduction(+:Var) auto242 for(unsigned i = 0; i < 5; ++i);243#pragma acc parallel loop collapse(1) auto244 for(unsigned i = 0; i < 5; ++i);245 // expected-error@+1{{OpenACC 'bind' clause is not valid on 'parallel loop' directive}}246#pragma acc parallel loop bind(Var) auto247 for(unsigned i = 0; i < 5; ++i);248#pragma acc parallel loop vector_length(1) auto249 for(unsigned i = 0; i < 5; ++i);250#pragma acc parallel loop num_gangs(1) auto251 for(unsigned i = 0; i < 5; ++i);252#pragma acc parallel loop num_workers(1) auto253 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) auto256 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) auto259 for(unsigned i = 0; i < 5; ++i);260#pragma acc parallel loop device_type(*) auto261 for(unsigned i = 0; i < 5; ++i);262#pragma acc parallel loop dtype(*) auto263 for(unsigned i = 0; i < 5; ++i);264#pragma acc parallel loop async auto265 for(unsigned i = 0; i < 5; ++i);266#pragma acc parallel loop tile(1+2, 1) auto267 for(unsigned j = 0; j < 5; ++j)268 for(unsigned i = 0; i < 5; ++i);269#pragma acc parallel loop gang auto270 for(unsigned i = 0; i < 5; ++i);271#pragma acc parallel loop wait auto272 for(unsigned i = 0; i < 5; ++i);273 274 // 'independent' can also be combined with any clauses275 // expected-error@+1{{OpenACC 'finalize' clause is not valid on 'parallel loop' directive}}276#pragma acc parallel loop independent finalize277 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_present280 for(unsigned i = 0; i < 5; ++i);281#pragma acc parallel loop independent worker282 for(unsigned i = 0; i < 5; ++i);283#pragma acc parallel loop independent vector284 for(unsigned i = 0; i < 5; ++i);285 // expected-error@+1{{OpenACC 'nohost' clause is not valid on 'parallel loop' directive}}286#pragma acc parallel loop independent nohost287 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 self293 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-error@+1{{OpenACC 'device_resident' clause is not valid on 'parallel loop' directive}}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-error@+1{{OpenACC 'link' clause is not valid on 'parallel loop' directive}}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-error@+1{{OpenACC 'bind' clause is not valid on 'parallel loop' directive}}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 async383 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 gang388 for(unsigned i = 0; i < 5; ++i);389#pragma acc parallel loop independent wait390 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 independent394 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 independent397 for(unsigned i = 0; i < 5; ++i);398#pragma acc parallel loop worker independent399 for(unsigned i = 0; i < 5; ++i);400#pragma acc parallel loop vector independent401 for(unsigned i = 0; i < 5; ++i);402 // expected-error@+1{{OpenACC 'nohost' clause is not valid on 'parallel loop' directive}}403#pragma acc parallel loop nohost independent404 for(unsigned i = 0; i < 5; ++i);405#pragma acc parallel loop default(none) independent406 for(unsigned i = 0; i < 5; ++i);407#pragma acc parallel loop if(1) independent408 for(unsigned i = 0; i < 5; ++i);409#pragma acc parallel loop self independent410 for(unsigned i = 0; i < 5; ++i);411#pragma acc parallel loop copy(Var) independent412 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) independent415 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) independent418 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) independent421 for(unsigned i = 0; i < 5; ++i);422#pragma acc parallel loop attach(VarPtr) independent423 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) independent426 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) independent429 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) independent432 for(unsigned i = 0; i < 5; ++i);433#pragma acc parallel loop deviceptr(VarPtr) independent434 for(unsigned i = 0; i < 5; ++i);435 // expected-error@+1{{OpenACC 'device_resident' clause is not valid on 'parallel loop' directive}}436#pragma acc parallel loop device_resident(VarPtr) independent437 for(unsigned i = 0; i < 5; ++i);438#pragma acc parallel loop firstprivate(Var) independent439 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) independent442 for(unsigned i = 0; i < 5; ++i);443 // expected-error@+1{{OpenACC 'link' clause is not valid on 'parallel loop' directive}}444#pragma acc parallel loop link(Var) independent445 for(unsigned i = 0; i < 5; ++i);446#pragma acc parallel loop no_create(Var) independent447 for(unsigned i = 0; i < 5; ++i);448#pragma acc parallel loop present(Var) independent449 for(unsigned i = 0; i < 5; ++i);450#pragma acc parallel loop private(Var) independent451 for(unsigned i = 0; i < 5; ++i);452#pragma acc parallel loop copyout(Var) independent453 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) independent456 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) independent459 for(unsigned i = 0; i < 5; ++i);460#pragma acc parallel loop copyin(Var) independent461 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) independent464 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) independent467 for(unsigned i = 0; i < 5; ++i);468#pragma acc parallel loop create(Var) independent469 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) independent472 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) independent475 for(unsigned i = 0; i < 5; ++i);476#pragma acc parallel loop reduction(+:Var) independent477 for(unsigned i = 0; i < 5; ++i);478#pragma acc parallel loop collapse(1) independent479 for(unsigned i = 0; i < 5; ++i);480 // expected-error@+1{{OpenACC 'bind' clause is not valid on 'parallel loop' directive}}481#pragma acc parallel loop bind(Var) independent482 for(unsigned i = 0; i < 5; ++i);483#pragma acc parallel loop vector_length(1) independent484 for(unsigned i = 0; i < 5; ++i);485#pragma acc parallel loop num_gangs(1) independent486 for(unsigned i = 0; i < 5; ++i);487#pragma acc parallel loop num_workers(1) independent488 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) independent491 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) independent494 for(unsigned i = 0; i < 5; ++i);495#pragma acc parallel loop device_type(*) independent496 for(unsigned i = 0; i < 5; ++i);497#pragma acc parallel loop dtype(*) independent498 for(unsigned i = 0; i < 5; ++i);499#pragma acc parallel loop async independent500 for(unsigned i = 0; i < 5; ++i);501#pragma acc parallel loop tile(1+2, 1) independent502 for(unsigned j = 0; j < 5; ++j)503 for(unsigned i = 0; i < 5; ++i);504#pragma acc parallel loop gang independent505 for(unsigned i = 0; i < 5; ++i);506#pragma acc parallel loop wait independent507 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 'seq' clause is here}}512#pragma acc parallel loop seq gang513 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 'seq' clause is here}}516#pragma acc parallel loop seq worker517 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 'seq' clause is here}}520#pragma acc parallel loop seq vector521 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 finalize524 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_present527 for(unsigned i = 0; i < 5; ++i);528 // expected-error@+1{{OpenACC 'nohost' clause is not valid on 'parallel loop' directive}}529#pragma acc parallel loop seq nohost530 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 self536 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-error@+1{{OpenACC 'device_resident' clause is not valid on 'parallel loop' directive}}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-error@+1{{OpenACC 'link' clause is not valid on 'parallel loop' directive}}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-error@+1{{OpenACC 'bind' clause is not valid on 'parallel loop' directive}}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 async626 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 wait631 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 'gang' clause is here}}635#pragma acc parallel loop gang seq636 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 'worker' clause is here}}639#pragma acc parallel loop worker seq640 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 'vector' clause is here}}643#pragma acc parallel loop vector seq644 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 seq647 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 seq650 for(unsigned i = 0; i < 5; ++i);651 // expected-error@+1{{OpenACC 'nohost' clause is not valid on 'parallel loop' directive}}652#pragma acc parallel loop nohost seq653 for(unsigned i = 0; i < 5; ++i);654#pragma acc parallel loop default(none) seq655 for(unsigned i = 0; i < 5; ++i);656#pragma acc parallel loop if(1) seq657 for(unsigned i = 0; i < 5; ++i);658#pragma acc parallel loop self seq659 for(unsigned i = 0; i < 5; ++i);660#pragma acc parallel loop copy(Var) seq661 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) seq664 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) seq667 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) seq670 for(unsigned i = 0; i < 5; ++i);671#pragma acc parallel loop attach(VarPtr) seq672 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) seq675 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) seq678 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) seq681 for(unsigned i = 0; i < 5; ++i);682#pragma acc parallel loop deviceptr(VarPtr) seq683 for(unsigned i = 0; i < 5; ++i);684 // expected-error@+1{{OpenACC 'device_resident' clause is not valid on 'parallel loop' directive}}685#pragma acc parallel loop device_resident(VarPtr) seq686 for(unsigned i = 0; i < 5; ++i);687#pragma acc parallel loop firstprivate(Var) seq688 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) seq691 for(unsigned i = 0; i < 5; ++i);692 // expected-error@+1{{OpenACC 'link' clause is not valid on 'parallel loop' directive}}693#pragma acc parallel loop link(Var) seq694 for(unsigned i = 0; i < 5; ++i);695#pragma acc parallel loop no_create(Var) seq696 for(unsigned i = 0; i < 5; ++i);697#pragma acc parallel loop present(Var) seq698 for(unsigned i = 0; i < 5; ++i);699#pragma acc parallel loop private(Var) seq700 for(unsigned i = 0; i < 5; ++i);701#pragma acc parallel loop copyout(Var) seq702 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) seq705 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) seq708 for(unsigned i = 0; i < 5; ++i);709#pragma acc parallel loop copyin(Var) seq710 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) seq713 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) seq716 for(unsigned i = 0; i < 5; ++i);717#pragma acc parallel loop create(Var) seq718 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) seq721 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) seq724 for(unsigned i = 0; i < 5; ++i);725#pragma acc parallel loop reduction(+:Var) seq726 for(unsigned i = 0; i < 5; ++i);727#pragma acc parallel loop collapse(1) seq728 for(unsigned i = 0; i < 5; ++i);729 // expected-error@+1{{OpenACC 'bind' clause is not valid on 'parallel loop' directive}}730#pragma acc parallel loop bind(Var) seq731 for(unsigned i = 0; i < 5; ++i);732#pragma acc parallel loop vector_length(1) seq733 for(unsigned i = 0; i < 5; ++i);734#pragma acc parallel loop num_gangs(1) seq735 for(unsigned i = 0; i < 5; ++i);736#pragma acc parallel loop num_workers(1) seq737 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) seq740 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) seq743 for(unsigned i = 0; i < 5; ++i);744#pragma acc parallel loop device_type(*) seq745 for(unsigned i = 0; i < 5; ++i);746#pragma acc parallel loop dtype(*) seq747 for(unsigned i = 0; i < 5; ++i);748#pragma acc parallel loop async seq749 for(unsigned i = 0; i < 5; ++i);750#pragma acc parallel loop tile(1+2, 1) seq751 for(;;)752 for(unsigned i = 0; i < 5; ++i);753#pragma acc parallel loop wait seq754 for(unsigned i = 0; i < 5; ++i);755}756