/* RUN: %clang_cc1 -ast-dump %s | FileCheck %s */ /* WG14 DR290: no * FLT_EVAL_METHOD and extra precision and/or range * * We retain an implicit conversion based on the float eval method being used * instead of dropping it due to the explicit cast. See GH86304 and C23 6.5.5p7. */ #pragma clang fp eval_method(double) _Static_assert((float)(123.0F * 2.0F) == (float)246.0F, ""); // CHECK: StaticAssertDecl // CHECK-NEXT: ImplicitCastExpr {{.*}} '_Bool' // CHECK-NEXT: BinaryOperator {{.*}} 'int' '==' // NB: the following implicit cast is incorrect. // CHECK-NEXT: ImplicitCastExpr {{.*}} 'double' FPEvalMethod=1 // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' FPEvalMethod=1