* 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:
Chris Lattner 2002-05-02 20:32:51 +00:00
parent fecfa61009
commit 0e9c515439

View File

@ -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. :(
}