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 loop attach(LocalInt)17 for (unsigned i = 0; i < 5; ++i);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 loop attach(&LocalInt)21 for (unsigned i = 0; i < 5; ++i);22 23#pragma acc serial loop attach(LocalPtr)24 for (unsigned i = 0; i < 5; ++i);25 26 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int[5]'}}27#pragma acc kernels loop attach(Array)28 for (unsigned i = 0; i < 5; ++i);29 30 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int'}}31#pragma acc parallel loop attach(Array[0])32 for (unsigned i = 0; i < 5; ++i);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 loop attach(Array[0:1])37 for (unsigned i = 0; i < 5; ++i);38 39 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int *[5]'}}40#pragma acc parallel loop attach(PtrArray)41 for (unsigned i = 0; i < 5; ++i);42 43#pragma acc parallel loop attach(PtrArray[0])44 for (unsigned i = 0; i < 5; ++i);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 loop attach(PtrArray[0:1])49 for (unsigned i = 0; i < 5; ++i);50 51 // expected-error@+1{{expected pointer in 'attach' clause, type is 'struct S'}}52#pragma acc parallel loop attach(s)53 for (unsigned i = 0; i < 5; ++i);54 55 // expected-error@+1{{expected pointer in 'attach' clause, type is 'int'}}56#pragma acc parallel loop attach(s.IntMem)57 for (unsigned i = 0; i < 5; ++i);58 59#pragma acc parallel loop attach(s.PtrMem)60 for (unsigned i = 0; i < 5; ++i);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