Transforming -A + -B  -->  -(A + B) isn't safe for FP, thanks
to Dale for noticing this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47276 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index 9d0990f..f89d1f2 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -2092,10 +2092,12 @@
   // -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);