A shim over other AA impls to catch incorrect uses
[oota-llvm.git] / include / llvm / Analysis / Passes.h
1 //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source 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
18 namespace llvm {
19   class FunctionPass;
20   class ImmutablePass;
21   class ModulePass;
22   class Pass;
23
24   //===--------------------------------------------------------------------===//
25   //
26   // createGlobalsModRefPass - This pass provides alias and mod/ref info for
27   // global values that do not have their addresses taken.
28   //
29   Pass *createGlobalsModRefPass();
30
31   //===--------------------------------------------------------------------===//
32   //
33   // createAliasDebugger - This pass helps debug clients of AA
34   //
35   Pass *createAliasDebugger();
36
37   //===--------------------------------------------------------------------===//
38   //
39   // createAliasAnalysisCounterPass - This pass counts alias queries and how the
40   // alias analysis implementation responds.
41   //
42   ModulePass *createAliasAnalysisCounterPass();
43
44   //===--------------------------------------------------------------------===//
45   //
46   // createAAEvalPass - This pass implements a simple N^2 alias analysis
47   // accuracy evaluator.
48   //
49   FunctionPass *createAAEvalPass();
50
51   //===--------------------------------------------------------------------===//
52   //
53   // createNoAAPass - This pass implements a "I don't know" alias analysis.
54   //
55   ImmutablePass *createNoAAPass();
56
57   //===--------------------------------------------------------------------===//
58   //
59   // createBasicAliasAnalysisPass - This pass implements the default alias
60   // analysis.
61   //
62   ImmutablePass *createBasicAliasAnalysisPass();
63
64   //===--------------------------------------------------------------------===//
65   //
66   // createAndersensPass - This pass implements Andersen's interprocedural alias
67   // analysis.
68   //
69   ModulePass *createAndersensPass();
70
71   //===--------------------------------------------------------------------===//
72   //
73   // createBasicVNPass - This pass walks SSA def-use chains to trivially
74   // identify lexically identical expressions.
75   //
76   ImmutablePass *createBasicVNPass();
77
78   //===--------------------------------------------------------------------===//
79   //
80   // createProfileLoaderPass - This pass loads information from a profile dump
81   // file.
82   //
83   ModulePass *createProfileLoaderPass();
84
85   //===--------------------------------------------------------------------===//
86   //
87   // createNoProfileInfoPass - This pass implements the default "no profile".
88   //
89   ImmutablePass *createNoProfileInfoPass();
90
91   //===--------------------------------------------------------------------===//
92   //
93   // createDSAAPass - This pass implements simple context sensitive alias
94   // analysis.
95   //
96   ModulePass *createDSAAPass();
97
98   //===--------------------------------------------------------------------===//
99   //
100   // createDSOptPass - This pass uses DSA to do a series of simple
101   // optimizations.
102   //
103   ModulePass *createDSOptPass();
104
105   //===--------------------------------------------------------------------===//
106   //
107   // createSteensgaardPass - This pass uses the data structure graphs to do a
108   // simple context insensitive alias analysis.
109   //
110   ModulePass *createSteensgaardPass();
111   
112   // Minor pass prototypes, allowing us to expose them through bugpoint and
113   // analyze.
114   FunctionPass *createInstCountPass();
115 }
116
117 #endif