// RUN: %clang_cc1 %s -fopenacc -verify void use() { int Array[5]; int NotArray; #pragma acc loop for (int i = 0; i < 5;++i) { #pragma acc cache(Array[1]) #pragma acc cache(Array[1:2]) // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}} #pragma acc cache(Array) // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}} #pragma acc cache(NotArray) } } struct S { int Array[5]; int NotArray; int Array2D[5][5]; void use() { #pragma acc loop for (int i = 0; i < 5;++i) { #pragma acc cache(Array[1]) #pragma acc cache(Array[1:2]) #pragma acc cache(Array2D[1][1]) #pragma acc cache(Array2D[1][1:2]) // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}} #pragma acc cache(Array) // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}} #pragma acc cache(NotArray) } } }; template void templ_use() { T Array[5]; T NotArray; #pragma acc loop for (int i = 0; i < 5;++i) { #pragma acc cache(Array[1]) #pragma acc cache(Array[1:2]) // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}} #pragma acc cache(Array) // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}} #pragma acc cache(NotArray) } } void foo() { templ_use(); }