LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
llvm::DominanceFrontierBase Class Reference

#include <DominanceFrontier.h>

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

Public Types

typedef std::set< BasicBlock * > DomSetType
 
typedef std::map< BasicBlock
*, DomSetType
DomSetMapType
 
typedef DomSetMapType::iterator iterator
 
typedef
DomSetMapType::const_iterator 
const_iterator
 

Public Member Functions

 DominanceFrontierBase (char &ID, bool isPostDom)
 
const std::vector< BasicBlock * > & getRoots () const
 
bool isPostDominator () const
 
virtual void releaseMemory ()
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
iterator find (BasicBlock *B)
 
const_iterator find (BasicBlock *B) const
 
iterator addBasicBlock (BasicBlock *BB, const DomSetType &frontier)
 
void removeBlock (BasicBlock *BB)
 removeBlock - Remove basic block BB's frontier. More...
 
void addToFrontier (iterator I, BasicBlock *Node)
 
void removeFromFrontier (iterator I, BasicBlock *Node)
 
bool compareDomSet (DomSetType &DS1, const DomSetType &DS2) const
 
bool compare (DominanceFrontierBase &Other) const
 
virtual void print (raw_ostream &OS, const Module *=0) const
 
void dump () const
 dump - Dump the dominance frontier to dbgs(). More...
 
- Public Member Functions inherited from llvm::FunctionPass
 FunctionPass (char &pid)
 
PasscreatePrinterPass (raw_ostream &O, const std::string &Banner) const
 createPrinterPass - Get a function printer pass. More...
 
virtual bool runOnFunction (Function &F)=0
 
virtual void assignPassManager (PMStack &PMS, PassManagerType T)
 
virtual PassManagerType getPotentialPassManagerType () const
 Return what kind of Pass Manager can manage this pass. More...
 
- Public Member Functions inherited from llvm::Pass
 Pass (PassKind K, char &pid)
 
virtual ~Pass ()
 
PassKind getPassKind () const
 
virtual const char * getPassName () const
 
AnalysisID getPassID () const
 getPassID - Return the PassID number that corresponds to this pass. More...
 
virtual bool doInitialization (Module &)
 
virtual bool doFinalization (Module &)
 
void dump () const
 
virtual void preparePassManager (PMStack &)
 Check if available pass managers are suitable for this pass or not. More...
 
void setResolver (AnalysisResolver *AR)
 
AnalysisResolvergetResolver () const
 
virtual void getAnalysisUsage (AnalysisUsage &) const
 
virtual void * getAdjustedAnalysisPointer (AnalysisID ID)
 
virtual ImmutablePassgetAsImmutablePass ()
 
virtual PMDataManagergetAsPMDataManager ()
 
virtual void verifyAnalysis () const
 
virtual void dumpPassStructure (unsigned Offset=0)
 
template<typename AnalysisType >
AnalysisType * getAnalysisIfAvailable () const
 
bool mustPreserveAnalysisID (char &AID) const
 
template<typename AnalysisType >
AnalysisType & getAnalysis () const
 
template<typename AnalysisType >
AnalysisType & getAnalysis (Function &F)
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI) const
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI, Function &F)
 

Protected Attributes

DomSetMapType Frontiers
 
std::vector< BasicBlock * > Roots
 
const bool IsPostDominators
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::Pass
static const PassInfolookupPassInfo (const void *TI)
 
static const PassInfolookupPassInfo (StringRef Arg)
 
static PasscreatePass (AnalysisID ID)
 

Detailed Description

DominanceFrontierBase - Common base class for computing forward and inverse dominance frontiers for a function.

Definition at line 31 of file DominanceFrontier.h.

Member Typedef Documentation

typedef DomSetMapType::const_iterator llvm::DominanceFrontierBase::const_iterator

Definition at line 58 of file DominanceFrontier.h.

Definition at line 34 of file DominanceFrontier.h.

Definition at line 33 of file DominanceFrontier.h.

typedef DomSetMapType::iterator llvm::DominanceFrontierBase::iterator

Definition at line 57 of file DominanceFrontier.h.

Constructor & Destructor Documentation

llvm::DominanceFrontierBase::DominanceFrontierBase ( char &  ID,
bool  isPostDom 
)
inline

Definition at line 41 of file DominanceFrontier.h.

Member Function Documentation

iterator llvm::DominanceFrontierBase::addBasicBlock ( BasicBlock BB,
const DomSetType frontier 
)
inline

