diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2009-11-18 14:58:34 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2009-11-18 14:58:34 +0000 | 
| commit | 907da171cc911d701da02a5cab898a9c49dd7724 (patch) | |
| tree | 6a111e552c75afc66228e3d8f19b6731e4013f10 /lib/Transforms/Utils/LoopUnroll.cpp | |
| parent | 72cc50852bec44580ee7efe1aa2076273008a6ae (diff) | |
Notes
Diffstat (limited to 'lib/Transforms/Utils/LoopUnroll.cpp')
| -rw-r--r-- | lib/Transforms/Utils/LoopUnroll.cpp | 16 | 
1 files changed, 13 insertions, 3 deletions
| diff --git a/lib/Transforms/Utils/LoopUnroll.cpp b/lib/Transforms/Utils/LoopUnroll.cpp index d68427afce79..6232f3286ffd 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()) { @@ -351,8 +362,7 @@ bool llvm::UnrollLoop(Loop *L, unsigned Count, LoopInfo* LI, LPPassManager* LPM)        if (isInstructionTriviallyDead(Inst))          (*BB)->getInstList().erase(Inst); -      else if (Constant *C = ConstantFoldInstruction(Inst,  -                                                     Header->getContext())) { +      else if (Constant *C = ConstantFoldInstruction(Inst)) {          Inst->replaceAllUsesWith(C);          (*BB)->getInstList().erase(Inst);        } | 
