Just use APFloat for const / const. Fixes
authorDale Johannesen <dalej@apple.com>
Mon, 24 Sep 2007 00:32:45 +0000 (00:32 +0000)
committerDale Johannesen <dalej@apple.com>
Mon, 24 Sep 2007 00:32:45 +0000 (00:32 +0000)
-1. / -0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42254 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/ConstantFold.cpp

index 917098d35137ce93926f5b51182ca762e7702c4e..0c1d7f73ae1cec2b75f9470d9385f5f1d8002ae2 100644 (file)
@@ -699,23 +699,6 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
         (void)C3V.multiply(C2V, APFloat::rmNearestTiesToEven);
         return ConstantFP::get(CFP1->getType(), C3V);
       case Instruction::FDiv:
-        // FIXME better to look at the return code
-        if (C2V.isZero())
-          if (C1V.isZero())
-            // IEEE 754, Section 7.1, #4
-            return ConstantFP::get(CFP1->getType(), isDouble ?
-                            APFloat(std::numeric_limits<double>::quiet_NaN()) :
-                            APFloat(std::numeric_limits<float>::quiet_NaN()));
-          else if (C2V.isNegZero() || C1V.isNegative())
-            // IEEE 754, Section 7.2, negative infinity case
-            return ConstantFP::get(CFP1->getType(), isDouble ?
-                            APFloat(-std::numeric_limits<double>::infinity()) :
-                            APFloat(-std::numeric_limits<float>::infinity()));
-          else
-            // IEEE 754, Section 7.2, positive infinity case
-            return ConstantFP::get(CFP1->getType(), isDouble ?
-                            APFloat(std::numeric_limits<double>::infinity()) :
-                            APFloat(std::numeric_limits<float>::infinity()));
         (void)C3V.divide(C2V, APFloat::rmNearestTiesToEven);
         return ConstantFP::get(CFP1->getType(), C3V);
       case Instruction::FRem: