]> git.proxmox.com Git - rustc.git/blame - src/llvm/include/llvm/Analysis/Passes.h
Imported Upstream version 1.0.0+dfsg1
[rustc.git] / src / llvm / include / llvm / Analysis / Passes.h
CommitLineData
223e47cc
LB
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 class LibCallInfo;
26
27 //===--------------------------------------------------------------------===//
28 //
29 // createGlobalsModRefPass - This pass provides alias and mod/ref info for
30 // global values that do not have their addresses taken.
31 //
32 Pass *createGlobalsModRefPass();
33
34 //===--------------------------------------------------------------------===//
35 //
36 // createAliasDebugger - This pass helps debug clients of AA
37 //
38 Pass *createAliasDebugger();
39
40 //===--------------------------------------------------------------------===//
41 //
42 // createAliasAnalysisCounterPass - This pass counts alias queries and how the
43 // alias analysis implementation responds.
44 //
45 ModulePass *createAliasAnalysisCounterPass();
46
47 //===--------------------------------------------------------------------===//
48 //
49 // createAAEvalPass - This pass implements a simple N^2 alias analysis
50 // accuracy evaluator.
51 //
52 FunctionPass *createAAEvalPass();
53
54 //===--------------------------------------------------------------------===//
55 //
56 // createNoAAPass - This pass implements a "I don't know" alias analysis.
57 //
58 ImmutablePass *createNoAAPass();
59
60 //===--------------------------------------------------------------------===//
61 //
62 // createBasicAliasAnalysisPass - This pass implements the stateless alias
63 // analysis.
64 //
65 ImmutablePass *createBasicAliasAnalysisPass();
66
1a4d82fc
JJ
67 //===--------------------------------------------------------------------===//
68 //
69 // createCFLAliasAnalysisPass - This pass implements a set-based approach to
70 // alias analysis.
71 //
72 ImmutablePass *createCFLAliasAnalysisPass();
73
223e47cc
LB
74 //===--------------------------------------------------------------------===//
75 //
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.
79 ///
80 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI);
81
82 //===--------------------------------------------------------------------===//
83 //
84 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple
85 // alias analysis using ScalarEvolution queries.
86 //
87 FunctionPass *createScalarEvolutionAliasAnalysisPass();
88
89 //===--------------------------------------------------------------------===//
90 //
91 // createTypeBasedAliasAnalysisPass - This pass implements metadata-based
92 // type-based alias analysis.
93 //
94 ImmutablePass *createTypeBasedAliasAnalysisPass();
95
96 //===--------------------------------------------------------------------===//
97 //
1a4d82fc
JJ
98 // createScopedNoAliasAAPass - This pass implements metadata-based
99 // scoped noalias analysis.
223e47cc 100 //
1a4d82fc 101 ImmutablePass *createScopedNoAliasAAPass();
223e47cc
LB
102
103 //===--------------------------------------------------------------------===//
104 //
1a4d82fc
JJ
105 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based
106 // alias analysis.
223e47cc 107 //
1a4d82fc 108 ImmutablePass *createObjCARCAliasAnalysisPass();
223e47cc 109
85aaf69f
SL
110 FunctionPass *createPAEvalPass();
111
223e47cc
LB
112 //===--------------------------------------------------------------------===//
113 //
114 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
115 /// pass.
116 FunctionPass *createLazyValueInfoPass();
117
118 //===--------------------------------------------------------------------===//
119 //
970d7e83
LB
120 // createDependenceAnalysisPass - This creates an instance of the
121 // DependenceAnalysis pass.
223e47cc 122 //
970d7e83 123 FunctionPass *createDependenceAnalysisPass();
223e47cc 124
970d7e83
LB
125 //===--------------------------------------------------------------------===//
126 //
127 // createCostModelAnalysisPass - This creates an instance of the
128 // CostModelAnalysis pass.
129 //
130 FunctionPass *createCostModelAnalysisPass();
131
1a4d82fc
JJ
132 //===--------------------------------------------------------------------===//
133 //
134 // createDelinearizationPass - This pass implements attempts to restore
135 // multidimensional array indices from linearized expressions.
136 //
137 FunctionPass *createDelinearizationPass();
138
970d7e83
LB
139 //===--------------------------------------------------------------------===//
140 //
223e47cc
LB
141 // Minor pass prototypes, allowing us to expose them through bugpoint and
142 // analyze.
143 FunctionPass *createInstCountPass();
144
223e47cc
LB
145 //===--------------------------------------------------------------------===//
146 //
147 // createRegionInfoPass - This pass finds all single entry single exit regions
148 // in a function and builds the region hierarchy.
149 //
150 FunctionPass *createRegionInfoPass();
151
152 // Print module-level debug info metadata in human-readable form.
153 ModulePass *createModuleDebugInfoPrinterPass();
154
155 //===--------------------------------------------------------------------===//
156 //
157 // createMemDepPrinter - This pass exhaustively collects all memdep
158 // information and prints it with -analyze.
159 //
160 FunctionPass *createMemDepPrinter();
1a4d82fc
JJ
161
162 // createJumpInstrTableInfoPass - This creates a pass that stores information
163 // about the jump tables created by JumpInstrTables
164 ImmutablePass *createJumpInstrTableInfoPass();
223e47cc
LB
165}
166
167#endif