From: Chris Lattner Date: Thu, 27 Feb 2003 21:51:38 +0000 (+0000) Subject: Fix bug: LICM/2003-02-27-PreheaderProblem.ll X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=5a8a2912d506a55010a44b0dc6aabc178ce34ef1;p=oota-llvm.git Fix bug: LICM/2003-02-27-PreheaderProblem.ll There may be a single outside predecessor and still need a new loop-preheader if the predecessor has multiple successors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5656 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp index a361e629e1a..035f92c33c3 100644 --- a/lib/Analysis/LoopInfo.cpp +++ b/lib/Analysis/LoopInfo.cpp @@ -200,6 +200,13 @@ BasicBlock *Loop::getLoopPreheader() const { return 0; // Multiple predecessors outside the loop Out = *PI; } + + // Make sure there is only one exit out of the preheader... + succ_iterator SI = succ_begin(Out); + ++SI; + if (SI != succ_end(Out)) + return 0; // Multiple exits from the block, must not be a preheader. + // If there is exactly one preheader, return it. If there was zero, then Out // is still null.