mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Implement constant propogation of shift instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2471 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -502,9 +502,15 @@ void SCCP::visitBinaryOperator(Instruction *I) {
|
||||
if (V1State.isOverdefined() || V2State.isOverdefined()) {
|
||||
markOverdefined(I);
|
||||
} else if (V1State.isConstant() && V2State.isConstant()) {
|
||||
Constant *Result = ConstantFoldBinaryInstruction(I->getOpcode(),
|
||||
V1State.getConstant(),
|
||||
V2State.getConstant());
|
||||
Constant *Result = 0;
|
||||
if (isa<BinaryOperator>(I))
|
||||
Result = ConstantFoldBinaryInstruction(I->getOpcode(),
|
||||
V1State.getConstant(),
|
||||
V2State.getConstant());
|
||||
else if (isa<ShiftInst>(I))
|
||||
Result = ConstantFoldShiftInstruction(I->getOpcode(),
|
||||
V1State.getConstant(),
|
||||
V2State.getConstant());
|
||||
if (Result)
|
||||
markConstant(I, Result); // This instruction constant folds!
|
||||
else
|
||||
|
Reference in New Issue
Block a user