Passes.h revision 43b8fd728b889f15ea4c65ca957a7420ce2905cd
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 // createInterproceduralAAEvalPass - This pass implements a simple 57 // N^2 interprocedural alias analysis accuracy evaluator. 58 // 59 Pass *createInterproceduralAAEvalPass(); 60 61 //===--------------------------------------------------------------------===// 62 // 63 // createNoAAPass - This pass implements a "I don't know" alias analysis. 64 // 65 ImmutablePass *createNoAAPass(); 66 67 //===--------------------------------------------------------------------===// 68 // 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). 73 // 74 ImmutablePass *createBasicAliasAnalysisPass(); 75 76 //===--------------------------------------------------------------------===// 77 // 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. 82 // 83 ImmutablePass *createInterproceduralBasicAliasAnalysisPass(); 84 85 //===--------------------------------------------------------------------===// 86 // 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. 90 /// 91 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI); 92 93 //===--------------------------------------------------------------------===// 94 // 95 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple 96 // alias analysis using ScalarEvolution queries. 97 // 98 FunctionPass *createScalarEvolutionAliasAnalysisPass(); 99 100 //===--------------------------------------------------------------------===// 101 // 102 // createProfileLoaderPass - This pass loads information from a profile dump 103 // file. 104 // 105 ModulePass *createProfileLoaderPass(); 106 extern const PassInfo *ProfileLoaderPassID; 107 108 //===--------------------------------------------------------------------===// 109 // 110 // createNoProfileInfoPass - This pass implements the default "no profile". 111 // 112 ImmutablePass *createNoProfileInfoPass(); 113 114 //===--------------------------------------------------------------------===// 115 // 116 // createProfileEstimatorPass - This pass estimates profiling information 117 // instead of loading it from a previous run. 118 // 119 FunctionPass *createProfileEstimatorPass(); 120 extern const PassInfo *ProfileEstimatorPassID; 121 122 //===--------------------------------------------------------------------===// 123 // 124 // createProfileVerifierPass - This pass verifies profiling information. 125 // 126 FunctionPass *createProfileVerifierPass(); 127 128 //===--------------------------------------------------------------------===// 129 // 130 // createDSAAPass - This pass implements simple context sensitive alias 131 // analysis. 132 // 133 ModulePass *createDSAAPass(); 134 135 //===--------------------------------------------------------------------===// 136 // 137 // createDSOptPass - This pass uses DSA to do a series of simple 138 // optimizations. 139 // 140 ModulePass *createDSOptPass(); 141 142 //===--------------------------------------------------------------------===// 143 // 144 // createSteensgaardPass - This pass uses the data structure graphs to do a 145 // simple context insensitive alias analysis. 146 // 147 ModulePass *createSteensgaardPass(); 148 149 //===--------------------------------------------------------------------===// 150 // 151 // createLiveValuesPass - This creates an instance of the LiveValues pass. 152 // 153 FunctionPass *createLiveValuesPass(); 154 155 //===--------------------------------------------------------------------===// 156 // 157 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo 158 /// pass. 159 FunctionPass *createLazyValueInfoPass(); 160 161 //===--------------------------------------------------------------------===// 162 // 163 // createLoopDependenceAnalysisPass - This creates an instance of the 164 // LoopDependenceAnalysis pass. 165 // 166 LoopPass *createLoopDependenceAnalysisPass(); 167 168 // Minor pass prototypes, allowing us to expose them through bugpoint and 169 // analyze. 170 FunctionPass *createInstCountPass(); 171 172 // print debug info intrinsics in human readable form 173 FunctionPass *createDbgInfoPrinterPass(); 174 175 // Print module-level debug info metadata in human-readable form. 176 ModulePass *createModuleDebugInfoPrinterPass(); 177} 178 179#endif 180