Passes.h revision 55e354ac0e294bde258420f80a2cc11ea19db482
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 default 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 // createAndersensPass - This pass implements Andersen's interprocedural alias 78 // analysis. 79 // 80 ModulePass *createAndersensPass(); 81 82 //===--------------------------------------------------------------------===// 83 // 84 // createProfileLoaderPass - This pass loads information from a profile dump 85 // file. 86 // 87 ModulePass *createProfileLoaderPass(); 88 89 //===--------------------------------------------------------------------===// 90 // 91 // createNoProfileInfoPass - This pass implements the default "no profile". 92 // 93 ImmutablePass *createNoProfileInfoPass(); 94 95 //===--------------------------------------------------------------------===// 96 // 97 // createProfileEstimatorPass - This pass estimates profiling information 98 // instead of loading it from a previous run. 99 // 100 FunctionPass *createProfileEstimatorPass(); 101 extern const PassInfo *ProfileEstimatorPassID; 102 103 //===--------------------------------------------------------------------===// 104 // 105 // createDSAAPass - This pass implements simple context sensitive alias 106 // analysis. 107 // 108 ModulePass *createDSAAPass(); 109 110 //===--------------------------------------------------------------------===// 111 // 112 // createDSOptPass - This pass uses DSA to do a series of simple 113 // optimizations. 114 // 115 ModulePass *createDSOptPass(); 116 117 //===--------------------------------------------------------------------===// 118 // 119 // createSteensgaardPass - This pass uses the data structure graphs to do a 120 // simple context insensitive alias analysis. 121 // 122 ModulePass *createSteensgaardPass(); 123 124 //===--------------------------------------------------------------------===// 125 // 126 // createLiveValuesPass - This creates an instance of the LiveValues pass. 127 // 128 FunctionPass *createLiveValuesPass(); 129 130 //===--------------------------------------------------------------------===// 131 // 132 // createLoopDependenceAnalysisPass - This creates an instance of the 133 // LoopDependenceAnalysis pass. 134 // 135 LoopPass *createLoopDependenceAnalysisPass(); 136 137 // Minor pass prototypes, allowing us to expose them through bugpoint and 138 // analyze. 139 FunctionPass *createInstCountPass(); 140 141 // print debug info intrinsics in human readable form 142 FunctionPass *createDbgInfoPrinterPass(); 143} 144 145#endif 146