|
LLVM 22.0.0git
|
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree. More...
#include "llvm/CodeGen/MachineDominators.h"
Public Types | |
| using | Base = DomTreeBase<MachineBasicBlock> |
| Public Types inherited from llvm::DominatorTreeBase< T, false > | |
| enum | VerificationLevel |
| using | NodeTrait |
| using | NodeType |
| using | NodePtr |
| using | ParentPtr |
| using | ParentType |
| using | UpdateType |
| using | UpdateKind |
| using | root_iterator |
| Iteration over roots. | |
| using | const_root_iterator |
Public Member Functions | |
| MachineDominatorTree ()=default | |
| MachineDominatorTree (MachineFunction &MF) | |
| LLVM_ABI bool | invalidate (MachineFunction &, const PreservedAnalyses &PA, MachineFunctionAnalysisManager::Invalidator &) |
| Handle invalidation explicitly. | |
| bool | dominates (const MachineInstr *A, const MachineInstr *B) const |
| bool | dominates (const DomTreeNodeBase< T > *A, const DomTreeNodeBase< T > *B) const |
| dominates - Returns true iff A dominates B. | |
| bool | dominates (const T *A, const T *B) const |
| Public Member Functions inherited from llvm::DominatorTreeBase< T, false > | |
| DominatorTreeBase ()=default | |
| DominatorTreeBase (DominatorTreeBase &&Arg) | |
| DominatorTreeBase & | operator= (DominatorTreeBase &&RHS) |
| DominatorTreeBase (const DominatorTreeBase &)=delete | |
| DominatorTreeBase & | operator= (const DominatorTreeBase &)=delete |
| root_iterator | root_begin () |
| const_root_iterator | root_begin () const |
| root_iterator | root_end () |
| const_root_iterator | root_end () const |
| size_t | root_size () const |
| iterator_range< root_iterator > | roots () |
| iterator_range< const_root_iterator > | roots () const |
| bool | isPostDominator () const |
| isPostDominator - Returns true if analysis based of postdoms | |
| bool | compare (const DominatorTreeBase &Other) const |
| compare - Return false if the other dominator tree base matches this dominator tree base. | |
| DomTreeNodeBase< T > * | getNode (const T *BB) const |
| getNode - return the (Post)DominatorTree node for the specified basic block. | |
| DomTreeNodeBase< T > * | operator[] (const T *BB) const |
| See getNode. | |
| DomTreeNodeBase< T > * | getRootNode () |
| getRootNode - This returns the entry node for the CFG of the function. | |
| const DomTreeNodeBase< T > * | getRootNode () const |
| void | getDescendants (T *R, SmallVectorImpl< T * > &Result) const |
| Get all nodes dominated by R, including R itself. | |
| bool | properlyDominates (const DomTreeNodeBase< T > *A, const DomTreeNodeBase< T > *B) const |
| properlyDominates - Returns true iff A dominates B and A != B. | |
| bool | properlyDominates (const T *A, const T *B) const |
| bool | isReachableFromEntry (const T *A) const |
| isReachableFromEntry - Return true if A is dominated by the entry block of the function containing it. | |
| bool | isReachableFromEntry (const DomTreeNodeBase< T > *A) const |
| bool | dominates (const DomTreeNodeBase< T > *A, const DomTreeNodeBase< T > *B) const |
| dominates - Returns true iff A dominates B. | |
| bool | dominates (const T *A, const T *B) const |
| T * | getRoot () const |
| T * | findNearestCommonDominator (T *A, T *B) const |
| Find nearest common dominator basic block for basic block A and B. | |
| const T * | findNearestCommonDominator (const T *A, const T *B) const |
| bool | isVirtualRoot (const DomTreeNodeBase< T > *A) const |
| T * | findNearestCommonDominator (iterator_range< IteratorTy > Nodes) const |
| void | applyUpdates (ArrayRef< UpdateType > Updates) |
| Inform the dominator tree about a sequence of CFG edge insertions and deletions and perform a batch update on the tree. | |
| void | applyUpdates (ArrayRef< UpdateType > Updates, ArrayRef< UpdateType > PostViewUpdates) |
| void | insertEdge (T *From, T *To) |
| Inform the dominator tree about a CFG edge insertion and update the tree. | |
| void | deleteEdge (T *From, T *To) |
| Inform the dominator tree about a CFG edge deletion and update the tree. | |
| DomTreeNodeBase< T > * | addNewBlock (T *BB, T *DomBB) |
| Add a new node to the dominator tree information. | |
| DomTreeNodeBase< T > * | setNewRoot (T *BB) |
| Add a new node to the forward dominator tree and make it a new root. | |
| void | changeImmediateDominator (DomTreeNodeBase< T > *N, DomTreeNodeBase< T > *NewIDom) |
| changeImmediateDominator - This method is used to update the dominator tree information when a node's immediate dominator changes. | |
| void | changeImmediateDominator (T *BB, T *NewBB) |
| void | eraseNode (T *BB) |
| eraseNode - Removes a node from the dominator tree. | |
| void | splitBlock (T *NewBB) |
| splitBlock - BB is split and now it has one successor. | |
| void | print (raw_ostream &O) const |
| print - Convert to human readable form | |
| void | updateDFSNumbers () const |
| updateDFSNumbers - Assign In and Out numbers to the nodes while walking dominator tree in dfs order. | |
| void | recalculate (ParentType &Func) |
| recalculate - compute a dominator tree for the given function | |
| void | recalculate (ParentType &Func, ArrayRef< UpdateType > Updates) |
| std::enable_if_t< GraphHasNodeNumbers< T * >, void > | updateBlockNumbers () |
| Update dominator tree after renumbering blocks. | |
| bool | verify (VerificationLevel VL=VerificationLevel::Full) const |
| verify - checks if the tree is correct. | |
| void | reset () |
Additional Inherited Members | |
| Static Public Attributes inherited from llvm::DominatorTreeBase< T, false > | |
| static constexpr bool | IsPostDominator |
| static constexpr UpdateKind | Insert |
| static constexpr UpdateKind | Delete |
| Protected Types inherited from llvm::DominatorTreeBase< T, false > | |
| using | DomTreeNodeStorageTy |
| Protected Member Functions inherited from llvm::DominatorTreeBase< T, false > | |
| void | addRoot (T *BB) |
| DomTreeNodeBase< T > * | createNode (T *BB, DomTreeNodeBase< T > *IDom=nullptr) |
| void | Split (typename GraphTraits< N >::NodeRef NewBB) |
| Protected Attributes inherited from llvm::DominatorTreeBase< T, false > | |
| SmallVector< T *, IsPostDom ? 4 :1 > | Roots |
| DomTreeNodeStorageTy | DomTreeNodes |
| std::conditional_t<!GraphHasNodeNumbers< T * >, DenseMap< const T *, unsigned >, std::tuple<> > | NodeNumberMap |
| DomTreeNodeBase< T > * | RootNode |
| ParentPtr | Parent |
| bool | DFSInfoValid |
| unsigned int | SlowQueries |
| unsigned | BlockNumberEpoch |
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
Definition at line 71 of file MachineDominators.h.
Definition at line 74 of file MachineDominators.h.
|
default |
|
inlineexplicit |
Definition at line 77 of file MachineDominators.h.
References llvm::DominatorTreeBase< T, false >::recalculate().
|
inline |
dominates - Returns true iff A dominates B.
Note that this is not a constant time operation!
Definition at line 467 of file GenericDomTree.h.
|
inline |
Definition at line 87 of file MachineDominators.h.
References A(), B(), llvm::MachineBasicBlock::begin(), llvm::DominatorTreeBase< T, false >::dominates(), and I.
Referenced by dominatesAllUsesOf(), hoistAndMergeSGPRInits(), isReachable(), isReachableAmongDominated(), oneUseDominatesOtherUses(), replaceDominatedUses(), and sortBlocks().
| bool MachineDominatorTree::invalidate | ( | MachineFunction & | , |
| const PreservedAnalyses & | PA, | ||
| MachineFunctionAnalysisManager::Invalidator & | ) |
Handle invalidation explicitly.
Definition at line 65 of file MachineDominators.cpp.
References llvm::PreservedAnalyses::getChecker().