Skip to content

Commit b0e3deb

Browse files
committed
Delete ObjCARCAPElim, as it is entirely superseded by ObjCARCOpts
1 parent 32b8b89 commit b0e3deb

File tree

9 files changed

+25
-171
lines changed

9 files changed

+25
-171
lines changed

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,12 +1022,6 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
10221022
MPM.addPass(
10231023
createModuleToFunctionPassAdaptor(ObjCARCExpandPass()));
10241024
});
1025-
PB.registerPipelineEarlySimplificationEPCallback(
1026-
[](ModulePassManager &MPM, OptimizationLevel Level,
1027-
ThinOrFullLTOPhase) {
1028-
if (Level != OptimizationLevel::O0)
1029-
MPM.addPass(ObjCARCAPElimPass());
1030-
});
10311025
PB.registerScalarOptimizerLateEPCallback(
10321026
[](FunctionPassManager &FPM, OptimizationLevel Level) {
10331027
if (Level != OptimizationLevel::O0)

llvm/include/llvm/Transforms/ObjCARC.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ struct ObjCARCContractPass : public PassInfoMixin<ObjCARCContractPass> {
3535
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
3636
};
3737

38-
struct ObjCARCAPElimPass : public PassInfoMixin<ObjCARCAPElimPass> {
39-
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
40-
};
41-
4238
struct ObjCARCExpandPass : public PassInfoMixin<ObjCARCExpandPass> {
4339
LLVM_ABI PreservedAnalyses run(Function &M, FunctionAnalysisManager &AM);
4440
};

llvm/lib/Passes/PassRegistry.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ MODULE_PASS("module-inline", ModuleInlinerPass())
113113
MODULE_PASS("name-anon-globals", NameAnonGlobalPass())
114114
MODULE_PASS("no-op-module", NoOpModulePass())
115115
MODULE_PASS("nsan", NumericalStabilitySanitizerPass())
116-
MODULE_PASS("objc-arc-apelim", ObjCARCAPElimPass())
117116
MODULE_PASS("openmp-opt", OpenMPOptPass())
118117
MODULE_PASS("openmp-opt-postlink",
119118
OpenMPOptPass(ThinOrFullLTOPhase::FullLTOPostLink))

llvm/lib/Transforms/ObjCARC/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ add_llvm_component_library(LLVMObjCARCOpts
22
ObjCARC.cpp
33
ObjCARCOpts.cpp
44
ObjCARCExpand.cpp
5-
ObjCARCAPElim.cpp
65
ObjCARCContract.cpp
76
DependencyAnalysis.cpp
87
ProvenanceAnalysis.cpp

llvm/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp

Lines changed: 0 additions & 156 deletions
This file was deleted.

llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2490,6 +2490,27 @@ bool ObjCARCOpt::run(Function &F, AAResults &AA) {
24902490
return Changed;
24912491
}
24922492

2493+
/// Interprocedurally determine if calls made by the given call site can
2494+
/// possibly produce autoreleases.
2495+
bool MayAutorelease(const CallBase &CB, unsigned Depth = 0) {
2496+
if (const Function *Callee = CB.getCalledFunction()) {
2497+
if (!Callee->hasExactDefinition())
2498+
return true;
2499+
for (const BasicBlock &BB : *Callee) {
2500+
for (const Instruction &I : BB)
2501+
if (const CallBase *JCB = dyn_cast<CallBase>(&I))
2502+
// This recursion depth limit is arbitrary. It's just great
2503+
// enough to cover known interesting testcases.
2504+
if (Depth < 10 && !JCB->onlyReadsMemory() &&
2505+
MayAutorelease(*JCB, Depth + 1))
2506+
return true;
2507+
}
2508+
return false;
2509+
}
2510+
2511+
return true;
2512+
}
2513+
24932514
/// Optimize autorelease pools by eliminating empty push/pop pairs.
24942515
void ObjCARCOpt::OptimizeAutoreleasePools(Function &F) {
24952516
LLVM_DEBUG(dbgs() << "\n== ObjCARCOpt::OptimizeAutoreleasePools ==\n");
@@ -2558,6 +2579,8 @@ void ObjCARCOpt::OptimizeAutoreleasePools(Function &F) {
25582579
}
25592580
case ARCInstKind::CallOrUser:
25602581
case ARCInstKind::Call:
2582+
if (MayAutorelease(cast<CallBase>(Inst)))
2583+
break;
25612584
case ARCInstKind::Autorelease:
25622585
case ARCInstKind::AutoreleaseRV:
25632586
case ARCInstKind::FusedRetainAutorelease:

llvm/test/Transforms/ObjCARC/apelim.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -S -passes=objc-arc-apelim < %s | FileCheck %s
1+
; RUN: opt -S -passes=objc-arc < %s | FileCheck %s
22
; rdar://10227311
33

44
@llvm.global_ctors = appending global [2 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__I_x, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__I_y, ptr null }]

llvm/test/Transforms/ObjCARC/comdat-ipo.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: opt -S -passes=objc-arc-apelim < %s | FileCheck %s
1+
; RUN: opt -S -passes=objc-arc < %s | FileCheck %s
22

33
; See PR26774
44

llvm/utils/gn/secondary/llvm/lib/Transforms/ObjCARC/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ static_library("ObjCARC") {
99
sources = [
1010
"DependencyAnalysis.cpp",
1111
"ObjCARC.cpp",
12-
"ObjCARCAPElim.cpp",
1312
"ObjCARCContract.cpp",
1413
"ObjCARCExpand.cpp",
1514
"ObjCARCOpts.cpp",

0 commit comments

Comments
 (0)