From: Chris Lattner Date: Mon, 6 Oct 2008 05:53:16 +0000 (+0000) Subject: Teach FloatExprEvaluator to evaluate __builtin_huge_val and inf. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=34a74ab81600a40c6324fd76adb724b803dfaf91;p=clang Teach FloatExprEvaluator to evaluate __builtin_huge_val and inf. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57154 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index 45724d318c..c20cf4c0c5 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -543,17 +543,19 @@ static bool EvaluateFloat(const Expr* E, APFloat& Result, EvalInfo &Info) { } bool FloatExprEvaluator::VisitCallExpr(const CallExpr *E) { - //Result.zextOrTrunc(getIntTypeSizeInBits(E->getType())); + const llvm::fltSemantics &Sem = + Info.Ctx.getFloatTypeSemantics(E->getType()); switch (E->isBuiltinCall()) { + default: return false; case Builtin::BI__builtin_huge_val: case Builtin::BI__builtin_huge_valf: case Builtin::BI__builtin_huge_vall: case Builtin::BI__builtin_inf: case Builtin::BI__builtin_inff: case Builtin::BI__builtin_infl: - // FIXME: Implement me. - default: return false; + Result = llvm::APFloat::getInf(Sem); + return true; } }