14#ifndef LLVM_CODEGEN_MACHINEDOMINATORS_H
15#define LLVM_CODEGEN_MACHINEDOMINATORS_H
38 this->Roots.push_back(
MBB);
46namespace DomTreeBuilder {
51extern template void Calculate<MBBDomTree>(
MBBDomTree &DT);
52extern template void CalculateWithUpdates<MBBDomTree>(
MBBDomTree &DT,
55extern template void InsertEdge<MBBDomTree>(
MBBDomTree &DT,
59extern template void DeleteEdge<MBBDomTree>(
MBBDomTree &DT,
63extern template void ApplyUpdates<MBBDomTree>(
MBBDomTree &DT,
67extern template bool Verify<MBBDomTree>(
const MBBDomTree &DT,
87 using Base::dominates;
94 return Base::dominates(BBA, BBB);
98 for (; &*
I !=
A && &*
I !=
B; ++
I)
134 std::optional<MachineDominatorTree> DT;
146 void verifyAnalysis()
const override;
153 void releaseMemory()
override;
163template <
class Node,
class ChildIterator>
173template <
class T>
struct GraphTraits;
BlockVerifier::State From
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
This file defines a set of templates that efficiently compute a dominator tree over a generic graph.
Machine Check Debug Module
This file defines the SmallSet class.
This file defines the SmallVector class.
API to communicate dependencies between analyses during invalidation.
A container for analyses that lazily runs them and caches their results.
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.
Analysis pass which computes a MachineDominatorTree.
Machine function pass which print MachineDominatorTree.
MachineDominatorTreePrinterPass(raw_ostream &OS)
Analysis pass which computes a MachineDominatorTree.
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
MachineDominatorTree()=default
MachineDominatorTree(MachineFunction &MF)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
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.
This is an optimization pass for GlobalISel generic memory operations.
Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr)
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)
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.