LLVM API Documentation

Analysis/Passes.h
Go to the documentation of this file.
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