summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Analysis/LoopInfo.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/llvm/lib/Analysis/LoopInfo.cpp b/llvm/lib/Analysis/LoopInfo.cpp
index 6b93234b487..b9789394d41 100644
--- a/llvm/lib/Analysis/LoopInfo.cpp
+++ b/llvm/lib/Analysis/LoopInfo.cpp
@@ -254,16 +254,10 @@ void Loop::setLoopID(MDNode *LoopID) const {
assert((!LoopID || LoopID->getOperand(0) == LoopID) &&
"Loop ID should refer to itself");
- BasicBlock *H = getHeader();
- for (BasicBlock *BB : this->blocks()) {
- Instruction *TI = BB->getTerminator();
- for (BasicBlock *Successor : successors(TI)) {
- if (Successor == H) {
- TI->setMetadata(LLVMContext::MD_loop, LoopID);
- break;
- }
- }
- }
+ SmallVector<BasicBlock *, 4> LoopLatches;
+ getLoopLatches(LoopLatches);
+ for (BasicBlock *BB : LoopLatches)
+ BB->getTerminator()->setMetadata(LLVMContext::MD_loop, LoopID);
}
void Loop::setLoopAlreadyUnrolled() {
OpenPOWER on IntegriCloud