diff options
author | Chris Lattner <sabre@nondot.org> | 2002-05-02 20:32:51 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-05-02 20:32:51 +0000 |
commit | 0e9c515439f3af718a3640a9a29e9353978541c4 (patch) | |
tree | 6aec07ea95a43f14bae40acc10072f53842c0594 | |
parent | fecfa6100926b0633b21c29ec7fb7bd6fd762382 (diff) |
* 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
-rw-r--r-- | lib/Transforms/Scalar/SCCP.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index e4e1e7c42f..a5966e96a2 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -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. :( } |