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 // createAAEvalPass - This pass implements a simple N^2 alias analysis
37 // accuracy evaluator.
39 FunctionPass *createAAEvalPass();
41 //===--------------------------------------------------------------------===//
43 // createNoAAPass - This pass implements a "I don't know" alias analysis.
45 ImmutablePass *createNoAAPass();
47 //===--------------------------------------------------------------------===//
49 // createCFLAliasAnalysisPass - This pass implements a set-based approach to
52 ImmutablePass *createCFLAliasAnalysisPass();
54 //===--------------------------------------------------------------------===//
56 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple
57 // alias analysis using ScalarEvolution queries.
59 FunctionPass *createScalarEvolutionAliasAnalysisPass();
61 //===--------------------------------------------------------------------===//
63 // createTypeBasedAliasAnalysisPass - This pass implements metadata-based
64 // type-based alias analysis.
66 ImmutablePass *createTypeBasedAliasAnalysisPass();
68 //===--------------------------------------------------------------------===//
70 // createScopedNoAliasAAPass - This pass implements metadata-based
71 // scoped noalias analysis.
73 ImmutablePass *createScopedNoAliasAAPass();
75 //===--------------------------------------------------------------------===//
77 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based
80 ImmutablePass *createObjCARCAliasAnalysisPass();
82 FunctionPass *createPAEvalPass();
84 //===--------------------------------------------------------------------===//
86 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
88 FunctionPass *createLazyValueInfoPass();
90 //===--------------------------------------------------------------------===//
92 // createDependenceAnalysisPass - This creates an instance of the
93 // DependenceAnalysis pass.
95 FunctionPass *createDependenceAnalysisPass();
97 //===--------------------------------------------------------------------===//
99 // createCostModelAnalysisPass - This creates an instance of the
100 // CostModelAnalysis pass.
102 FunctionPass *createCostModelAnalysisPass();
104 //===--------------------------------------------------------------------===//
106 // createDelinearizationPass - This pass implements attempts to restore
107 // multidimensional array indices from linearized expressions.
109 FunctionPass *createDelinearizationPass();
111 //===--------------------------------------------------------------------===//
113 // createDivergenceAnalysisPass - This pass determines which branches in a GPU
114 // program are divergent.
116 FunctionPass *createDivergenceAnalysisPass();
118 //===--------------------------------------------------------------------===//
120 // Minor pass prototypes, allowing us to expose them through bugpoint and
122 FunctionPass *createInstCountPass();
124 //===--------------------------------------------------------------------===//
126 // createRegionInfoPass - This pass finds all single entry single exit regions
127 // in a function and builds the region hierarchy.
129 FunctionPass *createRegionInfoPass();
131 // Print module-level debug info metadata in human-readable form.
132 ModulePass *createModuleDebugInfoPrinterPass();
134 //===--------------------------------------------------------------------===//
136 // createMemDepPrinter - This pass exhaustively collects all memdep
137 // information and prints it with -analyze.
139 FunctionPass *createMemDepPrinter();
141 //===--------------------------------------------------------------------===//
143 // createMemDerefPrinter - This pass collects memory dereferenceability
144 // information and prints it with -analyze.
146 FunctionPass *createMemDerefPrinter();