From ff75121d4b6c5f4023e36a4edd7296a419ed5c04 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 21 Nov 2023 11:43:23 +0100 Subject: [PATCH] [LoopInfo] Avoid redundant DomTree lookup (NFC) For Header we already have the DomTreeNode. For Backedge, fetch it only once. --- llvm/include/llvm/Support/GenericLoopInfoImpl.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/llvm/include/llvm/Support/GenericLoopInfoImpl.h b/llvm/include/llvm/Support/GenericLoopInfoImpl.h index 85233d38f0f6db..15af9cd794e2b2 100644 --- a/llvm/include/llvm/Support/GenericLoopInfoImpl.h +++ b/llvm/include/llvm/Support/GenericLoopInfoImpl.h @@ -581,10 +581,9 @@ void LoopInfoBase::analyze(const DomTreeBase &DomTree) { // Check each predecessor of the potential loop header. for (const auto Backedge : children>(Header)) { // If Header dominates predBB, this is a new loop. Collect the backedges. - if (DomTree.dominates(Header, Backedge) && - DomTree.isReachableFromEntry(Backedge)) { + const DomTreeNodeBase *BackedgeNode = DomTree.getNode(Backedge); + if (BackedgeNode && DomTree.dominates(DomNode, BackedgeNode)) Backedges.push_back(Backedge); - } } // Perform a backward CFG traversal to discover and map blocks in this loop. if (!Backedges.empty()) {