mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Oops, X+0.0 isn't foldable, but X+-0.0 is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23772 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
560a17d3bc
commit
5e678e03b7
@ -694,11 +694,12 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
|
||||
return ReplaceInstUsesWith(I, RHS);
|
||||
|
||||
// X + 0 --> X
|
||||
// NOTE: -0 + +0 = +0 in non-default rounding modes. When we support them
|
||||
// we must disable this. Note that 0.0-0.0 = -0.0, so this doesn't hold
|
||||
// for SUB.
|
||||
if (RHSC->isNullValue())
|
||||
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);
|
||||
}
|
||||
|
||||
// X + (signbit) --> X ^ signbit
|
||||
if (ConstantInt *CI = dyn_cast<ConstantInt>(RHSC)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user