76 lines · c
1// RUN: %clang_cc1 %s -verify -fopenacc2 3// expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}}4#pragma acc parallel5 6// expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}}7#pragma acc serial8 9// expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}}10#pragma acc kernels11 12// expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}}13#pragma acc parallel14int foo;15// expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}}16#pragma acc serial17int foo2;18// expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}}19#pragma acc kernels20int foo3;21 22struct S {23// expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}}24#pragma acc parallel25int foo;26// expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}}27#pragma acc serial28int foo2;29// expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}}30#pragma acc kernels31int foo3;32};33 34void func() {35 // FIXME: Should we disallow this on declarations, or consider this to be on36 // the initialization? This is currently rejected in C because37 // Parser::ParseOpenACCDirectiveStmt() calls ParseStatement() and passes the38 // statement context as "SubStmt" which does not allow for a declaration in C.39#pragma acc parallel40 int foo; // expected-error {{expected expression}}41 42#pragma acc parallel43 {44#pragma acc parallel45 {46 }47 }48 49 {50// expected-error@+2{{expected statement}}51#pragma acc parallel52 }53 54 {55// expected-error@+2{{expected statement}}56#pragma acc serial57 }58 {59// expected-error@+2{{expected statement}}60#pragma acc kernels61 }62 63#pragma acc parallel64 while(0){}65 66#pragma acc parallel67 for(;;){}68 69#pragma acc parallel70#pragma acc parallel71 for(;;){}72 73// expected-error@+2{{expected statement}}74#pragma acc parallel75};76