Definition at line 66 of file DominanceFrontier.h.

References end(), find(), and Frontiers.

void llvm::DominanceFrontierBase::addToFrontier ( iterator  I,
BasicBlock Node 
)
inline

Definition at line 79 of file DominanceFrontier.h.

References end().

iterator llvm::DominanceFrontierBase::begin ( )
inline

Definition at line 59 of file DominanceFrontier.h.

References Frontiers.

Referenced by compare(), print(), and removeBlock().

const_iterator llvm::DominanceFrontierBase::begin ( ) const
inline

Definition at line 60 of file DominanceFrontier.h.

References Frontiers.

bool llvm::DominanceFrontierBase::compare ( DominanceFrontierBase Other) const
inline

compare - Return true if the other dominance frontier base matches this dominance frontier base. Otherwise return false.

Definition at line 117 of file DominanceFrontier.h.

References begin(), compareDomSet(), end(), find(), and I.

bool llvm::DominanceFrontierBase::compareDomSet ( DomSetType DS1,
const DomSetType DS2 
) const
inline

compareDomSet - Return false if two domsets match. Otherwise return true;

Definition at line 92 of file DominanceFrontier.h.

References I.

Referenced by compare().

void DominanceFrontierBase::dump ( ) const

dump - Dump the dominance frontier to dbgs().

Definition at line 137 of file DominanceFrontier.cpp.

References llvm::dbgs(), and print().

iterator llvm::DominanceFrontierBase::end ( )
inline

Definition at line 61 of file DominanceFrontier.h.

References Frontiers.

Referenced by addBasicBlock(), addToFrontier(), compare(), print(), removeBlock(), and removeFromFrontier().

const_iterator llvm::DominanceFrontierBase::end ( ) const
inline

Definition at line 62 of file DominanceFrontier.h.

References Frontiers.

iterator llvm::DominanceFrontierBase::find ( BasicBlock B)
inline

Definition at line 63 of file DominanceFrontier.h.

References Frontiers.

Referenced by addBasicBlock(), compare(), and removeBlock().

const_iterator llvm::DominanceFrontierBase::find ( BasicBlock B) const
inline

Definition at line 64 of file DominanceFrontier.h.

References Frontiers.

const std::vector<BasicBlock*>& llvm::DominanceFrontierBase::getRoots ( ) const
inline

getRoots - Return the root blocks of the current CFG. This may include multiple blocks if we are computing post dominators. For forward dominators, this will always be a single block (the entry node).

Definition at line 48 of file DominanceFrontier.h.

References Roots.

bool llvm::DominanceFrontierBase::isPostDominator ( ) const
inline

isPostDominator - Returns true if analysis based of postdoms

Definition at line 52 of file DominanceFrontier.h.

References IsPostDominators.

void DominanceFrontierBase::print ( raw_ostream OS,
const Module = 0 
) const
virtual

print - Convert to human readable form

Reimplemented from llvm::Pass.

Definition at line 113 of file DominanceFrontier.cpp.

References begin(), end(), I, and llvm::WriteAsOperand().

Referenced by dump().

virtual void llvm::DominanceFrontierBase::releaseMemory ( )
inlinevirtual

releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. The default behavior of passes is to hold onto memory for the entire duration of their lifetime (which is the entire compile time). For pipelined passes, this is not a big deal because that memory gets recycled every time the pass is invoked on another program unit. For IP passes, it is more important to free memory when it is unused.

Optionally implement this function to release pass memory when it is no longer used.

Reimplemented from llvm::Pass.

Definition at line 54 of file DominanceFrontier.h.

References Frontiers.

void llvm::DominanceFrontierBase::removeBlock ( BasicBlock BB)
inline

removeBlock - Remove basic block BB's frontier.

Definition at line 72 of file DominanceFrontier.h.

References begin(), end(), find(), Frontiers, and I.

void llvm::DominanceFrontierBase::removeFromFrontier ( iterator  I,
BasicBlock Node 
)
inline

Definition at line 84 of file DominanceFrontier.h.

References end().

Member Data Documentation

DomSetMapType llvm::DominanceFrontierBase::Frontiers
protected
const bool llvm::DominanceFrontierBase::IsPostDominators
protected

Definition at line 38 of file DominanceFrontier.h.

Referenced by isPostDominator().

std::vector<BasicBlock*> llvm::DominanceFrontierBase::Roots
protected

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