clang 20.0.0git
|
Dominator tree builder for Clang's CFG based on llvm::DominatorTreeBase. More...
#include "clang/Analysis/Analyses/Dominators.h"
Public Types | |
using | DominatorTreeBase = llvm::DominatorTreeBase< CFGBlock, IsPostDom > |
Public Member Functions | |
CFGDominatorTreeImpl ()=default | |
CFGDominatorTreeImpl (CFG *cfg) | |
~CFGDominatorTreeImpl () override=default | |
DominatorTreeBase & | getBase () |
CFG * | getCFG () |
CFGBlock * | getRoot () const |
DomTreeNode * | getRootNode () |
bool | compare (CFGDominatorTreeImpl &Other) const |
Compares two dominator trees. | |
void | buildDominatorTree (CFG *cfg) |
Builds the dominator tree for a given CFG. | |
void | dump () |
Dumps immediate dominators for each block. | |
bool | dominates (const CFGBlock *A, const CFGBlock *B) const |
Tests whether A dominates B . | |
bool | properlyDominates (const CFGBlock *A, const CFGBlock *B) const |
Tests whether A properly dominates B . | |
CFGBlock * | findNearestCommonDominator (CFGBlock *A, CFGBlock *B) |
const CFGBlock * | findNearestCommonDominator (const CFGBlock *A, const CFGBlock *B) |
void | changeImmediateDominator (CFGBlock *N, CFGBlock *NewIDom) |
Update the dominator tree information when a node's immediate dominator changes. | |
bool | isReachableFromEntry (const CFGBlock *A) |
Tests whether A is reachable from the entry block. | |
virtual void | releaseMemory () |
Releases the memory held by the dominator tree. | |
virtual void | print (raw_ostream &OS, const llvm::Module *M=nullptr) const |
Converts the dominator tree to human readable form. | |
Public Member Functions inherited from clang::ManagedAnalysis | |
virtual | ~ManagedAnalysis () |
Additional Inherited Members | |
Protected Member Functions inherited from clang::ManagedAnalysis | |
ManagedAnalysis ()=default | |
Dominator tree builder for Clang's CFG based on llvm::DominatorTreeBase.
Definition at line 42 of file Dominators.h.
using clang::CFGDominatorTreeImpl< IsPostDom >::DominatorTreeBase = llvm::DominatorTreeBase<CFGBlock, IsPostDom> |
Definition at line 46 of file Dominators.h.
|
default |
|
inline |
Definition at line 50 of file Dominators.h.
References clang::CFGDominatorTreeImpl< IsPostDom >::buildDominatorTree().
|
overridedefault |
|
inline |
Builds the dominator tree for a given CFG.
Definition at line 87 of file Dominators.h.
Referenced by clang::CFGDominatorTreeImpl< IsPostDom >::CFGDominatorTreeImpl().
|
inline |
Update the dominator tree information when a node's immediate dominator changes.
Definition at line 160 of file Dominators.h.
|
inline |
Compares two dominator trees.
Definition at line 73 of file Dominators.h.
References clang::CFGDominatorTreeImpl< IsPostDom >::getRootNode(), and clang::Other.
|
inline |
Tests whether A
dominates B
.
Note a block always dominates itself.
Definition at line 136 of file Dominators.h.
|
inline |
Dumps immediate dominators for each block.
Definition at line 94 of file Dominators.h.
References clang::CFG::begin(), E, and clang::CFG::end().
|
inline |
A
and B
. If there is no such block then return NULL. Definition at line 149 of file Dominators.h.
|
inline |
Definition at line 153 of file Dominators.h.
|
inline |
Definition at line 56 of file Dominators.h.
|
inline |
Definition at line 58 of file Dominators.h.
Referenced by clang::ControlDependencyCalculator::dump().
|
inline |
Definition at line 61 of file Dominators.h.
|
inline |
Definition at line 66 of file Dominators.h.
Referenced by clang::CFGDominatorTreeImpl< IsPostDom >::compare(), and llvm::GraphTraits< clang::CFGDomTree * >::getEntryNode().
|
inline |
Tests whether A
is reachable from the entry block.
Definition at line 165 of file Dominators.h.
|
inlinevirtual |
Converts the dominator tree to human readable form.
Definition at line 173 of file Dominators.h.
|
inline |
Tests whether A
properly dominates B
.
A
is the same block as B
, otherwise whether A dominates B. Definition at line 143 of file Dominators.h.
|
inlinevirtual |
Releases the memory held by the dominator tree.
Definition at line 170 of file Dominators.h.