9 #ifndef MLIR_ANALYSIS_DOMINANCE_H 10 #define MLIR_ANALYSIS_DOMINANCE_H 13 #include "llvm/Support/GenericDomTree.h" 15 extern template class llvm::DominatorTreeBase<mlir::Block, false>;
16 extern template class llvm::DominatorTreeBase<mlir::Block, true>;
24 using base = llvm::DominatorTreeBase<Block, IsPostDom>;
39 assert(dominanceInfos.count(region) != 0);
40 return dominanceInfos[region]->getRootNode();
64 return a == b || properlyDominates(a, b);
77 return a == b || properlyDominates(a, b);
82 return super::properlyDominates(a, b);
89 void updateDFSNumbers();
102 return a == b || properlyPostDominates(a, b);
107 return super::properlyDominates(a, b);
112 return a == b || properlyPostDominates(a, b);
static ChildIteratorType child_end(NodeRef N)
Definition: Dominance.h:128
Definition: InferTypeOpInterface.cpp:20
static NodeRef getEntryNode(NodeRef N)
Definition: Dominance.h:126
Definition: PassRegistry.cpp:413
Definition: Operation.h:27
DominanceInfoBase(Operation *op)
Definition: Dominance.h:27
Block represents an ordered list of Operations.
Definition: Block.h:21
A class for computing basic dominance information.
Definition: Dominance.h:55
const mlir::DominanceInfoNode * NodeRef
Definition: Dominance.h:133
bool properlyPostDominates(Block *a, Block *b)
Return true if the specified block A properly postdominates block B.
Definition: Dominance.h:106
static ChildIteratorType child_begin(NodeRef N)
Definition: Dominance.h:127
mlir::DominanceInfoNode::const_iterator ChildIteratorType
Definition: Dominance.h:132
static NodeRef getEntryNode(NodeRef N)
Definition: Dominance.h:135
DenseMap< Region *, std::unique_ptr< base > > dominanceInfos
A mapping of regions to their base dominator tree.
Definition: Dominance.h:50
bool dominates(Operation *a, Operation *b)
Return true if operation A dominates operation B.
Definition: Dominance.h:63
DominanceInfoNode * getRootNode(Region *region)
Get the root dominance node of the given region.
Definition: Dominance.h:38
bool dominates(Block *a, Block *b)
Return true if the specified block A dominates block B.
Definition: Dominance.h:76
bool properlyDominates(Block *a, Block *b)
Return true if the specified block A properly dominates block B.
Definition: Dominance.h:81
bool postDominates(Block *a, Block *b)
Return true if the specified block A postdominates block B.
Definition: Dominance.h:111
bool dominates(Value a, Operation *b)
Return true if operation A dominates operation B.
Definition: Dominance.h:71
mlir::DominanceInfoNode * NodeRef
Definition: Dominance.h:124
Definition: Dominance.h:23
Operation * getDefiningOp() const
Definition: Value.cpp:71
bool postDominates(Operation *a, Operation *b)
Return true if operation A postdominates operation B.
Definition: Dominance.h:101
static ChildIteratorType child_begin(NodeRef N)
Definition: Dominance.h:136
mlir::DominanceInfoNode::iterator ChildIteratorType
Definition: Dominance.h:123
static ChildIteratorType child_end(NodeRef N)
Definition: Dominance.h:137
A class for computing basic postdominance information.
Definition: Dominance.h:93
llvm::DomTreeNodeBase< Block > DominanceInfoNode
Definition: Dominance.h:19