Passes.h revision e7ddcfdebe357b4067f9c7d68d44616e11351a23
16498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm//===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===// 26498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// 36498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// The LLVM Compiler Infrastructure 46498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// 56498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// This file is distributed under the University of Illinois Open Source 66498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// License. See LICENSE.TXT for details. 76498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// 86498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm//===----------------------------------------------------------------------===// 96498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// 106498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// This header file defines prototypes for accessor functions that expose passes 116498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// in the analysis libraries. 126498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm// 136498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm//===----------------------------------------------------------------------===// 146498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm 156498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm#ifndef LLVM_ANALYSIS_PASSES_H 166498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm#define LLVM_ANALYSIS_PASSES_H 176498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm 186498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidmnamespace llvm { 196498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class FunctionPass; 206498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class ImmutablePass; 216498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class LoopPass; 226498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class ModulePass; 236498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class Pass; 246498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class PassInfo; 256498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm class LibCallInfo; 266498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm 276498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm //===--------------------------------------------------------------------===// 286498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // 296498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // createGlobalsModRefPass - This pass provides alias and mod/ref info for 306498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // global values that do not have their addresses taken. 316498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // 326498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm Pass *createGlobalsModRefPass(); 3307b01ad205162a93dab42722caaa4dbb7ba43b3fhp.com!davidm 346498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm //===--------------------------------------------------------------------===// 35468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // 36468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // createAliasDebugger - This pass helps debug clients of AA 37468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // 38468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm Pass *createAliasDebugger(); 39468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm 40468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm //===--------------------------------------------------------------------===// 41468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // 42468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // createAliasAnalysisCounterPass - This pass counts alias queries and how the 43468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // alias analysis implementation responds. 44468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // 45468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm ModulePass *createAliasAnalysisCounterPass(); 46468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm 47468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm //===--------------------------------------------------------------------===// 48468aaccf17a145c7275b469ddc2617c644619c21hp.com!davidm // 49fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm // createAAEvalPass - This pass implements a simple N^2 alias analysis 506498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // accuracy evaluator. 516498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // 52fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm FunctionPass *createAAEvalPass(); 5379d012348df333f191fcb10789dad12b655f2baaKonstantin Belousov 540dbeeeb08dc9a7e46281954e9225a84d4629a3dbKonstantin Belousov //===--------------------------------------------------------------------===// 556498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // 566498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // createNoAAPass - This pass implements a "I don't know" alias analysis. 576498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // 586498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm ImmutablePass *createNoAAPass(); 59fcd8dad37efa05fd6090a68fe24b66a0ca7856eehp.com!davidm 6079d012348df333f191fcb10789dad12b655f2baaKonstantin Belousov //===--------------------------------------------------------------------===// 610dbeeeb08dc9a7e46281954e9225a84d4629a3dbKonstantin Belousov // 626498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // createBasicAliasAnalysisPass - This pass implements the default alias 636498cdf4d9877f4c78f8b4429e2abf70d17a550dhp.com!davidm // 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 // createAndersensPass - This pass implements Andersen's interprocedural alias 85 // analysis. 86 // 87 ModulePass *createAndersensPass(); 88 89 //===--------------------------------------------------------------------===// 90 // 91 // createProfileLoaderPass - This pass loads information from a profile dump 92 // file. 93 // 94 ModulePass *createProfileLoaderPass(); 95 96 //===--------------------------------------------------------------------===// 97 // 98 // createNoProfileInfoPass - This pass implements the default "no profile". 99 // 100 ImmutablePass *createNoProfileInfoPass(); 101 102 //===--------------------------------------------------------------------===// 103 // 104 // createProfileEstimatorPass - This pass estimates profiling information 105 // instead of loading it from a previous run. 106 // 107 FunctionPass *createProfileEstimatorPass(); 108 extern const PassInfo *ProfileEstimatorPassID; 109 110 //===--------------------------------------------------------------------===// 111 // 112 // createProfileVerifierPass - This pass verifies profiling information. 113 // 114 FunctionPass *createProfileVerifierPass(); 115 116 //===--------------------------------------------------------------------===// 117 // 118 // createDSAAPass - This pass implements simple context sensitive alias 119 // analysis. 120 // 121 ModulePass *createDSAAPass(); 122 123 //===--------------------------------------------------------------------===// 124 // 125 // createDSOptPass - This pass uses DSA to do a series of simple 126 // optimizations. 127 // 128 ModulePass *createDSOptPass(); 129 130 //===--------------------------------------------------------------------===// 131 // 132 // createSteensgaardPass - This pass uses the data structure graphs to do a 133 // simple context insensitive alias analysis. 134 // 135 ModulePass *createSteensgaardPass(); 136 137 //===--------------------------------------------------------------------===// 138 // 139 // createLiveValuesPass - This creates an instance of the LiveValues pass. 140 // 141 FunctionPass *createLiveValuesPass(); 142 143 //===--------------------------------------------------------------------===// 144 // 145 // createLoopDependenceAnalysisPass - This creates an instance of the 146 // LoopDependenceAnalysis pass. 147 // 148 LoopPass *createLoopDependenceAnalysisPass(); 149 150 // Minor pass prototypes, allowing us to expose them through bugpoint and 151 // analyze. 152 FunctionPass *createInstCountPass(); 153 154 // print debug info intrinsics in human readable form 155 FunctionPass *createDbgInfoPrinterPass(); 156} 157 158#endif 159