diff options
author | Dan Gohman <gohman@apple.com> | 2009-11-05 19:44:06 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-11-05 19:44:06 +0000 |
commit | 692ad8dd0630f80babeb631ec8ae5bf6b54456cd (patch) | |
tree | 83dd78747ea77b2006ca621cb9108365612fd766 | |
parent | 6a02fc3070c83ad8d59f071c88782f0c366bb07e (diff) | |
download | external_llvm-692ad8dd0630f80babeb631ec8ae5bf6b54456cd.zip external_llvm-692ad8dd0630f80babeb631ec8ae5bf6b54456cd.tar.gz external_llvm-692ad8dd0630f80babeb631ec8ae5bf6b54456cd.tar.bz2 |
Teach LoopUnroll how to bail if LoopSimplify can't give it what it needs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86164 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Utils/LoopUnroll.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/Transforms/Utils/LoopUnroll.cpp b/lib/Transforms/Utils/LoopUnroll.cpp index d68427a..3c58abe 100644 --- a/lib/Transforms/Utils/LoopUnroll.cpp +++ b/lib/Transforms/Utils/LoopUnroll.cpp @@ -108,8 +108,19 @@ static BasicBlock *FoldBlockIntoPredecessor(BasicBlock *BB, LoopInfo* LI) { bool llvm::UnrollLoop(Loop *L, unsigned Count, LoopInfo* LI, LPPassManager* LPM) { assert(L->isLCSSAForm()); - BasicBlock *Header = L->getHeader(); + BasicBlock *Preheader = L->getLoopPreheader(); + if (!Preheader) { + DEBUG(errs() << " Can't unroll; loop preheader-insertion failed.\n"); + return false; + } + BasicBlock *LatchBlock = L->getLoopLatch(); + if (!LatchBlock) { + DEBUG(errs() << " Can't unroll; loop exit-block-insertion failed.\n"); + return false; + } + + BasicBlock *Header = L->getHeader(); BranchInst *BI = dyn_cast<BranchInst>(LatchBlock->getTerminator()); if (!BI || BI->isUnconditional()) { |