LLVM 23.0.0git
llvm::DominanceFrontierBase< BlockT, IsPostDom > Class Template Reference

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

#include "llvm/Analysis/DominanceFrontier.h"

Inheritance diagram for llvm::DominanceFrontierBase< BlockT, IsPostDom >:
[legend]

Public Types

using DomSetType = SetVector<BlockT *>
using DomSetMapType = DenseMap<BlockT *, DomSetType>
using DomTreeT = DominatorTreeBase<BlockT, IsPostDom>
using DomTreeNodeT = DomTreeNodeBase<BlockT>
using iterator = typename DomSetMapType::iterator
using const_iterator = typename DomSetMapType::const_iterator

Public Member Functions

 DominanceFrontierBase ()=default
bool isPostDominator () const
 isPostDominator - Returns true if analysis based of postdoms
void releaseMemory ()
iterator begin ()
const_iterator begin () const
iterator end ()
const_iterator end () const
iterator find (BlockT *B)
const_iterator find (BlockT *B) const
void print (raw_ostream &OS) const
 print - Convert to human readable form
void dump () const
 dump - Dump the dominance frontier to dbgs().
void analyze (const DomTreeT &DT)

Protected Types

using GraphTy = std::conditional_t<IsPostDom, Inverse<BlockT *>, BlockT *>
using BlockTraits = GraphTraits<GraphTy>

Protected Attributes

DomSetMapType Frontiers

Static Protected Attributes

static constexpr bool IsPostDominators = IsPostDom

Detailed Description

template<class BlockT, bool IsPostDom>
class llvm::DominanceFrontierBase< BlockT, IsPostDom >

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

Definition at line 43 of file DominanceFrontier.h.

Member Typedef Documentation

◆ BlockTraits

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::BlockTraits = GraphTraits<GraphTy>
protected

Definition at line 54 of file DominanceFrontier.h.

◆ const_iterator

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::const_iterator = typename DomSetMapType::const_iterator

Definition at line 73 of file DominanceFrontier.h.

◆ DomSetMapType

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomSetMapType = DenseMap<BlockT *, DomSetType>

Definition at line 48 of file DominanceFrontier.h.

◆ DomSetType

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomSetType = SetVector<BlockT *>

Definition at line 47 of file DominanceFrontier.h.

◆ DomTreeNodeT

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomTreeNodeT = DomTreeNodeBase<BlockT>

Definition at line 50 of file DominanceFrontier.h.

◆ DomTreeT

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomTreeT = DominatorTreeBase<BlockT, IsPostDom>

Definition at line 49 of file DominanceFrontier.h.

◆ GraphTy

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::GraphTy = std::conditional_t<IsPostDom, Inverse<BlockT *>, BlockT *>
protected

Definition at line 53 of file DominanceFrontier.h.

◆ iterator

template<class BlockT, bool IsPostDom>
using llvm::DominanceFrontierBase< BlockT, IsPostDom >::iterator = typename DomSetMapType::iterator

Definition at line 72 of file DominanceFrontier.h.

Constructor & Destructor Documentation

◆ DominanceFrontierBase()

template<class BlockT, bool IsPostDom>
llvm::DominanceFrontierBase< BlockT, IsPostDom >::DominanceFrontierBase ( )
default

Member Function Documentation

◆ analyze()

◆ begin() [1/2]

template<class BlockT, bool IsPostDom>
iterator llvm::DominanceFrontierBase< BlockT, IsPostDom >::begin ( )
inline

Definition at line 75 of file DominanceFrontier.h.

References Frontiers.

Referenced by print().

◆ begin() [2/2]

template<class BlockT, bool IsPostDom>
const_iterator llvm::DominanceFrontierBase< BlockT, IsPostDom >::begin ( ) const
inline

Definition at line 76 of file DominanceFrontier.h.

References Frontiers.

◆ dump()

template<class BlockT, bool IsPostDom>
void llvm::DominanceFrontierBase< BlockT, IsPostDom >::dump ( ) const

dump - Dump the dominance frontier to dbgs().

Definition at line 71 of file DominanceFrontierImpl.h.

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

◆ end() [1/2]

template<class BlockT, bool IsPostDom>
iterator llvm::DominanceFrontierBase< BlockT, IsPostDom >::end ( )
inline

Definition at line 77 of file DominanceFrontier.h.

References Frontiers.

Referenced by print().

◆ end() [2/2]

template<class BlockT, bool IsPostDom>
const_iterator llvm::DominanceFrontierBase< BlockT, IsPostDom >::end ( ) const
inline

Definition at line 78 of file DominanceFrontier.h.

References Frontiers.

◆ find() [1/2]

template<class BlockT, bool IsPostDom>
iterator llvm::DominanceFrontierBase< BlockT, IsPostDom >::find ( BlockT * B)
inline

Definition at line 79 of file DominanceFrontier.h.

References B(), and Frontiers.

◆ find() [2/2]

template<class BlockT, bool IsPostDom>
const_iterator llvm::DominanceFrontierBase< BlockT, IsPostDom >::find ( BlockT * B) const
inline

Definition at line 80 of file DominanceFrontier.h.

References B(), and Frontiers.

◆ isPostDominator()

template<class BlockT, bool IsPostDom>
bool llvm::DominanceFrontierBase< BlockT, IsPostDom >::isPostDominator ( ) const
inline

isPostDominator - Returns true if analysis based of postdoms

Definition at line 63 of file DominanceFrontier.h.

References IsPostDominators.

◆ print()

template<class BlockT, bool IsPostDom>
void llvm::DominanceFrontierBase< BlockT, IsPostDom >::print ( raw_ostream & OS) const

print - Convert to human readable form

Definition at line 47 of file DominanceFrontierImpl.h.

References begin(), E(), end(), and I.

◆ releaseMemory()

template<class BlockT, bool IsPostDom>
void llvm::DominanceFrontierBase< BlockT, IsPostDom >::releaseMemory ( )
inline

Definition at line 67 of file DominanceFrontier.h.

References Frontiers.

Member Data Documentation

◆ Frontiers

template<class BlockT, bool IsPostDom>
DomSetMapType llvm::DominanceFrontierBase< BlockT, IsPostDom >::Frontiers
protected

Definition at line 56 of file DominanceFrontier.h.

Referenced by begin(), begin(), end(), end(), find(), find(), and releaseMemory().

◆ IsPostDominators

template<class BlockT, bool IsPostDom>
bool llvm::DominanceFrontierBase< BlockT, IsPostDom >::IsPostDominators = IsPostDom
staticconstexprprotected

Definition at line 57 of file DominanceFrontier.h.

Referenced by isPostDominator().


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