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 default alias
65
ImmutablePass *createBasicAliasAnalysisPass();
67
//===--------------------------------------------------------------------===//
69
/// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows
70
/// about the semantics of a set of libcalls specified by LCI. The newly
71
/// constructed pass takes ownership of the pointer that is provided.
73
FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI);
75
//===--------------------------------------------------------------------===//
77
// createScalarEvolutionAliasAnalysisPass - This pass implements a simple
78
// alias analysis using ScalarEvolution queries.
80
FunctionPass *createScalarEvolutionAliasAnalysisPass();
82
//===--------------------------------------------------------------------===//
84
// createProfileLoaderPass - This pass loads information from a profile dump
87
ModulePass *createProfileLoaderPass();
88
extern const PassInfo *ProfileLoaderPassID;
90
//===--------------------------------------------------------------------===//
92
// createNoProfileInfoPass - This pass implements the default "no profile".
94
ImmutablePass *createNoProfileInfoPass();
96
//===--------------------------------------------------------------------===//
98
// createProfileEstimatorPass - This pass estimates profiling information
99
// instead of loading it from a previous run.
101
FunctionPass *createProfileEstimatorPass();
102
extern const PassInfo *ProfileEstimatorPassID;
104
//===--------------------------------------------------------------------===//
106
// createProfileVerifierPass - This pass verifies profiling information.
108
FunctionPass *createProfileVerifierPass();
110
//===--------------------------------------------------------------------===//
112
// createDSAAPass - This pass implements simple context sensitive alias
115
ModulePass *createDSAAPass();
117
//===--------------------------------------------------------------------===//
119
// createDSOptPass - This pass uses DSA to do a series of simple
122
ModulePass *createDSOptPass();
124
//===--------------------------------------------------------------------===//
126
// createSteensgaardPass - This pass uses the data structure graphs to do a
127
// simple context insensitive alias analysis.
129
ModulePass *createSteensgaardPass();
131
//===--------------------------------------------------------------------===//
133
// createLiveValuesPass - This creates an instance of the LiveValues pass.
135
FunctionPass *createLiveValuesPass();
137
//===--------------------------------------------------------------------===//
139
/// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
141
FunctionPass *createLazyValueInfoPass();
143
//===--------------------------------------------------------------------===//
145
// createLoopDependenceAnalysisPass - This creates an instance of the
146
// LoopDependenceAnalysis pass.
148
LoopPass *createLoopDependenceAnalysisPass();
150
// Minor pass prototypes, allowing us to expose them through bugpoint and
152
FunctionPass *createInstCountPass();
154
// print debug info intrinsics in human readable form
155
FunctionPass *createDbgInfoPrinterPass();