]> granicus.if.org Git - clang/commitdiff
More for PR12457: fix handling of __builtin_isinf_sign and test.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 13 Jun 2013 06:31:13 +0000 (06:31 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 13 Jun 2013 06:31:13 +0000 (06:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183890 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ExprConstant.cpp
test/Sema/constant-builtins-2.c

index ad4816a24f85f050231065f667759ab2c7f81544..96550f989ad033357fba6e694c69680610f6ed63 100644 (file)
@@ -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);
   }
 
index 7da899b62e3acc9db33d23019e959e356cea0d5b..0e63ad3e8b76bfff88600bc97e07154875edecac 100644 (file)
@@ -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);