LLVM API Documentation

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

llvm::PMTopLevelManager Class Reference

#include <PassManagers.h>

Inheritance diagram for llvm::PMTopLevelManager:

Inheritance graph
[legend]
Collaboration diagram for llvm::PMTopLevelManager:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual unsigned getNumContainedManagers () const
void schedulePass (Pass *P)
virtual void addTopLevelPass (Pass *P)=0
void setLastUser (SmallVector< Pass *, 12 > &AnalysisPasses, Pass *P)
 Set pass P as the last user of the given analysis passes.
void collectLastUses (SmallVector< Pass *, 12 > &LastUses, Pass *P)
 Collect passes whose last user is P.
PassfindAnalysisPass (AnalysisID AID)
AnalysisUsagefindAnalysisUsage (Pass *P)
 Find analysis usage information for the pass P.
 PMTopLevelManager (enum TopLevelManagerType t)
 Initialize top level manager. Create first pass manager.
virtual ~PMTopLevelManager ()
 Destructor.
void addImmutablePass (ImmutablePass *P)
 Add immutable pass and initialize it.
SmallVector< ImmutablePass *, 8 > & getImmutablePasses ()
void addPassManager (PMDataManager *Manager)
void addIndirectPassManager (PMDataManager *Manager)
void dumpPasses () const
void dumpArguments () const
void initializeAllAnalysisInfo ()

Public Attributes

PMStack activeStack

Protected Attributes

SmallVector< PMDataManager *, 8 > PassManagers
 Collection of pass managers.

Detailed Description

PMTopLevelManager manages LastUser info and collects common APIs used by top level pass managers.

Definition at line 150 of file PassManagers.h.


Constructor & Destructor Documentation

PMTopLevelManager::PMTopLevelManager enum TopLevelManagerType  t  )  [explicit]
 

Initialize top level manager. Create first pass manager.

Definition at line 377 of file PassManager.cpp.

References activeStack, addPassManager(), llvm::PMStack::push(), and llvm::PMDataManager::setTopLevelManager().

PMTopLevelManager::~PMTopLevelManager  )  [virtual]
 

Destructor.

Definition at line 599 of file PassManager.cpp.

References llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::begin(), llvm::SmallVectorImpl< T >::begin(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::end(), llvm::SmallVectorImpl< T >::end(), and PassManagers.


Member Function Documentation

void llvm::PMTopLevelManager::addImmutablePass ImmutablePass P  )  [inline]
 

Add immutable pass and initialize it.

Definition at line 184 of file PassManagers.h.

References llvm::ImmutablePass::initializePass().

void llvm::PMTopLevelManager::addIndirectPassManager PMDataManager Manager  )  [inline]
 

Definition at line 199 of file PassManagers.h.

Referenced by llvm::BasicBlockPass::assignPassManager(), llvm::FunctionPass::assignPassManager(), llvm::LoopPass::assignPassManager(), llvm::CallGraphSCCPass::assignPassManager(), and llvm::PMStack::push().

void llvm::PMTopLevelManager::addPassManager PMDataManager Manager  )  [inline]
 

Definition at line 193 of file PassManagers.h.

Referenced by PMTopLevelManager().

virtual void llvm::PMTopLevelManager::addTopLevelPass Pass P  )  [pure virtual]
 

This is implemented by top level pass manager and used by schedulePass() to add analysis info passes that are not available.

Implemented in llvm::FunctionPassManagerImpl, and llvm::PassManagerImpl.

Referenced by schedulePass().

void PMTopLevelManager::collectLastUses SmallVector< Pass *, 12 > &  LastUses,
Pass P
 

Collect passes whose last user is P.

Definition at line 418 of file PassManager.cpp.

References llvm::SmallPtrSet< PtrType, SmallSize >::begin(), llvm::SmallPtrSet< PtrType, SmallSize >::end(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::end(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::find(), and llvm::SmallVectorImpl< T >::push_back().

Referenced by llvm::PMDataManager::dumpLastUses(), and llvm::PMDataManager::removeDeadPasses().

void PMTopLevelManager::dumpArguments  )  const
 

Definition at line 557 of file PassManager.cpp.

References llvm::SmallVectorImpl< T >::begin(), llvm::PMDataManager::dumpPassArguments(), llvm::SmallVectorImpl< T >::end(), llvm::PassDebugging, and PassManagers.

Referenced by llvm::PMDataManager::addLowerLevelRequiredPass(), llvm::PassManagerImpl::run(), and llvm::FunctionPassManagerImpl::run().

void PMTopLevelManager::dumpPasses  )  const
 

Definition at line 538 of file PassManager.cpp.

