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
19namespace llvm {
20
21class Pass;
22
23//===----------------------------------------------------------------------===//
24//
25// ObjCARCContract - Late ObjC ARC cleanups.
26//
27Pass *createObjCARCContractPass();
28
29struct ObjCARCOptPass : public PassInfoMixin<ObjCARCOptPass> {
30 PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
31};
32
33struct ObjCARCContractPass : public PassInfoMixin<ObjCARCContractPass> {
34 PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
35};
36
37struct ObjCARCAPElimPass : public PassInfoMixin<ObjCARCAPElimPass> {
38 PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
39};
40
41struct ObjCARCExpandPass : public PassInfoMixin<ObjCARCExpandPass> {
42 PreservedAnalyses run(Function &M, FunctionAnalysisManager &AM);
43};
44
45struct PAEvalPass : public PassInfoMixin<PAEvalPass> {
46 PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
47};
48
49} // End llvm namespace
50
51#endif
52

source code of llvm/include/llvm/Transforms/ObjCARC.h