* Check in fix for: llvm/test/Regression/Other/2002-02-14-LevelRaiseInstDelete.ll
authorChris Lattner <sabre@nondot.org>
Thu, 14 Feb 2002 18:55:22 +0000 (18:55 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 14 Feb 2002 18:55:22 +0000 (18:55 +0000)
* Minor reformatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1760 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/ExprTypeConvert.cpp

index d75a8ac68cbf58f521f0092cdbb82c7d4db35e5e..b61903578dc45e283bfe46df71b5942694479314 100644 (file)
@@ -357,6 +357,10 @@ Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC) {
   ValueMapCache::ExprMapTy::iterator VMCI = VMC.ExprMap.find(V);
   if (VMCI != VMC.ExprMap.end()) {
     assert(VMCI->second->getType() == Ty);
+
+    if (Instruction *I = dyn_cast<Instruction>(V))
+      ValueHandle IHandle(VMC, I);  // Remove I if it is unused now!
+
     return VMCI->second;
   }
 
@@ -1084,13 +1088,11 @@ static void RecursiveDelete(ValueMapCache &Cache, Instruction *I) {
 #endif
 
   for (User::op_iterator OI = I->op_begin(), OE = I->op_end(); 
-       OI != OE; ++OI) {
-    Instruction *U = dyn_cast<Instruction>(*OI);
-    if (U) {
+       OI != OE; ++OI)
+    if (Instruction *U = dyn_cast<Instruction>(*OI)) {
       *OI = 0;
-      RecursiveDelete(Cache, dyn_cast<Instruction>(U));
+      RecursiveDelete(Cache, U);
     }
-  }
 
   I->getParent()->getInstList().remove(I);