From: Richard Smith Date: Thu, 13 Jun 2013 06:31:13 +0000 (+0000) Subject: More for PR12457: fix handling of __builtin_isinf_sign and test. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5350ded82a4e93a79c99a322e11360e096e2f852;p=clang More for PR12457: fix handling of __builtin_isinf_sign and test. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183890 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index ad4816a24f..96550f989a 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -5761,7 +5761,7 @@ bool IntExprEvaluator::VisitCallExpr(const CallExpr *E) { case Builtin::BI__builtin_isinf_sign: { APFloat Val(0.0); - return EvaluateFloat(E->getArg(5), Val, Info) && + return EvaluateFloat(E->getArg(0), Val, Info) && Success(Val.isInfinity() ? (Val.isNegative() ? -1 : 1) : 0, E); } diff --git a/test/Sema/constant-builtins-2.c b/test/Sema/constant-builtins-2.c index 7da899b62e..0e63ad3e8b 100644 --- a/test/Sema/constant-builtins-2.c +++ b/test/Sema/constant-builtins-2.c @@ -48,6 +48,13 @@ char classify_denorm2 [__builtin_fpclassify(-1, -1, -1, +1, -1, -1e-308)]; char classify_zero [__builtin_fpclassify(-1, -1, -1, -1, +1, 0.0)]; char classify_neg_zero[__builtin_fpclassify(-1, -1, -1, -1, +1, -0.0)]; +char isinf_sign_noninf1[__builtin_isinf_sign(-0.0) == 0 ? 1 : -1]; +char isinf_sign_noninf2[__builtin_isinf_sign(1e307) == 0 ? 1 : -1]; +char isinf_sign_noninf3[__builtin_isinf_sign(__builtin_nan("")) == 0 ? 1 : -1]; +char isinf_sign_noninf4[__builtin_isinf_sign(-436.) == 0 ? 1 : -1]; +char isinf_sign_inf [__builtin_isinf_sign(__builtin_inf()) == 1 ? 1 : -1]; +char isinf_sign_neg_inf[__builtin_isinf_sign(-__builtin_inf()) == -1 ? 1 : -1]; + //double g19 = __builtin_powi(2.0, 4); //float g20 = __builtin_powif(2.0f, 4); //long double g21 = __builtin_powil(2.0L, 4);