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 18 namespace 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 // createCFLAliasAnalysisPass - This pass implements a set-based approach to 70 // alias analysis. 71 // 72 ImmutablePass *createCFLAliasAnalysisPass(); 73 74 //===--------------------------------------------------------------------===// 75 // 76 /// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows 77 /// about the semantics of a set of libcalls specified by LCI. The newly 78 /// constructed pass takes ownership of the pointer that is provided. 79 /// 80 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI); 81 82 //===--------------------------------------------------------------------===// 83 // 84 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple 85 // alias analysis using ScalarEvolution queries. 86 // 87 FunctionPass *createScalarEvolutionAliasAnalysisPass(); 88 89 //===--------------------------------------------------------------------===// 90 // 91 // createTypeBasedAliasAnalysisPass - This pass implements metadata-based 92 // type-based alias analysis. 93 // 94 ImmutablePass *createTypeBasedAliasAnalysisPass(); 95 96 //===--------------------------------------------------------------------===// 97 // 98 // createScopedNoAliasAAPass - This pass implements metadata-based 99 // scoped noalias analysis. 100 // 101 ImmutablePass *createScopedNoAliasAAPass(); 102 103 //===--------------------------------------------------------------------===// 104 // 105 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based 106 // alias analysis. 107 // 108 ImmutablePass *createObjCARCAliasAnalysisPass(); 109 110 FunctionPass *createPAEvalPass(); 111 112 //===--------------------------------------------------------------------===// 113 // 114 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo 115 /// pass. 116 FunctionPass *createLazyValueInfoPass(); 117 118 //===--------------------------------------------------------------------===// 119 // 120 // createDependenceAnalysisPass - This creates an instance of the 121 // DependenceAnalysis pass. 122 // 123 FunctionPass *createDependenceAnalysisPass(); 124 125 //===--------------------------------------------------------------------===// 126 // 127 // createCostModelAnalysisPass - This creates an instance of the 128 // CostModelAnalysis pass. 129 // 130 FunctionPass *createCostModelAnalysisPass(); 131 132 //===--------------------------------------------------------------------===// 133 // 134 // createDelinearizationPass - This pass implements attempts to restore 135 // multidimensional array indices from linearized expressions. 136 // 137 FunctionPass *createDelinearizationPass(); 138 139 //===--------------------------------------------------------------------===// 140 // 141 // createDivergenceAnalysisPass - This pass determines which branches in a GPU 142 // program are divergent. 143 // 144 FunctionPass *createDivergenceAnalysisPass(); 145 146 //===--------------------------------------------------------------------===// 147 // 148 // Minor pass prototypes, allowing us to expose them through bugpoint and 149 // analyze. 150 FunctionPass *createInstCountPass(); 151 152 //===--------------------------------------------------------------------===// 153 // 154 // createRegionInfoPass - This pass finds all single entry single exit regions 155 // in a function and builds the region hierarchy. 156 // 157 FunctionPass *createRegionInfoPass(); 158 159 // Print module-level debug info metadata in human-readable form. 160 ModulePass *createModuleDebugInfoPrinterPass(); 161 162 //===--------------------------------------------------------------------===// 163 // 164 // createMemDepPrinter - This pass exhaustively collects all memdep 165 // information and prints it with -analyze. 166 // 167 FunctionPass *createMemDepPrinter(); 168 169 //===--------------------------------------------------------------------===// 170 // 171 // createMemDerefPrinter - This pass collects memory dereferenceability 172 // information and prints it with -analyze. 173 // 174 FunctionPass *createMemDerefPrinter(); 175 176 } 177 178 #endif 179