1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

Changes to support PHINode::removeIncoming changes

llvm-svn: 4080
This commit is contained in:
Chris Lattner 2002-10-08 21:36:34 +00:00
parent 9c236351fd
commit c35f54df86
2 changed files with 8 additions and 9 deletions

View 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);
}

View 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