mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Preserve HasNSW and HasNUW when constructing SCEVs for Add and Mul
instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83606 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e91b9a3b59
commit
4db3581a28
@ -2951,12 +2951,20 @@ const SCEV *ScalarEvolution::createSCEV(Value *V) {
|
||||
|
||||
Operator *U = cast<Operator>(V);
|
||||
switch (Opcode) {
|
||||
case Instruction::Add:
|
||||
case Instruction::Add: {
|
||||
AddOperator *A = cast<AddOperator>(U);
|
||||
return getAddExpr(getSCEV(U->getOperand(0)),
|
||||
getSCEV(U->getOperand(1)));
|
||||
case Instruction::Mul:
|
||||
getSCEV(U->getOperand(1)),
|
||||
A->hasNoUnsignedWrap(),
|
||||
A->hasNoSignedWrap());
|
||||
}
|
||||
case Instruction::Mul: {
|
||||
MulOperator *M = cast<MulOperator>(U);
|
||||
return getMulExpr(getSCEV(U->getOperand(0)),
|
||||
getSCEV(U->getOperand(1)));
|
||||
getSCEV(U->getOperand(1)),
|
||||
M->hasNoUnsignedWrap(),
|
||||
M->hasNoSignedWrap());
|
||||
}
|
||||
case Instruction::UDiv:
|
||||
return getUDivExpr(getSCEV(U->getOperand(0)),
|
||||
getSCEV(U->getOperand(1)));
|
||||
|
Loading…
Reference in New Issue
Block a user