Move code to update dominator information after basic block is split

from LoopSimplify.cpp to Dominator.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37689 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel
2007-06-21 17:23:45 +00:00
parent 2d74a318de
commit 0e7f728ad1
4 changed files with 216 additions and 202 deletions

View File

@ -140,19 +140,8 @@ void CodeExtractor::severSplitPHINodes(BasicBlock *&Header) {
// Okay, update dominator sets. The blocks that dominate the new one are the
// blocks that dominate TIBB plus the new block itself.
if (DT) {
DomTreeNode *OPNode = DT->getNode(OldPred);
DomTreeNode *IDomNode = OPNode->getIDom();
BasicBlock* idom = IDomNode->getBlock();
DT->addNewBlock(NewBB, idom);
// Additionally, NewBB replaces OldPred as the immediate dominator of blocks
Function *F = Header->getParent();
for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I)
if (DT->getIDomBlock(I) == OldPred) {
DT->changeImmediateDominator(I, NewBB);
}
}
if (DT)
DT->splitBlock(NewBB);
// Okay, now we need to adjust the PHI nodes and any branches from within the
// region to go to the new header block instead of the old header block.