brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · bbcdd82 Raw
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