From 8de2f1ff79aa2a8a72b8c44ea70b48aa9f282ae5 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 10 Apr 2021 22:17:35 +0200 Subject: [PATCH] [IVUsers] Check LoopSimplify cache earlier (NFC) Check the cache before calling isLoopSimplifyForm(). Otherwise we'd always perform the check for the innermost loop and only skip it for dominating loops. --- llvm/lib/Analysis/IVUsers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Analysis/IVUsers.cpp b/llvm/lib/Analysis/IVUsers.cpp index 9432696..db6cff7 100644 --- a/llvm/lib/Analysis/IVUsers.cpp +++ b/llvm/lib/Analysis/IVUsers.cpp @@ -101,12 +101,12 @@ static bool isSimplifiedLoopNest(BasicBlock *BB, const DominatorTree *DT, BasicBlock *DomBB = Rung->getBlock(); Loop *DomLoop = LI->getLoopFor(DomBB); if (DomLoop && DomLoop->getHeader() == DomBB) { - // If the domtree walk reaches a loop with no preheader, return false. - if (!DomLoop->isLoopSimplifyForm()) - return false; // If we have already checked this loop nest, stop checking. if (SimpleLoopNests.count(DomLoop)) break; + // If the domtree walk reaches a loop with no preheader, return false. + if (!DomLoop->isLoopSimplifyForm()) + return false; // If we have not already checked this loop nest, remember the loop // header nearest to BB. The nearest loop may not contain BB. if (!NearestLoop) -- 2.7.4