From 9198b33b48967bd9d692cd56f831acfe08e7197f Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Wed, 28 Jan 2015 23:06:47 +0000 Subject: Teach SplitBlockPredecessors how to handle landingpad blocks. Patch by: Igor Laevsky "Currently SplitBlockPredecessors generates incorrect code in case if basic block we are going to split has a landingpad. Also seems like it is fairly common case among it's users to conditionally call either SplitBlockPredecessors or SplitLandingPadPredecessors. Because of this I think it is reasonable to add this condition directly into SplitBlockPredecessors." Differential Revision: http://reviews.llvm.org/D7157 llvm-svn: 227390 --- llvm/lib/Transforms/Utils/LoopSimplify.cpp | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) (limited to 'llvm/lib/Transforms/Utils/LoopSimplify.cpp') diff --git a/llvm/lib/Transforms/Utils/LoopSimplify.cpp b/llvm/lib/Transforms/Utils/LoopSimplify.cpp index 725188d1bc2..e0cf8f8570b 100644 --- a/llvm/lib/Transforms/Utils/LoopSimplify.cpp +++ b/llvm/lib/Transforms/Utils/LoopSimplify.cpp @@ -139,15 +139,8 @@ BasicBlock *llvm::InsertPreheaderForLoop(Loop *L, Pass *PP) { // Split out the loop pre-header. BasicBlock *PreheaderBB; - if (!Header->isLandingPad()) { - PreheaderBB = SplitBlockPredecessors(Header, OutsideBlocks, ".preheader", - AA, DT, LI, PreserveLCSSA); - } else { - SmallVector NewBBs; - SplitLandingPadPredecessors(Header, OutsideBlocks, ".preheader", - ".split-lp", NewBBs, AA, DT, LI, PreserveLCSSA); - PreheaderBB = NewBBs[0]; - } + PreheaderBB = SplitBlockPredecessors(Header, OutsideBlocks, ".preheader", + AA, DT, LI, PreserveLCSSA); PreheaderBB->getTerminator()->setDebugLoc( Header->getFirstNonPHI()->getDebugLoc()); @@ -184,15 +177,8 @@ static BasicBlock *rewriteLoopExitBlock(Loop *L, BasicBlock *Exit, bool PreserveLCSSA = PP->mustPreserveAnalysisID(LCSSAID); - if (Exit->isLandingPad()) { - SmallVector NewBBs; - SplitLandingPadPredecessors(Exit, LoopBlocks, ".loopexit", ".nonloopexit", - NewBBs, AA, DT, LI, PreserveLCSSA); - NewExitBB = NewBBs[0]; - } else { - NewExitBB = SplitBlockPredecessors(Exit, LoopBlocks, ".loopexit", AA, DT, - LI, PreserveLCSSA); - } + NewExitBB = SplitBlockPredecessors(Exit, LoopBlocks, ".loopexit", AA, DT, + LI, PreserveLCSSA); DEBUG(dbgs() << "LoopSimplify: Creating dedicated exit block " << NewExitBB->getName() << "\n"); -- cgit v1.2.3