LLVM: include/llvm/CodeGen/MachineDominators.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_CODEGEN_MACHINEDOMINATORS_H
15#define LLVM_CODEGEN_MACHINEDOMINATORS_H
16
26#include
27#include
28
29namespace llvm {
34
38
40
65
66
67
68
69
71
72public:
74
77
78
80 MachineFunctionAnalysisManager::Invalidator &);
81
82 using Base::dominates;
83
84
85
88 if (BBA != BBB)
90
91
93 for (; &*I != A && &*I != B; ++I)
94 ;
95
97 }
98};
99
100
104
106
107public:
109
111};
112
113
124
125
127
128
129 std::optional DT;
130
131public:
133
135
138
140
141 void verifyAnalysis() const override;
142
147
148 void releaseMemory() override;
149
151};
152
153
154
155
156
157
158template <class Node, class ChildIterator>
167
168template struct GraphTraits;
169
170template <>
175
176template <>
181
188
189}
190
191#endif
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.
Definition MachineDominators.h:102
MachineDominatorTree Result
Definition MachineDominators.h:108
LLVM_ABI Result run(MachineFunction &MF, MachineFunctionAnalysisManager &)
static bool isRequired()
Definition MachineDominators.h:122
MachineDominatorTreePrinterPass(raw_ostream &OS)
Definition MachineDominators.h:119
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
Definition MachineDominators.h:143
const MachineDominatorTree & getDomTree() const
Definition MachineDominators.h:137
MachineDominatorTreeWrapperPass()
static char ID
Definition MachineDominators.h:132
MachineDominatorTree & getDomTree()
Definition MachineDominators.h:136
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
Definition MachineDominators.h:70
bool dominates(const MachineInstr *A, const MachineInstr *B) const
Definition MachineDominators.h:86
DomTreeBase< MachineBasicBlock > Base
Definition MachineDominators.h:73
MachineDominatorTree()=default
MachineDominatorTree(MachineFunction &MF)
Definition MachineDominators.h:76
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.
Definition MachineDominators.h:41
bool Verify(const DomTreeT &DT, typename DomTreeT::VerificationLevel VL)
void CalculateWithUpdates(DomTreeT &DT, ArrayRef< typename DomTreeT::UpdateType > Updates)
GraphDiff< MachineBasicBlock *, false > MBBDomTreeGraphDiff
Definition MachineDominators.h:44
void DeleteEdge(DomTreeT &DT, typename DomTreeT::NodePtr From, typename DomTreeT::NodePtr To)
ArrayRef< llvm::cfg::Update< MachineBasicBlock * > > MBBUpdates
Definition MachineDominators.h:43
void Calculate(DomTreeT &DT)
DomTreeBase< MachineBasicBlock > MBBDomTree
Definition MachineDominators.h:42
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)
Definition MachineDominators.h:184
typename MachineDominatorTree *::UnknownGraphTypeError NodeRef
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
Definition MachineDominators.h:159
ChildIterator ChildIteratorType
Definition MachineDominators.h:161
static ChildIteratorType child_end(NodeRef N)
Definition MachineDominators.h:165
static NodeRef getEntryNode(NodeRef N)
Definition MachineDominators.h:163
static ChildIteratorType child_begin(NodeRef N)
Definition MachineDominators.h:164
Node * NodeRef
Definition MachineDominators.h:160
A CRTP mix-in to automatically provide informational APIs needed for passes.