Fix a crashing bug in SplitBlock when it is called on a block with no

dominator information even though dominators were previously computed.

Patch by Nick Sumner.

llvm-svn: 138449
This commit is contained in:
Rafael Espindola 2011-08-24 18:07:01 +00:00
parent a281f2d07d
commit d3e65e702f
1 changed files with 6 additions and 5 deletions

View File

@ -299,7 +299,7 @@ BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, Pass *P) {
if (DominatorTree *DT = P->getAnalysisIfAvailable<DominatorTree>()) { if (DominatorTree *DT = P->getAnalysisIfAvailable<DominatorTree>()) {
// Old dominates New. New node dominates all other nodes dominated by Old. // Old dominates New. New node dominates all other nodes dominated by Old.
DomTreeNode *OldNode = DT->getNode(Old); if (DomTreeNode *OldNode = DT->getNode(Old)) {
std::vector<DomTreeNode *> Children; std::vector<DomTreeNode *> Children;
for (DomTreeNode::iterator I = OldNode->begin(), E = OldNode->end(); for (DomTreeNode::iterator I = OldNode->begin(), E = OldNode->end();
I != E; ++I) I != E; ++I)
@ -310,6 +310,7 @@ BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, Pass *P) {
E = Children.end(); I != E; ++I) E = Children.end(); I != E; ++I)
DT->changeImmediateDominator(*I, NewNode); DT->changeImmediateDominator(*I, NewNode);
} }
}
return New; return New;
} }