[llvm-commits] [llvm] r86164 - /llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp
Dan Gohman
gohman at apple.com
Thu Nov 5 11:44:07 PST 2009
Author: djg
Date: Thu Nov 5 13:44:06 2009
New Revision: 86164
URL: http://llvm.org/viewvc/llvm-project?rev=86164&view=rev
Log:
Teach LoopUnroll how to bail if LoopSimplify can't give it what it needs.
Modified:
llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp
Modified: llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp?rev=86164&r1=86163&r2=86164&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp Thu Nov 5 13:44:06 2009
@@ -108,8 +108,19 @@
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()) {
More information about the llvm-commits
mailing list