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 // createInterproceduralAAEvalPass - This pass implements a simple
57 // N^2 interprocedural alias analysis accuracy evaluator.
59 Pass *createInterproceduralAAEvalPass();
61 //===--------------------------------------------------------------------===//
63 // createNoAAPass - This pass implements a "I don't know" alias analysis.
65 ImmutablePass *createNoAAPass();
67 //===--------------------------------------------------------------------===//
69 // createBasicAliasAnalysisPass - This pass implements the default alias
70 // analysis. This analysis respects the noalias attribute, so it is not
71 // suitable for some interprocedural uses (see the discussion of noalias
72 // in AliasAnalysis.html for details).
74 ImmutablePass *createBasicAliasAnalysisPass();
76 //===--------------------------------------------------------------------===//
78 // createInterproceduralBasicAliasAnalysisPass - This pass is similar to
79 // baiscaa, except that it properly supports queries to values which live
80 // in different functions. Unlike the regular BasicAliasAnalysis, this
81 // implementation does not respect the noalias attribute.
83 ImmutablePass *createInterproceduralBasicAliasAnalysisPass();
85 //===--------------------------------------------------------------------===//
87 /// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows
88 /// about the semantics of a set of libcalls specified by LCI. The newly
89 /// constructed pass takes ownership of the pointer that is provided.
91 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI);
93 //===--------------------------------------------------------------------===//
95 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple
96 // alias analysis using ScalarEvolution queries.
98 FunctionPass *createScalarEvolutionAliasAnalysisPass();
100 //===--------------------------------------------------------------------===//
102 // createProfileLoaderPass - This pass loads information from a profile dump
105 ModulePass *createProfileLoaderPass();
106 extern const PassInfo *ProfileLoaderPassID;
108 //===--------------------------------------------------------------------===//
110 // createNoProfileInfoPass - This pass implements the default "no profile".
112 ImmutablePass *createNoProfileInfoPass();
114 //===--------------------------------------------------------------------===//
116 // createProfileEstimatorPass - This pass estimates profiling information
117 // instead of loading it from a previous run.
119 FunctionPass *createProfileEstimatorPass();
120 extern const PassInfo *ProfileEstimatorPassID;
122 //===--------------------------------------------------------------------===//
124 // createProfileVerifierPass - This pass verifies profiling information.
126 FunctionPass *createProfileVerifierPass();
128 //===--------------------------------------------------------------------===//
130 // createDSAAPass - This pass implements simple context sensitive alias
133 ModulePass *createDSAAPass();
135 //===--------------------------------------------------------------------===//
137 // createDSOptPass - This pass uses DSA to do a series of simple
140 ModulePass *createDSOptPass();
142 //===--------------------------------------------------------------------===//
144 // createSteensgaardPass - This pass uses the data structure graphs to do a
145 // simple context insensitive alias analysis.
147 ModulePass *createSteensgaardPass();
149 //===--------------------------------------------------------------------===//
151 // createLiveValuesPass - This creates an instance of the LiveValues pass.
153 FunctionPass *createLiveValuesPass();
155 //===--------------------------------------------------------------------===//
157 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
159 FunctionPass *createLazyValueInfoPass();
161 //===--------------------------------------------------------------------===//
163 // createLoopDependenceAnalysisPass - This creates an instance of the
164 // LoopDependenceAnalysis pass.
166 LoopPass *createLoopDependenceAnalysisPass();
168 // Minor pass prototypes, allowing us to expose them through bugpoint and
170 FunctionPass *createInstCountPass();
172 // print debug info intrinsics in human readable form
173 FunctionPass *createDbgInfoPrinterPass();
175 // Print module-level debug info metadata in human-readable form.
176 ModulePass *createModuleDebugInfoPrinterPass();