diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2020-11-13 10:47:56 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2020-11-13 10:54:35 +0000 |
commit | 49623fa77a35de343e89ea2d8159ce719473ce71 (patch) | |
tree | 9b3a82fcc9477ba59a458045fe9302c102ebec89 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | 185cface2e46d8d676f43ac07aaa348e95c64b2c (diff) | |
download | llvm-49623fa77a35de343e89ea2d8159ce719473ce71.zip llvm-49623fa77a35de343e89ea2d8159ce719473ce71.tar.gz llvm-49623fa77a35de343e89ea2d8159ce719473ce71.tar.bz2 |
[ValueTracking] computeKnownBitsFromShiftOperator use KnownBits direct for constant shift amounts.
Let KnownBits shift handlers deal with out-of-range shift amounts.
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index b369f26..0a18718 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -993,8 +993,7 @@ static void computeKnownBitsFromShiftOperator( computeKnownBits(I->getOperand(1), DemandedElts, Known, Depth + 1, Q); if (Known.isConstant()) { - unsigned ShiftAmt = Known.getConstant().getLimitedValue(BitWidth - 1); - Known = KF(Known2, KnownBits::makeConstant(APInt(32, ShiftAmt))); + Known = KF(Known2, Known); // If the known bits conflict, this must be an overflowing left shift, so // the shift result is poison. We can return anything we want. Choose 0 for |