References llvm::SmallVectorImpl< T >::begin(), llvm::SmallVectorImpl< T >::end(), llvm::PassDebugging, PassManagers, and llvm::SmallVectorImpl< T >::size().

Referenced by llvm::PMDataManager::addLowerLevelRequiredPass(), llvm::PassManagerImpl::run(), and llvm::FunctionPassManagerImpl::run().

Pass * PMTopLevelManager::findAnalysisPass AnalysisID  AID  ) 
 

Find the pass that implements Analysis AID. Search immutable passes and all pass managers. If desired pass is not found then return NULL.

Definition at line 504 of file PassManager.cpp.

References llvm::AnalysisID, llvm::SmallVectorImpl< T >::begin(), llvm::SmallVectorImpl< T >::end(), llvm::PMDataManager::findAnalysisPass(), llvm::PassInfo::getInterfacesImplemented(), and PassManagers.

Referenced by llvm::PMDataManager::findAnalysisPass(), and schedulePass().

AnalysisUsage * PMTopLevelManager::findAnalysisUsage Pass P  ) 
 

Find analysis usage information for the pass P.

Definition at line 433 of file PassManager.cpp.

References llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::end(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::find(), and llvm::Pass::getAnalysisUsage().

Referenced by llvm::PMDataManager::collectRequiredAnalysis(), llvm::PMDataManager::initializeAnalysisImpl(), llvm::PMDataManager::preserveHigherLevelAnalysis(), llvm::PMDataManager::removeNotPreservedAnalysis(), schedulePass(), and llvm::PMDataManager::verifyPreservedAnalysis().

SmallVector<ImmutablePass *, 8>& llvm::PMTopLevelManager::getImmutablePasses  )  [inline]
 

Definition at line 189 of file PassManagers.h.

virtual unsigned llvm::PMTopLevelManager::getNumContainedManagers  )  const [inline, virtual]
 

Definition at line 153 of file PassManagers.h.

Referenced by llvm::FunctionPassManagerImpl::doFinalization(), llvm::FunctionPassManagerImpl::doInitialization(), llvm::PassManagerImpl::run(), and llvm::FunctionPassManagerImpl::run().

void PMTopLevelManager::initializeAllAnalysisInfo  ) 
 

Definition at line 571 of file PassManager.cpp.

References llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::begin(), llvm::SmallVectorImpl< T >::begin(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::end(), llvm::SmallVectorImpl< T >::end(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::find(), llvm::PMDataManager::initializeAnalysisInfo(), llvm::SmallPtrSet< PtrType, SmallSize >::insert(), and PassManagers.

Referenced by llvm::PassManagerImpl::run(), and llvm::FunctionPassManagerImpl::run().

void PMTopLevelManager::schedulePass Pass P  ) 
 

Schedule pass P for execution. Make sure that passes required by P are run before P is run. Update analysis info maintained by the manager. Remove dead passes. This is a recursive function.

Definition at line 449 of file PassManager.cpp.

References activeStack, addTopLevelPass(), llvm::SmallVectorImpl< T >::begin(), llvm::SmallVectorImpl< T >::end(), findAnalysisPass(), findAnalysisUsage(), llvm::Pass::getPassInfo(), llvm::Pass::getPotentialPassManagerType(), llvm::AnalysisUsage::getRequiredSet(), llvm::PassInfo::isAnalysis(), llvm::Pass::preparePassManager(), and llvm::AnalysisUsage::VectorType.

Referenced by llvm::LoopPass::assignPassManager(), and llvm::CallGraphSCCPass::assignPassManager().

void PMTopLevelManager::setLastUser SmallVector< Pass *, 12 > &  AnalysisPasses,
Pass P
 

Set pass P as the last user of the given analysis passes.

Definition at line 394 of file PassManager.cpp.

References llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::begin(), llvm::SmallVectorImpl< T >::begin(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::end(), and llvm::SmallVectorImpl< T >::end().

Referenced by llvm::PMDataManager::add(), and llvm::MPPassManager::addLowerLevelRequiredPass().


Member Data Documentation

PMStack llvm::PMTopLevelManager::activeStack
 

Definition at line 210 of file PassManagers.h.

Referenced by PMTopLevelManager(), llvm::FPPassManager::runOnFunction(), llvm::LPPassManager::runOnFunction(), and schedulePass().

SmallVector<PMDataManager *, 8> llvm::PMTopLevelManager::PassManagers [protected]
 

Collection of pass managers.

Definition at line 215 of file PassManagers.h.

Referenced by dumpArguments(), dumpPasses(), findAnalysisPass(), initializeAllAnalysisInfo(), and ~PMTopLevelManager().


The documentation for this class was generated from the following files:


This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.