diff options
author | Chris Lattner <sabre@nondot.org> | 2008-10-06 05:53:16 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-10-06 05:53:16 +0000 |
commit | 34a74ab81600a40c6324fd76adb724b803dfaf91 (patch) | |
tree | 92c782baf0aa514b77355f2cb1e0533fcecef331 /lib/AST/ExprConstant.cpp | |
parent | 46cfefa8a4e486ee6a9b8960f232237bf7a4b1f9 (diff) |
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
Diffstat (limited to 'lib/AST/ExprConstant.cpp')
-rw-r--r-- | lib/AST/ExprConstant.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
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; } } |