forked from OSchip/llvm-project
[TargetLowering] SimplifyDemandedBits ADD/SUB/MUL - correctly inherit SDNodeFlags from the original node.
Just disable NSW/NUW flags. This matches what we're already doing for the other situations for these nodes, it was just missed for the demanded constant case. Noticed by inspection - confirmed in offline discussion with @spatel. I've checked we have test coverage in the x86 extract-bits.ll and extract-lowbits.ll tests llvm-svn: 370497
This commit is contained in:
parent
466ec2d552
commit
2d1e0899e9
|
@ -1953,10 +1953,8 @@ bool TargetLowering::SimplifyDemandedBits(
|
|||
if (C && !C->isAllOnesValue() && !C->isOne() &&
|
||||
(C->getAPIntValue() | HighMask).isAllOnesValue()) {
|
||||
SDValue Neg1 = TLO.DAG.getAllOnesConstant(dl, VT);
|
||||
// We can't guarantee that the new math op doesn't wrap, so explicitly
|
||||
// clear those flags to prevent folding with a potential existing node
|
||||
// that has those flags set.
|
||||
SDNodeFlags Flags;
|
||||
// Disable the nsw and nuw flags. We can no longer guarantee that we
|
||||
// won't wrap after simplification.
|
||||
Flags.setNoSignedWrap(false);
|
||||
Flags.setNoUnsignedWrap(false);
|
||||
SDValue NewOp = TLO.DAG.getNode(Op.getOpcode(), dl, VT, Op0, Neg1, Flags);
|
||||
|
|
Loading…
Reference in New Issue