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