// RUN: %clang_cc1 %s -fopenacc -verify


void use() {
  int Array[5];
  int NotArray;

#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 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<typename T>
void templ_use() {
  T Array[5];
  T NotArray;

#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<int>();
}
