[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