Passes.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- 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 analysis libraries.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #ifndef LLVM_ANALYSIS_PASSES_H
  14. #define LLVM_ANALYSIS_PASSES_H
  15. namespace llvm {
  16. class FunctionPass;
  17. class ImmutablePass;
  18. class ModulePass;
  19. //===--------------------------------------------------------------------===//
  20. //
  21. // createObjCARCAAWrapperPass - This pass implements ObjC-ARC-based
  22. // alias analysis.
  23. //
  24. ImmutablePass *createObjCARCAAWrapperPass();
  25. FunctionPass *createPAEvalPass();
  26. //===--------------------------------------------------------------------===//
  27. //
  28. /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
  29. /// pass.
  30. FunctionPass *createLazyValueInfoPass();
  31. //===--------------------------------------------------------------------===//
  32. //
  33. // createDependenceAnalysisWrapperPass - This creates an instance of the
  34. // DependenceAnalysisWrapper pass.
  35. //
  36. FunctionPass *createDependenceAnalysisWrapperPass();
  37. //===--------------------------------------------------------------------===//
  38. //
  39. // createCostModelAnalysisPass - This creates an instance of the
  40. // CostModelAnalysis pass.
  41. //
  42. FunctionPass *createCostModelAnalysisPass();
  43. //===--------------------------------------------------------------------===//
  44. //
  45. // createDelinearizationPass - This pass implements attempts to restore
  46. // multidimensional array indices from linearized expressions.
  47. //
  48. FunctionPass *createDelinearizationPass();
  49. //===--------------------------------------------------------------------===//
  50. //
  51. // createLegacyDivergenceAnalysisPass - This pass determines which branches in a GPU
  52. // program are divergent.
  53. //
  54. FunctionPass *createLegacyDivergenceAnalysisPass();
  55. //===--------------------------------------------------------------------===//
  56. //
  57. // Minor pass prototypes, allowing us to expose them through bugpoint and
  58. // analyze.
  59. FunctionPass *createInstCountPass();
  60. //===--------------------------------------------------------------------===//
  61. //
  62. // createRegionInfoPass - This pass finds all single entry single exit regions
  63. // in a function and builds the region hierarchy.
  64. //
  65. FunctionPass *createRegionInfoPass();
  66. // Print module-level debug info metadata in human-readable form.
  67. ModulePass *createModuleDebugInfoPrinterPass();
  68. //===--------------------------------------------------------------------===//
  69. //
  70. // createMemDepPrinter - This pass exhaustively collects all memdep
  71. // information and prints it with -analyze.
  72. //
  73. FunctionPass *createMemDepPrinter();
  74. //===--------------------------------------------------------------------===//
  75. //
  76. // createMemDerefPrinter - This pass collects memory dereferenceability
  77. // information and prints it with -analyze.
  78. //
  79. FunctionPass *createMemDerefPrinter();
  80. //===--------------------------------------------------------------------===//
  81. //
  82. // createMustExecutePrinter - This pass collects information about which
  83. // instructions within a loop are guaranteed to execute if the loop header is
  84. // entered and prints it with -analyze.
  85. //
  86. FunctionPass *createMustExecutePrinter();
  87. //===--------------------------------------------------------------------===//
  88. //
  89. // createMustBeExecutedContextPrinter - This pass prints information about which
  90. // instructions are guaranteed to execute together (run with -analyze).
  91. //
  92. ModulePass *createMustBeExecutedContextPrinter();
  93. }
  94. #endif