================ @@ -3732,14 +3732,18 @@ KnownBits SelectionDAG::computeKnownBits(SDValue Op, const APInt &DemandedElts, assert(Op.getResNo() == 0 && "We only compute knownbits for the difference here."); - // TODO: Compute influence of the carry operand. - if (Opcode == ISD::USUBO_CARRY || Opcode == ISD::SSUBO_CARRY) - break; + // With UADDO_CARRY and SSUBO_CARRY a borrow bit may be added in. + KnownBits Borrow(1); + if (Opcode == ISD::USUBO_CARRY || Opcode == ISD::SSUBO_CARRY) { + Borrow = computeKnownBits(Op.getOperand(2), DemandedElts, Depth + 1); + // Borrow has bit width 1 + Borrow = Borrow.zextOrTrunc(1); ---------------- nikic wrote:
There are no zero-bit integers in SDAG (or IR). The use of zextOrTrunc in the comment probably dates back to the time when APInt did not allow zext/sext/trunc to the original bit width. https://github.com/llvm/llvm-project/pull/67788 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits