[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