181 lines · c
1// RUN: %clang_cc1 %s -verify -fopenacc2 3void func() {4 5 // expected-error@+1{{expected OpenACC directive}}6#pragma acc7 for(;;){}8 9 // expected-error@+2{{expected OpenACC directive}}10 // expected-error@+1{{invalid OpenACC clause 'whatever'}}11#pragma acc(whatever) routine12 13 // expected-error@+2{{expected OpenACC directive}}14 // expected-error@+1{{invalid OpenACC clause 'routine'}}15#pragma acc) routine16 17 // expected-error@+1{{invalid OpenACC directive 'invalid'}}18#pragma acc invalid19 for(;;){}20 21 // expected-error@+1{{invalid OpenACC clause 'clause'}}22#pragma acc parallel clause list23 for(;;){}24 // expected-error@+2{{expected clause-list or newline in OpenACC directive}}25 // expected-error@+1{{invalid OpenACC clause 'clause'}}26#pragma acc parallel() clause list27 for(;;){}28 // expected-error@+3{{expected clause-list or newline in OpenACC directive}}29 // expected-error@+2{{expected ')'}}30 // expected-note@+1{{to match this '('}}31#pragma acc parallel( clause list32 for(;;){}33 // expected-error@+2{{expected clause-list or newline in OpenACC directive}}34 // expected-error@+1{{invalid OpenACC clause 'clause'}}35#pragma acc parallel() clause list36 for(;;){}37 // expected-error@+3{{expected clause-list or newline in OpenACC directive}}38 // expected-error@+2{{expected ')'}}39 // expected-note@+1{{to match this '('}}40#pragma acc parallel( clause list41 for(;;){}42 // expected-error@+2{{expected clause-list or newline in OpenACC directive}}43 // expected-error@+1{{invalid OpenACC clause 'clause'}}44#pragma acc serial() clause list45 for(;;){}46 // expected-error@+3{{expected clause-list or newline in OpenACC directive}}47 // expected-error@+2{{expected ')'}}48 // expected-note@+1{{to match this '('}}49#pragma acc serial( clause list50 for(;;){}51 // expected-error@+1{{invalid OpenACC clause 'clause'}}52#pragma acc serial clause list53 for(;;){}54 // expected-error@+1{{invalid OpenACC clause 'clause'}}55#pragma acc kernels clause list56 for(;;){}57 // expected-error@+2{{OpenACC 'data' construct must have at least one 'attach', 'copy', 'copyin', 'copyout', 'create', 'default', 'deviceptr', 'no_create', or 'present' clause}}58 // expected-error@+1{{invalid OpenACC clause 'clause'}}59#pragma acc data clause list60 for(;;){}61 // expected-error@+2{{OpenACC 'enter data' construct must have at least one 'attach', 'copyin', or 'create' clause}}62 // expected-error@+1{{invalid OpenACC clause 'clause'}}63#pragma acc enter data clause list64 for(;;){}65 // expected-error@+2{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}66 // expected-error@+1{{invalid OpenACC clause 'clause'}}67#pragma acc exit data clause list68 for(;;){}69 // expected-error@+1{{invalid OpenACC directive 'enter invalid'}}70#pragma acc enter invalid71 for(;;){}72 // expected-error@+1{{invalid OpenACC directive 'exit invalid'}}73#pragma acc exit invalid74 for(;;){}75 // expected-error@+1{{invalid OpenACC directive 'enter'}}76#pragma acc enter77 for(;;){}78 // expected-error@+1{{expected identifier}}79#pragma acc exit }80 for(;;){}81 // expected-error@+2{{OpenACC 'host_data' construct must have at least one 'use_device' clause}}82 // expected-error@+1{{invalid OpenACC clause 'clause'}}83#pragma acc host_data clause list84 for(;;){}85 // expected-error@+1{{invalid OpenACC clause 'clause'}}86#pragma acc loop clause list87 for(int i = 0; i < 6;++i){}88 // expected-error@+1{{invalid OpenACC clause 'invalid'}}89#pragma acc parallel invalid clause list90 for(int i = 0; i < 6;++i){}91 // expected-error@+1{{invalid OpenACC clause 'invalid'}}92#pragma acc serial invalid clause list93 for(int i = 0; i < 6;++i){}94 // expected-error@+1{{invalid OpenACC clause 'clause'}}95#pragma acc parallel loop clause list96 for(int i = 0; i < 6;++i){}97 98#pragma acc parallel loop99 for(int i = 0; i < 6;++i){}100 // expected-error@+1{{invalid OpenACC clause 'clause'}}101#pragma acc serial loop clause list102 for(int i = 0; i < 6;++i){}103#pragma acc serial loop104 for(int i = 0; i < 6;++i){}105 // expected-error@+1{{invalid OpenACC clause 'clause'}}106#pragma acc kernels loop clause list107 for(int i = 0; i < 6;++i){}108#pragma acc kernels loop109 for(int i = 0; i < 6;++i){}110 111 int i = 0, j = 0, k = 0;112#pragma acc atomic113 i = i + 1;114 // expected-error@+1{{invalid OpenACC clause 'garbage'}}115#pragma acc atomic garbage116 i = i + 1;117 // expected-error@+1{{invalid OpenACC clause 'garbage'}}118#pragma acc atomic garbage clause list119 i = i + 1;120#pragma acc atomic read121 i = j;122 // expected-error@+1{{invalid OpenACC clause 'clause'}}123#pragma acc atomic write clause list124 i = i + j;125 // expected-error@+1{{invalid OpenACC clause 'clause'}}126#pragma acc atomic update clause list127 i++;128 // expected-error@+1{{invalid OpenACC clause 'clause'}}129#pragma acc atomic capture clause list130 i = j++;131 132 133 // expected-error@+2{{invalid OpenACC clause 'clause'}}134 // expected-error@+1{{no valid clauses specified in OpenACC 'declare' directive}}135#pragma acc declare clause list136 for(;;){}137 // expected-error@+1{{invalid OpenACC clause 'clause'}}138#pragma acc init clause list139 for(;;){}140 // expected-error@+1{{invalid OpenACC clause 'clause'}}141#pragma acc shutdown clause list142 for(;;){}143 // expected-error@+2{{invalid OpenACC clause 'clause'}}144 // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', or 'device_type' clause}}145#pragma acc set clause list146 for(;;){}147 // expected-error@+2{{OpenACC 'update' construct must have at least one 'device', 'host', or 'self' clause}}148 // expected-error@+1{{invalid OpenACC clause 'clause'}}149#pragma acc update clause list150 for(;;){}151}152 153#pragma acc routine seq154void routine_func();155// expected-error@+2{{invalid OpenACC clause 'clause'}}156// expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'seq', 'vector', or 'worker' clause}}157#pragma acc routine clause list158void routine_func();159 160// expected-error@+1{{use of undeclared identifier 'func_name'}}161#pragma acc routine (func_name) seq162// expected-error@+3{{use of undeclared identifier 'func_name'}}163// expected-error@+2{{invalid OpenACC clause 'clause'}}164// expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'seq', 'vector', or 'worker' clause}}165#pragma acc routine (func_name) clause list166 167#pragma acc routine (routine_func) seq168// expected-error@+2{{invalid OpenACC clause 'clause'}}169// expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'seq', 'vector', or 'worker' clause}}170#pragma acc routine (routine_func) clause list171 172// expected-error@+2{{expected ')'}}173// expected-note@+1{{to match this '('}}174#pragma acc routine (routine_func()) seq175 176// expected-error@+1{{expected identifier}}177#pragma acc routine() seq178 179// expected-error@+1{{expected identifier}}180#pragma acc routine(int) seq181