* Simplify the code by not bothering to name the folded constant
authorChris Lattner <sabre@nondot.org>
Thu, 2 May 2002 20:32:51 +0000 (20:32 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 2 May 2002 20:32:51 +0000 (20:32 +0000)
* 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

lib/Transforms/Scalar/SCCP.cpp

index e4e1e7c42fa9e30d8fe80f24fa509a1e57248b1a..a5966e96a28802ab4e14b22a36a4ce8e09815764 100644 (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.  :(
   }