14#ifndef LLVM_CODEGEN_MACHINEDOMINATORS_H
15#define LLVM_CODEGEN_MACHINEDOMINATORS_H
81 MachineFunctionAnalysisManager::Invalidator &);
83 using Base::dominates;
94 for (; &*
I !=
A && &*
I !=
B; ++
I)
130 std::optional<MachineDominatorTree> DT;
142 void verifyAnalysis()
const override;
149 void releaseMemory()
override;
159template <
class Node,
class ChildIterator>
169template <
class T>
struct GraphTraits;
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
#define LLVM_TEMPLATE_ABI
This file defines a set of templates that efficiently compute a dominator tree over a generic graph.
This file defines the SmallSet class.
This file defines the SmallVector class.
Represent the analysis usage information of a pass.
void setPreservesAll()
Set by analyses that do not transform their input at all.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Base class for the actual dominator tree node.
typename SmallVector< DomTreeNodeBase *, 4 >::const_iterator const_iterator
Core dominator tree base class.
DomTreeNodeBase< NodeT > * getRootNode()
getRootNode - This returns the entry node for the CFG of the function.
bool dominates(const DomTreeNodeBase< T > *A, const DomTreeNodeBase< T > *B) const
void recalculate(ParentType &Func)
MachineInstrBundleIterator< const MachineInstr > const_iterator
Analysis pass which computes a MachineDominatorTree.
MachineDominatorTree Result
LLVM_ABI Result run(MachineFunction &MF, MachineFunctionAnalysisManager &)
MachineDominatorTreePrinterPass(raw_ostream &OS)
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
const MachineDominatorTree & getDomTree() const
MachineDominatorTreeWrapperPass()
MachineDominatorTree & getDomTree()
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
bool dominates(const MachineInstr *A, const MachineInstr *B) const
DomTreeBase< MachineBasicBlock > Base
MachineDominatorTree()=default
MachineDominatorTree(MachineFunction &MF)
MachineFunctionPass(char &ID)
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
Representation of each machine instruction.
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
This class implements an extremely fast bulk output stream that can only output to a stream.
bool Verify(const DomTreeT &DT, typename DomTreeT::VerificationLevel VL)
void CalculateWithUpdates(DomTreeT &DT, ArrayRef< typename DomTreeT::UpdateType > Updates)
GraphDiff< MachineBasicBlock *, false > MBBDomTreeGraphDiff
void DeleteEdge(DomTreeT &DT, typename DomTreeT::NodePtr From, typename DomTreeT::NodePtr To)
ArrayRef< llvm::cfg::Update< MachineBasicBlock * > > MBBUpdates
void Calculate(DomTreeT &DT)
DomTreeBase< MachineBasicBlock > MBBDomTree
void ApplyUpdates(DomTreeT &DT, GraphDiff< typename DomTreeT::NodePtr, DomTreeT::IsPostDominator > &PreViewCFG, GraphDiff< typename DomTreeT::NodePtr, DomTreeT::IsPostDominator > *PostViewCFG)
void InsertEdge(DomTreeT &DT, typename DomTreeT::NodePtr From, typename DomTreeT::NodePtr To)
This is an optimization pass for GlobalISel generic memory operations.
Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr, unsigned DynamicVGPRBlockSize=0)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
DominatorTreeBase< T, false > DomTreeBase
DomTreeNodeBase< MachineBasicBlock > MachineDomTreeNode
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
static NodeRef getEntryNode(MachineDominatorTree *DT)
typename MachineDominatorTree *::UnknownGraphTypeError NodeRef
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
ChildIterator ChildIteratorType
static ChildIteratorType child_end(NodeRef N)
static NodeRef getEntryNode(NodeRef N)
static ChildIteratorType child_begin(NodeRef N)
A CRTP mix-in to automatically provide informational APIs needed for passes.