[llvm] [ObjC] Increase depth limit to MayAutorelease (PR #83743)

via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 3 13:53:18 PST 2024


https://github.com/AtariDreams updated https://github.com/llvm/llvm-project/pull/83743

>From 6d206f7d505af59a996afe1c1fff1c59d4b1ede5 Mon Sep 17 00:00:00 2001
From: Rose <83477269+AtariDreams at users.noreply.github.com>
Date: Sun, 3 Mar 2024 16:39:46 -0500
Subject: [PATCH] [ObjC] Increase depth limit to MayAutorelease

This should be more than large enough to cover pretty much any possible sane situation and case.
---
 llvm/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp
index dceb2ebb1863e7..be25b14dcd4fb7 100644
--- a/llvm/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp
+++ b/llvm/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp
@@ -46,13 +46,14 @@ bool MayAutorelease(const CallBase &CB, unsigned Depth = 0) {
   if (const Function *Callee = CB.getCalledFunction()) {
     if (!Callee->hasExactDefinition())
       return true;
+    // This recursion depth limit is arbitrary. It's just great
+    // enough to cover known interesting testcases.
+    if (Depth > 16)
+      return false;
     for (const BasicBlock &BB : *Callee) {
       for (const Instruction &I : BB)
         if (const CallBase *JCB = dyn_cast<CallBase>(&I))
-          // This recursion depth limit is arbitrary. It's just great
-          // enough to cover known interesting testcases.
-          if (Depth < 3 && !JCB->onlyReadsMemory() &&
-              MayAutorelease(*JCB, Depth + 1))
+          if (!JCB->onlyReadsMemory() && MayAutorelease(*JCB, Depth + 1))
             return true;
     }
     return false;



More information about the llvm-commits mailing list