brintos

brintos / llvm-project-archived public Read only

0
0
Text · 998 B · cf1bdad Raw
34 lines · cpp
1// RUN: %clang_cc1 %s -fopenacc -verify2 3struct NoBoolConversion{};4struct BoolConversion{5  operator bool();6};7 8template <typename T, typename U>9void BoolExpr() {10 11  // expected-error@+1{{value of type 'NoBoolConversion' is not contextually convertible to 'bool'}}12#pragma acc parallel loop if (NoBoolConversion{})13  for (unsigned i = 0; i < 5; ++i);14 15  // expected-error@+2{{no member named 'NotValid' in 'NoBoolConversion'}}16  // expected-note@#INST{{in instantiation of function template specialization}}17#pragma acc serial loop if (T::NotValid)18  for (unsigned i = 0; i < 5; ++i);19 20#pragma acc kernels loop if (BoolConversion{})21  for (unsigned i = 0; i < 5; ++i);22 23  // expected-error@+1{{value of type 'NoBoolConversion' is not contextually convertible to 'bool'}}24#pragma acc serial loop if (T{})25  for (unsigned i = 0; i < 5; ++i);26 27#pragma acc parallel loop if (U{})28  for (unsigned i = 0; i < 5; ++i);29}30 31void Instantiate() {32  BoolExpr<NoBoolConversion, BoolConversion>(); // #INST33}34