|
LLVM 23.0.0git
|
DominanceFrontierBase - Common base class for computing forward and inverse dominance frontiers for a function. More...
#include "llvm/Analysis/DominanceFrontier.h"
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 | |
| const SmallVectorImpl< BlockT * > & | getRoots () const |
| getRoots - Return the root blocks of the current CFG. | |
| BlockT * | getRoot () const |
| 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 (DomTreeT &DT) |
| void | calculate (const DomTreeT &DT, const DomTreeNodeT *Node) |
Protected Types | |
| using | GraphTy = std::conditional_t<IsPostDom, Inverse<BlockT *>, BlockT *> |
| using | BlockTraits = GraphTraits<GraphTy> |
Protected Attributes | |
| DomSetMapType | Frontiers |
| SmallVector< BlockT *, IsPostDom ? 4 :1 > | Roots |
Static Protected Attributes | |
| static constexpr bool | IsPostDominators = IsPostDom |
DominanceFrontierBase - Common base class for computing forward and inverse dominance frontiers for a function.
Definition at line 43 of file DominanceFrontier.h.
|
protected |
Definition at line 54 of file DominanceFrontier.h.
| using llvm::DominanceFrontierBase< BlockT, IsPostDom >::const_iterator = typename DomSetMapType::const_iterator |
Definition at line 85 of file DominanceFrontier.h.
| using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomSetMapType = DenseMap<BlockT *, DomSetType> |
Definition at line 48 of file DominanceFrontier.h.
| using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomSetType = SetVector<BlockT *> |
Definition at line 47 of file DominanceFrontier.h.
| using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomTreeNodeT = DomTreeNodeBase<BlockT> |
Definition at line 50 of file DominanceFrontier.h.
| using llvm::DominanceFrontierBase< BlockT, IsPostDom >::DomTreeT = DominatorTreeBase<BlockT, IsPostDom> |
Definition at line 49 of file DominanceFrontier.h.
|
protected |
Definition at line 53 of file DominanceFrontier.h.
| using llvm::DominanceFrontierBase< BlockT, IsPostDom >::iterator = typename DomSetMapType::iterator |
Definition at line 84 of file DominanceFrontier.h.
|
default |
|
inline |
Definition at line 103 of file DominanceFrontier.h.
References assert(), calculate(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getRoot(), and llvm::DominatorTreeBase< NodeT, IsPostDom >::root_size().
Referenced by llvm::MachineDominanceFrontierAnalysis::run().
|
inline |
|
inline |
Definition at line 88 of file DominanceFrontier.h.
References Frontiers.
| void llvm::DominanceFrontierBase< BlockT, IsPostDom >::calculate | ( | const DomTreeT & | DT, |
| const DomTreeNodeT * | Node ) |
Definition at line 77 of file DominanceFrontierImpl.h.
References assert(), llvm::DFCalculateWorkObject< BlockT >::currentBB, Frontiers, llvm::DFCalculateWorkObject< BlockT >::Node, llvm::DFCalculateWorkObject< BlockT >::parentBB, and llvm::DFCalculateWorkObject< BlockT >::parentNode.
Referenced by analyze().
| 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().
|
inline |
|
inline |
Definition at line 90 of file DominanceFrontier.h.
References Frontiers.
|
inline |
Definition at line 91 of file DominanceFrontier.h.
|
inline |
Definition at line 92 of file DominanceFrontier.h.
|
inline |
Definition at line 69 of file DominanceFrontier.h.
|
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 67 of file DominanceFrontier.h.
References Roots.
|
inline |
isPostDominator - Returns true if analysis based of postdoms
Definition at line 75 of file DominanceFrontier.h.
References IsPostDominators.
| void llvm::DominanceFrontierBase< BlockT, IsPostDom >::print | ( | raw_ostream & | OS | ) | const |
|
inline |
Definition at line 79 of file DominanceFrontier.h.
References Frontiers.
|
protected |
Definition at line 56 of file DominanceFrontier.h.
Referenced by begin(), begin(), calculate(), end(), end(), find(), find(), and releaseMemory().
|
staticconstexprprotected |
Definition at line 59 of file DominanceFrontier.h.
Referenced by isPostDominator().
|
protected |
Definition at line 58 of file DominanceFrontier.h.
Referenced by getRoot(), and getRoots().