diff options
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 5 | 
1 files changed, 3 insertions, 2 deletions
| diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index d92e126b080..f4d44a17755 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -697,8 +697,9 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {      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 | 

