xref: /llvm-project/clang/test/SemaOpenACC/compute-construct-vector_length-clause.c (revision b0cfbfd74bfd9d077f7c1854a1b38dcbe9d402e4)
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