LLVM API Documentation
00001 //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This header file defines prototypes for accessor functions that expose passes 00011 // in the analysis libraries. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef LLVM_ANALYSIS_PASSES_H 00016 #define LLVM_ANALYSIS_PASSES_H 00017 00018 namespace llvm { 00019 class FunctionPass; 00020 class ImmutablePass; 00021 class LoopPass; 00022 class ModulePass; 00023 class Pass; 00024 class PassInfo; 00025 class LibCallInfo; 00026 00027 //===--------------------------------------------------------------------===// 00028 // 00029 // createGlobalsModRefPass - This pass provides alias and mod/ref info for 00030 // global values that do not have their addresses taken. 00031 // 00032 Pass *createGlobalsModRefPass(); 00033 00034 //===--------------------------------------------------------------------===// 00035 // 00036 // createAliasDebugger - This pass helps debug clients of AA 00037 // 00038 Pass *createAliasDebugger(); 00039 00040 //===--------------------------------------------------------------------===// 00041 // 00042 // createAliasAnalysisCounterPass - This pass counts alias queries and how the 00043 // alias analysis implementation responds. 00044 // 00045 ModulePass *createAliasAnalysisCounterPass(); 00046 00047 //===--------------------------------------------------------------------===// 00048 // 00049 // createAAEvalPass - This pass implements a simple N^2 alias analysis 00050 // accuracy evaluator. 00051 // 00052 FunctionPass *createAAEvalPass(); 00053 00054 //===--------------------------------------------------------------------===// 00055 // 00056 // createNoAAPass - This pass implements a "I don't know" alias analysis. 00057 // 00058 ImmutablePass *createNoAAPass(); 00059 00060 //===--------------------------------------------------------------------===// 00061 // 00062 // createBasicAliasAnalysisPass - This pass implements the stateless alias 00063 // analysis. 00064 // 00065 ImmutablePass *createBasicAliasAnalysisPass(); 00066 00067 //===--------------------------------------------------------------------===// 00068 // 00069 // createCFLAliasAnalysisPass - This pass implements a set-based approach to 00070 // alias analysis. 00071 // 00072 ImmutablePass *createCFLAliasAnalysisPass(); 00073 00074 //===--------------------------------------------------------------------===// 00075 // 00076 /// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows 00077 /// about the semantics of a set of libcalls specified by LCI. The newly 00078 /// constructed pass takes ownership of the pointer that is provided. 00079 /// 00080 FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI); 00081 00082 //===--------------------------------------------------------------------===// 00083 // 00084 // createScalarEvolutionAliasAnalysisPass - This pass implements a simple 00085 // alias analysis using ScalarEvolution queries. 00086 // 00087 FunctionPass *createScalarEvolutionAliasAnalysisPass(); 00088 00089 //===--------------------------------------------------------------------===// 00090 // 00091 // createTypeBasedAliasAnalysisPass - This pass implements metadata-based 00092 // type-based alias analysis. 00093 // 00094 ImmutablePass *createTypeBasedAliasAnalysisPass(); 00095 00096 //===--------------------------------------------------------------------===// 00097 // 00098 // createScopedNoAliasAAPass - This pass implements metadata-based 00099 // scoped noalias analysis. 00100 // 00101 ImmutablePass *createScopedNoAliasAAPass(); 00102 00103 //===--------------------------------------------------------------------===// 00104 // 00105 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based 00106 // alias analysis. 00107 // 00108 ImmutablePass *createObjCARCAliasAnalysisPass(); 00109 00110 //===--------------------------------------------------------------------===// 00111 // 00112 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo 00113 /// pass. 00114 FunctionPass *createLazyValueInfoPass(); 00115 00116 //===--------------------------------------------------------------------===// 00117 // 00118 // createDependenceAnalysisPass - This creates an instance of the 00119 // DependenceAnalysis pass. 00120 // 00121 FunctionPass *createDependenceAnalysisPass(); 00122 00123 //===--------------------------------------------------------------------===// 00124 // 00125 // createCostModelAnalysisPass - This creates an instance of the 00126 // CostModelAnalysis pass. 00127 // 00128 FunctionPass *createCostModelAnalysisPass(); 00129 00130 //===--------------------------------------------------------------------===// 00131 // 00132 // createDelinearizationPass - This pass implements attempts to restore 00133 // multidimensional array indices from linearized expressions. 00134 // 00135 FunctionPass *createDelinearizationPass(); 00136 00137 //===--------------------------------------------------------------------===// 00138 // 00139 // Minor pass prototypes, allowing us to expose them through bugpoint and 00140 // analyze. 00141 FunctionPass *createInstCountPass(); 00142 00143 //===--------------------------------------------------------------------===// 00144 // 00145 // createRegionInfoPass - This pass finds all single entry single exit regions 00146 // in a function and builds the region hierarchy. 00147 // 00148 FunctionPass *createRegionInfoPass(); 00149 00150 // Print module-level debug info metadata in human-readable form. 00151 ModulePass *createModuleDebugInfoPrinterPass(); 00152 00153 //===--------------------------------------------------------------------===// 00154 // 00155 // createMemDepPrinter - This pass exhaustively collects all memdep 00156 // information and prints it with -analyze. 00157 // 00158 FunctionPass *createMemDepPrinter(); 00159 00160 // createJumpInstrTableInfoPass - This creates a pass that stores information 00161 // about the jump tables created by JumpInstrTables 00162 ImmutablePass *createJumpInstrTableInfoPass(); 00163 } 00164 00165 #endif