LLVM: include/llvm/Analysis/LoopAnalysisManager.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_ANALYSIS_LOOPANALYSISMANAGER_H
30#define LLVM_ANALYSIS_LOOPANALYSISMANAGER_H
31
34
35namespace llvm {
36
47
48
49
50
51
62
63
65
68
69
70
71
72
73
76
77
79 LoopAnalysisManagerFunctionProxy;
80
81
82
83
84
85
86template <> class LoopAnalysisManagerFunctionProxy::Result {
87public:
89 : InnerAM(&InnerAM), LI(&LI) {}
91 : InnerAM(std::move(Arg.InnerAM)), LI(Arg.LI), MSSAUsed(Arg.MSSAUsed) {
92
93
94
95 Arg.InnerAM = nullptr;
96 }
98 InnerAM = RHS.InnerAM;
99 LI = RHS.LI;
100 MSSAUsed = RHS.MSSAUsed;
101
102
103
104 RHS.InnerAM = nullptr;
105 return *this;
106 }
108
109 if (!InnerAM)
110 return;
111
112
113
114 InnerAM->clear();
115 }
116
117
119
120
122
123
124
125
126
127
128
129
130
131
133 FunctionAnalysisManager::Invalidator &Inv);
134
135private:
138 bool MSSAUsed = false;
139};
140
141
142
143template <>
144LLVM_ABI LoopAnalysisManagerFunctionProxy::Result
146
147
148
150
153
157
158
160}
161
162#endif
#define LLVM_TEMPLATE_ABI
This header defines various interfaces for pass management in LLVM.
This templated class represents "all analyses that operate over " (e....
A container for analyses that lazily runs them and caches their results.
A cache of @llvm.assume calls within a function.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR un...
Result run(Function &IR, AnalysisManager< Function, ExtraArgTs... > &AM, ExtraArgTs...)
~Result()
Definition LoopAnalysisManager.h:107
LLVM_ABI bool invalidate(Function &F, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &Inv)
Handler for invalidation of the proxy for a particular function.
LoopAnalysisManager & getManager()
Accessor for the analysis manager.
Definition LoopAnalysisManager.h:121
Result & operator=(Result &&RHS)
Definition LoopAnalysisManager.h:97
Result(Result &&Arg)
Definition LoopAnalysisManager.h:90
void markMSSAUsed()
Mark MemorySSA as used so we can invalidate self if MSSA is invalidated.
Definition LoopAnalysisManager.h:118
Result(LoopAnalysisManager &InnerAM, LoopInfo &LI)
Definition LoopAnalysisManager.h:88
Represents a single loop in the control flow graph.
Encapsulates MemorySSA, including all data associated with memory accesses.
An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR uni...
A set of analyses that are preserved following a run of a transformation pass.
The main scalar evolution driver.
Provides information about what library functions are available for the current target.
This pass provides access to the codegen interfaces that are needed for IR-level transformations.
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager
The loop analysis manager.
Definition LoopAnalysisManager.h:75
OuterAnalysisManagerProxy< FunctionAnalysisManager, Loop, LoopStandardAnalysisResults & > FunctionAnalysisManagerLoopProxy
A proxy from a FunctionAnalysisManager to a Loop.
Definition LoopAnalysisManager.h:156
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
LLVM_ABI PreservedAnalyses getLoopPassPreservedAnalyses()
Returns the minimum set of Analyses that all loop passes must preserve.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
Implement std::hash so that hash_code can be used in STL containers.
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...
Definition LoopAnalysisManager.h:52
ScalarEvolution & SE
Definition LoopAnalysisManager.h:57
MemorySSA * MSSA
Definition LoopAnalysisManager.h:60
TargetTransformInfo & TTI
Definition LoopAnalysisManager.h:59
AssumptionCache & AC
Definition LoopAnalysisManager.h:54
TargetLibraryInfo & TLI
Definition LoopAnalysisManager.h:58
LoopInfo & LI
Definition LoopAnalysisManager.h:56
DominatorTree & DT
Definition LoopAnalysisManager.h:55
AAResults & AA
Definition LoopAnalysisManager.h:53