| 
    LLVM 22.0.0git
    
   | 
 
PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominator tree. More...
#include "llvm/Analysis/PostDominators.h"
Public Types | |
| using | Base = PostDomTreeBase<BasicBlock> | 
| Public Types inherited from llvm::DominatorTreeBase< T, true > | |
| 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 | |
| PostDominatorTree ()=default | |
| PostDominatorTree (Function &F) | |
| LLVM_ABI bool | invalidate (Function &F, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &) | 
| Handle invalidation explicitly.   | |
| LLVM_ABI bool | dominates (const Instruction *I1, const Instruction *I2) const | 
Return true if I1 dominates I2.   | |
| 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, true > | |
| 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, true > | |
| static constexpr bool | IsPostDominator | 
| static constexpr UpdateKind | Insert | 
| static constexpr UpdateKind | Delete | 
| Protected Types inherited from llvm::DominatorTreeBase< T, true > | |
| using | DomTreeNodeStorageTy | 
| Protected Member Functions inherited from llvm::DominatorTreeBase< T, true > | |
| 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, true > | |
| 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 | 
PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominator tree.
Definition at line 29 of file PostDominators.h.
Definition at line 31 of file PostDominators.h.
      
  | 
  default | 
      
  | 
  inlineexplicit | 
Definition at line 34 of file PostDominators.h.
References F, and llvm::DominatorTreeBase< T, true >::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.
| bool PostDominatorTree::dominates | ( | const Instruction * | I1, | 
| const Instruction * | I2 ) const | 
Return true if I1 dominates I2. 
This checks if I2 comes before I1 if they belongs to the same basic block. 
Definition at line 52 of file PostDominators.cpp.
References assert(), llvm::BasicBlock::begin(), llvm::DominatorTreeBase< T, true >::dominates(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), I, and llvm::isa().
Referenced by llvm::memtag::forAllReachableExits(), llvm::isControlFlowEquivalent(), isFullPostDominator(), and llvm::nonStrictlyPostDominate().
| LLVM_ABI bool llvm::PostDominatorTree::invalidate | ( | Function & | F, | 
| const PreservedAnalyses & | PA, | ||
| FunctionAnalysisManager::Invalidator & | ) | 
Handle invalidation explicitly.
References llvm::DominatorTreeBase< T, true >::dominates(), F, and LLVM_ABI.