diff options
author | Dale Johannesen <dalej@apple.com> | 2010-11-10 01:30:56 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2010-11-10 01:30:56 +0000 |
commit | 0171dc30ffd0288d46b2b546376d9419885299ef (patch) | |
tree | c89698a1d075b4fadcdb807336e9a7b0ce8b07f8 /llvm/lib/Transforms | |
parent | 91607f878ce21543f3b3af94f89054167ce8ddc8 (diff) | |
download | bcm5719-llvm-0171dc30ffd0288d46b2b546376d9419885299ef.tar.gz bcm5719-llvm-0171dc30ffd0288d46b2b546376d9419885299ef.zip |
When checking that the necessary bits are zero in
order to reduce ((x<<30)>>24) to x<<6, check the
correct bits. PR 8547.
llvm-svn: 118665
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp index 012d238729a..9f7d98ed794 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp @@ -131,9 +131,9 @@ static bool CanEvaluateShifted(Value *V, unsigned NumBits, bool isLeftShift, // We can turn shl(c1)+shr(c2) -> shl(c3)+and(c4), but it isn't // profitable unless we know the and'd out bits are already zero. if (CI->getZExtValue() > NumBits) { - unsigned HighBits = CI->getZExtValue() - NumBits; + unsigned LowBits = TypeWidth - CI->getZExtValue(); if (MaskedValueIsZero(I->getOperand(0), - APInt::getHighBitsSet(TypeWidth, HighBits))) + APInt::getLowBitsSet(TypeWidth, NumBits) << LowBits)) return true; } |