From: Simon Pilgrim Date: Wed, 24 Feb 2021 13:49:00 +0000 (+0000) Subject: [ValueTracking] computeKnownBitsFromShiftOperator - remove non-zero shift amount... X-Git-Tag: llvmorg-14-init~14164 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d37400168ce2f1f9ccc91847431f5b8c020a7d67;p=platform%2Fupstream%2Fllvm.git [ValueTracking] computeKnownBitsFromShiftOperator - remove non-zero shift amount handling. This no longer affects any tests after the improvements to the KnownBits shift helpers. --- diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 9e5c8b4..a979a7d 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -1018,15 +1018,10 @@ static void computeKnownBitsFromShiftOperator( // If we know the shifter operand is nonzero, we can sometimes infer more // known bits. However this is expensive to compute, so be lazy about it and // only compute it when absolutely necessary. - Optional ShifterOperandIsNonZero; - // Early exit if we can't constrain any well-defined shift amount. if (!(ShiftAmtKZ & (PowerOf2Ceil(BitWidth) - 1)) && !(ShiftAmtKO & (PowerOf2Ceil(BitWidth) - 1))) { - ShifterOperandIsNonZero = - isKnownNonZero(I->getOperand(1), DemandedElts, Depth + 1, Q); - if (!*ShifterOperandIsNonZero) - return; + return; } Known.Zero.setAllBits(); @@ -1038,17 +1033,6 @@ static void computeKnownBitsFromShiftOperator( continue; if ((ShiftAmt | ShiftAmtKO) != ShiftAmt) continue; - // If we know the shifter is nonzero, we may be able to infer more known - // bits. This check is sunk down as far as possible to avoid the expensive - // call to isKnownNonZero if the cheaper checks above fail. - if (ShiftAmt == 0) { - if (!ShifterOperandIsNonZero.hasValue()) - ShifterOperandIsNonZero = - isKnownNonZero(I->getOperand(1), DemandedElts, Depth + 1, Q); - if (*ShifterOperandIsNonZero) - continue; - } - Known = KnownBits::commonBits( Known, KF(Known2, KnownBits::makeConstant(APInt(32, ShiftAmt)))); }