Make this work for FP constantexprs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23773 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index d92e126..f4d44a1 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -697,8 +697,9 @@
     if (!I.getType()->isFloatingPoint()) { // NOTE: -0 + +0 = +0.
       if (RHSC->isNullValue())
         return ReplaceInstUsesWith(I, LHS);
-    } else if (cast<ConstantFP>(RHSC)->isExactlyValue(-0.0)) {
-      return ReplaceInstUsesWith(I, LHS);
+    } else if (ConstantFP *CFP = dyn_cast<ConstantFP>(RHSC)) {
+      if (CFP->isExactlyValue(-0.0))
+        return ReplaceInstUsesWith(I, LHS);
     }
 
     // X + (signbit) --> X ^ signbit