66 lines · c
1// RUN: %clang_cc1 %s -fopenacc -verify2 3struct S {4 int IntMem;5 int *PtrMem;6};7 8void uses() {9 int LocalInt;10 int *LocalPtr;11 int Array[5];12 int *PtrArray[5];13 struct S s;14 15 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int'}}16#pragma acc parallel attach(LocalInt)17 while (1);18 19 // expected-error@+1{{OpenACC variable is not a valid variable name, sub-array, array element, member of a composite variable, or composite variable member}}20#pragma acc parallel attach(&LocalInt)21 while (1);22 23#pragma acc serial attach(LocalPtr)24 while (1);25 26 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int[5]'}}27#pragma acc kernels attach(Array)28 while (1);29 30 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int'}}31#pragma acc parallel attach(Array[0])32 while (1);33 34 // expected-error@+2{{OpenACC sub-array is not allowed here}}35 // expected-note@+1{{expected variable of pointer type}}36#pragma acc parallel attach(Array[0:1])37 while (1);38 39 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int *[5]'}}40#pragma acc parallel attach(PtrArray)41 while (1);42 43#pragma acc parallel attach(PtrArray[0])44 while (1);45 46 // expected-error@+2{{OpenACC sub-array is not allowed here}}47 // expected-note@+1{{expected variable of pointer type}}48#pragma acc parallel attach(PtrArray[0:1])49 while (1);50 51 // expected-error@+1{{expected pointer in 'attach' clause, type is 'struct S'}}52#pragma acc parallel attach(s)53 while (1);54 55 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int'}}56#pragma acc parallel attach(s.IntMem)57 while (1);58 59#pragma acc parallel attach(s.PtrMem)60 while (1);61 62 // expected-error@+1{{OpenACC 'attach' clause is not valid on 'loop' directive}}63#pragma acc loop attach(LocalInt)64 for(int i = 5; i < 10;++i);65}66