Passes.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This header file defines prototypes for accessor functions that expose passes
  11. // in the analysis libraries.
  12. //
  13. //===----------------------------------------------------------------------===//
  14. #ifndef LLVM_ANALYSIS_PASSES_H
  15. #define LLVM_ANALYSIS_PASSES_H
  16. namespace llvm {
  17. class FunctionPass;
  18. class ImmutablePass;
  19. class LoopPass;
  20. class ModulePass;
  21. class Pass;
  22. class PassInfo;
  23. class LibCallInfo;
  24. //===--------------------------------------------------------------------===//
  25. //
  26. // createGlobalsModRefPass - This pass provides alias and mod/ref info for
  27. // global values that do not have their addresses taken.
  28. //
  29. Pass *createGlobalsModRefPass();
  30. //===--------------------------------------------------------------------===//
  31. //
  32. // createAliasDebugger - This pass helps debug clients of AA
  33. //
  34. Pass *createAliasDebugger();
  35. //===--------------------------------------------------------------------===//
  36. //
  37. // createAliasAnalysisCounterPass - This pass counts alias queries and how the
  38. // alias analysis implementation responds.
  39. //
  40. ModulePass *createAliasAnalysisCounterPass();
  41. //===--------------------------------------------------------------------===//
  42. //
  43. // createAAEvalPass - This pass implements a simple N^2 alias analysis
  44. // accuracy evaluator.
  45. //
  46. FunctionPass *createAAEvalPass();
  47. //===--------------------------------------------------------------------===//
  48. //
  49. // createNoAAPass - This pass implements a "I don't know" alias analysis.
  50. //
  51. ImmutablePass *createNoAAPass();
  52. //===--------------------------------------------------------------------===//
  53. //
  54. // createBasicAliasAnalysisPass - This pass implements the stateless alias
  55. // analysis.
  56. //
  57. ImmutablePass *createBasicAliasAnalysisPass();
  58. //===--------------------------------------------------------------------===//
  59. //
  60. // createCFLAliasAnalysisPass - This pass implements a set-based approach to
  61. // alias analysis.
  62. //
  63. ImmutablePass *createCFLAliasAnalysisPass();
  64. //===--------------------------------------------------------------------===//
  65. //
  66. /// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows
  67. /// about the semantics of a set of libcalls specified by LCI. The newly
  68. /// constructed pass takes ownership of the pointer that is provided.
  69. ///
  70. FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI);
  71. //===--------------------------------------------------------------------===//
  72. //
  73. // createScalarEvolutionAliasAnalysisPass - This pass implements a simple
  74. // alias analysis using ScalarEvolution queries.
  75. //
  76. FunctionPass *createScalarEvolutionAliasAnalysisPass();
  77. //===--------------------------------------------------------------------===//
  78. //
  79. // createTypeBasedAliasAnalysisPass - This pass implements metadata-based
  80. // type-based alias analysis.
  81. //
  82. ImmutablePass *createTypeBasedAliasAnalysisPass();
  83. //===--------------------------------------------------------------------===//
  84. //
  85. // createScopedNoAliasAAPass - This pass implements metadata-based
  86. // scoped noalias analysis.
  87. //
  88. ImmutablePass *createScopedNoAliasAAPass();
  89. //===--------------------------------------------------------------------===//
  90. //
  91. // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based
  92. // alias analysis.
  93. //
  94. ImmutablePass *createObjCARCAliasAnalysisPass();
  95. FunctionPass *createPAEvalPass();
  96. //===--------------------------------------------------------------------===//
  97. //
  98. /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
  99. /// pass.
  100. FunctionPass *createLazyValueInfoPass();
  101. //===--------------------------------------------------------------------===//
  102. //
  103. // createDependenceAnalysisPass - This creates an instance of the
  104. // DependenceAnalysis pass.
  105. //
  106. FunctionPass *createDependenceAnalysisPass();
  107. //===--------------------------------------------------------------------===//
  108. //
  109. // createCostModelAnalysisPass - This creates an instance of the
  110. // CostModelAnalysis pass.
  111. //
  112. FunctionPass *createCostModelAnalysisPass();
  113. //===--------------------------------------------------------------------===//
  114. //
  115. // createDelinearizationPass - This pass implements attempts to restore
  116. // multidimensional array indices from linearized expressions.
  117. //
  118. FunctionPass *createDelinearizationPass();
  119. //===--------------------------------------------------------------------===//
  120. //
  121. // createDivergenceAnalysisPass - This pass determines which branches in a GPU
  122. // program are divergent.
  123. //
  124. FunctionPass *createDivergenceAnalysisPass();
  125. //===--------------------------------------------------------------------===//
  126. //
  127. // Minor pass prototypes, allowing us to expose them through bugpoint and
  128. // analyze.
  129. FunctionPass *createInstCountPass();
  130. //===--------------------------------------------------------------------===//
  131. //
  132. // createRegionInfoPass - This pass finds all single entry single exit regions
  133. // in a function and builds the region hierarchy.
  134. //
  135. FunctionPass *createRegionInfoPass();
  136. // Print module-level debug info metadata in human-readable form.
  137. ModulePass *createModuleDebugInfoPrinterPass();
  138. //===--------------------------------------------------------------------===//
  139. //
  140. // createMemDepPrinter - This pass exhaustively collects all memdep
  141. // information and prints it with -analyze.
  142. //
  143. FunctionPass *createMemDepPrinter();
  144. //===--------------------------------------------------------------------===//
  145. //
  146. // createMemDerefPrinter - This pass collects memory dereferenceability
  147. // information and prints it with -analyze.
  148. //
  149. FunctionPass *createMemDerefPrinter();
  150. }
  151. #endif