* Fix bug: test/Regression/Other/2002-03-11-LevelRaiseIterInvalidate.ll
* Use more concise form of ReplaceInstWithInst to make code simpler
* Output nicer message for dead code eliminated when debugging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1861 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/LevelRaise.cpp b/lib/Transforms/LevelRaise.cpp
index 2826e9f..630ee0f 100644
--- a/lib/Transforms/LevelRaise.cpp
+++ b/lib/Transforms/LevelRaise.cpp
@@ -85,25 +85,19 @@
 
   // If we have a getelementptr capability... transform all of the 
   // add instruction uses into getelementptr's.
-  for (Value::use_iterator UI = CI->use_begin(), E = CI->use_end();
-       UI != E; ++UI) {
-    Instruction *I = cast<Instruction>(*UI);
+  while (!CI->use_empty()) {
+    Instruction *I = cast<Instruction>(*CI->use_begin());
     assert(I->getOpcode() == Instruction::Add && I->getNumOperands() == 2 &&
            "Use is not a valid add instruction!");
     
     // Get the value added to the cast result pointer...
     Value *OtherPtr = I->getOperand((I->getOperand(0) == CI) ? 1 : 0);
 
-    BasicBlock *BB = I->getParent();
-    BasicBlock::iterator AddIt = find(BB->getInstList().begin(),
-                                      BB->getInstList().end(), I);
-
     GetElementPtrInst *GEP = new GetElementPtrInst(OtherPtr, Indices);
-
     PRINT_PEEPHOLE1("cast-add-to-gep:i", I);
     
     // Replace the old add instruction with the shiny new GEP inst
-    ReplaceInstWithInst(BB->getInstList(), AddIt, GEP);
+    ReplaceInstWithInst(I, GEP);
     PRINT_PEEPHOLE1("cast-add-to-gep:o", GEP);
   }
   return true;
@@ -417,7 +411,7 @@
       if (dceInstruction(BIL, BI) || doConstantPropogation(BB, BI)) {
         Changed = true; 
 #ifdef DEBUG_PEEPHOLE_INSTS
-        cerr << "DeadCode Elinated!\n";
+        cerr << "***\t\t^^-- DeadCode Elinated!\n";
 #endif
       } else if (PeepholeOptimize(BB, BI))
         Changed = true;