Index: llvm/trunk/lib/Analysis/LoopInfo.cpp =================================================================== --- llvm/trunk/lib/Analysis/LoopInfo.cpp +++ llvm/trunk/lib/Analysis/LoopInfo.cpp @@ -213,26 +213,21 @@ MDNode *Loop::getLoopID() const { MDNode *LoopID = nullptr; - if (BasicBlock *Latch = getLoopLatch()) { - LoopID = Latch->getTerminator()->getMetadata(LLVMContext::MD_loop); - } else { - assert(!getLoopLatch() && - "The loop should have no single latch at this point"); - // Go through the latch blocks and check the terminator for the metadata. - SmallVector LatchesBlocks; - getLoopLatches(LatchesBlocks); - for (BasicBlock *BB : LatchesBlocks) { - TerminatorInst *TI = BB->getTerminator(); - MDNode *MD = TI->getMetadata(LLVMContext::MD_loop); - - if (!MD) - return nullptr; - - if (!LoopID) - LoopID = MD; - else if (MD != LoopID) - return nullptr; - } + + // Go through the latch blocks and check the terminator for the metadata. + SmallVector LatchesBlocks; + getLoopLatches(LatchesBlocks); + for (BasicBlock *BB : LatchesBlocks) { + TerminatorInst *TI = BB->getTerminator(); + MDNode *MD = TI->getMetadata(LLVMContext::MD_loop); + + if (!MD) + return nullptr; + + if (!LoopID) + LoopID = MD; + else if (MD != LoopID) + return nullptr; } if (!LoopID || LoopID->getNumOperands() == 0 || LoopID->getOperand(0) != LoopID)