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