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