Transforming -A + -B --> -(A + B) isn't safe for FP, thanks
[oota-llvm.git] / lib / Transforms / Scalar / InstructionCombining.cpp
index 9d0990f51b8237b3d1ba20f42745d642a6dd4e14..f89d1f2aeeecc2f9163fa558385ba693189ab7d6 100644 (file)
@@ -2092,10 +2092,12 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
   // -A + B  -->  B - A
   // -A + -B  -->  -(A + B)
   if (Value *LHSV = dyn_castNegVal(LHS)) {
-    if (Value *RHSV = dyn_castNegVal(RHS)) {
-      Instruction *NewAdd = BinaryOperator::createAdd(LHSV, RHSV, "sum");
-      InsertNewInstBefore(NewAdd, I);
-      return BinaryOperator::createNeg(NewAdd);
+    if (LHS->getType()->isIntOrIntVector()) {
+      if (Value *RHSV = dyn_castNegVal(RHS)) {
+        Instruction *NewAdd = BinaryOperator::createAdd(LHSV, RHSV, "sum");
+        InsertNewInstBefore(NewAdd, I);
+        return BinaryOperator::createNeg(NewAdd);
+      }
     }
     
     return BinaryOperator::createSub(RHS, LHSV);