summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-08-24 18:07:01 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-08-24 18:07:01 +0000
commitd3e65e702f45ea3476f3bda2b8f69a3e3729e9e2 (patch)
treed488914c0fd772a927afdf00ca279034e18360e9 /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
parenta281f2d07dc73ee65594b7c214d18ec277ebc236 (diff)
downloadbcm5719-llvm-d3e65e702f45ea3476f3bda2b8f69a3e3729e9e2.tar.gz
bcm5719-llvm-d3e65e702f45ea3476f3bda2b8f69a3e3729e9e2.zip
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
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/BasicBlockUtils.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
index 27120eeeb3a..a7f9efd562e 100644
--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -299,16 +299,17 @@ BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, Pass *P) {
if (DominatorTree *DT = P->getAnalysisIfAvailable<DominatorTree>()) {
// Old dominates New. New node dominates all other nodes dominated by Old.
- DomTreeNode *OldNode = DT->getNode(Old);
- std::vector<DomTreeNode *> Children;
- for (DomTreeNode::iterator I = OldNode->begin(), E = OldNode->end();
- I != E; ++I)
- Children.push_back(*I);
+ if (DomTreeNode *OldNode = DT->getNode(Old)) {
+ std::vector<DomTreeNode *> Children;
+ for (DomTreeNode::iterator I = OldNode->begin(), E = OldNode->end();
+ I != E; ++I)
+ Children.push_back(*I);
DomTreeNode *NewNode = DT->addNewBlock(New,Old);
for (std::vector<DomTreeNode *>::iterator I = Children.begin(),
E = Children.end(); I != E; ++I)
DT->changeImmediateDominator(*I, NewNode);
+ }
}
return New;
OpenPOWER on IntegriCloud