1 //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This header file defines prototypes for accessor functions that expose passes
11 // in the analysis libraries.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_ANALYSIS_PASSES_H
16 #define LLVM_ANALYSIS_PASSES_H
27 //===--------------------------------------------------------------------===//
29 // createGlobalsModRefPass - This pass provides alias and mod/ref info for
30 // global values that do not have their addresses taken.
32 Pass *createGlobalsModRefPass();
34 //===--------------------------------------------------------------------===//
36 // createAliasDebugger - This pass helps debug clients of AA
38 Pass *createAliasDebugger();
40 //===--------------------------------------------------------------------===//
42 // createAliasAnalysisCounterPass - This pass counts alias queries and how the
43 // alias analysis implementation responds.
45 ModulePass *createAliasAnalysisCounterPass();
47 //===--------------------------------------------------------------------===//
49 // createAAEvalPass - This pass implements a simple N^2 alias analysis
50 // accuracy evaluator.
52 FunctionPass *createAAEvalPass();
54 //===--------------------------------------------------------------------===//
56 // createNoAAPass - This pass implements a "I don't know" alias analysis.
58 ImmutablePass *createNoAAPass();
60 //===--------------------------------------------------------------------===//
62 // createBasicAliasAnalysisPass - This pass implements the stateless alias
65 ImmutablePass *createBasicAliasAnalysisPass();
67 //===--------------------------------------------------------------------===//
69 // createCFLAliasAnalysisPass - This pass implements a set-based approach to
72 ImmutablePass *createCFLAliasAnalysisPass();
74 //===--------------------------------------------------------------------===//
76 /// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows
77 /// about the semantics of a set of libcalls specified by LCI. The newly
78 /// constructed pass takes ownership of the pointer that is provided.
80 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI);
82 //===--------------------------------------------------------------------===//
84 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple
85 // alias analysis using ScalarEvolution queries.
87 FunctionPass *createScalarEvolutionAliasAnalysisPass();
89 //===--------------------------------------------------------------------===//
91 // createTypeBasedAliasAnalysisPass - This pass implements metadata-based
92 // type-based alias analysis.
94 ImmutablePass *createTypeBasedAliasAnalysisPass();
96 //===--------------------------------------------------------------------===//
98 // createScopedNoAliasAAPass - This pass implements metadata-based
99 // scoped noalias analysis.
101 ImmutablePass *createScopedNoAliasAAPass();
103 //===--------------------------------------------------------------------===//
105 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based
108 ImmutablePass *createObjCARCAliasAnalysisPass();
110 FunctionPass *createPAEvalPass();
112 //===--------------------------------------------------------------------===//
114 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
116 FunctionPass *createLazyValueInfoPass();
118 //===--------------------------------------------------------------------===//
120 // createDependenceAnalysisPass - This creates an instance of the
121 // DependenceAnalysis pass.
123 FunctionPass *createDependenceAnalysisPass();
125 //===--------------------------------------------------------------------===//
127 // createCostModelAnalysisPass - This creates an instance of the
128 // CostModelAnalysis pass.
130 FunctionPass *createCostModelAnalysisPass();
132 //===--------------------------------------------------------------------===//
134 // createDelinearizationPass - This pass implements attempts to restore
135 // multidimensional array indices from linearized expressions.
137 FunctionPass *createDelinearizationPass();
139 //===--------------------------------------------------------------------===//
141 // Minor pass prototypes, allowing us to expose them through bugpoint and
143 FunctionPass *createInstCountPass();
145 //===--------------------------------------------------------------------===//
147 // createRegionInfoPass - This pass finds all single entry single exit regions
148 // in a function and builds the region hierarchy.
150 FunctionPass *createRegionInfoPass();
152 // Print module-level debug info metadata in human-readable form.
153 ModulePass *createModuleDebugInfoPrinterPass();
155 //===--------------------------------------------------------------------===//
157 // createMemDepPrinter - This pass exhaustively collects all memdep
158 // information and prints it with -analyze.
160 FunctionPass *createMemDepPrinter();
162 // createJumpInstrTableInfoPass - This creates a pass that stores information
163 // about the jump tables created by JumpInstrTables
164 ImmutablePass *createJumpInstrTableInfoPass();
166 //===--------------------------------------------------------------------===//
168 // createMemDerefPrinter - This pass collects memory dereferenceability
169 // information and prints it with -analyze.
171 FunctionPass *createMemDerefPrinter();