LLVM: include/llvm/CodeGen/MachineLoopInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#ifndef LLVM_CODEGEN_MACHINELOOPINFO_H
30#define LLVM_CODEGEN_MACHINELOOPINFO_H
31
38
39namespace llvm {
40
41class MachineDominatorTree;
42
43class MachineLoop;
44extern template class LoopBase<MachineBasicBlock, MachineLoop>;
45
47public:
48
49
50
52
53
54
55
57
58
59
60
61
63
64
65
66
67
68
70
71
72
73
74
75
76
77 MDNode *getLoopID() const;
78
79
80
81
82
83
84
85
87
89
90private:
92
93
94 bool isLoopInvariantImplicitPhysReg(Register Reg) const;
95
98
100};
101
102
104
108
109public:
115
116
119
120
121
122
123
124
125
126
128 findLoopPreheader(MachineLoop *L, bool SpeculativePreheader = false,
129 bool FindMultiLoopPreheader = false) const;
130
131
133};
134
135
139
140public:
143};
144
145
148
149public:
154};
155
158
159public:
161
163
165
167
168 void getAnalysisUsage(AnalysisUsage &AU) const override;
169
171};
172
173
177
181};
182
186
190};
191
192}
193
194#endif
This file provides various utilities for inspecting and working with the control flow graph in LLVM I...
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.
Instances of this class are used to represent loops that are detected in the flow graph.
This class builds and contains all of the top-level loop structures in the specified function.
std::vector< MachineLoop * >::const_iterator iterator
iterator/begin/end - The interface to the top-level loops in the current function.
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Representation of each machine instruction.
Analysis pass that exposes the MachineLoopInfo for a machine function.
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
MachineLoopInfo & getLI()
MachineLoopInfo(MachineLoopInfo &&)=default
MachineLoopInfo()=default
MachineLoopInfo(const MachineLoopInfo &)=delete
friend class MachineLoopInfoWrapperPass
MachineLoopInfo & operator=(const MachineLoopInfo &)=delete
MachineLoopInfo(MachineDominatorTree &MDT)
Printer pass for the LoopAnalysis results.
MachineLoopPrinterPass(raw_ostream &OS)
A set of analyses that are preserved following a run of a transformation pass.
Wrapper class representing virtual and physical registers.
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.
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
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...
MachineLoopInfo::iterator ChildIteratorType
static ChildIteratorType child_end(NodeRef N)
static NodeRef getEntryNode(MachineLoop *L)
static ChildIteratorType child_begin(NodeRef N)
MachineLoopInfo::iterator ChildIteratorType
static ChildIteratorType child_begin(NodeRef N)
static NodeRef getEntryNode(const MachineLoop *L)
static ChildIteratorType child_end(NodeRef N)
A CRTP mix-in to automatically provide informational APIs needed for passes.