1 // RUN: %clang_cc1 %s -fopenacc -verify 2 3 struct NotConvertible{} NC; 4 short getS(); 5 int getI(); 6 7 void uses() { 8 int arr[5]; 9 10 #pragma acc parallel wait 11 while(1); 12 13 #pragma acc serial wait() 14 while(1); 15 16 #pragma acc kernels wait(getS(), getI()) 17 while(1); 18 19 #pragma acc parallel wait(devnum:getS(): getI()) 20 while(1); 21 22 #pragma acc parallel wait(devnum:getS(): queues: getI()) wait(devnum:getI(): queues: getS(), getI(), 5) 23 while(1); 24 25 // expected-error@+1{{OpenACC clause 'wait' requires expression of integer type ('struct NotConvertible' invalid)}} 26 #pragma acc parallel wait(devnum:NC : 5) 27 while(1); 28 29 // expected-error@+1{{OpenACC clause 'wait' requires expression of integer type ('struct NotConvertible' invalid)}} 30 #pragma acc parallel wait(devnum:5 : NC) 31 while(1); 32 33 // expected-error@+3{{OpenACC clause 'wait' requires expression of integer type ('int[5]' invalid)}} 34 // expected-error@+2{{OpenACC clause 'wait' requires expression of integer type ('int[5]' invalid)}} 35 // expected-error@+1{{OpenACC clause 'wait' requires expression of integer type ('struct NotConvertible' invalid)}} 36 #pragma acc parallel wait(devnum:arr : queues: arr, NC, 5) 37 while(1); 38 39 // expected-error@+1{{OpenACC 'wait' clause is not valid on 'loop' directive}} 40 #pragma acc loop wait 41 for(int i = 5; i < 10;++i); 42 } 43