mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-14 00:31:06 +00:00
* Simplify the code by not bothering to name the folded constant
* Do not skip the instruction immediately after a folded instruction. This was causing the testcase failure: test/Regression/Transforms/SCCP/2002-05-02-MissSecondInst.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2443 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fecfa61009
commit
0e9c515439
@ -288,18 +288,15 @@ bool SCCP::runOnFunction(Function *F) {
|
||||
// Replaces all of the uses of a variable with uses of the constant.
|
||||
Inst->replaceAllUsesWith(Const);
|
||||
|
||||
// Remove the operator from the list of definitions...
|
||||
BB->getInstList().remove(BI);
|
||||
|
||||
// The new constant inherits the old name of the operator...
|
||||
if (Inst->hasName() && !Const->hasName())
|
||||
Const->setName(Inst->getName(), F->getSymbolTableSure());
|
||||
|
||||
// Delete the operator now...
|
||||
delete Inst;
|
||||
// Remove the operator from the list of definitions... and delete it.
|
||||
delete BB->getInstList().remove(BI);
|
||||
|
||||
// Hey, we just changed something!
|
||||
MadeChanges = true;
|
||||
|
||||
// Do NOT advance the iterator, skipping the next instruction...
|
||||
continue;
|
||||
|
||||
} else if (TerminatorInst *TI = dyn_cast<TerminatorInst>(Inst)) {
|
||||
MadeChanges |= ConstantFoldTerminator(BB, BI, TI);
|
||||
}
|
||||
@ -457,7 +454,7 @@ void SCCP::visitBinaryOperator(Instruction *I) {
|
||||
V1State.getConstant(),
|
||||
V2State.getConstant());
|
||||
if (Result)
|
||||
markConstant(I, Result); // This instruction constant fold!s
|
||||
markConstant(I, Result); // This instruction constant folds!
|
||||
else
|
||||
markOverdefined(I); // Don't know how to fold this instruction. :(
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user