From 5865a04adf9468893221f6e629731d40d9908dab Mon Sep 17 00:00:00 2001 From: Alina Sbirlea 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 3aa9909df8e55..20c38caaf37cd 100644 --- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp +++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp @@ -80,6 +80,10 @@ static cl::opt cl::desc("The number of blocks to scan during memory " "dependency analysis (default = 200)")); +static cl::opt CacheGlobalLimit( + "cache-global-limit", cl::Hidden, cl::init(5000), + cl::desc("The max number of entries allowed in a cache (default = 5000)")); + // Limit on the number of memdep results to process. static const unsigned int NumResultsLimit = 100; @@ -1138,6 +1142,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