mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
InstCombine: Detect when llvm.umul.with.overflow always overflows
We know overflow always occurs if both ~LHSKnownZero * ~RHSKnownZero and LHSKnownOne * RHSKnownOne overflow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225077 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -443,6 +443,8 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
|
||||
OverflowResult OR = computeOverflowForUnsignedMul(LHS, RHS, II);
|
||||
if (OR == OverflowResult::NeverOverflows) {
|
||||
return CreateOverflowTuple(II, Builder->CreateNUWMul(LHS, RHS), false);
|
||||
} else if (OR == OverflowResult::AlwaysOverflows) {
|
||||
return CreateOverflowTuple(II, Builder->CreateMul(LHS, RHS), true);
|
||||
}
|
||||
} // FALL THROUGH
|
||||
case Intrinsic::smul_with_overflow:
|
||||
|
Reference in New Issue
Block a user