mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
(Almost) always call reserveOperandSpace() on newly created PHINodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128535 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -259,11 +259,12 @@ static bool MergeEmptyReturnBlocks(Function &F) {
|
||||
PHINode *RetBlockPHI = dyn_cast<PHINode>(RetBlock->begin());
|
||||
if (RetBlockPHI == 0) {
|
||||
Value *InVal = cast<ReturnInst>(RetBlock->getTerminator())->getOperand(0);
|
||||
pred_iterator PB = pred_begin(RetBlock), PE = pred_end(RetBlock);
|
||||
RetBlockPHI = PHINode::Create(Ret->getOperand(0)->getType(), "merge",
|
||||
&RetBlock->front());
|
||||
RetBlockPHI->reserveOperandSpace(std::distance(PB, PE));
|
||||
|
||||
for (pred_iterator PI = pred_begin(RetBlock), E = pred_end(RetBlock);
|
||||
PI != E; ++PI)
|
||||
for (pred_iterator PI = PB; PI != PE; ++PI)
|
||||
RetBlockPHI->addIncoming(InVal, *PI);
|
||||
RetBlock->getTerminator()->setOperand(0, RetBlockPHI);
|
||||
}
|
||||
|
Reference in New Issue
Block a user