mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-03 17:39:48 +00:00
Fix InstCombine/2006-11-10-ashr-miscompile.ll a miscompilation introduced
by the shr -> [al]shr patch. This was reduced from 176.gcc. llvm-svn: 31653
This commit is contained in:
parent
cefc07dee0
commit
65a873caa2
@ -5082,10 +5082,10 @@ Instruction *InstCombiner::visitShiftInst(ShiftInst &I) {
|
||||
return ReplaceInstUsesWith(I, Op0); // X >>s undef -> X
|
||||
}
|
||||
|
||||
// shr int -1, X = -1 (for any arithmetic shift rights of ~0)
|
||||
if (!isLeftShift)
|
||||
// ashr int -1, X = -1 (for any arithmetic shift rights of ~0)
|
||||
if (I.getOpcode() == Instruction::AShr)
|
||||
if (ConstantInt *CSI = dyn_cast<ConstantInt>(Op0))
|
||||
if (CSI->isAllOnesValue() && Op0->getType()->isSigned())
|
||||
if (CSI->isAllOnesValue())
|
||||
return ReplaceInstUsesWith(I, CSI);
|
||||
|
||||
// Try to fold constant and into select arguments.
|
||||
|
Loading…
Reference in New Issue
Block a user