Passes.h revision 423de3f0478fd8e4f8aa650d8cf9f64d08963118
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 // createNoAAPass - This pass implements a "I don't know" alias analysis. 57 // 58 ImmutablePass *createNoAAPass(); 59 60 //===--------------------------------------------------------------------===// 61 // 62 // createBasicAliasAnalysisPass - This pass implements the stateless alias 63 // analysis. 64 // 65 ImmutablePass *createBasicAliasAnalysisPass(); 66 67 //===--------------------------------------------------------------------===// 68 // 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. 72 /// 73 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI); 74 75 //===--------------------------------------------------------------------===// 76 // 77 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple 78 // alias analysis using ScalarEvolution queries. 79 // 80 FunctionPass *createScalarEvolutionAliasAnalysisPass(); 81 82 //===--------------------------------------------------------------------===// 83 // 84 // createTypeBasedAliasAnalysisPass - This pass implements metadata-based 85 // type-based alias analysis. 86 // 87 ImmutablePass *createTypeBasedAliasAnalysisPass(); 88 89 //===--------------------------------------------------------------------===// 90 // 91 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based 92 // alias analysis. 93 // 94 ImmutablePass *createObjCARCAliasAnalysisPass(); 95 96 //===--------------------------------------------------------------------===// 97 // 98 // createProfileLoaderPass - This pass loads information from a profile dump 99 // file. 100 // 101 ModulePass *createProfileLoaderPass(); 102 extern char &ProfileLoaderPassID; 103 104 //===--------------------------------------------------------------------===// 105 // 106 // createProfileMetadataLoaderPass - This pass loads information from a 107 // profile dump file and sets branch weight metadata. 108 // 109 ModulePass *createProfileMetadataLoaderPass(); 110 extern char &ProfileMetadataLoaderPassID; 111 112 //===--------------------------------------------------------------------===// 113 // 114 // createNoProfileInfoPass - This pass implements the default "no profile". 115 // 116 ImmutablePass *createNoProfileInfoPass(); 117 118 //===--------------------------------------------------------------------===// 119 // 120 // createProfileEstimatorPass - This pass estimates profiling information 121 // instead of loading it from a previous run. 122 // 123 FunctionPass *createProfileEstimatorPass(); 124 extern char &ProfileEstimatorPassID; 125 126 //===--------------------------------------------------------------------===// 127 // 128 // createProfileVerifierPass - This pass verifies profiling information. 129 // 130 FunctionPass *createProfileVerifierPass(); 131 132 //===--------------------------------------------------------------------===// 133 // 134 // createPathProfileLoaderPass - This pass loads information from a path 135 // profile dump file. 136 // 137 ModulePass *createPathProfileLoaderPass(); 138 extern char &PathProfileLoaderPassID; 139 140 //===--------------------------------------------------------------------===// 141 // 142 // createNoPathProfileInfoPass - This pass implements the default 143 // "no path profile". 144 // 145 ImmutablePass *createNoPathProfileInfoPass(); 146 147 //===--------------------------------------------------------------------===// 148 // 149 // createPathProfileVerifierPass - This pass verifies path profiling 150 // information. 151 // 152 ModulePass *createPathProfileVerifierPass(); 153 154 //===--------------------------------------------------------------------===// 155 // 156 // createDSAAPass - This pass implements simple context sensitive alias 157 // analysis. 158 // 159 ModulePass *createDSAAPass(); 160 161 //===--------------------------------------------------------------------===// 162 // 163 // createDSOptPass - This pass uses DSA to do a series of simple 164 // optimizations. 165 // 166 ModulePass *createDSOptPass(); 167 168 //===--------------------------------------------------------------------===// 169 // 170 // createSteensgaardPass - This pass uses the data structure graphs to do a 171 // simple context insensitive alias analysis. 172 // 173 ModulePass *createSteensgaardPass(); 174 175 //===--------------------------------------------------------------------===// 176 // 177 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo 178 /// pass. 179 FunctionPass *createLazyValueInfoPass(); 180 181 //===--------------------------------------------------------------------===// 182 // 183 // createDependenceAnalysisPass - This creates an instance of the 184 // DependenceAnalysis pass. 185 // 186 FunctionPass *createDependenceAnalysisPass(); 187 188 //===--------------------------------------------------------------------===// 189 // 190 // createCostModelAnalysisPass - This creates an instance of the 191 // CostModelAnalysis pass. 192 // 193 FunctionPass *createCostModelAnalysisPass(); 194 195 //===--------------------------------------------------------------------===// 196 // 197 // Minor pass prototypes, allowing us to expose them through bugpoint and 198 // analyze. 199 FunctionPass *createInstCountPass(); 200 201 //===--------------------------------------------------------------------===// 202 // 203 // createRegionInfoPass - This pass finds all single entry single exit regions 204 // in a function and builds the region hierarchy. 205 // 206 FunctionPass *createRegionInfoPass(); 207 208 // Print module-level debug info metadata in human-readable form. 209 ModulePass *createModuleDebugInfoPrinterPass(); 210 211 //===--------------------------------------------------------------------===// 212 // 213 // createMemDepPrinter - This pass exhaustively collects all memdep 214 // information and prints it with -analyze. 215 // 216 FunctionPass *createMemDepPrinter(); 217} 218 219#endif 220