Changes to support PHINode::removeIncoming changes
authorChris Lattner <sabre@nondot.org>
Tue, 8 Oct 2002 21:36:34 +0000 (21:36 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 8 Oct 2002 21:36:34 +0000 (21:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4080 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/ExprTypeConvert.cpp
lib/VMCore/BasicBlock.cpp

index c2764507a9cda3c8cbb672effd0460b42a9b213b..f03253fac8d1bb3fed880ec58b08e8bc5156ddfd 100644 (file)
@@ -392,7 +392,7 @@ Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC) {
       BasicBlock *BB = OldPN->getIncomingBlock(0);
       Value *OldVal = OldPN->getIncomingValue(0);
       ValueHandle OldValHandle(VMC, OldVal);
-      OldPN->removeIncomingValue(BB);
+      OldPN->removeIncomingValue(BB, false);
       Value *V = ConvertExpressionToType(OldVal, Ty, VMC);
       NewPN->addIncoming(V, BB);
     }
@@ -1097,7 +1097,7 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal,
     while (OldPN->getNumOperands()) {
       BasicBlock *BB = OldPN->getIncomingBlock(0);
       Value *OldVal = OldPN->getIncomingValue(0);
-      OldPN->removeIncomingValue(BB);
+      OldPN->removeIncomingValue(BB, false);
       Value *V = ConvertExpressionToType(OldVal, NewTy, VMC);
       NewPN->addIncoming(V, BB);
     }
index 2f1072dc336faff9afdba5b61aa2ef64374bccf1..667346c9c180c098a5b635e383a68dcceb246189 100644 (file)
@@ -183,16 +183,15 @@ void BasicBlock::removePredecessor(BasicBlock *Pred) {
     // Yup, loop through and nuke the PHI nodes
     while (PHINode *PN = dyn_cast<PHINode>(&front())) {
       PN->removeIncomingValue(Pred); // Remove the predecessor first...
-      
-      assert(PN->getNumIncomingValues() == max_idx-1 && 
-            "PHI node shouldn't have this many values!!!");
 
       // If the PHI _HAD_ two uses, replace PHI node with its now *single* value
-      if (max_idx == 2)
+      if (max_idx == 2) {
        PN->replaceAllUsesWith(PN->getOperand(0));
-      else // Otherwise there are no incoming values/edges, replace with dummy
-        PN->replaceAllUsesWith(Constant::getNullValue(PN->getType()));
-      getInstList().pop_front();    // Remove the PHI node
+        getInstList().pop_front();    // Remove the PHI node
+      }
+
+      // If the PHI node already only had one entry, it got deleted by
+      // removeIncomingValue.
     }
   } else {
     // Okay, now we know that we need to remove predecessor #pred_idx from all