9#ifndef LLVM_ANALYSIS_ITERATEDDOMINANCEFRONTIER_H
10#define LLVM_ANALYSIS_ITERATEDDOMINANCEFRONTIER_H
19namespace IDFCalculatorDetail {
38template <
bool IsPostDom>
62namespace IDFCalculatorDetail {
64template <
bool IsPostDom>
65typename ChildrenGetterTy<BasicBlock, IsPostDom>::ChildrenTy
72 auto Children = children<OrderedNodeTy>(
N);
73 return {Children.begin(), Children.end()};
76 return GD->template getChildren<IsPostDom>(
N);
Compute iterated dominance frontiers using a linear time algorithm.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
LLVM Basic Block Representation.
Core dominator tree base class.
Determine the iterated dominance frontier, given a set of defining blocks, and optionally,...
IDFCalculatorDetail::ChildrenGetterTy< NodeTy, IsPostDom > ChildrenGetterTy
std::conditional_t< IsPostDom, Inverse< NodeTy * >, NodeTy * > OrderedNodeTy
IDFCalculator(DominatorTreeBase< BasicBlock, IsPostDom > &DT, const GraphDiff< BasicBlock *, IsPostDom > *GD)
IDFCalculator(DominatorTreeBase< BasicBlock, IsPostDom > &DT)
typename IDFCalculatorBase::ChildrenGetterTy ChildrenGetterTy
typename llvm::IDFCalculatorBase< BasicBlock, IsPostDom > IDFCalculatorBase
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.
ChildrenGetterTy(const GraphDiff< BasicBlock *, IsPostDom > *GD)
ChildrenGetterTy()=default
Generic utility class used for getting the children of a basic block.
typename GraphTraits< NodeTy * >::NodeRef NodeRef
range get(const NodeRef &N)