// RUN: %clang_cc1 %s -verify -fopenacc // expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}} #pragma acc parallel // expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}} #pragma acc serial // expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}} #pragma acc kernels // expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}} #pragma acc parallel int foo; // expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}} #pragma acc serial int foo2; // expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}} #pragma acc kernels int foo3; struct S { // expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}} #pragma acc parallel int foo; // expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}} #pragma acc serial int foo2; // expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}} #pragma acc kernels int foo3; }; void func() { // FIXME: Should we disallow this on declarations, or consider this to be on // the initialization? This is currently rejected in C because // Parser::ParseOpenACCDirectiveStmt() calls ParseStatement() and passes the // statement context as "SubStmt" which does not allow for a declaration in C. #pragma acc parallel int foo; // expected-error {{expected expression}} #pragma acc parallel { #pragma acc parallel { } } { // expected-error@+2{{expected statement}} #pragma acc parallel } { // expected-error@+2{{expected statement}} #pragma acc serial } { // expected-error@+2{{expected statement}} #pragma acc kernels } #pragma acc parallel while(0){} #pragma acc parallel for(;;){} #pragma acc parallel #pragma acc parallel for(;;){} // expected-error@+2{{expected statement}} #pragma acc parallel };