LoopIndexSplit can sometimes result in cases where a block in its own domfrontier.

Don't crash when we encounter one of these.

llvm-svn: 51915
This commit is contained in:
Owen Anderson 2008-06-03 18:29:48 +00:00
parent ec62418fc5
commit 2df82e7cec
1 changed files with 6 additions and 3 deletions

View File

@ -235,9 +235,12 @@ bool llvm::SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum, Pass *P,
DominanceFrontier::iterator I = DF->find(DestBB);
if (I != DF->end()) {
DF->addBasicBlock(NewBB, I->second);
// However NewBB's frontier does not include DestBB.
DominanceFrontier::iterator NF = DF->find(NewBB);
DF->removeFromFrontier(NF, DestBB);
if (I->second.count(DestBB)) {
// However NewBB's frontier does not include DestBB.
DominanceFrontier::iterator NF = DF->find(NewBB);
DF->removeFromFrontier(NF, DestBB);
}
}
else
DF->addBasicBlock(NewBB, DominanceFrontier::DomSetType());