// RUN: %clang_cc1 %s -verify -fopenacc void func() { // expected-error@+2{{expected OpenACC directive}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc for(;;){} // expected-error@+3{{expected OpenACC directive}} // expected-error@+2{{invalid OpenACC clause 'whatever'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc(whatever) routine // expected-error@+3{{expected OpenACC directive}} // expected-error@+2{{invalid OpenACC clause 'routine'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc) routine // expected-error@+2{{invalid OpenACC directive 'invalid'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc invalid for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc parallel clause list for(;;){} // expected-error@+3{{expected clause-list or newline in OpenACC directive}} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc parallel() clause list for(;;){} // expected-error@+4{{expected clause-list or newline in OpenACC directive}} // expected-error@+3{{expected ')'}} // expected-note@+2{{to match this '('}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc parallel( clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc serial clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc kernels clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc data clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc enter data clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc exit data clause list for(;;){} // expected-error@+2{{invalid OpenACC directive 'enter invalid'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc enter invalid for(;;){} // expected-error@+2{{invalid OpenACC directive 'exit invalid'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc exit invalid for(;;){} // expected-error@+2{{invalid OpenACC directive 'enter'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc enter for(;;){} // expected-error@+2{{expected identifier}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc exit } for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc host_data clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc loop clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'invalid'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc parallel invalid clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc parallel loop clause list for(;;){} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc parallel loop for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc serial loop clause list for(;;){} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc serial loop for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc kernels loop clause list for(;;){} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc kernels loop for(;;){} int i = 0, j = 0, k = 0; // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic i = j; // expected-error@+2{{invalid OpenACC clause 'garbage'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic garbage i = j; // expected-error@+2{{invalid OpenACC clause 'garbage'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic garbage clause list i = j; // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic read i = j; // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic write clause list i = i + j; // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic update clause list i++; // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc atomic capture clause list i = j++; // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc declare clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc init clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc shutdown clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc set clause list for(;;){} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc update clause list for(;;){} } // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine void routine_func(); // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine clause list void routine_func(); // expected-error@+2{{use of undeclared identifier 'func_name'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine (func_name) // expected-error@+3{{use of undeclared identifier 'func_name'}} // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine (func_name) clause list // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine (routine_func) // expected-error@+2{{invalid OpenACC clause 'clause'}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine (routine_func) clause list // expected-error@+3{{expected ')'}} // expected-note@+2{{to match this '('}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine (routine_func()) // expected-error@+2{{expected identifier}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine() // expected-error@+2{{expected identifier}} // expected-warning@+1{{OpenACC directives not yet implemented, pragma ignored}} #pragma acc routine(int)