1 //===-- ObjCARC.h - ObjCARC Scalar Transformations --------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This header file defines prototypes for accessor functions that expose passes
10 // in the ObjCARC Scalar Transformations library.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_TRANSFORMS_OBJCARC_H
15 #define LLVM_TRANSFORMS_OBJCARC_H
16 
17 #include "llvm/IR/PassManager.h"
18 
19 namespace llvm {
20 
21 class Pass;
22 
23 //===----------------------------------------------------------------------===//
24 //
25 // ObjCARCContract - Late ObjC ARC cleanups.
26 //
27 Pass *createObjCARCContractPass();
28 
29 struct ObjCARCOptPass : public PassInfoMixin<ObjCARCOptPass> {
30   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
31 };
32 
33 struct ObjCARCContractPass : public PassInfoMixin<ObjCARCContractPass> {
34   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
35 };
36 
37 struct ObjCARCAPElimPass : public PassInfoMixin<ObjCARCAPElimPass> {
38   PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
39 };
40 
41 struct ObjCARCExpandPass : public PassInfoMixin<ObjCARCExpandPass> {
42   PreservedAnalyses run(Function &M, FunctionAnalysisManager &AM);
43 };
44 
45 struct PAEvalPass : public PassInfoMixin<PAEvalPass> {
46   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
47 };
48 
49 } // End llvm namespace
50 
51 #endif
52