Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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. // ObjCARCAPElim - ObjC ARC autorelease pool elimination.
  26. //
  27. Pass *createObjCARCAPElimPass();
  28.  
  29. //===----------------------------------------------------------------------===//
  30. //
  31. // ObjCARCExpand - ObjC ARC preliminary simplifications.
  32. //
  33. Pass *createObjCARCExpandPass();
  34.  
  35. //===----------------------------------------------------------------------===//
  36. //
  37. // ObjCARCContract - Late ObjC ARC cleanups.
  38. //
  39. Pass *createObjCARCContractPass();
  40.  
  41. //===----------------------------------------------------------------------===//
  42. //
  43. // ObjCARCOpt - ObjC ARC optimization.
  44. //
  45. Pass *createObjCARCOptPass();
  46.  
  47. struct ObjCARCOptPass : public PassInfoMixin<ObjCARCOptPass> {
  48.   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
  49. };
  50.  
  51. struct ObjCARCContractPass : public PassInfoMixin<ObjCARCContractPass> {
  52.   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
  53. };
  54.  
  55. struct ObjCARCAPElimPass : public PassInfoMixin<ObjCARCAPElimPass> {
  56.   PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
  57. };
  58.  
  59. struct ObjCARCExpandPass : public PassInfoMixin<ObjCARCExpandPass> {
  60.   PreservedAnalyses run(Function &M, FunctionAnalysisManager &AM);
  61. };
  62.  
  63. struct PAEvalPass : public PassInfoMixin<PAEvalPass> {
  64.   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
  65. };
  66.  
  67. } // End llvm namespace
  68.  
  69. #endif
  70.