[llvm-commits] [llvm] r138449 - /llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp
Rafael Espindola
rafael.espindola at gmail.com
Wed Aug 24 11:07:01 PDT 2011
Author: rafael
Date: Wed Aug 24 13:07:01 2011
New Revision: 138449
URL: http://llvm.org/viewvc/llvm-project?rev=138449&view=rev
Log:
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.
Modified:
llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp
Modified: llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp?rev=138449&r1=138448&r2=138449&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp Wed Aug 24 13:07:01 2011
@@ -299,16 +299,17 @@
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;
More information about the llvm-commits
mailing list