// RUN: %clang_cc1 %s -verify -fopenacc // // expected-error@+1{{OpenACC construct 'loop' cannot be used here; it can only be used in a statement context}} #pragma acc loop // expected-error@+1{{OpenACC construct 'loop' cannot be used here; it can only be used in a statement context}} #pragma acc loop int foo; struct S { // expected-error@+1{{OpenACC construct 'loop' cannot be used here; it can only be used in a statement context}} #pragma acc loop int i; void mem_func() { // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop int foo; // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop while(0); // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop do{}while(0); // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop {} #pragma acc loop for(int i = 0; i < 6; ++i); int array[5]; #pragma acc loop for(auto X : array){} } }; template void templ_func() { // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop int foo; // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop while(T{}); // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop do{}while(0); // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} // expected-note@+1{{'loop' construct is here}} #pragma acc loop {} #pragma acc loop for(T i = 0; i < 1; ++i); T array[5]; #pragma acc loop for(auto X : array){} } void use() { templ_func(); }