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 | 415c64ea3f621212180ba8b04909fdfc3c51309a (patch) | |
| tree | 28880c3004ec321ce44bbc7a19282bdbfff90fe0 /llvm/lib/Transforms/Utils | |
| parent | d9fa1c9c1e90fc48c58187fb3a04dc5a332a0884 (diff) | |
| download | bcm5719-llvm-415c64ea3f621212180ba8b04909fdfc3c51309a.tar.gz bcm5719-llvm-415c64ea3f621212180ba8b04909fdfc3c51309a.zip  | |
Teach LoopUnroll how to bail if LoopSimplify can't give it what it needs.
llvm-svn: 86164
Diffstat (limited to 'llvm/lib/Transforms/Utils')
| -rw-r--r-- | llvm/lib/Transforms/Utils/LoopUnroll.cpp | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp index d68427afce7..3c58abe37e0 100644 --- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp +++ b/llvm/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()) {  | 

