LLVM 20.0.0git
|
Template specialization of the standard LLVM dominator tree utility for VPBlockBases. More...
#include "Transforms/Vectorize/VPlanDominatorTree.h"
Public Member Functions | |
VPDominatorTree ()=default | |
bool | properlyDominates (const VPRecipeBase *A, const VPRecipeBase *B) |
Returns true if A properly dominates B . | |
Public Member Functions inherited from llvm::DominatorTreeBase< VPBlockBase, false > | |
DominatorTreeBase ()=default | |
DominatorTreeBase (DominatorTreeBase &&Arg) | |
DominatorTreeBase (const DominatorTreeBase &)=delete | |
DominatorTreeBase & | operator= (DominatorTreeBase &&RHS) |
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< VPBlockBase > * | getNode (const VPBlockBase *BB) const |
getNode - return the (Post)DominatorTree node for the specified basic block. | |
DomTreeNodeBase< VPBlockBase > * | operator[] (const VPBlockBase *BB) const |
See getNode. | |
DomTreeNodeBase< VPBlockBase > * | getRootNode () |
getRootNode - This returns the entry node for the CFG of the function. | |
const DomTreeNodeBase< VPBlockBase > * | getRootNode () const |
void | getDescendants (VPBlockBase *R, SmallVectorImpl< VPBlockBase * > &Result) const |
Get all nodes dominated by R, including R itself. | |
bool | properlyDominates (const DomTreeNodeBase< VPBlockBase > *A, const DomTreeNodeBase< VPBlockBase > *B) const |
properlyDominates - Returns true iff A dominates B and A != B. | |
bool | properlyDominates (const VPBlockBase *A, const VPBlockBase *B) const |
bool | isReachableFromEntry (const VPBlockBase *A) const |
isReachableFromEntry - Return true if A is dominated by the entry block of the function containing it. | |
bool | isReachableFromEntry (const DomTreeNodeBase< VPBlockBase > *A) const |
bool | dominates (const DomTreeNodeBase< VPBlockBase > *A, const DomTreeNodeBase< VPBlockBase > *B) const |
dominates - Returns true iff A dominates B. | |
bool | dominates (const VPBlockBase *A, const VPBlockBase *B) const |
VPBlockBase * | getRoot () const |
VPBlockBase * | findNearestCommonDominator (VPBlockBase *A, VPBlockBase *B) const |
Find nearest common dominator basic block for basic block A and B. | |
const VPBlockBase * | findNearestCommonDominator (const VPBlockBase *A, const VPBlockBase *B) const |
bool | isVirtualRoot (const DomTreeNodeBase< VPBlockBase > *A) 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 (VPBlockBase *From, VPBlockBase *To) |
Inform the dominator tree about a CFG edge insertion and update the tree. | |
void | deleteEdge (VPBlockBase *From, VPBlockBase *To) |
Inform the dominator tree about a CFG edge deletion and update the tree. | |
DomTreeNodeBase< VPBlockBase > * | addNewBlock (VPBlockBase *BB, VPBlockBase *DomBB) |
Add a new node to the dominator tree information. | |
DomTreeNodeBase< VPBlockBase > * | setNewRoot (VPBlockBase *BB) |
Add a new node to the forward dominator tree and make it a new root. | |
void | changeImmediateDominator (DomTreeNodeBase< VPBlockBase > *N, DomTreeNodeBase< VPBlockBase > *NewIDom) |
changeImmediateDominator - This method is used to update the dominator tree information when a node's immediate dominator changes. | |
void | changeImmediateDominator (VPBlockBase *BB, VPBlockBase *NewBB) |
void | eraseNode (VPBlockBase *BB) |
eraseNode - Removes a node from the dominator tree. | |
void | splitBlock (VPBlockBase *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 () |
Template specialization of the standard LLVM dominator tree utility for VPBlockBases.
Definition at line 37 of file VPlanDominatorTree.h.
|
default |
bool VPDominatorTree::properlyDominates | ( | const VPRecipeBase * | A, |
const VPRecipeBase * | B | ||
) |
Returns true if A
properly dominates B
.
Definition at line 298 of file VPlanAnalysis.cpp.
References A, assert(), B, llvm_unreachable, and llvm::DominatorTreeBase< VPBlockBase, false >::properlyDominates().
Referenced by llvm::VPlanTransforms::createInterleaveGroups(), hoistPreviousBeforeFORUsers(), and sinkRecurrenceUsersAfterPrevious().