// RUN: %clang_cc1 %s -fopenacc -verify struct NoBoolConversion{}; struct BoolConversion{ operator bool(); }; template void BoolExpr() { // expected-error@+1{{value of type 'NoBoolConversion' is not contextually convertible to 'bool'}} #pragma acc parallel if (NoBoolConversion{}) while(0); // expected-error@+2{{no member named 'NotValid' in 'NoBoolConversion'}} // expected-note@#INST{{in instantiation of function template specialization}} #pragma acc parallel if (T::NotValid) while(0); #pragma acc parallel if (BoolConversion{}) while(0); // expected-error@+1{{value of type 'NoBoolConversion' is not contextually convertible to 'bool'}} #pragma acc parallel if (T{}) while(0); #pragma acc parallel if (U{}) while(0); } void Instantiate() { BoolExpr(); // #INST }