r183890 - More for PR12457: fix handling of __builtin_isinf_sign and test.

Richard Smith richard-llvm at metafoo.co.uk
Wed Jun 12 23:31:13 PDT 2013


Author: rsmith
Date: Thu Jun 13 01:31:13 2013
New Revision: 183890

URL: http://llvm.org/viewvc/llvm-project?rev=183890&view=rev
Log:
More for PR12457: fix handling of __builtin_isinf_sign and test.

Modified:
    cfe/trunk/lib/AST/ExprConstant.cpp
    cfe/trunk/test/Sema/constant-builtins-2.c

Modified: cfe/trunk/lib/AST/ExprConstant.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=183890&r1=183889&r2=183890&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ExprConstant.cpp (original)
+++ cfe/trunk/lib/AST/ExprConstant.cpp Thu Jun 13 01:31:13 2013
@@ -5761,7 +5761,7 @@ bool IntExprEvaluator::VisitCallExpr(con
 
   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);
   }
 

Modified: cfe/trunk/test/Sema/constant-builtins-2.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/constant-builtins-2.c?rev=183890&r1=183889&r2=183890&view=diff
==============================================================================
--- cfe/trunk/test/Sema/constant-builtins-2.c (original)
+++ cfe/trunk/test/Sema/constant-builtins-2.c Thu Jun 13 01:31:13 2013
@@ -48,6 +48,13 @@ char classify_denorm2 [__builtin_fpclass
 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);





More information about the cfe-commits mailing list