1 // RUN: %clang_cc1 %s -fopenacc -verify 2 3 short getS(); 4 5 void Test() { 6 #pragma acc parallel vector_length(1) 7 while(1); 8 #pragma acc kernels vector_length(1) 9 while(1); 10 11 // expected-error@+1{{OpenACC 'vector_length' clause is not valid on 'serial' directive}} 12 #pragma acc serial vector_length(1) 13 while(1); 14 15 struct NotConvertible{} NC; 16 // expected-error@+1{{OpenACC clause 'vector_length' requires expression of integer type ('struct NotConvertible' invalid)}} 17 #pragma acc parallel vector_length(NC) 18 while(1); 19 20 #pragma acc kernels vector_length(getS()) 21 while(1); 22 23 struct Incomplete *SomeIncomplete; 24 25 // expected-error@+1{{OpenACC clause 'vector_length' requires expression of integer type ('struct Incomplete' invalid)}} 26 #pragma acc kernels vector_length(*SomeIncomplete) 27 while(1); 28 29 enum E{A} SomeE; 30 31 #pragma acc kernels vector_length(SomeE) 32 while(1); 33 34 // expected-error@+1{{OpenACC 'vector_length' clause is not valid on 'loop' directive}} 35 #pragma acc loop vector_length(1) 36 for(int i = 5; i < 10;++i); 37 } 38