[llvm] [GVN/MemDep] Limit the size of the cache for non-local dependencies. (PR #150539)

Alina Sbirlea via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 23 09:20:21 PDT 2025


https://github.com/alinas updated https://github.com/llvm/llvm-project/pull/150539

>From cadaf891646c9f833722f911af0fd76f77264472 Mon Sep 17 00:00:00 2001
From: Alina Sbirlea <asbirlea at google.com>
Date: Thu, 24 Jul 2025 22:09:04 +0000
Subject: [PATCH] [GVN/MemDep] Limit the size of the cache for non-local
 dependencies.

---
 llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
index 67c2cfadb6533..5c03df2518ceb 100644
--- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -80,6 +80,10 @@ static cl::opt<unsigned>
                      cl::desc("The number of blocks to scan during memory "
                               "dependency analysis (default = 200)"));
 
+static cl::opt<unsigned> CacheGlobalLimit(
+    "cache-global-limit", cl::Hidden, cl::init(10000),
+    cl::desc("The max number of entries allowed in a cache (default = 10000)"));
+
 // Limit on the number of memdep results to process.
 static const unsigned int NumResultsLimit = 100;
 
@@ -1142,6 +1146,11 @@ bool MemoryDependenceResults::getNonLocalPointerDepFromBB(
     return true;
   }
 
+  // If the size of this cache has surpassed the global limit, stop here.
+  if (Cache->size() > CacheGlobalLimit) {
+    return false;
+  }
+
   // Otherwise, either this is a new block, a block with an invalid cache
   // pointer or one that we're about to invalidate by putting more info into
   // it than its valid cache info.  If empty and not explicitly indicated as



More information about the llvm-commits mailing list