diff options
author | Owen Anderson <resistor@mac.com> | 2008-06-03 18:29:48 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2008-06-03 18:29:48 +0000 |
commit | 2df82e7cec83d1b12731ebe851d55fe1ba73854e (patch) | |
tree | 5d236e3dd908b4e1973440842afcf3b094060fa6 /llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp | |
parent | ec62418fc5044c112a2fa76cea9235b9d8b465d6 (diff) | |
download | bcm5719-llvm-2df82e7cec83d1b12731ebe851d55fe1ba73854e.tar.gz bcm5719-llvm-2df82e7cec83d1b12731ebe851d55fe1ba73854e.zip |
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
Diffstat (limited to 'llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp index bc9fdfde88b..a821423d17f 100644 --- a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp +++ b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp @@ -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()); |