1 // RUN: %clang_cc1 %s -verify -fopenacc 2 // 3 // expected-error@+1{{OpenACC construct 'loop' cannot be used here; it can only be used in a statement context}} 4 #pragma acc loop 5 6 // expected-error@+1{{OpenACC construct 'loop' cannot be used here; it can only be used in a statement context}} 7 #pragma acc loop 8 int foo; 9 10 struct S { 11 // expected-error@+1{{OpenACC construct 'loop' cannot be used here; it can only be used in a statement context}} 12 #pragma acc loop 13 int i; 14 15 void mem_func() { 16 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 17 // expected-note@+1{{'loop' construct is here}} 18 #pragma acc loop 19 int foo; 20 21 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 22 // expected-note@+1{{'loop' construct is here}} 23 #pragma acc loop 24 while(0); 25 26 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 27 // expected-note@+1{{'loop' construct is here}} 28 #pragma acc loop 29 do{}while(0); 30 31 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 32 // expected-note@+1{{'loop' construct is here}} 33 #pragma acc loop 34 {} 35 36 #pragma acc loop 37 for(int i = 0; i < 6; ++i); 38 39 int array[5]; 40 41 #pragma acc loop 42 for(auto X : array){} 43 } 44 }; 45 46 template<typename T> 47 void templ_func() { 48 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 49 // expected-note@+1{{'loop' construct is here}} 50 #pragma acc loop 51 int foo; 52 53 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 54 // expected-note@+1{{'loop' construct is here}} 55 #pragma acc loop 56 while(T{}); 57 58 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 59 // expected-note@+1{{'loop' construct is here}} 60 #pragma acc loop 61 do{}while(0); 62 63 // expected-error@+3{{OpenACC 'loop' construct can only be applied to a 'for' loop}} 64 // expected-note@+1{{'loop' construct is here}} 65 #pragma acc loop 66 {} 67 68 #pragma acc loop 69 for(T i = 0; i < 1; ++i); 70 71 T array[5]; 72 73 #pragma acc loop 74 for(auto X : array){} 75 } 76 77 void use() { 78 templ_func<int>(); 79 } 80 81