1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

Fix edge cases in handling basic block split.

llvm-svn: 40564
This commit is contained in:
Devang Patel 2007-07-27 19:13:43 +00:00
parent a03e82d7ee
commit 20ffab9de6

View File

@ -616,7 +616,11 @@ void DominanceFrontier::splitBlock(BasicBlock *NewBB) {
PI != PE; ++PI)
PredBlocks.push_back(*PI);
assert(!PredBlocks.empty() && "No predblocks??");
if (PredBlocks.empty())
// If NewBB does not have any predecessors then it is a entry block.
// In this case, NewBB and its successor NewBBSucc dominates all
// other blocks.
return;
DominatorTree &DT = getAnalysis<DominatorTree>();
bool NewBBDominatesNewBBSucc = true;
@ -643,8 +647,13 @@ void DominanceFrontier::splitBlock(BasicBlock *NewBB) {
else
++SetI;
}
addBasicBlock(NewBB, Set);
DominanceFrontier::iterator NewBBI = find(NewBB);
if (NewBBI != end()) {
DominanceFrontier::DomSetType NewBBSet = NewBBI->second;
NewBBSet.insert(Set.begin(), Set.end());
} else
addBasicBlock(NewBB, Set);
}
} else {