61 lines · cpp
1// RUN: %clang_cc1 %s -fopenacc -verify2 3 4void use() {5 int Array[5];6 int NotArray;7 8#pragma acc loop9 for (int i = 0; i < 5;++i) {10#pragma acc cache(Array[1])11#pragma acc cache(Array[1:2])12 13 // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}}14#pragma acc cache(Array)15 // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}}16#pragma acc cache(NotArray)17 }18}19 20struct S {21 int Array[5];22 int NotArray;23 int Array2D[5][5];24 25 void use() {26#pragma acc loop27 for (int i = 0; i < 5;++i) {28#pragma acc cache(Array[1])29#pragma acc cache(Array[1:2])30#pragma acc cache(Array2D[1][1])31#pragma acc cache(Array2D[1][1:2])32 33 // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}}34#pragma acc cache(Array)35 // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}}36#pragma acc cache(NotArray)37 }38 }39};40 41template<typename T>42void templ_use() {43 T Array[5];44 T NotArray;45 46#pragma acc loop47 for (int i = 0; i < 5;++i) {48#pragma acc cache(Array[1])49#pragma acc cache(Array[1:2])50 51 // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}}52#pragma acc cache(Array)53 // expected-error@+1{{OpenACC variable in 'cache' directive is not a valid sub-array or array element}}54#pragma acc cache(NotArray)55 }56}57 58void foo() {59 templ_use<int>();60}61