mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-20 12:31:40 +00:00
fix a miscompilation of 176.gcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33900 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1853da3f22
commit
4f3ebab172
@ -5647,12 +5647,12 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
|
||||
if (ShiftAmt1 == ShiftAmt2) {
|
||||
// If we have ((X >>? C) << C), turn this into X & (-1 << C).
|
||||
if (I.getOpcode() == Instruction::Shl) {
|
||||
uint64_t Mask = -1ULL << ShiftAmt1;
|
||||
uint64_t Mask = Ty->getBitMask() << ShiftAmt1;
|
||||
return BinaryOperator::createAnd(X, ConstantInt::get(Ty, Mask));
|
||||
}
|
||||
// If we have ((X << C) >>u C), turn this into X & (-1 >>u C).
|
||||
if (I.getOpcode() == Instruction::LShr) {
|
||||
uint64_t Mask = -1ULL >> ShiftAmt1;
|
||||
uint64_t Mask = Ty->getBitMask() >> ShiftAmt1;
|
||||
return BinaryOperator::createAnd(X, ConstantInt::get(Ty, Mask));
|
||||
}
|
||||
// We can simplify ((X << C) >>s C) into a trunc + sext.
|
||||
|
Loading…
x
Reference in New Issue
Block a user