| // RUN: %clang_cc1 %s -verify -fopenacc |
| |
| void func() { |
| |
| // expected-error@+1{{expected OpenACC directive}} |
| #pragma acc |
| for(;;){} |
| |
| // expected-error@+2{{expected OpenACC directive}} |
| // expected-error@+1{{invalid OpenACC clause 'whatever'}} |
| #pragma acc(whatever) routine |
| |
| // expected-error@+2{{expected OpenACC directive}} |
| // expected-error@+1{{invalid OpenACC clause 'routine'}} |
| #pragma acc) routine |
| |
| // expected-error@+1{{invalid OpenACC directive 'invalid'}} |
| #pragma acc invalid |
| for(;;){} |
| |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc parallel clause list |
| for(;;){} |
| // expected-error@+2{{expected clause-list or newline in OpenACC directive}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc parallel() clause list |
| for(;;){} |
| // expected-error@+3{{expected clause-list or newline in OpenACC directive}} |
| // expected-error@+2{{expected ')'}} |
| // expected-note@+1{{to match this '('}} |
| #pragma acc parallel( clause list |
| for(;;){} |
| // expected-error@+2{{expected clause-list or newline in OpenACC directive}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc parallel() clause list |
| for(;;){} |
| // expected-error@+3{{expected clause-list or newline in OpenACC directive}} |
| // expected-error@+2{{expected ')'}} |
| // expected-note@+1{{to match this '('}} |
| #pragma acc parallel( clause list |
| for(;;){} |
| // expected-error@+2{{expected clause-list or newline in OpenACC directive}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc serial() clause list |
| for(;;){} |
| // expected-error@+3{{expected clause-list or newline in OpenACC directive}} |
| // expected-error@+2{{expected ')'}} |
| // expected-note@+1{{to match this '('}} |
| #pragma acc serial( clause list |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc serial clause list |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc kernels clause list |
| for(;;){} |
| // expected-error@+2{{OpenACC 'data' construct must have at least one 'copy', 'copyin', 'copyout', 'create', 'no_create', 'present', 'deviceptr', 'attach' or 'default' clause}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc data clause list |
| for(;;){} |
| // expected-error@+2{{OpenACC 'enter data' construct must have at least one 'copyin', 'create' or 'attach' clause}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc enter data clause list |
| for(;;){} |
| // expected-error@+2{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete' or 'detach' clause}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc exit data clause list |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC directive 'enter invalid'}} |
| #pragma acc enter invalid |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC directive 'exit invalid'}} |
| #pragma acc exit invalid |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC directive 'enter'}} |
| #pragma acc enter |
| for(;;){} |
| // expected-error@+1{{expected identifier}} |
| #pragma acc exit } |
| for(;;){} |
| // expected-error@+2{{OpenACC 'host_data' construct must have at least one 'use_device' clause}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc host_data clause list |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc loop clause list |
| for(int i = 0; i < 6;++i){} |
| // expected-error@+1{{invalid OpenACC clause 'invalid'}} |
| #pragma acc parallel invalid clause list |
| for(int i = 0; i < 6;++i){} |
| // expected-error@+1{{invalid OpenACC clause 'invalid'}} |
| #pragma acc serial invalid clause list |
| for(int i = 0; i < 6;++i){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc parallel loop clause list |
| for(int i = 0; i < 6;++i){} |
| |
| #pragma acc parallel loop |
| for(int i = 0; i < 6;++i){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc serial loop clause list |
| for(int i = 0; i < 6;++i){} |
| #pragma acc serial loop |
| for(int i = 0; i < 6;++i){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc kernels loop clause list |
| for(int i = 0; i < 6;++i){} |
| #pragma acc kernels loop |
| for(int i = 0; i < 6;++i){} |
| |
| int i = 0, j = 0, k = 0; |
| #pragma acc atomic |
| i = i + 1; |
| // expected-error@+1{{invalid OpenACC clause 'garbage'}} |
| #pragma acc atomic garbage |
| i = i + 1; |
| // expected-error@+1{{invalid OpenACC clause 'garbage'}} |
| #pragma acc atomic garbage clause list |
| i = i + 1; |
| #pragma acc atomic read |
| i = j; |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc atomic write clause list |
| i = i + j; |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc atomic update clause list |
| i++; |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc atomic capture clause list |
| i = j++; |
| |
| |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-error@+1{{no valid clauses specified in OpenACC 'declare' directive}} |
| #pragma acc declare clause list |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc init clause list |
| for(;;){} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc shutdown clause list |
| for(;;){} |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', 'device_type' or 'if' clause}} |
| #pragma acc set clause list |
| for(;;){} |
| // expected-error@+2{{OpenACC 'update' construct must have at least one 'self', 'host' or 'device' clause}} |
| // expected-error@+1{{invalid OpenACC clause 'clause'}} |
| #pragma acc update clause list |
| for(;;){} |
| } |
| |
| #pragma acc routine seq |
| void routine_func(); |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'worker', 'vector' or 'seq' clause}} |
| #pragma acc routine clause list |
| void routine_func(); |
| |
| // expected-error@+1{{use of undeclared identifier 'func_name'}} |
| #pragma acc routine (func_name) seq |
| // expected-error@+3{{use of undeclared identifier 'func_name'}} |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'worker', 'vector' or 'seq' clause}} |
| #pragma acc routine (func_name) clause list |
| |
| #pragma acc routine (routine_func) seq |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'worker', 'vector' or 'seq' clause}} |
| #pragma acc routine (routine_func) clause list |
| |
| // expected-error@+2{{expected ')'}} |
| // expected-note@+1{{to match this '('}} |
| #pragma acc routine (routine_func()) seq |
| |
| // expected-error@+1{{expected identifier}} |
| #pragma acc routine() seq |
| |
| // expected-error@+1{{expected identifier}} |
| #pragma acc routine(int) seq |