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