[llvm] [X86] Resolve FIXME: Accept live flag if no overflow occurs (PR #86836)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 27 11:14:02 PDT 2024
================
@@ -4129,8 +4129,12 @@ SelectionDAG::computeOverflowForSignedAdd(SDValue N0, SDValue N1) const {
if (ComputeNumSignBits(N0) > 1 && ComputeNumSignBits(N1) > 1)
return OFK_Never;
- // TODO: Add ConstantRange::signedAddMayOverflow handling.
- return OFK_Sometime;
+ // Fallback to ConstantRange::signedAddMayOverflow handling.
+ KnownBits N0Known = computeKnownBits(N0);
+ KnownBits N1Known = computeKnownBits(N1);
+ ConstantRange N0Range = ConstantRange::fromKnownBits(N0Known, true);
+ ConstantRange N1Range = ConstantRange::fromKnownBits(N1Known, true);
+ return mapOverflowResult(N0Range.signedAddMayOverflow(N1Range));
----------------
RKSimon wrote:
You might be able to add X86 test coverage for this via promoteExtBeforeAdd
https://github.com/llvm/llvm-project/pull/86836
More information about the llvm-commits
mailing list