LLVM- PassManagers.h Source File

download LLVM- PassManagers.h Source File

of 8

Transcript of LLVM- PassManagers.h Source File

  • 7/31/2019 LLVM- PassManagers.h Source File

    1/8

    LLVM API Documentation

    Main PageRelated PagesModulesNamespaces

    ClassesFilesDirectories

    File ListFile Members

    llvmincludellvm

    PassManagers.hGo to the documentation of this file.

    00001 //===- llvm/PassManagers.h - Pass Infrastructure classes -------*- C++ -*-===//00002 //00003 // The LLVM Compiler Infrastructure00004 //00005 // This file is distributed under the University of Illinois Open Source00006 // License. See LICENSE.TXT for details.00007 //00008 //===----------------------------------------------------------------------===//00009 //

    00010 // This file declares the LLVM Pass Manager infrastructure.00011 //00012//===----------------------------------------------------------------------===//0001300014#ifndef LLVM_PASSMANAGERS_H00015#define LLVM_PASSMANAGERS_H0001600017 #include "llvm/Pass.h"00018#include "llvm/ADT/SmallVector.h"00019#include "llvm/ADT/SmallPtrSet.h"00020#include "llvm/ADT/DenseMap.h"00021#include

    00022#include 0002300024 //===----------------------------------------------------------------------===//00025 // Overview:00026 // The Pass Manager Infrastructure manages passes. It's responsibilities are:00027 //00028 // o Manage optimization pass execution order00029 // o Make required Analysis information available before pass P is run00030 // o Release memory occupied by dead passes00031 // o If Analysis information is dirtied by a pass then regenerate Analysis00032 // information before it is consumed by another pass.00033 //00034 // Pass Manager Infrastructure uses multiple pass managers. They are

    00035 // PassManager, FunctionPassManager, MPPassManager, FPPassManager, BBPassManager.00036 // This class hierarchy uses multiple inheritance but pass managers do not00037 // derive from another pass manager.00038 //00039 // PassManager and FunctionPassManager are two top-level pass manager that

    http://llvm.org/docs/doxygen/html/PassManagers_8h.htmlhttp://llvm.org/docs/doxygen/html/PassManagers_8h.htmlhttp://llvm.org/docs/doxygen/html/dir_cc2418bccd66ef43a1fdf2736df9d09a.htmlhttp://llvm.org/docs/doxygen/html/dir_cc2418bccd66ef43a1fdf2736df9d09a.htmlhttp://llvm.org/docs/doxygen/html/dir_5bf21b90cec5b2e9e14f4ca7a1f51fb1.htmlhttp://llvm.org/docs/doxygen/html/dir_1eb51b4dd4e6c6daf23994c0c8fbe56a.htmlhttp://llvm.org/docs/doxygen/html/dir_1eb51b4dd4e6c6daf23994c0c8fbe56a.htmlhttp://llvm.org/docs/doxygen/html/globals.htmlhttp://llvm.org/docs/doxygen/html/globals.htmlhttp://llvm.org/docs/doxygen/html/files.htmlhttp://llvm.org/docs/doxygen/html/dirs.htmlhttp://llvm.org/docs/doxygen/html/dirs.htmlhttp://llvm.org/docs/doxygen/html/files.htmlhttp://llvm.org/docs/doxygen/html/files.htmlhttp://llvm.org/docs/doxygen/html/annotated.htmlhttp://llvm.org/docs/doxygen/html/annotated.htmlhttp://llvm.org/docs/doxygen/html/modules.htmlhttp://llvm.org/docs/doxygen/html/modules.htmlhttp://llvm.org/docs/doxygen/html/pages.htmlhttp://llvm.org/docs/doxygen/html/pages.htmlhttp://llvm.org/docs/doxygen/html/index.htmlhttp://llvm.org/docs/doxygen/html/DenseMap_8h.htmlhttp://llvm.org/docs/doxygen/html/SmallPtrSet_8h.htmlhttp://llvm.org/docs/doxygen/html/SmallVector_8h.htmlhttp://llvm.org/docs/doxygen/html/Pass_8h.htmlhttp://llvm.org/docs/doxygen/html/PassManagers_8h.htmlhttp://llvm.org/docs/doxygen/html/dir_cc2418bccd66ef43a1fdf2736df9d09a.htmlhttp://llvm.org/docs/doxygen/html/dir_5bf21b90cec5b2e9e14f4ca7a1f51fb1.htmlhttp://llvm.org/docs/doxygen/html/dir_1eb51b4dd4e6c6daf23994c0c8fbe56a.htmlhttp://llvm.org/docs/doxygen/html/globals.htmlhttp://llvm.org/docs/doxygen/html/files.htmlhttp://llvm.org/docs/doxygen/html/dirs.htmlhttp://llvm.org/docs/doxygen/html/files.htmlhttp://llvm.org/docs/doxygen/html/annotated.htmlhttp://llvm.org/docs/doxygen/html/namespaces.htmlhttp://llvm.org/docs/doxygen/html/modules.htmlhttp://llvm.org/docs/doxygen/html/pages.htmlhttp://llvm.org/docs/doxygen/html/index.html
  • 7/31/2019 LLVM- PassManagers.h Source File

    2/8

    00040 // represents the external interface of this entire pass manager infrastucture.00041 //00042 // Important classes :00043 //00044 // [o] class PMTopLevelManager;00045 //00046 // Two top level managers, PassManager and FunctionPassManager, derive from00047 // PMTopLevelManager. PMTopLevelManager manages information used by top level00048 // managers such as last user info.00049 //00050 // [o] class PMDataManager;00051 //00052 // PMDataManager manages information, e.g. list of available analysis info,00053 // used by a pass manager to manage execution order of passes. It also provides00054 // a place to implement common pass manager APIs. All pass managers derive from00055 // PMDataManager.00056 //00057 // [o] class BBPassManager : public FunctionPass, public PMDataManager;00058 //00059 // BBPassManager manages BasicBlockPasses.00060 //00061 // [o] class FunctionPassManager;00062 //

    00063 // This is a external interface used by JIT to manage FunctionPasses. This00064 // interface relies on FunctionPassManagerImpl to do all the tasks.00065 //00066 // [o] class FunctionPassManagerImpl : public ModulePass, PMDataManager,00067 // public PMTopLevelManager;00068 //00069 // FunctionPassManagerImpl is a top level manager. It manages FPPassManagers00070 //00071 // [o] class FPPassManager : public ModulePass, public PMDataManager;00072 //00073 // FPPassManager manages FunctionPasses and BBPassManagers00074 //00075 // [o] class MPPassManager : public Pass, public PMDataManager;00076 //00077 // MPPassManager manages ModulePasses and FPPassManagers00078 //00079 // [o] class PassManager;00080 //00081 // This is a external interface used by various tools to manages passes. It00082 // relies on PassManagerImpl to do all the tasks.00083 //00084 // [o] class PassManagerImpl : public Pass, public PMDataManager,00085 // public PMTopLevelManager00086 //00087 // PassManagerImpl is a top level pass manager responsible for managing

    00088 // MPPassManagers.00089 //===----------------------------------------------------------------------===//0009000091 #include "llvm/Support/PrettyStackTrace.h"0009200093 namespace llvm {00094 class Module;00095 class Pass;00096 class StringRef;00097 class Value;00098 class Timer;00099 class PMDataManager;0010000101 // enums for debugging strings00102enumPassDebuggingString {00103 EXECUTION_MSG, // "Executing Pass '"00104 MODIFICATION_MSG, // "' Made Modification '"00105 FREEING_MSG, // " Freeing Pass '"

    http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a9609c00dded678647639606acf18e62dhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a9609c00dded678647639606acf18e62dhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a72e482d46273910cd5a3a02b0f65647fhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a72e482d46273910cd5a3a02b0f65647fhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a3f3116bde1268f9e1cd78d9010e4ff26http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a3f3116bde1268f9e1cd78d9010e4ff26http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51http://llvm.org/docs/doxygen/html/PrettyStackTrace_8h.html
  • 7/31/2019 LLVM- PassManagers.h Source File

    3/8

    00106 ON_BASICBLOCK_MSG, // "' on BasicBlock '" + PassName + "'...\n"00107 ON_FUNCTION_MSG, // "' on Function '" + FunctionName + "'...\n"00108 ON_MODULE_MSG, // "' on Module '" + ModuleName + "'...\n"00109 ON_REGION_MSG, // " 'on Region ...\n'"00110 ON_LOOP_MSG, // " 'on Loop ...\n'"00111 ON_CG_MSG// "' on Call Graph ...\n'"00112 };0011300114 /// PassManagerPrettyStackEntry - This is used to print informative information00115 /// about what pass is running when/if a stack trace is generated.00116class PassManagerPrettyStackEntry : publicPrettyStackTraceEntry {00117 Pass *P;00118 Value *V;00119 Module *M;00120 public:00121 explicitPassManagerPrettyStackEntry(Pass *p)00122 : P(p), V(0), M(0) {} // When P is releaseMemory'd.00123 PassManagerPrettyStackEntry(Pass *p, Value &v)00124 : P(p), V(&v), M(0) {} // When P is run on V00125 PassManagerPrettyStackEntry(Pass *p, Module &m)00126 : P(p), V(0), M(&m) {} // When P is run on M0012700128 /// print - Emit information about this stack frame to OS.

    00129 virtualvoidprint(raw_ostream&OS) const;00130 };001310013200133 //===----------------------------------------------------------------------===//00134 // PMStack00135 //00136 /// PMStack - This class implements a stack data structure of PMDataManager00137 /// pointers.00138 ///00139 /// Top level pass managers (see PassManager.cpp) maintain active Pass Managers00140 /// using PMStack. Each Pass implements assignPassManager() to connect itself00141 /// with appropriate manager. assignPassManager() walks PMStack to find00142 /// suitable manager.00143class PMStack {00144 public:00145 typedef std::vector::const_reverse_iterator iterator;00146 iteratorbegin() const { return S.rbegin(); }00147 iteratorend() const { return S.rend(); }0014800149 voidpop();00150 PMDataManager *top() const { return S.back(); }00151 voidpush(PMDataManager *PM);00152 boolempty() const { return S.empty(); }00153

    00154 voiddump() const;0015500156 private:00157 std::vector S;00158 };001590016000161 //===----------------------------------------------------------------------===//00162 // PMTopLevelManager00163 //00164 /// PMTopLevelManager manages LastUser info and collects common APIs used by00165 /// top level pass managers.00166class PMTopLevelManager {00167 protected:00168 explicitPMTopLevelManager(PMDataManager *PMDM);0016900170 virtualunsignedgetNumContainedManagers() const {00171 return (unsigned)PassManagers.size();

    http://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorTemplateCommon.html#a6b4a80b325f7a6442c15c72b37d91d16http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a62f1c43ba247efb9b876c45fe2356eeahttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a807abc3613021f8c22fcc0852a116a69http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a807abc3613021f8c22fcc0852a116a69http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#adc80432cc11960e6cf7fcae1a64c07a5http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a09d1a57911f721d0f3d00274a14ffcc7http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a36bc91be695c8c464d459b1d56091a78http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a36bc91be695c8c464d459b1d56091a78http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a9579e452cf1995463c7e29dfeae5cc2ahttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a03480da192e893f6def50af0e5164ef8http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a03480da192e893f6def50af0e5164ef8http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#a4953e532d6f86ceb1f38ee2503be46a0http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#ac8aaf3b0770659f7f3b7e819f96cd9a9http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#acebdcd31dd7d033cd49c14a71009142fhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#ac8aaf3b0770659f7f3b7e819f96cd9a9http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#ac3dc950f9114fe6d4effb7ad769b7f7chttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#acebdcd31dd7d033cd49c14a71009142fhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#ac3dc950f9114fe6d4effb7ad769b7f7chttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#acebdcd31dd7d033cd49c14a71009142fhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#acebdcd31dd7d033cd49c14a71009142fhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1raw__ostream.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#aa04fef0673db9a6ae96e84f10b4bc4e7http://llvm.org/docs/doxygen/html/classllvm_1_1Module.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#af022ee96eab274a7566fc3e1c133de4ahttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#afc6e0c6e83871d851ffdc300597e6f6dhttp://llvm.org/docs/doxygen/html/classllvm_1_1Value.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#af022ee96eab274a7566fc3e1c133de4ahttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#a45ba91722ab9cb43b237c14b3d3e5b4ehttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#af022ee96eab274a7566fc3e1c133de4ahttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.html#af022ee96eab274a7566fc3e1c133de4ahttp://llvm.org/docs/doxygen/html/classllvm_1_1Module.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Value.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PrettyStackTraceEntry.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PassManagerPrettyStackEntry.htmlhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a95cb7399d5b41b1ddd09c72c0ab53d1chttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a95cb7399d5b41b1ddd09c72c0ab53d1chttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a3e546b8cb5a3e5e11ad3895f0542dfc4http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a3e546b8cb5a3e5e11ad3895f0542dfc4http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a804f43dbed9325f261c320ab5bb1e73dhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a804f43dbed9325f261c320ab5bb1e73dhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a8c70bfed1eb1475d72b6473960678ad1http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a8c70bfed1eb1475d72b6473960678ad1http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a4772c843cba89638b5f424e728acadeehttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51a4772c843cba89638b5f424e728acadeehttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51abf926b74bff3f186aa39a3ed9e3e3530http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51abf926b74bff3f186aa39a3ed9e3e3530
  • 7/31/2019 LLVM- PassManagers.h Source File

    4/8

    00172 }0017300174 voidinitializeAllAnalysisInfo();0017500176 private:00177 virtualPMDataManager *getAsPMDataManager() = 0;00178 virtualPassManagerType getTopLevelPassManagerType() = 0;0017900180 public:00181 /// Schedule pass P for execution. Make sure that passes required by00182 /// P are run before P is run. Update analysis info maintained by00183 /// the manager. Remove dead passes. This is a recursive function.00184 voidschedulePass(Pass *P);0018500186 /// Set pass P as the last user of the given analysis passes.00187 voidsetLastUser(constSmallVectorImpl &AnalysisPasses, Pass *P);0018800189 /// Collect passes whose last user is P00190 voidcollectLastUses(SmallVectorImpl &LastUses, Pass *P);0019100192 /// Find the pass that implements Analysis AID. Search immutable00193 /// passes and all pass managers. If desired pass is not found00194 /// then return NULL.

    00195 Pass *findAnalysisPass(AnalysisID AID);0019600197 /// Find analysis usage information for the pass P.00198 AnalysisUsage *findAnalysisUsage(Pass *P);0019900200 virtual~PMTopLevelManager();0020100202 /// Add immutable pass and initialize it.00203 inlinevoidaddImmutablePass(ImmutablePass *P) {00204 P->initializePass();00205 ImmutablePasses.push_back(P);00206 }0020700208 inlineSmallVectorImpl& getImmutablePasses() {00209 return ImmutablePasses;00210 }0021100212 voidaddPassManager(PMDataManager *Manager) {00213 PassManagers.push_back(Manager);00214 }0021500216 // Add Manager into the list of managers that are not directly00217 // maintained by this top level pass manager00218 inlinevoidaddIndirectPassManager(PMDataManager *Manager) {00219 IndirectPassManagers.push_back(Manager);

    00220 }0022100222 // Print passes managed by this top level manager.00223 voiddumpPasses() const;00224 voiddumpArguments() const;0022500226 // Active Pass Managers00227 PMStackactiveStack;0022800229 protected:0023000231 /// Collection of pass managers00232 SmallVectorPassManagers;0023300234 private:0023500236 /// Collection of pass managers that are not directly maintained00237 /// by this pass manager

    http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a62f1c43ba247efb9b876c45fe2356eeahttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a62f1c43ba247efb9b876c45fe2356eeahttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ac2156f58ba16adbf970667ecd0d44ca7http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ac2156f58ba16adbf970667ecd0d44ca7http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#adc43c3ebe161ba410ed990beb8ae3d35http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ab4b29b2e6dbc1a6e4e5cf8fb89db315chttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a022d0f8afbecd48458168e3a419d2048http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a022d0f8afbecd48458168e3a419d2048http://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a62f1c43ba247efb9b876c45fe2356eeahttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#acb7ec36e2caf7a586e2be1e015929804http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#acb7ec36e2caf7a586e2be1e015929804http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ad3385ed1d959ab54dd6f95ed4d91996fhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorImpl.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ad3385ed1d959ab54dd6f95ed4d91996fhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916http://llvm.org/docs/doxygen/html/classllvm_1_1ImmutablePass.html#a9e88e7eff70a69eb7c338de34b30c401http://llvm.org/docs/doxygen/html/classllvm_1_1ImmutablePass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a23f7d81c75e44915d5aaf4949fe8c479http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a23f7d81c75e44915d5aaf4949fe8c479http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a5f398de037a18cdec4f7b21b7fb68f8chttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#aa2b6f31b009d485e411860e7547055c4http://llvm.org/docs/doxygen/html/classllvm_1_1AnalysisUsage.htmlhttp://llvm.org/docs/doxygen/html/namespacellvm.html#af58600f38ddfaf598037309c188dd773http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a941f554aafc09331b7f599a04d85dbe7http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorImpl.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ae14832740da89a471e377bb12e10969chttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorImpl.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a2ed9d5beaeec257bc7bb7ace3aa25ed3http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#a5fb719fc8062d116b93091d9c9addd43http://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebbhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.html#ad54000cb15d4de5f1cccee55f29e6ab1
  • 7/31/2019 LLVM- PassManagers.h Source File

    5/8

    00238 SmallVector IndirectPassManagers;0023900240 // Map to keep track of last user of the analysis pass.00241 // LastUser->second is the last user of Lastuser->first.00242 DenseMap LastUser;0024300244 // Map to keep track of passes that are last used by a pass.00245 // This inverse map is initialized at PM->run() based on00246 // LastUser map.00247 DenseMap InversedLastUser;0024800249 /// Immutable passes are managed by top level manager.00250 SmallVector ImmutablePasses;0025100252 DenseMap AnUsageMap;00253 };00254002550025600257 //===----------------------------------------------------------------------===//00258 // PMDataManager0025900260 /// PMDataManager provides the common place to manage the analysis data

    00261 /// used by pass managers.00262class PMDataManager {00263 public:0026400265 explicitPMDataManager() : TPM(NULL), Depth(0) {00266 initializeAnalysisInfo();00267 }0026800269 virtual~PMDataManager();0027000271 virtualPass *getAsPass() = 0;0027200273 /// Augment AvailableAnalysis by adding analysis made available by pass P.00274 voidrecordAvailableAnalysis(Pass *P);0027500276 /// verifyPreservedAnalysis -- Verify analysis presreved by pass P.00277 voidverifyPreservedAnalysis(Pass *P);0027800279 /// Remove Analysis that is not preserved by the pass00280 voidremoveNotPreservedAnalysis(Pass *P);0028100282 /// Remove dead passes used by P.00283 voidremoveDeadPasses(Pass *P, StringRef Msg,00284 enumPassDebuggingString);00285

    00286 /// Remove P.00287 voidfreePass(Pass *P, StringRef Msg,00288 enumPassDebuggingString);0028900290 /// Add pass P into the PassVector. Update00291 /// AvailableAnalysis appropriately if ProcessAnalysis is true.00292 voidadd(Pass *P, bool ProcessAnalysis = true);0029300294 /// Add RequiredPass into list of lower level passes required by pass P.00295 /// RequiredPass is run on the fly by Pass Manager when P requests it00296 /// through getAnalysis interface.00297 virtualvoidaddLowerLevelRequiredPass(Pass *P, Pass *RequiredPass);0029800299 virtualPass *getOnTheFlyPass(Pass *P,AnalysisID PI, Function &F);0030000301 /// Initialize available analysis information.00302 voidinitializeAnalysisInfo() {00303 AvailableAnalysis.clear();

    http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a9a49f833e36d81021facdf5f4dbd84dehttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a9a49f833e36d81021facdf5f4dbd84dehttp://llvm.org/docs/doxygen/html/LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6http://llvm.org/docs/doxygen/html/classllvm_1_1Function.htmlhttp://llvm.org/docs/doxygen/html/namespacellvm.html#af58600f38ddfaf598037309c188dd773http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a941c8eac4b029c7f45a57334c1699b96http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a490078b030c2d08d36afe903601d86dahttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ab7c7120f48a91e5972592b16ee7fd81bhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51http://llvm.org/docs/doxygen/html/classllvm_1_1StringRef.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a9ded95b3d23d780dbaf94c287465f69ahttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51http://llvm.org/docs/doxygen/html/classllvm_1_1StringRef.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a09ac67e36db813f2a3e69173f7638037http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#af740891e192aa63a0fbbfe317301cbdbhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a86a4b032c64ea61c59d12929a76c9833http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a35ff10683333230676c1d3c4379b58b1http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a8457b159fdecade7ebc94e6aa8a05605http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a95d6e0465dd450047ad442fc7bcec67ahttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a9a49f833e36d81021facdf5f4dbd84dehttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aaa1883b3ebb15e2de80d6f08004a8528http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a04fbd0afa6857fe697dd28e93bdfec07http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a04fbd0afa6857fe697dd28e93bdfec07http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1DenseMap.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1DenseMap.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1DenseMap.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.html
  • 7/31/2019 LLVM- PassManagers.h Source File

    6/8

    00304 for (unsigned i = 0; i < PMT_Last; ++i)00305 InheritedAnalysis[i] = NULL;00306 }0030700308 // Return true if P preserves high level analysis used by other00309 // passes that are managed by this manager.00310 boolpreserveHigherLevelAnalysis(Pass *P);003110031200313 /// Populate RequiredPasses with analysis pass that are required by00314 /// pass P and are available. Populate ReqPassNotAvailable with analysis00315 /// pass that are required by pass P but are not available.00316 voidcollectRequiredAnalysis(SmallVectorImpl &RequiredPasses,00317 SmallVectorImpl &ReqPassNotAvailable,00318 Pass *P);0031900320 /// All Required analyses should be available to the pass as it runs! Here00321 /// we fill in the AnalysisImpls member of the pass so that it can00322 /// successfully use the getAnalysis() method to retrieve the00323 /// implementations it needs.00324 voidinitializeAnalysisImpl(Pass *P);0032500326 /// Find the pass that implements Analysis AID. If desired pass is not found

    00327 /// then return NULL.00328 Pass *findAnalysisPass(AnalysisID AID, bool Direction);0032900330 // Access toplevel manager00331 PMTopLevelManager *getTopLevelManager() { returnTPM; }00332 voidsetTopLevelManager(PMTopLevelManager *T) { TPM = T; }0033300334 unsignedgetDepth() const { return Depth; }00335 voidsetDepth(unsigned newDepth) { Depth = newDepth; }0033600337 // Print routines used by debug-pass00338 voiddumpLastUses(Pass *P, unsigned Offset) const;00339 voiddumpPassArguments() const;00340 voiddumpPassInfo(Pass *P, enumPassDebuggingString S1,00341 enumPassDebuggingString S2, StringRef Msg);00342 voiddumpRequiredSet(constPass *P) const;00343 voiddumpPreservedSet(constPass *P) const;0034400345 virtualunsignedgetNumContainedPasses() const {00346 return (unsigned)PassVector.size();00347 }0034800349 virtualPassManagerTypegetPassManagerType() const {00350 assert ( 0 && "Invalid use of getPassManagerType");00351 returnPMT_Unknown;

    00352 }0035300354 std::map *getAvailableAnalysis() {00355 return &AvailableAnalysis;00356 }0035700358 // Collect AvailableAnalysis from all the active Pass Managers.00359 voidpopulateInheritedAnalysis(PMStack &PMS) {00360 unsigned Index = 0;00361 for (PMStack::iteratorI = PMS.begin(), E = PMS.end();00362 I != E; ++I)00363 InheritedAnalysis[Index++] = (*I)->getAvailableAnalysis();00364 }0036500366 protected:0036700368 // Top level manager.00369 PMTopLevelManager *TPM;

    http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aaa1883b3ebb15e2de80d6f08004a8528http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aaa1883b3ebb15e2de80d6f08004a8528http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a260d7b924b0acfe4f866c186f6422945http://llvm.org/docs/doxygen/html/namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5http://llvm.org/docs/doxygen/html/namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#ac8aaf3b0770659f7f3b7e819f96cd9a9http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#ac3dc950f9114fe6d4effb7ad769b7f7chttp://llvm.org/docs/doxygen/html/namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5http://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.html#acebdcd31dd7d033cd49c14a71009142fhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMStack.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ad469713fc40b5f0baba648041a68dfa7http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ad469713fc40b5f0baba648041a68dfa7http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a7a1196bf234dc25a7ecebd8497393f48http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a7a1196bf234dc25a7ecebd8497393f48http://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebba608a70bb40817f666f2d174f43d1c9d5http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ac118337a439a0601243488da4e48c65dhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebbhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ac118337a439a0601243488da4e48c65dhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorTemplateCommon.html#a6b4a80b325f7a6442c15c72b37d91d16http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a433bcef3e3a89059a3510632b640525dhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#af662978ce2224792208fd8da810783f1http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#af662978ce2224792208fd8da810783f1http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a5f52a6e01d6a0b1be9a33e269322f44ehttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a86a7a078177ad6737ba6a890e4a22f69http://llvm.org/docs/doxygen/html/classllvm_1_1StringRef.htmlhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51http://llvm.org/docs/doxygen/html/namespacellvm.html#a7e7283c48f393f907c761d39cb7f0b51http://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aff93635e4ea28861beb90faece603b3dhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a99cca8939771a83aea46e08e9aa1747ahttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ab89cff50b8a57b4b07b1cfc83b08f1e2http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a1d280b5b00775044d94b527cac5ef7bbhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a1d280b5b00775044d94b527cac5ef7bbhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a10cf5ebe707f0e8d07f06c1a58178ef9http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a10cf5ebe707f0e8d07f06c1a58178ef9http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aaa1883b3ebb15e2de80d6f08004a8528http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a61adb3228a4dd2685aeb402e7a4c35d3http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a61adb3228a4dd2685aeb402e7a4c35d3http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aaa1883b3ebb15e2de80d6f08004a8528http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ac24eda9d059b93eccdfa2f8135671c53http://llvm.org/docs/doxygen/html/classllvm_1_1PMTopLevelManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ac24eda9d059b93eccdfa2f8135671c53http://llvm.org/docs/doxygen/html/namespacellvm.html#af58600f38ddfaf598037309c188dd773http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a36f417ced43a7724c39f10c67eb7d53dhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a813e1d4b6102a11cad9963778f889d4dhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorImpl.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorImpl.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#ab85e0f9ef92d31646880d87aa03b5e1fhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#aa2fd2b9e450d0a3dc5255cc52151b7ffhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a260d7b924b0acfe4f866c186f6422945http://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebba830c8e6d39bb1dcb926f0e24d1392f64
  • 7/31/2019 LLVM- PassManagers.h Source File

    7/8

    0037000371 // Collection of pass that are managed by this manager00372 SmallVectorPassVector;0037300374 // Collection of Analysis provided by Parent pass manager and00375 // used by current pass manager. At at time there can not be more00376 // then PMT_Last active pass mangers.00377 std::map *InheritedAnalysis[PMT_Last];003780037900380 /// isPassDebuggingExecutionsOrMore - Return true if -debug-pass=Executions00381 /// or higher is specified.00382 boolisPassDebuggingExecutionsOrMore() const;0038300384 private:00385 void dumpAnalysisUsage(StringRef Msg, constPass *P,00386 constAnalysisUsage::VectorType &Set) const;0038700388 // Set of available Analysis. This information is used while scheduling00389 // pass. If a pass requires an analysis which is not available then00390 // the required analysis pass is scheduled to run before the pass itself is00391 // scheduled to run.00392 std::map AvailableAnalysis;

    0039300394 // Collection of higher level analysis used by the pass managed by00395 // this manager.00396 SmallVector HigherLevelAnalysis;0039700398 unsigned Depth;00399 };0040000401 //===----------------------------------------------------------------------===//00402 // FPPassManager00403 //00404 /// FPPassManager manages BBPassManagers and FunctionPasses.00405 /// It batches all function passes and basic block pass managers together and00406 /// sequence them to process one function at a time before processing next00407 /// function.00408class FPPassManager : publicModulePass, publicPMDataManager {00409 public:00410 staticcharID;00411 explicitFPPassManager()00412 : ModulePass(ID), PMDataManager() { }0041300414 /// run - Execute all of the passes scheduled for execution. Keep track of00415 /// whether any of the passes modifies the module, and if so, return true.00416 boolrunOnFunction(Function &F);00417 boolrunOnModule(Module &M);

    0041800419 /// cleanup - After running all passes, clean up pass manager cache.00420 voidcleanup();0042100422 /// doInitialization - Run all of the initializers for the function passes.00423 ///00424 booldoInitialization(Module &M);0042500426 /// doFinalization - Run all of the finalizers for the function passes.00427 ///00428 booldoFinalization(Module &M);0042900430 virtualPMDataManager *getAsPMDataManager() { returnthis; }00431 virtualPass *getAsPass() { returnthis; }0043200433 /// Pass Manager itself does not invalidate any analysis info.00434 voidgetAnalysisUsage(AnalysisUsage &Info) const {00435 Info.setPreservesAll();

    http://llvm.org/docs/doxygen/html/classllvm_1_1AnalysisUsage.html#af22b06a6a4f9df80454071685a0d6a02http://llvm.org/docs/doxygen/html/classllvm_1_1AnalysisUsage.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a1688cc798c196b78165c31da5facb7fahttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a1688cc798c196b78165c31da5facb7fahttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#ae73ba33874f4d2c2f757a45eb848408chttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#ae73ba33874f4d2c2f757a45eb848408chttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#afe02b71b229f55930266f96ef9758420http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#afe02b71b229f55930266f96ef9758420http://llvm.org/docs/doxygen/html/classllvm_1_1Module.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a83af9d188ea9319b85ed50e989712cc3http://llvm.org/docs/doxygen/html/classllvm_1_1Module.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a48c9c27e5a2023ca772c569527a20d12http://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#af50df32b0a6280a411aaadd15ee8932dhttp://llvm.org/docs/doxygen/html/classllvm_1_1Module.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a47214faf816e3a6626ffc4e6f3dd5418http://llvm.org/docs/doxygen/html/LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6http://llvm.org/docs/doxygen/html/classllvm_1_1Function.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a0dec4e6b40dec12d8c6a17040ee73021http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a4c588012c04f9a6cff6f74180a999b17http://llvm.org/docs/doxygen/html/classllvm_1_1ModulePass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a826661a607a68550fa19636544c1b191http://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a826661a607a68550fa19636544c1b191http://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a4c588012c04f9a6cff6f74180a999b17http://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a4c588012c04f9a6cff6f74180a999b17http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1ModulePass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1Pass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1StringRef.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a7e9323e2c8040472e42b2729f492bd9ahttp://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebba830c8e6d39bb1dcb926f0e24d1392f64http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a260d7b924b0acfe4f866c186f6422945http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a260d7b924b0acfe4f866c186f6422945http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a433bcef3e3a89059a3510632b640525dhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a433bcef3e3a89059a3510632b640525d
  • 7/31/2019 LLVM- PassManagers.h Source File

    8/8

    00436 }0043700438 // Print passes managed by this manager00439 voiddumpPassStructure(unsigned Offset);0044000441 virtualconstchar *getPassName() const {00442 return"Function Pass Manager";00443 }0044400445 FunctionPass *getContainedPass(unsigned N) {00446 assert ( N < PassVector.size() && "Pass number out of range!");00447 FunctionPass *FP = static_cast(PassVector[N]);00448 return FP;00449 }0045000451 virtualPassManagerTypegetPassManagerType() const {00452 returnPMT_FunctionPassManager;00453 }00454 };0045500456 Timer *getPassTimer(Pass *);0045700458 }

    0045900460 #endif

    Generated on Wed Apr 11 2012 02:34:19 for LLVM by 1.7.5.1

    Copyright 2003-2012 University of Illinois at Urbana-Champaign. All Rights Reserved.

    http://www.doxygen.org/http://llvm.org/http://llvm.org/docs/doxygen/html/namespacellvm.html#a67d0285e03a80731db23ba77d291942dhttp://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebbaf92a84a9aa3cca1378d1a12fc3664396http://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a29456b5427b6c429089d639eb47a72a1http://llvm.org/docs/doxygen/html/namespacellvm.html#a3948b4d0759f9852502b466d6cfb4ebbhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a29456b5427b6c429089d639eb47a72a1http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a433bcef3e3a89059a3510632b640525dhttp://llvm.org/docs/doxygen/html/classllvm_1_1FunctionPass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FunctionPass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1SmallVectorTemplateCommon.html#a6b4a80b325f7a6442c15c72b37d91d16http://llvm.org/docs/doxygen/html/classllvm_1_1PMDataManager.html#a433bcef3e3a89059a3510632b640525dhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#ab3a49a801112033b0a503fe0476fdd6chttp://llvm.org/docs/doxygen/html/classllvm_1_1FunctionPass.htmlhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#ab3a49a801112033b0a503fe0476fdd6chttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a3c40a9cc3bee6f6ef0282a06b323585fhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a3c40a9cc3bee6f6ef0282a06b323585fhttp://llvm.org/docs/doxygen/html/classllvm_1_1FPPassManager.html#a4994978301668b2cd52c07d12afc3255