diff --git a/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp b/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp --- a/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp @@ -831,6 +831,13 @@ if (SubLoopsSize != 1) return false; + // If the Loop does not have an exit block, cannot perform unroll and jam + if (!L->getExitBlock()) { + LLVM_DEBUG(dbgs() << "Won't unroll-and-jam; Loop does not have an exit " + "block\n"); + return false; + } + L = L->getSubLoops()[0]; } while (L);