// RUN: %clang_cc1 %s -verify -fopenacc void Func(int i, int j) { int array[5]; #pragma acc parallel private(array[:]) while (true); #pragma acc parallel private(array[i:]) while (true); #pragma acc parallel private(array[:j]) while (true); #pragma acc parallel private(array[i:j]) while (true); #pragma acc parallel private(array[1:2]) while (true); // expected-error@+1{{expected unqualified-id}} #pragma acc parallel private(array[::]) while (true); // expected-error@+2{{expected ']'}} // expected-note@+1{{to match this '['}} #pragma acc parallel private(array[1::]) while (true); // expected-error@+2{{expected ']'}} // expected-note@+1{{to match this '['}} #pragma acc parallel private(array[:2:]) while (true); // expected-error@+3{{expected unqualified-id}} // expected-error@+2{{expected ']'}} // expected-note@+1{{to match this '['}} #pragma acc parallel private(array[::3]) while (true); // expected-error@+2{{expected ']'}} // expected-note@+1{{to match this '['}} #pragma acc parallel private(array[1:2:3]) while (true); } template// #IPTR void TemplFunc() { T array[I]; T array2[2*I]; T t; // #tDecl #pragma acc parallel private(array[:]) while (true); #pragma acc parallel private(array[t:]) while (true); #pragma acc parallel private(array[I-1:]) while (true); #pragma acc parallel private(array[IPtr:]) while (true); #pragma acc parallel private(array[:t]) while (true); #pragma acc parallel private(array[:I]) while (true); #pragma acc parallel private(array[:IPtr]) while (true); #pragma acc parallel private(array[t:t]) while (true); #pragma acc parallel private(array2[I:I]) while (true); #pragma acc parallel private(array[IPtr:IPtr]) while (true); // expected-error@+1{{expected unqualified-id}} #pragma acc parallel private(array[::]) while (true); // expected-error@+3{{'t' is not a class, namespace, or enumeration}} // expected-note@#tDecl{{'t' declared here}} // expected-error@+1{{expected unqualified-id}} #pragma acc parallel private(array[t::]) while (true); // expected-error@+2{{expected ']'}} // expected-note@+1{{to match this '['}} #pragma acc parallel private(array[:I:]) while (true); // expected-error@+2{{no member named 'IPtr' in the global namespace}} // expected-note@#IPTR{{'IPtr' declared here}} #pragma acc parallel private(array[::IPtr]) while (true); // expected-error@+2{{expected ']'}} // expected-note@+1{{to match this '['}} #pragma acc parallel private(array[IPtr:I:t]) while (true); } void use() { static constexpr int SomeI = 1; TemplFunc(); }