[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