diff options
author | Bill Wendling <isanbard@gmail.com> | 2011-08-18 21:10:01 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2011-08-18 21:10:01 +0000 |
commit | b15d6eb93b7f7c35beec6c542da9234a639578ee (patch) | |
tree | 92cd2c77a4d751f8767012e00d556849e9d8f94e /llvm/lib/Transforms | |
parent | 6865f77fdd9fea78053c64515d8e0cb2a03ab124 (diff) | |
download | bcm5719-llvm-b15d6eb93b7f7c35beec6c542da9234a639578ee.tar.gz bcm5719-llvm-b15d6eb93b7f7c35beec6c542da9234a639578ee.zip |
Revert r137871. The loop simplify pass should require all exits from a loop that
aren't from an indirect branch need to be dominated by the loop header.
llvm-svn: 137981
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopSimplify.cpp | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopSimplify.cpp b/llvm/lib/Transforms/Utils/LoopSimplify.cpp index b0196840213..46bdf57da5e 100644 --- a/llvm/lib/Transforms/Utils/LoopSimplify.cpp +++ b/llvm/lib/Transforms/Utils/LoopSimplify.cpp @@ -398,9 +398,6 @@ BasicBlock *LoopSimplify::InsertPreheaderForLoop(Loop *L) { /// blocks. This method is used to split exit blocks that have predecessors /// outside of the loop. BasicBlock *LoopSimplify::RewriteLoopExitBlock(Loop *L, BasicBlock *Exit) { - // Don't split a landing pad block. - if (Exit->isLandingPad()) return 0; - SmallVector<BasicBlock*, 8> LoopBlocks; for (pred_iterator I = pred_begin(Exit), E = pred_end(Exit); I != E; ++I) { BasicBlock *P = *I; @@ -749,10 +746,9 @@ void LoopSimplify::verifyAnalysis() const { (void)HasIndBrPred; } - // Indirectbr and LandingPad can interfere with exit block canonicalization. + // Indirectbr can interfere with exit block canonicalization. if (!L->hasDedicatedExits()) { bool HasIndBrExiting = false; - bool HasLPadExiting = false; SmallVector<BasicBlock*, 8> ExitingBlocks; L->getExitingBlocks(ExitingBlocks); for (unsigned i = 0, e = ExitingBlocks.size(); i != e; ++i) { @@ -760,18 +756,10 @@ void LoopSimplify::verifyAnalysis() const { HasIndBrExiting = true; break; } - if (const InvokeInst *II = - dyn_cast<InvokeInst>(ExitingBlocks[i]->getTerminator())) { - if (L->contains(II->getNormalDest()) && - !L->contains(II->getUnwindDest())) { - HasLPadExiting = true; - break; - } - } } - assert((HasIndBrExiting || HasLPadExiting) && + assert(HasIndBrExiting && "LoopSimplify has no excuse for missing exit block info!"); - (void)HasIndBrExiting; (void)HasLPadExiting; + (void)HasIndBrExiting; } } |