27
27
#include " llvm/ADT/SmallVector.h"
28
28
#include " llvm/IR/PassManager.h"
29
29
#include " llvm/Support/Error.h"
30
+ #include " llvm/Target/CGPassBuilderOption.h"
30
31
31
32
#include < map>
32
33
@@ -37,20 +38,13 @@ class MachineFunction;
37
38
38
39
extern template class AnalysisManager <MachineFunction>;
39
40
40
- // / Like \c AnalysisKey, but only for machine passes.
41
- struct alignas (8 ) MachinePassKey {};
42
-
43
41
// / A CRTP mix-in that provides informational APIs needed for machine passes.
44
42
// /
45
43
// / This provides some boilerplate for types that are machine passes. It
46
44
// / automatically mixes in \c PassInfoMixin.
47
45
template <typename DerivedT>
48
46
struct MachinePassInfoMixin : public PassInfoMixin <DerivedT> {
49
- static MachinePassKey *ID () {
50
- static_assert (std::is_base_of<MachinePassInfoMixin, DerivedT>::value,
51
- " Must pass the derived type as the template argument!" );
52
- return &DerivedT::Key;
53
- }
47
+ // TODO: Add MachineFunctionProperties support.
54
48
};
55
49
56
50
// / An AnalysisManager<MachineFunction> that also exposes IR analysis results.
@@ -150,10 +144,7 @@ class MachineFunctionPassManager
150
144
using Base = PassManager<MachineFunction, MachineFunctionAnalysisManager>;
151
145
152
146
public:
153
- MachineFunctionPassManager (bool RequireCodeGenSCCOrder = false ,
154
- bool VerifyMachineFunction = false )
155
- : RequireCodeGenSCCOrder(RequireCodeGenSCCOrder),
156
- VerifyMachineFunction (VerifyMachineFunction) {}
147
+ MachineFunctionPassManager () : Opt(getCGPassBuilderOption()) {}
157
148
MachineFunctionPassManager (MachineFunctionPassManager &&) = default ;
158
149
MachineFunctionPassManager &
159
150
operator =(MachineFunctionPassManager &&) = default ;
@@ -261,10 +252,7 @@ class MachineFunctionPassManager
261
252
using PassIndex = decltype (Passes)::size_type;
262
253
std::map<PassIndex, llvm::unique_function<FuncTy>> MachineModulePasses;
263
254
264
- // Run codegen in the SCC order.
265
- bool RequireCodeGenSCCOrder;
266
-
267
- bool VerifyMachineFunction;
255
+ CGPassBuilderOption Opt;
268
256
};
269
257
270
258
} // end namespace llvm
0 commit comments