relax this a bit, as we only support the default rounding mode
authorChris Lattner <sabre@nondot.org>
Mon, 17 Oct 2005 17:49:32 +0000 (17:49 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 17 Oct 2005 17:49:32 +0000 (17:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23771 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index cf4af7916916f2694417d862cf1da337a8a3af84..67a54018c37ed8dabf6173df6197e8005c12f892 100644 (file)
@@ -694,8 +694,10 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
       return ReplaceInstUsesWith(I, RHS);
 
     // X + 0 --> X
-    if (!I.getType()->isFloatingPoint() && // -0 + +0 = +0, so it's not a noop
-        RHSC->isNullValue())
+    // NOTE: -0 + +0 = +0 in non-default rounding modes.  When we support them
+    // we must disable this.  Note that 0.0-0.0 = -0.0, so this doesn't hold
+    // for SUB.
+    if (RHSC->isNullValue())
       return ReplaceInstUsesWith(I, LHS);
 
     // X + (signbit) --> X ^ signbit